diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-animate.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-animate.js new file mode 100644 index 00000000..1aa4ed80 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-animate.js @@ -0,0 +1,4147 @@ +/** + * @license AngularJS v1.5.5 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) {'use strict'; + +/* jshint ignore:start */ +var noop = angular.noop; +var copy = angular.copy; +var extend = angular.extend; +var jqLite = angular.element; +var forEach = angular.forEach; +var isArray = angular.isArray; +var isString = angular.isString; +var isObject = angular.isObject; +var isUndefined = angular.isUndefined; +var isDefined = angular.isDefined; +var isFunction = angular.isFunction; +var isElement = angular.isElement; + +var ELEMENT_NODE = 1; +var COMMENT_NODE = 8; + +var ADD_CLASS_SUFFIX = '-add'; +var REMOVE_CLASS_SUFFIX = '-remove'; +var EVENT_CLASS_PREFIX = 'ng-'; +var ACTIVE_CLASS_SUFFIX = '-active'; +var PREPARE_CLASS_SUFFIX = '-prepare'; + +var NG_ANIMATE_CLASSNAME = 'ng-animate'; +var NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren'; + +// 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 (isUndefined(window.ontransitionend) && isDefined(window.onwebkittransitionend)) { + CSS_PREFIX = '-webkit-'; + TRANSITION_PROP = 'WebkitTransition'; + TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend'; +} else { + TRANSITION_PROP = 'transition'; + TRANSITIONEND_EVENT = 'transitionend'; +} + +if (isUndefined(window.onanimationend) && isDefined(window.onwebkitanimationend)) { + 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 TIMING_KEY = 'TimingFunction'; +var ANIMATION_ITERATION_COUNT_KEY = 'IterationCount'; +var ANIMATION_PLAYSTATE_KEY = 'PlayState'; +var SAFE_FAST_FORWARD_DURATION_VALUE = 9999; + +var ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY; +var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY; +var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY; +var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY; + +var isPromiseLike = function(p) { + return p && p.then ? true : false; +}; + +var ngMinErr = angular.$$minErr('ng'); +function assertArg(arg, name, reason) { + if (!arg) { + throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required")); + } + return arg; +} + +function mergeClasses(a,b) { + if (!a && !b) return ''; + if (!a) return b; + if (!b) return a; + if (isArray(a)) a = a.join(' '); + if (isArray(b)) b = b.join(' '); + return a + ' ' + b; +} + +function packageStyles(options) { + var styles = {}; + if (options && (options.to || options.from)) { + styles.to = options.to; + styles.from = options.from; + } + return styles; +} + +function pendClasses(classes, fix, isPrefix) { + var className = ''; + classes = isArray(classes) + ? classes + : classes && isString(classes) && classes.length + ? classes.split(/\s+/) + : []; + forEach(classes, function(klass, i) { + if (klass && klass.length > 0) { + className += (i > 0) ? ' ' : ''; + className += isPrefix ? fix + klass + : klass + fix; + } + }); + return className; +} + +function removeFromArray(arr, val) { + var index = arr.indexOf(val); + if (val >= 0) { + arr.splice(index, 1); + } +} + +function stripCommentsFromElement(element) { + if (element instanceof jqLite) { + switch (element.length) { + case 0: + return []; + break; + + case 1: + // there is no point of stripping anything if the element + // is the only element within the jqLite wrapper. + // (it's important that we retain the element instance.) + if (element[0].nodeType === ELEMENT_NODE) { + return element; + } + break; + + default: + return jqLite(extractElementNode(element)); + break; + } + } + + if (element.nodeType === ELEMENT_NODE) { + return jqLite(element); + } +} + +function extractElementNode(element) { + if (!element[0]) return element; + for (var i = 0; i < element.length; i++) { + var elm = element[i]; + if (elm.nodeType == ELEMENT_NODE) { + return elm; + } + } +} + +function $$addClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.addClass(elm, className); + }); +} + +function $$removeClass($$jqLite, element, className) { + forEach(element, function(elm) { + $$jqLite.removeClass(elm, className); + }); +} + +function applyAnimationClassesFactory($$jqLite) { + return function(element, options) { + if (options.addClass) { + $$addClass($$jqLite, element, options.addClass); + options.addClass = null; + } + if (options.removeClass) { + $$removeClass($$jqLite, element, options.removeClass); + options.removeClass = null; + } + } +} + +function prepareAnimationOptions(options) { + options = options || {}; + if (!options.$$prepared) { + var domOperation = options.domOperation || noop; + options.domOperation = function() { + options.$$domOperationFired = true; + domOperation(); + domOperation = noop; + }; + options.$$prepared = true; + } + return options; +} + +function applyAnimationStyles(element, options) { + applyAnimationFromStyles(element, options); + applyAnimationToStyles(element, options); +} + +function applyAnimationFromStyles(element, options) { + if (options.from) { + element.css(options.from); + options.from = null; + } +} + +function applyAnimationToStyles(element, options) { + if (options.to) { + element.css(options.to); + options.to = null; + } +} + +function mergeAnimationDetails(element, oldAnimation, newAnimation) { + var target = oldAnimation.options || {}; + var newOptions = newAnimation.options || {}; + + var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || ''); + var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || ''); + var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove); + + if (newOptions.preparationClasses) { + target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses); + delete newOptions.preparationClasses; + } + + // noop is basically when there is no callback; otherwise something has been set + var realDomOperation = target.domOperation !== noop ? target.domOperation : null; + + extend(target, newOptions); + + // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this. + if (realDomOperation) { + target.domOperation = realDomOperation; + } + + if (classes.addClass) { + target.addClass = classes.addClass; + } else { + target.addClass = null; + } + + if (classes.removeClass) { + target.removeClass = classes.removeClass; + } else { + target.removeClass = null; + } + + oldAnimation.addClass = target.addClass; + oldAnimation.removeClass = target.removeClass; + + return target; +} + +function resolveElementClasses(existing, toAdd, toRemove) { + var ADD_CLASS = 1; + var REMOVE_CLASS = -1; + + var flags = {}; + existing = splitClassesToLookup(existing); + + toAdd = splitClassesToLookup(toAdd); + forEach(toAdd, function(value, key) { + flags[key] = ADD_CLASS; + }); + + toRemove = splitClassesToLookup(toRemove); + forEach(toRemove, function(value, key) { + flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS; + }); + + var classes = { + addClass: '', + removeClass: '' + }; + + forEach(flags, function(val, klass) { + var prop, allow; + if (val === ADD_CLASS) { + prop = 'addClass'; + allow = !existing[klass]; + } else if (val === REMOVE_CLASS) { + prop = 'removeClass'; + allow = existing[klass]; + } + if (allow) { + if (classes[prop].length) { + classes[prop] += ' '; + } + classes[prop] += klass; + } + }); + + function splitClassesToLookup(classes) { + if (isString(classes)) { + classes = classes.split(' '); + } + + var obj = {}; + forEach(classes, function(klass) { + // sometimes the split leaves empty string values + // incase extra spaces were applied to the options + if (klass.length) { + obj[klass] = true; + } + }); + return obj; + } + + return classes; +} + +function getDomNode(element) { + return (element instanceof angular.element) ? element[0] : element; +} + +function applyGeneratedPreparationClasses(element, event, options) { + var classes = ''; + if (event) { + classes = pendClasses(event, EVENT_CLASS_PREFIX, true); + } + if (options.addClass) { + classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX)); + } + if (options.removeClass) { + classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX)); + } + if (classes.length) { + options.preparationClasses = classes; + element.addClass(classes); + } +} + +function clearGeneratedClasses(element, options) { + if (options.preparationClasses) { + element.removeClass(options.preparationClasses); + options.preparationClasses = null; + } + if (options.activeClasses) { + element.removeClass(options.activeClasses); + options.activeClasses = null; + } +} + +function blockTransitions(node, duration) { + // we use a negative delay value since it performs blocking + // yet it doesn't kill any existing transitions running on the + // same element which makes this safe for class-based animations + var value = duration ? '-' + duration + 's' : ''; + applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]); + return [TRANSITION_DELAY_PROP, value]; +} + +function blockKeyframeAnimations(node, applyBlock) { + var value = applyBlock ? 'paused' : ''; + var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY; + applyInlineStyle(node, [key, value]); + return [key, value]; +} + +function applyInlineStyle(node, styleTuple) { + var prop = styleTuple[0]; + var value = styleTuple[1]; + node.style[prop] = value; +} + +function concatWithSpace(a,b) { + if (!a) return b; + if (!b) return a; + return a + ' ' + b; +} + +var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) { + var queue, cancelFn; + + function scheduler(tasks) { + // we make a copy since RAFScheduler mutates the state + // of the passed in array variable and this would be difficult + // to track down on the outside code + queue = queue.concat(tasks); + nextTick(); + } + + queue = scheduler.queue = []; + + /* waitUntilQuiet does two things: + * 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through + * 2. It will delay the next wave of tasks from running until the quiet `fn` has run. + * + * The motivation here is that animation code can request more time from the scheduler + * before the next wave runs. This allows for certain DOM properties such as classes to + * be resolved in time for the next animation to run. + */ + scheduler.waitUntilQuiet = function(fn) { + if (cancelFn) cancelFn(); + + cancelFn = $$rAF(function() { + cancelFn = null; + fn(); + nextTick(); + }); + }; + + return scheduler; + + function nextTick() { + if (!queue.length) return; + + var items = queue.shift(); + for (var i = 0; i < items.length; i++) { + items[i](); + } + + if (!cancelFn) { + $$rAF(function() { + if (!cancelFn) nextTick(); + }); + } + } +}]; + +/** + * @ngdoc directive + * @name ngAnimateChildren + * @restrict AE + * @element ANY + * + * @description + * + * ngAnimateChildren allows you to specify that children of this element should animate even if any + * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move` + * (structural) animation, child elements that also have an active structural animation are not animated. + * + * Note that even if `ngAnimteChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation). + * + * + * @param {string} ngAnimateChildren If the value is empty, `true` or `on`, + * then child animations are allowed. If the value is `false`, child animations are not allowed. + * + * @example + * + +
+ + +
+
+
+ List of items: +
Item {{item}}
+
+
+
+
+ + + .container.ng-enter, + .container.ng-leave { + transition: all ease 1.5s; + } + + .container.ng-enter, + .container.ng-leave-active { + opacity: 0; + } + + .container.ng-leave, + .container.ng-enter-active { + opacity: 1; + } + + .item { + background: firebrick; + color: #FFF; + margin-bottom: 10px; + } + + .item.ng-enter, + .item.ng-leave { + transition: transform 1.5s ease; + } + + .item.ng-enter { + transform: translateX(50px); + } + + .item.ng-enter-active { + transform: translateX(0); + } + + + angular.module('ngAnimateChildren', ['ngAnimate']) + .controller('mainController', function() { + this.animateChildren = false; + this.enterElement = false; + }); + +
+ */ +var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) { + return { + link: function(scope, element, attrs) { + var val = attrs.ngAnimateChildren; + if (angular.isString(val) && val.length === 0) { //empty attribute + element.data(NG_ANIMATE_CHILDREN_DATA, true); + } else { + // Interpolate and set the value, so that it is available to + // animations that run right after compilation + setData($interpolate(val)(scope)); + attrs.$observe('ngAnimateChildren', setData); + } + + function setData(value) { + value = value === 'on' || value === 'true'; + element.data(NG_ANIMATE_CHILDREN_DATA, value); + } + } + }; +}]; + +var ANIMATE_TIMER_KEY = '$$animateCss'; + +/** + * @ngdoc service + * @name $animateCss + * @kind object + * + * @description + * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes + * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT + * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or + * directives to create more complex animations that can be purely driven using CSS code. + * + * Note that only browsers that support CSS transitions and/or keyframe animations are capable of + * rendering animations triggered via `$animateCss` (bad news for IE9 and lower). + * + * ## Usage + * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that + * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however, + * any automatic control over cancelling animations and/or preventing animations from being run on + * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to + * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger + * the CSS animation. + * + * The example below shows how we can create a folding animation on an element using `ng-if`: + * + * ```html + * + *
+ * This element will go BOOM + *
+ * + * ``` + * + * Now we create the **JavaScript animation** that will trigger the CSS transition: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * ## More Advanced Uses + * + * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks + * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code. + * + * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation, + * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with + * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order + * to provide a working animation that will run in CSS. + * + * The example below showcases a more advanced version of the `.fold-animation` from the example above: + * + * ```js + * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) { + * return { + * enter: function(element, doneFn) { + * var height = element[0].offsetHeight; + * return $animateCss(element, { + * addClass: 'red large-text pulse-twice', + * easing: 'ease-out', + * from: { height:'0px' }, + * to: { height:height + 'px' }, + * duration: 1 // one second + * }); + * } + * } + * }]); + * ``` + * + * Since we're adding/removing CSS classes then the CSS transition will also pick those up: + * + * ```css + * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code, + * the CSS classes below will be transitioned despite them being defined as regular CSS classes */ + * .red { background:red; } + * .large-text { font-size:20px; } + * + * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */ + * .pulse-twice { + * animation: 0.5s pulse linear 2; + * -webkit-animation: 0.5s pulse linear 2; + * } + * + * @keyframes pulse { + * from { transform: scale(0.5); } + * to { transform: scale(1.5); } + * } + * + * @-webkit-keyframes pulse { + * from { -webkit-transform: scale(0.5); } + * to { -webkit-transform: scale(1.5); } + * } + * ``` + * + * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen. + * + * ## How the Options are handled + * + * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation + * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline + * styles using the `from` and `to` properties. + * + * ```js + * var animator = $animateCss(element, { + * from: { background:'red' }, + * to: { background:'blue' } + * }); + * animator.start(); + * ``` + * + * ```css + * .rotating-animation { + * animation:0.5s rotate linear; + * -webkit-animation:0.5s rotate linear; + * } + * + * @keyframes rotate { + * from { transform: rotate(0deg); } + * to { transform: rotate(360deg); } + * } + * + * @-webkit-keyframes rotate { + * from { -webkit-transform: rotate(0deg); } + * to { -webkit-transform: rotate(360deg); } + * } + * ``` + * + * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is + * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition + * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition + * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied + * and spread across the transition and keyframe animation. + * + * ## What is returned + * + * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually + * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are + * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties: + * + * ```js + * var animator = $animateCss(element, { ... }); + * ``` + * + * Now what do the contents of our `animator` variable look like: + * + * ```js + * { + * // starts the animation + * start: Function, + * + * // ends (aborts) the animation + * end: Function + * } + * ``` + * + * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends. + * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been + * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties + * and that changing them will not reconfigure the parameters of the animation. + * + * ### runner.done() vs runner.then() + * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the + * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**. + * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()` + * unless you really need a digest to kick off afterwards. + * + * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss + * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code). + * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works. + * + * @param {DOMElement} element the element that will be animated + * @param {object} options the animation-related options that will be applied during the animation + * + * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied + * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.) + * * `structural` - Indicates that the `ng-` prefix will be added to the event class. Setting to `false` or omitting will turn `ng-EVENT` and + * `ng-EVENT-active` in `EVENT` and `EVENT-active`. Unused if `event` is omitted. + * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both). + * * `transitionStyle` - The raw CSS transition style that will be used (e.g. `1s linear all`). + * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`). + * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation. + * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition. + * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation. + * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation. + * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0` + * is provided then the animation will be skipped entirely. + * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is + * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value + * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same + * CSS delay value. + * * `stagger` - A numeric time value representing the delay between successively animated elements + * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.}) + * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a + * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`) + * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.) + * * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once + * the animation is closed. This is useful for when the styles are used purely for the sake of + * the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation). + * By default this value is set to `false`. + * + * @return {object} an object with start and end methods and details about the animation. + * + * * `start` - The method to start the animation. This will return a `Promise` when called. + * * `end` - This method will cancel the animation and remove all applied CSS classes and styles. + */ +var ONE_SECOND = 1000; +var BASE_TEN = 10; + +var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3; +var CLOSING_TIME_BUFFER = 1.5; + +var DETECT_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + transitionProperty: TRANSITION_PROP + PROPERTY_KEY, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP, + animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY +}; + +var DETECT_STAGGER_CSS_PROPERTIES = { + transitionDuration: TRANSITION_DURATION_PROP, + transitionDelay: TRANSITION_DELAY_PROP, + animationDuration: ANIMATION_DURATION_PROP, + animationDelay: ANIMATION_DELAY_PROP +}; + +function getCssKeyframeDurationStyle(duration) { + return [ANIMATION_DURATION_PROP, duration + 's']; +} + +function getCssDelayStyle(delay, isKeyframeAnimation) { + var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP; + return [prop, delay + 's']; +} + +function computeCssStyles($window, element, properties) { + var styles = Object.create(null); + var detectedStyles = $window.getComputedStyle(element) || {}; + forEach(properties, function(formalStyleName, actualStyleName) { + var val = detectedStyles[formalStyleName]; + if (val) { + var c = val.charAt(0); + + // only numerical-based values have a negative sign or digit as the first value + if (c === '-' || c === '+' || c >= 0) { + val = parseMaxTime(val); + } + + // by setting this to null in the event that the delay is not set or is set directly as 0 + // then we can still allow for negative values to be used later on and not mistake this + // value for being greater than any other negative value. + if (val === 0) { + val = null; + } + styles[actualStyleName] = val; + } + }); + + return styles; +} + +function parseMaxTime(str) { + var maxValue = 0; + var values = str.split(/\s*,\s*/); + forEach(values, function(value) { + // it's always safe to consider only second values and omit `ms` values since + // getComputedStyle will always handle the conversion for us + if (value.charAt(value.length - 1) == 's') { + value = value.substring(0, value.length - 1); + } + value = parseFloat(value) || 0; + maxValue = maxValue ? Math.max(value, maxValue) : value; + }); + return maxValue; +} + +function truthyTimingValue(val) { + return val === 0 || val != null; +} + +function getCssTransitionDurationStyle(duration, applyOnlyDuration) { + var style = TRANSITION_PROP; + var value = duration + 's'; + if (applyOnlyDuration) { + style += DURATION_KEY; + } else { + value += ' linear all'; + } + return [style, value]; +} + +function createLocalCacheLookup() { + var cache = Object.create(null); + return { + flush: function() { + cache = Object.create(null); + }, + + count: function(key) { + var entry = cache[key]; + return entry ? entry.total : 0; + }, + + get: function(key) { + var entry = cache[key]; + return entry && entry.value; + }, + + put: function(key, value) { + if (!cache[key]) { + cache[key] = { total: 1, value: value }; + } else { + cache[key].total++; + } + } + }; +} + +// we do not reassign an already present style value since +// if we detect the style property value again we may be +// detecting styles that were added via the `from` styles. +// We make use of `isDefined` here since an empty string +// or null value (which is what getPropertyValue will return +// for a non-existing style) will still be marked as a valid +// value for the style (a falsy value implies that the style +// is to be removed at the end of the animation). If we had a simple +// "OR" statement then it would not be enough to catch that. +function registerRestorableStyles(backup, node, properties) { + forEach(properties, function(prop) { + backup[prop] = isDefined(backup[prop]) + ? backup[prop] + : node.style.getPropertyValue(prop); + }); +} + +var $AnimateCssProvider = ['$animateProvider', function($animateProvider) { + var gcsLookup = createLocalCacheLookup(); + var gcsStaggerLookup = createLocalCacheLookup(); + + this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', + '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue', + function($window, $$jqLite, $$AnimateRunner, $timeout, + $$forceReflow, $sniffer, $$rAFScheduler, $$animateQueue) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + var parentCounter = 0; + function gcsHashFn(node, extraClasses) { + var KEY = "$$ngAnimateParentKey"; + var parentNode = node.parentNode; + var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter); + return parentID + '-' + node.getAttribute('class') + '-' + extraClasses; + } + + function computeCachedCssStyles(node, className, cacheKey, properties) { + var timings = gcsLookup.get(cacheKey); + + if (!timings) { + timings = computeCssStyles($window, node, properties); + if (timings.animationIterationCount === 'infinite') { + timings.animationIterationCount = 1; + } + } + + // we keep putting this in multiple times even though the value and the cacheKey are the same + // because we're keeping an internal tally of how many duplicate animations are detected. + gcsLookup.put(cacheKey, timings); + return timings; + } + + function computeCachedCssStaggerStyles(node, className, cacheKey, properties) { + var stagger; + + // if we have one or more existing matches of matching elements + // containing the same parent + CSS styles (which is how cacheKey works) + // then staggering is possible + if (gcsLookup.count(cacheKey) > 0) { + stagger = gcsStaggerLookup.get(cacheKey); + + if (!stagger) { + var staggerClassName = pendClasses(className, '-stagger'); + + $$jqLite.addClass(node, staggerClassName); + + stagger = computeCssStyles($window, node, properties); + + // force the conversion of a null value to zero incase not set + stagger.animationDuration = Math.max(stagger.animationDuration, 0); + stagger.transitionDuration = Math.max(stagger.transitionDuration, 0); + + $$jqLite.removeClass(node, staggerClassName); + + gcsStaggerLookup.put(cacheKey, stagger); + } + } + + return stagger || {}; + } + + var cancelLastRAFRequest; + var rafWaitQueue = []; + function waitUntilQuiet(callback) { + rafWaitQueue.push(callback); + $$rAFScheduler.waitUntilQuiet(function() { + gcsLookup.flush(); + gcsStaggerLookup.flush(); + + // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable. + // PLEASE EXAMINE THE `$$forceReflow` service to understand why. + var pageWidth = $$forceReflow(); + + // we use a for loop to ensure that if the queue is changed + // during this looping then it will consider new requests + for (var i = 0; i < rafWaitQueue.length; i++) { + rafWaitQueue[i](pageWidth); + } + rafWaitQueue.length = 0; + }); + } + + function computeTimings(node, className, cacheKey) { + var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES); + var aD = timings.animationDelay; + var tD = timings.transitionDelay; + timings.maxDelay = aD && tD + ? Math.max(aD, tD) + : (aD || tD); + timings.maxDuration = Math.max( + timings.animationDuration * timings.animationIterationCount, + timings.transitionDuration); + + return timings; + } + + return function init(element, initialOptions) { + // all of the animation functions should create + // a copy of the options data, however, if a + // parent service has already created a copy then + // we should stick to using that + var options = initialOptions || {}; + if (!options.$$prepared) { + options = prepareAnimationOptions(copy(options)); + } + + var restoreStyles = {}; + var node = getDomNode(element); + if (!node + || !node.parentNode + || !$$animateQueue.enabled()) { + return closeAndReturnNoopAnimator(); + } + + var temporaryStyles = []; + var classes = element.attr('class'); + var styles = packageStyles(options); + var animationClosed; + var animationPaused; + var animationCompleted; + var runner; + var runnerHost; + var maxDelay; + var maxDelayTime; + var maxDuration; + var maxDurationTime; + var startTime; + var events = []; + + if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) { + return closeAndReturnNoopAnimator(); + } + + var method = options.event && isArray(options.event) + ? options.event.join(' ') + : options.event; + + var isStructural = method && options.structural; + var structuralClassName = ''; + var addRemoveClassName = ''; + + if (isStructural) { + structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true); + } else if (method) { + structuralClassName = method; + } + + if (options.addClass) { + addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX); + } + + if (options.removeClass) { + if (addRemoveClassName.length) { + addRemoveClassName += ' '; + } + addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX); + } + + // there may be a situation where a structural animation is combined together + // with CSS classes that need to resolve before the animation is computed. + // However this means that there is no explicit CSS code to block the animation + // from happening (by setting 0s none in the class name). If this is the case + // we need to apply the classes before the first rAF so we know to continue if + // there actually is a detected transition or keyframe animation + if (options.applyClassesEarly && addRemoveClassName.length) { + applyAnimationClasses(element, options); + } + + var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim(); + var fullClassName = classes + ' ' + preparationClasses; + var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX); + var hasToStyles = styles.to && Object.keys(styles.to).length > 0; + var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0; + + // there is no way we can trigger an animation if no styles and + // no classes are being applied which would then trigger a transition, + // unless there a is raw keyframe value that is applied to the element. + if (!containsKeyframeAnimation + && !hasToStyles + && !preparationClasses) { + return closeAndReturnNoopAnimator(); + } + + var cacheKey, stagger; + if (options.stagger > 0) { + var staggerVal = parseFloat(options.stagger); + stagger = { + transitionDelay: staggerVal, + animationDelay: staggerVal, + transitionDuration: 0, + animationDuration: 0 + }; + } else { + cacheKey = gcsHashFn(node, fullClassName); + stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES); + } + + if (!options.$$skipPreparationClasses) { + $$jqLite.addClass(element, preparationClasses); + } + + var applyOnlyDuration; + + if (options.transitionStyle) { + var transitionStyle = [TRANSITION_PROP, options.transitionStyle]; + applyInlineStyle(node, transitionStyle); + temporaryStyles.push(transitionStyle); + } + + if (options.duration >= 0) { + applyOnlyDuration = node.style[TRANSITION_PROP].length > 0; + var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration); + + // we set the duration so that it will be picked up by getComputedStyle later + applyInlineStyle(node, durationStyle); + temporaryStyles.push(durationStyle); + } + + if (options.keyframeStyle) { + var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle]; + applyInlineStyle(node, keyframeStyle); + temporaryStyles.push(keyframeStyle); + } + + var itemIndex = stagger + ? options.staggerIndex >= 0 + ? options.staggerIndex + : gcsLookup.count(cacheKey) + : 0; + + var isFirst = itemIndex === 0; + + // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY + // without causing any combination of transitions to kick in. By adding a negative delay value + // it forces the setup class' transition to end immediately. We later then remove the negative + // transition delay to allow for the transition to naturally do it's thing. The beauty here is + // that if there is no transition defined then nothing will happen and this will also allow + // other transitions to be stacked on top of each other without any chopping them out. + if (isFirst && !options.skipBlocking) { + blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE); + } + + var timings = computeTimings(node, fullClassName, cacheKey); + var relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + var flags = {}; + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty == 'all'; + flags.applyTransitionDuration = hasToStyles && ( + (flags.hasTransitions && !flags.hasTransitionAll) + || (flags.hasAnimations && !flags.hasTransitions)); + flags.applyAnimationDuration = options.duration && flags.hasAnimations; + flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions); + flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations; + flags.recalculateTimingStyles = addRemoveClassName.length > 0; + + if (flags.applyTransitionDuration || flags.applyAnimationDuration) { + maxDuration = options.duration ? parseFloat(options.duration) : maxDuration; + + if (flags.applyTransitionDuration) { + flags.hasTransitions = true; + timings.transitionDuration = maxDuration; + applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0; + temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration)); + } + + if (flags.applyAnimationDuration) { + flags.hasAnimations = true; + timings.animationDuration = maxDuration; + temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration)); + } + } + + if (maxDuration === 0 && !flags.recalculateTimingStyles) { + return closeAndReturnNoopAnimator(); + } + + if (options.delay != null) { + var delayStyle; + if (typeof options.delay !== "boolean") { + delayStyle = parseFloat(options.delay); + // number in options.delay means we have to recalculate the delay for the closing timeout + maxDelay = Math.max(delayStyle, 0); + } + + if (flags.applyTransitionDelay) { + temporaryStyles.push(getCssDelayStyle(delayStyle)); + } + + if (flags.applyAnimationDelay) { + temporaryStyles.push(getCssDelayStyle(delayStyle, true)); + } + } + + // we need to recalculate the delay value since we used a pre-emptive negative + // delay value and the delay value is required for the final event checking. This + // property will ensure that this will happen after the RAF phase has passed. + if (options.duration == null && timings.transitionDuration > 0) { + flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + if (!options.skipBlocking) { + flags.blockTransition = timings.transitionDuration > 0; + flags.blockKeyframeAnimation = timings.animationDuration > 0 && + stagger.animationDelay > 0 && + stagger.animationDuration === 0; + } + + if (options.from) { + if (options.cleanupStyles) { + registerRestorableStyles(restoreStyles, node, Object.keys(options.from)); + } + applyAnimationFromStyles(element, options); + } + + if (flags.blockTransition || flags.blockKeyframeAnimation) { + applyBlocking(maxDuration); + } else if (!options.skipBlocking) { + blockTransitions(node, false); + } + + // TODO(matsko): for 1.5 change this code to have an animator object for better debugging + return { + $$willAnimate: true, + end: endFn, + start: function() { + if (animationClosed) return; + + runnerHost = { + end: endFn, + cancel: cancelFn, + resume: null, //this will be set during the start() phase + pause: null + }; + + runner = new $$AnimateRunner(runnerHost); + + waitUntilQuiet(start); + + // we don't have access to pause/resume the animation + // since it hasn't run yet. AnimateRunner will therefore + // set noop functions for resume and pause and they will + // later be overridden once the animation is triggered + return runner; + } + }; + + function endFn() { + close(); + } + + function cancelFn() { + close(true); + } + + function close(rejected) { // jshint ignore:line + // if the promise has been called already then we shouldn't close + // the animation again + if (animationClosed || (animationCompleted && animationPaused)) return; + animationClosed = true; + animationPaused = false; + + if (!options.$$skipPreparationClasses) { + $$jqLite.removeClass(element, preparationClasses); + } + $$jqLite.removeClass(element, activeClasses); + + blockKeyframeAnimations(node, false); + blockTransitions(node, false); + + forEach(temporaryStyles, function(entry) { + // There is only one way to remove inline style properties entirely from elements. + // By using `removeProperty` this works, but we need to convert camel-cased CSS + // styles down to hyphenated values. + node.style[entry[0]] = ''; + }); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + + if (Object.keys(restoreStyles).length) { + forEach(restoreStyles, function(value, prop) { + value ? node.style.setProperty(prop, value) + : node.style.removeProperty(prop); + }); + } + + // the reason why we have this option is to allow a synchronous closing callback + // that is fired as SOON as the animation ends (when the CSS is removed) or if + // the animation never takes off at all. A good example is a leave animation since + // the element must be removed just after the animation is over or else the element + // will appear on screen for one animation frame causing an overbearing flicker. + if (options.onDone) { + options.onDone(); + } + + if (events && events.length) { + // Remove the transitionend / animationend listener(s) + element.off(events.join(' '), onAnimationProgress); + } + + //Cancel the fallback closing timeout and remove the timer data + var animationTimerData = element.data(ANIMATE_TIMER_KEY); + if (animationTimerData) { + $timeout.cancel(animationTimerData[0].timer); + element.removeData(ANIMATE_TIMER_KEY); + } + + // if the preparation function fails then the promise is not setup + if (runner) { + runner.complete(!rejected); + } + } + + function applyBlocking(duration) { + if (flags.blockTransition) { + blockTransitions(node, duration); + } + + if (flags.blockKeyframeAnimation) { + blockKeyframeAnimations(node, !!duration); + } + } + + function closeAndReturnNoopAnimator() { + runner = new $$AnimateRunner({ + end: endFn, + cancel: cancelFn + }); + + // should flush the cache animation + waitUntilQuiet(noop); + close(); + + return { + $$willAnimate: false, + start: function() { + return runner; + }, + end: endFn + }; + } + + function onAnimationProgress(event) { + event.stopPropagation(); + var ev = event.originalEvent || event; + + // we now always use `Date.now()` due to the recent changes with + // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info) + 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 event.timeStamp, + * 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 animationPauseds sometimes close off early */ + if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) { + // we set this flag to ensure that if the transition is paused then, when resumed, + // the animation will automatically close itself since transitions cannot be paused. + animationCompleted = true; + close(); + } + } + + function start() { + if (animationClosed) return; + if (!node.parentNode) { + close(); + return; + } + + // even though we only pause keyframe animations here the pause flag + // will still happen when transitions are used. Only the transition will + // not be paused since that is not possible. If the animation ends when + // paused then it will not complete until unpaused or cancelled. + var playPause = function(playAnimation) { + if (!animationCompleted) { + animationPaused = !playAnimation; + if (timings.animationDuration) { + var value = blockKeyframeAnimations(node, animationPaused); + animationPaused + ? temporaryStyles.push(value) + : removeFromArray(temporaryStyles, value); + } + } else if (animationPaused && playAnimation) { + animationPaused = false; + close(); + } + }; + + // checking the stagger duration prevents an accidentally cascade of the CSS delay style + // being inherited from the parent. If the transition duration is zero then we can safely + // rely that the delay value is an intentional stagger delay style. + var maxStagger = itemIndex > 0 + && ((timings.transitionDuration && stagger.transitionDuration === 0) || + (timings.animationDuration && stagger.animationDuration === 0)) + && Math.max(stagger.animationDelay, stagger.transitionDelay); + if (maxStagger) { + $timeout(triggerAnimationStart, + Math.floor(maxStagger * itemIndex * ONE_SECOND), + false); + } else { + triggerAnimationStart(); + } + + // this will decorate the existing promise runner with pause/resume methods + runnerHost.resume = function() { + playPause(true); + }; + + runnerHost.pause = function() { + playPause(false); + }; + + function triggerAnimationStart() { + // just incase a stagger animation kicks in when the animation + // itself was cancelled entirely + if (animationClosed) return; + + applyBlocking(false); + + forEach(temporaryStyles, function(entry) { + var key = entry[0]; + var value = entry[1]; + node.style[key] = value; + }); + + applyAnimationClasses(element, options); + $$jqLite.addClass(element, activeClasses); + + if (flags.recalculateTimingStyles) { + fullClassName = node.className + ' ' + preparationClasses; + cacheKey = gcsHashFn(node, fullClassName); + + timings = computeTimings(node, fullClassName, cacheKey); + relativeDelay = timings.maxDelay; + maxDelay = Math.max(relativeDelay, 0); + maxDuration = timings.maxDuration; + + if (maxDuration === 0) { + close(); + return; + } + + flags.hasTransitions = timings.transitionDuration > 0; + flags.hasAnimations = timings.animationDuration > 0; + } + + if (flags.applyAnimationDelay) { + relativeDelay = typeof options.delay !== "boolean" && truthyTimingValue(options.delay) + ? parseFloat(options.delay) + : relativeDelay; + + maxDelay = Math.max(relativeDelay, 0); + timings.animationDelay = relativeDelay; + delayStyle = getCssDelayStyle(relativeDelay, true); + temporaryStyles.push(delayStyle); + node.style[delayStyle[0]] = delayStyle[1]; + } + + maxDelayTime = maxDelay * ONE_SECOND; + maxDurationTime = maxDuration * ONE_SECOND; + + if (options.easing) { + var easeProp, easeVal = options.easing; + if (flags.hasTransitions) { + easeProp = TRANSITION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + if (flags.hasAnimations) { + easeProp = ANIMATION_PROP + TIMING_KEY; + temporaryStyles.push([easeProp, easeVal]); + node.style[easeProp] = easeVal; + } + } + + if (timings.transitionDuration) { + events.push(TRANSITIONEND_EVENT); + } + + if (timings.animationDuration) { + events.push(ANIMATIONEND_EVENT); + } + + startTime = Date.now(); + var timerTime = maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime; + var endTime = startTime + timerTime; + + var animationsData = element.data(ANIMATE_TIMER_KEY) || []; + var setupFallbackTimer = true; + if (animationsData.length) { + var currentTimerData = animationsData[0]; + setupFallbackTimer = endTime > currentTimerData.expectedEndTime; + if (setupFallbackTimer) { + $timeout.cancel(currentTimerData.timer); + } else { + animationsData.push(close); + } + } + + if (setupFallbackTimer) { + var timer = $timeout(onAnimationExpired, timerTime, false); + animationsData[0] = { + timer: timer, + expectedEndTime: endTime + }; + animationsData.push(close); + element.data(ANIMATE_TIMER_KEY, animationsData); + } + + if (events.length) { + element.on(events.join(' '), onAnimationProgress); + } + + if (options.to) { + if (options.cleanupStyles) { + registerRestorableStyles(restoreStyles, node, Object.keys(options.to)); + } + applyAnimationToStyles(element, options); + } + } + + function onAnimationExpired() { + var animationsData = element.data(ANIMATE_TIMER_KEY); + + // this will be false in the event that the element was + // removed from the DOM (via a leave animation or something + // similar) + if (animationsData) { + for (var i = 1; i < animationsData.length; i++) { + animationsData[i](); + } + element.removeData(ANIMATE_TIMER_KEY); + } + } + } + }; + }]; +}]; + +var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationProvider) { + $$animationProvider.drivers.push('$$animateCssDriver'); + + var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim'; + var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor'; + + var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out'; + var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in'; + + function isDocumentFragment(node) { + return node.parentNode && node.parentNode.nodeType === 11; + } + + this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$sniffer', '$$jqLite', '$document', + function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $sniffer, $$jqLite, $document) { + + // only browsers that support these properties can render animations + if (!$sniffer.animations && !$sniffer.transitions) return noop; + + var bodyNode = $document[0].body; + var rootNode = getDomNode($rootElement); + + var rootBodyElement = jqLite( + // this is to avoid using something that exists outside of the body + // we also special case the doc fragment case because our unit test code + // appends the $rootElement to the body after the app has been bootstrapped + isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode + ); + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + return function initDriverFn(animationDetails) { + return animationDetails.from && animationDetails.to + ? prepareFromToAnchorAnimation(animationDetails.from, + animationDetails.to, + animationDetails.classes, + animationDetails.anchors) + : prepareRegularAnimation(animationDetails); + }; + + function filterCssClasses(classes) { + //remove all the `ng-` stuff + return classes.replace(/\bng-\S+\b/g, ''); + } + + function getUniqueValues(a, b) { + if (isString(a)) a = a.split(' '); + if (isString(b)) b = b.split(' '); + return a.filter(function(val) { + return b.indexOf(val) === -1; + }).join(' '); + } + + function prepareAnchoredAnimation(classes, outAnchor, inAnchor) { + var clone = jqLite(getDomNode(outAnchor).cloneNode(true)); + var startingClasses = filterCssClasses(getClassVal(clone)); + + outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME); + + clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME); + + rootBodyElement.append(clone); + + var animatorIn, animatorOut = prepareOutAnimation(); + + // the user may not end up using the `out` animation and + // only making use of the `in` animation or vice-versa. + // In either case we should allow this and not assume the + // animation is over unless both animations are not used. + if (!animatorOut) { + animatorIn = prepareInAnimation(); + if (!animatorIn) { + return end(); + } + } + + var startingAnimator = animatorOut || animatorIn; + + return { + start: function() { + var runner; + + var currentAnimation = startingAnimator.start(); + currentAnimation.done(function() { + currentAnimation = null; + if (!animatorIn) { + animatorIn = prepareInAnimation(); + if (animatorIn) { + currentAnimation = animatorIn.start(); + currentAnimation.done(function() { + currentAnimation = null; + end(); + runner.complete(); + }); + return currentAnimation; + } + } + // in the event that there is no `in` animation + end(); + runner.complete(); + }); + + runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn + }); + + return runner; + + function endFn() { + if (currentAnimation) { + currentAnimation.end(); + } + } + } + }; + + function calculateAnchorStyles(anchor) { + var styles = {}; + + var coords = getDomNode(anchor).getBoundingClientRect(); + + // we iterate directly since safari messes up and doesn't return + // all the keys for the coords object when iterated + forEach(['width','height','top','left'], function(key) { + var value = coords[key]; + switch (key) { + case 'top': + value += bodyNode.scrollTop; + break; + case 'left': + value += bodyNode.scrollLeft; + break; + } + styles[key] = Math.floor(value) + 'px'; + }); + return styles; + } + + function prepareOutAnimation() { + var animator = $animateCss(clone, { + addClass: NG_OUT_ANCHOR_CLASS_NAME, + delay: true, + from: calculateAnchorStyles(outAnchor) + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function getClassVal(element) { + return element.attr('class') || ''; + } + + function prepareInAnimation() { + var endingClasses = filterCssClasses(getClassVal(inAnchor)); + var toAdd = getUniqueValues(endingClasses, startingClasses); + var toRemove = getUniqueValues(startingClasses, endingClasses); + + var animator = $animateCss(clone, { + to: calculateAnchorStyles(inAnchor), + addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd, + removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove, + delay: true + }); + + // read the comment within `prepareRegularAnimation` to understand + // why this check is necessary + return animator.$$willAnimate ? animator : null; + } + + function end() { + clone.remove(); + outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME); + } + } + + function prepareFromToAnchorAnimation(from, to, classes, anchors) { + var fromAnimation = prepareRegularAnimation(from, noop); + var toAnimation = prepareRegularAnimation(to, noop); + + var anchorAnimations = []; + forEach(anchors, function(anchor) { + var outElement = anchor['out']; + var inElement = anchor['in']; + var animator = prepareAnchoredAnimation(classes, outElement, inElement); + if (animator) { + anchorAnimations.push(animator); + } + }); + + // no point in doing anything when there are no elements to animate + if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + forEach(anchorAnimations, function(animation) { + animationRunners.push(animation.start()); + }); + + var runner = new $$AnimateRunner({ + end: endFn, + cancel: endFn // CSS-driven animations cannot be cancelled, only ended + }); + + $$AnimateRunner.all(animationRunners, function(status) { + runner.complete(status); + }); + + return runner; + + function endFn() { + forEach(animationRunners, function(runner) { + runner.end(); + }); + } + } + }; + } + + function prepareRegularAnimation(animationDetails) { + var element = animationDetails.element; + var options = animationDetails.options || {}; + + if (animationDetails.structural) { + options.event = animationDetails.event; + options.structural = true; + options.applyClassesEarly = true; + + // we special case the leave animation since we want to ensure that + // the element is removed as soon as the animation is over. Otherwise + // a flicker might appear or the element may not be removed at all + if (animationDetails.event === 'leave') { + options.onDone = options.domOperation; + } + } + + // We assign the preparationClasses as the actual animation event since + // the internals of $animateCss will just suffix the event token values + // with `-active` to trigger the animation. + if (options.preparationClasses) { + options.event = concatWithSpace(options.event, options.preparationClasses); + } + + var animator = $animateCss(element, options); + + // the driver lookup code inside of $$animation attempts to spawn a + // driver one by one until a driver returns a.$$willAnimate animator object. + // $animateCss will always return an object, however, it will pass in + // a flag as a hint as to whether an animation was detected or not + return animator.$$willAnimate ? animator : null; + } + }]; +}]; + +// TODO(matsko): use caching here to speed things up for detection +// TODO(matsko): add documentation +// by the time... + +var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) { + this.$get = ['$injector', '$$AnimateRunner', '$$jqLite', + function($injector, $$AnimateRunner, $$jqLite) { + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + // $animateJs(element, 'enter'); + return function(element, event, classes, options) { + var animationClosed = false; + + // the `classes` argument is optional and if it is not used + // then the classes will be resolved from the element's className + // property as well as options.addClass/options.removeClass. + if (arguments.length === 3 && isObject(classes)) { + options = classes; + classes = null; + } + + options = prepareAnimationOptions(options); + if (!classes) { + classes = element.attr('class') || ''; + if (options.addClass) { + classes += ' ' + options.addClass; + } + if (options.removeClass) { + classes += ' ' + options.removeClass; + } + } + + var classesToAdd = options.addClass; + var classesToRemove = options.removeClass; + + // the lookupAnimations function returns a series of animation objects that are + // matched up with one or more of the CSS classes. These animation objects are + // defined via the module.animation factory function. If nothing is detected then + // we don't return anything which then makes $animation query the next driver. + var animations = lookupAnimations(classes); + var before, after; + if (animations.length) { + var afterFn, beforeFn; + if (event == 'leave') { + beforeFn = 'leave'; + afterFn = 'afterLeave'; // TODO(matsko): get rid of this + } else { + beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1); + afterFn = event; + } + + if (event !== 'enter' && event !== 'move') { + before = packageAnimations(element, event, options, animations, beforeFn); + } + after = packageAnimations(element, event, options, animations, afterFn); + } + + // no matching animations + if (!before && !after) return; + + function applyOptions() { + options.domOperation(); + applyAnimationClasses(element, options); + } + + function close() { + animationClosed = true; + applyOptions(); + applyAnimationStyles(element, options); + } + + var runner; + + return { + $$willAnimate: true, + end: function() { + if (runner) { + runner.end(); + } else { + close(); + runner = new $$AnimateRunner(); + runner.complete(true); + } + return runner; + }, + start: function() { + if (runner) { + return runner; + } + + runner = new $$AnimateRunner(); + var closeActiveAnimations; + var chain = []; + + if (before) { + chain.push(function(fn) { + closeActiveAnimations = before(fn); + }); + } + + if (chain.length) { + chain.push(function(fn) { + applyOptions(); + fn(true); + }); + } else { + applyOptions(); + } + + if (after) { + chain.push(function(fn) { + closeActiveAnimations = after(fn); + }); + } + + runner.setHost({ + end: function() { + endAnimations(); + }, + cancel: function() { + endAnimations(true); + } + }); + + $$AnimateRunner.chain(chain, onComplete); + return runner; + + function onComplete(success) { + close(success); + runner.complete(success); + } + + function endAnimations(cancelled) { + if (!animationClosed) { + (closeActiveAnimations || noop)(cancelled); + onComplete(cancelled); + } + } + } + }; + + function executeAnimationFn(fn, element, event, options, onDone) { + var args; + switch (event) { + case 'animate': + args = [element, options.from, options.to, onDone]; + break; + + case 'setClass': + args = [element, classesToAdd, classesToRemove, onDone]; + break; + + case 'addClass': + args = [element, classesToAdd, onDone]; + break; + + case 'removeClass': + args = [element, classesToRemove, onDone]; + break; + + default: + args = [element, onDone]; + break; + } + + args.push(options); + + var value = fn.apply(fn, args); + if (value) { + if (isFunction(value.start)) { + value = value.start(); + } + + if (value instanceof $$AnimateRunner) { + value.done(onDone); + } else if (isFunction(value)) { + // optional onEnd / onCancel callback + return value; + } + } + + return noop; + } + + function groupEventedAnimations(element, event, options, animations, fnName) { + var operations = []; + forEach(animations, function(ani) { + var animation = ani[fnName]; + if (!animation) return; + + // note that all of these animations will run in parallel + operations.push(function() { + var runner; + var endProgressCb; + + var resolved = false; + var onAnimationComplete = function(rejected) { + if (!resolved) { + resolved = true; + (endProgressCb || noop)(rejected); + runner.complete(!rejected); + } + }; + + runner = new $$AnimateRunner({ + end: function() { + onAnimationComplete(); + }, + cancel: function() { + onAnimationComplete(true); + } + }); + + endProgressCb = executeAnimationFn(animation, element, event, options, function(result) { + var cancelled = result === false; + onAnimationComplete(cancelled); + }); + + return runner; + }); + }); + + return operations; + } + + function packageAnimations(element, event, options, animations, fnName) { + var operations = groupEventedAnimations(element, event, options, animations, fnName); + if (operations.length === 0) { + var a,b; + if (fnName === 'beforeSetClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass'); + } else if (fnName === 'setClass') { + a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass'); + b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass'); + } + + if (a) { + operations = operations.concat(a); + } + if (b) { + operations = operations.concat(b); + } + } + + if (operations.length === 0) return; + + // TODO(matsko): add documentation + return function startAnimation(callback) { + var runners = []; + if (operations.length) { + forEach(operations, function(animateFn) { + runners.push(animateFn()); + }); + } + + runners.length ? $$AnimateRunner.all(runners, callback) : callback(); + + return function endFn(reject) { + forEach(runners, function(runner) { + reject ? runner.cancel() : runner.end(); + }); + }; + }; + } + }; + + function lookupAnimations(classes) { + classes = isArray(classes) ? classes : classes.split(' '); + var matches = [], flagMap = {}; + for (var i=0; i < classes.length; i++) { + var klass = classes[i], + animationFactory = $animateProvider.$$registeredAnimations[klass]; + if (animationFactory && !flagMap[klass]) { + matches.push($injector.get(animationFactory)); + flagMap[klass] = true; + } + } + return matches; + } + }]; +}]; + +var $$AnimateJsDriverProvider = ['$$animationProvider', function($$animationProvider) { + $$animationProvider.drivers.push('$$animateJsDriver'); + this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) { + return function initDriverFn(animationDetails) { + if (animationDetails.from && animationDetails.to) { + var fromAnimation = prepareAnimation(animationDetails.from); + var toAnimation = prepareAnimation(animationDetails.to); + if (!fromAnimation && !toAnimation) return; + + return { + start: function() { + var animationRunners = []; + + if (fromAnimation) { + animationRunners.push(fromAnimation.start()); + } + + if (toAnimation) { + animationRunners.push(toAnimation.start()); + } + + $$AnimateRunner.all(animationRunners, done); + + var runner = new $$AnimateRunner({ + end: endFnFactory(), + cancel: endFnFactory() + }); + + return runner; + + function endFnFactory() { + return function() { + forEach(animationRunners, function(runner) { + // at this point we cannot cancel animations for groups just yet. 1.5+ + runner.end(); + }); + }; + } + + function done(status) { + runner.complete(status); + } + } + }; + } else { + return prepareAnimation(animationDetails); + } + }; + + function prepareAnimation(animationDetails) { + // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations + var element = animationDetails.element; + var event = animationDetails.event; + var options = animationDetails.options; + var classes = animationDetails.classes; + return $$animateJs(element, event, classes, options); + } + }]; +}]; + +var NG_ANIMATE_ATTR_NAME = 'data-ng-animate'; +var NG_ANIMATE_PIN_DATA = '$ngAnimatePin'; +var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) { + var PRE_DIGEST_STATE = 1; + var RUNNING_STATE = 2; + var ONE_SPACE = ' '; + + var rules = this.rules = { + skip: [], + cancel: [], + join: [] + }; + + function makeTruthyCssClassMap(classString) { + if (!classString) { + return null; + } + + var keys = classString.split(ONE_SPACE); + var map = Object.create(null); + + forEach(keys, function(key) { + map[key] = true; + }); + return map; + } + + function hasMatchingClasses(newClassString, currentClassString) { + if (newClassString && currentClassString) { + var currentClassMap = makeTruthyCssClassMap(currentClassString); + return newClassString.split(ONE_SPACE).some(function(className) { + return currentClassMap[className]; + }); + } + } + + function isAllowed(ruleType, element, currentAnimation, previousAnimation) { + return rules[ruleType].some(function(fn) { + return fn(element, currentAnimation, previousAnimation); + }); + } + + function hasAnimationClasses(animation, and) { + var a = (animation.addClass || '').length > 0; + var b = (animation.removeClass || '').length > 0; + return and ? a && b : a || b; + } + + rules.join.push(function(element, newAnimation, currentAnimation) { + // if the new animation is class-based then we can just tack that on + return !newAnimation.structural && hasAnimationClasses(newAnimation); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // there is no need to animate anything if no classes are being added and + // there is no structural animation that will be triggered + return !newAnimation.structural && !hasAnimationClasses(newAnimation); + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // why should we trigger a new structural animation if the element will + // be removed from the DOM anyway? + return currentAnimation.event == 'leave' && newAnimation.structural; + }); + + rules.skip.push(function(element, newAnimation, currentAnimation) { + // if there is an ongoing current animation then don't even bother running the class-based animation + return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // there can never be two structural animations running at the same time + return currentAnimation.structural && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // if the previous animation is already running, but the new animation will + // be triggered, but the new animation is structural + return currentAnimation.state === RUNNING_STATE && newAnimation.structural; + }); + + rules.cancel.push(function(element, newAnimation, currentAnimation) { + // cancel the animation if classes added / removed in both animation cancel each other out, + // but only if the current animation isn't structural + + if (currentAnimation.structural) return false; + + var nA = newAnimation.addClass; + var nR = newAnimation.removeClass; + var cA = currentAnimation.addClass; + var cR = currentAnimation.removeClass; + + // early detection to save the global CPU shortage :) + if ((isUndefined(nA) && isUndefined(nR)) || (isUndefined(cA) && isUndefined(cR))) { + return false; + } + + return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA); + }); + + this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap', + '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow', + function($$rAF, $rootScope, $rootElement, $document, $$HashMap, + $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow) { + + var activeAnimationsLookup = new $$HashMap(); + var disabledElementsLookup = new $$HashMap(); + var animationsEnabled = null; + + function postDigestTaskFactory() { + var postDigestCalled = false; + return function(fn) { + // we only issue a call to postDigest before + // it has first passed. This prevents any callbacks + // from not firing once the animation has completed + // since it will be out of the digest cycle. + if (postDigestCalled) { + fn(); + } else { + $rootScope.$$postDigest(function() { + postDigestCalled = true; + fn(); + }); + } + }; + } + + // Wait until all directive and route-related templates are downloaded and + // compiled. The $templateRequest.totalPendingRequests variable keeps track of + // all of the remote templates being currently downloaded. If there are no + // templates currently downloading then the watcher will still fire anyway. + var deregisterWatch = $rootScope.$watch( + function() { return $templateRequest.totalPendingRequests === 0; }, + function(isEmpty) { + if (!isEmpty) return; + deregisterWatch(); + + // Now that all templates have been downloaded, $animate will wait until + // the post digest queue is empty before enabling animations. By having two + // calls to $postDigest calls we can ensure that the flag is enabled at the + // very end of the post digest queue. Since all of the animations in $animate + // use $postDigest, it's important that the code below executes at the end. + // This basically means that the page is fully downloaded and compiled before + // any animations are triggered. + $rootScope.$$postDigest(function() { + $rootScope.$$postDigest(function() { + // we check for null directly in the event that the application already called + // .enabled() with whatever arguments that it provided it with + if (animationsEnabled === null) { + animationsEnabled = true; + } + }); + }); + } + ); + + var callbackRegistry = {}; + + // remember that the classNameFilter is set during the provider/config + // stage therefore we can optimize here and setup a helper function + var classNameFilter = $animateProvider.classNameFilter(); + var isAnimatableClassName = !classNameFilter + ? function() { return true; } + : function(className) { + return classNameFilter.test(className); + }; + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function normalizeAnimationDetails(element, animation) { + return mergeAnimationDetails(element, animation, {}); + } + + // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259. + var contains = window.Node.prototype.contains || function(arg) { + // jshint bitwise: false + return this === arg || !!(this.compareDocumentPosition(arg) & 16); + // jshint bitwise: true + }; + + function findCallbacks(parent, element, event) { + var targetNode = getDomNode(element); + var targetParentNode = getDomNode(parent); + + var matches = []; + var entries = callbackRegistry[event]; + if (entries) { + forEach(entries, function(entry) { + if (contains.call(entry.node, targetNode)) { + matches.push(entry.callback); + } else if (event === 'leave' && contains.call(entry.node, targetParentNode)) { + matches.push(entry.callback); + } + }); + } + + return matches; + } + + function filterFromRegistry(list, matchContainer, matchCallback) { + var containerNode = extractElementNode(matchContainer); + return list.filter(function(entry) { + var isMatch = entry.node === containerNode && + (!matchCallback || entry.callback === matchCallback); + return !isMatch; + }); + } + + function cleanupEventListeners(phase, element) { + if (phase === 'close' && !element[0].parentNode) { + // If the element is not attached to a parentNode, it has been removed by + // the domOperation, and we can safely remove the event callbacks + $animate.off(element); + } + } + + var $animate = { + on: function(event, container, callback) { + var node = extractElementNode(container); + callbackRegistry[event] = callbackRegistry[event] || []; + callbackRegistry[event].push({ + node: node, + callback: callback + }); + + // Remove the callback when the element is removed from the DOM + jqLite(container).on('$destroy', function() { + var animationDetails = activeAnimationsLookup.get(node); + + if (!animationDetails) { + // If there's an animation ongoing, the callback calling code will remove + // the event listeners. If we'd remove here, the callbacks would be removed + // before the animation ends + $animate.off(event, container, callback); + } + }); + }, + + off: function(event, container, callback) { + if (arguments.length === 1 && !angular.isString(arguments[0])) { + container = arguments[0]; + for (var eventType in callbackRegistry) { + callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container); + } + + return; + } + + var entries = callbackRegistry[event]; + if (!entries) return; + + callbackRegistry[event] = arguments.length === 1 + ? null + : filterFromRegistry(entries, container, callback); + }, + + pin: function(element, parentElement) { + assertArg(isElement(element), 'element', 'not an element'); + assertArg(isElement(parentElement), 'parentElement', 'not an element'); + element.data(NG_ANIMATE_PIN_DATA, parentElement); + }, + + push: function(element, event, options, domOperation) { + options = options || {}; + options.domOperation = domOperation; + return queueAnimation(element, event, options); + }, + + // this method has four signatures: + // () - global getter + // (bool) - global setter + // (element) - element getter + // (element, bool) - element setter + enabled: function(element, bool) { + var argCount = arguments.length; + + if (argCount === 0) { + // () - Global getter + bool = !!animationsEnabled; + } else { + var hasElement = isElement(element); + + if (!hasElement) { + // (bool) - Global setter + bool = animationsEnabled = !!element; + } else { + var node = getDomNode(element); + var recordExists = disabledElementsLookup.get(node); + + if (argCount === 1) { + // (element) - Element getter + bool = !recordExists; + } else { + // (element, bool) - Element setter + disabledElementsLookup.put(node, !bool); + } + } + } + + return bool; + } + }; + + return $animate; + + function queueAnimation(element, event, initialOptions) { + // we always make a copy of the options since + // there should never be any side effects on + // the input data when running `$animateCss`. + var options = copy(initialOptions); + + var node, parent; + element = stripCommentsFromElement(element); + if (element) { + node = getDomNode(element); + parent = element.parent(); + } + + options = prepareAnimationOptions(options); + + // we create a fake runner with a working promise. + // These methods will become available after the digest has passed + var runner = new $$AnimateRunner(); + + // this is used to trigger callbacks in postDigest mode + var runInNextPostDigestOrNow = postDigestTaskFactory(); + + if (isArray(options.addClass)) { + options.addClass = options.addClass.join(' '); + } + + if (options.addClass && !isString(options.addClass)) { + options.addClass = null; + } + + if (isArray(options.removeClass)) { + options.removeClass = options.removeClass.join(' '); + } + + if (options.removeClass && !isString(options.removeClass)) { + options.removeClass = null; + } + + if (options.from && !isObject(options.from)) { + options.from = null; + } + + if (options.to && !isObject(options.to)) { + options.to = null; + } + + // there are situations where a directive issues an animation for + // a jqLite wrapper that contains only comment nodes... If this + // happens then there is no way we can perform an animation + if (!node) { + close(); + return runner; + } + + var className = [node.className, options.addClass, options.removeClass].join(' '); + if (!isAnimatableClassName(className)) { + close(); + return runner; + } + + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + var documentHidden = $document[0].hidden; + + // this is a hard disable of all animations for the application or on + // the element itself, therefore there is no need to continue further + // past this point if not enabled + // Animations are also disabled if the document is currently hidden (page is not visible + // to the user), because browsers slow down or do not flush calls to requestAnimationFrame + var skipAnimations = !animationsEnabled || documentHidden || disabledElementsLookup.get(node); + var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {}; + var hasExistingAnimation = !!existingAnimation.state; + + // there is no point in traversing the same collection of parent ancestors if a followup + // animation will be run on the same element that already did all that checking work + if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state != PRE_DIGEST_STATE)) { + skipAnimations = !areAnimationsAllowed(element, parent, event); + } + + if (skipAnimations) { + // Callbacks should fire even if the document is hidden (regression fix for issue #14120) + if (documentHidden) notifyProgress(runner, event, 'start'); + close(); + if (documentHidden) notifyProgress(runner, event, 'close'); + return runner; + } + + if (isStructural) { + closeChildAnimations(element); + } + + var newAnimation = { + structural: isStructural, + element: element, + event: event, + addClass: options.addClass, + removeClass: options.removeClass, + close: close, + options: options, + runner: runner + }; + + if (hasExistingAnimation) { + var skipAnimationFlag = isAllowed('skip', element, newAnimation, existingAnimation); + if (skipAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + close(); + return runner; + } else { + mergeAnimationDetails(element, existingAnimation, newAnimation); + return existingAnimation.runner; + } + } + var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation); + if (cancelAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + // this will end the animation right away and it is safe + // to do so since the animation is already running and the + // runner callback code will run in async + existingAnimation.runner.end(); + } else if (existingAnimation.structural) { + // this means that the animation is queued into a digest, but + // hasn't started yet. Therefore it is safe to run the close + // method which will call the runner methods in async. + existingAnimation.close(); + } else { + // this will merge the new animation options into existing animation options + mergeAnimationDetails(element, existingAnimation, newAnimation); + + return existingAnimation.runner; + } + } else { + // a joined animation means that this animation will take over the existing one + // so an example would involve a leave animation taking over an enter. Then when + // the postDigest kicks in the enter will be ignored. + var joinAnimationFlag = isAllowed('join', element, newAnimation, existingAnimation); + if (joinAnimationFlag) { + if (existingAnimation.state === RUNNING_STATE) { + normalizeAnimationDetails(element, newAnimation); + } else { + applyGeneratedPreparationClasses(element, isStructural ? event : null, options); + + event = newAnimation.event = existingAnimation.event; + options = mergeAnimationDetails(element, existingAnimation, newAnimation); + + //we return the same runner since only the option values of this animation will + //be fed into the `existingAnimation`. + return existingAnimation.runner; + } + } + } + } else { + // normalization in this case means that it removes redundant CSS classes that + // already exist (addClass) or do not exist (removeClass) on the element + normalizeAnimationDetails(element, newAnimation); + } + + // when the options are merged and cleaned up we may end up not having to do + // an animation at all, therefore we should check this before issuing a post + // digest callback. Structural animations will always run no matter what. + var isValidAnimation = newAnimation.structural; + if (!isValidAnimation) { + // animate (from/to) can be quickly checked first, otherwise we check if any classes are present + isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0) + || hasAnimationClasses(newAnimation); + } + + if (!isValidAnimation) { + close(); + clearElementAnimationState(element); + return runner; + } + + // the counter keeps track of cancelled animations + var counter = (existingAnimation.counter || 0) + 1; + newAnimation.counter = counter; + + markElementAnimationState(element, PRE_DIGEST_STATE, newAnimation); + + $rootScope.$$postDigest(function() { + var animationDetails = activeAnimationsLookup.get(node); + var animationCancelled = !animationDetails; + animationDetails = animationDetails || {}; + + // if addClass/removeClass is called before something like enter then the + // registered parent element may not be present. The code below will ensure + // that a final value for parent element is obtained + var parentElement = element.parent() || []; + + // animate/structural/class-based animations all have requirements. Otherwise there + // is no point in performing an animation. The parent node must also be set. + var isValidAnimation = parentElement.length > 0 + && (animationDetails.event === 'animate' + || animationDetails.structural + || hasAnimationClasses(animationDetails)); + + // this means that the previous animation was cancelled + // even if the follow-up animation is the same event + if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) { + // if another animation did not take over then we need + // to make sure that the domOperation and options are + // handled accordingly + if (animationCancelled) { + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + } + + // if the event changed from something like enter to leave then we do + // it, otherwise if it's the same then the end result will be the same too + if (animationCancelled || (isStructural && animationDetails.event !== event)) { + options.domOperation(); + runner.end(); + } + + // in the event that the element animation was not cancelled or a follow-up animation + // isn't allowed to animate from here then we need to clear the state of the element + // so that any future animations won't read the expired animation data. + if (!isValidAnimation) { + clearElementAnimationState(element); + } + + return; + } + + // this combined multiple class to addClass / removeClass into a setClass event + // so long as a structural event did not take over the animation + event = !animationDetails.structural && hasAnimationClasses(animationDetails, true) + ? 'setClass' + : animationDetails.event; + + markElementAnimationState(element, RUNNING_STATE); + var realRunner = $$animation(element, event, animationDetails.options); + + // this will update the runner's flow-control events based on + // the `realRunner` object. + runner.setHost(realRunner); + notifyProgress(runner, event, 'start', {}); + + realRunner.done(function(status) { + close(!status); + var animationDetails = activeAnimationsLookup.get(node); + if (animationDetails && animationDetails.counter === counter) { + clearElementAnimationState(getDomNode(element)); + } + notifyProgress(runner, event, 'close', {}); + }); + }); + + return runner; + + function notifyProgress(runner, event, phase, data) { + runInNextPostDigestOrNow(function() { + var callbacks = findCallbacks(parent, element, event); + if (callbacks.length) { + // do not optimize this call here to RAF because + // we don't know how heavy the callback code here will + // be and if this code is buffered then this can + // lead to a performance regression. + $$rAF(function() { + forEach(callbacks, function(callback) { + callback(element, phase, data); + }); + cleanupEventListeners(phase, element); + }); + } else { + cleanupEventListeners(phase, element); + } + }); + runner.progress(event, phase, data); + } + + function close(reject) { // jshint ignore:line + clearGeneratedClasses(element, options); + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + runner.complete(!reject); + } + } + + function closeChildAnimations(element) { + var node = getDomNode(element); + var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']'); + forEach(children, function(child) { + var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME)); + var animationDetails = activeAnimationsLookup.get(child); + if (animationDetails) { + switch (state) { + case RUNNING_STATE: + animationDetails.runner.end(); + /* falls through */ + case PRE_DIGEST_STATE: + activeAnimationsLookup.remove(child); + break; + } + } + }); + } + + function clearElementAnimationState(element) { + var node = getDomNode(element); + node.removeAttribute(NG_ANIMATE_ATTR_NAME); + activeAnimationsLookup.remove(node); + } + + function isMatchingElement(nodeOrElmA, nodeOrElmB) { + return getDomNode(nodeOrElmA) === getDomNode(nodeOrElmB); + } + + /** + * This fn returns false if any of the following is true: + * a) animations on any parent element are disabled, and animations on the element aren't explicitly allowed + * b) a parent element has an ongoing structural animation, and animateChildren is false + * c) the element is not a child of the body + * d) the element is not a child of the $rootElement + */ + function areAnimationsAllowed(element, parentElement, event) { + var bodyElement = jqLite($document[0].body); + var bodyElementDetected = isMatchingElement(element, bodyElement) || element[0].nodeName === 'HTML'; + var rootElementDetected = isMatchingElement(element, $rootElement); + var parentAnimationDetected = false; + var animateChildren; + var elementDisabled = disabledElementsLookup.get(getDomNode(element)); + + var parentHost = jqLite.data(element[0], NG_ANIMATE_PIN_DATA); + if (parentHost) { + parentElement = parentHost; + } + + parentElement = getDomNode(parentElement); + + while (parentElement) { + if (!rootElementDetected) { + // angular doesn't want to attempt to animate elements outside of the application + // therefore we need to ensure that the rootElement is an ancestor of the current element + rootElementDetected = isMatchingElement(parentElement, $rootElement); + } + + if (parentElement.nodeType !== ELEMENT_NODE) { + // no point in inspecting the #document element + break; + } + + var details = activeAnimationsLookup.get(parentElement) || {}; + // either an enter, leave or move animation will commence + // therefore we can't allow any animations to take place + // but if a parent animation is class-based then that's ok + if (!parentAnimationDetected) { + var parentElementDisabled = disabledElementsLookup.get(parentElement); + + if (parentElementDisabled === true && elementDisabled !== false) { + // disable animations if the user hasn't explicitly enabled animations on the + // current element + elementDisabled = true; + // element is disabled via parent element, no need to check anything else + break; + } else if (parentElementDisabled === false) { + elementDisabled = false; + } + parentAnimationDetected = details.structural; + } + + if (isUndefined(animateChildren) || animateChildren === true) { + var value = jqLite.data(parentElement, NG_ANIMATE_CHILDREN_DATA); + if (isDefined(value)) { + animateChildren = value; + } + } + + // there is no need to continue traversing at this point + if (parentAnimationDetected && animateChildren === false) break; + + if (!bodyElementDetected) { + // we also need to ensure that the element is or will be a part of the body element + // otherwise it is pointless to even issue an animation to be rendered + bodyElementDetected = isMatchingElement(parentElement, bodyElement); + } + + if (bodyElementDetected && rootElementDetected) { + // If both body and root have been found, any other checks are pointless, + // as no animation data should live outside the application + break; + } + + if (!rootElementDetected) { + // If no rootElement is detected, check if the parentElement is pinned to another element + parentHost = jqLite.data(parentElement, NG_ANIMATE_PIN_DATA); + if (parentHost) { + // The pin target element becomes the next parent element + parentElement = getDomNode(parentHost); + continue; + } + } + + parentElement = parentElement.parentNode; + } + + var allowAnimation = (!parentAnimationDetected || animateChildren) && elementDisabled !== true; + return allowAnimation && rootElementDetected && bodyElementDetected; + } + + function markElementAnimationState(element, state, details) { + details = details || {}; + details.state = state; + + var node = getDomNode(element); + node.setAttribute(NG_ANIMATE_ATTR_NAME, state); + + var oldValue = activeAnimationsLookup.get(node); + var newValue = oldValue + ? extend(oldValue, details) + : details; + activeAnimationsLookup.put(node, newValue); + } + }]; +}]; + +var $$AnimationProvider = ['$animateProvider', function($animateProvider) { + var NG_ANIMATE_REF_ATTR = 'ng-animate-ref'; + + var drivers = this.drivers = []; + + var RUNNER_STORAGE_KEY = '$$animationRunner'; + + function setRunner(element, runner) { + element.data(RUNNER_STORAGE_KEY, runner); + } + + function removeRunner(element) { + element.removeData(RUNNER_STORAGE_KEY); + } + + function getRunner(element) { + return element.data(RUNNER_STORAGE_KEY); + } + + this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$HashMap', '$$rAFScheduler', + function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$HashMap, $$rAFScheduler) { + + var animationQueue = []; + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + function sortAnimations(animations) { + var tree = { children: [] }; + var i, lookup = new $$HashMap(); + + // this is done first beforehand so that the hashmap + // is filled with a list of the elements that will be animated + for (i = 0; i < animations.length; i++) { + var animation = animations[i]; + lookup.put(animation.domNode, animations[i] = { + domNode: animation.domNode, + fn: animation.fn, + children: [] + }); + } + + for (i = 0; i < animations.length; i++) { + processNode(animations[i]); + } + + return flatten(tree); + + function processNode(entry) { + if (entry.processed) return entry; + entry.processed = true; + + var elementNode = entry.domNode; + var parentNode = elementNode.parentNode; + lookup.put(elementNode, entry); + + var parentEntry; + while (parentNode) { + parentEntry = lookup.get(parentNode); + if (parentEntry) { + if (!parentEntry.processed) { + parentEntry = processNode(parentEntry); + } + break; + } + parentNode = parentNode.parentNode; + } + + (parentEntry || tree).children.push(entry); + return entry; + } + + function flatten(tree) { + var result = []; + var queue = []; + var i; + + for (i = 0; i < tree.children.length; i++) { + queue.push(tree.children[i]); + } + + var remainingLevelEntries = queue.length; + var nextLevelEntries = 0; + var row = []; + + for (i = 0; i < queue.length; i++) { + var entry = queue[i]; + if (remainingLevelEntries <= 0) { + remainingLevelEntries = nextLevelEntries; + nextLevelEntries = 0; + result.push(row); + row = []; + } + row.push(entry.fn); + entry.children.forEach(function(childEntry) { + nextLevelEntries++; + queue.push(childEntry); + }); + remainingLevelEntries--; + } + + if (row.length) { + result.push(row); + } + + return result; + } + } + + // TODO(matsko): document the signature in a better way + return function(element, event, options) { + options = prepareAnimationOptions(options); + var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0; + + // there is no animation at the current moment, however + // these runner methods will get later updated with the + // methods leading into the driver's end/cancel methods + // for now they just stop the animation from starting + var runner = new $$AnimateRunner({ + end: function() { close(); }, + cancel: function() { close(true); } + }); + + if (!drivers.length) { + close(); + return runner; + } + + setRunner(element, runner); + + var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass)); + var tempClasses = options.tempClasses; + if (tempClasses) { + classes += ' ' + tempClasses; + options.tempClasses = null; + } + + var prepareClassName; + if (isStructural) { + prepareClassName = 'ng-' + event + PREPARE_CLASS_SUFFIX; + $$jqLite.addClass(element, prepareClassName); + } + + animationQueue.push({ + // this data is used by the postDigest code and passed into + // the driver step function + element: element, + classes: classes, + event: event, + structural: isStructural, + options: options, + beforeStart: beforeStart, + close: close + }); + + element.on('$destroy', handleDestroyedElement); + + // we only want there to be one function called within the post digest + // block. This way we can group animations for all the animations that + // were apart of the same postDigest flush call. + if (animationQueue.length > 1) return runner; + + $rootScope.$$postDigest(function() { + var animations = []; + forEach(animationQueue, function(entry) { + // the element was destroyed early on which removed the runner + // form its storage. This means we can't animate this element + // at all and it already has been closed due to destruction. + if (getRunner(entry.element)) { + animations.push(entry); + } else { + entry.close(); + } + }); + + // now any future animations will be in another postDigest + animationQueue.length = 0; + + var groupedAnimations = groupAnimations(animations); + var toBeSortedAnimations = []; + + forEach(groupedAnimations, function(animationEntry) { + toBeSortedAnimations.push({ + domNode: getDomNode(animationEntry.from ? animationEntry.from.element : animationEntry.element), + fn: function triggerAnimationStart() { + // it's important that we apply the `ng-animate` CSS class and the + // temporary classes before we do any driver invoking since these + // CSS classes may be required for proper CSS detection. + animationEntry.beforeStart(); + + var startAnimationFn, closeFn = animationEntry.close; + + // in the event that the element was removed before the digest runs or + // during the RAF sequencing then we should not trigger the animation. + var targetElement = animationEntry.anchors + ? (animationEntry.from.element || animationEntry.to.element) + : animationEntry.element; + + if (getRunner(targetElement)) { + var operation = invokeFirstDriver(animationEntry); + if (operation) { + startAnimationFn = operation.start; + } + } + + if (!startAnimationFn) { + closeFn(); + } else { + var animationRunner = startAnimationFn(); + animationRunner.done(function(status) { + closeFn(!status); + }); + updateAnimationRunners(animationEntry, animationRunner); + } + } + }); + }); + + // we need to sort each of the animations in order of parent to child + // relationships. This ensures that the child classes are applied at the + // right time. + $$rAFScheduler(sortAnimations(toBeSortedAnimations)); + }); + + return runner; + + // TODO(matsko): change to reference nodes + function getAnchorNodes(node) { + var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']'; + var items = node.hasAttribute(NG_ANIMATE_REF_ATTR) + ? [node] + : node.querySelectorAll(SELECTOR); + var anchors = []; + forEach(items, function(node) { + var attr = node.getAttribute(NG_ANIMATE_REF_ATTR); + if (attr && attr.length) { + anchors.push(node); + } + }); + return anchors; + } + + function groupAnimations(animations) { + var preparedAnimations = []; + var refLookup = {}; + forEach(animations, function(animation, index) { + var element = animation.element; + var node = getDomNode(element); + var event = animation.event; + var enterOrMove = ['enter', 'move'].indexOf(event) >= 0; + var anchorNodes = animation.structural ? getAnchorNodes(node) : []; + + if (anchorNodes.length) { + var direction = enterOrMove ? 'to' : 'from'; + + forEach(anchorNodes, function(anchor) { + var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR); + refLookup[key] = refLookup[key] || {}; + refLookup[key][direction] = { + animationID: index, + element: jqLite(anchor) + }; + }); + } else { + preparedAnimations.push(animation); + } + }); + + var usedIndicesLookup = {}; + var anchorGroups = {}; + forEach(refLookup, function(operations, key) { + var from = operations.from; + var to = operations.to; + + if (!from || !to) { + // only one of these is set therefore we can't have an + // anchor animation since all three pieces are required + var index = from ? from.animationID : to.animationID; + var indexKey = index.toString(); + if (!usedIndicesLookup[indexKey]) { + usedIndicesLookup[indexKey] = true; + preparedAnimations.push(animations[index]); + } + return; + } + + var fromAnimation = animations[from.animationID]; + var toAnimation = animations[to.animationID]; + var lookupKey = from.animationID.toString(); + if (!anchorGroups[lookupKey]) { + var group = anchorGroups[lookupKey] = { + structural: true, + beforeStart: function() { + fromAnimation.beforeStart(); + toAnimation.beforeStart(); + }, + close: function() { + fromAnimation.close(); + toAnimation.close(); + }, + classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes), + from: fromAnimation, + to: toAnimation, + anchors: [] // TODO(matsko): change to reference nodes + }; + + // the anchor animations require that the from and to elements both have at least + // one shared CSS class which effectively marries the two elements together to use + // the same animation driver and to properly sequence the anchor animation. + if (group.classes.length) { + preparedAnimations.push(group); + } else { + preparedAnimations.push(fromAnimation); + preparedAnimations.push(toAnimation); + } + } + + anchorGroups[lookupKey].anchors.push({ + 'out': from.element, 'in': to.element + }); + }); + + return preparedAnimations; + } + + function cssClassesIntersection(a,b) { + a = a.split(' '); + b = b.split(' '); + var matches = []; + + for (var i = 0; i < a.length; i++) { + var aa = a[i]; + if (aa.substring(0,3) === 'ng-') continue; + + for (var j = 0; j < b.length; j++) { + if (aa === b[j]) { + matches.push(aa); + break; + } + } + } + + return matches.join(' '); + } + + function invokeFirstDriver(animationDetails) { + // we loop in reverse order since the more general drivers (like CSS and JS) + // may attempt more elements, but custom drivers are more particular + for (var i = drivers.length - 1; i >= 0; i--) { + var driverName = drivers[i]; + if (!$injector.has(driverName)) continue; // TODO(matsko): remove this check + + var factory = $injector.get(driverName); + var driver = factory(animationDetails); + if (driver) { + return driver; + } + } + } + + function beforeStart() { + element.addClass(NG_ANIMATE_CLASSNAME); + if (tempClasses) { + $$jqLite.addClass(element, tempClasses); + } + if (prepareClassName) { + $$jqLite.removeClass(element, prepareClassName); + prepareClassName = null; + } + } + + function updateAnimationRunners(animation, newRunner) { + if (animation.from && animation.to) { + update(animation.from.element); + update(animation.to.element); + } else { + update(animation.element); + } + + function update(element) { + getRunner(element).setHost(newRunner); + } + } + + function handleDestroyedElement() { + var runner = getRunner(element); + if (runner && (event !== 'leave' || !options.$$domOperationFired)) { + runner.end(); + } + } + + function close(rejected) { // jshint ignore:line + element.off('$destroy', handleDestroyedElement); + removeRunner(element); + + applyAnimationClasses(element, options); + applyAnimationStyles(element, options); + options.domOperation(); + + if (tempClasses) { + $$jqLite.removeClass(element, tempClasses); + } + + element.removeClass(NG_ANIMATE_CLASSNAME); + runner.complete(!rejected); + } + }; + }]; +}]; + +/** + * @ngdoc directive + * @name ngAnimateSwap + * @restrict A + * @scope + * + * @description + * + * ngAnimateSwap is a animation-oriented directive that allows for the container to + * be removed and entered in whenever the associated expression changes. A + * common usecase for this directive is a rotating banner or slider component which + * contains one image being present at a time. When the active image changes + * then the old image will perform a `leave` animation and the new element + * will be inserted via an `enter` animation. + * + * @animations + * | Animation | Occurs | + * |----------------------------------|--------------------------------------| + * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM | + * | {@link ng.$animate#leave leave} | when the old element is removed from the DOM | + * + * @example + * + * + *
+ *
+ * {{ number }} + *
+ *
+ *
+ * + * angular.module('ngAnimateSwapExample', ['ngAnimate']) + * .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) { + * $scope.number = 0; + * $interval(function() { + * $scope.number++; + * }, 1000); + * + * var colors = ['red','blue','green','yellow','orange']; + * $scope.colorClass = function(number) { + * return colors[number % colors.length]; + * }; + * }]); + * + * + * .container { + * height:250px; + * width:250px; + * position:relative; + * overflow:hidden; + * border:2px solid black; + * } + * .container .cell { + * font-size:150px; + * text-align:center; + * line-height:250px; + * position:absolute; + * top:0; + * left:0; + * right:0; + * border-bottom:2px solid black; + * } + * .swap-animation.ng-enter, .swap-animation.ng-leave { + * transition:0.5s linear all; + * } + * .swap-animation.ng-enter { + * top:-250px; + * } + * .swap-animation.ng-enter-active { + * top:0px; + * } + * .swap-animation.ng-leave { + * top:0px; + * } + * .swap-animation.ng-leave-active { + * top:250px; + * } + * .red { background:red; } + * .green { background:green; } + * .blue { background:blue; } + * .yellow { background:yellow; } + * .orange { background:orange; } + * + *
+ */ +var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $rootScope) { + return { + restrict: 'A', + transclude: 'element', + terminal: true, + priority: 600, // we use 600 here to ensure that the directive is caught before others + link: function(scope, $element, attrs, ctrl, $transclude) { + var previousElement, previousScope; + scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) { + if (previousElement) { + $animate.leave(previousElement); + } + if (previousScope) { + previousScope.$destroy(); + previousScope = null; + } + if (value || value === 0) { + previousScope = scope.$new(); + $transclude(previousScope, function(element) { + previousElement = element; + $animate.enter(element, null, $element); + }); + } + }); + } + }; +}]; + +/* global angularAnimateModule: true, + + ngAnimateSwapDirective, + $$AnimateAsyncRunFactory, + $$rAFSchedulerFactory, + $$AnimateChildrenDirective, + $$AnimateQueueProvider, + $$AnimationProvider, + $AnimateCssProvider, + $$AnimateCssDriverProvider, + $$AnimateJsProvider, + $$AnimateJsDriverProvider, +*/ + +/** + * @ngdoc module + * @name ngAnimate + * @description + * + * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via + * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an Angular app. + * + *
+ * + * # Usage + * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based + * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For + * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within + * the HTML element that the animation will be triggered on. + * + * ## Directive Support + * The following directives are "animation aware": + * + * | Directive | Supported Animations | + * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| + * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move | + * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave | + * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave | + * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave | + * | {@link ng.directive:ngIf#animations ngIf} | enter and leave | + * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) | + * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) | + * | {@link ng.directive:form#animation-hooks form} & {@link ng.directive:ngModel#animation-hooks ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) | + * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) | + * | {@link module:ngMessages#animations ngMessage} | enter and leave | + * + * (More information can be found by visiting each the documentation associated with each directive.) + * + * ## CSS-based Animations + * + * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML + * and CSS code we can create an animation that will be picked up by Angular when an the underlying directive performs an operation. + * + * The example below shows how an `enter` animation can be made possible on an element using `ng-if`: + * + * ```html + *
+ * Fade me in out + *
+ * + * + * ``` + * + * Notice the CSS class **fade**? We can now create the CSS transition code that references this class: + * + * ```css + * /* The starting CSS styles for the enter animation */ + * .fade.ng-enter { + * transition:0.5s linear all; + * opacity:0; + * } + * + * /* The finishing CSS styles for the enter animation */ + * .fade.ng-enter.ng-enter-active { + * opacity:1; + * } + * ``` + * + * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two + * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition + * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards. + * + * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions: + * + * ```css + * /* now the element will fade out before it is removed from the DOM */ + * .fade.ng-leave { + * transition:0.5s linear all; + * opacity:1; + * } + * .fade.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class: + * + * ```css + * /* there is no need to define anything inside of the destination + * CSS class since the keyframe will take charge of the animation */ + * .fade.ng-leave { + * animation: my_fade_animation 0.5s linear; + * -webkit-animation: my_fade_animation 0.5s linear; + * } + * + * @keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * + * @-webkit-keyframes my_fade_animation { + * from { opacity:1; } + * to { opacity:0; } + * } + * ``` + * + * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element. + * + * ### CSS Class-based Animations + * + * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different + * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added + * and removed. + * + * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class: + * + * ```html + *
+ * Show and hide me + *
+ * + * + * + * ``` + * + * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since + * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest. + * + * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation + * with CSS styles. + * + * ```html + *
+ * Highlight this box + *
+ * + * + * + * ``` + * + * We can also make use of CSS keyframes by placing them within the CSS classes. + * + * + * ### 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 (versions >=1.2) 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 */ + * transition: 1s linear all; + * opacity:0; + * } + * .my-animation.ng-enter-stagger { + * /* this will have a 100ms delay between each successive leave animation */ + * transition-delay: 0.1s; + * + * /* As of 1.4.4, this must always be set: it signals ngAnimate + * to not accidentally inherit a delay property from another CSS class */ + * 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 one or more animation frames have passed since the multiple calls to `$animate` were 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 + * + * window.requestAnimationFrame(function() { + * //stagger has reset itself + * $animate.leave(kids[5]); //stagger index=0 + * $animate.leave(kids[6]); //stagger index=1 + * + * $scope.$digest(); + * }); + * ``` + * + * Stagger animations are currently only supported within CSS-defined animations. + * + * ### The `ng-animate` CSS class + * + * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation. + * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations). + * + * Therefore, animations can be applied to an element using this temporary class directly via CSS. + * + * ```css + * .zipper.ng-animate { + * transition:0.5s linear all; + * } + * .zipper.ng-enter { + * opacity:0; + * } + * .zipper.ng-enter.ng-enter-active { + * opacity:1; + * } + * .zipper.ng-leave { + * opacity:1; + * } + * .zipper.ng-leave.ng-leave-active { + * opacity:0; + * } + * ``` + * + * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove + * the CSS class once an animation has completed.) + * + * + * ### The `ng-[event]-prepare` class + * + * This is a special class that can be used to prevent unwanted flickering / flash of content before + * the actual animation starts. The class is added as soon as an animation is initialized, but removed + * before the actual animation starts (after waiting for a $digest). + * It is also only added for *structural* animations (`enter`, `move`, and `leave`). + * + * In practice, flickering can appear when nesting elements with structural animations such as `ngIf` + * into elements that have class-based animations such as `ngClass`. + * + * ```html + *
+ *
+ *
+ *
+ *
+ * ``` + * + * It is possible that during the `enter` animation, the `.message` div will be briefly visible before it starts animating. + * In that case, you can add styles to the CSS that make sure the element stays hidden before the animation starts: + * + * ```css + * .message.ng-enter-prepare { + * opacity: 0; + * } + * + * ``` + * + * ## JavaScript-based Animations + * + * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared + * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the + * `module.animation()` module function we can register the animation. + * + * Let's see an example of a enter/leave animation using `ngRepeat`: + * + * ```html + *
+ * {{ item }} + *
+ * ``` + * + * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`: + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * // make note that other events (like addClass/removeClass) + * // have different function input parameters + * enter: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * + * // remember to call doneFn so that angular + * // knows that the animation has concluded + * }, + * + * move: function(element, doneFn) { + * jQuery(element).fadeIn(1000, doneFn); + * }, + * + * leave: function(element, doneFn) { + * jQuery(element).fadeOut(1000, doneFn); + * } + * } + * }]); + * ``` + * + * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as + * greensock.js and velocity.js. + * + * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define + * our animations inside of the same registered animation, however, the function input arguments are a bit different: + * + * ```html + *
+ * this box is moody + *
+ * + * + * + * ``` + * + * ```js + * myModule.animation('.colorful', [function() { + * return { + * addClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * removeClass: function(element, className, doneFn) { + * // do some cool animation and call the doneFn + * }, + * setClass: function(element, addedClass, removedClass, doneFn) { + * // do some cool animation and call the doneFn + * } + * } + * }]); + * ``` + * + * ## CSS + JS Animations Together + * + * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular, + * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking + * charge of the animation**: + * + * ```html + *
+ * Slide in and out + *
+ * ``` + * + * ```js + * myModule.animation('.slide', [function() { + * return { + * enter: function(element, doneFn) { + * jQuery(element).slideIn(1000, doneFn); + * } + * } + * }]); + * ``` + * + * ```css + * .slide.ng-enter { + * transition:0.5s linear all; + * transform:translateY(-100px); + * } + * .slide.ng-enter.ng-enter-active { + * transform:translateY(0); + * } + * ``` + * + * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the + * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from + * our own JS-based animation code: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element) { +* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`. + * return $animateCss(element, { + * event: 'enter', + * structural: true + * }); + * } + * } + * }]); + * ``` + * + * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework. + * + * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or + * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that + * data into `$animateCss` directly: + * + * ```js + * myModule.animation('.slide', ['$animateCss', function($animateCss) { + * return { + * enter: function(element) { + * return $animateCss(element, { + * event: 'enter', + * structural: true, + * addClass: 'maroon-setting', + * from: { height:0 }, + * to: { height: 200 } + * }); + * } + * } + * }]); + * ``` + * + * Now we can fill in the rest via our transition CSS code: + * + * ```css + * /* the transition tells ngAnimate to make the animation happen */ + * .slide.ng-enter { transition:0.5s linear all; } + * + * /* this extra CSS class will be absorbed into the transition + * since the $animateCss code is adding the class */ + * .maroon-setting { background:red; } + * ``` + * + * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over. + * + * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}. + * + * ## Animation Anchoring (via `ng-animate-ref`) + * + * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between + * structural areas of an application (like views) by pairing up elements using an attribute + * called `ng-animate-ref`. + * + * Let's say for example we have two views that are managed by `ng-view` and we want to show + * that there is a relationship between two components situated in within these views. By using the + * `ng-animate-ref` attribute we can identify that the two components are paired together and we + * can then attach an animation, which is triggered when the view changes. + * + * Say for example we have the following template code: + * + * ```html + * + *
+ *
+ * + * + * + * + * + * + * + * + * ``` + * + * Now, when the view changes (once the link is clicked), ngAnimate will examine the + * HTML contents to see if there is a match reference between any components in the view + * that is leaving and the view that is entering. It will scan both the view which is being + * removed (leave) and inserted (enter) to see if there are any paired DOM elements that + * contain a matching ref value. + * + * The two images match since they share the same ref value. ngAnimate will now create a + * transport element (which is a clone of the first image element) and it will then attempt + * to animate to the position of the second image element in the next view. For the animation to + * work a special CSS class called `ng-anchor` will be added to the transported element. + * + * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then + * ngAnimate will handle the entire transition for us as well as the addition and removal of + * any changes of CSS classes between the elements: + * + * ```css + * .banner.ng-anchor { + * /* this animation will last for 1 second since there are + * two phases to the animation (an `in` and an `out` phase) */ + * transition:0.5s linear all; + * } + * ``` + * + * We also **must** include animations for the views that are being entered and removed + * (otherwise anchoring wouldn't be possible since the new view would be inserted right away). + * + * ```css + * .view-animation.ng-enter, .view-animation.ng-leave { + * transition:0.5s linear all; + * position:fixed; + * left:0; + * top:0; + * width:100%; + * } + * .view-animation.ng-enter { + * transform:translateX(100%); + * } + * .view-animation.ng-leave, + * .view-animation.ng-enter.ng-enter-active { + * transform:translateX(0%); + * } + * .view-animation.ng-leave.ng-leave-active { + * transform:translateX(-100%); + * } + * ``` + * + * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur: + * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away + * from its origin. Once that animation is over then the `in` stage occurs which animates the + * element to its destination. The reason why there are two animations is to give enough time + * for the enter animation on the new element to be ready. + * + * The example above sets up a transition for both the in and out phases, but we can also target the out or + * in phases directly via `ng-anchor-out` and `ng-anchor-in`. + * + * ```css + * .banner.ng-anchor-out { + * transition: 0.5s linear all; + * + * /* the scale will be applied during the out animation, + * but will be animated away when the in animation runs */ + * transform: scale(1.2); + * } + * + * .banner.ng-anchor-in { + * transition: 1s linear all; + * } + * ``` + * + * + * + * + * ### Anchoring Demo + * + + + Home +
+
+
+
+
+ + angular.module('anchoringExample', ['ngAnimate', 'ngRoute']) + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/', { + templateUrl: 'home.html', + controller: 'HomeController as home' + }); + $routeProvider.when('/profile/:id', { + templateUrl: 'profile.html', + controller: 'ProfileController as profile' + }); + }]) + .run(['$rootScope', function($rootScope) { + $rootScope.records = [ + { id:1, title: "Miss Beulah Roob" }, + { id:2, title: "Trent Morissette" }, + { id:3, title: "Miss Ava Pouros" }, + { id:4, title: "Rod Pouros" }, + { id:5, title: "Abdul Rice" }, + { id:6, title: "Laurie Rutherford Sr." }, + { id:7, title: "Nakia McLaughlin" }, + { id:8, title: "Jordon Blanda DVM" }, + { id:9, title: "Rhoda Hand" }, + { id:10, title: "Alexandrea Sauer" } + ]; + }]) + .controller('HomeController', [function() { + //empty + }]) + .controller('ProfileController', ['$rootScope', '$routeParams', function($rootScope, $routeParams) { + var index = parseInt($routeParams.id, 10); + var record = $rootScope.records[index - 1]; + + this.title = record.title; + this.id = record.id; + }]); + + +

Welcome to the home page

+

Please click on an element

+ + {{ record.title }} + +
+ +
+ {{ profile.title }} +
+
+ + .record { + display:block; + font-size:20px; + } + .profile { + background:black; + color:white; + font-size:100px; + } + .view-container { + position:relative; + } + .view-container > .view.ng-animate { + position:absolute; + top:0; + left:0; + width:100%; + min-height:500px; + } + .view.ng-enter, .view.ng-leave, + .record.ng-anchor { + transition:0.5s linear all; + } + .view.ng-enter { + transform:translateX(100%); + } + .view.ng-enter.ng-enter-active, .view.ng-leave { + transform:translateX(0%); + } + .view.ng-leave.ng-leave-active { + transform:translateX(-100%); + } + .record.ng-anchor-out { + background:red; + } + +
+ * + * ### How is the element transported? + * + * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting + * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element + * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The + * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match + * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied + * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class + * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element + * will become visible since the shim class will be removed. + * + * ### How is the morphing handled? + * + * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out + * what CSS classes differ between the starting element and the destination element. These different CSS classes + * will be added/removed on the anchor element and a transition will be applied (the transition that is provided + * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will + * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that + * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since + * the cloned element is placed inside of root element which is likely close to the body element). + * + * Note that if the root element is on the `` element then the cloned node will be placed inside of body. + * + * + * ## Using $animate in your directive code + * + * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application? + * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's + * imagine we have a greeting box that shows and hides itself when the data changes + * + * ```html + * Hi there + * ``` + * + * ```js + * ngModule.directive('greetingBox', ['$animate', function($animate) { + * return function(scope, element, attrs) { + * attrs.$observe('active', function(value) { + * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on'); + * }); + * }); + * }]); + * ``` + * + * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element + * in our HTML code then we can trigger a CSS or JS animation to happen. + * + * ```css + * /* normally we would create a CSS class to reference on the element */ + * greeting-box.on { transition:0.5s linear all; background:green; color:white; } + * ``` + * + * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's + * possible be sure to visit the {@link ng.$animate $animate service API page}. + * + * + * ## Callbacks and Promises + * + * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger + * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has + * ended by chaining onto the returned promise that animation method returns. + * + * ```js + * // somewhere within the depths of the directive + * $animate.enter(element, parent).then(function() { + * //the animation has completed + * }); + * ``` + * + * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case + * anymore.) + * + * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering + * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view + * routing controller to hook into that: + * + * ```js + * ngModule.controller('HomePageController', ['$animate', function($animate) { + * $animate.on('enter', ngViewElement, function(element) { + * // the animation for this route has completed + * }]); + * }]) + * ``` + * + * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.) + */ + +/** + * @ngdoc service + * @name $animate + * @kind object + * + * @description + * The ngAnimate `$animate` service documentation is the same for the core `$animate` service. + * + * Click here {@link ng.$animate to learn more about animations with `$animate`}. + */ +angular.module('ngAnimate', []) + .directive('ngAnimateSwap', ngAnimateSwapDirective) + + .directive('ngAnimateChildren', $$AnimateChildrenDirective) + .factory('$$rAFScheduler', $$rAFSchedulerFactory) + + .provider('$$animateQueue', $$AnimateQueueProvider) + .provider('$$animation', $$AnimationProvider) + + .provider('$animateCss', $AnimateCssProvider) + .provider('$$animateCssDriver', $$AnimateCssDriverProvider) + + .provider('$$animateJs', $$AnimateJsProvider) + .provider('$$animateJsDriver', $$AnimateJsDriverProvider); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-animate.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-animate.min.js new file mode 100644 index 00000000..a7d2f272 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-animate.min.js @@ -0,0 +1,56 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(S,q){'use strict';function Aa(a,b,c){if(!a)throw Ma("areq",b||"?",c||"required");return a}function Ba(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function Na(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function X(a,b,c){var d="";a=ba(a)?a:a&&P(a)&&a.length?a.split(/\s+/):[];r(a,function(a,f){a&&0=a&&(a=e,e=0,b.push(f),f=[]);f.push(x.fn);x.children.forEach(function(a){e++;c.push(a)});a--}f.length&&b.push(f);return b}(c)}var I=[],q=U(a);return function(u,B,w){function x(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];r(a,function(a){var c= +a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function R(a){var b=[],c={};r(a,function(a,g){var d=D(a.element),e=0<=["enter","move"].indexOf(a.event),d=a.structural?x(d):[];if(d.length){var k=e?"to":"from";r(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][k]={animationID:g,element:G(a)}})}else b.push(a)});var d={},e={};r(c,function(c,h){var k=c.from,f=c.to;if(k&&f){var p=a[k.animationID],y=a[f.animationID],l=k.animationID.toString();if(!e[l]){var x=e[l]= +{structural:!0,beforeStart:function(){p.beforeStart();y.beforeStart()},close:function(){p.close();y.close()},classes:J(p.classes,y.classes),from:p,to:y,anchors:[]};x.classes.length?b.push(x):(b.push(p),b.push(y))}e[l].anchors.push({out:k.element,"in":f.element})}else k=k?k.animationID:f.animationID,f=k.toString(),d[f]||(d[f]=!0,b.push(a[k]))});return b}function J(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d=S&&b>=m&&(G=!0,l())}function H(){function b(){if(!R){K(!1);r(A,function(a){h.style[a[0]]=a[1]});x(a,g);e.addClass(a,da);if(n.recalculateTimingStyles){na=h.className+" "+fa;ja=q(h,na);E=w(h,na,ja);$=E.maxDelay;ha=Math.max($,0);m=E.maxDuration;if(0===m){l();return}n.hasTransitions= +0p.expectedEndTime)?z.cancel(p.timer):f.push(l)}s&&(H=z(c,H,!1),f[0]={timer:H,expectedEndTime:d},f.push(l),a.data("$$animateCss",f));if(ea.length)a.on(ea.join(" "),y);g.to&&(g.cleanupStyles&&Ia(J,h,Object.keys(g.to)),Da(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;dARIA](http://www.w3.org/TR/wai-aria/) + * attributes that convey state or semantic information about the application for users + * of assistive technologies, such as screen readers. + * + *
+ * + * ## Usage + * + * For ngAria to do its magic, simply include the module `ngAria` as a dependency. The following + * directives are supported: + * `ngModel`, `ngChecked`, `ngReadonly`, `ngRequired`, `ngValue`, `ngDisabled`, `ngShow`, `ngHide`, `ngClick`, + * `ngDblClick`, and `ngMessages`. + * + * Below is a more detailed breakdown of the attributes handled by ngAria: + * + * | Directive | Supported Attributes | + * |---------------------------------------------|----------------------------------------------------------------------------------------| + * | {@link ng.directive:ngModel ngModel} | aria-checked, aria-valuemin, aria-valuemax, aria-valuenow, aria-invalid, aria-required, input roles | + * | {@link ng.directive:ngDisabled ngDisabled} | aria-disabled | + * | {@link ng.directive:ngRequired ngRequired} | aria-required + * | {@link ng.directive:ngChecked ngChecked} | aria-checked + * | {@link ng.directive:ngReadonly ngReadonly} | aria-readonly || + * | {@link ng.directive:ngValue ngValue} | aria-checked | + * | {@link ng.directive:ngShow ngShow} | aria-hidden | + * | {@link ng.directive:ngHide ngHide} | aria-hidden | + * | {@link ng.directive:ngDblclick ngDblclick} | tabindex | + * | {@link module:ngMessages ngMessages} | aria-live | + * | {@link ng.directive:ngClick ngClick} | tabindex, keypress event, button role | + * + * Find out more information about each directive by reading the + * {@link guide/accessibility ngAria Developer Guide}. + * + * ##Example + * Using ngDisabled with ngAria: + * ```html + * + * ``` + * Becomes: + * ```html + * + * ``` + * + * ##Disabling Attributes + * It's possible to disable individual attributes added by ngAria with the + * {@link ngAria.$ariaProvider#config config} method. For more details, see the + * {@link guide/accessibility Developer Guide}. + */ + /* global -ngAriaModule */ +var ngAriaModule = angular.module('ngAria', ['ng']). + provider('$aria', $AriaProvider); + +/** +* Internal Utilities +*/ +var nodeBlackList = ['BUTTON', 'A', 'INPUT', 'TEXTAREA', 'SELECT', 'DETAILS', 'SUMMARY']; + +var isNodeOneOf = function(elem, nodeTypeArray) { + if (nodeTypeArray.indexOf(elem[0].nodeName) !== -1) { + return true; + } +}; +/** + * @ngdoc provider + * @name $ariaProvider + * + * @description + * + * Used for configuring the ARIA attributes injected and managed by ngAria. + * + * ```js + * angular.module('myApp', ['ngAria'], function config($ariaProvider) { + * $ariaProvider.config({ + * ariaValue: true, + * tabindex: false + * }); + * }); + *``` + * + * ## Dependencies + * Requires the {@link ngAria} module to be installed. + * + */ +function $AriaProvider() { + var config = { + ariaHidden: true, + ariaChecked: true, + ariaReadonly: true, + ariaDisabled: true, + ariaRequired: true, + ariaInvalid: true, + ariaValue: true, + tabindex: true, + bindKeypress: true, + bindRoleForClick: true + }; + + /** + * @ngdoc method + * @name $ariaProvider#config + * + * @param {object} config object to enable/disable specific ARIA attributes + * + * - **ariaHidden** – `{boolean}` – Enables/disables aria-hidden tags + * - **ariaChecked** – `{boolean}` – Enables/disables aria-checked tags + * - **ariaReadonly** – `{boolean}` – Enables/disables aria-readonly tags + * - **ariaDisabled** – `{boolean}` – Enables/disables aria-disabled tags + * - **ariaRequired** – `{boolean}` – Enables/disables aria-required tags + * - **ariaInvalid** – `{boolean}` – Enables/disables aria-invalid tags + * - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags + * - **tabindex** – `{boolean}` – Enables/disables tabindex tags + * - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on `div` and + * `li` elements with ng-click + * - **bindRoleForClick** – `{boolean}` – Adds role=button to non-interactive elements like `div` + * using ng-click, making them more accessible to users of assistive technologies + * + * @description + * Enables/disables various ARIA attributes + */ + this.config = function(newConfig) { + config = angular.extend(config, newConfig); + }; + + function watchExpr(attrName, ariaAttr, nodeBlackList, negate) { + return function(scope, elem, attr) { + var ariaCamelName = attr.$normalize(ariaAttr); + if (config[ariaCamelName] && !isNodeOneOf(elem, nodeBlackList) && !attr[ariaCamelName]) { + scope.$watch(attr[attrName], function(boolVal) { + // ensure boolean value + boolVal = negate ? !boolVal : !!boolVal; + elem.attr(ariaAttr, boolVal); + }); + } + }; + } + /** + * @ngdoc service + * @name $aria + * + * @description + * @priority 200 + * + * The $aria service contains helper methods for applying common + * [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives. + * + * ngAria injects common accessibility attributes that tell assistive technologies when HTML + * elements are enabled, selected, hidden, and more. To see how this is performed with ngAria, + * let's review a code snippet from ngAria itself: + * + *```js + * ngAriaModule.directive('ngDisabled', ['$aria', function($aria) { + * return $aria.$$watchExpr('ngDisabled', 'aria-disabled', nodeBlackList, false); + * }]) + *``` + * Shown above, the ngAria module creates a directive with the same signature as the + * traditional `ng-disabled` directive. But this ngAria version is dedicated to + * solely managing accessibility attributes on custom elements. The internal `$aria` service is + * used to watch the boolean attribute `ngDisabled`. If it has not been explicitly set by the + * developer, `aria-disabled` is injected as an attribute with its value synchronized to the + * value in `ngDisabled`. + * + * Because ngAria hooks into the `ng-disabled` directive, developers do not have to do + * anything to enable this feature. The `aria-disabled` attribute is automatically managed + * simply as a silent side-effect of using `ng-disabled` with the ngAria module. + * + * The full list of directives that interface with ngAria: + * * **ngModel** + * * **ngChecked** + * * **ngReadonly** + * * **ngRequired** + * * **ngDisabled** + * * **ngValue** + * * **ngShow** + * * **ngHide** + * * **ngClick** + * * **ngDblclick** + * * **ngMessages** + * + * Read the {@link guide/accessibility ngAria Developer Guide} for a thorough explanation of each + * directive. + * + * + * ## Dependencies + * Requires the {@link ngAria} module to be installed. + */ + this.$get = function() { + return { + config: function(key) { + return config[key]; + }, + $$watchExpr: watchExpr + }; + }; +} + + +ngAriaModule.directive('ngShow', ['$aria', function($aria) { + return $aria.$$watchExpr('ngShow', 'aria-hidden', [], true); +}]) +.directive('ngHide', ['$aria', function($aria) { + return $aria.$$watchExpr('ngHide', 'aria-hidden', [], false); +}]) +.directive('ngValue', ['$aria', function($aria) { + return $aria.$$watchExpr('ngValue', 'aria-checked', nodeBlackList, false); +}]) +.directive('ngChecked', ['$aria', function($aria) { + return $aria.$$watchExpr('ngChecked', 'aria-checked', nodeBlackList, false); +}]) +.directive('ngReadonly', ['$aria', function($aria) { + return $aria.$$watchExpr('ngReadonly', 'aria-readonly', nodeBlackList, false); +}]) +.directive('ngRequired', ['$aria', function($aria) { + return $aria.$$watchExpr('ngRequired', 'aria-required', nodeBlackList, false); +}]) +.directive('ngModel', ['$aria', function($aria) { + + function shouldAttachAttr(attr, normalizedAttr, elem, allowBlacklistEls) { + return $aria.config(normalizedAttr) && !elem.attr(attr) && (allowBlacklistEls || !isNodeOneOf(elem, nodeBlackList)); + } + + function shouldAttachRole(role, elem) { + // if element does not have role attribute + // AND element type is equal to role (if custom element has a type equaling shape) <-- remove? + // AND element is not INPUT + return !elem.attr('role') && (elem.attr('type') === role) && (elem[0].nodeName !== 'INPUT'); + } + + function getShape(attr, elem) { + var type = attr.type, + role = attr.role; + + return ((type || role) === 'checkbox' || role === 'menuitemcheckbox') ? 'checkbox' : + ((type || role) === 'radio' || role === 'menuitemradio') ? 'radio' : + (type === 'range' || role === 'progressbar' || role === 'slider') ? 'range' : ''; + } + + return { + restrict: 'A', + require: 'ngModel', + priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value + compile: function(elem, attr) { + var shape = getShape(attr, elem); + + return { + pre: function(scope, elem, attr, ngModel) { + if (shape === 'checkbox') { + //Use the input[checkbox] $isEmpty implementation for elements with checkbox roles + ngModel.$isEmpty = function(value) { + return value === false; + }; + } + }, + post: function(scope, elem, attr, ngModel) { + var needsTabIndex = shouldAttachAttr('tabindex', 'tabindex', elem, false); + + function ngAriaWatchModelValue() { + return ngModel.$modelValue; + } + + function getRadioReaction(newVal) { + var boolVal = (attr.value == ngModel.$viewValue); + elem.attr('aria-checked', boolVal); + } + + function getCheckboxReaction() { + elem.attr('aria-checked', !ngModel.$isEmpty(ngModel.$viewValue)); + } + + switch (shape) { + case 'radio': + case 'checkbox': + if (shouldAttachRole(shape, elem)) { + elem.attr('role', shape); + } + if (shouldAttachAttr('aria-checked', 'ariaChecked', elem, false)) { + scope.$watch(ngAriaWatchModelValue, shape === 'radio' ? + getRadioReaction : getCheckboxReaction); + } + if (needsTabIndex) { + elem.attr('tabindex', 0); + } + break; + case 'range': + if (shouldAttachRole(shape, elem)) { + elem.attr('role', 'slider'); + } + if ($aria.config('ariaValue')) { + var needsAriaValuemin = !elem.attr('aria-valuemin') && + (attr.hasOwnProperty('min') || attr.hasOwnProperty('ngMin')); + var needsAriaValuemax = !elem.attr('aria-valuemax') && + (attr.hasOwnProperty('max') || attr.hasOwnProperty('ngMax')); + var needsAriaValuenow = !elem.attr('aria-valuenow'); + + if (needsAriaValuemin) { + attr.$observe('min', function ngAriaValueMinReaction(newVal) { + elem.attr('aria-valuemin', newVal); + }); + } + if (needsAriaValuemax) { + attr.$observe('max', function ngAriaValueMinReaction(newVal) { + elem.attr('aria-valuemax', newVal); + }); + } + if (needsAriaValuenow) { + scope.$watch(ngAriaWatchModelValue, function ngAriaValueNowReaction(newVal) { + elem.attr('aria-valuenow', newVal); + }); + } + } + if (needsTabIndex) { + elem.attr('tabindex', 0); + } + break; + } + + if (!attr.hasOwnProperty('ngRequired') && ngModel.$validators.required + && shouldAttachAttr('aria-required', 'ariaRequired', elem, false)) { + // ngModel.$error.required is undefined on custom controls + attr.$observe('required', function() { + elem.attr('aria-required', !!attr['required']); + }); + } + + if (shouldAttachAttr('aria-invalid', 'ariaInvalid', elem, true)) { + scope.$watch(function ngAriaInvalidWatch() { + return ngModel.$invalid; + }, function ngAriaInvalidReaction(newVal) { + elem.attr('aria-invalid', !!newVal); + }); + } + } + }; + } + }; +}]) +.directive('ngDisabled', ['$aria', function($aria) { + return $aria.$$watchExpr('ngDisabled', 'aria-disabled', nodeBlackList, false); +}]) +.directive('ngMessages', function() { + return { + restrict: 'A', + require: '?ngMessages', + link: function(scope, elem, attr, ngMessages) { + if (!elem.attr('aria-live')) { + elem.attr('aria-live', 'assertive'); + } + } + }; +}) +.directive('ngClick',['$aria', '$parse', function($aria, $parse) { + return { + restrict: 'A', + compile: function(elem, attr) { + var fn = $parse(attr.ngClick, /* interceptorFn */ null, /* expensiveChecks */ true); + return function(scope, elem, attr) { + + if (!isNodeOneOf(elem, nodeBlackList)) { + + if ($aria.config('bindRoleForClick') && !elem.attr('role')) { + elem.attr('role', 'button'); + } + + if ($aria.config('tabindex') && !elem.attr('tabindex')) { + elem.attr('tabindex', 0); + } + + if ($aria.config('bindKeypress') && !attr.ngKeypress) { + elem.on('keypress', function(event) { + var keyCode = event.which || event.keyCode; + if (keyCode === 32 || keyCode === 13) { + scope.$apply(callback); + } + + function callback() { + fn(scope, { $event: event }); + } + }); + } + } + }; + } + }; +}]) +.directive('ngDblclick', ['$aria', function($aria) { + return function(scope, elem, attr) { + if ($aria.config('tabindex') && !elem.attr('tabindex') && !isNodeOneOf(elem, nodeBlackList)) { + elem.attr('tabindex', 0); + } + }; +}]); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-aria.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-aria.min.js new file mode 100644 index 00000000..274cce2f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-aria.min.js @@ -0,0 +1,14 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(t,p){'use strict';var b="BUTTON A INPUT TEXTAREA SELECT DETAILS SUMMARY".split(" "),l=function(a,c){if(-1!==c.indexOf(a[0].nodeName))return!0};p.module("ngAria",["ng"]).provider("$aria",function(){function a(a,b,m,h){return function(d,f,e){var q=e.$normalize(b);!c[q]||l(f,m)||e[q]||d.$watch(e[a],function(a){a=h?!a:!!a;f.attr(b,a)})}}var c={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0,bindRoleForClick:!0}; +this.config=function(a){c=p.extend(c,a)};this.$get=function(){return{config:function(a){return c[a]},$$watchExpr:a}}}).directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(a){return a.$$watchExpr("ngValue","aria-checked",b,!1)}]).directive("ngChecked",["$aria",function(a){return a.$$watchExpr("ngChecked","aria-checked",b,!1)}]).directive("ngReadonly", +["$aria",function(a){return a.$$watchExpr("ngReadonly","aria-readonly",b,!1)}]).directive("ngRequired",["$aria",function(a){return a.$$watchExpr("ngRequired","aria-required",b,!1)}]).directive("ngModel",["$aria",function(a){function c(c,h,d,f){return a.config(h)&&!d.attr(c)&&(f||!l(d,b))}function g(a,c){return!c.attr("role")&&c.attr("type")===a&&"INPUT"!==c[0].nodeName}function k(a,c){var d=a.type,f=a.role;return"checkbox"===(d||f)||"menuitemcheckbox"===f?"checkbox":"radio"===(d||f)||"menuitemradio"=== +f?"radio":"range"===d||"progressbar"===f||"slider"===f?"range":""}return{restrict:"A",require:"ngModel",priority:200,compile:function(b,h){var d=k(h,b);return{pre:function(a,e,c,b){"checkbox"===d&&(b.$isEmpty=function(a){return!1===a})},post:function(f,e,b,n){function h(){return n.$modelValue}function k(a){e.attr("aria-checked",b.value==n.$viewValue)}function l(){e.attr("aria-checked",!n.$isEmpty(n.$viewValue))}var m=c("tabindex","tabindex",e,!1);switch(d){case "radio":case "checkbox":g(d,e)&&e.attr("role", +d);c("aria-checked","ariaChecked",e,!1)&&f.$watch(h,"radio"===d?k:l);m&&e.attr("tabindex",0);break;case "range":g(d,e)&&e.attr("role","slider");if(a.config("ariaValue")){var p=!e.attr("aria-valuemin")&&(b.hasOwnProperty("min")||b.hasOwnProperty("ngMin")),r=!e.attr("aria-valuemax")&&(b.hasOwnProperty("max")||b.hasOwnProperty("ngMax")),s=!e.attr("aria-valuenow");p&&b.$observe("min",function(a){e.attr("aria-valuemin",a)});r&&b.$observe("max",function(a){e.attr("aria-valuemax",a)});s&&f.$watch(h,function(a){e.attr("aria-valuenow", +a)})}m&&e.attr("tabindex",0)}!b.hasOwnProperty("ngRequired")&&n.$validators.required&&c("aria-required","ariaRequired",e,!1)&&b.$observe("required",function(){e.attr("aria-required",!!b.required)});c("aria-invalid","ariaInvalid",e,!0)&&f.$watch(function(){return n.$invalid},function(a){e.attr("aria-invalid",!!a)})}}}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled",b,!1)}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages", +link:function(a,b,g,k){b.attr("aria-live")||b.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,c){return{restrict:"A",compile:function(g,k){var m=c(k.ngClick,null,!0);return function(c,d,f){if(!l(d,b)&&(a.config("bindRoleForClick")&&!d.attr("role")&&d.attr("role","button"),a.config("tabindex")&&!d.attr("tabindex")&&d.attr("tabindex",0),a.config("bindKeypress")&&!f.ngKeypress))d.on("keypress",function(a){function b(){m(c,{$event:a})}var d=a.which||a.keyCode;32!==d&& +13!==d||c.$apply(b)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(c,g,k){!a.config("tabindex")||g.attr("tabindex")||l(g,b)||g.attr("tabindex",0)}}])})(window,window.angular); +//# sourceMappingURL=angular-aria.min.js.map diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-aria.min.js.map b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-aria.min.js.map new file mode 100644 index 00000000..925779ba --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-aria.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-aria.min.js", +"lineCount":13, +"mappings":"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", +"sources":["angular-aria.js"], +"names":["window","angular","nodeBlackList","isNodeOneOf","elem","nodeTypeArray","indexOf","nodeName","module","provider","ngAriaModule","$AriaProvider","watchExpr","attrName","ariaAttr","negate","scope","attr","ariaCamelName","$normalize","config","$watch","boolVal","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeypress","bindRoleForClick","this.config","newConfig","extend","$get","this.$get","key","$$watchExpr","directive","$aria","shouldAttachAttr","normalizedAttr","allowBlacklistEls","shouldAttachRole","role","getShape","type","restrict","require","priority","compile","shape","pre","ngModel","$isEmpty","ngModel.$isEmpty","value","post","ngAriaWatchModelValue","$modelValue","getRadioReaction","newVal","$viewValue","getCheckboxReaction","needsTabIndex","needsAriaValuemin","hasOwnProperty","needsAriaValuemax","needsAriaValuenow","$observe","ngAriaValueMinReaction","ngAriaValueNowReaction","$validators","required","ngAriaInvalidWatch","$invalid","ngAriaInvalidReaction","link","ngMessages","$parse","fn","ngClick","ngKeypress","on","event","callback","$event","keyCode","which","$apply"] +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.js new file mode 100644 index 00000000..435a1052 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.js @@ -0,0 +1,322 @@ +/** + * @license AngularJS v1.5.5 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) {'use strict'; + +/** + * @ngdoc module + * @name ngCookies + * @description + * + * # ngCookies + * + * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies. + * + * + *
+ * + * See {@link ngCookies.$cookies `$cookies`} for usage. + */ + + +angular.module('ngCookies', ['ng']). + /** + * @ngdoc provider + * @name $cookiesProvider + * @description + * Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service. + * */ + provider('$cookies', [function $CookiesProvider() { + /** + * @ngdoc property + * @name $cookiesProvider#defaults + * @description + * + * Object containing default options to pass when setting cookies. + * + * The object may have following properties: + * + * - **path** - `{string}` - The cookie will be available only for this path and its + * sub-paths. By default, this is the URL that appears in your `` tag. + * - **domain** - `{string}` - The cookie will be available only for this domain and + * its sub-domains. For security reasons the user agent will not accept the cookie + * if the current domain is not a sub-domain of this domain or equal to it. + * - **expires** - `{string|Date}` - String of the form "Wdy, DD Mon YYYY HH:MM:SS GMT" + * or a Date object indicating the exact date/time this cookie will expire. + * - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a + * secured connection. + * + * Note: By default, the address that appears in your `` tag will be used as the path. + * This is important so that cookies will be visible for all routes when html5mode is enabled. + * + **/ + var defaults = this.defaults = {}; + + function calcOptions(options) { + return options ? angular.extend({}, defaults, options) : defaults; + } + + /** + * @ngdoc service + * @name $cookies + * + * @description + * Provides read/write access to browser's cookies. + * + *
+ * Up until Angular 1.3, `$cookies` exposed properties that represented the + * current browser cookie values. In version 1.4, this behavior has changed, and + * `$cookies` now provides a standard api of getters, setters etc. + *
+ * + * 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.get('myFavorite'); + * // Setting a cookie + * $cookies.put('myFavorite', 'oatmeal'); + * }]); + * ``` + */ + this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) { + return { + /** + * @ngdoc method + * @name $cookies#get + * + * @description + * Returns the value of given cookie key + * + * @param {string} key Id to use for lookup. + * @returns {string} Raw cookie value. + */ + get: function(key) { + return $$cookieReader()[key]; + }, + + /** + * @ngdoc method + * @name $cookies#getObject + * + * @description + * Returns the deserialized value of given cookie key + * + * @param {string} key Id to use for lookup. + * @returns {Object} Deserialized cookie value. + */ + getObject: function(key) { + var value = this.get(key); + return value ? angular.fromJson(value) : value; + }, + + /** + * @ngdoc method + * @name $cookies#getAll + * + * @description + * Returns a key value object with all the cookies + * + * @returns {Object} All cookies + */ + getAll: function() { + return $$cookieReader(); + }, + + /** + * @ngdoc method + * @name $cookies#put + * + * @description + * Sets a value for given cookie key + * + * @param {string} key Id for the `value`. + * @param {string} value Raw value to be stored. + * @param {Object=} options Options object. + * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults} + */ + put: function(key, value, options) { + $$cookieWriter(key, value, calcOptions(options)); + }, + + /** + * @ngdoc method + * @name $cookies#putObject + * + * @description + * Serializes and sets a value for given cookie key + * + * @param {string} key Id for the `value`. + * @param {Object} value Value to be stored. + * @param {Object=} options Options object. + * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults} + */ + putObject: function(key, value, options) { + this.put(key, angular.toJson(value), options); + }, + + /** + * @ngdoc method + * @name $cookies#remove + * + * @description + * Remove given cookie + * + * @param {string} key Id of the key-value pair to delete. + * @param {Object=} options Options object. + * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults} + */ + remove: function(key, options) { + $$cookieWriter(key, undefined, calcOptions(options)); + } + }; + }]; + }]); + +angular.module('ngCookies'). +/** + * @ngdoc service + * @name $cookieStore + * @deprecated + * @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. + * + *
+ * **Note:** The $cookieStore service is **deprecated**. + * Please use the {@link ngCookies.$cookies `$cookies`} service instead. + *
+ * + * @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, undefined if the cookie does not exist. + */ + get: function(key) { + return $cookies.getObject(key); + }, + + /** + * @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.putObject(key, value); + }, + + /** + * @ngdoc method + * @name $cookieStore#remove + * + * @description + * Remove given cookie + * + * @param {string} key Id of the key-value pair to delete. + */ + remove: function(key) { + $cookies.remove(key); + } + }; + + }]); + +/** + * @name $$cookieWriter + * @requires $document + * + * @description + * This is a private service for writing cookies + * + * @param {string} name Cookie name + * @param {string=} value Cookie value (if undefined, cookie will be deleted) + * @param {Object=} options Object with options that need to be stored for the cookie. + */ +function $$CookieWriter($document, $log, $browser) { + var cookiePath = $browser.baseHref(); + var rawDocument = $document[0]; + + function buildCookieString(name, value, options) { + var path, expires; + options = options || {}; + expires = options.expires; + path = angular.isDefined(options.path) ? options.path : cookiePath; + if (angular.isUndefined(value)) { + expires = 'Thu, 01 Jan 1970 00:00:00 GMT'; + value = ''; + } + if (angular.isString(expires)) { + expires = new Date(expires); + } + + var str = encodeURIComponent(name) + '=' + encodeURIComponent(value); + str += path ? ';path=' + path : ''; + str += options.domain ? ';domain=' + options.domain : ''; + str += expires ? ';expires=' + expires.toUTCString() : ''; + str += options.secure ? ';secure' : ''; + + // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum: + // - 300 cookies + // - 20 cookies per unique domain + // - 4096 bytes per cookie + var cookieLength = str.length + 1; + if (cookieLength > 4096) { + $log.warn("Cookie '" + name + + "' possibly not set or overflowed because it was too large (" + + cookieLength + " > 4096 bytes)!"); + } + + return str; + } + + return function(name, value, options) { + rawDocument.cookie = buildCookieString(name, value, options); + }; +} + +$$CookieWriter.$inject = ['$document', '$log', '$browser']; + +angular.module('ngCookies').provider('$$cookieWriter', function $$CookieWriterProvider() { + this.$get = $$CookieWriter; +}); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.min.js new file mode 100644 index 00000000..61303124 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.min.js @@ -0,0 +1,9 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(n,c){'use strict';function l(b,a,g){var d=g.baseHref(),k=b[0];return function(b,e,f){var g,h;f=f||{};h=f.expires;g=c.isDefined(f.path)?f.path:d;c.isUndefined(e)&&(h="Thu, 01 Jan 1970 00:00:00 GMT",e="");c.isString(h)&&(h=new Date(h));e=encodeURIComponent(b)+"="+encodeURIComponent(e);e=e+(g?";path="+g:"")+(f.domain?";domain="+f.domain:"");e+=h?";expires="+h.toUTCString():"";e+=f.secure?";secure":"";f=e.length+1;4096 4096 bytes)!");k.cookie=e}}c.module("ngCookies",["ng"]).provider("$cookies",[function(){var b=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(a,g){return{get:function(d){return a()[d]},getObject:function(d){return(d=this.get(d))?c.fromJson(d):d},getAll:function(){return a()},put:function(d,a,m){g(d,a,m?c.extend({},b,m):b)},putObject:function(d,b,a){this.put(d,c.toJson(b),a)},remove:function(a,k){g(a,void 0,k?c.extend({},b,k):b)}}}]}]);c.module("ngCookies").factory("$cookieStore", +["$cookies",function(b){return{get:function(a){return b.getObject(a)},put:function(a,c){b.putObject(a,c)},remove:function(a){b.remove(a)}}}]);l.$inject=["$document","$log","$browser"];c.module("ngCookies").provider("$$cookieWriter",function(){this.$get=l})})(window,window.angular); +//# sourceMappingURL=angular-cookies.min.js.map diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.min.js.map b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.min.js.map new file mode 100644 index 00000000..42f748a7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-cookies.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-cookies.min.js", +"lineCount":8, +"mappings":"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", +"sources":["angular-cookies.js"], +"names":["window","angular","$$CookieWriter","$document","$log","$browser","cookiePath","baseHref","rawDocument","name","value","options","path","expires","isDefined","isUndefined","isString","Date","str","encodeURIComponent","domain","toUTCString","secure","cookieLength","length","warn","cookie","module","provider","$CookiesProvider","defaults","$get","$$cookieReader","$$cookieWriter","get","key","getObject","fromJson","getAll","put","extend","putObject","toJson","remove","undefined","factory","$cookies","$inject","$$CookieWriterProvider"] +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-csp.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-csp.css new file mode 100644 index 00000000..f3cd926c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-csp.css @@ -0,0 +1,21 @@ +/* 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:not(.ng-hide-animate) { + display: none !important; +} + +ng\:form { + display: block; +} + +.ng-animate-shim { + visibility:hidden; +} + +.ng-anchor { + position:absolute; +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-loader.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-loader.js new file mode 100644 index 00000000..bc63c8e1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-loader.js @@ -0,0 +1,484 @@ +/** + * @license AngularJS v1.5.5 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ + +(function() {'use strict'; + function isFunction(value) {return typeof value === 'function';}; + +/* global: toDebugString: true */ + +function serializeObject(obj) { + var seen = []; + + return JSON.stringify(obj, function(key, val) { + val = toJsonReplacer(key, val); + if (isObject(val)) { + + if (seen.indexOf(val) >= 0) return '...'; + + seen.push(val); + } + return val; + }); +} + +function toDebugString(obj) { + if (typeof obj === 'function') { + return obj.toString().replace(/ \{[\s\S]*$/, ''); + } else if (isUndefined(obj)) { + return 'undefined'; + } else if (typeof obj !== 'string') { + return serializeObject(obj); + } + return obj; +} + +/** + * @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. + * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning + * error from returned function, for cases when a particular type of error is useful. + * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance + */ + +function minErr(module, ErrorConstructor) { + ErrorConstructor = ErrorConstructor || Error; + return function() { + var SKIP_INDEXES = 2; + + var templateArgs = arguments, + code = templateArgs[0], + message = '[' + (module ? module + ':' : '') + code + '] ', + template = templateArgs[1], + paramPrefix, i; + + message += template.replace(/\{\d+\}/g, function(match) { + var index = +match.slice(1, -1), + shiftedIndex = index + SKIP_INDEXES; + + if (shiftedIndex < templateArgs.length) { + return toDebugString(templateArgs[shiftedIndex]); + } + + return match; + }); + + message += '\nhttp://errors.angularjs.org/1.5.5/' + + (module ? module + '/' : '') + code; + + for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { + message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' + + encodeURIComponent(toDebugString(templateArgs[i])); + } + + return new ErrorConstructor(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. + * + * Passing one argument retrieves an existing {@link angular.Module}, + * whereas passing more than one argument creates a new {@link angular.Module} + * + * + * # 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 {angular.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 configBlocks = []; + + /** @type {!Array.} */ + var runBlocks = []; + + var config = invokeLater('$injector', 'invoke', 'push', configBlocks); + + /** @type {angular.Module} */ + var moduleInstance = { + // Private state + _invokeQueue: invokeQueue, + _configBlocks: configBlocks, + _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: invokeLaterAndSetModuleName('$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: invokeLaterAndSetModuleName('$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: invokeLaterAndSetModuleName('$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 constants 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#decorator + * @module ng + * @param {string} name The name of the service to decorate. + * @param {Function} decorFn This function will be invoked when the service needs to be + * instantiated and should return the decorated service instance. + * @description + * See {@link auto.$provide#decorator $provide.decorator()}. + */ + decorator: invokeLaterAndSetModuleName('$provide', 'decorator'), + + /** + * @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 $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 ng.$animateProvider#register $animateProvider.register()} and + * {@link ngAnimate ngAnimate module} for more information. + */ + animation: invokeLaterAndSetModuleName('$animateProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#filter + * @module ng + * @param {string} name Filter name - this must be a valid angular expression identifier + * @param {Function} filterFactory Factory function for creating new instance of filter. + * @description + * See {@link ng.$filterProvider#register $filterProvider.register()}. + * + *
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
+ */ + filter: invokeLaterAndSetModuleName('$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: invokeLaterAndSetModuleName('$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: invokeLaterAndSetModuleName('$compileProvider', 'directive'), + + /** + * @ngdoc method + * @name angular.Module#component + * @module ng + * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp) + * @param {Object} options Component definition object (a simplified + * {@link ng.$compile#directive-definition-object directive definition object}) + * + * @description + * See {@link ng.$compileProvider#component $compileProvider.component()}. + */ + component: invokeLaterAndSetModuleName('$compileProvider', 'component'), + + /** + * @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#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, queue) { + if (!queue) queue = invokeQueue; + return function() { + queue[insertMethod || 'push']([provider, method, arguments]); + return moduleInstance; + }; + } + + /** + * @param {string} provider + * @param {string} method + * @returns {angular.Module} + */ + function invokeLaterAndSetModuleName(provider, method) { + return function(recipeName, factoryFunction) { + if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name; + invokeQueue.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-loader.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-loader.min.js new file mode 100644 index 00000000..5e78f7a3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-loader.min.js @@ -0,0 +1,10 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(){'use strict';function d(b){return function(){var a=arguments[0],e;e="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.5.5/"+(b?b+"/":"")+a;for(a=1;a= line.length) { + index -= line.length; + } else { + return { line: i + 1, column: index + 1 }; + } + } +} +var PARSE_CACHE_FOR_TEXT_LITERALS = Object.create(null); + +function parseTextLiteral(text) { + var cachedFn = PARSE_CACHE_FOR_TEXT_LITERALS[text]; + if (cachedFn != null) { + return cachedFn; + } + function parsedFn(context) { return text; } + parsedFn['$$watchDelegate'] = function watchDelegate(scope, listener, objectEquality) { + var unwatch = scope['$watch'](noop, + function textLiteralWatcher() { + if (isFunction(listener)) { listener.call(null, text, text, scope); } + unwatch(); + }, + objectEquality); + return unwatch; + }; + PARSE_CACHE_FOR_TEXT_LITERALS[text] = parsedFn; + parsedFn['exp'] = text; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js + parsedFn['expressions'] = []; // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding. + return parsedFn; +} + +function subtractOffset(expressionFn, offset) { + if (offset === 0) { + return expressionFn; + } + function minusOffset(value) { + return (value == void 0) ? value : value - offset; + } + function parsedFn(context) { return minusOffset(expressionFn(context)); } + var unwatch; + parsedFn['$$watchDelegate'] = function watchDelegate(scope, listener, objectEquality) { + unwatch = scope['$watch'](expressionFn, + function pluralExpressionWatchListener(newValue, oldValue) { + if (isFunction(listener)) { listener.call(null, minusOffset(newValue), minusOffset(oldValue), scope); } + }, + objectEquality); + return unwatch; + }; + return parsedFn; +} + +// NOTE: ADVANCED_OPTIMIZATIONS mode. +// +// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using +// constructs incompatible with that mode. + +/* global $interpolateMinErr: false */ +/* global isFunction: false */ +/* global noop: false */ + +/** + * @constructor + * @private + */ +function MessageSelectorBase(expressionFn, choices) { + var self = this; + this.expressionFn = expressionFn; + this.choices = choices; + if (choices["other"] === void 0) { + throw $interpolateMinErr('reqother', '“other” is a required option.'); + } + this.parsedFn = function(context) { return self.getResult(context); }; + this.parsedFn['$$watchDelegate'] = function $$watchDelegate(scope, listener, objectEquality) { + return self.watchDelegate(scope, listener, objectEquality); + }; + this.parsedFn['exp'] = expressionFn['exp']; + this.parsedFn['expressions'] = expressionFn['expressions']; +} + +MessageSelectorBase.prototype.getMessageFn = function getMessageFn(value) { + return this.choices[this.categorizeValue(value)]; +}; + +MessageSelectorBase.prototype.getResult = function getResult(context) { + return this.getMessageFn(this.expressionFn(context))(context); +}; + +MessageSelectorBase.prototype.watchDelegate = function watchDelegate(scope, listener, objectEquality) { + var watchers = new MessageSelectorWatchers(this, scope, listener, objectEquality); + return function() { watchers.cancelWatch(); }; +}; + +/** + * @constructor + * @private + */ +function MessageSelectorWatchers(msgSelector, scope, listener, objectEquality) { + var self = this; + this.scope = scope; + this.msgSelector = msgSelector; + this.listener = listener; + this.objectEquality = objectEquality; + this.lastMessage = void 0; + this.messageFnWatcher = noop; + var expressionFnListener = function(newValue, oldValue) { return self.expressionFnListener(newValue, oldValue); }; + this.expressionFnWatcher = scope['$watch'](msgSelector.expressionFn, expressionFnListener, objectEquality); +} + +MessageSelectorWatchers.prototype.expressionFnListener = function expressionFnListener(newValue, oldValue) { + var self = this; + this.messageFnWatcher(); + var messageFnListener = function(newMessage, oldMessage) { return self.messageFnListener(newMessage, oldMessage); }; + var messageFn = this.msgSelector.getMessageFn(newValue); + this.messageFnWatcher = this.scope['$watch'](messageFn, messageFnListener, this.objectEquality); +}; + +MessageSelectorWatchers.prototype.messageFnListener = function messageFnListener(newMessage, oldMessage) { + if (isFunction(this.listener)) { + this.listener.call(null, newMessage, newMessage === oldMessage ? newMessage : this.lastMessage, this.scope); + } + this.lastMessage = newMessage; +}; + +MessageSelectorWatchers.prototype.cancelWatch = function cancelWatch() { + this.expressionFnWatcher(); + this.messageFnWatcher(); +}; + +/** + * @constructor + * @extends MessageSelectorBase + * @private + */ +function SelectMessage(expressionFn, choices) { + MessageSelectorBase.call(this, expressionFn, choices); +} + +function SelectMessageProto() {} +SelectMessageProto.prototype = MessageSelectorBase.prototype; + +SelectMessage.prototype = new SelectMessageProto(); +SelectMessage.prototype.categorizeValue = function categorizeSelectValue(value) { + return (this.choices[value] !== void 0) ? value : "other"; +}; + +/** + * @constructor + * @extends MessageSelectorBase + * @private + */ +function PluralMessage(expressionFn, choices, offset, pluralCat) { + MessageSelectorBase.call(this, expressionFn, choices); + this.offset = offset; + this.pluralCat = pluralCat; +} + +function PluralMessageProto() {} +PluralMessageProto.prototype = MessageSelectorBase.prototype; + +PluralMessage.prototype = new PluralMessageProto(); +PluralMessage.prototype.categorizeValue = function categorizePluralValue(value) { + if (isNaN(value)) { + return "other"; + } else if (this.choices[value] !== void 0) { + return value; + } else { + var category = this.pluralCat(value - this.offset); + return (this.choices[category] !== void 0) ? category : "other"; + } +}; + +// NOTE: ADVANCED_OPTIMIZATIONS mode. +// +// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using +// constructs incompatible with that mode. + +/* global $interpolateMinErr: false */ +/* global isFunction: false */ +/* global parseTextLiteral: false */ + +/** + * @constructor + * @private + */ +function InterpolationParts(trustedContext, allOrNothing) { + this.trustedContext = trustedContext; + this.allOrNothing = allOrNothing; + this.textParts = []; + this.expressionFns = []; + this.expressionIndices = []; + this.partialText = ''; + this.concatParts = null; +} + +InterpolationParts.prototype.flushPartialText = function flushPartialText() { + if (this.partialText) { + if (this.concatParts == null) { + this.textParts.push(this.partialText); + } else { + this.textParts.push(this.concatParts.join('')); + this.concatParts = null; + } + this.partialText = ''; + } +}; + +InterpolationParts.prototype.addText = function addText(text) { + if (text.length) { + if (!this.partialText) { + this.partialText = text; + } else if (this.concatParts) { + this.concatParts.push(text); + } else { + this.concatParts = [this.partialText, text]; + } + } +}; + +InterpolationParts.prototype.addExpressionFn = function addExpressionFn(expressionFn) { + this.flushPartialText(); + this.expressionIndices.push(this.textParts.length); + this.expressionFns.push(expressionFn); + this.textParts.push(''); +}; + +InterpolationParts.prototype.getExpressionValues = function getExpressionValues(context) { + var expressionValues = new Array(this.expressionFns.length); + for (var i = 0; i < this.expressionFns.length; i++) { + expressionValues[i] = this.expressionFns[i](context); + } + return expressionValues; +}; + +InterpolationParts.prototype.getResult = function getResult(expressionValues) { + for (var i = 0; i < this.expressionIndices.length; i++) { + var expressionValue = expressionValues[i]; + if (this.allOrNothing && expressionValue === void 0) return; + this.textParts[this.expressionIndices[i]] = expressionValue; + } + return this.textParts.join(''); +}; + + +InterpolationParts.prototype.toParsedFn = function toParsedFn(mustHaveExpression, originalText) { + var self = this; + this.flushPartialText(); + if (mustHaveExpression && this.expressionFns.length === 0) { + return void 0; + } + if (this.textParts.length === 0) { + return parseTextLiteral(''); + } + if (this.trustedContext && this.textParts.length > 1) { + $interpolateMinErr['throwNoconcat'](originalText); + } + if (this.expressionFns.length === 0) { + if (this.textParts.length != 1) { this.errorInParseLogic(); } + return parseTextLiteral(this.textParts[0]); + } + var parsedFn = function(context) { + return self.getResult(self.getExpressionValues(context)); + }; + parsedFn['$$watchDelegate'] = function $$watchDelegate(scope, listener, objectEquality) { + return self.watchDelegate(scope, listener, objectEquality); + }; + + parsedFn['exp'] = originalText; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js + parsedFn['expressions'] = new Array(this.expressionFns.length); // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding. + for (var i = 0; i < this.expressionFns.length; i++) { + parsedFn['expressions'][i] = this.expressionFns[i]['exp']; + } + + return parsedFn; +}; + +InterpolationParts.prototype.watchDelegate = function watchDelegate(scope, listener, objectEquality) { + var watcher = new InterpolationPartsWatcher(this, scope, listener, objectEquality); + return function() { watcher.cancelWatch(); }; +}; + +function InterpolationPartsWatcher(interpolationParts, scope, listener, objectEquality) { + this.interpolationParts = interpolationParts; + this.scope = scope; + this.previousResult = (void 0); + this.listener = listener; + var self = this; + this.expressionFnsWatcher = scope['$watchGroup'](interpolationParts.expressionFns, function(newExpressionValues, oldExpressionValues) { + self.watchListener(newExpressionValues, oldExpressionValues); + }); +} + +InterpolationPartsWatcher.prototype.watchListener = function watchListener(newExpressionValues, oldExpressionValues) { + var result = this.interpolationParts.getResult(newExpressionValues); + if (isFunction(this.listener)) { + this.listener.call(null, result, newExpressionValues === oldExpressionValues ? result : this.previousResult, this.scope); + } + this.previousResult = result; +}; + +InterpolationPartsWatcher.prototype.cancelWatch = function cancelWatch() { + this.expressionFnsWatcher(); +}; + +// NOTE: ADVANCED_OPTIMIZATIONS mode. +// +// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using +// constructs incompatible with that mode. + +/* global $interpolateMinErr: false */ +/* global indexToLineAndColumn: false */ +/* global InterpolationParts: false */ +/* global PluralMessage: false */ +/* global SelectMessage: false */ +/* global subtractOffset: false */ + +// The params src and dst are exactly one of two types: NestedParserState or MessageFormatParser. +// This function is fully optimized by V8. (inspect via IRHydra or --trace-deopt.) +// The idea behind writing it this way is to avoid repeating oneself. This is the ONE place where +// the parser state that is saved/restored when parsing nested mustaches is specified. +function copyNestedParserState(src, dst) { + dst.expressionFn = src.expressionFn; + dst.expressionMinusOffsetFn = src.expressionMinusOffsetFn; + dst.pluralOffset = src.pluralOffset; + dst.choices = src.choices; + dst.choiceKey = src.choiceKey; + dst.interpolationParts = src.interpolationParts; + dst.ruleChoiceKeyword = src.ruleChoiceKeyword; + dst.msgStartIndex = src.msgStartIndex; + dst.expressionStartIndex = src.expressionStartIndex; +} + +function NestedParserState(parser) { + copyNestedParserState(parser, this); +} + +/** + * @constructor + * @private + */ +function MessageFormatParser(text, startIndex, $parse, pluralCat, stringifier, + mustHaveExpression, trustedContext, allOrNothing) { + this.text = text; + this.index = startIndex || 0; + this.$parse = $parse; + this.pluralCat = pluralCat; + this.stringifier = stringifier; + this.mustHaveExpression = !!mustHaveExpression; + this.trustedContext = trustedContext; + this.allOrNothing = !!allOrNothing; + this.expressionFn = null; + this.expressionMinusOffsetFn = null; + this.pluralOffset = null; + this.choices = null; + this.choiceKey = null; + this.interpolationParts = null; + this.msgStartIndex = null; + this.nestedStateStack = []; + this.parsedFn = null; + this.rule = null; + this.ruleStack = null; + this.ruleChoiceKeyword = null; + this.interpNestLevel = null; + this.expressionStartIndex = null; + this.stringStartIndex = null; + this.stringQuote = null; + this.stringInterestsRe = null; + this.angularOperatorStack = null; + this.textPart = null; +} + +// preserve v8 optimization. +var EMPTY_STATE = new NestedParserState(new MessageFormatParser( + /* text= */ '', /* startIndex= */ 0, /* $parse= */ null, /* pluralCat= */ null, /* stringifier= */ null, + /* mustHaveExpression= */ false, /* trustedContext= */ null, /* allOrNothing */ false)); + +MessageFormatParser.prototype.pushState = function pushState() { + this.nestedStateStack.push(new NestedParserState(this)); + copyNestedParserState(EMPTY_STATE, this); +}; + +MessageFormatParser.prototype.popState = function popState() { + if (this.nestedStateStack.length === 0) { + this.errorInParseLogic(); + } + var previousState = this.nestedStateStack.pop(); + copyNestedParserState(previousState, this); +}; + +// Oh my JavaScript! Who knew you couldn't match a regex at a specific +// location in a string but will always search forward?! +// Apparently you'll be growing this ability via the sticky flag (y) in +// ES6. I'll just to work around you for now. +MessageFormatParser.prototype.matchRe = function matchRe(re, search) { + re.lastIndex = this.index; + var match = re.exec(this.text); + if (match != null && (search === true || (match.index == this.index))) { + this.index = re.lastIndex; + return match; + } + return null; +}; + +MessageFormatParser.prototype.searchRe = function searchRe(re) { + return this.matchRe(re, true); +}; + + +MessageFormatParser.prototype.consumeRe = function consumeRe(re) { + // Without the sticky flag, we can't use the .test() method to consume a + // match at the current index. Instead, we'll use the slower .exec() method + // and verify match.index. + return !!this.matchRe(re); +}; + +// Run through our grammar avoiding deeply nested function call chains. +MessageFormatParser.prototype.run = function run(initialRule) { + this.ruleStack = [initialRule]; + do { + this.rule = this.ruleStack.pop(); + while (this.rule) { + this.rule(); + } + this.assertRuleOrNull(this.rule); + } while (this.ruleStack.length > 0); +}; + +MessageFormatParser.prototype.errorInParseLogic = function errorInParseLogic() { + throw $interpolateMinErr('logicbug', + 'The messageformat parser has encountered an internal error. Please file a github issue against the AngularJS project and provide this message text that triggers the bug. Text: “{0}”', + this.text); +}; + +MessageFormatParser.prototype.assertRuleOrNull = function assertRuleOrNull(rule) { + if (rule === void 0) { + this.errorInParseLogic(); + } +}; + +var NEXT_WORD_RE = /\s*(\w+)\s*/g; +MessageFormatParser.prototype.errorExpecting = function errorExpecting() { + // What was wrong with the syntax? Unsupported type, missing comma, or something else? + var match = this.matchRe(NEXT_WORD_RE), position; + if (match == null) { + position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('reqarg', + 'Expected one of “plural” or “select” at line {0}, column {1} of text “{2}”', + position.line, position.column, this.text); + } + var word = match[1]; + if (word == "select" || word == "plural") { + position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('reqcomma', + 'Expected a comma after the keyword “{0}” at line {1}, column {2} of text “{3}”', + word, position.line, position.column, this.text); + } else { + position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('unknarg', + 'Unsupported keyword “{0}” at line {0}, column {1}. Only “plural” and “select” are currently supported. Text: “{3}”', + word, position.line, position.column, this.text); + } +}; + +var STRING_START_RE = /['"]/g; +MessageFormatParser.prototype.ruleString = function ruleString() { + var match = this.matchRe(STRING_START_RE); + if (match == null) { + var position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('wantstring', + 'Expected the beginning of a string at line {0}, column {1} in text “{2}”', + position.line, position.column, this.text); + } + this.startStringAtMatch(match); +}; + +MessageFormatParser.prototype.startStringAtMatch = function startStringAtMatch(match) { + this.stringStartIndex = match.index; + this.stringQuote = match[0]; + this.stringInterestsRe = this.stringQuote == "'" ? SQUOTED_STRING_INTEREST_RE : DQUOTED_STRING_INTEREST_RE; + this.rule = this.ruleInsideString; +}; + +var SQUOTED_STRING_INTEREST_RE = /\\(?:\\|'|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|'/g; +var DQUOTED_STRING_INTEREST_RE = /\\(?:\\|"|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|"/g; +MessageFormatParser.prototype.ruleInsideString = function ruleInsideString() { + var match = this.searchRe(this.stringInterestsRe); + if (match == null) { + var position = indexToLineAndColumn(this.text, this.stringStartIndex); + throw $interpolateMinErr('untermstr', + 'The string beginning at line {0}, column {1} is unterminated in text “{2}”', + position.line, position.column, this.text); + } + var chars = match[0]; + if (match == this.stringQuote) { + this.rule = null; + } +}; + +var PLURAL_OR_SELECT_ARG_TYPE_RE = /\s*(plural|select)\s*,\s*/g; +MessageFormatParser.prototype.rulePluralOrSelect = function rulePluralOrSelect() { + var match = this.searchRe(PLURAL_OR_SELECT_ARG_TYPE_RE); + if (match == null) { + this.errorExpecting(); + } + var argType = match[1]; + switch (argType) { + case "plural": this.rule = this.rulePluralStyle; break; + case "select": this.rule = this.ruleSelectStyle; break; + default: this.errorInParseLogic(); + } +}; + +MessageFormatParser.prototype.rulePluralStyle = function rulePluralStyle() { + this.choices = Object.create(null); + this.ruleChoiceKeyword = this.rulePluralValueOrKeyword; + this.rule = this.rulePluralOffset; +}; + +MessageFormatParser.prototype.ruleSelectStyle = function ruleSelectStyle() { + this.choices = Object.create(null); + this.ruleChoiceKeyword = this.ruleSelectKeyword; + this.rule = this.ruleSelectKeyword; +}; + +var NUMBER_RE = /[0]|(?:[1-9][0-9]*)/g; +var PLURAL_OFFSET_RE = new RegExp("\\s*offset\\s*:\\s*(" + NUMBER_RE.source + ")", "g"); + +MessageFormatParser.prototype.rulePluralOffset = function rulePluralOffset() { + var match = this.matchRe(PLURAL_OFFSET_RE); + this.pluralOffset = (match == null) ? 0 : parseInt(match[1], 10); + this.expressionMinusOffsetFn = subtractOffset(this.expressionFn, this.pluralOffset); + this.rule = this.rulePluralValueOrKeyword; +}; + +MessageFormatParser.prototype.assertChoiceKeyIsNew = function assertChoiceKeyIsNew(choiceKey, index) { + if (this.choices[choiceKey] !== void 0) { + var position = indexToLineAndColumn(this.text, index); + throw $interpolateMinErr('dupvalue', + 'The choice “{0}” is specified more than once. Duplicate key is at line {1}, column {2} in text “{3}”', + choiceKey, position.line, position.column, this.text); + } +}; + +var SELECT_KEYWORD = /\s*(\w+)/g; +MessageFormatParser.prototype.ruleSelectKeyword = function ruleSelectKeyword() { + var match = this.matchRe(SELECT_KEYWORD); + if (match == null) { + this.parsedFn = new SelectMessage(this.expressionFn, this.choices).parsedFn; + this.rule = null; + return; + } + this.choiceKey = match[1]; + this.assertChoiceKeyIsNew(this.choiceKey, match.index); + this.rule = this.ruleMessageText; +}; + +var EXPLICIT_VALUE_OR_KEYWORD_RE = new RegExp("\\s*(?:(?:=(" + NUMBER_RE.source + "))|(\\w+))", "g"); +MessageFormatParser.prototype.rulePluralValueOrKeyword = function rulePluralValueOrKeyword() { + var match = this.matchRe(EXPLICIT_VALUE_OR_KEYWORD_RE); + if (match == null) { + this.parsedFn = new PluralMessage(this.expressionFn, this.choices, this.pluralOffset, this.pluralCat).parsedFn; + this.rule = null; + return; + } + if (match[1] != null) { + this.choiceKey = parseInt(match[1], 10); + } else { + this.choiceKey = match[2]; + } + this.assertChoiceKeyIsNew(this.choiceKey, match.index); + this.rule = this.ruleMessageText; +}; + +var BRACE_OPEN_RE = /\s*{/g; +var BRACE_CLOSE_RE = /}/g; +MessageFormatParser.prototype.ruleMessageText = function ruleMessageText() { + if (!this.consumeRe(BRACE_OPEN_RE)) { + var position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('reqopenbrace', + 'The plural choice “{0}” must be followed by a message in braces at line {1}, column {2} in text “{3}”', + this.choiceKey, position.line, position.column, this.text); + } + this.msgStartIndex = this.index; + this.interpolationParts = new InterpolationParts(this.trustedContext, this.allOrNothing); + this.rule = this.ruleInInterpolationOrMessageText; +}; + +// Note: Since "\" is used as an escape character, don't allow it to be part of the +// startSymbol/endSymbol when I add the feature to allow them to be redefined. +var INTERP_OR_END_MESSAGE_RE = /\\.|{{|}/g; +var INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE = /\\.|{{|#|}/g; +var ESCAPE_OR_MUSTACHE_BEGIN_RE = /\\.|{{/g; +MessageFormatParser.prototype.advanceInInterpolationOrMessageText = function advanceInInterpolationOrMessageText() { + var currentIndex = this.index, match, re; + if (this.ruleChoiceKeyword == null) { // interpolation + match = this.searchRe(ESCAPE_OR_MUSTACHE_BEGIN_RE); + if (match == null) { // End of interpolation text. Nothing more to process. + this.textPart = this.text.substring(currentIndex); + this.index = this.text.length; + return null; + } + } else { + match = this.searchRe(this.ruleChoiceKeyword == this.rulePluralValueOrKeyword ? + INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE : INTERP_OR_END_MESSAGE_RE); + if (match == null) { + var position = indexToLineAndColumn(this.text, this.msgStartIndex); + throw $interpolateMinErr('reqendbrace', + 'The plural/select choice “{0}” message starting at line {1}, column {2} does not have an ending closing brace. Text “{3}”', + this.choiceKey, position.line, position.column, this.text); + } + } + // match is non-null. + var token = match[0]; + this.textPart = this.text.substring(currentIndex, match.index); + return token; +}; + +MessageFormatParser.prototype.ruleInInterpolationOrMessageText = function ruleInInterpolationOrMessageText() { + var currentIndex = this.index; + var token = this.advanceInInterpolationOrMessageText(); + if (token == null) { + // End of interpolation text. Nothing more to process. + this.index = this.text.length; + this.interpolationParts.addText(this.text.substring(currentIndex)); + this.rule = null; + return; + } + if (token[0] == "\\") { + // unescape next character and continue + this.interpolationParts.addText(this.textPart + token[1]); + return; + } + this.interpolationParts.addText(this.textPart); + if (token == "{{") { + this.pushState(); + this.ruleStack.push(this.ruleEndMustacheInInterpolationOrMessage); + this.rule = this.ruleEnteredMustache; + } else if (token == "}") { + this.choices[this.choiceKey] = this.interpolationParts.toParsedFn(/*mustHaveExpression=*/false, this.text); + this.rule = this.ruleChoiceKeyword; + } else if (token == "#") { + this.interpolationParts.addExpressionFn(this.expressionMinusOffsetFn); + } else { + this.errorInParseLogic(); + } +}; + +MessageFormatParser.prototype.ruleInterpolate = function ruleInterpolate() { + this.interpolationParts = new InterpolationParts(this.trustedContext, this.allOrNothing); + this.rule = this.ruleInInterpolation; +}; + +MessageFormatParser.prototype.ruleInInterpolation = function ruleInInterpolation() { + var currentIndex = this.index; + var match = this.searchRe(ESCAPE_OR_MUSTACHE_BEGIN_RE); + if (match == null) { + // End of interpolation text. Nothing more to process. + this.index = this.text.length; + this.interpolationParts.addText(this.text.substring(currentIndex)); + this.parsedFn = this.interpolationParts.toParsedFn(this.mustHaveExpression, this.text); + this.rule = null; + return; + } + var token = match[0]; + if (token[0] == "\\") { + // unescape next character and continue + this.interpolationParts.addText(this.text.substring(currentIndex, match.index) + token[1]); + return; + } + this.interpolationParts.addText(this.text.substring(currentIndex, match.index)); + this.pushState(); + this.ruleStack.push(this.ruleInterpolationEndMustache); + this.rule = this.ruleEnteredMustache; +}; + +MessageFormatParser.prototype.ruleInterpolationEndMustache = function ruleInterpolationEndMustache() { + var expressionFn = this.parsedFn; + this.popState(); + this.interpolationParts.addExpressionFn(expressionFn); + this.rule = this.ruleInInterpolation; +}; + +MessageFormatParser.prototype.ruleEnteredMustache = function ruleEnteredMustache() { + this.parsedFn = null; + this.ruleStack.push(this.ruleEndMustache); + this.rule = this.ruleAngularExpression; +}; + +MessageFormatParser.prototype.ruleEndMustacheInInterpolationOrMessage = function ruleEndMustacheInInterpolationOrMessage() { + var expressionFn = this.parsedFn; + this.popState(); + this.interpolationParts.addExpressionFn(expressionFn); + this.rule = this.ruleInInterpolationOrMessageText; +}; + + + +var INTERP_END_RE = /\s*}}/g; +MessageFormatParser.prototype.ruleEndMustache = function ruleEndMustache() { + var match = this.matchRe(INTERP_END_RE); + if (match == null) { + var position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('reqendinterp', + 'Expecting end of interpolation symbol, “{0}”, at line {1}, column {2} in text “{3}”', + '}}', position.line, position.column, this.text); + } + if (this.parsedFn == null) { + // If we parsed a MessageFormat extension, (e.g. select/plural today, maybe more some other + // day), then the result *has* to be a string and those rules would have already set + // this.parsedFn. If there was no MessageFormat extension, then there is no requirement to + // stringify the result and parsedFn isn't set. We set it here. While we could have set it + // unconditionally when exiting the Angular expression, I intend for us to not just replace + // $interpolate, but also to replace $parse in a future version (so ng-bind can work), and in + // such a case we do not want to unnecessarily stringify something if it's not going to be used + // in a string context. + this.parsedFn = this.$parse(this.expressionFn, this.stringifier); + this.parsedFn['exp'] = this.expressionFn['exp']; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js + this.parsedFn['expressions'] = this.expressionFn['expressions']; // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding. + } + this.rule = null; +}; + +MessageFormatParser.prototype.ruleAngularExpression = function ruleAngularExpression() { + this.angularOperatorStack = []; + this.expressionStartIndex = this.index; + this.rule = this.ruleInAngularExpression; +}; + +function getEndOperator(opBegin) { + switch (opBegin) { + case "{": return "}"; + case "[": return "]"; + case "(": return ")"; + default: return null; + } +} + +function getBeginOperator(opEnd) { + switch (opEnd) { + case "}": return "{"; + case "]": return "["; + case ")": return "("; + default: return null; + } +} + +// TODO(chirayu): The interpolation endSymbol must also be accounted for. It +// just so happens that "}" is an operator so it's in the list below. But we +// should support any other type of start/end interpolation symbol. +var INTERESTING_OPERATORS_RE = /[[\]{}()'",]/g; +MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularExpression() { + var startIndex = this.index; + var match = this.searchRe(INTERESTING_OPERATORS_RE); + var position; + if (match == null) { + if (this.angularOperatorStack.length === 0) { + // This is the end of the Angular expression so this is actually a + // success. Note that when inside an interpolation, this means we even + // consumed the closing interpolation symbols if they were curlies. This + // is NOT an error at this point but will become an error further up the + // stack when the part that saw the opening curlies is unable to find the + // closing ones. + this.index = this.text.length; + this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, this.index)); + // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js + this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, this.index); + this.expressionFn['expressions'] = this.expressionFn['expressions']; + this.rule = null; + return; + } + var innermostOperator = this.angularOperatorStack[0]; + throw $interpolateMinErr('badexpr', + 'Unexpected end of Angular expression. Expecting operator “{0}” at the end of the text “{1}”', + this.getEndOperator(innermostOperator), this.text); + } + var operator = match[0]; + if (operator == "'" || operator == '"') { + this.ruleStack.push(this.ruleInAngularExpression); + this.startStringAtMatch(match); + return; + } + if (operator == ",") { + if (this.trustedContext) { + position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('unsafe', + 'Use of select/plural MessageFormat syntax is currently disallowed in a secure context ({0}). At line {1}, column {2} of text “{3}”', + this.trustedContext, position.line, position.column, this.text); + } + // only the top level comma has relevance. + if (this.angularOperatorStack.length === 0) { + // todo: does this need to be trimmed? + this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, match.index)); + // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js + this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, match.index); + this.expressionFn['expressions'] = this.expressionFn['expressions']; + this.rule = null; + this.rule = this.rulePluralOrSelect; + } + return; + } + if (getEndOperator(operator) != null) { + this.angularOperatorStack.unshift(operator); + return; + } + var beginOperator = getBeginOperator(operator); + if (beginOperator == null) { + this.errorInParseLogic(); + } + if (this.angularOperatorStack.length > 0) { + if (beginOperator == this.angularOperatorStack[0]) { + this.angularOperatorStack.shift(); + return; + } + position = indexToLineAndColumn(this.text, this.index); + throw $interpolateMinErr('badexpr', + 'Unexpected operator “{0}” at line {1}, column {2} in text. Was expecting “{3}”. Text: “{4}”', + operator, position.line, position.column, getEndOperator(this.angularOperatorStack[0]), this.text); + } + // We are trying to pop off the operator stack but there really isn't anything to pop off. + this.index = match.index; + this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, this.index)); + // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js + this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, this.index); + this.expressionFn['expressions'] = this.expressionFn['expressions']; + this.rule = null; +}; + +// NOTE: ADVANCED_OPTIMIZATIONS mode. +// +// This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using +// constructs incompatible with that mode. + +/* global $interpolateMinErr: false */ +/* global MessageFormatParser: false */ +/* global stringify: false */ + +/** + * @ngdoc service + * @name $$messageFormat + * + * @description + * Angular internal service to recognize MessageFormat extensions in interpolation expressions. + * For more information, see: + * https://docs.google.com/a/google.com/document/d/1pbtW2yvtmFBikfRrJd8VAsabiFkKezmYZ_PbgdjQOVU/edit + * + * ## Example + * + * + * + *
+ *
+ * {{recipients.length, plural, offset:1 + * =0 {{{sender.name}} gave no gifts (\#=#)} + * =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)} + * one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)} + * other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)} + * }} + *
+ *
+ * + * + * function Person(name, gender) { + * this.name = name; + * this.gender = gender; + * } + * + * var alice = new Person("Alice", "female"), + * bob = new Person("Bob", "male"), + * charlie = new Person("Charlie", "male"), + * harry = new Person("Harry Potter", "male"); + * + * angular.module('msgFmtExample', ['ngMessageFormat']) + * .controller('AppController', ['$scope', function($scope) { + * $scope.recipients = [alice, bob, charlie]; + * $scope.sender = harry; + * $scope.decreaseRecipients = function() { + * --$scope.recipients.length; + * }; + * }]); + * + * + * + * describe('MessageFormat plural', function() { + * it('should pluralize initial values', function() { + * var messageElem = element(by.binding('recipients.length')), decreaseRecipientsBtn = element(by.id('decreaseRecipients')); + * expect(messageElem.getText()).toEqual('Harry Potter gave Alice and 2 other people a gift (#=2)'); + * decreaseRecipientsBtn.click(); + * expect(messageElem.getText()).toEqual('Harry Potter gave Alice and one other person a gift (#=1)'); + * decreaseRecipientsBtn.click(); + * expect(messageElem.getText()).toEqual('Harry Potter gave one gift to Alice (#=0)'); + * decreaseRecipientsBtn.click(); + * expect(messageElem.getText()).toEqual('Harry Potter gave no gifts (#=-1)'); + * }); + * }); + * + *
+ */ +var $$MessageFormatFactory = ['$parse', '$locale', '$sce', '$exceptionHandler', function $$messageFormat( + $parse, $locale, $sce, $exceptionHandler) { + + function getStringifier(trustedContext, allOrNothing, text) { + return function stringifier(value) { + try { + value = trustedContext ? $sce['getTrusted'](trustedContext, value) : $sce['valueOf'](value); + return allOrNothing && (value === void 0) ? value : stringify(value); + } catch (err) { + $exceptionHandler($interpolateMinErr['interr'](text, err)); + } + }; + } + + function interpolate(text, mustHaveExpression, trustedContext, allOrNothing) { + var stringifier = getStringifier(trustedContext, allOrNothing, text); + var parser = new MessageFormatParser(text, 0, $parse, $locale['pluralCat'], stringifier, + mustHaveExpression, trustedContext, allOrNothing); + parser.run(parser.ruleInterpolate); + return parser.parsedFn; + } + + return { + 'interpolate': interpolate + }; +}]; + +var $$interpolateDecorator = ['$$messageFormat', '$delegate', function $$interpolateDecorator($$messageFormat, $interpolate) { + if ($interpolate['startSymbol']() != "{{" || $interpolate['endSymbol']() != "}}") { + throw $interpolateMinErr('nochgmustache', 'angular-message-format.js currently does not allow you to use custom start and end symbols for interpolation.'); + } + var interpolate = $$messageFormat['interpolate']; + interpolate['startSymbol'] = $interpolate['startSymbol']; + interpolate['endSymbol'] = $interpolate['endSymbol']; + return interpolate; +}]; + + +/** + * @ngdoc module + * @name ngMessageFormat + * @packageName angular-message-format + * @description + */ +var module = window['angular']['module']('ngMessageFormat', ['ng']); +module['factory']('$$messageFormat', $$MessageFormatFactory); +module['config'](['$provide', function($provide) { + $provide['decorator']('$interpolate', $$interpolateDecorator); +}]); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-message-format.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-message-format.min.js new file mode 100644 index 00000000..f3e6d6b3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-message-format.min.js @@ -0,0 +1,26 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(h){'use strict';function C(a){if(null==a)return"";switch(typeof a){case "string":return a;case "number":return""+a;default:return D(a)}}function f(a,b){for(var d=a.split(/\n/g),k=0;k=c.length)b-=c.length;else return{h:k+1,f:b+1}}}function t(a){function b(){return a}var d=u[a];if(null!=d)return d;b.$$watchDelegate=function(b,d,c){var e=b.$watch(v,function(){m(d)&&d.call(null,a,a,b);e()},c);return e};u[a]=b;b.exp=a;b.expressions=[];return b}function F(a,b){function d(a){return void 0== +a?a:a-b}function c(b){return d(a(b))}if(0===b)return a;var e;c.$$watchDelegate=function(b,c,k){return e=b.$watch(a,function(a,k){m(c)&&c.call(null,d(a),d(k),b)},k)};return c}function l(a,b){var d=this;this.b=a;this.e=b;if(void 0===b.other)throw e("reqother");this.d=function(a){return d.D(a)};this.d.$$watchDelegate=function(a,b,c){return d.P(a,b,c)};this.d.exp=a.exp;this.d.expressions=a.expressions}function n(a,b,d,c){var e=this;this.scope=b;this.oa=a;this.v=d;this.qa=c;this.U=void 0;this.K=v;this.ka= +b.$watch(a.b,function(a){return e.ja(a)},c)}function p(a,b){l.call(this,a,b)}function w(){}function q(a,b,d,c){l.call(this,a,b);this.offset=d;this.M=c}function x(){}function g(a,b){this.u=a;this.B=b;this.i=[];this.g=[];this.J=[];this.s="";this.q=null}function r(a,b,d){this.c=a;this.scope=b;this.W=void 0;this.v=d;var c=this;this.la=b.$watchGroup(a.g,function(a,b){c.Ea(a,b)})}function s(a,b){b.b=a.b;b.C=a.C;b.w=a.w;b.e=a.e;b.k=a.k;b.c=a.c;b.n=a.n;b.F=a.F;b.l=a.l}function y(a){s(a,this)}function c(a, +b,d,c,e,E,f,g){this.text=a;this.index=b||0;this.A=d;this.M=c;this.Da=e;this.pa=!!E;this.u=f;this.B=!!g;this.F=this.c=this.k=this.e=this.w=this.C=this.b=null;this.L=[];this.G=this.j=this.ca=this.O=this.da=this.l=this.n=this.o=this.a=this.d=null}function z(a){switch(a){case "{":return"}";case "[":return"]";case "(":return")";default:return null}}function G(a){switch(a){case "}":return"{";case "]":return"[";case ")":return"(";default:return null}}var e=h.angular.$interpolateMinErr,v=h.angular.noop,m= +h.angular.isFunction,D=h.angular.toJson,u=Object.create(null);l.prototype.T=function(a){return this.e[this.R(a)]};l.prototype.D=function(a){return this.T(this.b(a))(a)};l.prototype.P=function(a,b,d){var c=new n(this,a,b,d);return function(){c.I()}};n.prototype.ja=function(a){var b=this;this.K();a=this.oa.T(a);this.K=this.scope.$watch(a,function(a,c){return b.na(a,c)},this.qa)};n.prototype.na=function(a,b){m(this.v)&&this.v.call(null,a,a===b?a:this.U,this.scope);this.U=a};n.prototype.I=function(){this.ka(); +this.K()};w.prototype=l.prototype;p.prototype=new w;p.prototype.R=function(a){return void 0!==this.e[a]?a:"other"};x.prototype=l.prototype;q.prototype=new x;q.prototype.R=function(a){if(isNaN(a))return"other";if(void 0!==this.e[a])return a;a=this.M(a-this.offset);return void 0!==this.e[a]?a:"other"};g.prototype.S=function(){this.s&&(null==this.q?this.i.push(this.s):(this.i.push(this.q.join("")),this.q=null),this.s="")};g.prototype.p=function(a){a.length&&(this.s?this.q?this.q.push(a):this.q=[this.s, +a]:this.s=a)};g.prototype.H=function(a){this.S();this.J.push(this.i.length);this.g.push(a);this.i.push("")};g.prototype.ma=function(a){for(var b=Array(this.g.length),d=0;d + * + *
+ *
Please enter a value for this field.
+ *
This field must be a valid email address.
+ *
This field can be at most 15 characters long.
+ *
+ * + * ``` + * + * In order to show error messages corresponding to `myField` we first create an element with an `ngMessages` attribute + * set to the `$error` object owned by the `myField` input in our `myForm` form. + * + * Within this element we then create separate elements for each of the possible errors that `myField` could have. + * The `ngMessage` attribute is used to declare which element(s) will appear for which error - for example, + * setting `ng-message="required"` specifies that this particular element should be displayed when there + * is no value present for the required field `myField` (because the key `required` will be `true` in the object + * `myForm.myField.$error`). + * + * ### Message order + * + * By default, `ngMessages` will only display one message for a particular key/value collection at any time. If more + * than one message (or error) key is currently true, then which message is shown is determined by the order of messages + * in the HTML template code (messages declared first are prioritised). This mechanism means the developer does not have + * to prioritise messages using custom JavaScript code. + * + * Given the following error object for our example (which informs us that the field `myField` currently has both the + * `required` and `email` errors): + * + * ```javascript + * + * myField.$error = { required : true, email: true, maxlength: false }; + * ``` + * The `required` message will be displayed to the user since it appears before the `email` message in the DOM. + * Once the user types a single character, the `required` message will disappear (since the field now has a value) + * but the `email` message will be visible because it is still applicable. + * + * ### Displaying multiple messages at the same time + * + * While `ngMessages` will by default only display one error element at a time, the `ng-messages-multiple` attribute can + * be applied to the `ngMessages` container element to cause it to display all applicable error messages at once: + * + * ```html + * + *
...
+ * + * + * ... + * ``` + * + * ## Reusing and Overriding Messages + * In addition to prioritization, ngMessages also allows for including messages from a remote or an inline + * template. This allows for generic collection of messages to be reused across multiple parts of an + * application. + * + * ```html + * + * + *
+ *
+ *
+ * ``` + * + * However, including generic messages may not be useful enough to match all input fields, therefore, + * `ngMessages` provides the ability to override messages defined in the remote template by redefining + * them within the directive container. + * + * ```html + * + * + * + *
+ * + * + *
+ * + *
You did not enter your email address
+ * + * + *
Your email address is invalid
+ * + * + *
+ *
+ *
+ * ``` + * + * In the example HTML code above the message that is set on required will override the corresponding + * required message defined within the remote template. Therefore, with particular input fields (such + * email addresses, date fields, autocomplete inputs, etc...), specialized error messages can be applied + * while more generic messages can be used to handle other, more general input errors. + * + * ## Dynamic Messaging + * ngMessages also supports using expressions to dynamically change key values. Using arrays and + * repeaters to list messages is also supported. This means that the code below will be able to + * fully adapt itself and display the appropriate message when any of the expression data changes: + * + * ```html + *
+ * + *
+ *
You did not enter your email address
+ *
+ * + *
{{ errorMessage.text }}
+ *
+ *
+ *
+ * ``` + * + * The `errorMessage.type` expression can be a string value or it can be an array so + * that multiple errors can be associated with a single error message: + * + * ```html + * + *
+ *
You did not enter your email address
+ *
+ * Your email must be between 5 and 100 characters long + *
+ *
+ * ``` + * + * Feel free to use other structural directives such as ng-if and ng-switch to further control + * what messages are active and when. Be careful, if you place ng-message on the same element + * as these structural directives, Angular may not be able to determine if a message is active + * or not. Therefore it is best to place the ng-message on a child element of the structural + * directive. + * + * ```html + *
+ *
+ *
Please enter something
+ *
+ *
+ * ``` + * + * ## Animations + * If the `ngAnimate` module is active within the application then the `ngMessages`, `ngMessage` and + * `ngMessageExp` directives will trigger animations whenever any messages are added and removed from + * the DOM by the `ngMessages` directive. + * + * Whenever the `ngMessages` directive contains one or more visible messages then the `.ng-active` CSS + * class will be added to the element. The `.ng-inactive` CSS class will be applied when there are no + * messages present. Therefore, CSS transitions and keyframes as well as JavaScript animations can + * hook into the animations whenever these classes are added/removed. + * + * Let's say that our HTML code for our messages container looks like so: + * + * ```html + * + * ``` + * + * Then the CSS animation code for the message container looks like so: + * + * ```css + * .my-messages { + * transition:1s linear all; + * } + * .my-messages.ng-active { + * // messages are visible + * } + * .my-messages.ng-inactive { + * // messages are hidden + * } + * ``` + * + * Whenever an inner message is attached (becomes visible) or removed (becomes hidden) then the enter + * and leave animation is triggered for each particular element bound to the `ngMessage` directive. + * + * Therefore, the CSS code for the inner messages looks like so: + * + * ```css + * .some-message { + * transition:1s linear all; + * } + * + * .some-message.ng-enter {} + * .some-message.ng-enter.ng-enter-active {} + * + * .some-message.ng-leave {} + * .some-message.ng-leave.ng-leave-active {} + * ``` + * + * {@link ngAnimate Click here} to learn how to use JavaScript animations or to learn more about ngAnimate. + */ +angular.module('ngMessages', []) + + /** + * @ngdoc directive + * @module ngMessages + * @name ngMessages + * @restrict AE + * + * @description + * `ngMessages` is a directive that is designed to show and hide messages based on the state + * of a key/value object that it listens on. The directive itself complements error message + * reporting with the `ngModel` $error object (which stores a key/value state of validation errors). + * + * `ngMessages` manages the state of internal messages within its container element. The internal + * messages use the `ngMessage` directive and will be inserted/removed from the page depending + * on if they're present within the key/value object. By default, only one message will be displayed + * at a time and this depends on the prioritization of the messages within the template. (This can + * be changed by using the `ng-messages-multiple` or `multiple` attribute on the directive container.) + * + * A remote template can also be used to promote message reusability and messages can also be + * overridden. + * + * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`. + * + * @usage + * ```html + * + * + * ... + * ... + * ... + * + * + * + * + * ... + * ... + * ... + * + * ``` + * + * @param {string} ngMessages an angular expression evaluating to a key/value object + * (this is typically the $error object on an ngModel instance). + * @param {string=} ngMessagesMultiple|multiple when set, all messages will be displayed with true + * + * @example + * + * + *
+ * + *
myForm.myName.$error = {{ myForm.myName.$error | json }}
+ * + *
+ *
You did not enter a field
+ *
Your field is too short
+ *
Your field is too long
+ *
+ *
+ *
+ * + * angular.module('ngMessagesExample', ['ngMessages']); + * + *
+ */ + .directive('ngMessages', ['$animate', function($animate) { + var ACTIVE_CLASS = 'ng-active'; + var INACTIVE_CLASS = 'ng-inactive'; + + return { + require: 'ngMessages', + restrict: 'AE', + controller: ['$element', '$scope', '$attrs', function($element, $scope, $attrs) { + var ctrl = this; + var latestKey = 0; + var nextAttachId = 0; + + this.getAttachId = function getAttachId() { return nextAttachId++; }; + + var messages = this.messages = {}; + var renderLater, cachedCollection; + + this.render = function(collection) { + collection = collection || {}; + + renderLater = false; + cachedCollection = collection; + + // this is true if the attribute is empty or if the attribute value is truthy + var multiple = isAttrTruthy($scope, $attrs.ngMessagesMultiple) || + isAttrTruthy($scope, $attrs.multiple); + + var unmatchedMessages = []; + var matchedKeys = {}; + var messageItem = ctrl.head; + var messageFound = false; + var totalMessages = 0; + + // we use != instead of !== to allow for both undefined and null values + while (messageItem != null) { + totalMessages++; + var messageCtrl = messageItem.message; + + var messageUsed = false; + if (!messageFound) { + forEach(collection, function(value, key) { + if (!messageUsed && truthy(value) && messageCtrl.test(key)) { + // this is to prevent the same error name from showing up twice + if (matchedKeys[key]) return; + matchedKeys[key] = true; + + messageUsed = true; + messageCtrl.attach(); + } + }); + } + + if (messageUsed) { + // unless we want to display multiple messages then we should + // set a flag here to avoid displaying the next message in the list + messageFound = !multiple; + } else { + unmatchedMessages.push(messageCtrl); + } + + messageItem = messageItem.next; + } + + forEach(unmatchedMessages, function(messageCtrl) { + messageCtrl.detach(); + }); + + unmatchedMessages.length !== totalMessages + ? $animate.setClass($element, ACTIVE_CLASS, INACTIVE_CLASS) + : $animate.setClass($element, INACTIVE_CLASS, ACTIVE_CLASS); + }; + + $scope.$watchCollection($attrs.ngMessages || $attrs['for'], ctrl.render); + + // If the element is destroyed, proactively destroy all the currently visible messages + $element.on('$destroy', function() { + forEach(messages, function(item) { + item.message.detach(); + }); + }); + + this.reRender = function() { + if (!renderLater) { + renderLater = true; + $scope.$evalAsync(function() { + if (renderLater) { + cachedCollection && ctrl.render(cachedCollection); + } + }); + } + }; + + this.register = function(comment, messageCtrl) { + var nextKey = latestKey.toString(); + messages[nextKey] = { + message: messageCtrl + }; + insertMessageNode($element[0], comment, nextKey); + comment.$$ngMessageNode = nextKey; + latestKey++; + + ctrl.reRender(); + }; + + this.deregister = function(comment) { + var key = comment.$$ngMessageNode; + delete comment.$$ngMessageNode; + removeMessageNode($element[0], comment, key); + delete messages[key]; + ctrl.reRender(); + }; + + function findPreviousMessage(parent, comment) { + var prevNode = comment; + var parentLookup = []; + + while (prevNode && prevNode !== parent) { + var prevKey = prevNode.$$ngMessageNode; + if (prevKey && prevKey.length) { + return messages[prevKey]; + } + + // dive deeper into the DOM and examine its children for any ngMessage + // comments that may be in an element that appears deeper in the list + if (prevNode.childNodes.length && parentLookup.indexOf(prevNode) == -1) { + parentLookup.push(prevNode); + prevNode = prevNode.childNodes[prevNode.childNodes.length - 1]; + } else if (prevNode.previousSibling) { + prevNode = prevNode.previousSibling; + } else { + prevNode = prevNode.parentNode; + parentLookup.push(prevNode); + } + } + } + + function insertMessageNode(parent, comment, key) { + var messageNode = messages[key]; + if (!ctrl.head) { + ctrl.head = messageNode; + } else { + var match = findPreviousMessage(parent, comment); + if (match) { + messageNode.next = match.next; + match.next = messageNode; + } else { + messageNode.next = ctrl.head; + ctrl.head = messageNode; + } + } + } + + function removeMessageNode(parent, comment, key) { + var messageNode = messages[key]; + + var match = findPreviousMessage(parent, comment); + if (match) { + match.next = messageNode.next; + } else { + ctrl.head = messageNode.next; + } + } + }] + }; + + function isAttrTruthy(scope, attr) { + return (isString(attr) && attr.length === 0) || //empty attribute + truthy(scope.$eval(attr)); + } + + function truthy(val) { + return isString(val) ? val.length : !!val; + } + }]) + + /** + * @ngdoc directive + * @name ngMessagesInclude + * @restrict AE + * @scope + * + * @description + * `ngMessagesInclude` is a directive with the purpose to import existing ngMessage template + * code from a remote template and place the downloaded template code into the exact spot + * that the ngMessagesInclude directive is placed within the ngMessages container. This allows + * for a series of pre-defined messages to be reused and also allows for the developer to + * determine what messages are overridden due to the placement of the ngMessagesInclude directive. + * + * @usage + * ```html + * + * + * ... + * + * + * + * + * ... + * + * ``` + * + * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`. + * + * @param {string} ngMessagesInclude|src a string value corresponding to the remote template. + */ + .directive('ngMessagesInclude', + ['$templateRequest', '$document', '$compile', function($templateRequest, $document, $compile) { + + return { + restrict: 'AE', + require: '^^ngMessages', // we only require this for validation sake + link: function($scope, element, attrs) { + var src = attrs.ngMessagesInclude || attrs.src; + $templateRequest(src).then(function(html) { + $compile(html)($scope, function(contents) { + element.after(contents); + + // the anchor is placed for debugging purposes + var comment = $compile.$$createComment ? + $compile.$$createComment('ngMessagesInclude', src) : + $document[0].createComment(' ngMessagesInclude: ' + src + ' '); + var anchor = jqLite(comment); + element.after(anchor); + + // we don't want to pollute the DOM anymore by keeping an empty directive element + element.remove(); + }); + }); + } + }; + }]) + + /** + * @ngdoc directive + * @name ngMessage + * @restrict AE + * @scope + * + * @description + * `ngMessage` is a directive with the purpose to show and hide a particular message. + * For `ngMessage` to operate, a parent `ngMessages` directive on a parent DOM element + * must be situated since it determines which messages are visible based on the state + * of the provided key/value map that `ngMessages` listens on. + * + * More information about using `ngMessage` can be found in the + * {@link module:ngMessages `ngMessages` module documentation}. + * + * @usage + * ```html + * + * + * ... + * ... + * + * + * + * + * ... + * ... + * + * ``` + * + * @param {expression} ngMessage|when a string value corresponding to the message key. + */ + .directive('ngMessage', ngMessageDirectiveFactory()) + + + /** + * @ngdoc directive + * @name ngMessageExp + * @restrict AE + * @priority 1 + * @scope + * + * @description + * `ngMessageExp` is a directive with the purpose to show and hide a particular message. + * For `ngMessageExp` to operate, a parent `ngMessages` directive on a parent DOM element + * must be situated since it determines which messages are visible based on the state + * of the provided key/value map that `ngMessages` listens on. + * + * @usage + * ```html + * + * + * ... + * + * + * + * + * ... + * + * ``` + * + * {@link module:ngMessages Click here} to learn more about `ngMessages` and `ngMessage`. + * + * @param {expression} ngMessageExp|whenExp an expression value corresponding to the message key. + */ + .directive('ngMessageExp', ngMessageDirectiveFactory()); + +function ngMessageDirectiveFactory() { + return ['$animate', function($animate) { + return { + restrict: 'AE', + transclude: 'element', + priority: 1, // must run before ngBind, otherwise the text is set on the comment + terminal: true, + require: '^^ngMessages', + link: function(scope, element, attrs, ngMessagesCtrl, $transclude) { + var commentNode = element[0]; + + var records; + var staticExp = attrs.ngMessage || attrs.when; + var dynamicExp = attrs.ngMessageExp || attrs.whenExp; + var assignRecords = function(items) { + records = items + ? (isArray(items) + ? items + : items.split(/[\s,]+/)) + : null; + ngMessagesCtrl.reRender(); + }; + + if (dynamicExp) { + assignRecords(scope.$eval(dynamicExp)); + scope.$watchCollection(dynamicExp, assignRecords); + } else { + assignRecords(staticExp); + } + + var currentElement, messageCtrl; + ngMessagesCtrl.register(commentNode, messageCtrl = { + test: function(name) { + return contains(records, name); + }, + attach: function() { + if (!currentElement) { + $transclude(scope, function(elm) { + $animate.enter(elm, null, element); + currentElement = elm; + + // Each time we attach this node to a message we get a new id that we can match + // when we are destroying the node later. + var $$attachId = currentElement.$$attachId = ngMessagesCtrl.getAttachId(); + + // in the event that the element or a parent element is destroyed + // by another structural directive then it's time + // to deregister the message from the controller + currentElement.on('$destroy', function() { + if (currentElement && currentElement.$$attachId === $$attachId) { + ngMessagesCtrl.deregister(commentNode); + messageCtrl.detach(); + } + }); + }); + } + }, + detach: function() { + if (currentElement) { + var elm = currentElement; + currentElement = null; + $animate.leave(elm); + } + } + }); + } + }; + }]; + + function contains(collection, key) { + if (collection) { + return isArray(collection) + ? collection.indexOf(key) >= 0 + : collection.hasOwnProperty(key); + } + } +} + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-messages.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-messages.min.js new file mode 100644 index 00000000..d09503c5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-messages.min.js @@ -0,0 +1,12 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(A,d){'use strict';function p(){return["$animate",function(w){return{restrict:"AE",transclude:"element",priority:1,terminal:!0,require:"^^ngMessages",link:function(n,l,a,c,m){var k=l[0],f,q=a.ngMessage||a.when;a=a.ngMessageExp||a.whenExp;var d=function(a){f=a?x(a)?a:a.split(/[\s,]+/):null;c.reRender()};a?(d(n.$eval(a)),n.$watchCollection(a,d)):d(q);var e,r;c.register(k,r={test:function(a){var g=f;a=g?x(g)?0<=g.indexOf(a):g.hasOwnProperty(a):void 0;return a},attach:function(){e||m(n,function(a){w.enter(a, +null,l);e=a;var g=e.$$attachId=c.getAttachId();e.on("$destroy",function(){e&&e.$$attachId===g&&(c.deregister(k),r.detach())})})},detach:function(){if(e){var a=e;e=null;w.leave(a)}}})}}}]}var x=d.isArray,t=d.forEach,y=d.isString,z=d.element;d.module("ngMessages",[]).directive("ngMessages",["$animate",function(d){function n(a,c){return y(c)&&0===c.length||l(a.$eval(c))}function l(a){return y(a)?a.length:!!a}return{require:"ngMessages",restrict:"AE",controller:["$element","$scope","$attrs",function(a, +c,m){function k(a,c){for(var b=c,f=[];b&&b!==a;){var h=b.$$ngMessageNode;if(h&&h.length)return e[h];b.childNodes.length&&-1==f.indexOf(b)?(f.push(b),b=b.childNodes[b.childNodes.length-1]):b.previousSibling?b=b.previousSibling:(b=b.parentNode,f.push(b))}}var f=this,q=0,p=0;this.getAttachId=function(){return p++};var e=this.messages={},r,s;this.render=function(g){g=g||{};r=!1;s=g;for(var e=n(c,m.ngMessagesMultiple)||n(c,m.multiple),b=[],q={},h=f.head,k=!1,p=0;null!=h;){p++;var u=h.message,v=!1;k||t(g, +function(a,b){!v&&l(a)&&u.test(b)&&!q[b]&&(v=q[b]=!0,u.attach())});v?k=!e:b.push(u);h=h.next}t(b,function(a){a.detach()});b.length!==p?d.setClass(a,"ng-active","ng-inactive"):d.setClass(a,"ng-inactive","ng-active")};c.$watchCollection(m.ngMessages||m["for"],f.render);a.on("$destroy",function(){t(e,function(a){a.message.detach()})});this.reRender=function(){r||(r=!0,c.$evalAsync(function(){r&&s&&f.render(s)}))};this.register=function(g,c){var b=q.toString();e[b]={message:c};var d=a[0],h=e[b];f.head? +(d=k(d,g))?(h.next=d.next,d.next=h):(h.next=f.head,f.head=h):f.head=h;g.$$ngMessageNode=b;q++;f.reRender()};this.deregister=function(c){var d=c.$$ngMessageNode;delete c.$$ngMessageNode;var b=e[d];(c=k(a[0],c))?c.next=b.next:f.head=b.next;delete e[d];f.reRender()}}]}}]).directive("ngMessagesInclude",["$templateRequest","$document","$compile",function(d,n,l){return{restrict:"AE",require:"^^ngMessages",link:function(a,c,m){var k=m.ngMessagesInclude||m.src;d(k).then(function(d){l(d)(a,function(a){c.after(a); +a=l.$$createComment?l.$$createComment("ngMessagesInclude",k):n[0].createComment(" ngMessagesInclude: "+k+" ");a=z(a);c.after(a);c.remove()})})}}}]).directive("ngMessage",p()).directive("ngMessageExp",p())})(window,window.angular); +//# sourceMappingURL=angular-messages.min.js.map diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-messages.min.js.map b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-messages.min.js.map new file mode 100644 index 00000000..2653ace9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-messages.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-messages.min.js", +"lineCount":11, +"mappings":"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", +"sources":["angular-messages.js"], +"names":["window","angular","ngMessageDirectiveFactory","$animate","restrict","transclude","priority","terminal","require","link","scope","element","attrs","ngMessagesCtrl","$transclude","commentNode","records","staticExp","ngMessage","when","dynamicExp","ngMessageExp","whenExp","assignRecords","items","isArray","split","reRender","$eval","$watchCollection","currentElement","messageCtrl","register","test","name","collection","indexOf","hasOwnProperty","attach","elm","enter","$$attachId","getAttachId","on","deregister","detach","leave","forEach","isString","jqLite","module","directive","isAttrTruthy","attr","length","truthy","val","controller","$element","$scope","$attrs","findPreviousMessage","parent","comment","prevNode","parentLookup","prevKey","$$ngMessageNode","messages","childNodes","push","previousSibling","parentNode","ctrl","latestKey","nextAttachId","this.getAttachId","renderLater","cachedCollection","render","this.render","multiple","ngMessagesMultiple","unmatchedMessages","matchedKeys","messageItem","head","messageFound","totalMessages","message","messageUsed","value","key","next","setClass","ACTIVE_CLASS","INACTIVE_CLASS","ngMessages","item","this.reRender","$evalAsync","this.register","nextKey","toString","messageNode","match","this.deregister","$templateRequest","$document","$compile","src","ngMessagesInclude","then","html","contents","after","$$createComment","createComment","anchor","remove"] +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-mocks.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-mocks.js new file mode 100644 index 00000000..598b1c29 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-mocks.js @@ -0,0 +1,3006 @@ +/** + * @license AngularJS v1.5.5 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) { + +'use strict'; + +/** + * @ngdoc object + * @name angular.mock + * @description + * + * Namespace from 'angular-mocks.js' which contains testing related code. + */ +angular.mock = {}; + +/** + * ! This is a private undocumented service ! + * + * @name $browser + * + * @description + * This service is a mock implementation of {@link ng.$browser}. It provides fake + * implementation for commonly used browser apis that are hard to test, e.g. setTimeout, xhr, + * cookies, etc... + * + * The api of this service is the same as that of the real {@link ng.$browser $browser}, except + * that there are several helper methods available which can be used in tests. + */ +angular.mock.$BrowserProvider = function() { + this.$get = function() { + return new angular.mock.$Browser(); + }; +}; + +angular.mock.$Browser = function() { + var self = this; + + this.isMock = true; + self.$$url = "http://server/"; + self.$$lastUrl = self.$$url; // used by url polling fn + self.pollFns = []; + + // TODO(vojta): remove this temporary api + self.$$completeOutstandingRequest = angular.noop; + self.$$incOutstandingRequestCount = angular.noop; + + + // register url polling fn + + self.onUrlChange = function(listener) { + self.pollFns.push( + function() { + if (self.$$lastUrl !== self.$$url || self.$$state !== self.$$lastState) { + self.$$lastUrl = self.$$url; + self.$$lastState = self.$$state; + listener(self.$$url, self.$$state); + } + } + ); + + return listener; + }; + + self.$$applicationDestroyed = angular.noop; + self.$$checkUrlChange = angular.noop; + + self.deferredFns = []; + self.deferredNextId = 0; + + self.defer = function(fn, delay) { + delay = delay || 0; + self.deferredFns.push({time:(self.defer.now + delay), fn:fn, id: self.deferredNextId}); + self.deferredFns.sort(function(a, b) { return a.time - b.time;}); + return self.deferredNextId++; + }; + + + /** + * @name $browser#defer.now + * + * @description + * Current milliseconds mock time. + */ + self.defer.now = 0; + + + self.defer.cancel = function(deferId) { + var fnIndex; + + angular.forEach(self.deferredFns, function(fn, index) { + if (fn.id === deferId) fnIndex = index; + }); + + if (angular.isDefined(fnIndex)) { + self.deferredFns.splice(fnIndex, 1); + return true; + } + + return false; + }; + + + /** + * @name $browser#defer.flush + * + * @description + * Flushes all pending requests and executes the defer callbacks. + * + * @param {number=} number of milliseconds to flush. See {@link #defer.now} + */ + self.defer.flush = function(delay) { + if (angular.isDefined(delay)) { + self.defer.now += delay; + } else { + if (self.deferredFns.length) { + self.defer.now = self.deferredFns[self.deferredFns.length - 1].time; + } else { + throw new Error('No deferred tasks to be flushed'); + } + } + + while (self.deferredFns.length && self.deferredFns[0].time <= self.defer.now) { + self.deferredFns.shift().fn(); + } + }; + + self.$$baseHref = '/'; + self.baseHref = function() { + return this.$$baseHref; + }; +}; +angular.mock.$Browser.prototype = { + + /** + * @name $browser#poll + * + * @description + * run all fns in pollFns + */ + poll: function poll() { + angular.forEach(this.pollFns, function(pollFn) { + pollFn(); + }); + }, + + url: function(url, replace, state) { + if (angular.isUndefined(state)) { + state = null; + } + if (url) { + this.$$url = url; + // Native pushState serializes & copies the object; simulate it. + this.$$state = angular.copy(state); + return this; + } + + return this.$$url; + }, + + state: function() { + return this.$$state; + }, + + notifyWhenNoOutstandingRequests: function(fn) { + fn(); + } +}; + + +/** + * @ngdoc provider + * @name $exceptionHandlerProvider + * + * @description + * Configures the mock implementation of {@link ng.$exceptionHandler} to rethrow or to log errors + * passed to the `$exceptionHandler`. + */ + +/** + * @ngdoc service + * @name $exceptionHandler + * + * @description + * Mock implementation of {@link ng.$exceptionHandler} that rethrows or logs errors passed + * to it. See {@link ngMock.$exceptionHandlerProvider $exceptionHandlerProvider} for configuration + * information. + * + * + * ```js + * 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]]); + * }); + * }); + * }); + * ``` + */ + +angular.mock.$ExceptionHandlerProvider = function() { + var handler; + + /** + * @ngdoc method + * @name $exceptionHandlerProvider#mode + * + * @description + * Sets the logging mode. + * + * @param {string} mode Mode of operation, defaults to `rethrow`. + * + * - `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 {@link ngMock.$log#assertEmpty assertEmpty()} and + * {@link ngMock.$log#reset reset()} + * - `rethrow`: If any errors are passed to 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. + * For any implementations that expect exceptions to be thrown, the `rethrow` mode + * will also maintain a log of thrown errors. + */ + this.mode = function(mode) { + + switch (mode) { + case 'log': + case 'rethrow': + var errors = []; + handler = function(e) { + if (arguments.length == 1) { + errors.push(e); + } else { + errors.push([].slice.call(arguments, 0)); + } + if (mode === "rethrow") { + throw e; + } + }; + handler.errors = errors; + break; + default: + throw new Error("Unknown mode '" + mode + "', only 'log'/'rethrow' modes are allowed!"); + } + }; + + this.$get = function() { + return handler; + }; + + this.mode('rethrow'); +}; + + +/** + * @ngdoc service + * @name $log + * + * @description + * Mock implementation of {@link ng.$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`. + * + */ +angular.mock.$LogProvider = function() { + var debug = true; + + function concat(array1, array2, index) { + return array1.concat(Array.prototype.slice.call(array2, index)); + } + + this.debugEnabled = function(flag) { + if (angular.isDefined(flag)) { + debug = flag; + return this; + } else { + return debug; + } + }; + + this.$get = function() { + var $log = { + log: function() { $log.log.logs.push(concat([], arguments, 0)); }, + warn: function() { $log.warn.logs.push(concat([], arguments, 0)); }, + info: function() { $log.info.logs.push(concat([], arguments, 0)); }, + error: function() { $log.error.logs.push(concat([], arguments, 0)); }, + debug: function() { + if (debug) { + $log.debug.logs.push(concat([], arguments, 0)); + } + } + }; + + /** + * @ngdoc method + * @name $log#reset + * + * @description + * Reset all of the logging arrays to empty. + */ + $log.reset = function() { + /** + * @ngdoc property + * @name $log#log.logs + * + * @description + * Array of messages logged using {@link ng.$log#log `log()`}. + * + * @example + * ```js + * $log.log('Some Log'); + * var first = $log.log.logs.unshift(); + * ``` + */ + $log.log.logs = []; + /** + * @ngdoc property + * @name $log#info.logs + * + * @description + * Array of messages logged using {@link ng.$log#info `info()`}. + * + * @example + * ```js + * $log.info('Some Info'); + * var first = $log.info.logs.unshift(); + * ``` + */ + $log.info.logs = []; + /** + * @ngdoc property + * @name $log#warn.logs + * + * @description + * Array of messages logged using {@link ng.$log#warn `warn()`}. + * + * @example + * ```js + * $log.warn('Some Warning'); + * var first = $log.warn.logs.unshift(); + * ``` + */ + $log.warn.logs = []; + /** + * @ngdoc property + * @name $log#error.logs + * + * @description + * Array of messages logged using {@link ng.$log#error `error()`}. + * + * @example + * ```js + * $log.error('Some Error'); + * var first = $log.error.logs.unshift(); + * ``` + */ + $log.error.logs = []; + /** + * @ngdoc property + * @name $log#debug.logs + * + * @description + * Array of messages logged using {@link ng.$log#debug `debug()`}. + * + * @example + * ```js + * $log.debug('Some Error'); + * var first = $log.debug.logs.unshift(); + * ``` + */ + $log.debug.logs = []; + }; + + /** + * @ngdoc method + * @name $log#assertEmpty + * + * @description + * Assert that all of the logging methods have no logged messages. If any messages are present, + * an exception is thrown. + */ + $log.assertEmpty = function() { + var errors = []; + angular.forEach(['error', 'warn', 'info', 'log', 'debug'], function(logLevel) { + angular.forEach($log[logLevel].logs, function(log) { + angular.forEach(log, function(logItem) { + errors.push('MOCK $log (' + logLevel + '): ' + String(logItem) + '\n' + + (logItem.stack || '')); + }); + }); + }); + if (errors.length) { + errors.unshift("Expected $log to be empty! Either a message was logged unexpectedly, or " + + "an expected log message was not checked and removed:"); + errors.push(''); + throw new Error(errors.join('\n---------\n')); + } + }; + + $log.reset(); + return $log; + }; +}; + + +/** + * @ngdoc service + * @name $interval + * + * @description + * Mock implementation of the $interval service. + * + * Use {@link ngMock.$interval#flush `$interval.flush(millis)`} to + * move forward by `millis` milliseconds and trigger any functions scheduled to run in that + * time. + * + * @param {function()} fn A function that should be called repeatedly. + * @param {number} delay Number of milliseconds between each function call. + * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat + * indefinitely. + * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise + * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @param {...*=} Pass additional parameters to the executed function. + * @returns {promise} A promise which will be notified on each iteration. + */ +angular.mock.$IntervalProvider = function() { + this.$get = ['$browser', '$rootScope', '$q', '$$q', + function($browser, $rootScope, $q, $$q) { + var repeatFns = [], + nextRepeatId = 0, + now = 0; + + var $interval = function(fn, delay, count, invokeApply) { + var hasParams = arguments.length > 4, + args = hasParams ? Array.prototype.slice.call(arguments, 4) : [], + iteration = 0, + skipApply = (angular.isDefined(invokeApply) && !invokeApply), + deferred = (skipApply ? $$q : $q).defer(), + promise = deferred.promise; + + count = (angular.isDefined(count)) ? count : 0; + promise.then(null, null, (!hasParams) ? fn : function() { + fn.apply(null, args); + }); + + promise.$$intervalId = nextRepeatId; + + function tick() { + deferred.notify(iteration++); + + if (count > 0 && iteration >= count) { + var fnIndex; + deferred.resolve(iteration); + + angular.forEach(repeatFns, function(fn, index) { + if (fn.id === promise.$$intervalId) fnIndex = index; + }); + + if (angular.isDefined(fnIndex)) { + repeatFns.splice(fnIndex, 1); + } + } + + if (skipApply) { + $browser.defer.flush(); + } else { + $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 (angular.isDefined(fnIndex)) { + 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 = toInt(match[9] + match[10]); + tzMin = toInt(match[9] + match[11]); + } + date.setUTCFullYear(toInt(match[1]), toInt(match[2]) - 1, toInt(match[3])); + date.setUTCHours(toInt(match[4] || 0) - tzHour, + toInt(match[5] || 0) - tzMin, + toInt(match[6] || 0), + toInt(match[7] || 0)); + return date; + } + return string; +} + +function toInt(str) { + return parseInt(str, 10); +} + +function padNumberInMock(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 padNumberInMock(self.origDate.getUTCFullYear(), 4) + '-' + + padNumberInMock(self.origDate.getUTCMonth() + 1, 2) + '-' + + padNumberInMock(self.origDate.getUTCDate(), 2) + 'T' + + padNumberInMock(self.origDate.getUTCHours(), 2) + ':' + + padNumberInMock(self.origDate.getUTCMinutes(), 2) + ':' + + padNumberInMock(self.origDate.getUTCSeconds(), 2) + '.' + + padNumberInMock(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 */ + + +/** + * @ngdoc service + * @name $animate + * + * @description + * Mock implementation of the {@link ng.$animate `$animate`} service. Exposes two additional methods + * for testing animations. + */ +angular.mock.animate = angular.module('ngAnimateMock', ['ng']) + + .config(['$provide', function($provide) { + + $provide.factory('$$forceReflow', function() { + function reflowFn() { + reflowFn.totalReflows++; + } + reflowFn.totalReflows = 0; + return reflowFn; + }); + + $provide.factory('$$animateAsyncRun', function() { + var queue = []; + var queueFn = function() { + return function(fn) { + queue.push(fn); + }; + }; + queueFn.flush = function() { + if (queue.length === 0) return false; + + for (var i = 0; i < queue.length; i++) { + queue[i](); + } + queue = []; + + return true; + }; + return queueFn; + }); + + $provide.decorator('$$animateJs', ['$delegate', function($delegate) { + var runners = []; + + var animateJsConstructor = function() { + var animator = $delegate.apply($delegate, arguments); + // If no javascript animation is found, animator is undefined + if (animator) { + runners.push(animator); + } + return animator; + }; + + animateJsConstructor.$closeAndFlush = function() { + runners.forEach(function(runner) { + runner.end(); + }); + runners = []; + }; + + return animateJsConstructor; + }]); + + $provide.decorator('$animateCss', ['$delegate', function($delegate) { + var runners = []; + + var animateCssConstructor = function(element, options) { + var animator = $delegate(element, options); + runners.push(animator); + return animator; + }; + + animateCssConstructor.$closeAndFlush = function() { + runners.forEach(function(runner) { + runner.end(); + }); + runners = []; + }; + + return animateCssConstructor; + }]); + + $provide.decorator('$animate', ['$delegate', '$timeout', '$browser', '$$rAF', '$animateCss', '$$animateJs', + '$$forceReflow', '$$animateAsyncRun', '$rootScope', + function($delegate, $timeout, $browser, $$rAF, $animateCss, $$animateJs, + $$forceReflow, $$animateAsyncRun, $rootScope) { + var animate = { + queue: [], + cancel: $delegate.cancel, + on: $delegate.on, + off: $delegate.off, + pin: $delegate.pin, + get reflows() { + return $$forceReflow.totalReflows; + }, + enabled: $delegate.enabled, + /** + * @ngdoc method + * @name $animate#closeAndFlush + * @description + * + * This method will close all pending animations (both {@link ngAnimate#javascript-based-animations Javascript} + * and {@link ngAnimate.$animateCss CSS}) and it will also flush any remaining animation frames and/or callbacks. + */ + closeAndFlush: function() { + // we allow the flush command to swallow the errors + // because depending on whether CSS or JS animations are + // used, there may not be a RAF flush. The primary flush + // at the end of this function must throw an exception + // because it will track if there were pending animations + this.flush(true); + $animateCss.$closeAndFlush(); + $$animateJs.$closeAndFlush(); + this.flush(); + }, + /** + * @ngdoc method + * @name $animate#flush + * @description + * + * This method is used to flush the pending callbacks and animation frames to either start + * an animation or conclude an animation. Note that this will not actually close an + * actively running animation (see {@link ngMock.$animate#closeAndFlush `closeAndFlush()`} for that). + */ + flush: function(hideErrors) { + $rootScope.$digest(); + + var doNextRun, somethingFlushed = false; + do { + doNextRun = false; + + if ($$rAF.queue.length) { + $$rAF.flush(); + doNextRun = somethingFlushed = true; + } + + if ($$animateAsyncRun.flush()) { + doNextRun = somethingFlushed = true; + } + } while (doNextRun); + + if (!somethingFlushed && !hideErrors) { + throw new Error('No pending animations ready to be closed or flushed'); + } + + $rootScope.$digest(); + } + }; + + angular.forEach( + ['animate','enter','leave','move','addClass','removeClass','setClass'], function(method) { + animate[method] = function() { + animate.queue.push({ + event: method, + element: arguments[0], + options: arguments[arguments.length - 1], + args: arguments + }); + return $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 module code + angular + .module('MyApp', []) + .controller('MyController', MyController); + + // The controller code + function MyController($scope, $http) { + var authToken; + + $http.get('/auth.py').then(function(response) { + authToken = response.headers('A-Token'); + $scope.user = response.data; + }); + + $scope.saveMessage = function(message) { + var headers = { 'Authorization': authToken }; + $scope.status = 'Saving...'; + + $http.post('/add-msg.py', message, { headers: headers } ).then(function(response) { + $scope.status = ''; + }).catch(function() { + $scope.status = 'Failed...'; + }); + }; + } + ``` + * + * Now we setup the mock backend and create the test specs: + * + ```js + // testing controller + describe('MyController', function() { + var $httpBackend, $rootScope, createController, authRequestHandler; + + // Set up the module + beforeEach(module('MyApp')); + + beforeEach(inject(function($injector) { + // Set up the mock http service responses + $httpBackend = $injector.get('$httpBackend'); + // backend definition common for all tests + authRequestHandler = $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 fail authentication', function() { + + // Notice how you can change the response even after it was set + authRequestHandler.respond(401, ''); + + $httpBackend.expectGET('/auth.py'); + var controller = createController(); + $httpBackend.flush(); + expect($rootScope.status).toBe('Failed...'); + }); + + + 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 sent, 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(); + }); + }); + ``` + * + * ## Dynamic responses + * + * You define a response to a request by chaining a call to `respond()` onto a definition or expectation. + * If you provide a **callback** as the first parameter to `respond(callback)` then you can dynamically generate + * a response based on the properties of the request. + * + * The `callback` function should be of the form `function(method, url, data, headers, params)`. + * + * ### Query parameters + * + * By default, query parameters on request URLs are parsed into the `params` object. So a request URL + * of `/list?q=searchstr&orderby=-name` would set `params` to be `{q: 'searchstr', orderby: '-name'}`. + * + * ### Regex parameter matching + * + * If an expectation or definition uses a **regex** to match the URL, you can provide an array of **keys** via a + * `params` argument. The index of each **key** in the array will match the index of a **group** in the + * **regex**. + * + * The `params` object in the **callback** will now have properties with these keys, which hold the value of the + * corresponding **group** in the **regex**. + * + * This also applies to the `when` and `expect` shortcut methods. + * + * + * ```js + * $httpBackend.expect('GET', /\/user\/(.+)/, undefined, undefined, ['id']) + * .respond(function(method, url, data, headers, params) { + * // for requested url of '/user/1234' params is {id: '1234'} + * }); + * + * $httpBackend.whenPATCH(/\/user\/(.+)\/article\/(.+)/, undefined, undefined, ['user', 'article']) + * .respond(function(method, url, data, headers, params) { + * // for url of '/user/1234/article/567' params is {user: '1234', article: '567'} + * }); + * ``` + * + * ## Matching route requests + * + * For extra convenience, `whenRoute` and `expectRoute` shortcuts are available. These methods offer colon + * delimited matching of the url path, ignoring the query string. This allows declarations + * similar to how application routes are configured with `$routeProvider`. Because these methods convert + * the definition url to regex, declaration order is important. Combined with query parameter parsing, + * the following is possible: + * + ```js + $httpBackend.whenRoute('GET', '/users/:id') + .respond(function(method, url, data, headers, params) { + return [200, MockUserList[Number(params.id)]]; + }); + + $httpBackend.whenRoute('GET', '/users') + .respond(function(method, url, data, headers, params) { + var userList = angular.copy(MockUserList), + defaultSort = 'lastName', + count, pages, isPrevious, isNext; + + // paged api response '/v1/users?page=2' + params.page = Number(params.page) || 1; + + // query for last names '/v1/users?q=Archer' + if (params.q) { + userList = $filter('filter')({lastName: params.q}); + } + + pages = Math.ceil(userList.length / pagingLength); + isPrevious = params.page > 1; + isNext = params.page < pages; + + return [200, { + count: userList.length, + previous: isPrevious, + next: isNext, + // sort field -> '/v1/users?sortBy=firstName' + results: $filter('orderBy')(userList, params.sortBy || defaultSort) + .splice((params.page - 1) * pagingLength, pagingLength) + }]; + }); + ``` + */ +angular.mock.$HttpBackendProvider = function() { + this.$get = ['$rootScope', '$timeout', 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, $timeout, $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, headers]; + }; + } + + // TODO(vojta): change params to: method, url, data, headers, callback + function $httpBackend(method, url, data, callback, headers, timeout, withCredentials, responseType, eventHandlers, uploadEventHandlers) { + + var xhr = new MockXhr(), + expectation = expectations[0], + wasExpected = false; + + xhr.$$events = eventHandlers; + xhr.upload.$$events = uploadEventHandlers; + + 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) : $timeout(handleTimeout, timeout); + } + + return handleResponse; + + function handleResponse() { + var response = wrapped.response(method, url, data, headers, wrapped.params(url)); + 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, responseType); + } 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change how a matched request is handled. + * + * - respond – + * ```js + * {function([status,] data[, headers, statusText]) + * | function(function(method, url, data, headers, params)} + * ``` + * – 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 (Array|Object|string), + * response headers (Object), and the text for the status (string). The respond method returns + * the `requestHandler` object for possible overrides. + */ + $httpBackend.when = function(method, url, data, headers, keys) { + var definition = new MockHttpExpectation(method, url, data, headers, keys), + chain = { + respond: function(status, data, headers, statusText) { + definition.passThrough = undefined; + definition.response = createResponse(status, data, headers, statusText); + return chain; + } + }; + + if ($browser) { + chain.passThrough = function() { + definition.response = undefined; + definition.passThrough = true; + return chain; + }; + } + + 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change how a matched request is handled. + */ + createShortMethods('when'); + + /** + * @ngdoc method + * @name $httpBackend#whenRoute + * @description + * Creates a new backend definition that compares only with the requested route. + * + * @param {string} method HTTP method. + * @param {string} url HTTP url string that supports colon param matching. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change how a matched request is handled. See #when for more info. + */ + $httpBackend.whenRoute = function(method, url) { + var pathObj = parseRoute(url); + return $httpBackend.when(method, pathObj.regexp, undefined, undefined, pathObj.keys); + }; + + function parseRoute(url) { + var ret = { + regexp: url + }, + keys = ret.keys = []; + + if (!url || !angular.isString(url)) return ret; + + url = url + .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('^' + url, 'i'); + return ret; + } + + /** + * @ngdoc method + * @name $httpBackend#expect + * @description + * Creates a new request expectation. + * + * @param {string} method HTTP method. + * @param {string|RegExp|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change how a matched request is handled. + * + * - respond – + * ``` + * { function([status,] data[, headers, statusText]) + * | function(function(method, url, data, headers, params)} + * ``` + * – 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 (Array|Object|string), + * response headers (Object), and the text for the status (string). The respond method returns + * the `requestHandler` object for possible overrides. + */ + $httpBackend.expect = function(method, url, data, headers, keys) { + var expectation = new MockHttpExpectation(method, url, data, headers, keys), + chain = { + respond: function(status, data, headers, statusText) { + expectation.response = createResponse(status, data, headers, statusText); + return chain; + } + }; + + expectations.push(expectation); + return chain; + }; + + /** + * @ngdoc method + * @name $httpBackend#expectGET + * @description + * Creates a new request expectation for GET requests. For more info see `expect()`. + * + * @param {string|RegExp|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {Object=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {Object=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {Object=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change 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|function(string)} url HTTP url or function that receives an url + * and returns true if the url matches the current definition. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described above. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change how a matched request is handled. + */ + createShortMethods('expect'); + + /** + * @ngdoc method + * @name $httpBackend#expectRoute + * @description + * Creates a new request expectation that compares only with the requested route. + * + * @param {string} method HTTP method. + * @param {string} url HTTP url string that supports colon param matching. + * @returns {requestHandler} Returns an object with `respond` method that controls how a matched + * request is handled. You can save this object for later use and invoke `respond` again in + * order to change how a matched request is handled. See #expect for more info. + */ + $httpBackend.expectRoute = function(method, url) { + var pathObj = parseRoute(url); + return $httpBackend.expect(method, pathObj.regexp, undefined, undefined, pathObj.keys); + }; + + + /** + * @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, digest) { + if (digest !== false) $rootScope.$digest(); + if (!responses.length) throw new Error('No pending request to flush !'); + + if (angular.isDefined(count) && count !== null) { + while (count--) { + if (!responses.length) throw new Error('No more pending request to flush !'); + responses.shift()(); + } + } else { + while (responses.length) { + responses.shift()(); + } + } + $httpBackend.verifyNoOutstandingExpectation(digest); + }; + + + /** + * @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(digest) { + if (digest !== false) $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, keys) { + return $httpBackend[prefix](method, url, undefined, headers, keys); + }; + }); + + angular.forEach(['PUT', 'POST', 'PATCH'], function(method) { + $httpBackend[prefix + method] = function(url, data, headers, keys) { + return $httpBackend[prefix](method, url, data, headers, keys); + }; + }); + } +} + +function MockHttpExpectation(method, url, data, headers, keys) { + + 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); + if (angular.isFunction(url)) return url(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; + }; + + this.params = function(u) { + return angular.extend(parseQuery(), pathParams()); + + function pathParams() { + var keyObj = {}; + if (!url || !angular.isFunction(url.test) || !keys || keys.length === 0) return keyObj; + + var m = url.exec(u); + if (!m) return keyObj; + for (var i = 1, len = m.length; i < len; ++i) { + var key = keys[i - 1]; + var val = m[i]; + if (key && val) { + keyObj[key.name || key] = val; + } + } + + return keyObj; + } + + function parseQuery() { + var obj = {}, key_value, key, + queryStr = u.indexOf('?') > -1 + ? u.substring(u.indexOf('?') + 1) + : ""; + + angular.forEach(queryStr.split('&'), function(keyValue) { + if (keyValue) { + key_value = keyValue.replace(/\+/g,'%20').split('='); + key = tryDecodeURIComponent(key_value[0]); + if (angular.isDefined(key)) { + var val = angular.isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true; + if (!hasOwnProperty.call(obj, key)) { + obj[key] = val; + } else if (angular.isArray(obj[key])) { + obj[key].push(val); + } else { + obj[key] = [obj[key],val]; + } + } + } + }); + return obj; + } + function tryDecodeURIComponent(value) { + try { + return decodeURIComponent(value); + } catch (e) { + // Ignore any invalid uri component + } + } + }; +} + +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; + + // This section simulates the events on a real XHR object (and the upload object) + // When we are testing $httpBackend (inside the angular project) we make partial use of this + // but store the events directly ourselves on `$$events`, instead of going through the `addEventListener` + this.$$events = {}; + this.addEventListener = function(name, listener) { + if (angular.isUndefined(this.$$events[name])) this.$$events[name] = []; + this.$$events[name].push(listener); + }; + + this.upload = { + $$events: {}, + addEventListener: this.addEventListener + }; +} + + +/** + * @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 = ['$delegate', '$browser', 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 = ['$delegate', function($delegate) { + var rafFn = function(fn) { + var index = rafFn.queue.length; + rafFn.queue.push(fn); + return function() { + rafFn.queue.splice(index, 1); + }; + }; + + rafFn.queue = []; + rafFn.supported = $delegate.supported; + + rafFn.flush = function() { + if (rafFn.queue.length === 0) { + throw new Error('No rAF callbacks present'); + } + + var length = rafFn.queue.length; + for (var i = 0; i < length; i++) { + rafFn.queue[i](); + } + + rafFn.queue = rafFn.queue.slice(i); + }; + + return rafFn; +}]; + +/** + * + */ +var originalRootElement; +angular.mock.$RootElementProvider = function() { + this.$get = ['$injector', function($injector) { + originalRootElement = angular.element('
').data('$injector', $injector); + return originalRootElement; + }]; +}; + +/** + * @ngdoc service + * @name $controller + * @description + * A decorator for {@link ng.$controller} with additional `bindings` parameter, useful when testing + * controllers of directives that use {@link $compile#-bindtocontroller- `bindToController`}. + * + * + * ## Example + * + * ```js + * + * // Directive definition ... + * + * myMod.directive('myDirective', { + * controller: 'MyDirectiveController', + * bindToController: { + * name: '@' + * } + * }); + * + * + * // Controller definition ... + * + * myMod.controller('MyDirectiveController', ['$log', function($log) { + * $log.info(this.name); + * }]); + * + * + * // In a test ... + * + * describe('myDirectiveController', function() { + * it('should write the bound name to the log', inject(function($controller, $log) { + * var ctrl = $controller('MyDirectiveController', { /* no locals */ }, { name: 'Clark Kent' }); + * expect(ctrl.name).toEqual('Clark Kent'); + * expect($log.info.logs).toEqual(['Clark Kent']); + * })); + * }); + * + * ``` + * + * @param {Function|string} constructor 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 + * * if $controllerProvider#allowGlobals, check `window[constructor]` on the global + * `window` object (not recommended) + * + * The string can use the `controller as property` syntax, where the controller instance is published + * as the specified property on the `scope`; the `scope` must be injected into `locals` param for this + * to work correctly. + * + * @param {Object} locals Injection locals for Controller. + * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used + * to simulate the `bindToController` feature and simplify certain kinds of tests. + * @return {Object} Instance of given controller. + */ +angular.mock.$ControllerDecorator = ['$delegate', function($delegate) { + return function(expression, locals, later, ident) { + if (later && typeof later === 'object') { + var create = $delegate(expression, locals, true, ident); + angular.extend(create.instance, later); + return create(); + } + return $delegate(expression, locals, later, ident); + }; +}]; + +/** + * @ngdoc service + * @name $componentController + * @description + * A service that can be used to create instances of component controllers. + *
+ * Be aware that the controller will be instantiated and attached to the scope as specified in + * the component definition object. If you do not provide a `$scope` object in the `locals` param + * then the helper will create a new isolated scope as a child of `$rootScope`. + *
+ * @param {string} componentName the name of the component whose controller we want to instantiate + * @param {Object} locals Injection locals for Controller. + * @param {Object=} bindings Properties to add to the controller before invoking the constructor. This is used + * to simulate the `bindToController` feature and simplify certain kinds of tests. + * @param {string=} ident Override the property name to use when attaching the controller to the scope. + * @return {Object} Instance of requested controller. + */ +angular.mock.$ComponentControllerProvider = ['$compileProvider', function($compileProvider) { + this.$get = ['$controller','$injector', '$rootScope', function($controller, $injector, $rootScope) { + return function $componentController(componentName, locals, bindings, ident) { + // get all directives associated to the component name + var directives = $injector.get(componentName + 'Directive'); + // look for those directives that are components + var candidateDirectives = directives.filter(function(directiveInfo) { + // components have controller, controllerAs and restrict:'E' + return directiveInfo.controller && directiveInfo.controllerAs && directiveInfo.restrict === 'E'; + }); + // check if valid directives found + if (candidateDirectives.length === 0) { + throw new Error('No component found'); + } + if (candidateDirectives.length > 1) { + throw new Error('Too many components found'); + } + // get the info of the component + var directiveInfo = candidateDirectives[0]; + // create a scope if needed + locals = locals || {}; + locals.$scope = locals.$scope || $rootScope.$new(true); + return $controller(directiveInfo.controller, locals, bindings, ident || directiveInfo.controllerAs); + }; + }]; +}]; + + +/** + * @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, + $componentController: angular.mock.$ComponentControllerProvider +}).config(['$provide', function($provide) { + $provide.decorator('$timeout', angular.mock.$TimeoutDecorator); + $provide.decorator('$$rAF', angular.mock.$RAFDecorator); + $provide.decorator('$rootScope', angular.mock.$RootScopeDecorator); + $provide.decorator('$controller', angular.mock.$ControllerDecorator); +}]); + +/** + * @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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @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. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change how a matched request is handled. + * + * - respond – + * ``` + * { function([status,] data[, headers, statusText]) + * | function(function(method, url, data, headers, params)} + * ``` + * – 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 (Array|Object|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.) + * - Both methods return the `requestHandler` object for possible overrides. + */ + +/** + * @ngdoc method + * @name $httpBackend#whenGET + * @module ngMockE2E + * @description + * Creates a new backend definition for GET requests. For more info see `when()`. + * + * @param {string|RegExp|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(string|RegExp)=} data HTTP request body. + * @param {(Object|function(Object))=} headers HTTP headers. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change 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|function(string)} url HTTP url or function that receives a url + * and returns true if the url matches the current definition. + * @param {(Array)=} keys Array of keys to assign to regex matches in request url described on + * {@link ngMock.$httpBackend $httpBackend mock}. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change how a matched request is handled. + */ +/** + * @ngdoc method + * @name $httpBackend#whenRoute + * @module ngMockE2E + * @description + * Creates a new backend definition that compares only with the requested route. + * + * @param {string} method HTTP method. + * @param {string} url HTTP url string that supports colon param matching. + * @returns {requestHandler} Returns an object with `respond` and `passThrough` methods that + * control how a matched request is handled. You can save this object for later use and invoke + * `respond` or `passThrough` again in order to change how a matched request is handled. + */ +angular.mock.e2e = {}; +angular.mock.e2e.$httpBackendDecorator = + ['$rootScope', '$timeout', '$delegate', '$browser', createHttpBackendMock]; + + +/** + * @ngdoc type + * @name $rootScope.Scope + * @module ngMock + * @description + * {@link ng.$rootScope.Scope Scope} type decorated with helper methods useful for testing. These + * methods are automatically available on any {@link ng.$rootScope.Scope Scope} instance when + * `ngMock` module is loaded. + * + * In addition to all the regular `Scope` methods, the following helper methods are available: + */ +angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) { + + var $rootScopePrototype = Object.getPrototypeOf($delegate); + + $rootScopePrototype.$countChildScopes = countChildScopes; + $rootScopePrototype.$countWatchers = countWatchers; + + return $delegate; + + // ------------------------------------------------------------------------------------------ // + + /** + * @ngdoc method + * @name $rootScope.Scope#$countChildScopes + * @module ngMock + * @description + * Counts all the direct and indirect child scopes of the current scope. + * + * The current scope is excluded from the count. The count includes all isolate child scopes. + * + * @returns {number} Total number of child scopes. + */ + function countChildScopes() { + // jshint validthis: true + var count = 0; // exclude the current scope + var pendingChildHeads = [this.$$childHead]; + var currentScope; + + while (pendingChildHeads.length) { + currentScope = pendingChildHeads.shift(); + + while (currentScope) { + count += 1; + pendingChildHeads.push(currentScope.$$childHead); + currentScope = currentScope.$$nextSibling; + } + } + + return count; + } + + + /** + * @ngdoc method + * @name $rootScope.Scope#$countWatchers + * @module ngMock + * @description + * Counts all the watchers of direct and indirect child scopes of the current scope. + * + * The watchers of the current scope are included in the count and so are all the watchers of + * isolate child scopes. + * + * @returns {number} Total number of watchers. + */ + function countWatchers() { + // jshint validthis: true + var count = this.$$watchers ? this.$$watchers.length : 0; // include the current scope + var pendingChildHeads = [this.$$childHead]; + var currentScope; + + while (pendingChildHeads.length) { + currentScope = pendingChildHeads.shift(); + + while (currentScope) { + count += currentScope.$$watchers ? currentScope.$$watchers.length : 0; + pendingChildHeads.push(currentScope.$$childHead); + currentScope = currentScope.$$nextSibling; + } + } + + return count; + } +}]; + + +!(function(jasmineOrMocha) { + + if (!jasmineOrMocha) { + return; + } + + var currentSpec = null, + injectorState = new InjectorState(), + annotatedFunctions = [], + wasInjectorCreated = function() { + return !!currentSpec; + }; + + angular.mock.$$annotate = angular.injector.$$annotate; + angular.injector.$$annotate = function(fn) { + if (typeof fn === 'function' && !fn.$inject) { + annotatedFunctions.push(fn); + } + return angular.mock.$$annotate.apply(this, arguments); + }; + + /** + * @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 each key-value pair will be registered on the module via + * {@link auto.$provide $provide}.value, the key being the string name (or token) to associate + * with the value on the injector. + */ + var module = window.module = angular.mock.module = function() { + var moduleFns = Array.prototype.slice.call(arguments, 0); + return wasInjectorCreated() ? workFn() : workFn; + ///////////////////// + function workFn() { + if (currentSpec.$injector) { + throw new Error('Injector already created, can not register a module!'); + } else { + var fn, modules = currentSpec.$modules || (currentSpec.$modules = []); + angular.forEach(moduleFns, function(module) { + if (angular.isObject(module) && !angular.isArray(module)) { + fn = ['$provide', function($provide) { + angular.forEach(module, function(value, key) { + $provide.value(key, value); + }); + }]; + } else { + fn = module; + } + if (currentSpec.$providerInjector) { + currentSpec.$providerInjector.invoke(fn); + } else { + modules.push(fn); + } + }); + } + } + }; + + module.$$beforeAllHook = (window.before || window.beforeAll); + module.$$afterAllHook = (window.after || window.afterAll); + + // purely for testing ngMock itself + module.$$currentSpec = function(to) { + if (arguments.length === 0) return to; + currentSpec = to; + }; + + /** + * @ngdoc function + * @name angular.mock.module.sharedInjector + * @description + * + * *NOTE*: This function is declared ONLY WHEN running tests with jasmine or mocha + * + * This function ensures a single injector will be used for all tests in a given describe context. + * This contrasts with the default behaviour where a new injector is created per test case. + * + * Use sharedInjector when you want to take advantage of Jasmine's `beforeAll()`, or mocha's + * `before()` methods. Call `module.sharedInjector()` before you setup any other hooks that + * will create (i.e call `module()`) or use (i.e call `inject()`) the injector. + * + * You cannot call `sharedInjector()` from within a context already using `sharedInjector()`. + * + * ## Example + * + * Typically beforeAll is used to make many assertions about a single operation. This can + * cut down test run-time as the test setup doesn't need to be re-run, and enabling focussed + * tests each with a single assertion. + * + * ```js + * describe("Deep Thought", function() { + * + * module.sharedInjector(); + * + * beforeAll(module("UltimateQuestion")); + * + * beforeAll(inject(function(DeepThought) { + * expect(DeepThought.answer).toBeUndefined(); + * DeepThought.generateAnswer(); + * })); + * + * it("has calculated the answer correctly", inject(function(DeepThought) { + * // Because of sharedInjector, we have access to the instance of the DeepThought service + * // that was provided to the beforeAll() hook. Therefore we can test the generated answer + * expect(DeepThought.answer).toBe(42); + * })); + * + * it("has calculated the answer within the expected time", inject(function(DeepThought) { + * expect(DeepThought.runTimeMillennia).toBeLessThan(8000); + * })); + * + * it("has double checked the answer", inject(function(DeepThought) { + * expect(DeepThought.absolutelySureItIsTheRightAnswer).toBe(true); + * })); + * + * }); + * + * ``` + */ + module.sharedInjector = function() { + if (!(module.$$beforeAllHook && module.$$afterAllHook)) { + throw Error("sharedInjector() cannot be used unless your test runner defines beforeAll/afterAll"); + } + + var initialized = false; + + module.$$beforeAllHook(function() { + if (injectorState.shared) { + injectorState.sharedError = Error("sharedInjector() cannot be called inside a context that has already called sharedInjector()"); + throw injectorState.sharedError; + } + initialized = true; + currentSpec = this; + injectorState.shared = true; + }); + + module.$$afterAllHook(function() { + if (initialized) { + injectorState = new InjectorState(); + module.$$cleanup(); + } else { + injectorState.sharedError = null; + } + }); + }; + + module.$$beforeEach = function() { + if (injectorState.shared && currentSpec && currentSpec != this) { + var state = currentSpec; + currentSpec = this; + angular.forEach(["$injector","$modules","$providerInjector", "$injectorStrict"], function(k) { + currentSpec[k] = state[k]; + state[k] = null; + }); + } else { + currentSpec = this; + originalRootElement = null; + annotatedFunctions = []; + } + }; + + module.$$afterEach = function() { + if (injectorState.cleanupAfterEach()) { + module.$$cleanup(); + } + }; + + module.$$cleanup = function() { + var injector = currentSpec.$injector; + + annotatedFunctions.forEach(function(fn) { + delete fn.$inject; + }); + + angular.forEach(currentSpec.$modules, function(module) { + if (module && module.$$hashKey) { + module.$$hashKey = undefined; + } + }); + + currentSpec.$injector = null; + currentSpec.$modules = null; + currentSpec.$providerInjector = null; + currentSpec = null; + + if (injector) { + // Ensure `$rootElement` is instantiated, before checking `originalRootElement` + var $rootElement = injector.get('$rootElement'); + var rootNode = $rootElement && $rootElement[0]; + var cleanUpNodes = !originalRootElement ? [] : [originalRootElement[0]]; + if (rootNode && (!originalRootElement || rootNode !== originalRootElement[0])) { + cleanUpNodes.push(rootNode); + } + angular.element.cleanData(cleanUpNodes); + + // Ensure `$destroy()` is available, before calling it + // (a mocked `$rootScope` might not implement it (or not even be an object at all)) + var $rootScope = injector.get('$rootScope'); + if ($rootScope && $rootScope.$destroy) $rootScope.$destroy(); + } + + // 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; + }; + + (window.beforeEach || window.setup)(module.$$beforeEach); + (window.afterEach || window.teardown)(module.$$afterEach); + + /** + * @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'); + // IE10+ and PhanthomJS do not set stack trace information, until the error is thrown + if (!errorForStack.stack) { + try { + throw errorForStack; + } catch (e) {} + } + return wasInjectorCreated() ? workFn.call(currentSpec) : workFn; + ///////////////////// + function workFn() { + var modules = currentSpec.$modules || []; + var strictDi = !!currentSpec.$injectorStrict; + modules.unshift(['$injector', function($injector) { + currentSpec.$providerInjector = $injector; + }]); + modules.unshift('ngMock'); + modules.unshift('ng'); + var injector = currentSpec.$injector; + if (!injector) { + if (strictDi) { + // If strictDi is enabled, annotate the providerInjector blocks + angular.forEach(modules, function(moduleFn) { + if (typeof moduleFn === "function") { + angular.injector.$$annotate(moduleFn); + } + }); + } + injector = currentSpec.$injector = angular.injector(modules, strictDi); + currentSpec.$injectorStrict = strictDi; + } + for (var i = 0, ii = blockFns.length; i < ii; i++) { + if (currentSpec.$injectorStrict) { + // If the injector is strict / strictDi, and the spec wants to inject using automatic + // annotation, then annotate the function here. + injector.annotate(blockFns[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; + } + } + } + }; + + + angular.mock.inject.strictDi = function(value) { + value = arguments.length ? !!value : true; + return wasInjectorCreated() ? workFn() : workFn; + + function workFn() { + if (value !== currentSpec.$injectorStrict) { + if (currentSpec.$injector) { + throw new Error('Injector already created, can not modify strict annotations'); + } else { + currentSpec.$injectorStrict = value; + } + } + } + }; + + function InjectorState() { + this.shared = false; + this.sharedError = null; + + this.cleanupAfterEach = function() { + return !this.shared || this.sharedError; + }; + } +})(window.jasmine || window.mocha); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.js new file mode 100644 index 00000000..977db159 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.js @@ -0,0 +1,1271 @@ +/** + * @license AngularJS v1.5.5 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) {'use strict'; + +/****************************************************** + * Generated file, do not modify * + * * + *****************************************************/ + +function IDS_Y(cp) { + if (0x0041 <= cp && cp <= 0x005A) return true; + if (0x0061 <= cp && cp <= 0x007A) return true; + if (cp === 0x00AA) return true; + if (cp === 0x00B5) return true; + if (cp === 0x00BA) return true; + if (0x00C0 <= cp && cp <= 0x00D6) return true; + if (0x00D8 <= cp && cp <= 0x00F6) return true; + if (0x00F8 <= cp && cp <= 0x02C1) return true; + if (0x02C6 <= cp && cp <= 0x02D1) return true; + if (0x02E0 <= cp && cp <= 0x02E4) return true; + if (cp === 0x02EC) return true; + if (cp === 0x02EE) return true; + if (0x0370 <= cp && cp <= 0x0374) return true; + if (0x0376 <= cp && cp <= 0x0377) return true; + if (0x037A <= cp && cp <= 0x037D) return true; + if (cp === 0x037F) return true; + if (cp === 0x0386) return true; + if (0x0388 <= cp && cp <= 0x038A) return true; + if (cp === 0x038C) return true; + if (0x038E <= cp && cp <= 0x03A1) return true; + if (0x03A3 <= cp && cp <= 0x03F5) return true; + if (0x03F7 <= cp && cp <= 0x0481) return true; + if (0x048A <= cp && cp <= 0x052F) return true; + if (0x0531 <= cp && cp <= 0x0556) return true; + if (cp === 0x0559) return true; + if (0x0561 <= cp && cp <= 0x0587) return true; + if (0x05D0 <= cp && cp <= 0x05EA) return true; + if (0x05F0 <= cp && cp <= 0x05F2) return true; + if (0x0620 <= cp && cp <= 0x064A) return true; + if (0x066E <= cp && cp <= 0x066F) return true; + if (0x0671 <= cp && cp <= 0x06D3) return true; + if (cp === 0x06D5) return true; + if (0x06E5 <= cp && cp <= 0x06E6) return true; + if (0x06EE <= cp && cp <= 0x06EF) return true; + if (0x06FA <= cp && cp <= 0x06FC) return true; + if (cp === 0x06FF) return true; + if (cp === 0x0710) return true; + if (0x0712 <= cp && cp <= 0x072F) return true; + if (0x074D <= cp && cp <= 0x07A5) return true; + if (cp === 0x07B1) return true; + if (0x07CA <= cp && cp <= 0x07EA) return true; + if (0x07F4 <= cp && cp <= 0x07F5) return true; + if (cp === 0x07FA) return true; + if (0x0800 <= cp && cp <= 0x0815) return true; + if (cp === 0x081A) return true; + if (cp === 0x0824) return true; + if (cp === 0x0828) return true; + if (0x0840 <= cp && cp <= 0x0858) return true; + if (0x08A0 <= cp && cp <= 0x08B4) return true; + if (0x0904 <= cp && cp <= 0x0939) return true; + if (cp === 0x093D) return true; + if (cp === 0x0950) return true; + if (0x0958 <= cp && cp <= 0x0961) return true; + if (0x0971 <= cp && cp <= 0x0980) return true; + if (0x0985 <= cp && cp <= 0x098C) return true; + if (0x098F <= cp && cp <= 0x0990) return true; + if (0x0993 <= cp && cp <= 0x09A8) return true; + if (0x09AA <= cp && cp <= 0x09B0) return true; + if (cp === 0x09B2) return true; + if (0x09B6 <= cp && cp <= 0x09B9) return true; + if (cp === 0x09BD) return true; + if (cp === 0x09CE) return true; + if (0x09DC <= cp && cp <= 0x09DD) return true; + if (0x09DF <= cp && cp <= 0x09E1) return true; + if (0x09F0 <= cp && cp <= 0x09F1) return true; + if (0x0A05 <= cp && cp <= 0x0A0A) return true; + if (0x0A0F <= cp && cp <= 0x0A10) return true; + if (0x0A13 <= cp && cp <= 0x0A28) return true; + if (0x0A2A <= cp && cp <= 0x0A30) return true; + if (0x0A32 <= cp && cp <= 0x0A33) return true; + if (0x0A35 <= cp && cp <= 0x0A36) return true; + if (0x0A38 <= cp && cp <= 0x0A39) return true; + if (0x0A59 <= cp && cp <= 0x0A5C) return true; + if (cp === 0x0A5E) return true; + if (0x0A72 <= cp && cp <= 0x0A74) return true; + if (0x0A85 <= cp && cp <= 0x0A8D) return true; + if (0x0A8F <= cp && cp <= 0x0A91) return true; + if (0x0A93 <= cp && cp <= 0x0AA8) return true; + if (0x0AAA <= cp && cp <= 0x0AB0) return true; + if (0x0AB2 <= cp && cp <= 0x0AB3) return true; + if (0x0AB5 <= cp && cp <= 0x0AB9) return true; + if (cp === 0x0ABD) return true; + if (cp === 0x0AD0) return true; + if (0x0AE0 <= cp && cp <= 0x0AE1) return true; + if (cp === 0x0AF9) return true; + if (0x0B05 <= cp && cp <= 0x0B0C) return true; + if (0x0B0F <= cp && cp <= 0x0B10) return true; + if (0x0B13 <= cp && cp <= 0x0B28) return true; + if (0x0B2A <= cp && cp <= 0x0B30) return true; + if (0x0B32 <= cp && cp <= 0x0B33) return true; + if (0x0B35 <= cp && cp <= 0x0B39) return true; + if (cp === 0x0B3D) return true; + if (0x0B5C <= cp && cp <= 0x0B5D) return true; + if (0x0B5F <= cp && cp <= 0x0B61) return true; + if (cp === 0x0B71) return true; + if (cp === 0x0B83) return true; + if (0x0B85 <= cp && cp <= 0x0B8A) return true; + if (0x0B8E <= cp && cp <= 0x0B90) return true; + if (0x0B92 <= cp && cp <= 0x0B95) return true; + if (0x0B99 <= cp && cp <= 0x0B9A) return true; + if (cp === 0x0B9C) return true; + if (0x0B9E <= cp && cp <= 0x0B9F) return true; + if (0x0BA3 <= cp && cp <= 0x0BA4) return true; + if (0x0BA8 <= cp && cp <= 0x0BAA) return true; + if (0x0BAE <= cp && cp <= 0x0BB9) return true; + if (cp === 0x0BD0) return true; + if (0x0C05 <= cp && cp <= 0x0C0C) return true; + if (0x0C0E <= cp && cp <= 0x0C10) return true; + if (0x0C12 <= cp && cp <= 0x0C28) return true; + if (0x0C2A <= cp && cp <= 0x0C39) return true; + if (cp === 0x0C3D) return true; + if (0x0C58 <= cp && cp <= 0x0C5A) return true; + if (0x0C60 <= cp && cp <= 0x0C61) return true; + if (0x0C85 <= cp && cp <= 0x0C8C) return true; + if (0x0C8E <= cp && cp <= 0x0C90) return true; + if (0x0C92 <= cp && cp <= 0x0CA8) return true; + if (0x0CAA <= cp && cp <= 0x0CB3) return true; + if (0x0CB5 <= cp && cp <= 0x0CB9) return true; + if (cp === 0x0CBD) return true; + if (cp === 0x0CDE) return true; + if (0x0CE0 <= cp && cp <= 0x0CE1) return true; + if (0x0CF1 <= cp && cp <= 0x0CF2) return true; + if (0x0D05 <= cp && cp <= 0x0D0C) return true; + if (0x0D0E <= cp && cp <= 0x0D10) return true; + if (0x0D12 <= cp && cp <= 0x0D3A) return true; + if (cp === 0x0D3D) return true; + if (cp === 0x0D4E) return true; + if (0x0D5F <= cp && cp <= 0x0D61) return true; + if (0x0D7A <= cp && cp <= 0x0D7F) return true; + if (0x0D85 <= cp && cp <= 0x0D96) return true; + if (0x0D9A <= cp && cp <= 0x0DB1) return true; + if (0x0DB3 <= cp && cp <= 0x0DBB) return true; + if (cp === 0x0DBD) return true; + if (0x0DC0 <= cp && cp <= 0x0DC6) return true; + if (0x0E01 <= cp && cp <= 0x0E30) return true; + if (0x0E32 <= cp && cp <= 0x0E33) return true; + if (0x0E40 <= cp && cp <= 0x0E46) return true; + if (0x0E81 <= cp && cp <= 0x0E82) return true; + if (cp === 0x0E84) return true; + if (0x0E87 <= cp && cp <= 0x0E88) return true; + if (cp === 0x0E8A) return true; + if (cp === 0x0E8D) return true; + if (0x0E94 <= cp && cp <= 0x0E97) return true; + if (0x0E99 <= cp && cp <= 0x0E9F) return true; + if (0x0EA1 <= cp && cp <= 0x0EA3) return true; + if (cp === 0x0EA5) return true; + if (cp === 0x0EA7) return true; + if (0x0EAA <= cp && cp <= 0x0EAB) return true; + if (0x0EAD <= cp && cp <= 0x0EB0) return true; + if (0x0EB2 <= cp && cp <= 0x0EB3) return true; + if (cp === 0x0EBD) return true; + if (0x0EC0 <= cp && cp <= 0x0EC4) return true; + if (cp === 0x0EC6) return true; + if (0x0EDC <= cp && cp <= 0x0EDF) return true; + if (cp === 0x0F00) return true; + if (0x0F40 <= cp && cp <= 0x0F47) return true; + if (0x0F49 <= cp && cp <= 0x0F6C) return true; + if (0x0F88 <= cp && cp <= 0x0F8C) return true; + if (0x1000 <= cp && cp <= 0x102A) return true; + if (cp === 0x103F) return true; + if (0x1050 <= cp && cp <= 0x1055) return true; + if (0x105A <= cp && cp <= 0x105D) return true; + if (cp === 0x1061) return true; + if (0x1065 <= cp && cp <= 0x1066) return true; + if (0x106E <= cp && cp <= 0x1070) return true; + if (0x1075 <= cp && cp <= 0x1081) return true; + if (cp === 0x108E) return true; + if (0x10A0 <= cp && cp <= 0x10C5) return true; + if (cp === 0x10C7) return true; + if (cp === 0x10CD) return true; + if (0x10D0 <= cp && cp <= 0x10FA) return true; + if (0x10FC <= cp && cp <= 0x1248) return true; + if (0x124A <= cp && cp <= 0x124D) return true; + if (0x1250 <= cp && cp <= 0x1256) return true; + if (cp === 0x1258) return true; + if (0x125A <= cp && cp <= 0x125D) return true; + if (0x1260 <= cp && cp <= 0x1288) return true; + if (0x128A <= cp && cp <= 0x128D) return true; + if (0x1290 <= cp && cp <= 0x12B0) return true; + if (0x12B2 <= cp && cp <= 0x12B5) return true; + if (0x12B8 <= cp && cp <= 0x12BE) return true; + if (cp === 0x12C0) return true; + if (0x12C2 <= cp && cp <= 0x12C5) return true; + if (0x12C8 <= cp && cp <= 0x12D6) return true; + if (0x12D8 <= cp && cp <= 0x1310) return true; + if (0x1312 <= cp && cp <= 0x1315) return true; + if (0x1318 <= cp && cp <= 0x135A) return true; + if (0x1380 <= cp && cp <= 0x138F) return true; + if (0x13A0 <= cp && cp <= 0x13F5) return true; + if (0x13F8 <= cp && cp <= 0x13FD) return true; + if (0x1401 <= cp && cp <= 0x166C) return true; + if (0x166F <= cp && cp <= 0x167F) return true; + if (0x1681 <= cp && cp <= 0x169A) return true; + if (0x16A0 <= cp && cp <= 0x16EA) return true; + if (0x16EE <= cp && cp <= 0x16F8) return true; + if (0x1700 <= cp && cp <= 0x170C) return true; + if (0x170E <= cp && cp <= 0x1711) return true; + if (0x1720 <= cp && cp <= 0x1731) return true; + if (0x1740 <= cp && cp <= 0x1751) return true; + if (0x1760 <= cp && cp <= 0x176C) return true; + if (0x176E <= cp && cp <= 0x1770) return true; + if (0x1780 <= cp && cp <= 0x17B3) return true; + if (cp === 0x17D7) return true; + if (cp === 0x17DC) return true; + if (0x1820 <= cp && cp <= 0x1877) return true; + if (0x1880 <= cp && cp <= 0x18A8) return true; + if (cp === 0x18AA) return true; + if (0x18B0 <= cp && cp <= 0x18F5) return true; + if (0x1900 <= cp && cp <= 0x191E) return true; + if (0x1950 <= cp && cp <= 0x196D) return true; + if (0x1970 <= cp && cp <= 0x1974) return true; + if (0x1980 <= cp && cp <= 0x19AB) return true; + if (0x19B0 <= cp && cp <= 0x19C9) return true; + if (0x1A00 <= cp && cp <= 0x1A16) return true; + if (0x1A20 <= cp && cp <= 0x1A54) return true; + if (cp === 0x1AA7) return true; + if (0x1B05 <= cp && cp <= 0x1B33) return true; + if (0x1B45 <= cp && cp <= 0x1B4B) return true; + if (0x1B83 <= cp && cp <= 0x1BA0) return true; + if (0x1BAE <= cp && cp <= 0x1BAF) return true; + if (0x1BBA <= cp && cp <= 0x1BE5) return true; + if (0x1C00 <= cp && cp <= 0x1C23) return true; + if (0x1C4D <= cp && cp <= 0x1C4F) return true; + if (0x1C5A <= cp && cp <= 0x1C7D) return true; + if (0x1CE9 <= cp && cp <= 0x1CEC) return true; + if (0x1CEE <= cp && cp <= 0x1CF1) return true; + if (0x1CF5 <= cp && cp <= 0x1CF6) return true; + if (0x1D00 <= cp && cp <= 0x1DBF) return true; + if (0x1E00 <= cp && cp <= 0x1F15) return true; + if (0x1F18 <= cp && cp <= 0x1F1D) return true; + if (0x1F20 <= cp && cp <= 0x1F45) return true; + if (0x1F48 <= cp && cp <= 0x1F4D) return true; + if (0x1F50 <= cp && cp <= 0x1F57) return true; + if (cp === 0x1F59) return true; + if (cp === 0x1F5B) return true; + if (cp === 0x1F5D) return true; + if (0x1F5F <= cp && cp <= 0x1F7D) return true; + if (0x1F80 <= cp && cp <= 0x1FB4) return true; + if (0x1FB6 <= cp && cp <= 0x1FBC) return true; + if (cp === 0x1FBE) return true; + if (0x1FC2 <= cp && cp <= 0x1FC4) return true; + if (0x1FC6 <= cp && cp <= 0x1FCC) return true; + if (0x1FD0 <= cp && cp <= 0x1FD3) return true; + if (0x1FD6 <= cp && cp <= 0x1FDB) return true; + if (0x1FE0 <= cp && cp <= 0x1FEC) return true; + if (0x1FF2 <= cp && cp <= 0x1FF4) return true; + if (0x1FF6 <= cp && cp <= 0x1FFC) return true; + if (cp === 0x2071) return true; + if (cp === 0x207F) return true; + if (0x2090 <= cp && cp <= 0x209C) return true; + if (cp === 0x2102) return true; + if (cp === 0x2107) return true; + if (0x210A <= cp && cp <= 0x2113) return true; + if (cp === 0x2115) return true; + if (0x2118 <= cp && cp <= 0x211D) return true; + if (cp === 0x2124) return true; + if (cp === 0x2126) return true; + if (cp === 0x2128) return true; + if (0x212A <= cp && cp <= 0x2139) return true; + if (0x213C <= cp && cp <= 0x213F) return true; + if (0x2145 <= cp && cp <= 0x2149) return true; + if (cp === 0x214E) return true; + if (0x2160 <= cp && cp <= 0x2188) return true; + if (0x2C00 <= cp && cp <= 0x2C2E) return true; + if (0x2C30 <= cp && cp <= 0x2C5E) return true; + if (0x2C60 <= cp && cp <= 0x2CE4) return true; + if (0x2CEB <= cp && cp <= 0x2CEE) return true; + if (0x2CF2 <= cp && cp <= 0x2CF3) return true; + if (0x2D00 <= cp && cp <= 0x2D25) return true; + if (cp === 0x2D27) return true; + if (cp === 0x2D2D) return true; + if (0x2D30 <= cp && cp <= 0x2D67) return true; + if (cp === 0x2D6F) return true; + if (0x2D80 <= cp && cp <= 0x2D96) return true; + if (0x2DA0 <= cp && cp <= 0x2DA6) return true; + if (0x2DA8 <= cp && cp <= 0x2DAE) return true; + if (0x2DB0 <= cp && cp <= 0x2DB6) return true; + if (0x2DB8 <= cp && cp <= 0x2DBE) return true; + if (0x2DC0 <= cp && cp <= 0x2DC6) return true; + if (0x2DC8 <= cp && cp <= 0x2DCE) return true; + if (0x2DD0 <= cp && cp <= 0x2DD6) return true; + if (0x2DD8 <= cp && cp <= 0x2DDE) return true; + if (0x3005 <= cp && cp <= 0x3007) return true; + if (0x3021 <= cp && cp <= 0x3029) return true; + if (0x3031 <= cp && cp <= 0x3035) return true; + if (0x3038 <= cp && cp <= 0x303C) return true; + if (0x3041 <= cp && cp <= 0x3096) return true; + if (0x309B <= cp && cp <= 0x309F) return true; + if (0x30A1 <= cp && cp <= 0x30FA) return true; + if (0x30FC <= cp && cp <= 0x30FF) return true; + if (0x3105 <= cp && cp <= 0x312D) return true; + if (0x3131 <= cp && cp <= 0x318E) return true; + if (0x31A0 <= cp && cp <= 0x31BA) return true; + if (0x31F0 <= cp && cp <= 0x31FF) return true; + if (0x3400 <= cp && cp <= 0x4DB5) return true; + if (0x4E00 <= cp && cp <= 0x9FD5) return true; + if (0xA000 <= cp && cp <= 0xA48C) return true; + if (0xA4D0 <= cp && cp <= 0xA4FD) return true; + if (0xA500 <= cp && cp <= 0xA60C) return true; + if (0xA610 <= cp && cp <= 0xA61F) return true; + if (0xA62A <= cp && cp <= 0xA62B) return true; + if (0xA640 <= cp && cp <= 0xA66E) return true; + if (0xA67F <= cp && cp <= 0xA69D) return true; + if (0xA6A0 <= cp && cp <= 0xA6EF) return true; + if (0xA717 <= cp && cp <= 0xA71F) return true; + if (0xA722 <= cp && cp <= 0xA788) return true; + if (0xA78B <= cp && cp <= 0xA7AD) return true; + if (0xA7B0 <= cp && cp <= 0xA7B7) return true; + if (0xA7F7 <= cp && cp <= 0xA801) return true; + if (0xA803 <= cp && cp <= 0xA805) return true; + if (0xA807 <= cp && cp <= 0xA80A) return true; + if (0xA80C <= cp && cp <= 0xA822) return true; + if (0xA840 <= cp && cp <= 0xA873) return true; + if (0xA882 <= cp && cp <= 0xA8B3) return true; + if (0xA8F2 <= cp && cp <= 0xA8F7) return true; + if (cp === 0xA8FB) return true; + if (cp === 0xA8FD) return true; + if (0xA90A <= cp && cp <= 0xA925) return true; + if (0xA930 <= cp && cp <= 0xA946) return true; + if (0xA960 <= cp && cp <= 0xA97C) return true; + if (0xA984 <= cp && cp <= 0xA9B2) return true; + if (cp === 0xA9CF) return true; + if (0xA9E0 <= cp && cp <= 0xA9E4) return true; + if (0xA9E6 <= cp && cp <= 0xA9EF) return true; + if (0xA9FA <= cp && cp <= 0xA9FE) return true; + if (0xAA00 <= cp && cp <= 0xAA28) return true; + if (0xAA40 <= cp && cp <= 0xAA42) return true; + if (0xAA44 <= cp && cp <= 0xAA4B) return true; + if (0xAA60 <= cp && cp <= 0xAA76) return true; + if (cp === 0xAA7A) return true; + if (0xAA7E <= cp && cp <= 0xAAAF) return true; + if (cp === 0xAAB1) return true; + if (0xAAB5 <= cp && cp <= 0xAAB6) return true; + if (0xAAB9 <= cp && cp <= 0xAABD) return true; + if (cp === 0xAAC0) return true; + if (cp === 0xAAC2) return true; + if (0xAADB <= cp && cp <= 0xAADD) return true; + if (0xAAE0 <= cp && cp <= 0xAAEA) return true; + if (0xAAF2 <= cp && cp <= 0xAAF4) return true; + if (0xAB01 <= cp && cp <= 0xAB06) return true; + if (0xAB09 <= cp && cp <= 0xAB0E) return true; + if (0xAB11 <= cp && cp <= 0xAB16) return true; + if (0xAB20 <= cp && cp <= 0xAB26) return true; + if (0xAB28 <= cp && cp <= 0xAB2E) return true; + if (0xAB30 <= cp && cp <= 0xAB5A) return true; + if (0xAB5C <= cp && cp <= 0xAB65) return true; + if (0xAB70 <= cp && cp <= 0xABE2) return true; + if (0xAC00 <= cp && cp <= 0xD7A3) return true; + if (0xD7B0 <= cp && cp <= 0xD7C6) return true; + if (0xD7CB <= cp && cp <= 0xD7FB) return true; + if (0xF900 <= cp && cp <= 0xFA6D) return true; + if (0xFA70 <= cp && cp <= 0xFAD9) return true; + if (0xFB00 <= cp && cp <= 0xFB06) return true; + if (0xFB13 <= cp && cp <= 0xFB17) return true; + if (cp === 0xFB1D) return true; + if (0xFB1F <= cp && cp <= 0xFB28) return true; + if (0xFB2A <= cp && cp <= 0xFB36) return true; + if (0xFB38 <= cp && cp <= 0xFB3C) return true; + if (cp === 0xFB3E) return true; + if (0xFB40 <= cp && cp <= 0xFB41) return true; + if (0xFB43 <= cp && cp <= 0xFB44) return true; + if (0xFB46 <= cp && cp <= 0xFBB1) return true; + if (0xFBD3 <= cp && cp <= 0xFD3D) return true; + if (0xFD50 <= cp && cp <= 0xFD8F) return true; + if (0xFD92 <= cp && cp <= 0xFDC7) return true; + if (0xFDF0 <= cp && cp <= 0xFDFB) return true; + if (0xFE70 <= cp && cp <= 0xFE74) return true; + if (0xFE76 <= cp && cp <= 0xFEFC) return true; + if (0xFF21 <= cp && cp <= 0xFF3A) return true; + if (0xFF41 <= cp && cp <= 0xFF5A) return true; + if (0xFF66 <= cp && cp <= 0xFFBE) return true; + if (0xFFC2 <= cp && cp <= 0xFFC7) return true; + if (0xFFCA <= cp && cp <= 0xFFCF) return true; + if (0xFFD2 <= cp && cp <= 0xFFD7) return true; + if (0xFFDA <= cp && cp <= 0xFFDC) return true; + if (0x10000 <= cp && cp <= 0x1000B) return true; + if (0x1000D <= cp && cp <= 0x10026) return true; + if (0x10028 <= cp && cp <= 0x1003A) return true; + if (0x1003C <= cp && cp <= 0x1003D) return true; + if (0x1003F <= cp && cp <= 0x1004D) return true; + if (0x10050 <= cp && cp <= 0x1005D) return true; + if (0x10080 <= cp && cp <= 0x100FA) return true; + if (0x10140 <= cp && cp <= 0x10174) return true; + if (0x10280 <= cp && cp <= 0x1029C) return true; + if (0x102A0 <= cp && cp <= 0x102D0) return true; + if (0x10300 <= cp && cp <= 0x1031F) return true; + if (0x10330 <= cp && cp <= 0x1034A) return true; + if (0x10350 <= cp && cp <= 0x10375) return true; + if (0x10380 <= cp && cp <= 0x1039D) return true; + if (0x103A0 <= cp && cp <= 0x103C3) return true; + if (0x103C8 <= cp && cp <= 0x103CF) return true; + if (0x103D1 <= cp && cp <= 0x103D5) return true; + if (0x10400 <= cp && cp <= 0x1049D) return true; + if (0x10500 <= cp && cp <= 0x10527) return true; + if (0x10530 <= cp && cp <= 0x10563) return true; + if (0x10600 <= cp && cp <= 0x10736) return true; + if (0x10740 <= cp && cp <= 0x10755) return true; + if (0x10760 <= cp && cp <= 0x10767) return true; + if (0x10800 <= cp && cp <= 0x10805) return true; + if (cp === 0x10808) return true; + if (0x1080A <= cp && cp <= 0x10835) return true; + if (0x10837 <= cp && cp <= 0x10838) return true; + if (cp === 0x1083C) return true; + if (0x1083F <= cp && cp <= 0x10855) return true; + if (0x10860 <= cp && cp <= 0x10876) return true; + if (0x10880 <= cp && cp <= 0x1089E) return true; + if (0x108E0 <= cp && cp <= 0x108F2) return true; + if (0x108F4 <= cp && cp <= 0x108F5) return true; + if (0x10900 <= cp && cp <= 0x10915) return true; + if (0x10920 <= cp && cp <= 0x10939) return true; + if (0x10980 <= cp && cp <= 0x109B7) return true; + if (0x109BE <= cp && cp <= 0x109BF) return true; + if (cp === 0x10A00) return true; + if (0x10A10 <= cp && cp <= 0x10A13) return true; + if (0x10A15 <= cp && cp <= 0x10A17) return true; + if (0x10A19 <= cp && cp <= 0x10A33) return true; + if (0x10A60 <= cp && cp <= 0x10A7C) return true; + if (0x10A80 <= cp && cp <= 0x10A9C) return true; + if (0x10AC0 <= cp && cp <= 0x10AC7) return true; + if (0x10AC9 <= cp && cp <= 0x10AE4) return true; + if (0x10B00 <= cp && cp <= 0x10B35) return true; + if (0x10B40 <= cp && cp <= 0x10B55) return true; + if (0x10B60 <= cp && cp <= 0x10B72) return true; + if (0x10B80 <= cp && cp <= 0x10B91) return true; + if (0x10C00 <= cp && cp <= 0x10C48) return true; + if (0x10C80 <= cp && cp <= 0x10CB2) return true; + if (0x10CC0 <= cp && cp <= 0x10CF2) return true; + if (0x11003 <= cp && cp <= 0x11037) return true; + if (0x11083 <= cp && cp <= 0x110AF) return true; + if (0x110D0 <= cp && cp <= 0x110E8) return true; + if (0x11103 <= cp && cp <= 0x11126) return true; + if (0x11150 <= cp && cp <= 0x11172) return true; + if (cp === 0x11176) return true; + if (0x11183 <= cp && cp <= 0x111B2) return true; + if (0x111C1 <= cp && cp <= 0x111C4) return true; + if (cp === 0x111DA) return true; + if (cp === 0x111DC) return true; + if (0x11200 <= cp && cp <= 0x11211) return true; + if (0x11213 <= cp && cp <= 0x1122B) return true; + if (0x11280 <= cp && cp <= 0x11286) return true; + if (cp === 0x11288) return true; + if (0x1128A <= cp && cp <= 0x1128D) return true; + if (0x1128F <= cp && cp <= 0x1129D) return true; + if (0x1129F <= cp && cp <= 0x112A8) return true; + if (0x112B0 <= cp && cp <= 0x112DE) return true; + if (0x11305 <= cp && cp <= 0x1130C) return true; + if (0x1130F <= cp && cp <= 0x11310) return true; + if (0x11313 <= cp && cp <= 0x11328) return true; + if (0x1132A <= cp && cp <= 0x11330) return true; + if (0x11332 <= cp && cp <= 0x11333) return true; + if (0x11335 <= cp && cp <= 0x11339) return true; + if (cp === 0x1133D) return true; + if (cp === 0x11350) return true; + if (0x1135D <= cp && cp <= 0x11361) return true; + if (0x11480 <= cp && cp <= 0x114AF) return true; + if (0x114C4 <= cp && cp <= 0x114C5) return true; + if (cp === 0x114C7) return true; + if (0x11580 <= cp && cp <= 0x115AE) return true; + if (0x115D8 <= cp && cp <= 0x115DB) return true; + if (0x11600 <= cp && cp <= 0x1162F) return true; + if (cp === 0x11644) return true; + if (0x11680 <= cp && cp <= 0x116AA) return true; + if (0x11700 <= cp && cp <= 0x11719) return true; + if (0x118A0 <= cp && cp <= 0x118DF) return true; + if (cp === 0x118FF) return true; + if (0x11AC0 <= cp && cp <= 0x11AF8) return true; + if (0x12000 <= cp && cp <= 0x12399) return true; + if (0x12400 <= cp && cp <= 0x1246E) return true; + if (0x12480 <= cp && cp <= 0x12543) return true; + if (0x13000 <= cp && cp <= 0x1342E) return true; + if (0x14400 <= cp && cp <= 0x14646) return true; + if (0x16800 <= cp && cp <= 0x16A38) return true; + if (0x16A40 <= cp && cp <= 0x16A5E) return true; + if (0x16AD0 <= cp && cp <= 0x16AED) return true; + if (0x16B00 <= cp && cp <= 0x16B2F) return true; + if (0x16B40 <= cp && cp <= 0x16B43) return true; + if (0x16B63 <= cp && cp <= 0x16B77) return true; + if (0x16B7D <= cp && cp <= 0x16B8F) return true; + if (0x16F00 <= cp && cp <= 0x16F44) return true; + if (cp === 0x16F50) return true; + if (0x16F93 <= cp && cp <= 0x16F9F) return true; + if (0x1B000 <= cp && cp <= 0x1B001) return true; + if (0x1BC00 <= cp && cp <= 0x1BC6A) return true; + if (0x1BC70 <= cp && cp <= 0x1BC7C) return true; + if (0x1BC80 <= cp && cp <= 0x1BC88) return true; + if (0x1BC90 <= cp && cp <= 0x1BC99) return true; + if (0x1D400 <= cp && cp <= 0x1D454) return true; + if (0x1D456 <= cp && cp <= 0x1D49C) return true; + if (0x1D49E <= cp && cp <= 0x1D49F) return true; + if (cp === 0x1D4A2) return true; + if (0x1D4A5 <= cp && cp <= 0x1D4A6) return true; + if (0x1D4A9 <= cp && cp <= 0x1D4AC) return true; + if (0x1D4AE <= cp && cp <= 0x1D4B9) return true; + if (cp === 0x1D4BB) return true; + if (0x1D4BD <= cp && cp <= 0x1D4C3) return true; + if (0x1D4C5 <= cp && cp <= 0x1D505) return true; + if (0x1D507 <= cp && cp <= 0x1D50A) return true; + if (0x1D50D <= cp && cp <= 0x1D514) return true; + if (0x1D516 <= cp && cp <= 0x1D51C) return true; + if (0x1D51E <= cp && cp <= 0x1D539) return true; + if (0x1D53B <= cp && cp <= 0x1D53E) return true; + if (0x1D540 <= cp && cp <= 0x1D544) return true; + if (cp === 0x1D546) return true; + if (0x1D54A <= cp && cp <= 0x1D550) return true; + if (0x1D552 <= cp && cp <= 0x1D6A5) return true; + if (0x1D6A8 <= cp && cp <= 0x1D6C0) return true; + if (0x1D6C2 <= cp && cp <= 0x1D6DA) return true; + if (0x1D6DC <= cp && cp <= 0x1D6FA) return true; + if (0x1D6FC <= cp && cp <= 0x1D714) return true; + if (0x1D716 <= cp && cp <= 0x1D734) return true; + if (0x1D736 <= cp && cp <= 0x1D74E) return true; + if (0x1D750 <= cp && cp <= 0x1D76E) return true; + if (0x1D770 <= cp && cp <= 0x1D788) return true; + if (0x1D78A <= cp && cp <= 0x1D7A8) return true; + if (0x1D7AA <= cp && cp <= 0x1D7C2) return true; + if (0x1D7C4 <= cp && cp <= 0x1D7CB) return true; + if (0x1E800 <= cp && cp <= 0x1E8C4) return true; + if (0x1EE00 <= cp && cp <= 0x1EE03) return true; + if (0x1EE05 <= cp && cp <= 0x1EE1F) return true; + if (0x1EE21 <= cp && cp <= 0x1EE22) return true; + if (cp === 0x1EE24) return true; + if (cp === 0x1EE27) return true; + if (0x1EE29 <= cp && cp <= 0x1EE32) return true; + if (0x1EE34 <= cp && cp <= 0x1EE37) return true; + if (cp === 0x1EE39) return true; + if (cp === 0x1EE3B) return true; + if (cp === 0x1EE42) return true; + if (cp === 0x1EE47) return true; + if (cp === 0x1EE49) return true; + if (cp === 0x1EE4B) return true; + if (0x1EE4D <= cp && cp <= 0x1EE4F) return true; + if (0x1EE51 <= cp && cp <= 0x1EE52) return true; + if (cp === 0x1EE54) return true; + if (cp === 0x1EE57) return true; + if (cp === 0x1EE59) return true; + if (cp === 0x1EE5B) return true; + if (cp === 0x1EE5D) return true; + if (cp === 0x1EE5F) return true; + if (0x1EE61 <= cp && cp <= 0x1EE62) return true; + if (cp === 0x1EE64) return true; + if (0x1EE67 <= cp && cp <= 0x1EE6A) return true; + if (0x1EE6C <= cp && cp <= 0x1EE72) return true; + if (0x1EE74 <= cp && cp <= 0x1EE77) return true; + if (0x1EE79 <= cp && cp <= 0x1EE7C) return true; + if (cp === 0x1EE7E) return true; + if (0x1EE80 <= cp && cp <= 0x1EE89) return true; + if (0x1EE8B <= cp && cp <= 0x1EE9B) return true; + if (0x1EEA1 <= cp && cp <= 0x1EEA3) return true; + if (0x1EEA5 <= cp && cp <= 0x1EEA9) return true; + if (0x1EEAB <= cp && cp <= 0x1EEBB) return true; + if (0x20000 <= cp && cp <= 0x2A6D6) return true; + if (0x2A700 <= cp && cp <= 0x2B734) return true; + if (0x2B740 <= cp && cp <= 0x2B81D) return true; + if (0x2B820 <= cp && cp <= 0x2CEA1) return true; + if (0x2F800 <= cp && cp <= 0x2FA1D) return true; + return false; +} +function IDC_Y(cp) { + if (0x0030 <= cp && cp <= 0x0039) return true; + if (0x0041 <= cp && cp <= 0x005A) return true; + if (cp === 0x005F) return true; + if (0x0061 <= cp && cp <= 0x007A) return true; + if (cp === 0x00AA) return true; + if (cp === 0x00B5) return true; + if (cp === 0x00B7) return true; + if (cp === 0x00BA) return true; + if (0x00C0 <= cp && cp <= 0x00D6) return true; + if (0x00D8 <= cp && cp <= 0x00F6) return true; + if (0x00F8 <= cp && cp <= 0x02C1) return true; + if (0x02C6 <= cp && cp <= 0x02D1) return true; + if (0x02E0 <= cp && cp <= 0x02E4) return true; + if (cp === 0x02EC) return true; + if (cp === 0x02EE) return true; + if (0x0300 <= cp && cp <= 0x0374) return true; + if (0x0376 <= cp && cp <= 0x0377) return true; + if (0x037A <= cp && cp <= 0x037D) return true; + if (cp === 0x037F) return true; + if (0x0386 <= cp && cp <= 0x038A) return true; + if (cp === 0x038C) return true; + if (0x038E <= cp && cp <= 0x03A1) return true; + if (0x03A3 <= cp && cp <= 0x03F5) return true; + if (0x03F7 <= cp && cp <= 0x0481) return true; + if (0x0483 <= cp && cp <= 0x0487) return true; + if (0x048A <= cp && cp <= 0x052F) return true; + if (0x0531 <= cp && cp <= 0x0556) return true; + if (cp === 0x0559) return true; + if (0x0561 <= cp && cp <= 0x0587) return true; + if (0x0591 <= cp && cp <= 0x05BD) return true; + if (cp === 0x05BF) return true; + if (0x05C1 <= cp && cp <= 0x05C2) return true; + if (0x05C4 <= cp && cp <= 0x05C5) return true; + if (cp === 0x05C7) return true; + if (0x05D0 <= cp && cp <= 0x05EA) return true; + if (0x05F0 <= cp && cp <= 0x05F2) return true; + if (0x0610 <= cp && cp <= 0x061A) return true; + if (0x0620 <= cp && cp <= 0x0669) return true; + if (0x066E <= cp && cp <= 0x06D3) return true; + if (0x06D5 <= cp && cp <= 0x06DC) return true; + if (0x06DF <= cp && cp <= 0x06E8) return true; + if (0x06EA <= cp && cp <= 0x06FC) return true; + if (cp === 0x06FF) return true; + if (0x0710 <= cp && cp <= 0x074A) return true; + if (0x074D <= cp && cp <= 0x07B1) return true; + if (0x07C0 <= cp && cp <= 0x07F5) return true; + if (cp === 0x07FA) return true; + if (0x0800 <= cp && cp <= 0x082D) return true; + if (0x0840 <= cp && cp <= 0x085B) return true; + if (0x08A0 <= cp && cp <= 0x08B4) return true; + if (0x08E3 <= cp && cp <= 0x0963) return true; + if (0x0966 <= cp && cp <= 0x096F) return true; + if (0x0971 <= cp && cp <= 0x0983) return true; + if (0x0985 <= cp && cp <= 0x098C) return true; + if (0x098F <= cp && cp <= 0x0990) return true; + if (0x0993 <= cp && cp <= 0x09A8) return true; + if (0x09AA <= cp && cp <= 0x09B0) return true; + if (cp === 0x09B2) return true; + if (0x09B6 <= cp && cp <= 0x09B9) return true; + if (0x09BC <= cp && cp <= 0x09C4) return true; + if (0x09C7 <= cp && cp <= 0x09C8) return true; + if (0x09CB <= cp && cp <= 0x09CE) return true; + if (cp === 0x09D7) return true; + if (0x09DC <= cp && cp <= 0x09DD) return true; + if (0x09DF <= cp && cp <= 0x09E3) return true; + if (0x09E6 <= cp && cp <= 0x09F1) return true; + if (0x0A01 <= cp && cp <= 0x0A03) return true; + if (0x0A05 <= cp && cp <= 0x0A0A) return true; + if (0x0A0F <= cp && cp <= 0x0A10) return true; + if (0x0A13 <= cp && cp <= 0x0A28) return true; + if (0x0A2A <= cp && cp <= 0x0A30) return true; + if (0x0A32 <= cp && cp <= 0x0A33) return true; + if (0x0A35 <= cp && cp <= 0x0A36) return true; + if (0x0A38 <= cp && cp <= 0x0A39) return true; + if (cp === 0x0A3C) return true; + if (0x0A3E <= cp && cp <= 0x0A42) return true; + if (0x0A47 <= cp && cp <= 0x0A48) return true; + if (0x0A4B <= cp && cp <= 0x0A4D) return true; + if (cp === 0x0A51) return true; + if (0x0A59 <= cp && cp <= 0x0A5C) return true; + if (cp === 0x0A5E) return true; + if (0x0A66 <= cp && cp <= 0x0A75) return true; + if (0x0A81 <= cp && cp <= 0x0A83) return true; + if (0x0A85 <= cp && cp <= 0x0A8D) return true; + if (0x0A8F <= cp && cp <= 0x0A91) return true; + if (0x0A93 <= cp && cp <= 0x0AA8) return true; + if (0x0AAA <= cp && cp <= 0x0AB0) return true; + if (0x0AB2 <= cp && cp <= 0x0AB3) return true; + if (0x0AB5 <= cp && cp <= 0x0AB9) return true; + if (0x0ABC <= cp && cp <= 0x0AC5) return true; + if (0x0AC7 <= cp && cp <= 0x0AC9) return true; + if (0x0ACB <= cp && cp <= 0x0ACD) return true; + if (cp === 0x0AD0) return true; + if (0x0AE0 <= cp && cp <= 0x0AE3) return true; + if (0x0AE6 <= cp && cp <= 0x0AEF) return true; + if (cp === 0x0AF9) return true; + if (0x0B01 <= cp && cp <= 0x0B03) return true; + if (0x0B05 <= cp && cp <= 0x0B0C) return true; + if (0x0B0F <= cp && cp <= 0x0B10) return true; + if (0x0B13 <= cp && cp <= 0x0B28) return true; + if (0x0B2A <= cp && cp <= 0x0B30) return true; + if (0x0B32 <= cp && cp <= 0x0B33) return true; + if (0x0B35 <= cp && cp <= 0x0B39) return true; + if (0x0B3C <= cp && cp <= 0x0B44) return true; + if (0x0B47 <= cp && cp <= 0x0B48) return true; + if (0x0B4B <= cp && cp <= 0x0B4D) return true; + if (0x0B56 <= cp && cp <= 0x0B57) return true; + if (0x0B5C <= cp && cp <= 0x0B5D) return true; + if (0x0B5F <= cp && cp <= 0x0B63) return true; + if (0x0B66 <= cp && cp <= 0x0B6F) return true; + if (cp === 0x0B71) return true; + if (0x0B82 <= cp && cp <= 0x0B83) return true; + if (0x0B85 <= cp && cp <= 0x0B8A) return true; + if (0x0B8E <= cp && cp <= 0x0B90) return true; + if (0x0B92 <= cp && cp <= 0x0B95) return true; + if (0x0B99 <= cp && cp <= 0x0B9A) return true; + if (cp === 0x0B9C) return true; + if (0x0B9E <= cp && cp <= 0x0B9F) return true; + if (0x0BA3 <= cp && cp <= 0x0BA4) return true; + if (0x0BA8 <= cp && cp <= 0x0BAA) return true; + if (0x0BAE <= cp && cp <= 0x0BB9) return true; + if (0x0BBE <= cp && cp <= 0x0BC2) return true; + if (0x0BC6 <= cp && cp <= 0x0BC8) return true; + if (0x0BCA <= cp && cp <= 0x0BCD) return true; + if (cp === 0x0BD0) return true; + if (cp === 0x0BD7) return true; + if (0x0BE6 <= cp && cp <= 0x0BEF) return true; + if (0x0C00 <= cp && cp <= 0x0C03) return true; + if (0x0C05 <= cp && cp <= 0x0C0C) return true; + if (0x0C0E <= cp && cp <= 0x0C10) return true; + if (0x0C12 <= cp && cp <= 0x0C28) return true; + if (0x0C2A <= cp && cp <= 0x0C39) return true; + if (0x0C3D <= cp && cp <= 0x0C44) return true; + if (0x0C46 <= cp && cp <= 0x0C48) return true; + if (0x0C4A <= cp && cp <= 0x0C4D) return true; + if (0x0C55 <= cp && cp <= 0x0C56) return true; + if (0x0C58 <= cp && cp <= 0x0C5A) return true; + if (0x0C60 <= cp && cp <= 0x0C63) return true; + if (0x0C66 <= cp && cp <= 0x0C6F) return true; + if (0x0C81 <= cp && cp <= 0x0C83) return true; + if (0x0C85 <= cp && cp <= 0x0C8C) return true; + if (0x0C8E <= cp && cp <= 0x0C90) return true; + if (0x0C92 <= cp && cp <= 0x0CA8) return true; + if (0x0CAA <= cp && cp <= 0x0CB3) return true; + if (0x0CB5 <= cp && cp <= 0x0CB9) return true; + if (0x0CBC <= cp && cp <= 0x0CC4) return true; + if (0x0CC6 <= cp && cp <= 0x0CC8) return true; + if (0x0CCA <= cp && cp <= 0x0CCD) return true; + if (0x0CD5 <= cp && cp <= 0x0CD6) return true; + if (cp === 0x0CDE) return true; + if (0x0CE0 <= cp && cp <= 0x0CE3) return true; + if (0x0CE6 <= cp && cp <= 0x0CEF) return true; + if (0x0CF1 <= cp && cp <= 0x0CF2) return true; + if (0x0D01 <= cp && cp <= 0x0D03) return true; + if (0x0D05 <= cp && cp <= 0x0D0C) return true; + if (0x0D0E <= cp && cp <= 0x0D10) return true; + if (0x0D12 <= cp && cp <= 0x0D3A) return true; + if (0x0D3D <= cp && cp <= 0x0D44) return true; + if (0x0D46 <= cp && cp <= 0x0D48) return true; + if (0x0D4A <= cp && cp <= 0x0D4E) return true; + if (cp === 0x0D57) return true; + if (0x0D5F <= cp && cp <= 0x0D63) return true; + if (0x0D66 <= cp && cp <= 0x0D6F) return true; + if (0x0D7A <= cp && cp <= 0x0D7F) return true; + if (0x0D82 <= cp && cp <= 0x0D83) return true; + if (0x0D85 <= cp && cp <= 0x0D96) return true; + if (0x0D9A <= cp && cp <= 0x0DB1) return true; + if (0x0DB3 <= cp && cp <= 0x0DBB) return true; + if (cp === 0x0DBD) return true; + if (0x0DC0 <= cp && cp <= 0x0DC6) return true; + if (cp === 0x0DCA) return true; + if (0x0DCF <= cp && cp <= 0x0DD4) return true; + if (cp === 0x0DD6) return true; + if (0x0DD8 <= cp && cp <= 0x0DDF) return true; + if (0x0DE6 <= cp && cp <= 0x0DEF) return true; + if (0x0DF2 <= cp && cp <= 0x0DF3) return true; + if (0x0E01 <= cp && cp <= 0x0E3A) return true; + if (0x0E40 <= cp && cp <= 0x0E4E) return true; + if (0x0E50 <= cp && cp <= 0x0E59) return true; + if (0x0E81 <= cp && cp <= 0x0E82) return true; + if (cp === 0x0E84) return true; + if (0x0E87 <= cp && cp <= 0x0E88) return true; + if (cp === 0x0E8A) return true; + if (cp === 0x0E8D) return true; + if (0x0E94 <= cp && cp <= 0x0E97) return true; + if (0x0E99 <= cp && cp <= 0x0E9F) return true; + if (0x0EA1 <= cp && cp <= 0x0EA3) return true; + if (cp === 0x0EA5) return true; + if (cp === 0x0EA7) return true; + if (0x0EAA <= cp && cp <= 0x0EAB) return true; + if (0x0EAD <= cp && cp <= 0x0EB9) return true; + if (0x0EBB <= cp && cp <= 0x0EBD) return true; + if (0x0EC0 <= cp && cp <= 0x0EC4) return true; + if (cp === 0x0EC6) return true; + if (0x0EC8 <= cp && cp <= 0x0ECD) return true; + if (0x0ED0 <= cp && cp <= 0x0ED9) return true; + if (0x0EDC <= cp && cp <= 0x0EDF) return true; + if (cp === 0x0F00) return true; + if (0x0F18 <= cp && cp <= 0x0F19) return true; + if (0x0F20 <= cp && cp <= 0x0F29) return true; + if (cp === 0x0F35) return true; + if (cp === 0x0F37) return true; + if (cp === 0x0F39) return true; + if (0x0F3E <= cp && cp <= 0x0F47) return true; + if (0x0F49 <= cp && cp <= 0x0F6C) return true; + if (0x0F71 <= cp && cp <= 0x0F84) return true; + if (0x0F86 <= cp && cp <= 0x0F97) return true; + if (0x0F99 <= cp && cp <= 0x0FBC) return true; + if (cp === 0x0FC6) return true; + if (0x1000 <= cp && cp <= 0x1049) return true; + if (0x1050 <= cp && cp <= 0x109D) return true; + if (0x10A0 <= cp && cp <= 0x10C5) return true; + if (cp === 0x10C7) return true; + if (cp === 0x10CD) return true; + if (0x10D0 <= cp && cp <= 0x10FA) return true; + if (0x10FC <= cp && cp <= 0x1248) return true; + if (0x124A <= cp && cp <= 0x124D) return true; + if (0x1250 <= cp && cp <= 0x1256) return true; + if (cp === 0x1258) return true; + if (0x125A <= cp && cp <= 0x125D) return true; + if (0x1260 <= cp && cp <= 0x1288) return true; + if (0x128A <= cp && cp <= 0x128D) return true; + if (0x1290 <= cp && cp <= 0x12B0) return true; + if (0x12B2 <= cp && cp <= 0x12B5) return true; + if (0x12B8 <= cp && cp <= 0x12BE) return true; + if (cp === 0x12C0) return true; + if (0x12C2 <= cp && cp <= 0x12C5) return true; + if (0x12C8 <= cp && cp <= 0x12D6) return true; + if (0x12D8 <= cp && cp <= 0x1310) return true; + if (0x1312 <= cp && cp <= 0x1315) return true; + if (0x1318 <= cp && cp <= 0x135A) return true; + if (0x135D <= cp && cp <= 0x135F) return true; + if (0x1369 <= cp && cp <= 0x1371) return true; + if (0x1380 <= cp && cp <= 0x138F) return true; + if (0x13A0 <= cp && cp <= 0x13F5) return true; + if (0x13F8 <= cp && cp <= 0x13FD) return true; + if (0x1401 <= cp && cp <= 0x166C) return true; + if (0x166F <= cp && cp <= 0x167F) return true; + if (0x1681 <= cp && cp <= 0x169A) return true; + if (0x16A0 <= cp && cp <= 0x16EA) return true; + if (0x16EE <= cp && cp <= 0x16F8) return true; + if (0x1700 <= cp && cp <= 0x170C) return true; + if (0x170E <= cp && cp <= 0x1714) return true; + if (0x1720 <= cp && cp <= 0x1734) return true; + if (0x1740 <= cp && cp <= 0x1753) return true; + if (0x1760 <= cp && cp <= 0x176C) return true; + if (0x176E <= cp && cp <= 0x1770) return true; + if (0x1772 <= cp && cp <= 0x1773) return true; + if (0x1780 <= cp && cp <= 0x17D3) return true; + if (cp === 0x17D7) return true; + if (0x17DC <= cp && cp <= 0x17DD) return true; + if (0x17E0 <= cp && cp <= 0x17E9) return true; + if (0x180B <= cp && cp <= 0x180D) return true; + if (0x1810 <= cp && cp <= 0x1819) return true; + if (0x1820 <= cp && cp <= 0x1877) return true; + if (0x1880 <= cp && cp <= 0x18AA) return true; + if (0x18B0 <= cp && cp <= 0x18F5) return true; + if (0x1900 <= cp && cp <= 0x191E) return true; + if (0x1920 <= cp && cp <= 0x192B) return true; + if (0x1930 <= cp && cp <= 0x193B) return true; + if (0x1946 <= cp && cp <= 0x196D) return true; + if (0x1970 <= cp && cp <= 0x1974) return true; + if (0x1980 <= cp && cp <= 0x19AB) return true; + if (0x19B0 <= cp && cp <= 0x19C9) return true; + if (0x19D0 <= cp && cp <= 0x19DA) return true; + if (0x1A00 <= cp && cp <= 0x1A1B) return true; + if (0x1A20 <= cp && cp <= 0x1A5E) return true; + if (0x1A60 <= cp && cp <= 0x1A7C) return true; + if (0x1A7F <= cp && cp <= 0x1A89) return true; + if (0x1A90 <= cp && cp <= 0x1A99) return true; + if (cp === 0x1AA7) return true; + if (0x1AB0 <= cp && cp <= 0x1ABD) return true; + if (0x1B00 <= cp && cp <= 0x1B4B) return true; + if (0x1B50 <= cp && cp <= 0x1B59) return true; + if (0x1B6B <= cp && cp <= 0x1B73) return true; + if (0x1B80 <= cp && cp <= 0x1BF3) return true; + if (0x1C00 <= cp && cp <= 0x1C37) return true; + if (0x1C40 <= cp && cp <= 0x1C49) return true; + if (0x1C4D <= cp && cp <= 0x1C7D) return true; + if (0x1CD0 <= cp && cp <= 0x1CD2) return true; + if (0x1CD4 <= cp && cp <= 0x1CF6) return true; + if (0x1CF8 <= cp && cp <= 0x1CF9) return true; + if (0x1D00 <= cp && cp <= 0x1DF5) return true; + if (0x1DFC <= cp && cp <= 0x1F15) return true; + if (0x1F18 <= cp && cp <= 0x1F1D) return true; + if (0x1F20 <= cp && cp <= 0x1F45) return true; + if (0x1F48 <= cp && cp <= 0x1F4D) return true; + if (0x1F50 <= cp && cp <= 0x1F57) return true; + if (cp === 0x1F59) return true; + if (cp === 0x1F5B) return true; + if (cp === 0x1F5D) return true; + if (0x1F5F <= cp && cp <= 0x1F7D) return true; + if (0x1F80 <= cp && cp <= 0x1FB4) return true; + if (0x1FB6 <= cp && cp <= 0x1FBC) return true; + if (cp === 0x1FBE) return true; + if (0x1FC2 <= cp && cp <= 0x1FC4) return true; + if (0x1FC6 <= cp && cp <= 0x1FCC) return true; + if (0x1FD0 <= cp && cp <= 0x1FD3) return true; + if (0x1FD6 <= cp && cp <= 0x1FDB) return true; + if (0x1FE0 <= cp && cp <= 0x1FEC) return true; + if (0x1FF2 <= cp && cp <= 0x1FF4) return true; + if (0x1FF6 <= cp && cp <= 0x1FFC) return true; + if (0x203F <= cp && cp <= 0x2040) return true; + if (cp === 0x2054) return true; + if (cp === 0x2071) return true; + if (cp === 0x207F) return true; + if (0x2090 <= cp && cp <= 0x209C) return true; + if (0x20D0 <= cp && cp <= 0x20DC) return true; + if (cp === 0x20E1) return true; + if (0x20E5 <= cp && cp <= 0x20F0) return true; + if (cp === 0x2102) return true; + if (cp === 0x2107) return true; + if (0x210A <= cp && cp <= 0x2113) return true; + if (cp === 0x2115) return true; + if (0x2118 <= cp && cp <= 0x211D) return true; + if (cp === 0x2124) return true; + if (cp === 0x2126) return true; + if (cp === 0x2128) return true; + if (0x212A <= cp && cp <= 0x2139) return true; + if (0x213C <= cp && cp <= 0x213F) return true; + if (0x2145 <= cp && cp <= 0x2149) return true; + if (cp === 0x214E) return true; + if (0x2160 <= cp && cp <= 0x2188) return true; + if (0x2C00 <= cp && cp <= 0x2C2E) return true; + if (0x2C30 <= cp && cp <= 0x2C5E) return true; + if (0x2C60 <= cp && cp <= 0x2CE4) return true; + if (0x2CEB <= cp && cp <= 0x2CF3) return true; + if (0x2D00 <= cp && cp <= 0x2D25) return true; + if (cp === 0x2D27) return true; + if (cp === 0x2D2D) return true; + if (0x2D30 <= cp && cp <= 0x2D67) return true; + if (cp === 0x2D6F) return true; + if (0x2D7F <= cp && cp <= 0x2D96) return true; + if (0x2DA0 <= cp && cp <= 0x2DA6) return true; + if (0x2DA8 <= cp && cp <= 0x2DAE) return true; + if (0x2DB0 <= cp && cp <= 0x2DB6) return true; + if (0x2DB8 <= cp && cp <= 0x2DBE) return true; + if (0x2DC0 <= cp && cp <= 0x2DC6) return true; + if (0x2DC8 <= cp && cp <= 0x2DCE) return true; + if (0x2DD0 <= cp && cp <= 0x2DD6) return true; + if (0x2DD8 <= cp && cp <= 0x2DDE) return true; + if (0x2DE0 <= cp && cp <= 0x2DFF) return true; + if (0x3005 <= cp && cp <= 0x3007) return true; + if (0x3021 <= cp && cp <= 0x302F) return true; + if (0x3031 <= cp && cp <= 0x3035) return true; + if (0x3038 <= cp && cp <= 0x303C) return true; + if (0x3041 <= cp && cp <= 0x3096) return true; + if (0x3099 <= cp && cp <= 0x309F) return true; + if (0x30A1 <= cp && cp <= 0x30FA) return true; + if (0x30FC <= cp && cp <= 0x30FF) return true; + if (0x3105 <= cp && cp <= 0x312D) return true; + if (0x3131 <= cp && cp <= 0x318E) return true; + if (0x31A0 <= cp && cp <= 0x31BA) return true; + if (0x31F0 <= cp && cp <= 0x31FF) return true; + if (0x3400 <= cp && cp <= 0x4DB5) return true; + if (0x4E00 <= cp && cp <= 0x9FD5) return true; + if (0xA000 <= cp && cp <= 0xA48C) return true; + if (0xA4D0 <= cp && cp <= 0xA4FD) return true; + if (0xA500 <= cp && cp <= 0xA60C) return true; + if (0xA610 <= cp && cp <= 0xA62B) return true; + if (0xA640 <= cp && cp <= 0xA66F) return true; + if (0xA674 <= cp && cp <= 0xA67D) return true; + if (0xA67F <= cp && cp <= 0xA6F1) return true; + if (0xA717 <= cp && cp <= 0xA71F) return true; + if (0xA722 <= cp && cp <= 0xA788) return true; + if (0xA78B <= cp && cp <= 0xA7AD) return true; + if (0xA7B0 <= cp && cp <= 0xA7B7) return true; + if (0xA7F7 <= cp && cp <= 0xA827) return true; + if (0xA840 <= cp && cp <= 0xA873) return true; + if (0xA880 <= cp && cp <= 0xA8C4) return true; + if (0xA8D0 <= cp && cp <= 0xA8D9) return true; + if (0xA8E0 <= cp && cp <= 0xA8F7) return true; + if (cp === 0xA8FB) return true; + if (cp === 0xA8FD) return true; + if (0xA900 <= cp && cp <= 0xA92D) return true; + if (0xA930 <= cp && cp <= 0xA953) return true; + if (0xA960 <= cp && cp <= 0xA97C) return true; + if (0xA980 <= cp && cp <= 0xA9C0) return true; + if (0xA9CF <= cp && cp <= 0xA9D9) return true; + if (0xA9E0 <= cp && cp <= 0xA9FE) return true; + if (0xAA00 <= cp && cp <= 0xAA36) return true; + if (0xAA40 <= cp && cp <= 0xAA4D) return true; + if (0xAA50 <= cp && cp <= 0xAA59) return true; + if (0xAA60 <= cp && cp <= 0xAA76) return true; + if (0xAA7A <= cp && cp <= 0xAAC2) return true; + if (0xAADB <= cp && cp <= 0xAADD) return true; + if (0xAAE0 <= cp && cp <= 0xAAEF) return true; + if (0xAAF2 <= cp && cp <= 0xAAF6) return true; + if (0xAB01 <= cp && cp <= 0xAB06) return true; + if (0xAB09 <= cp && cp <= 0xAB0E) return true; + if (0xAB11 <= cp && cp <= 0xAB16) return true; + if (0xAB20 <= cp && cp <= 0xAB26) return true; + if (0xAB28 <= cp && cp <= 0xAB2E) return true; + if (0xAB30 <= cp && cp <= 0xAB5A) return true; + if (0xAB5C <= cp && cp <= 0xAB65) return true; + if (0xAB70 <= cp && cp <= 0xABEA) return true; + if (0xABEC <= cp && cp <= 0xABED) return true; + if (0xABF0 <= cp && cp <= 0xABF9) return true; + if (0xAC00 <= cp && cp <= 0xD7A3) return true; + if (0xD7B0 <= cp && cp <= 0xD7C6) return true; + if (0xD7CB <= cp && cp <= 0xD7FB) return true; + if (0xF900 <= cp && cp <= 0xFA6D) return true; + if (0xFA70 <= cp && cp <= 0xFAD9) return true; + if (0xFB00 <= cp && cp <= 0xFB06) return true; + if (0xFB13 <= cp && cp <= 0xFB17) return true; + if (0xFB1D <= cp && cp <= 0xFB28) return true; + if (0xFB2A <= cp && cp <= 0xFB36) return true; + if (0xFB38 <= cp && cp <= 0xFB3C) return true; + if (cp === 0xFB3E) return true; + if (0xFB40 <= cp && cp <= 0xFB41) return true; + if (0xFB43 <= cp && cp <= 0xFB44) return true; + if (0xFB46 <= cp && cp <= 0xFBB1) return true; + if (0xFBD3 <= cp && cp <= 0xFD3D) return true; + if (0xFD50 <= cp && cp <= 0xFD8F) return true; + if (0xFD92 <= cp && cp <= 0xFDC7) return true; + if (0xFDF0 <= cp && cp <= 0xFDFB) return true; + if (0xFE00 <= cp && cp <= 0xFE0F) return true; + if (0xFE20 <= cp && cp <= 0xFE2F) return true; + if (0xFE33 <= cp && cp <= 0xFE34) return true; + if (0xFE4D <= cp && cp <= 0xFE4F) return true; + if (0xFE70 <= cp && cp <= 0xFE74) return true; + if (0xFE76 <= cp && cp <= 0xFEFC) return true; + if (0xFF10 <= cp && cp <= 0xFF19) return true; + if (0xFF21 <= cp && cp <= 0xFF3A) return true; + if (cp === 0xFF3F) return true; + if (0xFF41 <= cp && cp <= 0xFF5A) return true; + if (0xFF66 <= cp && cp <= 0xFFBE) return true; + if (0xFFC2 <= cp && cp <= 0xFFC7) return true; + if (0xFFCA <= cp && cp <= 0xFFCF) return true; + if (0xFFD2 <= cp && cp <= 0xFFD7) return true; + if (0xFFDA <= cp && cp <= 0xFFDC) return true; + if (0x10000 <= cp && cp <= 0x1000B) return true; + if (0x1000D <= cp && cp <= 0x10026) return true; + if (0x10028 <= cp && cp <= 0x1003A) return true; + if (0x1003C <= cp && cp <= 0x1003D) return true; + if (0x1003F <= cp && cp <= 0x1004D) return true; + if (0x10050 <= cp && cp <= 0x1005D) return true; + if (0x10080 <= cp && cp <= 0x100FA) return true; + if (0x10140 <= cp && cp <= 0x10174) return true; + if (cp === 0x101FD) return true; + if (0x10280 <= cp && cp <= 0x1029C) return true; + if (0x102A0 <= cp && cp <= 0x102D0) return true; + if (cp === 0x102E0) return true; + if (0x10300 <= cp && cp <= 0x1031F) return true; + if (0x10330 <= cp && cp <= 0x1034A) return true; + if (0x10350 <= cp && cp <= 0x1037A) return true; + if (0x10380 <= cp && cp <= 0x1039D) return true; + if (0x103A0 <= cp && cp <= 0x103C3) return true; + if (0x103C8 <= cp && cp <= 0x103CF) return true; + if (0x103D1 <= cp && cp <= 0x103D5) return true; + if (0x10400 <= cp && cp <= 0x1049D) return true; + if (0x104A0 <= cp && cp <= 0x104A9) return true; + if (0x10500 <= cp && cp <= 0x10527) return true; + if (0x10530 <= cp && cp <= 0x10563) return true; + if (0x10600 <= cp && cp <= 0x10736) return true; + if (0x10740 <= cp && cp <= 0x10755) return true; + if (0x10760 <= cp && cp <= 0x10767) return true; + if (0x10800 <= cp && cp <= 0x10805) return true; + if (cp === 0x10808) return true; + if (0x1080A <= cp && cp <= 0x10835) return true; + if (0x10837 <= cp && cp <= 0x10838) return true; + if (cp === 0x1083C) return true; + if (0x1083F <= cp && cp <= 0x10855) return true; + if (0x10860 <= cp && cp <= 0x10876) return true; + if (0x10880 <= cp && cp <= 0x1089E) return true; + if (0x108E0 <= cp && cp <= 0x108F2) return true; + if (0x108F4 <= cp && cp <= 0x108F5) return true; + if (0x10900 <= cp && cp <= 0x10915) return true; + if (0x10920 <= cp && cp <= 0x10939) return true; + if (0x10980 <= cp && cp <= 0x109B7) return true; + if (0x109BE <= cp && cp <= 0x109BF) return true; + if (0x10A00 <= cp && cp <= 0x10A03) return true; + if (0x10A05 <= cp && cp <= 0x10A06) return true; + if (0x10A0C <= cp && cp <= 0x10A13) return true; + if (0x10A15 <= cp && cp <= 0x10A17) return true; + if (0x10A19 <= cp && cp <= 0x10A33) return true; + if (0x10A38 <= cp && cp <= 0x10A3A) return true; + if (cp === 0x10A3F) return true; + if (0x10A60 <= cp && cp <= 0x10A7C) return true; + if (0x10A80 <= cp && cp <= 0x10A9C) return true; + if (0x10AC0 <= cp && cp <= 0x10AC7) return true; + if (0x10AC9 <= cp && cp <= 0x10AE6) return true; + if (0x10B00 <= cp && cp <= 0x10B35) return true; + if (0x10B40 <= cp && cp <= 0x10B55) return true; + if (0x10B60 <= cp && cp <= 0x10B72) return true; + if (0x10B80 <= cp && cp <= 0x10B91) return true; + if (0x10C00 <= cp && cp <= 0x10C48) return true; + if (0x10C80 <= cp && cp <= 0x10CB2) return true; + if (0x10CC0 <= cp && cp <= 0x10CF2) return true; + if (0x11000 <= cp && cp <= 0x11046) return true; + if (0x11066 <= cp && cp <= 0x1106F) return true; + if (0x1107F <= cp && cp <= 0x110BA) return true; + if (0x110D0 <= cp && cp <= 0x110E8) return true; + if (0x110F0 <= cp && cp <= 0x110F9) return true; + if (0x11100 <= cp && cp <= 0x11134) return true; + if (0x11136 <= cp && cp <= 0x1113F) return true; + if (0x11150 <= cp && cp <= 0x11173) return true; + if (cp === 0x11176) return true; + if (0x11180 <= cp && cp <= 0x111C4) return true; + if (0x111CA <= cp && cp <= 0x111CC) return true; + if (0x111D0 <= cp && cp <= 0x111DA) return true; + if (cp === 0x111DC) return true; + if (0x11200 <= cp && cp <= 0x11211) return true; + if (0x11213 <= cp && cp <= 0x11237) return true; + if (0x11280 <= cp && cp <= 0x11286) return true; + if (cp === 0x11288) return true; + if (0x1128A <= cp && cp <= 0x1128D) return true; + if (0x1128F <= cp && cp <= 0x1129D) return true; + if (0x1129F <= cp && cp <= 0x112A8) return true; + if (0x112B0 <= cp && cp <= 0x112EA) return true; + if (0x112F0 <= cp && cp <= 0x112F9) return true; + if (0x11300 <= cp && cp <= 0x11303) return true; + if (0x11305 <= cp && cp <= 0x1130C) return true; + if (0x1130F <= cp && cp <= 0x11310) return true; + if (0x11313 <= cp && cp <= 0x11328) return true; + if (0x1132A <= cp && cp <= 0x11330) return true; + if (0x11332 <= cp && cp <= 0x11333) return true; + if (0x11335 <= cp && cp <= 0x11339) return true; + if (0x1133C <= cp && cp <= 0x11344) return true; + if (0x11347 <= cp && cp <= 0x11348) return true; + if (0x1134B <= cp && cp <= 0x1134D) return true; + if (cp === 0x11350) return true; + if (cp === 0x11357) return true; + if (0x1135D <= cp && cp <= 0x11363) return true; + if (0x11366 <= cp && cp <= 0x1136C) return true; + if (0x11370 <= cp && cp <= 0x11374) return true; + if (0x11480 <= cp && cp <= 0x114C5) return true; + if (cp === 0x114C7) return true; + if (0x114D0 <= cp && cp <= 0x114D9) return true; + if (0x11580 <= cp && cp <= 0x115B5) return true; + if (0x115B8 <= cp && cp <= 0x115C0) return true; + if (0x115D8 <= cp && cp <= 0x115DD) return true; + if (0x11600 <= cp && cp <= 0x11640) return true; + if (cp === 0x11644) return true; + if (0x11650 <= cp && cp <= 0x11659) return true; + if (0x11680 <= cp && cp <= 0x116B7) return true; + if (0x116C0 <= cp && cp <= 0x116C9) return true; + if (0x11700 <= cp && cp <= 0x11719) return true; + if (0x1171D <= cp && cp <= 0x1172B) return true; + if (0x11730 <= cp && cp <= 0x11739) return true; + if (0x118A0 <= cp && cp <= 0x118E9) return true; + if (cp === 0x118FF) return true; + if (0x11AC0 <= cp && cp <= 0x11AF8) return true; + if (0x12000 <= cp && cp <= 0x12399) return true; + if (0x12400 <= cp && cp <= 0x1246E) return true; + if (0x12480 <= cp && cp <= 0x12543) return true; + if (0x13000 <= cp && cp <= 0x1342E) return true; + if (0x14400 <= cp && cp <= 0x14646) return true; + if (0x16800 <= cp && cp <= 0x16A38) return true; + if (0x16A40 <= cp && cp <= 0x16A5E) return true; + if (0x16A60 <= cp && cp <= 0x16A69) return true; + if (0x16AD0 <= cp && cp <= 0x16AED) return true; + if (0x16AF0 <= cp && cp <= 0x16AF4) return true; + if (0x16B00 <= cp && cp <= 0x16B36) return true; + if (0x16B40 <= cp && cp <= 0x16B43) return true; + if (0x16B50 <= cp && cp <= 0x16B59) return true; + if (0x16B63 <= cp && cp <= 0x16B77) return true; + if (0x16B7D <= cp && cp <= 0x16B8F) return true; + if (0x16F00 <= cp && cp <= 0x16F44) return true; + if (0x16F50 <= cp && cp <= 0x16F7E) return true; + if (0x16F8F <= cp && cp <= 0x16F9F) return true; + if (0x1B000 <= cp && cp <= 0x1B001) return true; + if (0x1BC00 <= cp && cp <= 0x1BC6A) return true; + if (0x1BC70 <= cp && cp <= 0x1BC7C) return true; + if (0x1BC80 <= cp && cp <= 0x1BC88) return true; + if (0x1BC90 <= cp && cp <= 0x1BC99) return true; + if (0x1BC9D <= cp && cp <= 0x1BC9E) return true; + if (0x1D165 <= cp && cp <= 0x1D169) return true; + if (0x1D16D <= cp && cp <= 0x1D172) return true; + if (0x1D17B <= cp && cp <= 0x1D182) return true; + if (0x1D185 <= cp && cp <= 0x1D18B) return true; + if (0x1D1AA <= cp && cp <= 0x1D1AD) return true; + if (0x1D242 <= cp && cp <= 0x1D244) return true; + if (0x1D400 <= cp && cp <= 0x1D454) return true; + if (0x1D456 <= cp && cp <= 0x1D49C) return true; + if (0x1D49E <= cp && cp <= 0x1D49F) return true; + if (cp === 0x1D4A2) return true; + if (0x1D4A5 <= cp && cp <= 0x1D4A6) return true; + if (0x1D4A9 <= cp && cp <= 0x1D4AC) return true; + if (0x1D4AE <= cp && cp <= 0x1D4B9) return true; + if (cp === 0x1D4BB) return true; + if (0x1D4BD <= cp && cp <= 0x1D4C3) return true; + if (0x1D4C5 <= cp && cp <= 0x1D505) return true; + if (0x1D507 <= cp && cp <= 0x1D50A) return true; + if (0x1D50D <= cp && cp <= 0x1D514) return true; + if (0x1D516 <= cp && cp <= 0x1D51C) return true; + if (0x1D51E <= cp && cp <= 0x1D539) return true; + if (0x1D53B <= cp && cp <= 0x1D53E) return true; + if (0x1D540 <= cp && cp <= 0x1D544) return true; + if (cp === 0x1D546) return true; + if (0x1D54A <= cp && cp <= 0x1D550) return true; + if (0x1D552 <= cp && cp <= 0x1D6A5) return true; + if (0x1D6A8 <= cp && cp <= 0x1D6C0) return true; + if (0x1D6C2 <= cp && cp <= 0x1D6DA) return true; + if (0x1D6DC <= cp && cp <= 0x1D6FA) return true; + if (0x1D6FC <= cp && cp <= 0x1D714) return true; + if (0x1D716 <= cp && cp <= 0x1D734) return true; + if (0x1D736 <= cp && cp <= 0x1D74E) return true; + if (0x1D750 <= cp && cp <= 0x1D76E) return true; + if (0x1D770 <= cp && cp <= 0x1D788) return true; + if (0x1D78A <= cp && cp <= 0x1D7A8) return true; + if (0x1D7AA <= cp && cp <= 0x1D7C2) return true; + if (0x1D7C4 <= cp && cp <= 0x1D7CB) return true; + if (0x1D7CE <= cp && cp <= 0x1D7FF) return true; + if (0x1DA00 <= cp && cp <= 0x1DA36) return true; + if (0x1DA3B <= cp && cp <= 0x1DA6C) return true; + if (cp === 0x1DA75) return true; + if (cp === 0x1DA84) return true; + if (0x1DA9B <= cp && cp <= 0x1DA9F) return true; + if (0x1DAA1 <= cp && cp <= 0x1DAAF) return true; + if (0x1E800 <= cp && cp <= 0x1E8C4) return true; + if (0x1E8D0 <= cp && cp <= 0x1E8D6) return true; + if (0x1EE00 <= cp && cp <= 0x1EE03) return true; + if (0x1EE05 <= cp && cp <= 0x1EE1F) return true; + if (0x1EE21 <= cp && cp <= 0x1EE22) return true; + if (cp === 0x1EE24) return true; + if (cp === 0x1EE27) return true; + if (0x1EE29 <= cp && cp <= 0x1EE32) return true; + if (0x1EE34 <= cp && cp <= 0x1EE37) return true; + if (cp === 0x1EE39) return true; + if (cp === 0x1EE3B) return true; + if (cp === 0x1EE42) return true; + if (cp === 0x1EE47) return true; + if (cp === 0x1EE49) return true; + if (cp === 0x1EE4B) return true; + if (0x1EE4D <= cp && cp <= 0x1EE4F) return true; + if (0x1EE51 <= cp && cp <= 0x1EE52) return true; + if (cp === 0x1EE54) return true; + if (cp === 0x1EE57) return true; + if (cp === 0x1EE59) return true; + if (cp === 0x1EE5B) return true; + if (cp === 0x1EE5D) return true; + if (cp === 0x1EE5F) return true; + if (0x1EE61 <= cp && cp <= 0x1EE62) return true; + if (cp === 0x1EE64) return true; + if (0x1EE67 <= cp && cp <= 0x1EE6A) return true; + if (0x1EE6C <= cp && cp <= 0x1EE72) return true; + if (0x1EE74 <= cp && cp <= 0x1EE77) return true; + if (0x1EE79 <= cp && cp <= 0x1EE7C) return true; + if (cp === 0x1EE7E) return true; + if (0x1EE80 <= cp && cp <= 0x1EE89) return true; + if (0x1EE8B <= cp && cp <= 0x1EE9B) return true; + if (0x1EEA1 <= cp && cp <= 0x1EEA3) return true; + if (0x1EEA5 <= cp && cp <= 0x1EEA9) return true; + if (0x1EEAB <= cp && cp <= 0x1EEBB) return true; + if (0x20000 <= cp && cp <= 0x2A6D6) return true; + if (0x2A700 <= cp && cp <= 0x2B734) return true; + if (0x2B740 <= cp && cp <= 0x2B81D) return true; + if (0x2B820 <= cp && cp <= 0x2CEA1) return true; + if (0x2F800 <= cp && cp <= 0x2FA1D) return true; + if (0xE0100 <= cp && cp <= 0xE01EF) return true; + return false; +} + +/** + * @ngdoc module + * @name ngParseExt + * @packageName angular-parse-ext + * @description + * + * # ngParseExt + * + * The `ngParseExt` module provides functionality to allow Unicode characters in + * identifiers inside Angular expressions. + * + * + *
+ * + * This module allows the usage of any identifier that follows ES6 identifier naming convention + * to be used as an identifier in an Angular expression. ES6 delegates some of the identifier + * rules definition to Unicode, this module uses ES6 and Unicode 8.0 identifiers convention. + * + */ + +/* global angularParseExtModule: true, + IDS_Y, + IDC_Y +*/ + +function isValidIdentifierStart(ch, cp) { + return ch === '$' || + ch === '_' || + IDS_Y(cp); +} + +function isValidIdentifierContinue(ch, cp) { + return ch === '$' || + ch === '_' || + cp === 0x200C || // + cp === 0x200D || // + IDC_Y(cp); +} + +angular.module('ngParseExt', []) + .config(['$parseProvider', function($parseProvider) { + $parseProvider.setIdentifierFns(isValidIdentifierStart, isValidIdentifierContinue); + }]); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.min.js new file mode 100644 index 00000000..863a7662 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.min.js @@ -0,0 +1,49 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(f,c){'use strict';function d(b,a){return"$"===b||"_"===b||(65<=a&&90>=a||97<=a&&122>=a||170===a||181===a||186===a||192<=a&&214>=a||216<=a&&246>=a||248<=a&&705>=a||710<=a&&721>=a||736<=a&&740>=a||748===a||750===a||880<=a&&884>=a||886<=a&&887>=a||890<=a&&893>=a||895===a||902===a||904<=a&&906>=a||908===a||910<=a&&929>=a||931<=a&&1013>=a||1015<=a&&1153>=a||1162<=a&&1327>=a||1329<=a&&1366>=a||1369===a||1377<=a&&1415>=a||1488<=a&&1514>=a||1520<=a&&1522>=a||1568<=a&&1610>=a||1646<=a&&1647>=a|| +1649<=a&&1747>=a||1749===a||1765<=a&&1766>=a||1774<=a&&1775>=a||1786<=a&&1788>=a||1791===a||1808===a||1810<=a&&1839>=a||1869<=a&&1957>=a||1969===a||1994<=a&&2026>=a||2036<=a&&2037>=a||2042===a||2048<=a&&2069>=a||2074===a||2084===a||2088===a||2112<=a&&2136>=a||2208<=a&&2228>=a||2308<=a&&2361>=a||2365===a||2384===a||2392<=a&&2401>=a||2417<=a&&2432>=a||2437<=a&&2444>=a||2447<=a&&2448>=a||2451<=a&&2472>=a||2474<=a&&2480>=a||2482===a||2486<=a&&2489>=a||2493===a||2510===a||2524<=a&&2525>=a||2527<=a&&2529>= +a||2544<=a&&2545>=a||2565<=a&&2570>=a||2575<=a&&2576>=a||2579<=a&&2600>=a||2602<=a&&2608>=a||2610<=a&&2611>=a||2613<=a&&2614>=a||2616<=a&&2617>=a||2649<=a&&2652>=a||2654===a||2674<=a&&2676>=a||2693<=a&&2701>=a||2703<=a&&2705>=a||2707<=a&&2728>=a||2730<=a&&2736>=a||2738<=a&&2739>=a||2741<=a&&2745>=a||2749===a||2768===a||2784<=a&&2785>=a||2809===a||2821<=a&&2828>=a||2831<=a&&2832>=a||2835<=a&&2856>=a||2858<=a&&2864>=a||2866<=a&&2867>=a||2869<=a&&2873>=a||2877===a||2908<=a&&2909>=a||2911<=a&&2913>=a|| +2929===a||2947===a||2949<=a&&2954>=a||2958<=a&&2960>=a||2962<=a&&2965>=a||2969<=a&&2970>=a||2972===a||2974<=a&&2975>=a||2979<=a&&2980>=a||2984<=a&&2986>=a||2990<=a&&3001>=a||3024===a||3077<=a&&3084>=a||3086<=a&&3088>=a||3090<=a&&3112>=a||3114<=a&&3129>=a||3133===a||3160<=a&&3162>=a||3168<=a&&3169>=a||3205<=a&&3212>=a||3214<=a&&3216>=a||3218<=a&&3240>=a||3242<=a&&3251>=a||3253<=a&&3257>=a||3261===a||3294===a||3296<=a&&3297>=a||3313<=a&&3314>=a||3333<=a&&3340>=a||3342<=a&&3344>=a||3346<=a&&3386>=a|| +3389===a||3406===a||3423<=a&&3425>=a||3450<=a&&3455>=a||3461<=a&&3478>=a||3482<=a&&3505>=a||3507<=a&&3515>=a||3517===a||3520<=a&&3526>=a||3585<=a&&3632>=a||3634<=a&&3635>=a||3648<=a&&3654>=a||3713<=a&&3714>=a||3716===a||3719<=a&&3720>=a||3722===a||3725===a||3732<=a&&3735>=a||3737<=a&&3743>=a||3745<=a&&3747>=a||3749===a||3751===a||3754<=a&&3755>=a||3757<=a&&3760>=a||3762<=a&&3763>=a||3773===a||3776<=a&&3780>=a||3782===a||3804<=a&&3807>=a||3840===a||3904<=a&&3911>=a||3913<=a&&3948>=a||3976<=a&&3980>= +a||4096<=a&&4138>=a||4159===a||4176<=a&&4181>=a||4186<=a&&4189>=a||4193===a||4197<=a&&4198>=a||4206<=a&&4208>=a||4213<=a&&4225>=a||4238===a||4256<=a&&4293>=a||4295===a||4301===a||4304<=a&&4346>=a||4348<=a&&4680>=a||4682<=a&&4685>=a||4688<=a&&4694>=a||4696===a||4698<=a&&4701>=a||4704<=a&&4744>=a||4746<=a&&4749>=a||4752<=a&&4784>=a||4786<=a&&4789>=a||4792<=a&&4798>=a||4800===a||4802<=a&&4805>=a||4808<=a&&4822>=a||4824<=a&&4880>=a||4882<=a&&4885>=a||4888<=a&&4954>=a||4992<=a&&5007>=a||5024<=a&&5109>= +a||5112<=a&&5117>=a||5121<=a&&5740>=a||5743<=a&&5759>=a||5761<=a&&5786>=a||5792<=a&&5866>=a||5870<=a&&5880>=a||5888<=a&&5900>=a||5902<=a&&5905>=a||5920<=a&&5937>=a||5952<=a&&5969>=a||5984<=a&&5996>=a||5998<=a&&6E3>=a||6016<=a&&6067>=a||6103===a||6108===a||6176<=a&&6263>=a||6272<=a&&6312>=a||6314===a||6320<=a&&6389>=a||6400<=a&&6430>=a||6480<=a&&6509>=a||6512<=a&&6516>=a||6528<=a&&6571>=a||6576<=a&&6601>=a||6656<=a&&6678>=a||6688<=a&&6740>=a||6823===a||6917<=a&&6963>=a||6981<=a&&6987>=a||7043<=a&& +7072>=a||7086<=a&&7087>=a||7098<=a&&7141>=a||7168<=a&&7203>=a||7245<=a&&7247>=a||7258<=a&&7293>=a||7401<=a&&7404>=a||7406<=a&&7409>=a||7413<=a&&7414>=a||7424<=a&&7615>=a||7680<=a&&7957>=a||7960<=a&&7965>=a||7968<=a&&8005>=a||8008<=a&&8013>=a||8016<=a&&8023>=a||8025===a||8027===a||8029===a||8031<=a&&8061>=a||8064<=a&&8116>=a||8118<=a&&8124>=a||8126===a||8130<=a&&8132>=a||8134<=a&&8140>=a||8144<=a&&8147>=a||8150<=a&&8155>=a||8160<=a&&8172>=a||8178<=a&&8180>=a||8182<=a&&8188>=a||8305===a||8319===a|| +8336<=a&&8348>=a||8450===a||8455===a||8458<=a&&8467>=a||8469===a||8472<=a&&8477>=a||8484===a||8486===a||8488===a||8490<=a&&8505>=a||8508<=a&&8511>=a||8517<=a&&8521>=a||8526===a||8544<=a&&8584>=a||11264<=a&&11310>=a||11312<=a&&11358>=a||11360<=a&&11492>=a||11499<=a&&11502>=a||11506<=a&&11507>=a||11520<=a&&11557>=a||11559===a||11565===a||11568<=a&&11623>=a||11631===a||11648<=a&&11670>=a||11680<=a&&11686>=a||11688<=a&&11694>=a||11696<=a&&11702>=a||11704<=a&&11710>=a||11712<=a&&11718>=a||11720<=a&&11726>= +a||11728<=a&&11734>=a||11736<=a&&11742>=a||12293<=a&&12295>=a||12321<=a&&12329>=a||12337<=a&&12341>=a||12344<=a&&12348>=a||12353<=a&&12438>=a||12443<=a&&12447>=a||12449<=a&&12538>=a||12540<=a&&12543>=a||12549<=a&&12589>=a||12593<=a&&12686>=a||12704<=a&&12730>=a||12784<=a&&12799>=a||13312<=a&&19893>=a||19968<=a&&40917>=a||40960<=a&&42124>=a||42192<=a&&42237>=a||42240<=a&&42508>=a||42512<=a&&42527>=a||42538<=a&&42539>=a||42560<=a&&42606>=a||42623<=a&&42653>=a||42656<=a&&42735>=a||42775<=a&&42783>=a|| +42786<=a&&42888>=a||42891<=a&&42925>=a||42928<=a&&42935>=a||42999<=a&&43009>=a||43011<=a&&43013>=a||43015<=a&&43018>=a||43020<=a&&43042>=a||43072<=a&&43123>=a||43138<=a&&43187>=a||43250<=a&&43255>=a||43259===a||43261===a||43274<=a&&43301>=a||43312<=a&&43334>=a||43360<=a&&43388>=a||43396<=a&&43442>=a||43471===a||43488<=a&&43492>=a||43494<=a&&43503>=a||43514<=a&&43518>=a||43520<=a&&43560>=a||43584<=a&&43586>=a||43588<=a&&43595>=a||43616<=a&&43638>=a||43642===a||43646<=a&&43695>=a||43697===a||43701<= +a&&43702>=a||43705<=a&&43709>=a||43712===a||43714===a||43739<=a&&43741>=a||43744<=a&&43754>=a||43762<=a&&43764>=a||43777<=a&&43782>=a||43785<=a&&43790>=a||43793<=a&&43798>=a||43808<=a&&43814>=a||43816<=a&&43822>=a||43824<=a&&43866>=a||43868<=a&&43877>=a||43888<=a&&44002>=a||44032<=a&&55203>=a||55216<=a&&55238>=a||55243<=a&&55291>=a||63744<=a&&64109>=a||64112<=a&&64217>=a||64256<=a&&64262>=a||64275<=a&&64279>=a||64285===a||64287<=a&&64296>=a||64298<=a&&64310>=a||64312<=a&&64316>=a||64318===a||64320<= +a&&64321>=a||64323<=a&&64324>=a||64326<=a&&64433>=a||64467<=a&&64829>=a||64848<=a&&64911>=a||64914<=a&&64967>=a||65008<=a&&65019>=a||65136<=a&&65140>=a||65142<=a&&65276>=a||65313<=a&&65338>=a||65345<=a&&65370>=a||65382<=a&&65470>=a||65474<=a&&65479>=a||65482<=a&&65487>=a||65490<=a&&65495>=a||65498<=a&&65500>=a||65536<=a&&65547>=a||65549<=a&&65574>=a||65576<=a&&65594>=a||65596<=a&&65597>=a||65599<=a&&65613>=a||65616<=a&&65629>=a||65664<=a&&65786>=a||65856<=a&&65908>=a||66176<=a&&66204>=a||66208<=a&& +66256>=a||66304<=a&&66335>=a||66352<=a&&66378>=a||66384<=a&&66421>=a||66432<=a&&66461>=a||66464<=a&&66499>=a||66504<=a&&66511>=a||66513<=a&&66517>=a||66560<=a&&66717>=a||66816<=a&&66855>=a||66864<=a&&66915>=a||67072<=a&&67382>=a||67392<=a&&67413>=a||67424<=a&&67431>=a||67584<=a&&67589>=a||67592===a||67594<=a&&67637>=a||67639<=a&&67640>=a||67644===a||67647<=a&&67669>=a||67680<=a&&67702>=a||67712<=a&&67742>=a||67808<=a&&67826>=a||67828<=a&&67829>=a||67840<=a&&67861>=a||67872<=a&&67897>=a||67968<=a&& +68023>=a||68030<=a&&68031>=a||68096===a||68112<=a&&68115>=a||68117<=a&&68119>=a||68121<=a&&68147>=a||68192<=a&&68220>=a||68224<=a&&68252>=a||68288<=a&&68295>=a||68297<=a&&68324>=a||68352<=a&&68405>=a||68416<=a&&68437>=a||68448<=a&&68466>=a||68480<=a&&68497>=a||68608<=a&&68680>=a||68736<=a&&68786>=a||68800<=a&&68850>=a||69635<=a&&69687>=a||69763<=a&&69807>=a||69840<=a&&69864>=a||69891<=a&&69926>=a||69968<=a&&70002>=a||70006===a||70019<=a&&70066>=a||70081<=a&&70084>=a||70106===a||70108===a||70144<= +a&&70161>=a||70163<=a&&70187>=a||70272<=a&&70278>=a||70280===a||70282<=a&&70285>=a||70287<=a&&70301>=a||70303<=a&&70312>=a||70320<=a&&70366>=a||70405<=a&&70412>=a||70415<=a&&70416>=a||70419<=a&&70440>=a||70442<=a&&70448>=a||70450<=a&&70451>=a||70453<=a&&70457>=a||70461===a||70480===a||70493<=a&&70497>=a||70784<=a&&70831>=a||70852<=a&&70853>=a||70855===a||71040<=a&&71086>=a||71128<=a&&71131>=a||71168<=a&&71215>=a||71236===a||71296<=a&&71338>=a||71424<=a&&71449>=a||71840<=a&&71903>=a||71935===a||72384<= +a&&72440>=a||73728<=a&&74649>=a||74752<=a&&74862>=a||74880<=a&&75075>=a||77824<=a&&78894>=a||82944<=a&&83526>=a||92160<=a&&92728>=a||92736<=a&&92766>=a||92880<=a&&92909>=a||92928<=a&&92975>=a||92992<=a&&92995>=a||93027<=a&&93047>=a||93053<=a&&93071>=a||93952<=a&&94020>=a||94032===a||94099<=a&&94111>=a||110592<=a&&110593>=a||113664<=a&&113770>=a||113776<=a&&113788>=a||113792<=a&&113800>=a||113808<=a&&113817>=a||119808<=a&&119892>=a||119894<=a&&119964>=a||119966<=a&&119967>=a||119970===a||119973<=a&& +119974>=a||119977<=a&&119980>=a||119982<=a&&119993>=a||119995===a||119997<=a&&120003>=a||120005<=a&&120069>=a||120071<=a&&120074>=a||120077<=a&&120084>=a||120086<=a&&120092>=a||120094<=a&&120121>=a||120123<=a&&120126>=a||120128<=a&&120132>=a||120134===a||120138<=a&&120144>=a||120146<=a&&120485>=a||120488<=a&&120512>=a||120514<=a&&120538>=a||120540<=a&&120570>=a||120572<=a&&120596>=a||120598<=a&&120628>=a||120630<=a&&120654>=a||120656<=a&&120686>=a||120688<=a&&120712>=a||120714<=a&&120744>=a||120746<= +a&&120770>=a||120772<=a&&120779>=a||124928<=a&&125124>=a||126464<=a&&126467>=a||126469<=a&&126495>=a||126497<=a&&126498>=a||126500===a||126503===a||126505<=a&&126514>=a||126516<=a&&126519>=a||126521===a||126523===a||126530===a||126535===a||126537===a||126539===a||126541<=a&&126543>=a||126545<=a&&126546>=a||126548===a||126551===a||126553===a||126555===a||126557===a||126559===a||126561<=a&&126562>=a||126564===a||126567<=a&&126570>=a||126572<=a&&126578>=a||126580<=a&&126583>=a||126585<=a&&126588>=a|| +126590===a||126592<=a&&126601>=a||126603<=a&&126619>=a||126625<=a&&126627>=a||126629<=a&&126633>=a||126635<=a&&126651>=a||131072<=a&&173782>=a||173824<=a&&177972>=a||177984<=a&&178205>=a||178208<=a&&183969>=a||194560<=a&&195101>=a?!0:!1)}function e(b,a){return"$"===b||"_"===b||8204===a||8205===a||(48<=a&&57>=a||65<=a&&90>=a||95===a||97<=a&&122>=a||170===a||181===a||183===a||186===a||192<=a&&214>=a||216<=a&&246>=a||248<=a&&705>=a||710<=a&&721>=a||736<=a&&740>=a||748===a||750===a||768<=a&&884>=a||886<= +a&&887>=a||890<=a&&893>=a||895===a||902<=a&&906>=a||908===a||910<=a&&929>=a||931<=a&&1013>=a||1015<=a&&1153>=a||1155<=a&&1159>=a||1162<=a&&1327>=a||1329<=a&&1366>=a||1369===a||1377<=a&&1415>=a||1425<=a&&1469>=a||1471===a||1473<=a&&1474>=a||1476<=a&&1477>=a||1479===a||1488<=a&&1514>=a||1520<=a&&1522>=a||1552<=a&&1562>=a||1568<=a&&1641>=a||1646<=a&&1747>=a||1749<=a&&1756>=a||1759<=a&&1768>=a||1770<=a&&1788>=a||1791===a||1808<=a&&1866>=a||1869<=a&&1969>=a||1984<=a&&2037>=a||2042===a||2048<=a&&2093>= +a||2112<=a&&2139>=a||2208<=a&&2228>=a||2275<=a&&2403>=a||2406<=a&&2415>=a||2417<=a&&2435>=a||2437<=a&&2444>=a||2447<=a&&2448>=a||2451<=a&&2472>=a||2474<=a&&2480>=a||2482===a||2486<=a&&2489>=a||2492<=a&&2500>=a||2503<=a&&2504>=a||2507<=a&&2510>=a||2519===a||2524<=a&&2525>=a||2527<=a&&2531>=a||2534<=a&&2545>=a||2561<=a&&2563>=a||2565<=a&&2570>=a||2575<=a&&2576>=a||2579<=a&&2600>=a||2602<=a&&2608>=a||2610<=a&&2611>=a||2613<=a&&2614>=a||2616<=a&&2617>=a||2620===a||2622<=a&&2626>=a||2631<=a&&2632>=a|| +2635<=a&&2637>=a||2641===a||2649<=a&&2652>=a||2654===a||2662<=a&&2677>=a||2689<=a&&2691>=a||2693<=a&&2701>=a||2703<=a&&2705>=a||2707<=a&&2728>=a||2730<=a&&2736>=a||2738<=a&&2739>=a||2741<=a&&2745>=a||2748<=a&&2757>=a||2759<=a&&2761>=a||2763<=a&&2765>=a||2768===a||2784<=a&&2787>=a||2790<=a&&2799>=a||2809===a||2817<=a&&2819>=a||2821<=a&&2828>=a||2831<=a&&2832>=a||2835<=a&&2856>=a||2858<=a&&2864>=a||2866<=a&&2867>=a||2869<=a&&2873>=a||2876<=a&&2884>=a||2887<=a&&2888>=a||2891<=a&&2893>=a||2902<=a&&2903>= +a||2908<=a&&2909>=a||2911<=a&&2915>=a||2918<=a&&2927>=a||2929===a||2946<=a&&2947>=a||2949<=a&&2954>=a||2958<=a&&2960>=a||2962<=a&&2965>=a||2969<=a&&2970>=a||2972===a||2974<=a&&2975>=a||2979<=a&&2980>=a||2984<=a&&2986>=a||2990<=a&&3001>=a||3006<=a&&3010>=a||3014<=a&&3016>=a||3018<=a&&3021>=a||3024===a||3031===a||3046<=a&&3055>=a||3072<=a&&3075>=a||3077<=a&&3084>=a||3086<=a&&3088>=a||3090<=a&&3112>=a||3114<=a&&3129>=a||3133<=a&&3140>=a||3142<=a&&3144>=a||3146<=a&&3149>=a||3157<=a&&3158>=a||3160<=a&& +3162>=a||3168<=a&&3171>=a||3174<=a&&3183>=a||3201<=a&&3203>=a||3205<=a&&3212>=a||3214<=a&&3216>=a||3218<=a&&3240>=a||3242<=a&&3251>=a||3253<=a&&3257>=a||3260<=a&&3268>=a||3270<=a&&3272>=a||3274<=a&&3277>=a||3285<=a&&3286>=a||3294===a||3296<=a&&3299>=a||3302<=a&&3311>=a||3313<=a&&3314>=a||3329<=a&&3331>=a||3333<=a&&3340>=a||3342<=a&&3344>=a||3346<=a&&3386>=a||3389<=a&&3396>=a||3398<=a&&3400>=a||3402<=a&&3406>=a||3415===a||3423<=a&&3427>=a||3430<=a&&3439>=a||3450<=a&&3455>=a||3458<=a&&3459>=a||3461<= +a&&3478>=a||3482<=a&&3505>=a||3507<=a&&3515>=a||3517===a||3520<=a&&3526>=a||3530===a||3535<=a&&3540>=a||3542===a||3544<=a&&3551>=a||3558<=a&&3567>=a||3570<=a&&3571>=a||3585<=a&&3642>=a||3648<=a&&3662>=a||3664<=a&&3673>=a||3713<=a&&3714>=a||3716===a||3719<=a&&3720>=a||3722===a||3725===a||3732<=a&&3735>=a||3737<=a&&3743>=a||3745<=a&&3747>=a||3749===a||3751===a||3754<=a&&3755>=a||3757<=a&&3769>=a||3771<=a&&3773>=a||3776<=a&&3780>=a||3782===a||3784<=a&&3789>=a||3792<=a&&3801>=a||3804<=a&&3807>=a||3840=== +a||3864<=a&&3865>=a||3872<=a&&3881>=a||3893===a||3895===a||3897===a||3902<=a&&3911>=a||3913<=a&&3948>=a||3953<=a&&3972>=a||3974<=a&&3991>=a||3993<=a&&4028>=a||4038===a||4096<=a&&4169>=a||4176<=a&&4253>=a||4256<=a&&4293>=a||4295===a||4301===a||4304<=a&&4346>=a||4348<=a&&4680>=a||4682<=a&&4685>=a||4688<=a&&4694>=a||4696===a||4698<=a&&4701>=a||4704<=a&&4744>=a||4746<=a&&4749>=a||4752<=a&&4784>=a||4786<=a&&4789>=a||4792<=a&&4798>=a||4800===a||4802<=a&&4805>=a||4808<=a&&4822>=a||4824<=a&&4880>=a||4882<= +a&&4885>=a||4888<=a&&4954>=a||4957<=a&&4959>=a||4969<=a&&4977>=a||4992<=a&&5007>=a||5024<=a&&5109>=a||5112<=a&&5117>=a||5121<=a&&5740>=a||5743<=a&&5759>=a||5761<=a&&5786>=a||5792<=a&&5866>=a||5870<=a&&5880>=a||5888<=a&&5900>=a||5902<=a&&5908>=a||5920<=a&&5940>=a||5952<=a&&5971>=a||5984<=a&&5996>=a||5998<=a&&6E3>=a||6002<=a&&6003>=a||6016<=a&&6099>=a||6103===a||6108<=a&&6109>=a||6112<=a&&6121>=a||6155<=a&&6157>=a||6160<=a&&6169>=a||6176<=a&&6263>=a||6272<=a&&6314>=a||6320<=a&&6389>=a||6400<=a&&6430>= +a||6432<=a&&6443>=a||6448<=a&&6459>=a||6470<=a&&6509>=a||6512<=a&&6516>=a||6528<=a&&6571>=a||6576<=a&&6601>=a||6608<=a&&6618>=a||6656<=a&&6683>=a||6688<=a&&6750>=a||6752<=a&&6780>=a||6783<=a&&6793>=a||6800<=a&&6809>=a||6823===a||6832<=a&&6845>=a||6912<=a&&6987>=a||6992<=a&&7001>=a||7019<=a&&7027>=a||7040<=a&&7155>=a||7168<=a&&7223>=a||7232<=a&&7241>=a||7245<=a&&7293>=a||7376<=a&&7378>=a||7380<=a&&7414>=a||7416<=a&&7417>=a||7424<=a&&7669>=a||7676<=a&&7957>=a||7960<=a&&7965>=a||7968<=a&&8005>=a||8008<= +a&&8013>=a||8016<=a&&8023>=a||8025===a||8027===a||8029===a||8031<=a&&8061>=a||8064<=a&&8116>=a||8118<=a&&8124>=a||8126===a||8130<=a&&8132>=a||8134<=a&&8140>=a||8144<=a&&8147>=a||8150<=a&&8155>=a||8160<=a&&8172>=a||8178<=a&&8180>=a||8182<=a&&8188>=a||8255<=a&&8256>=a||8276===a||8305===a||8319===a||8336<=a&&8348>=a||8400<=a&&8412>=a||8417===a||8421<=a&&8432>=a||8450===a||8455===a||8458<=a&&8467>=a||8469===a||8472<=a&&8477>=a||8484===a||8486===a||8488===a||8490<=a&&8505>=a||8508<=a&&8511>=a||8517<=a&& +8521>=a||8526===a||8544<=a&&8584>=a||11264<=a&&11310>=a||11312<=a&&11358>=a||11360<=a&&11492>=a||11499<=a&&11507>=a||11520<=a&&11557>=a||11559===a||11565===a||11568<=a&&11623>=a||11631===a||11647<=a&&11670>=a||11680<=a&&11686>=a||11688<=a&&11694>=a||11696<=a&&11702>=a||11704<=a&&11710>=a||11712<=a&&11718>=a||11720<=a&&11726>=a||11728<=a&&11734>=a||11736<=a&&11742>=a||11744<=a&&11775>=a||12293<=a&&12295>=a||12321<=a&&12335>=a||12337<=a&&12341>=a||12344<=a&&12348>=a||12353<=a&&12438>=a||12441<=a&&12447>= +a||12449<=a&&12538>=a||12540<=a&&12543>=a||12549<=a&&12589>=a||12593<=a&&12686>=a||12704<=a&&12730>=a||12784<=a&&12799>=a||13312<=a&&19893>=a||19968<=a&&40917>=a||40960<=a&&42124>=a||42192<=a&&42237>=a||42240<=a&&42508>=a||42512<=a&&42539>=a||42560<=a&&42607>=a||42612<=a&&42621>=a||42623<=a&&42737>=a||42775<=a&&42783>=a||42786<=a&&42888>=a||42891<=a&&42925>=a||42928<=a&&42935>=a||42999<=a&&43047>=a||43072<=a&&43123>=a||43136<=a&&43204>=a||43216<=a&&43225>=a||43232<=a&&43255>=a||43259===a||43261=== +a||43264<=a&&43309>=a||43312<=a&&43347>=a||43360<=a&&43388>=a||43392<=a&&43456>=a||43471<=a&&43481>=a||43488<=a&&43518>=a||43520<=a&&43574>=a||43584<=a&&43597>=a||43600<=a&&43609>=a||43616<=a&&43638>=a||43642<=a&&43714>=a||43739<=a&&43741>=a||43744<=a&&43759>=a||43762<=a&&43766>=a||43777<=a&&43782>=a||43785<=a&&43790>=a||43793<=a&&43798>=a||43808<=a&&43814>=a||43816<=a&&43822>=a||43824<=a&&43866>=a||43868<=a&&43877>=a||43888<=a&&44010>=a||44012<=a&&44013>=a||44016<=a&&44025>=a||44032<=a&&55203>=a|| +55216<=a&&55238>=a||55243<=a&&55291>=a||63744<=a&&64109>=a||64112<=a&&64217>=a||64256<=a&&64262>=a||64275<=a&&64279>=a||64285<=a&&64296>=a||64298<=a&&64310>=a||64312<=a&&64316>=a||64318===a||64320<=a&&64321>=a||64323<=a&&64324>=a||64326<=a&&64433>=a||64467<=a&&64829>=a||64848<=a&&64911>=a||64914<=a&&64967>=a||65008<=a&&65019>=a||65024<=a&&65039>=a||65056<=a&&65071>=a||65075<=a&&65076>=a||65101<=a&&65103>=a||65136<=a&&65140>=a||65142<=a&&65276>=a||65296<=a&&65305>=a||65313<=a&&65338>=a||65343===a|| +65345<=a&&65370>=a||65382<=a&&65470>=a||65474<=a&&65479>=a||65482<=a&&65487>=a||65490<=a&&65495>=a||65498<=a&&65500>=a||65536<=a&&65547>=a||65549<=a&&65574>=a||65576<=a&&65594>=a||65596<=a&&65597>=a||65599<=a&&65613>=a||65616<=a&&65629>=a||65664<=a&&65786>=a||65856<=a&&65908>=a||66045===a||66176<=a&&66204>=a||66208<=a&&66256>=a||66272===a||66304<=a&&66335>=a||66352<=a&&66378>=a||66384<=a&&66426>=a||66432<=a&&66461>=a||66464<=a&&66499>=a||66504<=a&&66511>=a||66513<=a&&66517>=a||66560<=a&&66717>=a|| +66720<=a&&66729>=a||66816<=a&&66855>=a||66864<=a&&66915>=a||67072<=a&&67382>=a||67392<=a&&67413>=a||67424<=a&&67431>=a||67584<=a&&67589>=a||67592===a||67594<=a&&67637>=a||67639<=a&&67640>=a||67644===a||67647<=a&&67669>=a||67680<=a&&67702>=a||67712<=a&&67742>=a||67808<=a&&67826>=a||67828<=a&&67829>=a||67840<=a&&67861>=a||67872<=a&&67897>=a||67968<=a&&68023>=a||68030<=a&&68031>=a||68096<=a&&68099>=a||68101<=a&&68102>=a||68108<=a&&68115>=a||68117<=a&&68119>=a||68121<=a&&68147>=a||68152<=a&&68154>=a|| +68159===a||68192<=a&&68220>=a||68224<=a&&68252>=a||68288<=a&&68295>=a||68297<=a&&68326>=a||68352<=a&&68405>=a||68416<=a&&68437>=a||68448<=a&&68466>=a||68480<=a&&68497>=a||68608<=a&&68680>=a||68736<=a&&68786>=a||68800<=a&&68850>=a||69632<=a&&69702>=a||69734<=a&&69743>=a||69759<=a&&69818>=a||69840<=a&&69864>=a||69872<=a&&69881>=a||69888<=a&&69940>=a||69942<=a&&69951>=a||69968<=a&&70003>=a||70006===a||70016<=a&&70084>=a||70090<=a&&70092>=a||70096<=a&&70106>=a||70108===a||70144<=a&&70161>=a||70163<=a&& +70199>=a||70272<=a&&70278>=a||70280===a||70282<=a&&70285>=a||70287<=a&&70301>=a||70303<=a&&70312>=a||70320<=a&&70378>=a||70384<=a&&70393>=a||70400<=a&&70403>=a||70405<=a&&70412>=a||70415<=a&&70416>=a||70419<=a&&70440>=a||70442<=a&&70448>=a||70450<=a&&70451>=a||70453<=a&&70457>=a||70460<=a&&70468>=a||70471<=a&&70472>=a||70475<=a&&70477>=a||70480===a||70487===a||70493<=a&&70499>=a||70502<=a&&70508>=a||70512<=a&&70516>=a||70784<=a&&70853>=a||70855===a||70864<=a&&70873>=a||71040<=a&&71093>=a||71096<= +a&&71104>=a||71128<=a&&71133>=a||71168<=a&&71232>=a||71236===a||71248<=a&&71257>=a||71296<=a&&71351>=a||71360<=a&&71369>=a||71424<=a&&71449>=a||71453<=a&&71467>=a||71472<=a&&71481>=a||71840<=a&&71913>=a||71935===a||72384<=a&&72440>=a||73728<=a&&74649>=a||74752<=a&&74862>=a||74880<=a&&75075>=a||77824<=a&&78894>=a||82944<=a&&83526>=a||92160<=a&&92728>=a||92736<=a&&92766>=a||92768<=a&&92777>=a||92880<=a&&92909>=a||92912<=a&&92916>=a||92928<=a&&92982>=a||92992<=a&&92995>=a||93008<=a&&93017>=a||93027<= +a&&93047>=a||93053<=a&&93071>=a||93952<=a&&94020>=a||94032<=a&&94078>=a||94095<=a&&94111>=a||110592<=a&&110593>=a||113664<=a&&113770>=a||113776<=a&&113788>=a||113792<=a&&113800>=a||113808<=a&&113817>=a||113821<=a&&113822>=a||119141<=a&&119145>=a||119149<=a&&119154>=a||119163<=a&&119170>=a||119173<=a&&119179>=a||119210<=a&&119213>=a||119362<=a&&119364>=a||119808<=a&&119892>=a||119894<=a&&119964>=a||119966<=a&&119967>=a||119970===a||119973<=a&&119974>=a||119977<=a&&119980>=a||119982<=a&&119993>=a|| +119995===a||119997<=a&&120003>=a||120005<=a&&120069>=a||120071<=a&&120074>=a||120077<=a&&120084>=a||120086<=a&&120092>=a||120094<=a&&120121>=a||120123<=a&&120126>=a||120128<=a&&120132>=a||120134===a||120138<=a&&120144>=a||120146<=a&&120485>=a||120488<=a&&120512>=a||120514<=a&&120538>=a||120540<=a&&120570>=a||120572<=a&&120596>=a||120598<=a&&120628>=a||120630<=a&&120654>=a||120656<=a&&120686>=a||120688<=a&&120712>=a||120714<=a&&120744>=a||120746<=a&&120770>=a||120772<=a&&120779>=a||120782<=a&&120831>= +a||121344<=a&&121398>=a||121403<=a&&121452>=a||121461===a||121476===a||121499<=a&&121503>=a||121505<=a&&121519>=a||124928<=a&&125124>=a||125136<=a&&125142>=a||126464<=a&&126467>=a||126469<=a&&126495>=a||126497<=a&&126498>=a||126500===a||126503===a||126505<=a&&126514>=a||126516<=a&&126519>=a||126521===a||126523===a||126530===a||126535===a||126537===a||126539===a||126541<=a&&126543>=a||126545<=a&&126546>=a||126548===a||126551===a||126553===a||126555===a||126557===a||126559===a||126561<=a&&126562>=a|| +126564===a||126567<=a&&126570>=a||126572<=a&&126578>=a||126580<=a&&126583>=a||126585<=a&&126588>=a||126590===a||126592<=a&&126601>=a||126603<=a&&126619>=a||126625<=a&&126627>=a||126629<=a&&126633>=a||126635<=a&&126651>=a||131072<=a&&173782>=a||173824<=a&&177972>=a||177984<=a&&178205>=a||178208<=a&&183969>=a||194560<=a&&195101>=a||917760<=a&&917999>=a?!0:!1)}c.module("ngParseExt",[]).config(["$parseProvider",function(b){b.setIdentifierFns(d,e)}])})(window,window.angular); +//# sourceMappingURL=angular-parse-ext.min.js.map diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.min.js.map b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.min.js.map new file mode 100644 index 00000000..9f75d04c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-parse-ext.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-parse-ext.min.js", +"lineCount":48, +"mappings":"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", +"sources":["angular-parse-ext.js"], +"names":["window","angular","isValidIdentifierStart","ch","cp","isValidIdentifierContinue","module","config","$parseProvider","setIdentifierFns"] +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-resource.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-resource.js new file mode 100644 index 00000000..726b74d6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-resource.js @@ -0,0 +1,768 @@ +/** + * @license AngularJS v1.5.5 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, angular) {'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 && angular.isDefined(obj); 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 + * @requires ng.$log + * @requires $q + * @requires ng.$timeout + * + * @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. + * + * By default, trailing slashes will be stripped from the calculated URLs, + * which can pose problems with server backends that do not expect that + * behavior. This can be disabled by configuring the `$resourceProvider` like + * this: + * + * ```js + app.config(['$resourceProvider', function($resourceProvider) { + // Don't strip trailing slashes from calculated URLs + $resourceProvider.defaults.stripTrailingSlashes = false; + }]); + * ``` + * + * @param {string} url A parameterized 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 a 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 actions that should extend + * the default set of resource actions. The declaration should be created in the format of {@link + * ng.$http#usage $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}` – timeout in milliseconds.
+ * **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are + * **not** supported in $resource, because the same value would be used for multiple requests. + * If you are looking for a way to cancel requests, you should use the `cancellable` option. + * - **`cancellable`** – `{boolean}` – if set to true, the request made by a "non-instance" call + * will be cancelled (if not already completed) by calling `$cancelRequest()` on the call's + * return value. Calling `$cancelRequest()` for a non-cancellable or an already + * completed/cancelled request will have no effect.
+ * - **`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}. + * + * @param {Object} options Hash with custom settings that should extend the + * default `$resourceProvider` behavior. The supported options are: + * + * - **`stripTrailingSlashes`** – {boolean} – If true then the trailing + * slashes from any calculated URL will be stripped. (Defaults to true.) + * - **`cancellable`** – {boolean} – If true, the request made by a "non-instance" call will be + * cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value. + * This can be overwritten per action. (Defaults to false.) + * + * @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, where the value is + * the populated resource instance or collection object. The 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 collections 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 rejected 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. + * + * The Resource instances and collections have these additional methods: + * + * - `$cancelRequest`: If there is a cancellable, pending request related to the instance or + * collection, calling this method will abort the request. + * + * @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`. + * + * @example + * + * # User resource + * + * 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(user, getResponseHeaders){ + user.abc = true; + user.$save(function(user, putResponseHeaders) { + //user => 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; + }); + ``` + * + * @example + * + * # 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 + * }]); + * ``` + * + * @example + * + * # Cancelling requests + * + * If an action's configuration specifies that it is cancellable, you can cancel the request related + * to an instance or collection (as long as it is a result of a "non-instance" call): + * + ```js + // ...defining the `Hotel` resource... + var Hotel = $resource('/api/hotel/:id', {id: '@id'}, { + // Let's make the `query()` method cancellable + query: {method: 'get', isArray: true, cancellable: true} + }); + + // ...somewhere in the PlanVacationController... + ... + this.onDestinationChanged = function onDestinationChanged(destination) { + // We don't care about any pending request for hotels + // in a different destination any more + this.availableHotels.$cancelRequest(); + + // Let's query for hotels in '' + // (calls: /api/hotel?location=) + this.availableHotels = Hotel.query({location: destination}); + }; + ``` + * + */ +angular.module('ngResource', ['ng']). + provider('$resource', function() { + var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^\/]*/; + var provider = this; + + this.defaults = { + // Strip slashes by default + stripTrailingSlashes: true, + + // Default actions configuration + actions: { + 'get': {method: 'GET'}, + 'save': {method: 'POST'}, + 'query': {method: 'GET', isArray: true}, + 'remove': {method: 'DELETE'}, + 'delete': {method: 'DELETE'} + } + }; + + this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) { + + 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 = extend({}, provider.defaults, defaults); + this.urlParams = {}; + } + + Route.prototype = { + setUrlParams: function(config, params, actionUrl) { + var self = this, + url = actionUrl || self.template, + val, + encodedVal, + protocolAndDomain = ''; + + 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] = { + isQueryParamValue: (new RegExp("\\?.*=:" + param + "(?:\\W|$)")).test(url) + }; + } + }); + url = url.replace(/\\:/g, ':'); + url = url.replace(PROTOCOL_AND_DOMAIN_REGEX, function(match) { + protocolAndDomain = match; + return ''; + }); + + params = params || {}; + forEach(self.urlParams, function(paramInfo, urlParam) { + val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; + if (angular.isDefined(val) && val !== null) { + if (paramInfo.isQueryParamValue) { + encodedVal = encodeUriQuery(val, true); + } else { + 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 (unless this behavior is specifically disabled) + if (self.defaults.stripTrailingSlashes) { + 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 = protocolAndDomain + 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, options) { + var route = new Route(url, options); + + actions = extend({}, provider.defaults.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); + } + + Resource.prototype.toJSON = function() { + var data = extend({}, this); + delete data.$promise; + delete data.$resolved; + return data; + }; + + forEach(actions, function(action, name) { + var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method); + var numericTimeout = action.timeout; + var cancellable = angular.isDefined(action.cancellable) ? action.cancellable : + (options && angular.isDefined(options.cancellable)) ? options.cancellable : + provider.defaults.cancellable; + + if (numericTimeout && !angular.isNumber(numericTimeout)) { + $log.debug('ngResource:\n' + + ' Only numeric values are allowed as `timeout`.\n' + + ' Promises are not supported in $resource, because the same value would ' + + 'be used for multiple requests. If you are looking for a way to cancel ' + + 'requests, you should use the `cancellable` option.'); + delete action.timeout; + numericTimeout = null; + } + + 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; + var timeoutDeferred; + var numericTimeoutPromise; + + forEach(action, function(value, key) { + switch (key) { + default: + httpConfig[key] = copy(value); + break; + case 'params': + case 'isArray': + case 'interceptor': + case 'cancellable': + break; + } + }); + + if (!isInstanceCall && cancellable) { + timeoutDeferred = $q.defer(); + httpConfig.timeout = timeoutDeferred.promise; + + if (numericTimeout) { + numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout); + } + } + + 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; + + 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 for action `{0}`. Expected response to ' + + 'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object', + angular.isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url); + } + // 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 { + var promise = value.$promise; // Save the promise + shallowClearAndCopy(data, value); + value.$promise = promise; // Restore the promise + } + } + response.resource = value; + + return response; + }, function(response) { + (error || noop)(response); + return $q.reject(response); + }); + + promise['finally'](function() { + value.$resolved = true; + if (!isInstanceCall && cancellable) { + value.$cancelRequest = angular.noop; + $timeout.cancel(numericTimeoutPromise); + timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null; + } + }); + + 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; + if (cancellable) value.$cancelRequest = timeoutDeferred.resolve; + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-resource.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-resource.min.js new file mode 100644 index 00000000..00f8cdd1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-resource.min.js @@ -0,0 +1,15 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(P,d){'use strict';function G(t,g){g=g||{};d.forEach(g,function(d,q){delete g[q]});for(var q in t)!t.hasOwnProperty(q)||"$"===q.charAt(0)&&"$"===q.charAt(1)||(g[q]=t[q]);return g}var z=d.$$minErr("$resource"),M=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,g=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}}; +this.$get=["$http","$log","$q","$timeout",function(q,L,H,I){function A(d,h){return encodeURIComponent(d).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,h?"%20":"+")}function B(d,h){this.template=d;this.defaults=v({},g.defaults,h);this.urlParams={}}function J(e,h,n,k){function c(a,b){var c={};b=v({},h,b);u(b,function(b,h){x(b)&&(b=b());var f;if(b&&b.charAt&&"@"==b.charAt(0)){f=a;var l=b.substr(1);if(null==l||""===l||"hasOwnProperty"===l||!M.test("."+ +l))throw z("badmember",l);for(var l=l.split("."),m=0,k=l.length;m + */ + /* global -ngRouteModule */ +var ngRouteModule = angular.module('ngRoute', ['ng']). + provider('$route', $RouteProvider), + $routeMinErr = angular.$$minErr('ngRoute'); + +/** + * @ngdoc provider + * @name $routeProvider + * + * @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(Object.create(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=}` – An identifier name for a reference to the controller. + * 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. + * For easier access to the resolved dependencies from the template, the `resolve` map will + * be available on the scope of the route, under `$resolve` (by default) or a custom name + * specified by the `resolveAs` property (see below). This can be particularly useful, when + * working with {@link angular.Module#component components} as route templates.
+ *
+ * **Note:** If your scope already contains a property with this name, it will be hidden + * or overwritten. Make sure, you specify an appropriate name for this property, that + * does not collide with other properties on the scope. + *
+ * 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. + * + * - `resolveAs` - `{string=}` - The name under which the `resolve` map will be available on + * the scope of the route. If omitted, defaults to `$resolve`. + * + * - `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) { + //copy original route object to preserve params inherited from proto chain + var routeCopy = angular.copy(route); + if (angular.isUndefined(routeCopy.reloadOnSearch)) { + routeCopy.reloadOnSearch = true; + } + if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) { + routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch; + } + routes[path] = angular.extend( + routeCopy, + path && pathRegExp(path, routeCopy) + ); + + // 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, routeCopy) + ); + } + + return this; + }; + + /** + * @ngdoc property + * @name $routeProvider#caseInsensitiveMatch + * @description + * + * A boolean property indicating if routes defined + * using this provider should be matched using a case insensitive + * algorithm. Defaults to `false`. + */ + this.caseInsensitiveMatch = false; + + /** + * @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|string} params Mapping information to be assigned to `$route.current`. + * If called with a string, the value maps to `redirectTo`. + * @returns {Object} self + */ + this.otherwise = function(params) { + if (typeof params === 'string') { + params = {redirectTo: params}; + } + this.when(null, params); + return this; + }; + + + this.$get = ['$rootScope', + '$location', + '$routeParams', + '$q', + '$injector', + '$templateRequest', + '$sce', + function($rootScope, $location, $routeParams, $q, $injector, $templateRequest, $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 defined in the 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. + * + * The `locals` will be assigned to the route scope's `$resolve` property. You can override + * the property name, using `resolveAs` in the route definition. See + * {@link ngRoute.$routeProvider $routeProvider} for more info. + * + * @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. + * + * The route change (and the `$location` change that triggered it) can be prevented + * by calling `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} + * for more details about event object. + * + * @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 change has happened successfully. + * The `resolve` dependencies are now available in the `current.locals` property. + * + * {@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. + * + * @param {Object} angularEvent Synthetic event object + * @param {Route} current Current/previous route information. + */ + + var forceReload = false, + preparedRoute, + preparedRouteIsUpdateOnly, + $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 and reinstantiates the controller. + */ + reload: function() { + forceReload = true; + + var fakeLocationEvent = { + defaultPrevented: false, + preventDefault: function fakePreventDefault() { + this.defaultPrevented = true; + forceReload = false; + } + }; + + $rootScope.$evalAsync(function() { + prepareRoute(fakeLocationEvent); + if (!fakeLocationEvent.defaultPrevented) commitRoute(); + }); + }, + + /** + * @ngdoc method + * @name $route#updateParams + * + * @description + * Causes `$route` service to update the current URL, replacing + * current route parameters with those specified in `newParams`. + * Provided property names that match the route's path segment + * definitions will be interpolated into the location's path, while + * remaining properties will be treated as query params. + * + * @param {!Object} newParams mapping of URL parameter names to values + */ + updateParams: function(newParams) { + if (this.current && this.current.$$route) { + newParams = angular.extend({}, this.current.params, newParams); + $location.path(interpolate(this.current.$$route.originalPath, newParams)); + // interpolate modifies newParams, only query params are left + $location.search(newParams); + } else { + throw $routeMinErr('norout', 'Tried updating route when with no current route'); + } + } + }; + + $rootScope.$on('$locationChangeStart', prepareRoute); + $rootScope.$on('$locationChangeSuccess', commitRoute); + + 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 prepareRoute($locationEvent) { + var lastRoute = $route.current; + + preparedRoute = parseRoute(); + preparedRouteIsUpdateOnly = preparedRoute && lastRoute && preparedRoute.$$route === lastRoute.$$route + && angular.equals(preparedRoute.pathParams, lastRoute.pathParams) + && !preparedRoute.reloadOnSearch && !forceReload; + + if (!preparedRouteIsUpdateOnly && (lastRoute || preparedRoute)) { + if ($rootScope.$broadcast('$routeChangeStart', preparedRoute, lastRoute).defaultPrevented) { + if ($locationEvent) { + $locationEvent.preventDefault(); + } + } + } + } + + function commitRoute() { + var lastRoute = $route.current; + var nextRoute = preparedRoute; + + if (preparedRouteIsUpdateOnly) { + lastRoute.params = nextRoute.params; + angular.copy(lastRoute.params, $routeParams); + $rootScope.$broadcast('$routeUpdate', lastRoute); + } else if (nextRoute || lastRoute) { + forceReload = false; + $route.current = nextRoute; + if (nextRoute) { + if (nextRoute.redirectTo) { + if (angular.isString(nextRoute.redirectTo)) { + $location.path(interpolate(nextRoute.redirectTo, nextRoute.params)).search(nextRoute.params) + .replace(); + } else { + $location.url(nextRoute.redirectTo(nextRoute.pathParams, $location.path(), $location.search())) + .replace(); + } + } + } + + $q.when(nextRoute). + then(function() { + if (nextRoute) { + var locals = angular.extend({}, nextRoute.resolve), + template, templateUrl; + + angular.forEach(locals, function(value, key) { + locals[key] = angular.isString(value) ? + $injector.get(value) : $injector.invoke(value, null, null, key); + }); + + if (angular.isDefined(template = nextRoute.template)) { + if (angular.isFunction(template)) { + template = template(nextRoute.params); + } + } else if (angular.isDefined(templateUrl = nextRoute.templateUrl)) { + if (angular.isFunction(templateUrl)) { + templateUrl = templateUrl(nextRoute.params); + } + if (angular.isDefined(templateUrl)) { + nextRoute.loadedTemplateUrl = $sce.valueOf(templateUrl); + template = $templateRequest(templateUrl); + } + } + if (angular.isDefined(template)) { + locals['$template'] = template; + } + return $q.all(locals); + } + }). + then(function(locals) { + // after route change + if (nextRoute == $route.current) { + if (nextRoute) { + nextRoute.locals = locals; + angular.copy(nextRoute.params, $routeParams); + } + $rootScope.$broadcast('$routeChangeSuccess', nextRoute, lastRoute); + } + }, function(error) { + if (nextRoute == $route.current) { + $rootScope.$broadcast('$routeChangeError', nextRoute, lastRoute, 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 + * | Animation | Occurs | + * |----------------------------------|-------------------------------------| + * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM | + * | {@link ng.$animate#leave leave} | when the old element is removed from to the DOM | + * + * The enter and leave animation occur concurrently. + * + * @knownIssue If `ngView` is contained in an asynchronously loaded template (e.g. in another + * directive's templateUrl or in a template loaded using `ngInclude`), then you need to + * make sure that `$route` is instantiated in time to capture the initial + * `$locationChangeStart` event and load the appropriate view. One way to achieve this + * is to have it as a dependency in a `.run` block: + * `myModule.run(['$route', function() {}]);` + * + * @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}}
+
$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; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; + } + + .view-animate { + padding:10px; + } + + .view-animate.ng-enter, .view-animate.ng-leave { + 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, + previousLeaveAnimation, + autoScrollExp = attr.autoscroll, + onloadExp = attr.onload || ''; + + scope.$on('$routeChangeSuccess', update); + update(); + + function cleanupLastView() { + if (previousLeaveAnimation) { + $animate.cancel(previousLeaveAnimation); + previousLeaveAnimation = null; + } + + if (currentScope) { + currentScope.$destroy(); + currentScope = null; + } + if (currentElement) { + previousLeaveAnimation = $animate.leave(currentElement); + previousLeaveAnimation.then(function() { + previousLeaveAnimation = null; + }); + 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).then(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); + } + scope[current.resolveAs || '$resolve'] = locals; + + link(scope); + } + }; +} + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-route.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-route.min.js new file mode 100644 index 00000000..1fb787c0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-route.min.js @@ -0,0 +1,15 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(C,d){'use strict';function z(r,h,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,c,b,f,y){function k(){n&&(g.cancel(n),n=null);l&&(l.$destroy(),l=null);m&&(n=g.leave(m),n.then(function(){n=null}),m=null)}function x(){var b=r.current&&r.current.locals;if(d.isDefined(b&&b.$template)){var b=a.$new(),f=r.current;m=y(b,function(b){g.enter(b,null,m||c).then(function(){!d.isDefined(t)||t&&!a.$eval(t)||h()});k()});l=f.scope=b;l.$emit("$viewContentLoaded"); +l.$eval(u)}else k()}var l,m,n,t=b.autoscroll,u=b.onload||"";a.$on("$routeChangeSuccess",x);x()}}}function A(d,h,g){return{restrict:"ECA",priority:-400,link:function(a,c){var b=g.current,f=b.locals;c.html(f.$template);var y=d(c.contents());if(b.controller){f.$scope=a;var k=h(b.controller,f);b.controllerAs&&(a[b.controllerAs]=k);c.data("$ngControllerController",k);c.children().data("$ngControllerController",k)}a[b.resolveAs||"$resolve"]=f;y(a)}}}var w=d.module("ngRoute",["ng"]).provider("$route",function(){function r(a, +c){return d.extend(Object.create(a),c)}function h(a,d){var b=d.caseInsensitiveMatch,f={originalPath:a,regexp:a},g=f.keys=[];a=a.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(a,d,b,c){a="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;g.push({name:b,optional:!!a});d=d||"";return""+(a?"":d)+"(?:"+(a?d:"")+(c&&"(.+?)"||"([^/]+)")+(a||"")+")"+(a||"")}).replace(/([\/$\*])/g,"\\$1");f.regexp=new RegExp("^"+a+"$",b?"i":"");return f}var g={};this.when=function(a,c){var b= +d.copy(c);d.isUndefined(b.reloadOnSearch)&&(b.reloadOnSearch=!0);d.isUndefined(b.caseInsensitiveMatch)&&(b.caseInsensitiveMatch=this.caseInsensitiveMatch);g[a]=d.extend(b,a&&h(a,b));if(a){var f="/"==a[a.length-1]?a.substr(0,a.length-1):a+"/";g[f]=d.extend({redirectTo:a},h(f,b))}return this};this.caseInsensitiveMatch=!1;this.otherwise=function(a){"string"===typeof a&&(a={redirectTo:a});this.when(null,a);return this};this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest", +"$sce",function(a,c,b,f,h,k,x){function l(b){var e=s.current;(w=(p=n())&&e&&p.$$route===e.$$route&&d.equals(p.pathParams,e.pathParams)&&!p.reloadOnSearch&&!u)||!e&&!p||a.$broadcast("$routeChangeStart",p,e).defaultPrevented&&b&&b.preventDefault()}function m(){var v=s.current,e=p;if(w)v.params=e.params,d.copy(v.params,b),a.$broadcast("$routeUpdate",v);else if(e||v)u=!1,(s.current=e)&&e.redirectTo&&(d.isString(e.redirectTo)?c.path(t(e.redirectTo,e.params)).search(e.params).replace():c.url(e.redirectTo(e.pathParams, +c.path(),c.search())).replace()),f.when(e).then(function(){if(e){var a=d.extend({},e.resolve),b,c;d.forEach(a,function(b,e){a[e]=d.isString(b)?h.get(b):h.invoke(b,null,null,e)});d.isDefined(b=e.template)?d.isFunction(b)&&(b=b(e.params)):d.isDefined(c=e.templateUrl)&&(d.isFunction(c)&&(c=c(e.params)),d.isDefined(c)&&(e.loadedTemplateUrl=x.valueOf(c),b=k(c)));d.isDefined(b)&&(a.$template=b);return f.all(a)}}).then(function(c){e==s.current&&(e&&(e.locals=c,d.copy(e.params,b)),a.$broadcast("$routeChangeSuccess", +e,v))},function(b){e==s.current&&a.$broadcast("$routeChangeError",e,v,b)})}function n(){var a,b;d.forEach(g,function(f,g){var q;if(q=!b){var h=c.path();q=f.keys;var l={};if(f.regexp)if(h=f.regexp.exec(h)){for(var k=1,n=h.length;k + * + * See {@link ngSanitize.$sanitize `$sanitize`} for usage. + */ + +/** + * @ngdoc service + * @name $sanitize + * @kind function + * + * @description + * Sanitizes an html string by stripping all potentially dangerous tokens. + * + * 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. + * + * The whitelist for URL sanitization of attribute values is configured using the functions + * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider + * `$compileProvider`}. + * + * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}. + * + * @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>"); + }); +
+
+ */ + + +/** + * @ngdoc provider + * @name $sanitizeProvider + * + * @description + * Creates and configures {@link $sanitize} instance. + */ +function $SanitizeProvider() { + var svgEnabled = false; + + this.$get = ['$$sanitizeUri', function($$sanitizeUri) { + if (svgEnabled) { + angular.extend(validElements, svgElements); + } + return function(html) { + var buf = []; + htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) { + return !/^unsafe:/.test($$sanitizeUri(uri, isImage)); + })); + return buf.join(''); + }; + }]; + + + /** + * @ngdoc method + * @name $sanitizeProvider#enableSvg + * @kind function + * + * @description + * Enables a subset of svg to be supported by the sanitizer. + * + *
+ *

By enabling this setting without taking other precautions, you might expose your + * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned + * outside of the containing element and be rendered over other elements on the page (e.g. a login + * link). Such behavior can then result in phishing incidents.

+ * + *

To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg + * tags within the sanitized content:

+ * + *
+ * + *

+   *   .rootOfTheIncludedContent svg {
+   *     overflow: hidden !important;
+   *   }
+   *   
+ *
+ * + * @param {boolean=} regexp New regexp to whitelist urls with. + * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called + * without an argument or self for chaining otherwise. + */ + this.enableSvg = function(enableSvg) { + if (angular.isDefined(enableSvg)) { + svgEnabled = enableSvg; + return this; + } else { + return svgEnabled; + } + }; +} + +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 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 = toMap("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 = toMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), + optionalEndTagInlineElements = toMap("rp,rt"), + optionalEndTagElements = angular.extend({}, + optionalEndTagInlineElements, + optionalEndTagBlockElements); + +// Safe Block Elements - HTML5 +var blockElements = angular.extend({}, optionalEndTagBlockElements, toMap("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,section,table,ul")); + +// Inline Elements - HTML5 +var inlineElements = angular.extend({}, optionalEndTagInlineElements, toMap("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")); + +// SVG Elements +// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements +// Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted. +// They can potentially allow for arbitrary javascript to be executed. See #11290 +var svgElements = toMap("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph," + + "hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline," + + "radialGradient,rect,stop,svg,switch,text,title,tspan"); + +// Blocked Elements (will be stripped) +var blockedElements = toMap("script,style"); + +var validElements = angular.extend({}, + voidElements, + blockElements, + inlineElements, + optionalEndTagElements); + +//Attributes that have href and hence need to be sanitized +var uriAttrs = toMap("background,cite,href,longdesc,src,xlink:href"); + +var htmlAttrs = toMap('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,tabindex,target,title,type,' + + 'valign,value,vspace,width'); + +// SVG attributes (without "id" and "name" attributes) +// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes +var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' + + 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' + + 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' + + 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' + + 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' + + 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' + + 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' + + 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' + + 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' + + 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' + + 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' + + 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' + + 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' + + 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' + + 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true); + +var validAttrs = angular.extend({}, + uriAttrs, + svgAttrs, + htmlAttrs); + +function toMap(str, lowercaseKeys) { + var obj = {}, items = str.split(','), i; + for (i = 0; i < items.length; i++) { + obj[lowercaseKeys ? angular.lowercase(items[i]) : items[i]] = true; + } + return obj; +} + +var inertBodyElement; +(function(window) { + var doc; + if (window.document && window.document.implementation) { + doc = window.document.implementation.createHTMLDocument("inert"); + } else { + throw $sanitizeMinErr('noinert', "Can't create an inert html document"); + } + var docElement = doc.documentElement || doc.getDocumentElement(); + var bodyElements = docElement.getElementsByTagName('body'); + + // usually there should be only one body element in the document, but IE doesn't have any, so we need to create one + if (bodyElements.length === 1) { + inertBodyElement = bodyElements[0]; + } else { + var html = doc.createElement('html'); + inertBodyElement = doc.createElement('body'); + html.appendChild(inertBodyElement); + doc.appendChild(html); + } +})(window); + +/** + * @example + * htmlParser(htmlString, { + * start: function(tag, attrs) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + * @param {string} html string + * @param {object} handler + */ +function htmlParser(html, handler) { + if (html === null || html === undefined) { + html = ''; + } else if (typeof html !== 'string') { + html = '' + html; + } + inertBodyElement.innerHTML = html; + + //mXSS protection + var mXSSAttempts = 5; + do { + if (mXSSAttempts === 0) { + throw $sanitizeMinErr('uinput', "Failed to sanitize html because the input is unstable"); + } + mXSSAttempts--; + + // strip custom-namespaced attributes on IE<=11 + if (window.document.documentMode) { + stripCustomNsAttrs(inertBodyElement); + } + html = inertBodyElement.innerHTML; //trigger mXSS + inertBodyElement.innerHTML = html; + } while (html !== inertBodyElement.innerHTML); + + var node = inertBodyElement.firstChild; + while (node) { + switch (node.nodeType) { + case 1: // ELEMENT_NODE + handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes)); + break; + case 3: // TEXT NODE + handler.chars(node.textContent); + break; + } + + var nextNode; + if (!(nextNode = node.firstChild)) { + if (node.nodeType == 1) { + handler.end(node.nodeName.toLowerCase()); + } + nextNode = node.nextSibling; + if (!nextNode) { + while (nextNode == null) { + node = node.parentNode; + if (node === inertBodyElement) break; + nextNode = node.nextSibling; + if (node.nodeType == 1) { + handler.end(node.nodeName.toLowerCase()); + } + } + } + } + node = nextNode; + } + + while (node = inertBodyElement.firstChild) { + inertBodyElement.removeChild(node); + } +} + +function attrToMap(attrs) { + var map = {}; + for (var i = 0, ii = attrs.length; i < ii; i++) { + var attr = attrs[i]; + map[attr.name] = attr.value; + } + return map; +} + + +/** + * Escapes all potentially dangerous characters, so that the + * resulting string can be safely inserted into attribute or + * element text. + * @param value + * @returns {string} escaped text + */ +function encodeEntities(value) { + return value. + replace(/&/g, '&'). + replace(SURROGATE_PAIR_REGEXP, function(value) { + var hi = value.charCodeAt(0); + var low = value.charCodeAt(1); + return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';'; + }). + replace(NON_ALPHANUMERIC_REGEXP, function(value) { + return '&#' + value.charCodeAt(0) + ';'; + }). + replace(//g, '>'); +} + +/** + * create an HTML/XML writer which writes to buffer + * @param {Array} buf use buf.join('') to get out sanitized html string + * @returns {object} in the form of { + * start: function(tag, attrs) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * } + */ +function htmlSanitizeWriter(buf, uriValidator) { + var ignoreCurrentElement = false; + var out = angular.bind(buf, buf.push); + return { + start: function(tag, attrs) { + tag = angular.lowercase(tag); + if (!ignoreCurrentElement && blockedElements[tag]) { + ignoreCurrentElement = tag; + } + if (!ignoreCurrentElement && 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('>'); + } + }, + end: function(tag) { + tag = angular.lowercase(tag); + if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) { + out(''); + } + if (tag == ignoreCurrentElement) { + ignoreCurrentElement = false; + } + }, + chars: function(chars) { + if (!ignoreCurrentElement) { + out(encodeEntities(chars)); + } + } + }; +} + + +/** + * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare + * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want + * to allow any of these custom attributes. This method strips them all. + * + * @param node Root element to process + */ +function stripCustomNsAttrs(node) { + if (node.nodeType === window.Node.ELEMENT_NODE) { + var attrs = node.attributes; + for (var i = 0, l = attrs.length; i < l; i++) { + var attrNode = attrs[i]; + var attrName = attrNode.name.toLowerCase(); + if (attrName === 'xmlns:ns1' || attrName.indexOf('ns1:') === 0) { + node.removeAttributeNode(attrNode); + i--; + l--; + } + } + } + + var nextNode = node.firstChild; + if (nextNode) { + stripCustomNsAttrs(nextNode); + } + + nextNode = node.nextSibling; + if (nextNode) { + stripCustomNsAttrs(nextNode); + } +} + + + +// 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. + * @param {object|function(url)} [attributes] Add custom attributes to the link element. + * + * Can be one of: + * + * - `object`: A map of attributes + * - `function`: Takes the url as a parameter and returns a map of attributes + * + * If the map of attributes contains a value for `target`, it overrides the value of + * the target parameter. + * + * + * @returns {string} Html-linkified and {@link $sanitize sanitized} text. + * + * @usage + + * + * @example + + +
+ Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithSingleURL | linky:'_blank'">
</div>
+
+
+
linky custom attributes +
<div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + + 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.snippetWithSingleURL = 'http://angularjs.org/'; + }]); + + + 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("snippetWithSingleURL | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); + + it('should optionally add custom attributes', function() { + expect(element(by.id('linky-custom-attributes')). + element(by.binding("snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow'); + }); + + + */ +angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) { + var LINKY_URL_REGEXP = + /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i, + MAILTO_REGEXP = /^mailto:/i; + + var linkyMinErr = angular.$$minErr('linky'); + var isString = angular.isString; + + return function(text, target, attributes) { + if (text == null || text === '') return text; + if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', 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/www/mailto then assume mailto + if (!match[2] && !match[4]) { + url = (match[3] ? 'http://' : '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) { + var key; + html.push(''); + addText(text); + html.push(''); + } + }; +}]); + + +})(window, window.angular); diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-sanitize.min.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-sanitize.min.js new file mode 100644 index 00000000..cbbd6368 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-sanitize.min.js @@ -0,0 +1,15 @@ +/* + AngularJS v1.5.5 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(n,e){'use strict';function B(a){var c=[];w(c,e.noop).chars(a);return c.join("")}function h(a,c){var b={},d=a.split(","),l;for(l=0;l/g,">")}function w(a,c){var b=!1,d=e.bind(a,a.push);return{start:function(a,f){a=e.lowercase(a);!b&&G[a]&&(b=a);b||!0!==u[a]||(d("<"),d(a),e.forEach(f,function(b,f){var g=e.lowercase(f),h="img"===a&&"src"===g||"background"===g;!0!==H[g]||!0===z[g]&&!c(b,h)||(d(" "),d(f),d('="'),d(y(b)),d('"'))}),d(">"))},end:function(a){a=e.lowercase(a);b||!0!==u[a]||!0===A[a]||(d(""));a== +b&&(b=!1)},chars:function(a){b||d(y(a))}}}function t(a){if(a.nodeType===n.Node.ELEMENT_NODE)for(var c=a.attributes,b=0,d=c.length;b"\u201d\u2019]/i,b=/^mailto:/i,d=e.$$minErr("linky"),g=e.isString;return function(f,h,m){function k(a){a&&p.push(B(a))}function q(a,b){var c;p.push("');k(b);p.push("")}if(null==f||""===f)return f;if(!g(f))throw d("notstring",f);for(var r=f,p=[],s,n;f=r.match(c);)s=f[0],f[2]||f[4]||(s=(f[3]?"http://":"mailto:")+s),n=f.index,k(r.substr(0,n)),q(s,f[0].replace(b,"")),r=r.substring(n+f[0].length);k(r);return a(p.join(""))}}])})(window,window.angular); +//# sourceMappingURL=angular-sanitize.min.js.map diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-sanitize.min.js.map b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-sanitize.min.js.map new file mode 100644 index 00000000..d12c6c7c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-sanitize.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular-sanitize.min.js", +"lineCount":14, +"mappings":"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", +"sources":["angular-sanitize.js"], +"names":["window","angular","sanitizeText","chars","buf","htmlSanitizeWriter","writer","noop","join","toMap","str","lowercaseKeys","obj","items","split","i","length","lowercase","htmlParser","html","handler","undefined","inertBodyElement","innerHTML","mXSSAttempts","$sanitizeMinErr","document","documentMode","stripCustomNsAttrs","node","firstChild","nodeType","start","nodeName","toLowerCase","attrToMap","attributes","textContent","nextNode","end","nextSibling","parentNode","removeChild","attrs","map","ii","attr","name","value","encodeEntities","replace","SURROGATE_PAIR_REGEXP","hi","charCodeAt","low","NON_ALPHANUMERIC_REGEXP","uriValidator","ignoreCurrentElement","out","bind","push","tag","blockedElements","validElements","forEach","key","lkey","isImage","validAttrs","uriAttrs","voidElements","Node","ELEMENT_NODE","l","attrNode","attrName","indexOf","removeAttributeNode","$$minErr","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","extend","blockElements","inlineElements","svgElements","htmlAttrs","svgAttrs","implementation","doc","createHTMLDocument","bodyElements","getElementsByTagName","documentElement","getDocumentElement","createElement","appendChild","module","provider","$SanitizeProvider","svgEnabled","$get","$$sanitizeUri","uri","test","enableSvg","this.enableSvg","isDefined","filter","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","isString","text","target","addText","addLink","url","isFunction","isObject","raw","match","index","substr","substring"] +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-scenario.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-scenario.js new file mode 100644 index 00000000..7ce72f85 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/angular-scenario.js @@ -0,0 +1,42289 @@ +/*! + * jQuery JavaScript Library v2.1.1 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-05-01T17:11Z + */ + +(function( global, factory ) {'use strict'; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper window is present, + // execute the factory and get jQuery + // For environments that do not inherently posses a window with a document + // (such as Node.js), expose a jQuery-making factory as module.exports + // This accentuates the need for the creation of a real window + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// 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 arr = []; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + // Use the correct document accordingly with window argument (sandbox) + document = window.document, + + version = "2.1.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/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(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return 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 just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // 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 ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + slice: function() { + return this.pushStack( 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] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // 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 ( i === length ) { + 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 + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // 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, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0; + }, + + isPlainObject: function( obj ) { + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.constructor && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + // Support: Android < 4.0, iOS < 6 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call(obj) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf("use strict") === 1 ) { + script = document.createElement("script"); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + indirect( code ); + } + } + }, + + // 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; + }, + + // Support: Android<4.1 + trim: 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 { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // 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 new values + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return 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 tmp, args, proxy; + + 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 = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( 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; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +}); + +// 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 ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v1.10.19 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2014-04-18 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // 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(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + 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#" ), + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // 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 + "*" ), + + 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" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + 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<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + 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 (jQuery #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 ) && testContext( 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]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +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; +}; + +/** + * 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 hasCompare, + 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 !== parent.top ) { + // IE11 does not have attachEvent, so all must suffer + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", 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 = rnative.test( doc.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, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowclip^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // 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: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + 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.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 + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + 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 = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // 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 || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + 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 ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +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 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + 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 + while ( (node = elem[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 (jQuery #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[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[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // 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 negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + 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; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // 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(); + +tokenize = Sizzle.tokenize = function( 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 oldCache, outerCache, + newCache = [ 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 ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + outerCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + 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 multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +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 ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context !== document && context; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (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; + } + } + + // 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, match /* 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 ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is no seed and 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; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + 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 ) && testContext( 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 if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + 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 elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +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; + + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// 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 ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) >= 0 ) !== not; + }); +} + +jQuery.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; + })); +}; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + len = this.length, + ret = [], + self = this; + + 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; + }, + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + 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; + } +}); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // 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-]*))$/, + + init = jQuery.fn.init = function( selector, context ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[0] === "<" && selector[ 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 + // Intentionally let the error be thrown if parseHTML is not present + 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 ) { + // 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 typeof rootjQuery.ready !== "undefined" ? + rootjQuery.ready( selector ) : + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.extend({ + dir: function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }, + + sibling: function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + } +}); + +jQuery.fn.extend({ + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter(function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + 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)) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // 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 indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.unique( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + while ( (cur = cur[dir]) && 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 elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.unique( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +}); +var rnotwhite = (/\S+/g); + + + +// 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( 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 // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // 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 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[ tuple[ 0 ] + "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 = 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 ? 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(); + } +}); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend({ + // 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; + } + + // 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.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +}); + +/** + * The ready event handler and self cleanup method + */ +function completed() { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + jQuery.ready(); +} + +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 ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = 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 < len; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + len ? fn( elems[0], key ) : emptyGet; +}; + + +/** + * Determines whether an object can have data + */ +jQuery.acceptData = function( owner ) { + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + /* jshint -W018 */ + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + +function Data() { + // Support: Android < 4, + // Old WebKit does not have Object.preventExtensions/freeze method, + // return new empty object instead with no [[set]] accessor + Object.defineProperty( this.cache = {}, 0, { + get: function() { + return {}; + } + }); + + this.expando = jQuery.expando + Math.random(); +} + +Data.uid = 1; +Data.accepts = jQuery.acceptData; + +Data.prototype = { + key: function( owner ) { + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return the key for a frozen object. + if ( !Data.accepts( owner ) ) { + return 0; + } + + var descriptor = {}, + // Check if the owner object already has a cache key + unlock = owner[ this.expando ]; + + // If not, create one + if ( !unlock ) { + unlock = Data.uid++; + + // Secure it in a non-enumerable, non-writable property + try { + descriptor[ this.expando ] = { value: unlock }; + Object.defineProperties( owner, descriptor ); + + // Support: Android < 4 + // Fallback to a less secure definition + } catch ( e ) { + descriptor[ this.expando ] = unlock; + jQuery.extend( owner, descriptor ); + } + } + + // Ensure the cache object + if ( !this.cache[ unlock ] ) { + this.cache[ unlock ] = {}; + } + + return unlock; + }, + set: function( owner, data, value ) { + var prop, + // There may be an unlock assigned to this node, + // if there is no entry for this "owner", create one inline + // and set the unlock as though an owner entry had always existed + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Fresh assignments by object are shallow copied + if ( jQuery.isEmptyObject( cache ) ) { + jQuery.extend( this.cache[ unlock ], data ); + // Otherwise, copy the properties one-by-one to the cache object + } else { + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + } + return cache; + }, + get: function( owner, key ) { + // Either a valid cache is found, or will be created. + // New caches will be created and the unlock returned, + // allowing direct access to the newly created + // empty data object. A valid owner object must be provided. + var cache = this.cache[ this.key( owner ) ]; + + return key === undefined ? + cache : cache[ key ]; + }, + access: function( owner, key, value ) { + var stored; + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ((key && typeof key === "string") && value === undefined) ) { + + stored = this.get( owner, key ); + + return stored !== undefined ? + stored : this.get( owner, jQuery.camelCase(key) ); + } + + // [*]When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + if ( key === undefined ) { + this.cache[ unlock ] = {}; + + } else { + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + // 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 = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( rnotwhite ) || [] ); + } + } + + i = name.length; + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + }, + hasData: function( owner ) { + return !jQuery.isEmptyObject( + this.cache[ owner[ this.expando ] ] || {} + ); + }, + discard: function( owner ) { + if ( owner[ this.expando ] ) { + delete this.cache[ owner[ this.expando ] ]; + } + } +}; +var data_priv = new Data(); + +var data_user = new Data(); + + + +/* + Implementation Summary + + 1. Enforce API surface and semantic compatibility with 1.9.x branch + 2. Improve the module's maintainability by reducing the storage + paths to a single mechanism. + 3. Use the same single mechanism to support "private" and "user" data. + 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + 5. Avoid exposing implementation details on user objects (eg. expando properties) + 6. Provide a clear path for implementation upgrade to WeakMap in 2014 +*/ +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + 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 + data_user.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend({ + hasData: function( elem ) { + return data_user.hasData( elem ) || data_priv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return data_user.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + data_user.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to data_priv methods, these can be deprecated. + _data: function( elem, name, data ) { + return data_priv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + data_priv.remove( elem, name ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = data_user.get( elem ); + + if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + data_priv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + data_user.set( this, key ); + }); + } + + return access( this, function( value ) { + var data, + camelKey = jQuery.camelCase( key ); + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + // Attempt to get data from the cache + // with the key as-is + data = data_user.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to get data from the cache + // with the key camelized + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each(function() { + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = data_user.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + data_user.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf("-") !== -1 && data !== undefined ) { + data_user.set( this, key, value ); + } + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + data_user.remove( this, key ); + }); + } +}); + + +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = data_priv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = data_priv.access( 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 data_priv.get( elem, key ) || data_priv.access( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + data_priv.remove( elem, [ type + "queue", 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 ); + }); + }, + 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 = data_priv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( 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 ); + }; + +var rcheckableType = (/^(?:checkbox|radio)$/i); + + + +(function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // #11217 - WebKit loses check when the name is after the checked attribute + // Support: Windows Web Apps (WWA) + // `name` and `type` need .setAttribute for WWA + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE9-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +})(); +var strundefined = typeof undefined; + + + +support.focusinBubbles = "onfocusin" in window; + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|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 handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.get( 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 !== strundefined && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( 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 if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + } + } + } + + 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; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( 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; + data_priv.remove( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = 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 = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && jQuery.acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === 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. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( 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; + elem[ type ](); + 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, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( data_priv.get( 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 i, matches, sel, handleObj, + 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") ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( 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; + }, + + // 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 offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // 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 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; + } + }, + + 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: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome < 28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : 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 ) { + this.focus(); + return false; + } + }, + 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 ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + 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 ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + 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 = function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } +}; + +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.defaultPrevented === undefined && + // Support: Android < 4.0 + src.returnValue === false ? + 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 && e.preventDefault ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && e.stopPropagation ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// Support: Chrome 15+ +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, 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; + } + }; +}); + +// Create "bubbling" focus and blur events +// Support: Firefox, Chrome, Safari +if ( !support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = data_priv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + data_priv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = data_priv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + data_priv.remove( doc, fix ); + + } else { + data_priv.access( doc, fix, attaches ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // 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 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + + // Support: IE 9 + option: [ 1, "" ], + + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] + }; + +// Support: IE 9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: 1.x compatibility +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? 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 = (elem.getAttribute("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 i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + data_priv.set( + elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) + ); + } +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( data_priv.hasData( src ) ) { + pdataOld = data_priv.access( src ); + pdataCur = data_priv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( data_user.hasData( src ) ) { + udataOld = data_user.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + data_user.set( dest, udataCur ); + } +} + +function getAll( context, tag ) { + var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : + context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + +// Support: IE >= 9 +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Support: IE >= 9 + // Fix Cloning issues + if ( !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 ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], 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, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + 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 || fragment.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; + } + + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Fixes #12346 + // Support: Webkit, IE + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + 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( fragment.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 ); + } + } + } + } + + return fragment; + }, + + cleanData: function( elems ) { + var data, elem, type, key, + special = jQuery.event.special, + i = 0; + + for ( ; (elem = elems[ i ]) !== undefined; i++ ) { + if ( jQuery.acceptData( elem ) ) { + key = elem[ data_priv.expando ]; + + if ( key && (data = data_priv.cache[ key ]) ) { + 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 ); + } + } + } + if ( data_priv.cache[ key ] ) { + // Discard any remaining `private` data + delete data_priv.cache[ key ]; + } + } + } + // Discard any remaining `user` data + delete data_user.cache[ elem[ data_user.expando ] ]; + } + } +}); + +jQuery.fn.extend({ + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each(function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = 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 ); + } + }); + }, + + remove: function( selector, keepData /* Internal Use Only */ ) { + 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++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + 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 access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + 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 arg = arguments[ 0 ]; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + arg = this.parentNode; + + jQuery.cleanData( getAll( this ) ); + + if ( arg ) { + arg.replaceChild( elem, this ); + } + }); + + // Force removal if there was no new content (e.g., from empty arguments) + return arg && (arg.length || arg.nodeType) ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + 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" && + !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 ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, 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 ) { + // Support: QtWebKit + // jQuery.merge because push.apply(_, arraylike) throws + 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 || "" ) && + !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because push.apply(_, arraylike) throws + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + + +var iframe, + elemdisplay = {}; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var style, + elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + // getDefaultComputedStyle might be reliably used only on attached element + display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? + + // Use of this method is a temporary fix (more like optmization) until something better comes along, + // since it was removed from specification and supported only in FF + style.display : jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/components/open-sans-fontface-1.0.4/open-sans.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/components/open-sans-fontface-1.0.4/open-sans.css new file mode 100644 index 00000000..76c36b93 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/components/open-sans-fontface-1.0.4/open-sans.less b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/components/open-sans-fontface-1.0.4/open-sans.less new file mode 100644 index 00000000..236a402e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/components/open-sans-fontface-1.0.4/open-sans.scss b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/components/open-sans-fontface-1.0.4/open-sans.scss new file mode 100644 index 00000000..a46063fb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/animations.css new file mode 100644 index 00000000..e69de29b diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/doc_widgets.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/doc_widgets.css new file mode 100644 index 00000000..c87db303 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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 */ +} + +/* 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/docs.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/docs.css new file mode 100644 index 00000000..183dad3a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/docs.css @@ -0,0 +1,798 @@ +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 solid #aaa; + margin-bottom:5px; +} + +.nav-index-group .nav-index-listing.current a { + color: #B52E31; +} + +.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-group .search-results { + padding: 0 5px 0; + list-style-type: none; +} + +.search-results-frame > .search-results-group:first-child > .search-results { + border-right:1px solid #222; +} + +.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; } + +@supports ((column-count: 2) or (-moz-column-count: 2) or (-ms-column-count: 2) or (-webkit-column-count: 2)) { + .search-results-group.col-group-api .search-results { + -moz-column-count: 2; + -ms-column-count: 2; + -webkit-column-count: 2; + column-count: 2; + /* Prevent bullets in the second column from being hidden in Chrome and IE */ + -webkit-column-gap: 2em; + -ms-column-gap: 2em; + column-gap: 2em; + } +} + +.search-results-group .search-result { + word-wrap: break-word; + -webkit-hyphens: auto; + -moz-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto; + -ms-column-break-inside: avoid; + -webkit-column-break-inside: avoid; + -moz-column-break-inside: avoid; /* Unsupported */ + column-break-inside: avoid; + text-indent: -0.65em; /* Make sure line wrapped words are aligned vertically */ +} + +@supports (-moz-column-count: 2) { + .search-results-group .search-result { + /* Prevents column breaks inside words in FF, but has adverse effects in IE11 and Chrome */ + overflow: hidden; + padding-left: 1em; /* In FF the list item bullet is otherwise hidden */ + margin-left: -1em; /* offset the padding left */ + } +} + +.search-result:before { + content: "\002D\00A0"; /* Dash and non-breaking space as List item type */ + position: relative; +} + +.search-results-group.col-group-api .search-result { + width:48%; + display:inline-block; + padding-left: 12px; +} + +@supports ((column-count: 2) or (-moz-column-count: 2) or (-ms-column-count: 2) or (-webkit-column-count: 2)) { + .search-results-group.col-group-api .search-result { + width:auto; + display: list-item; + } +} + +.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, .btn:focus { + 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; +} + +.definition-table td { + padding: 8px; + border: 1px solid #eee; + vertical-align: top; +} + +.table > tbody > tr.head > td, +.table > tbody > tr.head > th { + border-bottom: 2px solid #ddd; + padding-top: 50px; +} + +@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; + padding-bottom:50px; + } + .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: 5px; + left: 50%; + margin-left: -50%; + text-align: center; + padding: 5px; + background: #eee; + border-radius: 5px; + width: 100%; + 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-frame > .search-results-group:first-child > .search-results { + border-right: none; + } + + .search-results-group { + float:none!important; + display:block!important; + width:auto!important; + border:0!important; + padding:0!important; + } + + @supports ((column-count: 2) or (-moz-column-count: 2) or (-ms-column-count: 2) or (-webkit-column-count: 2)) { + .search-results-group .search-results { + -moz-column-count: 2; + -ms-column-count: 2; + -webkit-column-count: 2; + column-count: 2; + } + } + + .search-results-group .search-result { + display:inline-block!important; + padding:0 5px; + width:auto!important; + text-indent: initial; + margin-left: 0; + } + + .search-results-group .search-result:after { + content:", "; + } + + .search-results-group .search-result:before { + content: ""; + } + + @supports ((column-count: 2) or (-moz-column-count: 2) or (-ms-column-count: 2) or (-webkit-column-count: 2)) { + .search-results-group .search-result { + display: list-item !important; + } + + .search-results-group .search-result:after { + content: ""; + } + } + + #wrapper { + padding-bottom:0px; + } +} + +iframe[name="example-anchoringExample"] { + height:400px; +} diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/prettify-theme.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/prettify-theme.css new file mode 100644 index 00000000..7308e1ec --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/prettify.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/css/prettify.css new file mode 100644 index 00000000..354bbd54 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index-debug.html new file mode 100644 index 00000000..217b7571 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index-jquery.html new file mode 100644 index 00000000..b0baadd0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index-production.html new file mode 100644 index 00000000..cf399998 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index.html new file mode 100644 index 00000000..5dd116a5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-$filter + + + + + + + + + +
+

{{ originalText }}

+

{{ filteredText }}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/manifest.json new file mode 100644 index 00000000..0d2a67bb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/script.js new file mode 100644 index 00000000..f06afee1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$filter/script.js @@ -0,0 +1,8 @@ +(function(angular) { + 'use strict'; +angular.module('filterExample', []) +.controller('MainCtrl', function($scope, $filter) { + $scope.originalText = 'hello'; + $scope.filteredText = $filter('uppercase')($scope.originalText); +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/book.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/book.html new file mode 100644 index 00000000..0ecdd75c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/chapter.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/chapter.html new file mode 100644 index 00000000..8775d07d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index-debug.html new file mode 100644 index 00000000..2e1e4a63 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index-jquery.html new file mode 100644 index 00000000..770372e9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index-production.html new file mode 100644 index 00000000..0250a3aa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/index.html new file mode 100644 index 00000000..e2cc0581 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/manifest.json new file mode 100644 index 00000000..0156fd11 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/protractor.js new file mode 100644 index 00000000..d996c20c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/script.js new file mode 100644 index 00000000..73633960 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-$route-service/script.js @@ -0,0 +1,43 @@ +(function(angular) { + 'use strict'; +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); +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index-debug.html new file mode 100644 index 00000000..26137f3e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index-jquery.html new file mode 100644 index 00000000..6b89a3fd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index-production.html new file mode 100644 index 00000000..4d566270 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/index.html new file mode 100644 index 00000000..908e6163 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/manifest.json new file mode 100644 index 00000000..77bb9769 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/protractor.js new file mode 100644 index 00000000..a524f929 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/script.js new file mode 100644 index 00000000..415bd0fa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/script.js @@ -0,0 +1,35 @@ +(function(angular) { + 'use strict'; +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); + } + } + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-NgModelController/style.css new file mode 100644 index 00000000..a96ba9e6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/animations.css new file mode 100644 index 00000000..5f9cf011 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/animations.css @@ -0,0 +1,35 @@ +.record { + display:block; + font-size:20px; +} +.profile { + background:black; + color:white; + font-size:100px; +} +.view-container { + position:relative; +} +.view-container > .view.ng-animate { + position:absolute; + top:0; + left:0; + width:100%; + min-height:500px; +} +.view.ng-enter, .view.ng-leave, +.record.ng-anchor { + transition:0.5s linear all; +} +.view.ng-enter { + transform:translateX(100%); +} +.view.ng-enter.ng-enter-active, .view.ng-leave { + transform:translateX(0%); +} +.view.ng-leave.ng-leave-active { + transform:translateX(-100%); +} +.record.ng-anchor-out { + background:red; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/home.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/home.html new file mode 100644 index 00000000..4d350763 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/home.html @@ -0,0 +1,8 @@ +

Welcome to the home page

+

Please click on an element

+ + {{ record.title }} + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-debug.html new file mode 100644 index 00000000..e423ff06 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-anchoringExample-debug + + + + + + + + + + + + + Home +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-jquery.html new file mode 100644 index 00000000..5935c1fe --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-anchoringExample-jquery + + + + + + + + + + + + + + Home +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-production.html new file mode 100644 index 00000000..6f6514aa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-anchoringExample-production + + + + + + + + + + + + + Home +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index.html new file mode 100644 index 00000000..c7847dc9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-anchoringExample + + + + + + + + + + + + + Home +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/manifest.json new file mode 100644 index 00000000..1e8ba5e5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/manifest.json @@ -0,0 +1,10 @@ +{ + "name": "example-anchoringExample", + "files": [ + "index-production.html", + "script.js", + "home.html", + "profile.html", + "animations.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/profile.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/profile.html new file mode 100644 index 00000000..446b1e04 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/profile.html @@ -0,0 +1,3 @@ +
+ {{ profile.title }} +
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/script.js new file mode 100644 index 00000000..5e5d35fa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-anchoringExample/script.js @@ -0,0 +1,38 @@ +(function(angular) { + 'use strict'; +angular.module('anchoringExample', ['ngAnimate', 'ngRoute']) + .config(['$routeProvider', function($routeProvider) { + $routeProvider.when('/', { + templateUrl: 'home.html', + controller: 'HomeController as home' + }); + $routeProvider.when('/profile/:id', { + templateUrl: 'profile.html', + controller: 'ProfileController as profile' + }); + }]) + .run(['$rootScope', function($rootScope) { + $rootScope.records = [ + { id:1, title: "Miss Beulah Roob" }, + { id:2, title: "Trent Morissette" }, + { id:3, title: "Miss Ava Pouros" }, + { id:4, title: "Rod Pouros" }, + { id:5, title: "Abdul Rice" }, + { id:6, title: "Laurie Rutherford Sr." }, + { id:7, title: "Nakia McLaughlin" }, + { id:8, title: "Jordon Blanda DVM" }, + { id:9, title: "Rhoda Hand" }, + { id:10, title: "Alexandrea Sauer" } + ]; + }]) + .controller('HomeController', [function() { + //empty + }]) + .controller('ProfileController', ['$rootScope', '$routeParams', function($rootScope, $routeParams) { + var index = parseInt($routeParams.id, 10); + var record = $rootScope.records[index - 1]; + + this.title = record.title; + this.id = record.id; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-debug.html new file mode 100644 index 00000000..40805be0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-debug.html @@ -0,0 +1,35 @@ + + + + + Example - example-checkbox-input-directive-debug + + + + + + + + + +
+
+
+ value1 = {{checkboxModel.value1}}
+ value2 = {{checkboxModel.value2}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-jquery.html new file mode 100644 index 00000000..ef9cd0a6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-jquery.html @@ -0,0 +1,36 @@ + + + + + Example - example-checkbox-input-directive-jquery + + + + + + + + + + +
+
+
+ value1 = {{checkboxModel.value1}}
+ value2 = {{checkboxModel.value2}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-production.html new file mode 100644 index 00000000..03f8c482 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index-production.html @@ -0,0 +1,35 @@ + + + + + Example - example-checkbox-input-directive-production + + + + + + + + + +
+
+
+ value1 = {{checkboxModel.value1}}
+ value2 = {{checkboxModel.value2}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index.html new file mode 100644 index 00000000..df0dda8b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/index.html @@ -0,0 +1,35 @@ + + + + + Example - example-checkbox-input-directive + + + + + + + + + +
+
+
+ value1 = {{checkboxModel.value1}}
+ value2 = {{checkboxModel.value2}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/manifest.json new file mode 100644 index 00000000..7c0bf824 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/protractor.js new file mode 100644 index 00000000..33614faa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-checkbox-input-directive/protractor.js @@ -0,0 +1,13 @@ +it('should change state', function() { + var value1 = element(by.binding('checkboxModel.value1')); + var value2 = element(by.binding('checkboxModel.value2')); + + expect(value1.getText()).toContain('true'); + expect(value2.getText()).toContain('YES'); + + element(by.model('checkboxModel.value1')).click(); + element(by.model('checkboxModel.value2')).click(); + + expect(value1.getText()).toContain('false'); + expect(value2.getText()).toContain('NO'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/app.js new file mode 100644 index 00000000..354d60c4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/app.js @@ -0,0 +1,23 @@ +(function(angular) { + 'use strict'; +angular.module('app', ['ngComponentRouter', 'heroes', 'crisis-center']) + +.config(function($locationProvider) { + $locationProvider.html5Mode(true); +}) + +.value('$routerRootComponent', 'app') + +.component('app', { + template: + '\n' + + '\n', + $routeConfig: [ + {path: '/crisis-center/...', name: 'CrisisCenter', component: 'crisisCenter', useAsDefault: true}, + {path: '/heroes/...', name: 'Heroes', component: 'heroes' } + ] +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/crisis.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/crisis.js new file mode 100644 index 00000000..749ba377 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/crisis.js @@ -0,0 +1,122 @@ +(function(angular) { + 'use strict'; +angular.module('crisis-center', ['dialog']) + .service('crisisService', CrisisService) + + .component('crisisCenter', { + template: '

Crisis Center

', + $routeConfig: [ + {path:'/', name: 'CrisisList', component: 'crisisList', useAsDefault: true}, + {path:'/:id', name: 'CrisisDetail', component: 'crisisDetail'} + ] + }) + + .component('crisisList', { + template: + '
    \n' + + '
  • \n' + + ' {{crisis.id}} {{crisis.name}}\n' + + '
  • \n' + + '
\n', + bindings: { $router: '<' }, + controller: CrisisListComponent, + $canActivate: function($nextInstruction, $prevInstruction) { + console.log('$canActivate', arguments); + } + }) + + .component('crisisDetail', { + templateUrl: 'crisisDetail.html', + bindings: { $router: '<' }, + controller: CrisisDetailComponent + }); + + +function CrisisService($q) { + var crisesPromise = $q.when([ + {id: 1, name: 'Princess Held Captive'}, + {id: 2, name: 'Dragon Burning Cities'}, + {id: 3, name: 'Giant Asteroid Heading For Earth'}, + {id: 4, name: 'Release Deadline Looms'} + ]); + + this.getCrises = function() { + return crisesPromise; + }; + + this.getCrisis = function(id) { + return crisesPromise.then(function(crises) { + for(var i=0; i +

"{{$ctrl.editName}}"

+
+ {{$ctrl.crisis.id}}
+
+ + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/dialog.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/dialog.js new file mode 100644 index 00000000..49e878b8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/dialog.js @@ -0,0 +1,12 @@ +(function(angular) { + 'use strict'; +angular.module('dialog', []) + +.service('dialogService', DialogService); + +function DialogService($q) { + this.confirm = function(message) { + return $q.when(window.confirm(message || 'Is it OK?')); + }; +} +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/heroes.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/heroes.js new file mode 100644 index 00000000..98737259 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/heroes.js @@ -0,0 +1,96 @@ +(function(angular) { + 'use strict'; +angular.module('heroes', []) + .service('heroService', HeroService) + + .component('heroes', { + template: '

Heroes

', + $routeConfig: [ + {path: '/', name: 'HeroList', component: 'heroList', useAsDefault: true}, + {path: '/:id', name: 'HeroDetail', component: 'heroDetail'} + ] + }) + + .component('heroList', { + template: + '
\n' + + '{{hero.name}}\n' + + '
', + controller: HeroListComponent + }) + + .component('heroDetail', { + template: + '
\n' + + '

"{{$ctrl.hero.name}}"

\n' + + '
\n' + + ' {{$ctrl.hero.id}}
\n' + + '
\n' + + ' \n' + + ' \n' + + '
\n' + + ' \n' + + '
\n', + bindings: { $router: '<' }, + controller: HeroDetailComponent + }); + + +function HeroService($q) { + var heroesPromise = $q.when([ + { id: 11, name: 'Mr. Nice' }, + { id: 12, name: 'Narco' }, + { id: 13, name: 'Bombasto' }, + { id: 14, name: 'Celeritas' }, + { id: 15, name: 'Magneta' }, + { id: 16, name: 'RubberMan' } + ]); + + this.getHeroes = function() { + return heroesPromise; + }; + + this.getHero = function(id) { + return heroesPromise.then(function(heroes) { + for(var i=0; i + + + + Example - example-componentRouter-debug + + + + + + + + + + + + + +

Component Router

+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index-jquery.html new file mode 100644 index 00000000..108ffd7e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-componentRouter-jquery + + + + + + + + + + + + + + +

Component Router

+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index-production.html new file mode 100644 index 00000000..68927982 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-componentRouter-production + + + + + + + + + + + + + +

Component Router

+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index.html new file mode 100644 index 00000000..0815bcf9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-componentRouter + + + + + + + + + + + + + +

Component Router

+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/manifest.json new file mode 100644 index 00000000..868378a0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/manifest.json @@ -0,0 +1,12 @@ +{ + "name": "example-componentRouter", + "files": [ + "index-production.html", + "app.js", + "heroes.js", + "crisis.js", + "crisisDetail.html", + "dialog.js", + "styles.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/styles.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/styles.css new file mode 100644 index 00000000..a79a9d12 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-componentRouter/styles.css @@ -0,0 +1,34 @@ +h1 {color: #369; font-family: Arial, Helvetica, sans-serif; font-size: 250%;} +h2 { color: #369; font-family: Arial, Helvetica, sans-serif; } +h3 { color: #444; font-weight: lighter; } +body { margin: 2em; } +body, input[text], button { color: #888; font-family: Cambria, Georgia; } +button {padding: 0.2em; font-size: 14px} + +ul {list-style-type: none; margin-left: 1em; padding: 0; width: 20em;} + +li { cursor: pointer; position: relative; left: 0; transition: all 0.2s ease; } +li:hover {color: #369; background-color: #EEE; left: .2em;} + +/* route-link anchor tags */ +a {padding: 5px; text-decoration: none; font-family: Arial, Helvetica, sans-serif; } +a:visited, a:link {color: #444;} +a:hover {color: white; background-color: #1171a3; } +a.router-link-active {color: white; background-color: #52b9e9; } + +.selected { background-color: #EEE; color: #369; } + +.badge { + font-size: small; + color: white; + padding: 0.1em 0.7em; + background-color: #369; + line-height: 1em; + position: relative; + left: -1px; + top: -1px; +} + +crisis-detail input { + width: 20em; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-debug.html new file mode 100644 index 00000000..6364188f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-custom-interpolation-markup-debug + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-jquery.html new file mode 100644 index 00000000..04d23c9a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-custom-interpolation-markup-jquery + + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-production.html new file mode 100644 index 00000000..4014854d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-custom-interpolation-markup-production + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index.html new file mode 100644 index 00000000..b90a82fc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-custom-interpolation-markup + + + + + + + + + +
+ //demo.label// +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/manifest.json new file mode 100644 index 00000000..9ad01dbe --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-custom-interpolation-markup", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/protractor.js new file mode 100644 index 00000000..088c6693 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-custom-interpolation-markup/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-debug.html new file mode 100644 index 00000000..647f4539 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-debug.html @@ -0,0 +1,39 @@ + + + + + Example - example-date-input-directive-debug + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-dd"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-jquery.html new file mode 100644 index 00000000..a6970741 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-jquery.html @@ -0,0 +1,40 @@ + + + + + Example - example-date-input-directive-jquery + + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-dd"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-production.html new file mode 100644 index 00000000..2260e8a2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index-production.html @@ -0,0 +1,39 @@ + + + + + Example - example-date-input-directive-production + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-dd"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index.html new file mode 100644 index 00000000..0aa90cd9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/index.html @@ -0,0 +1,39 @@ + + + + + Example - example-date-input-directive + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-dd"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/manifest.json new file mode 100644 index 00000000..ac13615c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-date-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/protractor.js new file mode 100644 index 00000000..9934c68b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-date-input-directive/protractor.js @@ -0,0 +1,31 @@ +var value = element(by.binding('example.value | date: "yyyy-MM-dd"')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('example.value')); + +// currently protractor/webdriver does not support +// sending keys to all known HTML5 input controls +// for various browsers (see https://github.com/angular/protractor/issues/562). +function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); +} + +it('should initialize to model', function() { + expect(value.getText()).toContain('2013-10-22'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); +}); + +it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); + +it('should be invalid if over max', function() { + setInput('2015-01-01'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-debug.html new file mode 100644 index 00000000..aa03bdad --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-debug.html @@ -0,0 +1,39 @@ + + + + + Example - example-datetimelocal-input-directive-debug + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-jquery.html new file mode 100644 index 00000000..2d87cbd0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-jquery.html @@ -0,0 +1,40 @@ + + + + + Example - example-datetimelocal-input-directive-jquery + + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-production.html new file mode 100644 index 00000000..d338a9dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index-production.html @@ -0,0 +1,39 @@ + + + + + Example - example-datetimelocal-input-directive-production + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index.html new file mode 100644 index 00000000..fb7ff39f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/index.html @@ -0,0 +1,39 @@ + + + + + Example - example-datetimelocal-input-directive + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/manifest.json new file mode 100644 index 00000000..34b85a63 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-datetimelocal-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/protractor.js new file mode 100644 index 00000000..14c86e85 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-datetimelocal-input-directive/protractor.js @@ -0,0 +1,31 @@ +var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('example.value')); + +// currently protractor/webdriver does not support +// sending keys to all known HTML5 input controls +// for various browsers (https://github.com/angular/protractor/issues/562). +function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); +} + +it('should initialize to model', function() { + expect(value.getText()).toContain('2010-12-28T14:57:00'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); +}); + +it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); + +it('should be invalid if over max', function() { + setInput('2015-01-01T23:59:00'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-debug.html new file mode 100644 index 00000000..f2e80c2e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-debug.html @@ -0,0 +1,40 @@ + + + + + Example - example-email-input-directive-debug + + + + + + + + + +
+ +
+ + Required! + + Not valid email! +
+ text = {{email.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-jquery.html new file mode 100644 index 00000000..019f4013 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-jquery.html @@ -0,0 +1,41 @@ + + + + + Example - example-email-input-directive-jquery + + + + + + + + + + +
+ +
+ + Required! + + Not valid email! +
+ text = {{email.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-production.html new file mode 100644 index 00000000..afbb8766 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index-production.html @@ -0,0 +1,40 @@ + + + + + Example - example-email-input-directive-production + + + + + + + + + +
+ +
+ + Required! + + Not valid email! +
+ text = {{email.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index.html new file mode 100644 index 00000000..b11ba39b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/index.html @@ -0,0 +1,40 @@ + + + + + Example - example-email-input-directive + + + + + + + + + +
+ +
+ + Required! + + Not valid email! +
+ text = {{email.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/manifest.json new file mode 100644 index 00000000..a7348f2b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/protractor.js new file mode 100644 index 00000000..156e285a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-email-input-directive/protractor.js @@ -0,0 +1,22 @@ +var text = element(by.binding('email.text')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('email.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-debug.html new file mode 100644 index 00000000..2f7cc422 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-debug.html @@ -0,0 +1,35 @@ + + + + + Example - example-equalsExample-debug + + + + + + + + + +
+
+

User 1

+ Name: + Age: + +

User 2

+ Name: + Age: + +
+
+ +
+ User 1:
{{user1 | json}}
+ User 2:
{{user2 | json}}
+ Equal:
{{result}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-jquery.html new file mode 100644 index 00000000..41c9e117 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-jquery.html @@ -0,0 +1,36 @@ + + + + + Example - example-equalsExample-jquery + + + + + + + + + + +
+
+

User 1

+ Name: + Age: + +

User 2

+ Name: + Age: + +
+
+ +
+ User 1:
{{user1 | json}}
+ User 2:
{{user2 | json}}
+ Equal:
{{result}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-production.html new file mode 100644 index 00000000..03516b82 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index-production.html @@ -0,0 +1,35 @@ + + + + + Example - example-equalsExample-production + + + + + + + + + +
+
+

User 1

+ Name: + Age: + +

User 2

+ Name: + Age: + +
+
+ +
+ User 1:
{{user1 | json}}
+ User 2:
{{user2 | json}}
+ Equal:
{{result}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index.html new file mode 100644 index 00000000..4ae3fdf4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/index.html @@ -0,0 +1,35 @@ + + + + + Example - example-equalsExample + + + + + + + + + +
+
+

User 1

+ Name: + Age: + +

User 2

+ Name: + Age: + +
+
+ +
+ User 1:
{{user1 | json}}
+ User 2:
{{user2 | json}}
+ Equal:
{{result}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/manifest.json new file mode 100644 index 00000000..a8621aaa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-equalsExample", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/script.js new file mode 100644 index 00000000..105354eb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-equalsExample/script.js @@ -0,0 +1,11 @@ +(function(angular) { + 'use strict'; +angular.module('equalsExample', []).controller('ExampleController', ['$scope', function($scope) { + $scope.user1 = {}; + $scope.user2 = {}; + $scope.result; + $scope.compare = function() { + $scope.result = angular.equals($scope.user1, $scope.user2); + }; +}]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/app.js new file mode 100644 index 00000000..a933541f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/app.js @@ -0,0 +1,10 @@ +(function(angular) { + 'use strict'; +angular.module('app', []).directive('setFocusIf', function() { + return function link($scope, $element, $attr) { + $scope.$watch($attr.setFocusIf, function(value) { + if ( value ) { $element[0].focus(); } + }); + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index-debug.html new file mode 100644 index 00000000..5396025f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index-jquery.html new file mode 100644 index 00000000..92a28230 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index-production.html new file mode 100644 index 00000000..c7d5a177 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/index.html new file mode 100644 index 00000000..5e7229d8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-error-$rootScope-inprog/manifest.json new file mode 100644 index 00000000..1c988f9f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-debug.html new file mode 100644 index 00000000..0d2af207 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example.csp-debug + + + + + + + + + +
+
+ + + {{ctrl.counter}} + +
+ +
+ + + {{ctrl.evilError}} + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-jquery.html new file mode 100644 index 00000000..d4cbed8c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example.csp-jquery + + + + + + + + + + +
+
+ + + {{ctrl.counter}} + +
+ +
+ + + {{ctrl.evilError}} + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-production.html new file mode 100644 index 00000000..0e02dec3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example.csp-production + + + + + + + + + +
+
+ + + {{ctrl.counter}} + +
+ +
+ + + {{ctrl.evilError}} + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index.html new file mode 100644 index 00000000..b9da98b2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example.csp + + + + + + + + + +
+
+ + + {{ctrl.counter}} + +
+ +
+ + + {{ctrl.evilError}} + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/manifest.json new file mode 100644 index 00000000..7a6feb43 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example.csp", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/protractor.js new file mode 100644 index 00000000..1346bb29 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/protractor.js @@ -0,0 +1,77 @@ +var util, webdriver; + +var incBtn = element(by.id('inc')); +var counter = element(by.id('counter')); +var evilBtn = element(by.id('evil')); +var evilError = element(by.id('evilError')); + +function getAndClearSevereErrors() { + return browser.manage().logs().get('browser').then(function(browserLog) { + return browserLog.filter(function(logEntry) { + return logEntry.level.value > webdriver.logging.Level.WARNING.value; + }); + }); +} + +function clearErrors() { + getAndClearSevereErrors(); +} + +function expectNoErrors() { + getAndClearSevereErrors().then(function(filteredLog) { + expect(filteredLog.length).toEqual(0); + if (filteredLog.length) { + console.log('browser console errors: ' + util.inspect(filteredLog)); + } + }); +} + +function expectError(regex) { + getAndClearSevereErrors().then(function(filteredLog) { + var found = false; + filteredLog.forEach(function(log) { + if (log.message.match(regex)) { + found = true; + } + }); + if (!found) { + throw new Error('expected an error that matches ' + regex); + } + }); +} + +beforeEach(function() { + util = require('util'); + webdriver = require('protractor/node_modules/selenium-webdriver'); +}); + +// For now, we only test on Chrome, +// as Safari does not load the page with Protractor's injected scripts, +// and Firefox webdriver always disables content security policy (#6358) +if (browser.params.browser !== 'chrome') { + return; +} + +it('should not report errors when the page is loaded', function() { + // clear errors so we are not dependent on previous tests + clearErrors(); + // Need to reload the page as the page is already loaded when + // we come here + browser.driver.getCurrentUrl().then(function(url) { + browser.get(url); + }); + expectNoErrors(); +}); + +it('should evaluate expressions', function() { + expect(counter.getText()).toEqual('0'); + incBtn.click(); + expect(counter.getText()).toEqual('1'); + expectNoErrors(); +}); + +it('should throw and report an error when using "eval"', function() { + evilBtn.click(); + expect(evilError.getText()).toMatch(/Content Security Policy/); + expectError(/Content Security Policy/); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/script.js new file mode 100644 index 00000000..67db803b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example.csp/script.js @@ -0,0 +1,18 @@ +(function(angular) { + 'use strict'; +angular.module('cspExample', []) + .controller('MainController', function() { + this.counter = 0; + this.inc = function() { + this.counter++; + }; + this.evil = function() { + // jshint evil:true + try { + eval('1+2'); + } catch (e) { + this.evilError = e.message; + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/app.js new file mode 100644 index 00000000..a1dd2247 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/app.js @@ -0,0 +1,24 @@ +(function(angular) { + 'use strict'; +angular.module('numfmt-error-module', []) + +.run(function($rootScope) { + $rootScope.typeOf = function(value) { + return typeof value; + }; +}) + +.directive('stringToNumber', function() { + return { + require: 'ngModel', + link: function(scope, element, attrs, ngModel) { + ngModel.$parsers.push(function(value) { + return '' + value; + }); + ngModel.$formatters.push(function(value) { + return parseFloat(value, 10); + }); + } + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-debug.html new file mode 100644 index 00000000..7750142b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example-debug + + + + + + + + + + + + + +
+ {{ x }} : {{ typeOf(x) }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-jquery.html new file mode 100644 index 00000000..cc17c457 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example-jquery + + + + + + + + + + + + + + +
+ {{ x }} : {{ typeOf(x) }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-production.html new file mode 100644 index 00000000..9ac10350 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example-production + + + + + + + + + + + + + +
+ {{ x }} : {{ typeOf(x) }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index.html new file mode 100644 index 00000000..78807d62 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example + + + + + + + + + + + + + +
+ {{ x }} : {{ typeOf(x) }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/manifest.json new file mode 100644 index 00000000..6f0d5079 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-debug.html new file mode 100644 index 00000000..e1d10571 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example1-debug + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-jquery.html new file mode 100644 index 00000000..f29ecd5c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example1-jquery + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-production.html new file mode 100644 index 00000000..15646aad --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example1-production + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index.html new file mode 100644 index 00000000..c7c13584 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example1 + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/manifest.json new file mode 100644 index 00000000..add5f56b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example1", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/script.js new file mode 100644 index 00000000..c3beb90b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example1/script.js @@ -0,0 +1,9 @@ +(function(angular) { + 'use strict'; +angular.module('locationExample', []) + .controller('LocationController', ['$scope', '$location', function($scope, $location) { + $scope.locationPath = function (newLocation) { + return $location.path(newLocation); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/app.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/app.css new file mode 100644 index 00000000..a99bd225 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/app.css @@ -0,0 +1,4 @@ +div.spicy div { + padding: 10px; + border: solid 2px blue; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/app.js new file mode 100644 index 00000000..58e964a9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/app.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +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'; +}]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-debug.html new file mode 100644 index 00000000..e8a1171a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-example10-debug + + + + + + + + + + +
+
+

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

+ +
+

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

+ +
+

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

+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-jquery.html new file mode 100644 index 00000000..bb4d3c4b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-example10-jquery + + + + + + + + + + + +
+
+

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

+ +
+

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

+ +
+

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

+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-production.html new file mode 100644 index 00000000..6baeca61 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-example10-production + + + + + + + + + + +
+
+

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

+ +
+

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

+ +
+

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

+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index.html new file mode 100644 index 00000000..966c0d0b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-example10 + + + + + + + + + + +
+
+

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

+ +
+

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

+ +
+

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

+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/manifest.json new file mode 100644 index 00000000..84962a66 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example10/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example10", + "files": [ + "index-production.html", + "app.css", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-debug.html new file mode 100644 index 00000000..59bbf013 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example100-debug + + + + + + + + + +
+
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-jquery.html new file mode 100644 index 00000000..f13b90f9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example100-jquery + + + + + + + + + + +
+
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-production.html new file mode 100644 index 00000000..82e0d317 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example100-production + + + + + + + + + +
+
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index.html new file mode 100644 index 00000000..d20012b9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example100 + + + + + + + + + +
+
+ Default formatting: {{val | number}}
+ No fractions: {{val | number:0}}
+ Negative number: {{-val | number:4}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/manifest.json new file mode 100644 index 00000000..5f6b2326 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example100", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/protractor.js new file mode 100644 index 00000000..b6beaa4c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example100/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-debug.html new file mode 100644 index 00000000..a84dadc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example101-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-jquery.html new file mode 100644 index 00000000..649f3953 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example101-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-production.html new file mode 100644 index 00000000..3bf8a011 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example101-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index.html new file mode 100644 index 00000000..9758483f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example101 + + + + + + + + + {{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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/manifest.json new file mode 100644 index 00000000..3b379009 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/protractor.js new file mode 100644 index 00000000..75faac8f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example101/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-debug.html new file mode 100644 index 00000000..0ab19c3a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example102-debug + + + + + + + + +
{{ {'name':'value'} | json }}
+
{{ {'name':'value'} | json:4 }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-jquery.html new file mode 100644 index 00000000..8fc209a6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example102-jquery + + + + + + + + + +
{{ {'name':'value'} | json }}
+
{{ {'name':'value'} | json:4 }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-production.html new file mode 100644 index 00000000..e9c2f3fb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example102-production + + + + + + + + +
{{ {'name':'value'} | json }}
+
{{ {'name':'value'} | json:4 }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index.html new file mode 100644 index 00000000..4921cdc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example102 + + + + + + + + +
{{ {'name':'value'} | json }}
+
{{ {'name':'value'} | json:4 }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/manifest.json new file mode 100644 index 00000000..cfc1705a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/protractor.js new file mode 100644 index 00000000..809d95f2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example102/protractor.js @@ -0,0 +1,4 @@ +it('should jsonify filtered objects', function() { + expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/); + expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-debug.html new file mode 100644 index 00000000..89da87d1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-debug.html @@ -0,0 +1,43 @@ + + + + + Example - example-example103-debug + + + + + + + + + +
+ +

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

+ +

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

+ +

Output long number: {{ longNumber | limitTo:longNumberLimit }}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-jquery.html new file mode 100644 index 00000000..6bc2c94c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-jquery.html @@ -0,0 +1,44 @@ + + + + + Example - example-example103-jquery + + + + + + + + + + +
+ +

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

+ +

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

+ +

Output long number: {{ longNumber | limitTo:longNumberLimit }}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-production.html new file mode 100644 index 00000000..faabf761 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index-production.html @@ -0,0 +1,43 @@ + + + + + Example - example-example103-production + + + + + + + + + +
+ +

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

+ +

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

+ +

Output long number: {{ longNumber | limitTo:longNumberLimit }}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index.html new file mode 100644 index 00000000..e4672074 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/index.html @@ -0,0 +1,43 @@ + + + + + Example - example-example103 + + + + + + + + + +
+ +

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

+ +

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

+ +

Output long number: {{ longNumber | limitTo:longNumberLimit }}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/manifest.json new file mode 100644 index 00000000..581fca58 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/protractor.js new file mode 100644 index 00000000..de30ced4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example103/protractor.js @@ -0,0 +1,40 @@ +var numLimitInput = element(by.model('numLimit')); +var letterLimitInput = element(by.model('letterLimit')); +var longNumberLimitInput = element(by.model('longNumberLimit')); +var limitedNumbers = element(by.binding('numbers | limitTo:numLimit')); +var limitedLetters = element(by.binding('letters | limitTo:letterLimit')); +var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit')); + +it('should limit the number array to first three items', function() { + expect(numLimitInput.getAttribute('value')).toBe('3'); + expect(letterLimitInput.getAttribute('value')).toBe('3'); + expect(longNumberLimitInput.getAttribute('value')).toBe('3'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]'); + expect(limitedLetters.getText()).toEqual('Output letters: abc'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 234'); +}); + +// 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'); +// longNumberLimitInput.clear(); +// longNumberLimitInput.sendKeys('-3'); +// expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); +// expect(limitedLetters.getText()).toEqual('Output letters: ghi'); +// expect(limitedLongNumber.getText()).toEqual('Output long number: 342'); +// }); + +it('should not exceed the maximum size of input array', function() { + numLimitInput.clear(); + numLimitInput.sendKeys('100'); + letterLimitInput.clear(); + letterLimitInput.sendKeys('100'); + longNumberLimitInput.clear(); + longNumberLimitInput.sendKeys('100'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]'); + expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-debug.html new file mode 100644 index 00000000..a8337db0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-example104-debug + + + + + + + + + +
+ + + + + + + + + + + +
NamePhone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-jquery.html new file mode 100644 index 00000000..a652fd20 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-example104-jquery + + + + + + + + + + +
+ + + + + + + + + + + +
NamePhone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-production.html new file mode 100644 index 00000000..02ceed7c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-example104-production + + + + + + + + + +
+ + + + + + + + + + + +
NamePhone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index.html new file mode 100644 index 00000000..2d8a06a3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-example104 + + + + + + + + + +
+ + + + + + + + + + + +
NamePhone NumberAge
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/manifest.json new file mode 100644 index 00000000..7c0e5a05 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/script.js new file mode 100644 index 00000000..9ea6e91c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example104/script.js @@ -0,0 +1,12 @@ +(function(angular) { + 'use strict'; +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}]; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-debug.html new file mode 100644 index 00000000..5fdc3496 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-debug.html @@ -0,0 +1,43 @@ + + + + + Example - example-example105-debug + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ + + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-jquery.html new file mode 100644 index 00000000..84869df7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-jquery.html @@ -0,0 +1,44 @@ + + + + + Example - example-example105-jquery + + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ + + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-production.html new file mode 100644 index 00000000..4b931814 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index-production.html @@ -0,0 +1,43 @@ + + + + + Example - example-example105-production + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ + + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index.html new file mode 100644 index 00000000..6ce34911 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/index.html @@ -0,0 +1,43 @@ + + + + + Example - example-example105 + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+
+ + + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/manifest.json new file mode 100644 index 00000000..37651dcd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example105", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/script.js new file mode 100644 index 00000000..655982a1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/script.js @@ -0,0 +1,18 @@ +(function(angular) { + 'use strict'; +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'; + $scope.reverse = true; + $scope.order = function(predicate) { + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; + $scope.predicate = predicate; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/style.css new file mode 100644 index 00000000..95b1075f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example105/style.css @@ -0,0 +1,6 @@ +.sortorder:after { + content: '\25b2'; +} +.sortorder.reverse:after { + content: '\25bc'; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-debug.html new file mode 100644 index 00000000..14564ebf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-debug.html @@ -0,0 +1,41 @@ + + + + + Example - example-example106-debug + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+ + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-jquery.html new file mode 100644 index 00000000..267d474e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-jquery.html @@ -0,0 +1,42 @@ + + + + + Example - example-example106-jquery + + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+ + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-production.html new file mode 100644 index 00000000..7eccee03 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index-production.html @@ -0,0 +1,41 @@ + + + + + Example - example-example106-production + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+ + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index.html new file mode 100644 index 00000000..e1187795 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/index.html @@ -0,0 +1,41 @@ + + + + + Example - example-example106 + + + + + + + + + + +
+
Sorting predicate = {{predicate}}; reverse = {{reverse}}
+ + + + + + + + + + + +
+ + + + + + + + +
{{friend.name}}{{friend.phone}}{{friend.age}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/manifest.json new file mode 100644 index 00000000..66946313 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example106", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/script.js new file mode 100644 index 00000000..20684554 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/script.js @@ -0,0 +1,20 @@ +(function(angular) { + 'use strict'; +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) { + $scope.predicate = predicate; + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; + $scope.friends = orderBy($scope.friends, predicate, $scope.reverse); + }; + $scope.order('age', true); + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/style.css new file mode 100644 index 00000000..95b1075f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example106/style.css @@ -0,0 +1,6 @@ +.sortorder:after { + content: '\25b2'; +} +.sortorder.reverse:after { + content: '\25bc'; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/http-hello.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/http-hello.html new file mode 100644 index 00000000..7b24164a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/http-hello.html @@ -0,0 +1 @@ +Hello, $http! \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-debug.html new file mode 100644 index 00000000..765813e5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-example107-debug + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-jquery.html new file mode 100644 index 00000000..6f1fa9f3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-example107-jquery + + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-production.html new file mode 100644 index 00000000..28cfcb5b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-example107-production + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index.html new file mode 100644 index 00000000..4ba016b2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-example107 + + + + + + + + + +
+ + +
+ + + +
http status code: {{status}}
+
http response data: {{data}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/manifest.json new file mode 100644 index 00000000..904dcb84 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example107", + "files": [ + "index-production.html", + "script.js", + "http-hello.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/protractor.js new file mode 100644 index 00000000..a350c345 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/script.js new file mode 100644 index 00000000..88063765 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example107/script.js @@ -0,0 +1,28 @@ +(function(angular) { + 'use strict'; +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}). + then(function(response) { + $scope.status = response.status; + $scope.data = response.data; + }, function(response) { + $scope.data = response.data || "Request failed"; + $scope.status = response.status; + }); + }; + + $scope.updateModel = function(method, url) { + $scope.method = method; + $scope.url = url; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-debug.html new file mode 100644 index 00000000..94d9e09b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example108-debug + + + + + + + + +
+

{{apptitle}}: \{\{ username = "defaced value"; \}\} +

+

{{username}} attempts to inject code which will deface the + application, but fails to accomplish their task, because the server has correctly + escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash) + characters.

+

Instead, the result of the attempted script injection is visible, and can be removed + from the database by an administrator.

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-jquery.html new file mode 100644 index 00000000..56768ddc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example108-jquery + + + + + + + + + +
+

{{apptitle}}: \{\{ username = "defaced value"; \}\} +

+

{{username}} attempts to inject code which will deface the + application, but fails to accomplish their task, because the server has correctly + escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash) + characters.

+

Instead, the result of the attempted script injection is visible, and can be removed + from the database by an administrator.

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-production.html new file mode 100644 index 00000000..c1ef8b18 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example108-production + + + + + + + + +
+

{{apptitle}}: \{\{ username = "defaced value"; \}\} +

+

{{username}} attempts to inject code which will deface the + application, but fails to accomplish their task, because the server has correctly + escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash) + characters.

+

Instead, the result of the attempted script injection is visible, and can be removed + from the database by an administrator.

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index.html new file mode 100644 index 00000000..5226b87f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example108 + + + + + + + + +
+

{{apptitle}}: \{\{ username = "defaced value"; \}\} +

+

{{username}} attempts to inject code which will deface the + application, but fails to accomplish their task, because the server has correctly + escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash) + characters.

+

Instead, the result of the attempted script injection is visible, and can be removed + from the database by an administrator.

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/manifest.json new file mode 100644 index 00000000..6cb64aca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example108/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example108", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-debug.html new file mode 100644 index 00000000..df37ca2d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-debug.html @@ -0,0 +1,98 @@ + + + + + Example - example-example109-debug + + + + + + + + + + +
+
+
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-jquery.html new file mode 100644 index 00000000..ef129882 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-jquery.html @@ -0,0 +1,99 @@ + + + + + Example - example-example109-jquery + + + + + + + + + + + +
+
+
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-production.html new file mode 100644 index 00000000..8d6e79c3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index-production.html @@ -0,0 +1,98 @@ + + + + + Example - example-example109-production + + + + + + + + + + +
+
+
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index.html new file mode 100644 index 00000000..80aad488 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/index.html @@ -0,0 +1,98 @@ + + + + + Example - example-example109 + + + + + + + + + + +
+
+
+ Current time is: +
+ Blood 1 : {{blood_1}} + Blood 2 : {{blood_2}} + + + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/manifest.json new file mode 100644 index 00000000..c0d70732 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example109/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example109", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-debug.html new file mode 100644 index 00000000..4c52bc01 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-example11-debug + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-jquery.html new file mode 100644 index 00000000..e1f784b5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-example11-jquery + + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-production.html new file mode 100644 index 00000000..9dfe3f39 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-example11-production + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index.html new file mode 100644 index 00000000..7be6694e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-example11 + + + + + + + + + +
+ Hello
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/manifest.json new file mode 100644 index 00000000..2730b4da --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example11", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/protractor.js new file mode 100644 index 00000000..33dd20e1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/protractor.js @@ -0,0 +1,9 @@ +it('should show off bindings', function() { + var containerElm = element(by.css('div[ng-controller="Controller"]')); + var nameBindings = containerElm.all(by.binding('name')); + + expect(nameBindings.count()).toBe(5); + nameBindings.each(function(elem) { + expect(elem.getText()).toEqual('Max Karl Ernst Ludwig Planck (April 23, 1858 – October 4, 1947)'); + }); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/script.js new file mode 100644 index 00000000..5fedf009 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example11/script.js @@ -0,0 +1,7 @@ +(function(angular) { + 'use strict'; +angular.module('docsBindExample', []) + .controller('Controller', ['$scope', function($scope) { + $scope.name = 'Max Karl Ernst Ludwig Planck (April 23, 1858 – October 4, 1947)'; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-debug.html new file mode 100644 index 00000000..11ed3d8b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-example110-debug + + + + + + + + + +
+

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

+ + + + + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-jquery.html new file mode 100644 index 00000000..b69636ca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-example110-jquery + + + + + + + + + + +
+

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

+ + + + + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-production.html new file mode 100644 index 00000000..e7a66674 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-example110-production + + + + + + + + + +
+

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

+ + + + + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index.html new file mode 100644 index 00000000..70f0c9ff --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-example110 + + + + + + + + + +
+

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

+ + + + + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/manifest.json new file mode 100644 index 00000000..437cd787 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example110", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/script.js new file mode 100644 index 00000000..2f51cab4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example110/script.js @@ -0,0 +1,8 @@ +(function(angular) { + 'use strict'; +angular.module('logExample', []) + .controller('LogController', ['$scope', '$log', function($scope, $log) { + $scope.$log = $log; + $scope.message = 'Hello World!'; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-debug.html new file mode 100644 index 00000000..c346d830 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example111-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-jquery.html new file mode 100644 index 00000000..f78397fd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example111-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-production.html new file mode 100644 index 00000000..f7f27249 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example111-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index.html new file mode 100644 index 00000000..838c550e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example111 + + + + + + + + + + +
+

+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/manifest.json new file mode 100644 index 00000000..896b5797 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example111", + "files": [ + "index-production.html", + "script.js", + "test_data.json", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/protractor.js new file mode 100644 index 00000000..2fea13e4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/script.js new file mode 100644 index 00000000..057e1add --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/script.js @@ -0,0 +1,14 @@ +(function(angular) { + 'use strict'; +angular.module('mySceApp', ['ngSanitize']) + .controller('AppController', ['$http', '$templateCache', '$sce', + function($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.'); + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/test_data.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/test_data.json new file mode 100644 index 00000000..e086b707 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example111/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-debug.html new file mode 100644 index 00000000..bcb5335e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example112-debug + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-jquery.html new file mode 100644 index 00000000..48096c39 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example112-jquery + + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-production.html new file mode 100644 index 00000000..b3ee84eb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example112-production + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index.html new file mode 100644 index 00000000..873b604b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example112 + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/manifest.json new file mode 100644 index 00000000..513e84dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example112", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/protractor.js new file mode 100644 index 00000000..ab3238e8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example112/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-debug.html new file mode 100644 index 00000000..da478276 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-debug.html @@ -0,0 +1,58 @@ + + + + + Example - example-example113-debug + + + + + + + + + + +
+Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithSingleURL | linky:'_blank'">
</div>
+
+
+
linky custom attributes +
<div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-jquery.html new file mode 100644 index 00000000..3491c931 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-jquery.html @@ -0,0 +1,59 @@ + + + + + Example - example-example113-jquery + + + + + + + + + + + +
+Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithSingleURL | linky:'_blank'">
</div>
+
+
+
linky custom attributes +
<div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-production.html new file mode 100644 index 00000000..c69f10c7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index-production.html @@ -0,0 +1,58 @@ + + + + + Example - example-example113-production + + + + + + + + + + +
+Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithSingleURL | linky:'_blank'">
</div>
+
+
+
linky custom attributes +
<div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index.html new file mode 100644 index 00000000..3134f413 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/index.html @@ -0,0 +1,58 @@ + + + + + Example - example-example113 + + + + + + + + + + +
+Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilterSourceRendered
linky filter +
<div ng-bind-html="snippet | linky">
</div>
+
+
+
linky target +
<div ng-bind-html="snippetWithSingleURL | linky:'_blank'">
</div>
+
+
+
linky custom attributes +
<div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}">
</div>
+
+
+
no filter
<div ng-bind="snippet">
</div>
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/manifest.json new file mode 100644 index 00000000..1815b1d4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example113", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/protractor.js new file mode 100644 index 00000000..b13150ff --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/protractor.js @@ -0,0 +1,37 @@ +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("snippetWithSingleURL | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); +}); + +it('should optionally add custom attributes', function() { + expect(element(by.id('linky-custom-attributes')). + element(by.binding("snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/script.js new file mode 100644 index 00000000..352d0c5f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example113/script.js @@ -0,0 +1,13 @@ +(function(angular) { + 'use strict'; +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.snippetWithSingleURL = 'http://angularjs.org/'; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-debug.html new file mode 100644 index 00000000..fe48aeaa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-debug.html @@ -0,0 +1,60 @@ + + + + + Example - example-example114-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-jquery.html new file mode 100644 index 00000000..13849c13 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-jquery.html @@ -0,0 +1,61 @@ + + + + + Example - example-example114-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-production.html new file mode 100644 index 00000000..d91d206d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index-production.html @@ -0,0 +1,60 @@ + + + + + Example - example-example114-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index.html new file mode 100644 index 00000000..bc516961 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/index.html @@ -0,0 +1,60 @@ + + + + + Example - example-example114 + + + + + + + + + + +
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/manifest.json new file mode 100644 index 00000000..36adf1b9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example114", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/protractor.js new file mode 100644 index 00000000..41a33700 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example114/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-debug.html new file mode 100644 index 00000000..ace0c089 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example115-debug + + + + + + + + + + + +count: {{ count }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-jquery.html new file mode 100644 index 00000000..f36d49a0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example115-jquery + + + + + + + + + + + + +count: {{ count }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-production.html new file mode 100644 index 00000000..614d5373 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example115-production + + + + + + + + + + + +count: {{ count }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index.html new file mode 100644 index 00000000..3c4f3851 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example115 + + + + + + + + + + + +count: {{ count }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/manifest.json new file mode 100644 index 00000000..1c6496a2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example115", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/script.js new file mode 100644 index 00000000..888cebe1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example115/script.js @@ -0,0 +1,4 @@ +(function(angular) { + 'use strict'; +angular.module('ngClickExample', ['ngTouch']); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-debug.html new file mode 100644 index 00000000..ce5d4de3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-example116-debug + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-jquery.html new file mode 100644 index 00000000..cebe7934 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-example116-jquery + + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-production.html new file mode 100644 index 00000000..adc153ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-example116-production + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index.html new file mode 100644 index 00000000..a8274ec8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-example116 + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/manifest.json new file mode 100644 index 00000000..ac9df8d5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example116", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/script.js new file mode 100644 index 00000000..0e581c2c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example116/script.js @@ -0,0 +1,4 @@ +(function(angular) { + 'use strict'; +angular.module('ngSwipeLeftExample', ['ngTouch']); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-debug.html new file mode 100644 index 00000000..4c8a76da --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-example117-debug + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-jquery.html new file mode 100644 index 00000000..cab7676d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-example117-jquery + + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-production.html new file mode 100644 index 00000000..94bdd667 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-example117-production + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index.html new file mode 100644 index 00000000..00c85ca2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-example117 + + + + + + + + + + +
+ Some list content, like an email in the inbox +
+
+ + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/manifest.json new file mode 100644 index 00000000..2f9f3150 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example117", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/script.js new file mode 100644 index 00000000..3ad5afc0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example117/script.js @@ -0,0 +1,4 @@ +(function(angular) { + 'use strict'; +angular.module('ngSwipeRightExample', ['ngTouch']); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-debug.html new file mode 100644 index 00000000..af4542c9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example12-debug + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-jquery.html new file mode 100644 index 00000000..1d409abc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example12-jquery + + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-production.html new file mode 100644 index 00000000..d412ee94 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example12-production + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index.html new file mode 100644 index 00000000..47aa51e3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example12 + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/manifest.json new file mode 100644 index 00000000..e6ff6c53 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example12", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/script.js new file mode 100644 index 00000000..0fe2f237 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example12/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +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}}' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-debug.html new file mode 100644 index 00000000..df02216d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example13-debug + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-jquery.html new file mode 100644 index 00000000..88677b45 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example13-jquery + + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-production.html new file mode 100644 index 00000000..d8b967ae --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example13-production + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index.html new file mode 100644 index 00000000..6834623f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example13 + + + + + + + + + +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/manifest.json new file mode 100644 index 00000000..8fdb5a9b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example13", + "files": [ + "index-production.html", + "script.js", + "my-customer.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/my-customer.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/my-customer.html new file mode 100644 index 00000000..ccf1430d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/my-customer.html @@ -0,0 +1 @@ +Name: {{customer.name}} Address: {{customer.address}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/script.js new file mode 100644 index 00000000..7b32fb42 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example13/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +angular.module('docsTemplateUrlDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.customer = { + name: 'Naomi', + address: '1600 Amphitheatre' + }; + }]) + .directive('myCustomer', function() { + return { + templateUrl: 'my-customer.html' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/customer-address.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/customer-address.html new file mode 100644 index 00000000..8cd30b97 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/customer-address.html @@ -0,0 +1 @@ +Address: {{customer.address}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/customer-name.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/customer-name.html new file mode 100644 index 00000000..2ef7e7ca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/customer-name.html @@ -0,0 +1 @@ +Name: {{customer.name}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-debug.html new file mode 100644 index 00000000..a9f0e7e2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example14-debug + + + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-jquery.html new file mode 100644 index 00000000..a6a8e323 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example14-jquery + + + + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-production.html new file mode 100644 index 00000000..3a7b70aa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example14-production + + + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index.html new file mode 100644 index 00000000..af4d7e0b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example14 + + + + + + + + + +
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/manifest.json new file mode 100644 index 00000000..47ef68ff --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example14", + "files": [ + "index-production.html", + "script.js", + "customer-name.html", + "customer-address.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/script.js new file mode 100644 index 00000000..b564c82e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example14/script.js @@ -0,0 +1,17 @@ +(function(angular) { + 'use strict'; +angular.module('docsTemplateUrlDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.customer = { + name: 'Naomi', + address: '1600 Amphitheatre' + }; + }]) + .directive('myCustomer', function() { + return { + templateUrl: function(elem, attr){ + return 'customer-'+attr.type+'.html'; + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-debug.html new file mode 100644 index 00000000..16873723 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example15-debug + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-jquery.html new file mode 100644 index 00000000..85aa9bc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example15-jquery + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-production.html new file mode 100644 index 00000000..bffb5ce8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example15-production + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index.html new file mode 100644 index 00000000..6b134304 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example15 + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/manifest.json new file mode 100644 index 00000000..8e43cef1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example15", + "files": [ + "index-production.html", + "script.js", + "my-customer.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/my-customer.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/my-customer.html new file mode 100644 index 00000000..ccf1430d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/my-customer.html @@ -0,0 +1 @@ +Name: {{customer.name}} Address: {{customer.address}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/script.js new file mode 100644 index 00000000..8e601cc9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example15/script.js @@ -0,0 +1,16 @@ +(function(angular) { + 'use strict'; +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' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-debug.html new file mode 100644 index 00000000..dbd498f9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example16-debug + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-jquery.html new file mode 100644 index 00000000..02a31926 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example16-jquery + + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-production.html new file mode 100644 index 00000000..b7829a0a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example16-production + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index.html new file mode 100644 index 00000000..e51a3d58 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example16 + + + + + + + + + +
+ +
+
+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/manifest.json new file mode 100644 index 00000000..723b4dc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example16", + "files": [ + "index-production.html", + "script.js", + "my-customer.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/my-customer.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/my-customer.html new file mode 100644 index 00000000..ccf1430d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/my-customer.html @@ -0,0 +1 @@ +Name: {{customer.name}} Address: {{customer.address}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/script.js new file mode 100644 index 00000000..b7836f0f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example16/script.js @@ -0,0 +1,22 @@ +(function(angular) { + 'use strict'; +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' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-debug.html new file mode 100644 index 00000000..5547484f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example17-debug + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-jquery.html new file mode 100644 index 00000000..ed1b466f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example17-jquery + + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-production.html new file mode 100644 index 00000000..621ba79c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example17-production + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index.html new file mode 100644 index 00000000..4ef39d2f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example17 + + + + + + + + + +
+ +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/manifest.json new file mode 100644 index 00000000..0d392dea --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example17", + "files": [ + "index-production.html", + "script.js", + "my-customer-iso.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/my-customer-iso.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/my-customer-iso.html new file mode 100644 index 00000000..05dbcffa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/my-customer-iso.html @@ -0,0 +1 @@ +Name: {{customerInfo.name}} Address: {{customerInfo.address}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/script.js new file mode 100644 index 00000000..32214a33 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example17/script.js @@ -0,0 +1,17 @@ +(function(angular) { + 'use strict'; +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' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-debug.html new file mode 100644 index 00000000..42c9b589 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example18-debug + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-jquery.html new file mode 100644 index 00000000..488e1a87 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example18-jquery + + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-production.html new file mode 100644 index 00000000..f1e0aed1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example18-production + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index.html new file mode 100644 index 00000000..90427d80 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example18 + + + + + + + + + +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/manifest.json new file mode 100644 index 00000000..0ed2822b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example18", + "files": [ + "index-production.html", + "script.js", + "my-customer-plus-vojta.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/my-customer-plus-vojta.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/my-customer-plus-vojta.html new file mode 100644 index 00000000..8e357242 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/script.js new file mode 100644 index 00000000..e7dcebd5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example18/script.js @@ -0,0 +1,17 @@ +(function(angular) { + 'use strict'; +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' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-debug.html new file mode 100644 index 00000000..8c7543e0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example19-debug + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-jquery.html new file mode 100644 index 00000000..238716fc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example19-jquery + + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-production.html new file mode 100644 index 00000000..10cedfe3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example19-production + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index.html new file mode 100644 index 00000000..9de1c1ea --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example19 + + + + + + + + + +
+ Date format:
+ Current time is: +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/manifest.json new file mode 100644 index 00000000..3e457f90 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example19", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/script.js new file mode 100644 index 00000000..e8b422fc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example19/script.js @@ -0,0 +1,36 @@ +(function(angular) { + 'use strict'; +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 + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-debug.html new file mode 100644 index 00000000..01ca057c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-example2-debug + + + + + + + + + + + +
+ + + Custom Checkbox + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-jquery.html new file mode 100644 index 00000000..4232f69b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-example2-jquery + + + + + + + + + + + + +
+ + + Custom Checkbox + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-production.html new file mode 100644 index 00000000..a683ddfd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-example2-production + + + + + + + + + + + +
+ + + Custom Checkbox + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index.html new file mode 100644 index 00000000..6c96546b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-example2 + + + + + + + + + + + +
+ + + Custom Checkbox + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/manifest.json new file mode 100644 index 00000000..15c820fe --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example2", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/script.js new file mode 100644 index 00000000..e8d4052b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/script.js @@ -0,0 +1,41 @@ +(function(angular) { + 'use strict'; +var app = angular.module('ngAria_ngModelExample', ['ngAria']) +.controller('formsController', function($scope){ + $scope.checked = false; + $scope.toggleCheckbox = function(){ + $scope.checked = !$scope.checked; + }; +}) +.directive('someCheckbox', function(){ + return { + restrict: 'E', + link: function($scope, $el, $attrs) { + $el.on('keypress', function(event){ + event.preventDefault(); + if(event.keyCode === 32 || event.keyCode === 13){ + $scope.toggleCheckbox(); + $scope.$apply(); + } + }); + } + }; +}) +.directive('showAttrs', function() { + return function($scope, $el, $attrs) { + var pre = document.createElement('pre'); + $el.after(pre); + $scope.$watch(function() { + var $attrs = {}; + Array.prototype.slice.call($el[0].attributes, 0).forEach(function(item) { + if (item.name !== 'show-$attrs') { + $attrs[item.name] = item.value; + } + }); + return $attrs; + }, function(newAttrs, oldAttrs) { + pre.textContent = JSON.stringify(newAttrs, null, 2); + }, true); + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/style.css new file mode 100644 index 00000000..16cfe7c0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example2/style.css @@ -0,0 +1,18 @@ +[role=checkbox] { + cursor: pointer; + display: inline-block; +} +[role=checkbox] .icon:before { + content: '\2610'; + display: inline-block; + font-size: 2em; + line-height: 1; + vertical-align: middle; + speak: none; +} +[role=checkbox].active .icon:before { + content: '\2611'; +} +pre { + white-space: pre-wrap; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-debug.html new file mode 100644 index 00000000..1d36acbf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example20-debug + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-jquery.html new file mode 100644 index 00000000..ca57207d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example20-jquery + + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-production.html new file mode 100644 index 00000000..5f7587b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example20-production + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index.html new file mode 100644 index 00000000..2eb53681 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example20 + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/manifest.json new file mode 100644 index 00000000..11f231c2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example20", + "files": [ + "index-production.html", + "script.js", + "my-dialog.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/my-dialog.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/my-dialog.html new file mode 100644 index 00000000..d32089bf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/my-dialog.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/script.js new file mode 100644 index 00000000..8dac254d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example20/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +angular.module('docsTransclusionDirective', []) + .controller('Controller', ['$scope', function($scope) { + $scope.name = 'Tobias'; + }]) + .directive('myDialog', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + templateUrl: 'my-dialog.html' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-debug.html new file mode 100644 index 00000000..b71508e4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example21-debug + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-jquery.html new file mode 100644 index 00000000..a4f13d65 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example21-jquery + + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-production.html new file mode 100644 index 00000000..769cc575 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example21-production + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index.html new file mode 100644 index 00000000..4b4eeba2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example21 + + + + + + + + + +
+ Check out the contents, {{name}}! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/manifest.json new file mode 100644 index 00000000..85c411ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example21", + "files": [ + "index-production.html", + "script.js", + "my-dialog.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/my-dialog.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/my-dialog.html new file mode 100644 index 00000000..d32089bf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/my-dialog.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/script.js new file mode 100644 index 00000000..9fc83962 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example21/script.js @@ -0,0 +1,18 @@ +(function(angular) { + 'use strict'; +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) { + scope.name = 'Jeff'; + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-debug.html new file mode 100644 index 00000000..025d1f87 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example22-debug + + + + + + + + + +
+ {{message}} + + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-jquery.html new file mode 100644 index 00000000..ac786573 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example22-jquery + + + + + + + + + + +
+ {{message}} + + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-production.html new file mode 100644 index 00000000..fbb4e30b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example22-production + + + + + + + + + +
+ {{message}} + + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index.html new file mode 100644 index 00000000..31101484 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example22 + + + + + + + + + +
+ {{message}} + + Check out the contents, {{name}}! + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/manifest.json new file mode 100644 index 00000000..2adc5784 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example22", + "files": [ + "index-production.html", + "script.js", + "my-dialog-close.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/my-dialog-close.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/my-dialog-close.html new file mode 100644 index 00000000..e38f28f7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/my-dialog-close.html @@ -0,0 +1,4 @@ +
+ × +
+
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/script.js new file mode 100644 index 00000000..28916d45 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example22/script.js @@ -0,0 +1,26 @@ +(function(angular) { + 'use strict'; +angular.module('docsIsoFnBindExample', []) + .controller('Controller', ['$scope', '$timeout', function($scope, $timeout) { + $scope.name = 'Tobias'; + $scope.message = ''; + $scope.hideDialog = function (message) { + $scope.message = message; + $scope.dialogIsHidden = true; + $timeout(function () { + $scope.message = ''; + $scope.dialogIsHidden = false; + }, 2000); + }; + }]) + .directive('myDialog', function() { + return { + restrict: 'E', + transclude: true, + scope: { + 'close': '&onClose' + }, + templateUrl: 'my-dialog-close.html' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-debug.html new file mode 100644 index 00000000..d79766b8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example23-debug + + + + + + + + + + Drag Me + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-jquery.html new file mode 100644 index 00000000..56858fd6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example23-jquery + + + + + + + + + + + Drag Me + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-production.html new file mode 100644 index 00000000..4508fb9b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example23-production + + + + + + + + + + Drag Me + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index.html new file mode 100644 index 00000000..d7c5f2cf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example23 + + + + + + + + + + Drag Me + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/manifest.json new file mode 100644 index 00000000..36357818 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/script.js new file mode 100644 index 00000000..aa558501 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example23/script.js @@ -0,0 +1,41 @@ +(function(angular) { + 'use strict'; +angular.module('dragModule', []) + .directive('myDraggable', ['$document', function($document) { + return { + link: 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.off('mousemove', mousemove); + $document.off('mouseup', mouseup); + } + } + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-debug.html new file mode 100644 index 00000000..e54dbf50 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example24-debug + + + + + + + + + + + +

Lorem ipsum dolor sit amet

+
+ + Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-jquery.html new file mode 100644 index 00000000..cb5c0a8c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example24-jquery + + + + + + + + + + + + +

Lorem ipsum dolor sit amet

+
+ + Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-production.html new file mode 100644 index 00000000..3bcac304 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example24-production + + + + + + + + + + + +

Lorem ipsum dolor sit amet

+
+ + Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index.html new file mode 100644 index 00000000..9c8cb99d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example24 + + + + + + + + + + + +

Lorem ipsum dolor sit amet

+
+ + Mauris elementum elementum enim at suscipit. +

counter: {{i || 0}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/manifest.json new file mode 100644 index 00000000..01b5ddf7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example24", + "files": [ + "index-production.html", + "script.js", + "my-tabs.html", + "my-pane.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/my-pane.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/my-pane.html new file mode 100644 index 00000000..71284f7b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/my-pane.html @@ -0,0 +1,4 @@ +
+

{{title}}

+
+
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/my-tabs.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/my-tabs.html new file mode 100644 index 00000000..38c81a69 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/my-tabs.html @@ -0,0 +1,8 @@ +
+ +
+
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/script.js new file mode 100644 index 00000000..7420a253 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example24/script.js @@ -0,0 +1,43 @@ +(function(angular) { + 'use strict'; +angular.module('docsTabsExample', []) + .directive('myTabs', function() { + return { + restrict: 'E', + transclude: true, + scope: {}, + controller: ['$scope', 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' + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-debug.html new file mode 100644 index 00000000..74a115c4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-debug.html @@ -0,0 +1,18 @@ + + + + + Example - example-example25-debug + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-jquery.html new file mode 100644 index 00000000..b0f25dc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-jquery.html @@ -0,0 +1,19 @@ + + + + + Example - example-example25-jquery + + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-production.html new file mode 100644 index 00000000..4d51bce2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index-production.html @@ -0,0 +1,18 @@ + + + + + Example - example-example25-production + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index.html new file mode 100644 index 00000000..af970832 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/index.html @@ -0,0 +1,18 @@ + + + + + Example - example-example25 + + + + + + + + + + 1+2={{1+2}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/manifest.json new file mode 100644 index 00000000..81a8f894 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example25", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/protractor.js new file mode 100644 index 00000000..045a6cf6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example25/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-debug.html new file mode 100644 index 00000000..79f44c84 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example26-debug + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-jquery.html new file mode 100644 index 00000000..962901c4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example26-jquery + + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-production.html new file mode 100644 index 00000000..3cb2f78a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example26-production + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index.html new file mode 100644 index 00000000..ad5f07d9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example26 + + + + + + + + + +
+ Expression: + + +
    +
  • + [ X ] + {{expr}} => +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/manifest.json new file mode 100644 index 00000000..3ecaf243 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example26", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/protractor.js new file mode 100644 index 00000000..f1a99715 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/script.js new file mode 100644 index 00000000..8d7394e8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example26/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +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); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-debug.html new file mode 100644 index 00000000..7ba7a039 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example27-debug + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-jquery.html new file mode 100644 index 00000000..bb164212 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example27-jquery + + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-production.html new file mode 100644 index 00000000..f9028e9a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example27-production + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index.html new file mode 100644 index 00000000..75e11795 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example27 + + + + + + + + + +
+ Name: + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/manifest.json new file mode 100644 index 00000000..84f6ded3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example27", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/protractor.js new file mode 100644 index 00000000..a90ba102 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/protractor.js @@ -0,0 +1,16 @@ +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(); + + // We need to give the browser time to display the alert + browser.wait(protractor.ExpectedConditions.alertIsPresent(), 1000); + + var alertDialog = browser.switchTo().alert(); + + expect(alertDialog.getText()).toEqual('Hello World'); + + alertDialog.accept(); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/script.js new file mode 100644 index 00000000..3b0967a0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example27/script.js @@ -0,0 +1,11 @@ +(function(angular) { + 'use strict'; +angular.module('expressionExample', []) + .controller('ExampleController', ['$window', '$scope', function($window, $scope) { + $scope.name = 'World'; + + $scope.greet = function() { + $window.alert('Hello ' + $scope.name); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-debug.html new file mode 100644 index 00000000..e6a34261 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example28-debug + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-jquery.html new file mode 100644 index 00000000..fb3d1e7a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example28-jquery + + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-production.html new file mode 100644 index 00000000..cd3b97b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example28-production + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index.html new file mode 100644 index 00000000..0a7ff7e9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example28 + + + + + + + + + +
+ +

$event:

 {{$event | json}}

+

clickEvent:

{{clickEvent | json}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/manifest.json new file mode 100644 index 00000000..0346e5b5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/script.js new file mode 100644 index 00000000..02caac17 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example28/script.js @@ -0,0 +1,24 @@ +(function(angular) { + 'use strict'; +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; + }, {}); + } + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-debug.html new file mode 100644 index 00000000..b2026fef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example29-debug + + + + + + + + + +
+ +

One time binding: {{::name}}

+

Normal binding: {{name}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-jquery.html new file mode 100644 index 00000000..97315a46 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example29-jquery + + + + + + + + + + +
+ +

One time binding: {{::name}}

+

Normal binding: {{name}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-production.html new file mode 100644 index 00000000..923c517a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example29-production + + + + + + + + + +
+ +

One time binding: {{::name}}

+

Normal binding: {{name}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index.html new file mode 100644 index 00000000..3680e724 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example29 + + + + + + + + + +
+ +

One time binding: {{::name}}

+

Normal binding: {{name}}

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/manifest.json new file mode 100644 index 00000000..c074528c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example29", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/protractor.js new file mode 100644 index 00000000..639ff0b3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/protractor.js @@ -0,0 +1,21 @@ +it('should freeze binding after its value has stabilized', function() { + var oneTimeBiding = element(by.id('one-time-binding-example')); + var normalBinding = element(by.id('normal-binding-example')); + + expect(oneTimeBiding.getText()).toEqual('One time binding:'); + expect(normalBinding.getText()).toEqual('Normal binding:'); + element(by.buttonText('Click Me')).click(); + + expect(oneTimeBiding.getText()).toEqual('One time binding: Igor'); + expect(normalBinding.getText()).toEqual('Normal binding: Igor'); + element(by.buttonText('Click Me')).click(); + + expect(oneTimeBiding.getText()).toEqual('One time binding: Igor'); + expect(normalBinding.getText()).toEqual('Normal binding: Misko'); + + element(by.buttonText('Click Me')).click(); + element(by.buttonText('Click Me')).click(); + + expect(oneTimeBiding.getText()).toEqual('One time binding: Igor'); + expect(normalBinding.getText()).toEqual('Normal binding: Lucas'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/script.js new file mode 100644 index 00000000..07e17a76 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example29/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +angular.module('oneTimeBidingExampleApp', []). + controller('EventController', ['$scope', function($scope) { + var counter = 0; + var names = ['Igor', 'Misko', 'Chirayu', 'Lucas']; + /* + * expose the event object to the scope + */ + $scope.clickMe = function(clickEvent) { + $scope.name = names[counter % names.length]; + counter++; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-debug.html new file mode 100644 index 00000000..7d38ecef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-debug.html @@ -0,0 +1,44 @@ + + + + + Example - example-example3-debug + + + + + + + + + +
+ <div> with ng-click and bindRoleForClick, tabindex set to false +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-jquery.html new file mode 100644 index 00000000..1dab3176 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-jquery.html @@ -0,0 +1,45 @@ + + + + + Example - example-example3-jquery + + + + + + + + + + +
+ <div> with ng-click and bindRoleForClick, tabindex set to false +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-production.html new file mode 100644 index 00000000..14a94fea --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index-production.html @@ -0,0 +1,44 @@ + + + + + Example - example-example3-production + + + + + + + + + +
+ <div> with ng-click and bindRoleForClick, tabindex set to false +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index.html new file mode 100644 index 00000000..37907c93 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/index.html @@ -0,0 +1,44 @@ + + + + + Example - example-example3 + + + + + + + + + +
+ <div> with ng-click and bindRoleForClick, tabindex set to false +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/manifest.json new file mode 100644 index 00000000..6247aa8e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example3/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example3", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-debug.html new file mode 100644 index 00000000..e391df3d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-example30-debug + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-jquery.html new file mode 100644 index 00000000..7bad3493 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-example30-jquery + + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-production.html new file mode 100644 index 00000000..4e30bd1f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-example30-production + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index.html new file mode 100644 index 00000000..a42d1ab7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-example30 + + + + + + + + + +
+
+ All entries: + {{entry.name}} +
+
+ Entries that contain an "a": + {{entry.name}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/manifest.json new file mode 100644 index 00000000..af950406 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/script.js new file mode 100644 index 00000000..233f44ac --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example30/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +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'); + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-debug.html new file mode 100644 index 00000000..c6303dd4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example31-debug + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+ Reverse, filtered in controller: {{filteredGreeting}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-jquery.html new file mode 100644 index 00000000..c9561575 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example31-jquery + + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+ Reverse, filtered in controller: {{filteredGreeting}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-production.html new file mode 100644 index 00000000..8b444bf9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example31-production + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+ Reverse, filtered in controller: {{filteredGreeting}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index.html new file mode 100644 index 00000000..9955261f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example31 + + + + + + + + + +
+
+ No filter: {{greeting}}
+ Reverse: {{greeting|reverse}}
+ Reverse + uppercase: {{greeting|reverse:true}}
+ Reverse, filtered in controller: {{filteredGreeting}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/manifest.json new file mode 100644 index 00000000..ad4dd988 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example31", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/script.js new file mode 100644 index 00000000..11a155a7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example31/script.js @@ -0,0 +1,22 @@ +(function(angular) { + 'use strict'; +angular.module('myReverseFilterApp', []) + .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('MyController', ['$scope', 'reverseFilter', function($scope, reverseFilter) { + $scope.greeting = 'hello'; + $scope.filteredGreeting = reverseFilter($scope.greeting); + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-debug.html new file mode 100644 index 00000000..24b3be09 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example32-debug + + + + + + + + + +
+ Input:
+ Decoration:
+ No filter: {{greeting}}
+ Decorated: {{greeting | decorate}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-jquery.html new file mode 100644 index 00000000..470874e1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example32-jquery + + + + + + + + + + +
+ Input:
+ Decoration:
+ No filter: {{greeting}}
+ Decorated: {{greeting | decorate}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-production.html new file mode 100644 index 00000000..5033b71a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example32-production + + + + + + + + + +
+ Input:
+ Decoration:
+ No filter: {{greeting}}
+ Decorated: {{greeting | decorate}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index.html new file mode 100644 index 00000000..55495af4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example32 + + + + + + + + + +
+ Input:
+ Decoration:
+ No filter: {{greeting}}
+ Decorated: {{greeting | decorate}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/manifest.json new file mode 100644 index 00000000..1e8c7c99 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example32", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/script.js new file mode 100644 index 00000000..664b51b6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example32/script.js @@ -0,0 +1,18 @@ +(function(angular) { + 'use strict'; +angular.module('myStatefulFilterApp', []) + .filter('decorate', ['decoration', function(decoration) { + + function decorateFilter(input) { + return decoration.symbol + input + decoration.symbol; + } + decorateFilter.$stateful = true; + + return decorateFilter; + }]) + .controller('MyController', ['$scope', 'decoration', function($scope, decoration) { + $scope.greeting = 'hello'; + $scope.decoration = decoration; + }]) + .value('decoration', {symbol: '*'}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-debug.html new file mode 100644 index 00000000..1acd7e72 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-debug.html @@ -0,0 +1,44 @@ + + + + + Example - example-example33-debug + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-jquery.html new file mode 100644 index 00000000..6368b630 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-jquery.html @@ -0,0 +1,45 @@ + + + + + Example - example-example33-jquery + + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-production.html new file mode 100644 index 00000000..cfdd94a8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index-production.html @@ -0,0 +1,44 @@ + + + + + Example - example-example33-production + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index.html new file mode 100644 index 00000000..25998ec3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/index.html @@ -0,0 +1,44 @@ + + + + + Example - example-example33 + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/manifest.json new file mode 100644 index 00000000..be9db818 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example33/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example33", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-debug.html new file mode 100644 index 00000000..99612599 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-debug.html @@ -0,0 +1,54 @@ + + + + + Example - example-example34-debug + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-jquery.html new file mode 100644 index 00000000..ebebd292 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-jquery.html @@ -0,0 +1,55 @@ + + + + + Example - example-example34-jquery + + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-production.html new file mode 100644 index 00000000..808316b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index-production.html @@ -0,0 +1,54 @@ + + + + + Example - example-example34-production + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index.html new file mode 100644 index 00000000..a8995a0e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/index.html @@ -0,0 +1,54 @@ + + + + + Example - example-example34 + + + + + + + + +
+
+ Name:
+ E-mail:
+ Gender: male + female
+ + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/manifest.json new file mode 100644 index 00000000..cc7622ae --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example34/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example34", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-debug.html new file mode 100644 index 00000000..39c37fe2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-debug.html @@ -0,0 +1,52 @@ + + + + + Example - example-example35-debug + + + + + + + + + +
+
+ Name: + +
+
+
Tell us your name.
+
+ + E-mail: + +
+
+ Tell us your email. + This is not a valid email. +
+ + Gender: + male + female +
+ + + I agree: + +
+
+
Please agree and sign.
+
+ + + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-jquery.html new file mode 100644 index 00000000..6ba9eca5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-jquery.html @@ -0,0 +1,53 @@ + + + + + Example - example-example35-jquery + + + + + + + + + + +
+
+ Name: + +
+
+
Tell us your name.
+
+ + E-mail: + +
+
+ Tell us your email. + This is not a valid email. +
+ + Gender: + male + female +
+ + + I agree: + +
+
+
Please agree and sign.
+
+ + + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-production.html new file mode 100644 index 00000000..351581d8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index-production.html @@ -0,0 +1,52 @@ + + + + + Example - example-example35-production + + + + + + + + + +
+
+ Name: + +
+
+
Tell us your name.
+
+ + E-mail: + +
+
+ Tell us your email. + This is not a valid email. +
+ + Gender: + male + female +
+ + + I agree: + +
+
+
Please agree and sign.
+
+ + + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index.html new file mode 100644 index 00000000..7ac86e65 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/index.html @@ -0,0 +1,52 @@ + + + + + Example - example-example35 + + + + + + + + + +
+
+ Name: + +
+
+
Tell us your name.
+
+ + E-mail: + +
+
+ Tell us your email. + This is not a valid email. +
+ + Gender: + male + female +
+ + + I agree: + +
+
+
Please agree and sign.
+
+ + + +
+
user = {{user | json}}
+
master = {{master | json}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/manifest.json new file mode 100644 index 00000000..1b72f83f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/script.js new file mode 100644 index 00000000..dcbb0a56 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example35/script.js @@ -0,0 +1,21 @@ +(function(angular) { + 'use strict'; +angular.module('formExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.master = {}; + + $scope.update = function(user) { + $scope.master = angular.copy(user); + }; + + $scope.reset = function(form) { + if (form) { + form.$setPristine(); + form.$setUntouched(); + } + $scope.user = angular.copy($scope.master); + }; + + $scope.reset(); + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-debug.html new file mode 100644 index 00000000..a1b75ecf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-example36-debug + + + + + + + + + +
+
+ Name: +
+ Other data: +
+
+
username = "{{user.name}}"
+
userdata = "{{user.data}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-jquery.html new file mode 100644 index 00000000..e27a1b43 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-example36-jquery + + + + + + + + + + +
+
+ Name: +
+ Other data: +
+
+
username = "{{user.name}}"
+
userdata = "{{user.data}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-production.html new file mode 100644 index 00000000..8f2a76ac --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-example36-production + + + + + + + + + +
+
+ Name: +
+ Other data: +
+
+
username = "{{user.name}}"
+
userdata = "{{user.data}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index.html new file mode 100644 index 00000000..57b00db2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-example36 + + + + + + + + + +
+
+ Name: +
+ Other data: +
+
+
username = "{{user.name}}"
+
userdata = "{{user.data}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/manifest.json new file mode 100644 index 00000000..d249fa6c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example36", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/script.js new file mode 100644 index 00000000..4663d8f0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example36/script.js @@ -0,0 +1,7 @@ +(function(angular) { + 'use strict'; +angular.module('customTriggerExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.user = {}; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-debug.html new file mode 100644 index 00000000..f39770a4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example37-debug + + + + + + + + + +
+
+ Name: +
+
+
username = "{{user.name}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-jquery.html new file mode 100644 index 00000000..cf3363df --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example37-jquery + + + + + + + + + + +
+
+ Name: +
+
+
username = "{{user.name}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-production.html new file mode 100644 index 00000000..93751c7e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example37-production + + + + + + + + + +
+
+ Name: +
+
+
username = "{{user.name}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index.html new file mode 100644 index 00000000..46b65847 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example37 + + + + + + + + + +
+
+ Name: +
+
+
username = "{{user.name}}"
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/manifest.json new file mode 100644 index 00000000..d3a3b544 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/script.js new file mode 100644 index 00000000..1ba36d63 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example37/script.js @@ -0,0 +1,7 @@ +(function(angular) { + 'use strict'; +angular.module('debounceExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.user = {}; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-debug.html new file mode 100644 index 00000000..811b85a1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-example38-debug + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ The value is not a valid integer! + + The value must be in range 0 to 10! +
+ +
+ Username: + {{name}}
+ Checking if this name is available... + This username is already taken! +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-jquery.html new file mode 100644 index 00000000..c50989fc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-example38-jquery + + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ The value is not a valid integer! + + The value must be in range 0 to 10! +
+ +
+ Username: + {{name}}
+ Checking if this name is available... + This username is already taken! +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-production.html new file mode 100644 index 00000000..32016d7e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-example38-production + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ The value is not a valid integer! + + The value must be in range 0 to 10! +
+ +
+ Username: + {{name}}
+ Checking if this name is available... + This username is already taken! +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index.html new file mode 100644 index 00000000..3ffac485 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-example38 + + + + + + + + + +
+
+ Size (integer 0 - 10): + {{size}}
+ The value is not a valid integer! + + The value must be in range 0 to 10! +
+ +
+ Username: + {{name}}
+ Checking if this name is available... + This username is already taken! +
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/manifest.json new file mode 100644 index 00000000..881bd28c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example38", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/script.js new file mode 100644 index 00000000..603cf081 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example38/script.js @@ -0,0 +1,59 @@ +(function(angular) { + 'use strict'; +var app = angular.module('form-example1', []); + +var INTEGER_REGEXP = /^\-?\d+$/; +app.directive('integer', function() { + return { + require: 'ngModel', + link: function(scope, elm, attrs, ctrl) { + ctrl.$validators.integer = function(modelValue, viewValue) { + if (ctrl.$isEmpty(modelValue)) { + // consider empty models to be valid + return true; + } + + if (INTEGER_REGEXP.test(viewValue)) { + // it is valid + return true; + } + + // it is invalid + return false; + }; + } + }; +}); + +app.directive('username', function($q, $timeout) { + return { + require: 'ngModel', + link: function(scope, elm, attrs, ctrl) { + var usernames = ['Jim', 'John', 'Jill', 'Jackie']; + + ctrl.$asyncValidators.username = function(modelValue, viewValue) { + + if (ctrl.$isEmpty(modelValue)) { + // consider empty model valid + return $q.when(); + } + + var def = $q.defer(); + + $timeout(function() { + // Mock a delayed response + if (usernames.indexOf(modelValue) === -1) { + // The username is available + def.resolve(); + } else { + def.reject(); + } + + }, 2000); + + return def.promise; + }; + } + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-debug.html new file mode 100644 index 00000000..f0fc4ffa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-debug.html @@ -0,0 +1,24 @@ + + + + + Example - example-example39-debug + + + + + + + + + +
+
+ Overwritten Email: + + This email format is invalid!
+ Model: {{myEmail}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-jquery.html new file mode 100644 index 00000000..bde09372 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-jquery.html @@ -0,0 +1,25 @@ + + + + + Example - example-example39-jquery + + + + + + + + + + +
+
+ Overwritten Email: + + This email format is invalid!
+ Model: {{myEmail}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-production.html new file mode 100644 index 00000000..d66dcf97 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index-production.html @@ -0,0 +1,24 @@ + + + + + Example - example-example39-production + + + + + + + + + +
+
+ Overwritten Email: + + This email format is invalid!
+ Model: {{myEmail}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index.html new file mode 100644 index 00000000..b47bdc6b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/index.html @@ -0,0 +1,24 @@ + + + + + Example - example-example39 + + + + + + + + + +
+
+ Overwritten Email: + + This email format is invalid!
+ Model: {{myEmail}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/manifest.json new file mode 100644 index 00000000..46e0f6fa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/script.js new file mode 100644 index 00000000..3926a5b6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example39/script.js @@ -0,0 +1,22 @@ +(function(angular) { + 'use strict'; +var app = angular.module('form-example-modify-validators', []); + +app.directive('overwriteEmail', function() { + var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@example\.com$/i; + + return { + require: '?ngModel', + link: function(scope, elm, attrs, ctrl) { + // only apply the validator if ngModel is present and Angular has added the email validator + if (ctrl && ctrl.$validators.email) { + + // this will overwrite the default Angular email validator + ctrl.$validators.email = function(modelValue) { + return ctrl.$isEmpty(modelValue) || EMAIL_REGEXP.test(modelValue); + }; + } + } + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/animations.css new file mode 100644 index 00000000..3e143095 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/animations.css @@ -0,0 +1,14 @@ +.sample-show-hide { + padding:10px; + border:1px solid black; + background:white; +} + +.sample-show-hide { + -webkit-transition:all linear 0.5s; + transition:all linear 0.5s; +} + +.sample-show-hide.ng-hide { + opacity:0; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-debug.html new file mode 100644 index 00000000..f3814d61 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example4-debug + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-jquery.html new file mode 100644 index 00000000..4305debf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example4-jquery + + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-production.html new file mode 100644 index 00000000..456371aa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example4-production + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index.html new file mode 100644 index 00000000..9b0dd11a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example4 + + + + + + + + + + +
+ +
+ Visible... +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/manifest.json new file mode 100644 index 00000000..db169af0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example4/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example4", + "files": [ + "index-production.html", + "animations.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-debug.html new file mode 100644 index 00000000..93270c41 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example40-debug + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-jquery.html new file mode 100644 index 00000000..76b4833f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example40-jquery + + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-production.html new file mode 100644 index 00000000..6c13d3d4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example40-production + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index.html new file mode 100644 index 00000000..28af0254 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example40 + + + + + + + + + +
Some
+
model = {{content}}
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/manifest.json new file mode 100644 index 00000000..0636d85e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example40", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/script.js new file mode 100644 index 00000000..ff3ecbbb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example40/script.js @@ -0,0 +1,22 @@ +(function(angular) { + 'use strict'; +angular.module('form-example2', []).directive('contenteditable', function() { + return { + require: 'ngModel', + link: function(scope, elm, attrs, ctrl) { + // view -> model + elm.on('blur', function() { + ctrl.$setViewValue(elm.html()); + }); + + // model -> view + ctrl.$render = function() { + elm.html(ctrl.$viewValue); + }; + + // load init value from DOM + ctrl.$setViewValue(elm.html()); + } + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-debug.html new file mode 100644 index 00000000..81d00485 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example41-debug + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-jquery.html new file mode 100644 index 00000000..f816a29b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example41-jquery + + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-production.html new file mode 100644 index 00000000..adf3a2f2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example41-production + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index.html new file mode 100644 index 00000000..8eac608d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example41 + + + + + + + + + +
+
+ {{ 'World' | greet }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/manifest.json new file mode 100644 index 00000000..6f3d4110 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example41", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/protractor.js new file mode 100644 index 00000000..27a29da6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/script.js new file mode 100644 index 00000000..bf80af60 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example41/script.js @@ -0,0 +1,13 @@ +(function(angular) { + 'use strict'; +// 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 + '!'; + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-debug.html new file mode 100644 index 00000000..0cd39b36 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example42-debug + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-jquery.html new file mode 100644 index 00000000..9cde0525 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example42-jquery + + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-production.html new file mode 100644 index 00000000..623ce23e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example42-production + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index.html new file mode 100644 index 00000000..0ef4b0d3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example42 + + + + + + + + + +
+ {{ greeting }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/manifest.json new file mode 100644 index 00000000..074fe58e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example42", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/protractor.js new file mode 100644 index 00000000..c19da844 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/script.js new file mode 100644 index 00000000..83336b24 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example42/script.js @@ -0,0 +1,38 @@ +(function(angular) { + 'use strict'; +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); + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-debug.html new file mode 100644 index 00000000..e724655a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example43-debug + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-jquery.html new file mode 100644 index 00000000..fe1709df --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example43-jquery + + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-production.html new file mode 100644 index 00000000..fd6482f3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example43-production + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index.html new file mode 100644 index 00000000..74a86232 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example43 + + + + + + + + + +
+ Your name: + + +
+ {{greeting}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/manifest.json new file mode 100644 index 00000000..43d2ea76 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example43", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/script.js new file mode 100644 index 00000000..7d16a71d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example43/script.js @@ -0,0 +1,11 @@ +(function(angular) { + 'use strict'; +angular.module('scopeExample', []) + .controller('MyController', ['$scope', function($scope) { + $scope.username = 'World'; + + $scope.sayHello = function() { + $scope.greeting = 'Hello ' + $scope.username + '!'; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-debug.html new file mode 100644 index 00000000..20219161 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example44-debug + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-jquery.html new file mode 100644 index 00000000..8cb5d00f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example44-jquery + + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-production.html new file mode 100644 index 00000000..14aaa25f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example44-production + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index.html new file mode 100644 index 00000000..2cb9c063 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example44 + + + + + + + + + + +
+
+ Hello {{name}}! +
+
+
    +
  1. {{name}} from {{department}}
  2. +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/manifest.json new file mode 100644 index 00000000..f8481d12 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example44", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/script.js new file mode 100644 index 00000000..e98864b1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/script.js @@ -0,0 +1,11 @@ +(function(angular) { + 'use strict'; +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']; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/style.css new file mode 100644 index 00000000..fb916841 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example44/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-debug.html new file mode 100644 index 00000000..983b9b70 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-debug.html @@ -0,0 +1,32 @@ + + + + + Example - example-example45-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-jquery.html new file mode 100644 index 00000000..b9fcb918 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-jquery.html @@ -0,0 +1,33 @@ + + + + + Example - example-example45-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-production.html new file mode 100644 index 00000000..5c1d5aeb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index-production.html @@ -0,0 +1,32 @@ + + + + + Example - example-example45-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index.html new file mode 100644 index 00000000..58cba169 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/index.html @@ -0,0 +1,32 @@ + + + + + Example - example-example45 + + + + + + + + + +
+ Root scope MyEvent count: {{count}} +
    +
  • + + +
    + Middle scope MyEvent count: {{count}} +
      +
    • + Leaf scope MyEvent count: {{count}} +
    • +
    +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/manifest.json new file mode 100644 index 00000000..4bf33d3e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example45", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/script.js new file mode 100644 index 00000000..bef5f7f7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example45/script.js @@ -0,0 +1,10 @@ +(function(angular) { + 'use strict'; +angular.module('eventExample', []) + .controller('EventController', ['$scope', function($scope) { + $scope.count = 0; + $scope.$on('MyEvent', function() { + $scope.count++; + }); + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-debug.html new file mode 100644 index 00000000..95eb1636 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example46-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-jquery.html new file mode 100644 index 00000000..e90f972c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example46-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-production.html new file mode 100644 index 00000000..2aab4905 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example46-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index.html new file mode 100644 index 00000000..9948a50c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example46 + + + + + + + + + +
+

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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/manifest.json new file mode 100644 index 00000000..45e058b4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example46", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/protractor.js new file mode 100644 index 00000000..67fed459 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/script.js new file mode 100644 index 00000000..d02d4c7d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example46/script.js @@ -0,0 +1,20 @@ +(function(angular) { + 'use strict'; +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 = []; + } + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-debug.html new file mode 100644 index 00000000..3cd77f54 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-debug.html @@ -0,0 +1,46 @@ + + + + + Example - example-example47-debug + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-jquery.html new file mode 100644 index 00000000..2190470e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-jquery.html @@ -0,0 +1,47 @@ + + + + + Example - example-example47-jquery + + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-production.html new file mode 100644 index 00000000..e1ac4aae --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index-production.html @@ -0,0 +1,46 @@ + + + + + Example - example-example47-production + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index.html new file mode 100644 index 00000000..bfeb6120 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/index.html @@ -0,0 +1,46 @@ + + + + + Example - example-example47 + + + + + + + + +
+
+Name:
+E-mail:
+Gender: male +female
+ + +
+
form = {{user | json}}
+
master = {{master | json}}
+
+ + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/manifest.json new file mode 100644 index 00000000..e63b7b9c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example47/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example47", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-debug.html new file mode 100644 index 00000000..bee6c123 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example48-debug + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-jquery.html new file mode 100644 index 00000000..9829c615 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example48-jquery + + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-production.html new file mode 100644 index 00000000..68675075 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example48-production + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index.html new file mode 100644 index 00000000..a5fc0c74 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example48 + + + + + + + + + +
+ I can add: {{a}} + {{b}} = {{ a+b }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/manifest.json new file mode 100644 index 00000000..33dbdb99 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example48", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/script.js new file mode 100644 index 00000000..116b24d4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example48/script.js @@ -0,0 +1,7 @@ +(function(angular) { + 'use strict'; +angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) { + $scope.a = 1; + $scope.b = 2; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-debug.html new file mode 100644 index 00000000..9f6440f6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-debug.html @@ -0,0 +1,47 @@ + + + + + Example - example-example49-debug + + + + + + + + + + +
+
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style (see + script.js for details) +

+
+ +
+ Name:
+ Hello, {{name}}! + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style + (see script.js for details) +

+
+ +
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

The controller could not be instantiated, due to relying + on automatic function annotations (which are disabled in + strict mode). As such, the content of this section is not + interpolated, and there should be an error in your web console. +

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-jquery.html new file mode 100644 index 00000000..2ea9fab5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-jquery.html @@ -0,0 +1,48 @@ + + + + + Example - example-example49-jquery + + + + + + + + + + + +
+
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style (see + script.js for details) +

+
+ +
+ Name:
+ Hello, {{name}}! + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style + (see script.js for details) +

+
+ +
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

The controller could not be instantiated, due to relying + on automatic function annotations (which are disabled in + strict mode). As such, the content of this section is not + interpolated, and there should be an error in your web console. +

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-production.html new file mode 100644 index 00000000..e64ef178 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index-production.html @@ -0,0 +1,47 @@ + + + + + Example - example-example49-production + + + + + + + + + + +
+
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style (see + script.js for details) +

+
+ +
+ Name:
+ Hello, {{name}}! + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style + (see script.js for details) +

+
+ +
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

The controller could not be instantiated, due to relying + on automatic function annotations (which are disabled in + strict mode). As such, the content of this section is not + interpolated, and there should be an error in your web console. +

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index.html new file mode 100644 index 00000000..798a7174 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/index.html @@ -0,0 +1,47 @@ + + + + + Example - example-example49 + + + + + + + + + + +
+
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style (see + script.js for details) +

+
+ +
+ Name:
+ Hello, {{name}}! + +

This renders because the controller does not fail to + instantiate, by using explicit annotation style + (see script.js for details) +

+
+ +
+ I can add: {{a}} + {{b}} = {{ a+b }} + +

The controller could not be instantiated, due to relying + on automatic function annotations (which are disabled in + strict mode). As such, the content of this section is not + interpolated, and there should be an error in your web console. +

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/manifest.json new file mode 100644 index 00000000..38712b02 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example49", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/script.js new file mode 100644 index 00000000..8394853b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/script.js @@ -0,0 +1,21 @@ +(function(angular) { + 'use strict'; +angular.module('ngAppStrictDemo', []) + // BadController will fail to instantiate, due to relying on automatic function annotation, + // rather than an explicit annotation + .controller('BadController', function($scope) { + $scope.a = 1; + $scope.b = 2; + }) + // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated, + // due to using explicit annotations using the array style and $inject property, respectively. + .controller('GoodController1', ['$scope', function($scope) { + $scope.a = 1; + $scope.b = 2; + }]) + .controller('GoodController2', GoodController2); + function GoodController2($scope) { + $scope.name = "World"; + } + GoodController2.$inject = ['$scope']; +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/style.css new file mode 100644 index 00000000..e8379bfd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example49/style.css @@ -0,0 +1,18 @@ +div[ng-controller] { + margin-bottom: 1em; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid; + padding: .5em; +} +div[ng-controller^=Good] { + border-color: #d6e9c6; + background-color: #dff0d8; + color: #3c763d; +} +div[ng-controller^=Bad] { + border-color: #ebccd1; + background-color: #f2dede; + color: #a94442; + margin-bottom: 0; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-debug.html new file mode 100644 index 00000000..d35d1468 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example5-debug + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-jquery.html new file mode 100644 index 00000000..968afa86 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example5-jquery + + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-production.html new file mode 100644 index 00000000..5a71d3dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example5-production + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index.html new file mode 100644 index 00000000..32ac5b7f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example5 + + + + + + + + + + +

+ + +
+ CSS-Animated Text +

+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/manifest.json new file mode 100644 index 00000000..6161e79d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example5", + "files": [ + "index-production.html", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/style.css new file mode 100644 index 00000000..d833326f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-debug.html new file mode 100644 index 00000000..055cc440 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example50-debug + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-jquery.html new file mode 100644 index 00000000..e5b9c73f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example50-jquery + + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-production.html new file mode 100644 index 00000000..f954e8e4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example50-production + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index.html new file mode 100644 index 00000000..e9e5acc6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example50 + + + + + + + + + + +
+ Go to bottom + You're at the bottom! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/manifest.json new file mode 100644 index 00000000..7c971e84 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example50", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/script.js new file mode 100644 index 00000000..c93a7a6e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +angular.module('anchorScrollExample', []) + .controller('ScrollController', ['$scope', '$location', '$anchorScroll', + function ($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(); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/style.css new file mode 100644 index 00000000..608700b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example50/style.css @@ -0,0 +1,9 @@ +#scrollArea { + height: 280px; + overflow: auto; +} + +#bottom { + display: block; + margin-top: 2000px; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-debug.html new file mode 100644 index 00000000..9222f769 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example51-debug + + + + + + + + + + + +
+ Anchor {{x}} of 5 +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-jquery.html new file mode 100644 index 00000000..bafa6a45 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example51-jquery + + + + + + + + + + + + +
+ Anchor {{x}} of 5 +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-production.html new file mode 100644 index 00000000..2e4a266a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example51-production + + + + + + + + + + + +
+ Anchor {{x}} of 5 +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index.html new file mode 100644 index 00000000..7cd2f6bd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example51 + + + + + + + + + + + +
+ Anchor {{x}} of 5 +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/manifest.json new file mode 100644 index 00000000..77dd74af --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example51", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/script.js new file mode 100644 index 00000000..ea7b5eec --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/script.js @@ -0,0 +1,23 @@ +(function(angular) { + 'use strict'; +angular.module('anchorScrollOffsetExample', []) + .run(['$anchorScroll', function($anchorScroll) { + $anchorScroll.yOffset = 50; // always scroll by 50 extra pixels + }]) + .controller('headerCtrl', ['$anchorScroll', '$location', '$scope', + function ($anchorScroll, $location, $scope) { + $scope.gotoAnchor = function(x) { + var newHash = 'anchor' + x; + if ($location.hash() !== newHash) { + // set the $location.hash to `newHash` and + // $anchorScroll will automatically scroll to it + $location.hash('anchor' + x); + } else { + // call $anchorScroll() explicitly, + // since $location.hash hasn't changed + $anchorScroll(); + } + }; + } + ]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/style.css new file mode 100644 index 00000000..9fa05a2a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example51/style.css @@ -0,0 +1,20 @@ +body { + padding-top: 50px; +} + +.anchor { + border: 2px dashed DarkOrchid; + padding: 10px 10px 200px 10px; +} + +.fixed-header { + background-color: rgba(0, 0, 0, 0.2); + height: 50px; + position: fixed; + top: 0; left: 0; right: 0; +} + +.fixed-header > a { + display: inline-block; + margin: 5px 15px; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-debug.html new file mode 100644 index 00000000..094cdc10 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-example52-debug + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-jquery.html new file mode 100644 index 00000000..2a34ddcf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-example52-jquery + + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-production.html new file mode 100644 index 00000000..de08fc02 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-example52-production + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index.html new file mode 100644 index 00000000..4f8f6ee3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-example52 + + + + + + + + + + +
+ + + + +

Cached Values

+
+ + : + +
+ +

Cache Info

+
+ + : + +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/manifest.json new file mode 100644 index 00000000..ab208595 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example52", + "files": [ + "index-production.html", + "script.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/script.js new file mode 100644 index 00000000..bd51b0c2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/script.js @@ -0,0 +1,14 @@ +(function(angular) { + 'use strict'; +angular.module('cacheExampleApp', []). + controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) { + $scope.keys = []; + $scope.cache = $cacheFactory('cacheId'); + $scope.put = function(key, value) { + if (angular.isUndefined($scope.cache.get(key))) { + $scope.keys.push(key); + } + $scope.cache.put(key, angular.isUndefined(value) ? null : value); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/style.css new file mode 100644 index 00000000..ea64f1cb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example52/style.css @@ -0,0 +1,3 @@ +p { + margin: 10px 0 3px; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-debug.html new file mode 100644 index 00000000..ae895ad6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-debug.html @@ -0,0 +1,52 @@ + + + + + Example - example-example53-debug + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-jquery.html new file mode 100644 index 00000000..2d53c498 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-jquery.html @@ -0,0 +1,53 @@ + + + + + Example - example-example53-jquery + + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-production.html new file mode 100644 index 00000000..24d2132e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index-production.html @@ -0,0 +1,52 @@ + + + + + Example - example-example53-production + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index.html new file mode 100644 index 00000000..091d5d3f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/index.html @@ -0,0 +1,52 @@ + + + + + Example - example-example53 + + + + + + + + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/manifest.json new file mode 100644 index 00000000..f8f46976 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example53", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/protractor.js new file mode 100644 index 00000000..7bed5a5b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example53/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-debug.html new file mode 100644 index 00000000..2cea9618 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example54-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-jquery.html new file mode 100644 index 00000000..2b40f273 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example54-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-production.html new file mode 100644 index 00000000..192b33a0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example54-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index.html new file mode 100644 index 00000000..fe4e3722 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example54 + + + + + + + + +
+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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/manifest.json new file mode 100644 index 00000000..622adc43 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example54", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/protractor.js new file mode 100644 index 00000000..88c57571 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example54/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'); +}); + +it('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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-debug.html new file mode 100644 index 00000000..0d3fd6e0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example55-debug + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-jquery.html new file mode 100644 index 00000000..0d966930 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example55-jquery + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-production.html new file mode 100644 index 00000000..fd6ae542 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example55-production + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index.html new file mode 100644 index 00000000..64dfb39b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example55 + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/manifest.json new file mode 100644 index 00000000..faf2f320 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example55", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/protractor.js new file mode 100644 index 00000000..f3e2d3a8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example55/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-debug.html new file mode 100644 index 00000000..318810b2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example56-debug + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-jquery.html new file mode 100644 index 00000000..37361c34 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example56-jquery + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-production.html new file mode 100644 index 00000000..b417d41c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example56-production + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index.html new file mode 100644 index 00000000..311a82fc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example56 + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/manifest.json new file mode 100644 index 00000000..883ac7d8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example56", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/protractor.js new file mode 100644 index 00000000..a2febc73 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example56/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-debug.html new file mode 100644 index 00000000..2a9be717 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example57-debug + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-jquery.html new file mode 100644 index 00000000..9d46f253 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example57-jquery + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-production.html new file mode 100644 index 00000000..592fb16f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example57-production + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index.html new file mode 100644 index 00000000..de4cb75e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example57 + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/manifest.json new file mode 100644 index 00000000..45bd9196 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example57", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/protractor.js new file mode 100644 index 00000000..814c59aa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example57/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-debug.html new file mode 100644 index 00000000..06a69800 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example58-debug + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-jquery.html new file mode 100644 index 00000000..5219bc4e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example58-jquery + + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-production.html new file mode 100644 index 00000000..4bce09a3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example58-production + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index.html new file mode 100644 index 00000000..c3f946be --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example58 + + + + + + + + +
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/manifest.json new file mode 100644 index 00000000..9a438d46 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/protractor.js new file mode 100644 index 00000000..8e9ecffb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example58/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-debug.html new file mode 100644 index 00000000..7a1a29b5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example59-debug + + + + + + + + +
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-jquery.html new file mode 100644 index 00000000..0b812305 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example59-jquery + + + + + + + + + +
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-production.html new file mode 100644 index 00000000..6b9d2a06 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example59-production + + + + + + + + +
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index.html new file mode 100644 index 00000000..535facd3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example59 + + + + + + + + +
+
+ Show/Hide me +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/manifest.json new file mode 100644 index 00000000..fe12b81e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/protractor.js new file mode 100644 index 00000000..1a95888f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example59/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-debug.html new file mode 100644 index 00000000..4614b99c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example6-debug + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-jquery.html new file mode 100644 index 00000000..25ef2920 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example6-jquery + + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-production.html new file mode 100644 index 00000000..b8bae694 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example6-production + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index.html new file mode 100644 index 00000000..875deda5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example6 + + + + + + + + + + Drag ME + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/manifest.json new file mode 100644 index 00000000..2f1e90d0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example6", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/script.js new file mode 100644 index 00000000..aba45895 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example6/script.js @@ -0,0 +1,39 @@ +(function(angular) { + 'use strict'; +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.off('mousemove', mousemove); + $document.off('mouseup', mouseup); + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-debug.html new file mode 100644 index 00000000..bfb1e129 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-debug.html @@ -0,0 +1,42 @@ + + + + + Example - example-example60-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-jquery.html new file mode 100644 index 00000000..6bc34dfd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-jquery.html @@ -0,0 +1,43 @@ + + + + + Example - example-example60-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-production.html new file mode 100644 index 00000000..2f32a7cd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index-production.html @@ -0,0 +1,42 @@ + + + + + Example - example-example60-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index.html new file mode 100644 index 00000000..3c93f3d5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/index.html @@ -0,0 +1,42 @@ + + + + + Example - example-example60 + + + + + + + + + + + +
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/manifest.json new file mode 100644 index 00000000..c41e550b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example60", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/protractor.js new file mode 100644 index 00000000..09668bb3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example60/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-debug.html new file mode 100644 index 00000000..caaef352 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-example61-debug + + + + + + + + + +
+
+ Hello ! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-jquery.html new file mode 100644 index 00000000..5b80209b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-example61-jquery + + + + + + + + + + +
+
+ Hello ! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-production.html new file mode 100644 index 00000000..74f851c8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-example61-production + + + + + + + + + +
+
+ Hello ! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index.html new file mode 100644 index 00000000..dfb5a440 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-example61 + + + + + + + + + +
+
+ Hello ! +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/manifest.json new file mode 100644 index 00000000..a23f0ddd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example61", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/protractor.js new file mode 100644 index 00000000..0ef43a9b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example61/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-debug.html new file mode 100644 index 00000000..aae549db --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example62-debug + + + + + + + + + +
+
+
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-jquery.html new file mode 100644 index 00000000..fd9e2465 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example62-jquery + + + + + + + + + + +
+
+
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-production.html new file mode 100644 index 00000000..43b01905 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example62-production + + + + + + + + + +
+
+
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index.html new file mode 100644 index 00000000..405452f7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example62 + + + + + + + + + +
+
+
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/manifest.json new file mode 100644 index 00000000..a3834f6c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example62", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/protractor.js new file mode 100644 index 00000000..3cbeae24 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example62/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-debug.html new file mode 100644 index 00000000..9d6092be --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example63-debug + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-jquery.html new file mode 100644 index 00000000..824e8e63 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example63-jquery + + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-production.html new file mode 100644 index 00000000..982bb810 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example63-production + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index.html new file mode 100644 index 00000000..30510682 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example63 + + + + + + + + + + +
+

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/manifest.json new file mode 100644 index 00000000..9e84f9b3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example63", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/protractor.js new file mode 100644 index 00000000..b2364498 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/script.js new file mode 100644 index 00000000..5f24b74a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example63/script.js @@ -0,0 +1,9 @@ +(function(angular) { + 'use strict'; +angular.module('bindHtmlExample', ['ngSanitize']) + .controller('ExampleController', ['$scope', function($scope) { + $scope.myHTML = + 'I am an HTMLstring with ' + + 'links! and other stuff'; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-debug.html new file mode 100644 index 00000000..b070b9ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-debug.html @@ -0,0 +1,45 @@ + + + + + Example - example-example64-debug + + + + + + + + + +

Map Syntax Example

+
+
+ +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+
+

Using Array and Map Syntax

+
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-jquery.html new file mode 100644 index 00000000..8d526b5c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-jquery.html @@ -0,0 +1,46 @@ + + + + + Example - example-example64-jquery + + + + + + + + + + +

Map Syntax Example

+
+
+ +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+
+

Using Array and Map Syntax

+
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-production.html new file mode 100644 index 00000000..64029df1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index-production.html @@ -0,0 +1,45 @@ + + + + + Example - example-example64-production + + + + + + + + + +

Map Syntax Example

+
+
+ +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+
+

Using Array and Map Syntax

+
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index.html new file mode 100644 index 00000000..fe6f216d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/index.html @@ -0,0 +1,45 @@ + + + + + Example - example-example64 + + + + + + + + + +

Map Syntax Example

+
+
+ +
+

Using String Syntax

+ +
+

Using Array Syntax

+
+
+
+
+

Using Array and Map Syntax

+
+ + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/manifest.json new file mode 100644 index 00000000..c5f2d7fe --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example64", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/protractor.js new file mode 100644 index 00000000..de06aa8f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/protractor.js @@ -0,0 +1,35 @@ +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(/has-error/); + + element(by.model('important')).click(); + expect(ps.first().getAttribute('class')).toMatch(/bold/); + + element(by.model('error')).click(); + expect(ps.first().getAttribute('class')).toMatch(/has-error/); +}); + +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.get(2).getAttribute('class')).toBe(''); + element(by.model('style1')).sendKeys('bold'); + element(by.model('style2')).sendKeys('strike'); + element(by.model('style3')).sendKeys('red'); + expect(ps.get(2).getAttribute('class')).toBe('bold strike red'); +}); + +it('array with map example should have 2 classes', function() { + expect(ps.last().getAttribute('class')).toBe(''); + element(by.model('style4')).sendKeys('bold'); + element(by.model('warning')).click(); + expect(ps.last().getAttribute('class')).toBe('bold orange'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/style.css new file mode 100644 index 00000000..3084ddfb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example64/style.css @@ -0,0 +1,16 @@ +.strike { + text-decoration: line-through; +} +.bold { + font-weight: bold; +} +.red { + color: red; +} +.has-error { + color: red; + background-color: yellow; +} +.orange { + color: orange; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-debug.html new file mode 100644 index 00000000..b4f55b91 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example65-debug + + + + + + + + + + + + +
+Sample Text + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-jquery.html new file mode 100644 index 00000000..4dbbe225 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example65-jquery + + + + + + + + + + + + + +
+Sample Text + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-production.html new file mode 100644 index 00000000..c6e1ff69 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example65-production + + + + + + + + + + + + +
+Sample Text + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index.html new file mode 100644 index 00000000..8f44132c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example65 + + + + + + + + + + + + +
+Sample Text + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/manifest.json new file mode 100644 index 00000000..08c97e2a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example65", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/protractor.js new file mode 100644 index 00000000..93e79f1b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/style.css new file mode 100644 index 00000000..922e358c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example65/style.css @@ -0,0 +1,8 @@ +.base-class { + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-debug.html new file mode 100644 index 00000000..d38d3110 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example66-debug + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-jquery.html new file mode 100644 index 00000000..8ec7eb91 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example66-jquery + + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-production.html new file mode 100644 index 00000000..55da96b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example66-production + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index.html new file mode 100644 index 00000000..a151ea4f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example66 + + + + + + + + + +
    +
  1. + + {{name}} + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/manifest.json new file mode 100644 index 00000000..cafde034 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example66", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/protractor.js new file mode 100644 index 00000000..896a4ced --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/style.css new file mode 100644 index 00000000..b71c7587 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example66/style.css @@ -0,0 +1,6 @@ +.odd { + color: red; +} +.even { + color: blue; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-debug.html new file mode 100644 index 00000000..b35cb5ee --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-debug.html @@ -0,0 +1,23 @@ + + + + + Example - example-example67-debug + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-jquery.html new file mode 100644 index 00000000..87650334 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-jquery.html @@ -0,0 +1,24 @@ + + + + + Example - example-example67-jquery + + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-production.html new file mode 100644 index 00000000..12411651 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index-production.html @@ -0,0 +1,23 @@ + + + + + Example - example-example67-production + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index.html new file mode 100644 index 00000000..51aa8eca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/index.html @@ -0,0 +1,23 @@ + + + + + Example - example-example67 + + + + + + + + + +
    +
  1. + + {{name}}       + +
  2. +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/manifest.json new file mode 100644 index 00000000..e6915f4a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example67", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/protractor.js new file mode 100644 index 00000000..896a4ced --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/style.css new file mode 100644 index 00000000..b71c7587 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example67/style.css @@ -0,0 +1,6 @@ +.odd { + color: red; +} +.even { + color: blue; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-debug.html new file mode 100644 index 00000000..bf547d88 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example68-debug + + + + + + + + +
{{ 'hello' }}
+
{{ 'world' }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-jquery.html new file mode 100644 index 00000000..f088cb5e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example68-jquery + + + + + + + + + +
{{ 'hello' }}
+
{{ 'world' }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-production.html new file mode 100644 index 00000000..e0802135 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example68-production + + + + + + + + +
{{ 'hello' }}
+
{{ 'world' }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index.html new file mode 100644 index 00000000..8e6731fd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example68 + + + + + + + + +
{{ 'hello' }}
+
{{ 'world' }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/manifest.json new file mode 100644 index 00000000..3c9e7f14 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example68", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/protractor.js new file mode 100644 index 00000000..eabf82f3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example68/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-debug.html new file mode 100644 index 00000000..a008c76c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example69-debug + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-jquery.html new file mode 100644 index 00000000..9549677f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example69-jquery + + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-production.html new file mode 100644 index 00000000..7af722bb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example69-production + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index.html new file mode 100644 index 00000000..de30c161 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example69 + + + + + + + + + + + count: {{count}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/manifest.json new file mode 100644 index 00000000..83091b1f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example69", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/protractor.js new file mode 100644 index 00000000..50954578 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example69/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-debug.html new file mode 100644 index 00000000..26faf900 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example7-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-jquery.html new file mode 100644 index 00000000..470b80db --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example7-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-production.html new file mode 100644 index 00000000..09adccdc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example7-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index.html new file mode 100644 index 00000000..4b94c092 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example7 + + + + + + + + + + + +

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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/manifest.json new file mode 100644 index 00000000..49023ca2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example7", + "files": [ + "index-production.html", + "script.js", + "my-tabs.html", + "my-pane.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/my-pane.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/my-pane.html new file mode 100644 index 00000000..55e70ecf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/my-pane.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/my-tabs.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/my-tabs.html new file mode 100644 index 00000000..7b99151d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/my-tabs.html @@ -0,0 +1,8 @@ +
+ +
+
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/script.js new file mode 100644 index 00000000..b95bbb8c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example7/script.js @@ -0,0 +1,39 @@ +(function(angular) { + 'use strict'; +angular.module('docsTabsExample', []) + .component('myTabs', { + transclude: true, + controller: function() { + var panes = this.panes = []; + this.select = function(pane) { + angular.forEach(panes, function(pane) { + pane.selected = false; + }); + pane.selected = true; + }; + this.addPane = function(pane) { + if (panes.length === 0) { + this.select(pane); + } + panes.push(pane); + }; + }, + templateUrl: 'my-tabs.html' + }) + .component('myPane', { + transclude: true, + require: { + tabsCtrl: '^myTabs' + }, + bindings: { + title: '@' + }, + controller: function() { + this.$onInit = function() { + this.tabsCtrl.addPane(this); + console.log(this); + }; + }, + templateUrl: 'my-pane.html' + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-debug.html new file mode 100644 index 00000000..510ed13e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example70-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-jquery.html new file mode 100644 index 00000000..5827261f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example70-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-production.html new file mode 100644 index 00000000..0f365395 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example70-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index.html new file mode 100644 index 00000000..aecbb567 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example70 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/manifest.json new file mode 100644 index 00000000..655f73f2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example70/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example70", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-debug.html new file mode 100644 index 00000000..5fac0215 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example71-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-jquery.html new file mode 100644 index 00000000..31f355bc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example71-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-production.html new file mode 100644 index 00000000..2ff3b7f2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example71-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index.html new file mode 100644 index 00000000..a513d50b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example71 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example71/manifest.json new file mode 100644 index 00000000..90e8d86e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-debug.html new file mode 100644 index 00000000..cfaaf97d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example72-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-jquery.html new file mode 100644 index 00000000..54d97c25 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example72-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-production.html new file mode 100644 index 00000000..8e798b87 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example72-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index.html new file mode 100644 index 00000000..4eb56ed8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example72 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example72/manifest.json new file mode 100644 index 00000000..043a9306 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-debug.html new file mode 100644 index 00000000..ef193cda --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example73-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-jquery.html new file mode 100644 index 00000000..5ae6b345 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example73-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-production.html new file mode 100644 index 00000000..4269f725 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example73-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index.html new file mode 100644 index 00000000..188f5ef4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example73 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example73/manifest.json new file mode 100644 index 00000000..e2fbbe3f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-debug.html new file mode 100644 index 00000000..6dd4fc5c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example74-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-jquery.html new file mode 100644 index 00000000..ff616716 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example74-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-production.html new file mode 100644 index 00000000..7b2e0fd5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example74-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index.html new file mode 100644 index 00000000..f94ad5e7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example74 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/manifest.json new file mode 100644 index 00000000..6cf6697b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example74/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example74", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-debug.html new file mode 100644 index 00000000..40f24c3d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example75-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-jquery.html new file mode 100644 index 00000000..4d676790 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example75-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-production.html new file mode 100644 index 00000000..72764dc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example75-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index.html new file mode 100644 index 00000000..15c70e44 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example75 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/manifest.json new file mode 100644 index 00000000..b6e9669f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example75/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example75", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-debug.html new file mode 100644 index 00000000..bc6d220f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-debug.html @@ -0,0 +1,19 @@ + + + + + Example - example-example76-debug + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-jquery.html new file mode 100644 index 00000000..0e6d058e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-jquery.html @@ -0,0 +1,20 @@ + + + + + Example - example-example76-jquery + + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-production.html new file mode 100644 index 00000000..70204324 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index-production.html @@ -0,0 +1,19 @@ + + + + + Example - example-example76-production + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index.html new file mode 100644 index 00000000..b3084636 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/index.html @@ -0,0 +1,19 @@ + + + + + Example - example-example76 + + + + + + + + + +count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/manifest.json new file mode 100644 index 00000000..603a5891 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example76/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example76", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-debug.html new file mode 100644 index 00000000..09ee8fd5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example77-debug + + + + + + + + + +key down count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-jquery.html new file mode 100644 index 00000000..09532649 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example77-jquery + + + + + + + + + + +key down count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-production.html new file mode 100644 index 00000000..ccd04b01 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example77-production + + + + + + + + + +key down count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index.html new file mode 100644 index 00000000..7188ca18 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example77 + + + + + + + + + +key down count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/manifest.json new file mode 100644 index 00000000..fa6864c7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example77/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example77", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-debug.html new file mode 100644 index 00000000..86fe7568 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example78-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-jquery.html new file mode 100644 index 00000000..7195d628 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example78-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-production.html new file mode 100644 index 00000000..c8564f30 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example78-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index.html new file mode 100644 index 00000000..17c9b8ee --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example78 + + + + + + + + +

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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/manifest.json new file mode 100644 index 00000000..19dd18d8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example78/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example78", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-debug.html new file mode 100644 index 00000000..97860f1c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example79-debug + + + + + + + + + +key press count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-jquery.html new file mode 100644 index 00000000..298169b6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example79-jquery + + + + + + + + + + +key press count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-production.html new file mode 100644 index 00000000..6f22945f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example79-production + + + + + + + + + +key press count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index.html new file mode 100644 index 00000000..e07e7256 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example79 + + + + + + + + + +key press count: {{count}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/manifest.json new file mode 100644 index 00000000..4204285a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example79/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example79", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/app.js new file mode 100644 index 00000000..17efd46b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/app.js @@ -0,0 +1,16 @@ +(function(angular) { + 'use strict'; +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'; + }; +}]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-debug.html new file mode 100644 index 00000000..53f5d2e4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example8-debug + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-jquery.html new file mode 100644 index 00000000..1568696f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example8-jquery + + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-production.html new file mode 100644 index 00000000..8c1286e4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example8-production + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index.html new file mode 100644 index 00000000..590a8b94 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example8 + + + + + + + + + +
+ + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/manifest.json new file mode 100644 index 00000000..e285068d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example8/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example8", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-debug.html new file mode 100644 index 00000000..123d1439 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-debug.html @@ -0,0 +1,34 @@ + + + + + Example - example-example80-debug + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-jquery.html new file mode 100644 index 00000000..6bac3de4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-jquery.html @@ -0,0 +1,35 @@ + + + + + Example - example-example80-jquery + + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-production.html new file mode 100644 index 00000000..6dc407ba --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index-production.html @@ -0,0 +1,34 @@ + + + + + Example - example-example80-production + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index.html new file mode 100644 index 00000000..d70d0212 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/index.html @@ -0,0 +1,34 @@ + + + + + Example - example-example80 + + + + + + + + + +
+ Enter text and hit enter: + + +
list={{list}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/manifest.json new file mode 100644 index 00000000..6c1e7b19 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example80", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/protractor.js new file mode 100644 index 00000000..e9920def --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example80/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-debug.html new file mode 100644 index 00000000..b412ea4a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example81-debug + + + + + + + + + +copied: {{copied}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-jquery.html new file mode 100644 index 00000000..04e522c8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example81-jquery + + + + + + + + + + +copied: {{copied}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-production.html new file mode 100644 index 00000000..ec91afba --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example81-production + + + + + + + + + +copied: {{copied}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index.html new file mode 100644 index 00000000..69642937 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example81 + + + + + + + + + +copied: {{copied}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/manifest.json new file mode 100644 index 00000000..ae98b40f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example81/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example81", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-debug.html new file mode 100644 index 00000000..e1155680 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example82-debug + + + + + + + + + +cut: {{cut}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-jquery.html new file mode 100644 index 00000000..6ec9bd65 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example82-jquery + + + + + + + + + + +cut: {{cut}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-production.html new file mode 100644 index 00000000..33fe83ff --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example82-production + + + + + + + + + +cut: {{cut}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index.html new file mode 100644 index 00000000..2d866c29 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example82 + + + + + + + + + +cut: {{cut}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/manifest.json new file mode 100644 index 00000000..f284dc80 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example82/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example82", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-debug.html new file mode 100644 index 00000000..8438044f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example83-debug + + + + + + + + + +pasted: {{paste}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-jquery.html new file mode 100644 index 00000000..2af62f33 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example83-jquery + + + + + + + + + + +pasted: {{paste}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-production.html new file mode 100644 index 00000000..c2e05548 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example83-production + + + + + + + + + +pasted: {{paste}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index.html new file mode 100644 index 00000000..a4ac0ea0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example83 + + + + + + + + + +pasted: {{paste}} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/manifest.json new file mode 100644 index 00000000..1d4a357a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example83/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example83", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/animations.css new file mode 100644 index 00000000..b1f6c223 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/animations.css @@ -0,0 +1,19 @@ +.animate-if { + background:white; + border:1px solid black; + padding:10px; +} + +.animate-if.ng-enter, .animate-if.ng-leave { + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-debug.html new file mode 100644 index 00000000..5fed4b7a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example84-debug + + + + + + + + + + +
+Show when checked: + + This is removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-jquery.html new file mode 100644 index 00000000..fceef5d0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example84-jquery + + + + + + + + + + + +
+Show when checked: + + This is removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-production.html new file mode 100644 index 00000000..db800458 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example84-production + + + + + + + + + + +
+Show when checked: + + This is removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index.html new file mode 100644 index 00000000..54f3d714 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example84 + + + + + + + + + + +
+Show when checked: + + This is removed when the checkbox is unchecked. + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/manifest.json new file mode 100644 index 00000000..c9c4358c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example84/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example84", + "files": [ + "index-production.html", + "animations.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/animations.css new file mode 100644 index 00000000..1f92938d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/animations.css @@ -0,0 +1,37 @@ +.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 { + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-debug.html new file mode 100644 index 00000000..402b6caf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example85-debug + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-jquery.html new file mode 100644 index 00000000..a3d7302d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example85-jquery + + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-production.html new file mode 100644 index 00000000..95247092 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example85-production + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index.html new file mode 100644 index 00000000..742ec66c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example85 + + + + + + + + + + + +
+ + url of the template: {{template.url}} +
+
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/manifest.json new file mode 100644 index 00000000..4714a25a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/manifest.json @@ -0,0 +1,11 @@ +{ + "name": "example-example85", + "files": [ + "index-production.html", + "script.js", + "template1.html", + "template2.html", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/protractor.js new file mode 100644 index 00000000..e0b43f77 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/script.js new file mode 100644 index 00000000..de24dc8f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/script.js @@ -0,0 +1,10 @@ +(function(angular) { + 'use strict'; +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]; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/template1.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/template1.html new file mode 100644 index 00000000..a77c76a4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/template1.html @@ -0,0 +1 @@ +Content of template1.html \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/template2.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/template2.html new file mode 100644 index 00000000..2d108be8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example85/template2.html @@ -0,0 +1 @@ +Content of template2.html \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-debug.html new file mode 100644 index 00000000..4e676302 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-example86-debug + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-jquery.html new file mode 100644 index 00000000..6c170511 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-example86-jquery + + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-production.html new file mode 100644 index 00000000..5644176a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-example86-production + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index.html new file mode 100644 index 00000000..c8d33247 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-example86 + + + + + + + + + +
+
+
+ list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}}; +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/manifest.json new file mode 100644 index 00000000..d9a4fba2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/protractor.js new file mode 100644 index 00000000..5c48a97c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example86/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-debug.html new file mode 100644 index 00000000..a1123d75 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-debug.html @@ -0,0 +1,42 @@ + + + + + Example - example-example87-debug + + + + + + + + + + + +

+ Update input to see transitions when valid/invalid. + Integer is a valid value. +

+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-jquery.html new file mode 100644 index 00000000..20def27b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-jquery.html @@ -0,0 +1,43 @@ + + + + + Example - example-example87-jquery + + + + + + + + + + + + +

+ Update input to see transitions when valid/invalid. + Integer is a valid value. +

+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-production.html new file mode 100644 index 00000000..f7e0ed1c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index-production.html @@ -0,0 +1,42 @@ + + + + + Example - example-example87-production + + + + + + + + + + + +

+ Update input to see transitions when valid/invalid. + Integer is a valid value. +

+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index.html new file mode 100644 index 00000000..78c13ab9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/index.html @@ -0,0 +1,42 @@ + + + + + Example - example-example87 + + + + + + + + + + + +

+ Update input to see transitions when valid/invalid. + Integer is a valid value. +

+
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/manifest.json new file mode 100644 index 00000000..019e4363 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example87/manifest.json @@ -0,0 +1,6 @@ +{ + "name": "example-example87", + "files": [ + "index-production.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-debug.html new file mode 100644 index 00000000..979c50b1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-example88-debug + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-jquery.html new file mode 100644 index 00000000..cedc8867 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-example88-jquery + + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-production.html new file mode 100644 index 00000000..f7f15243 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-example88-production + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index.html new file mode 100644 index 00000000..8a34f403 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-example88 + + + + + + + + +
Normal: {{1 + 2}}
+
Ignored: {{1 + 2}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/manifest.json new file mode 100644 index 00000000..64c4ccfa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/protractor.js new file mode 100644 index 00000000..1acda3c1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example88/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-debug.html new file mode 100644 index 00000000..59202776 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-debug.html @@ -0,0 +1,71 @@ + + + + + Example - example-example89-debug + + + + + + + + + +
+
    +
  • + + + +
  • +
  • + +
  • +
+
+
+
+ +
+ +
+ + + + Select . +
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-jquery.html new file mode 100644 index 00000000..0a1fb0c1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-jquery.html @@ -0,0 +1,72 @@ + + + + + Example - example-example89-jquery + + + + + + + + + + +
+
    +
  • + + + +
  • +
  • + +
  • +
+
+
+
+ +
+ +
+ + + + Select . +
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-production.html new file mode 100644 index 00000000..cae90b79 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index-production.html @@ -0,0 +1,71 @@ + + + + + Example - example-example89-production + + + + + + + + + +
+
    +
  • + + + +
  • +
  • + +
  • +
+
+
+
+ +
+ +
+ + + + Select . +
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index.html new file mode 100644 index 00000000..c11984a8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/index.html @@ -0,0 +1,71 @@ + + + + + Example - example-example89 + + + + + + + + + +
+
    +
  • + + + +
  • +
  • + +
  • +
+
+
+
+ +
+ +
+ + + + Select . +
+
+ Currently selected: {{ {selected_color:myColor} }} +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/manifest.json new file mode 100644 index 00000000..2bfd5ff4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/protractor.js new file mode 100644 index 00000000..8fe6d040 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example89/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/app.js new file mode 100644 index 00000000..d62b032d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/app.js @@ -0,0 +1,13 @@ +(function(angular) { + 'use strict'; +var myApp = angular.module('spicyApp2', []); + +myApp.controller('SpicyController', ['$scope', function($scope) { + $scope.customSpice = "wasabi"; + $scope.spice = 'very'; + + $scope.spicy = function(spice) { + $scope.spice = spice; + }; +}]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-debug.html new file mode 100644 index 00000000..fefad71e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example9-debug + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-jquery.html new file mode 100644 index 00000000..ae9df13b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example9-jquery + + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-production.html new file mode 100644 index 00000000..f2df2583 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example9-production + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index.html new file mode 100644 index 00000000..da94f2bf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example9 + + + + + + + + + +
+ + + +

The food is {{spice}} spicy!

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/manifest.json new file mode 100644 index 00000000..f88703ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example9/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example9", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-debug.html new file mode 100644 index 00000000..7d2a27ba --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-debug.html @@ -0,0 +1,46 @@ + + + + + Example - example-example90-debug + + + + + + + + + +
+
+
+
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-jquery.html new file mode 100644 index 00000000..939bd49a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-jquery.html @@ -0,0 +1,47 @@ + + + + + Example - example-example90-jquery + + + + + + + + + + +
+
+
+
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-production.html new file mode 100644 index 00000000..a3504f9c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index-production.html @@ -0,0 +1,46 @@ + + + + + Example - example-example90-production + + + + + + + + + +
+
+
+
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index.html new file mode 100644 index 00000000..9495414a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/index.html @@ -0,0 +1,46 @@ + + + + + Example - example-example90 + + + + + + + + + +
+
+
+
+ + + Without Offset: + +
+ + + With Offset(2): + + +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/manifest.json new file mode 100644 index 00000000..67f29276 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/protractor.js new file mode 100644 index 00000000..3261ab63 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example90/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/animations.css new file mode 100644 index 00000000..bcfc7e0d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/animations.css @@ -0,0 +1,23 @@ +.animate-show { + line-height: 20px; + opacity: 1; + padding: 10px; + border: 1px solid black; + background: white; +} + +.animate-show.ng-hide-add, .animate-show.ng-hide-remove { + transition: all linear 0.5s; +} + +.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/glyphicons.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/glyphicons.css new file mode 100644 index 00000000..bf48d0f4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/glyphicons.css @@ -0,0 +1 @@ +@import url(../../components/bootstrap-3.1.1/css/bootstrap.css); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-debug.html new file mode 100644 index 00000000..15d46bd0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example91-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-jquery.html new file mode 100644 index 00000000..e5d45019 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example91-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-production.html new file mode 100644 index 00000000..c6b8af71 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example91-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index.html new file mode 100644 index 00000000..920592b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example91 + + + + + + + + + + + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/manifest.json new file mode 100644 index 00000000..59721a6e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example91", + "files": [ + "index-production.html", + "glyphicons.css", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/protractor.js new file mode 100644 index 00000000..da70674f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example91/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/animations.css new file mode 100644 index 00000000..c1d270e7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/animations.css @@ -0,0 +1,20 @@ +.animate-hide { + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/glyphicons.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/glyphicons.css new file mode 100644 index 00000000..bf48d0f4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/glyphicons.css @@ -0,0 +1 @@ +@import url(../../components/bootstrap-3.1.1/css/bootstrap.css); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-debug.html new file mode 100644 index 00000000..cb24c8f5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-example92-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-jquery.html new file mode 100644 index 00000000..2c1a426f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-example92-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-production.html new file mode 100644 index 00000000..521293ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-example92-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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index.html new file mode 100644 index 00000000..dc19eb7c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-example92 + + + + + + + + + + + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/manifest.json new file mode 100644 index 00000000..858787f1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example92", + "files": [ + "index-production.html", + "glyphicons.css", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/protractor.js new file mode 100644 index 00000000..da70674f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example92/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-debug.html new file mode 100644 index 00000000..bfd021dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-example93-debug + + + + + + + + + + + + +
+Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-jquery.html new file mode 100644 index 00000000..f6c02f9a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-example93-jquery + + + + + + + + + + + + + +
+Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-production.html new file mode 100644 index 00000000..48a22da7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-example93-production + + + + + + + + + + + + +
+Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index.html new file mode 100644 index 00000000..21fce887 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-example93 + + + + + + + + + + + + +
+Sample Text +
myStyle={{myStyle}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/manifest.json new file mode 100644 index 00000000..c3b45f37 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-example93", + "files": [ + "index-production.html", + "style.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/protractor.js new file mode 100644 index 00000000..06b8690f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/style.css new file mode 100644 index 00000000..c635ff60 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example93/style.css @@ -0,0 +1,3 @@ +span { + color: black; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/animations.css new file mode 100644 index 00000000..07695537 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/animations.css @@ -0,0 +1,30 @@ +.animate-switch-container { + position:relative; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; +} + +.animate-switch { + padding:10px; +} + +.animate-switch.ng-animate { + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-debug.html new file mode 100644 index 00000000..7bf94b90 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-example94-debug + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-jquery.html new file mode 100644 index 00000000..6f944ec7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-example94-jquery + + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-production.html new file mode 100644 index 00000000..328cb204 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-example94-production + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index.html new file mode 100644 index 00000000..cd3389f7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-example94 + + + + + + + + + + + +
+ + selection={{selection}} +
+
+
Settings Div
+
Home Span
+
default
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/manifest.json new file mode 100644 index 00000000..380f5fb3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-example94", + "files": [ + "index-production.html", + "script.js", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/protractor.js new file mode 100644 index 00000000..4cc79203 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/script.js new file mode 100644 index 00000000..328f85f1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example94/script.js @@ -0,0 +1,8 @@ +(function(angular) { + 'use strict'; +angular.module('switchExample', ['ngAnimate']) + .controller('ExampleController', ['$scope', function($scope) { + $scope.items = ['settings', 'home', 'other']; + $scope.selection = $scope.items[0]; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-debug.html new file mode 100644 index 00000000..d859e8d1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-debug.html @@ -0,0 +1,36 @@ + + + + + Example - example-example95-debug + + + + + + + + + + + + + + Button2 + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-jquery.html new file mode 100644 index 00000000..d995e507 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-jquery.html @@ -0,0 +1,37 @@ + + + + + Example - example-example95-jquery + + + + + + + + + + + + + + + Button2 + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-production.html new file mode 100644 index 00000000..ec7071ec --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index-production.html @@ -0,0 +1,36 @@ + + + + + Example - example-example95-production + + + + + + + + + + + + + + Button2 + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index.html new file mode 100644 index 00000000..9bf4d605 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/index.html @@ -0,0 +1,36 @@ + + + + + Example - example-example95 + + + + + + + + + + + + + + Button2 + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/manifest.json new file mode 100644 index 00000000..cfc342a9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example95", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/protractor.js new file mode 100644 index 00000000..64ba1180 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example95/protractor.js @@ -0,0 +1,4 @@ +it('should have different transclude element content', function() { + expect(element(by.id('fallback')).getText()).toBe('Button1'); + expect(element(by.id('modified')).getText()).toBe('Button2'); + }); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-debug.html new file mode 100644 index 00000000..623c1349 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-debug.html @@ -0,0 +1,21 @@ + + + + + Example - example-example96-debug + + + + + + + + + + +Load inlined template +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-jquery.html new file mode 100644 index 00000000..aebb1c01 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-jquery.html @@ -0,0 +1,22 @@ + + + + + Example - example-example96-jquery + + + + + + + + + + + +Load inlined template +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-production.html new file mode 100644 index 00000000..2bb57131 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index-production.html @@ -0,0 +1,21 @@ + + + + + Example - example-example96-production + + + + + + + + + + +Load inlined template +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index.html new file mode 100644 index 00000000..0072278b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/index.html @@ -0,0 +1,21 @@ + + + + + Example - example-example96 + + + + + + + + + + +Load inlined template +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/manifest.json new file mode 100644 index 00000000..4a2b1fb9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example96", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/protractor.js new file mode 100644 index 00000000..4daaff50 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example96/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-debug.html new file mode 100644 index 00000000..de4b8297 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-example97-debug + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-jquery.html new file mode 100644 index 00000000..51ec0d16 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-example97-jquery + + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-production.html new file mode 100644 index 00000000..71b448a3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-example97-production + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index.html new file mode 100644 index 00000000..1c51e732 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-example97 + + + + + + + + + +
+

$document title:

+

window.document title:

+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/manifest.json new file mode 100644 index 00000000..e546d0bb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example97", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/script.js new file mode 100644 index 00000000..6be16a38 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example97/script.js @@ -0,0 +1,8 @@ +(function(angular) { + 'use strict'; +angular.module('documentExample', []) + .controller('ExampleController', ['$scope', '$document', function($scope, $document) { + $scope.title = $document[0].title; + $scope.windowTitle = angular.element(window.document)[0].title; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-debug.html new file mode 100644 index 00000000..7452be2f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-debug.html @@ -0,0 +1,42 @@ + + + + + Example - example-example98-debug + + + + + + + + +
+ + + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+
+
+
+
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-jquery.html new file mode 100644 index 00000000..46f7662e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-jquery.html @@ -0,0 +1,43 @@ + + + + + Example - example-example98-jquery + + + + + + + + + +
+ + + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+
+
+
+
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-production.html new file mode 100644 index 00000000..db9e7b06 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index-production.html @@ -0,0 +1,42 @@ + + + + + Example - example-example98-production + + + + + + + + +
+ + + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+
+
+
+
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index.html new file mode 100644 index 00000000..34a63c0e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/index.html @@ -0,0 +1,42 @@ + + + + + Example - example-example98 + + + + + + + + +
+ + + + + + + + +
NamePhone
{{friend.name}}{{friend.phone}}
+
+
+
+
+
+ + + + + + +
NamePhone
{{friendObj.name}}{{friendObj.phone}}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/manifest.json new file mode 100644 index 00000000..3cb76926 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example98", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/protractor.js new file mode 100644 index 00000000..bb50ec08 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example98/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-debug.html new file mode 100644 index 00000000..2065caac --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-debug.html @@ -0,0 +1,27 @@ + + + + + Example - example-example99-debug + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} + no fractions (0): {{amount | currency:"USD$":0}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-jquery.html new file mode 100644 index 00000000..75acab70 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-jquery.html @@ -0,0 +1,28 @@ + + + + + Example - example-example99-jquery + + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} + no fractions (0): {{amount | currency:"USD$":0}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-production.html new file mode 100644 index 00000000..842c8b22 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index-production.html @@ -0,0 +1,27 @@ + + + + + Example - example-example99-production + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} + no fractions (0): {{amount | currency:"USD$":0}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index.html new file mode 100644 index 00000000..d94c27c5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/index.html @@ -0,0 +1,27 @@ + + + + + Example - example-example99 + + + + + + + + + +
+
+ default currency symbol ($): {{amount | currency}}
+ custom currency identifier (USD$): {{amount | currency:"USD$"}} + no fractions (0): {{amount | currency:"USD$":0}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/manifest.json new file mode 100644 index 00000000..48b4ee7b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-example99", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/protractor.js new file mode 100644 index 00000000..a9b3ea7e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-example99/protractor.js @@ -0,0 +1,17 @@ +it('should init with 1234.56', function() { + expect(element(by.id('currency-default')).getText()).toBe('$1,234.56'); + expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56'); + expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235'); +}); +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.id('currency-custom')).getText()).toBe('-USD$1,234.00'); + expect(element(by.id('currency-no-fractions')).getText()).toBe('-USD$1,234'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index-debug.html new file mode 100644 index 00000000..2577dc62 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index-jquery.html new file mode 100644 index 00000000..2f008603 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index-production.html new file mode 100644 index 00000000..a1ad0b1b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/index.html new file mode 100644 index 00000000..23635f0a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-1/manifest.json new file mode 100644 index 00000000..f4c83905 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index-debug.html new file mode 100644 index 00000000..ff16ec48 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index-jquery.html new file mode 100644 index 00000000..d6840792 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index-production.html new file mode 100644 index 00000000..453c4732 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/index.html new file mode 100644 index 00000000..f36c0f21 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/invoice1.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/invoice1.js new file mode 100644 index 00000000..dd958d1f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/invoice1.js @@ -0,0 +1,25 @@ +(function(angular) { + 'use strict'; +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!"); + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-2/manifest.json new file mode 100644 index 00000000..9c6af114 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/finance2.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/finance2.js new file mode 100644 index 00000000..ef35399f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/finance2.js @@ -0,0 +1,20 @@ +(function(angular) { + 'use strict'; +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 + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index-debug.html new file mode 100644 index 00000000..b0c718c3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index-jquery.html new file mode 100644 index 00000000..4b7cf07a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index-production.html new file mode 100644 index 00000000..3a0aee90 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/index.html new file mode 100644 index 00000000..42538a37 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/invoice2.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/invoice2.js new file mode 100644 index 00000000..f35c3793 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/invoice2.js @@ -0,0 +1,17 @@ +(function(angular) { + 'use strict'; +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!"); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-21/manifest.json new file mode 100644 index 00000000..036dcd52 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/finance3.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/finance3.js new file mode 100644 index 00000000..9cb660d3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/finance3.js @@ -0,0 +1,36 @@ +(function(angular) { + 'use strict'; +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).then(function(response) { + var newUsdToForeignRates = {}; + angular.forEach(response.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 + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index-debug.html new file mode 100644 index 00000000..40f25665 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index-jquery.html new file mode 100644 index 00000000..f7d676cb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index-production.html new file mode 100644 index 00000000..7ede7e88 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/index.html new file mode 100644 index 00000000..b9b834b2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/invoice3.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/invoice3.js new file mode 100644 index 00000000..3fd044da --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/invoice3.js @@ -0,0 +1,17 @@ +(function(angular) { + 'use strict'; +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!"); + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-guide-concepts-3/manifest.json new file mode 100644 index 00000000..4581d361 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/heroDetail.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/heroDetail.html new file mode 100644 index 00000000..e6e0a006 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/heroDetail.html @@ -0,0 +1 @@ +Name: {{$ctrl.hero.name}} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/heroDetail.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/heroDetail.js new file mode 100644 index 00000000..5a33dad7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/heroDetail.js @@ -0,0 +1,14 @@ +(function(angular) { + 'use strict'; +function HeroDetailController() { + +} + +angular.module('heroApp').component('heroDetail', { + templateUrl: 'heroDetail.html', + controller: HeroDetailController, + bindings: { + hero: '=' + } +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-debug.html new file mode 100644 index 00000000..b71dedd3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-heroComponentSimple-debug + + + + + + + + + + + +
+ Hero
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-jquery.html new file mode 100644 index 00000000..390030af --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-heroComponentSimple-jquery + + + + + + + + + + + + +
+ Hero
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-production.html new file mode 100644 index 00000000..4b768e31 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-heroComponentSimple-production + + + + + + + + + + + +
+ Hero
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index.html new file mode 100644 index 00000000..9c8c230c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-heroComponentSimple + + + + + + + + + + + +
+ Hero
+ +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index.js new file mode 100644 index 00000000..9af8a7dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/index.js @@ -0,0 +1,8 @@ +(function(angular) { + 'use strict'; +angular.module('heroApp', []).controller('mainCtrl', function() { + this.hero = { + name: 'Spawn' + }; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/manifest.json new file mode 100644 index 00000000..57f6521f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentSimple/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-heroComponentSimple", + "files": [ + "index-production.html", + "index.js", + "heroDetail.js", + "heroDetail.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/editableField.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/editableField.html new file mode 100644 index 00000000..eb0218eb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/editableField.html @@ -0,0 +1,6 @@ + + + {{$ctrl.fieldValue}} + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/editableField.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/editableField.js new file mode 100644 index 00000000..41b922c5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/editableField.js @@ -0,0 +1,39 @@ +(function(angular) { + 'use strict'; +function EditableFieldController($scope, $element, $attrs) { + var ctrl = this; + ctrl.editMode = false; + + ctrl.handleModeChange = function() { + if (ctrl.editMode) { + ctrl.onUpdate({value: ctrl.fieldValue}); + ctrl.fieldValueCopy = ctrl.fieldValue; + } + ctrl.editMode = !ctrl.editMode; + }; + + ctrl.reset = function() { + ctrl.fieldValue = ctrl.fieldValueCopy; + }; + + ctrl.$onInit = function() { + // Make a copy of the initial value to be able to reset it later + ctrl.fieldValueCopy = ctrl.fieldValue; + + // Set a default fieldType + if (!ctrl.fieldType) { + ctrl.fieldType = 'text'; + } + }; +} + +angular.module('heroApp').component('editableField', { + templateUrl: 'editableField.html', + controller: EditableFieldController, + bindings: { + fieldValue: '<', + fieldType: '@?', + onUpdate: '&' + } +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroDetail.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroDetail.html new file mode 100644 index 00000000..cfbf5fc3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroDetail.html @@ -0,0 +1,6 @@ +
+
+ Name: {{$ctrl.hero.name}}
+ Location:
+ +
\ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroDetail.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroDetail.js new file mode 100644 index 00000000..968ef5af --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroDetail.js @@ -0,0 +1,20 @@ +(function(angular) { + 'use strict'; +function HeroDetailController($scope, $element, $attrs) { + var ctrl = this; + + ctrl.update = function(prop, value) { + ctrl.onUpdate({hero: ctrl.hero, prop: prop, value: value}); + }; +} + +angular.module('heroApp').component('heroDetail', { + templateUrl: 'heroDetail.html', + controller: HeroDetailController, + bindings: { + hero: '<', + onDelete: '&', + onUpdate: '&' + } +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroList.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroList.html new file mode 100644 index 00000000..1e6fb1ee --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroList.html @@ -0,0 +1,2 @@ +Heroes
+ \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroList.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroList.js new file mode 100644 index 00000000..94a557a3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/heroList.js @@ -0,0 +1,34 @@ +(function(angular) { + 'use strict'; +function HeroListController($scope, $element, $attrs) { + var ctrl = this; + + // This would be loaded by $http etc. + ctrl.list = [ + { + name: 'Superman', + location: '' + }, + { + name: 'Batman', + location: 'Wayne Manor' + } + ]; + + ctrl.updateHero = function(hero, prop, value) { + hero[prop] = value; + }; + + ctrl.deleteHero = function(hero) { + var idx = ctrl.list.indexOf(hero); + if (idx >= 0) { + ctrl.list.splice(idx, 1); + } + }; +} + +angular.module('heroApp').component('heroList', { + templateUrl: 'heroList.html', + controller: HeroListController +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-debug.html new file mode 100644 index 00000000..055c77e6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-debug.html @@ -0,0 +1,20 @@ + + + + + Example - example-heroComponentTree-debug + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-jquery.html new file mode 100644 index 00000000..eb67e5a5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-jquery.html @@ -0,0 +1,21 @@ + + + + + Example - example-heroComponentTree-jquery + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-production.html new file mode 100644 index 00000000..a3241de3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index-production.html @@ -0,0 +1,20 @@ + + + + + Example - example-heroComponentTree-production + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index.html new file mode 100644 index 00000000..b9ec4368 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index.html @@ -0,0 +1,20 @@ + + + + + Example - example-heroComponentTree + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index.js new file mode 100644 index 00000000..c2a0243e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/index.js @@ -0,0 +1,4 @@ +(function(angular) { + 'use strict'; +var mode = angular.module('heroApp', []); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/manifest.json new file mode 100644 index 00000000..0d14afa2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-heroComponentTree/manifest.json @@ -0,0 +1,13 @@ +{ + "name": "example-heroComponentTree", + "files": [ + "index-production.html", + "index.js", + "heroList.js", + "heroDetail.js", + "editableField.js", + "heroList.html", + "heroDetail.html", + "editableField.html" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-debug.html new file mode 100644 index 00000000..c94e361c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-debug.html @@ -0,0 +1,54 @@ + + + + + Example - example-input-directive-debug + + + + + + + + + +
+
+ +
+ + Required! +
+ +
+ + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-jquery.html new file mode 100644 index 00000000..9a837b38 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-jquery.html @@ -0,0 +1,55 @@ + + + + + Example - example-input-directive-jquery + + + + + + + + + + +
+
+ +
+ + Required! +
+ +
+ + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-production.html new file mode 100644 index 00000000..096a52bb --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index-production.html @@ -0,0 +1,54 @@ + + + + + Example - example-input-directive-production + + + + + + + + + +
+
+ +
+ + Required! +
+ +
+ + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index.html new file mode 100644 index 00000000..a04bba80 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/index.html @@ -0,0 +1,54 @@ + + + + + Example - example-input-directive + + + + + + + + + +
+
+ +
+ + Required! +
+ +
+ + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/manifest.json new file mode 100644 index 00000000..b4c6da91 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/protractor.js new file mode 100644 index 00000000..f07600fe --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-input-directive/protractor.js @@ -0,0 +1,51 @@ +var user = element(by.exactBinding('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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/addressBar.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/addressBar.js new file mode 100644 index 00000000..af5562ca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/addressBar.js @@ -0,0 +1,27 @@ +(function(angular) { + 'use strict'; +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()); + } + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/app.js new file mode 100644 index 00000000..2fb9b178 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/app.js @@ -0,0 +1,29 @@ +(function(angular) { + 'use strict'; +angular.module('hashbang-mode', ['fake-browser', 'address-bar']) + +// Configure the fakeBrowser. Do not set these values in actual projects. +.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(); + }); +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/fakeBrowser.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/fakeBrowser.js new file mode 100644 index 00000000..f4170e2c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/fakeBrowser.js @@ -0,0 +1,27 @@ +(function(angular) { + 'use strict'; +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; + }); +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index-debug.html new file mode 100644 index 00000000..a01f7c4a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index-jquery.html new file mode 100644 index 00000000..8d7fa0e7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index-production.html new file mode 100644 index 00000000..190d4fc8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/index.html new file mode 100644 index 00000000..64cf5d0a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/manifest.json new file mode 100644 index 00000000..504da50a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-hashbang-mode/protractor.js new file mode 100644 index 00000000..81513303 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/addressBar.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/addressBar.js new file mode 100644 index 00000000..af5562ca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/addressBar.js @@ -0,0 +1,27 @@ +(function(angular) { + 'use strict'; +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()); + } + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/app.js new file mode 100644 index 00000000..bd9989a6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/app.js @@ -0,0 +1,27 @@ +(function(angular) { + 'use strict'; +angular.module('html5-mode', ['fake-browser', 'address-bar']) + +// Configure the fakeBrowser. Do not set these values in actual projects. +.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(); }); +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/fakeBrowser.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/fakeBrowser.js new file mode 100644 index 00000000..f4170e2c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/fakeBrowser.js @@ -0,0 +1,27 @@ +(function(angular) { + 'use strict'; +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; + }); +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index-debug.html new file mode 100644 index 00000000..1291dac6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index-jquery.html new file mode 100644 index 00000000..f08a8027 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index-production.html new file mode 100644 index 00000000..6c03e906 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/index.html new file mode 100644 index 00000000..8306e56d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/manifest.json new file mode 100644 index 00000000..d8e7e30e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-location-html5-mode/protractor.js new file mode 100644 index 00000000..e7dd43f0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/app.js new file mode 100644 index 00000000..ace5b007 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/app.js @@ -0,0 +1,26 @@ +(function(angular) { + 'use strict'; +function Person(name, gender) { + this.name = name; + this.gender = gender; +} + +angular.module('messageFormatExample', ['ngMessageFormat']) + .controller('ckCtrl', function ($scope, $injector, $parse) { + var people = [ new Person("Alice", "female"), + new Person("Bob", "male"), + new Person("Charlie", "male") ]; + + $scope.sender = new Person("Harry Potter", "male"); + $scope.recipients = people.slice(); + + $scope.setNumRecipients = function(n) { + n = n > people.length ? people.length : n; + $scope.recipients = people.slice(0, n); + }; + + $scope.setGender = function(person, gender) { + person.gender = gender; + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-debug.html new file mode 100644 index 00000000..b758c3d2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-debug.html @@ -0,0 +1,74 @@ + + + + + Example - example-message-format-example-debug + + + + + + + + + + +
+ Set number of recipients + + + + + + +

+ Sender's name:    + +

Recipients
+
+ Name:    + Gender: + + +
+ +

Message
+ {{recipients.length, plural, offset:1 + =0 {You ({{sender.name}}) gave no gifts} + =1 { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) a gift.} + }} + } + one { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) and one other person a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) and one other person a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) and one other person a gift.} + }} + } + other {You ({{sender.name}}) gave {{recipients.length}} people gifts. } + }} + +

In an attribute
+
+ This div has an attribute interpolated with messageformat. Use the DOM inspector to check it out. +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-jquery.html new file mode 100644 index 00000000..14c16953 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-jquery.html @@ -0,0 +1,75 @@ + + + + + Example - example-message-format-example-jquery + + + + + + + + + + + +
+ Set number of recipients + + + + + + +

+ Sender's name:    + +

Recipients
+
+ Name:    + Gender: + + +
+ +

Message
+ {{recipients.length, plural, offset:1 + =0 {You ({{sender.name}}) gave no gifts} + =1 { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) a gift.} + }} + } + one { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) and one other person a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) and one other person a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) and one other person a gift.} + }} + } + other {You ({{sender.name}}) gave {{recipients.length}} people gifts. } + }} + +

In an attribute
+
+ This div has an attribute interpolated with messageformat. Use the DOM inspector to check it out. +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-production.html new file mode 100644 index 00000000..b44291ab --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index-production.html @@ -0,0 +1,74 @@ + + + + + Example - example-message-format-example-production + + + + + + + + + + +
+ Set number of recipients + + + + + + +

+ Sender's name:    + +

Recipients
+
+ Name:    + Gender: + + +
+ +

Message
+ {{recipients.length, plural, offset:1 + =0 {You ({{sender.name}}) gave no gifts} + =1 { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) a gift.} + }} + } + one { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) and one other person a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) and one other person a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) and one other person a gift.} + }} + } + other {You ({{sender.name}}) gave {{recipients.length}} people gifts. } + }} + +

In an attribute
+
+ This div has an attribute interpolated with messageformat. Use the DOM inspector to check it out. +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index.html new file mode 100644 index 00000000..1f075336 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/index.html @@ -0,0 +1,74 @@ + + + + + Example - example-message-format-example + + + + + + + + + + +
+ Set number of recipients + + + + + + +

+ Sender's name:    + +

Recipients
+
+ Name:    + Gender: + + +
+ +

Message
+ {{recipients.length, plural, offset:1 + =0 {You ({{sender.name}}) gave no gifts} + =1 { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) a gift.} + }} + } + one { {{ recipients[0].gender, select, + male {You ({{sender.name}}) gave him ({{recipients[0].name}}) and one other person a gift.} + female {You ({{sender.name}}) gave her ({{recipients[0].name}}) and one other person a gift.} + other {You ({{sender.name}}) gave them ({{recipients[0].name}}) and one other person a gift.} + }} + } + other {You ({{sender.name}}) gave {{recipients.length}} people gifts. } + }} + +

In an attribute
+
+ This div has an attribute interpolated with messageformat. Use the DOM inspector to check it out. +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/manifest.json new file mode 100644 index 00000000..7e003915 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-message-format-example/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-message-format-example", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-debug.html new file mode 100644 index 00000000..99a38c8b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-debug.html @@ -0,0 +1,39 @@ + + + + + Example - example-month-input-directive-debug + + + + + + + + + +
+ + +
+ + Required! + + Not a valid month! +
+ value = {{example.value | date: "yyyy-MM"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-jquery.html new file mode 100644 index 00000000..1353e846 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-jquery.html @@ -0,0 +1,40 @@ + + + + + Example - example-month-input-directive-jquery + + + + + + + + + + +
+ + +
+ + Required! + + Not a valid month! +
+ value = {{example.value | date: "yyyy-MM"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-production.html new file mode 100644 index 00000000..181e4cca --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index-production.html @@ -0,0 +1,39 @@ + + + + + Example - example-month-input-directive-production + + + + + + + + + +
+ + +
+ + Required! + + Not a valid month! +
+ value = {{example.value | date: "yyyy-MM"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index.html new file mode 100644 index 00000000..f918ab75 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/index.html @@ -0,0 +1,39 @@ + + + + + Example - example-month-input-directive + + + + + + + + + +
+ + +
+ + Required! + + Not a valid month! +
+ value = {{example.value | date: "yyyy-MM"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/manifest.json new file mode 100644 index 00000000..ba45a606 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-month-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/protractor.js new file mode 100644 index 00000000..b5b20b9d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-month-input-directive/protractor.js @@ -0,0 +1,31 @@ +var value = element(by.binding('example.value | date: "yyyy-MM"')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('example.value')); + +// currently protractor/webdriver does not support +// sending keys to all known HTML5 input controls +// for various browsers (https://github.com/angular/protractor/issues/562). +function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); +} + +it('should initialize to model', function() { + expect(value.getText()).toContain('2013-10'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); +}); + +it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); + +it('should be invalid if over max', function() { + setInput('2015-01'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/app.js new file mode 100644 index 00000000..7696d95a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/app.js @@ -0,0 +1,24 @@ +(function(angular) { + 'use strict'; +angular.module('multiSlotTranscludeExample', []) + .directive('pane', function(){ + return { + restrict: 'E', + transclude: { + 'title': '?paneTitle', + 'body': 'paneBody', + 'footer': '?paneFooter' + }, + template: '
' + + '
Fallback Title
' + + '
' + + '' + + '
' + }; +}) +.controller('ExampleController', ['$scope', function($scope) { + $scope.title = 'Lorem Ipsum'; + $scope.link = "https://google.com"; + $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...'; +}]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-debug.html new file mode 100644 index 00000000..4ccbb3ba --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-debug.html @@ -0,0 +1,29 @@ + + + + + Example - example-multiSlotTranscludeExample-debug + + + + + + + + + + +
+
+
+ + {{title}} +

{{text}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-jquery.html new file mode 100644 index 00000000..b1160091 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-jquery.html @@ -0,0 +1,30 @@ + + + + + Example - example-multiSlotTranscludeExample-jquery + + + + + + + + + + + +
+
+
+ + {{title}} +

{{text}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-production.html new file mode 100644 index 00000000..e21635e2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index-production.html @@ -0,0 +1,29 @@ + + + + + Example - example-multiSlotTranscludeExample-production + + + + + + + + + + +
+
+
+ + {{title}} +

{{text}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index.html new file mode 100644 index 00000000..1a67e886 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/index.html @@ -0,0 +1,29 @@ + + + + + Example - example-multiSlotTranscludeExample + + + + + + + + + + +
+
+
+ + {{title}} +

{{text}}

+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/manifest.json new file mode 100644 index 00000000..c5e26b92 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-multiSlotTranscludeExample", + "files": [ + "index-production.html", + "app.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/protractor.js new file mode 100644 index 00000000..af3cc925 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-multiSlotTranscludeExample/protractor.js @@ -0,0 +1,11 @@ +it('should have transcluded the title and the body', 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.css('.title')).getText()).toEqual('TITLE'); + expect(element(by.binding('text')).getText()).toEqual('TEXT'); + expect(element(by.css('.footer')).getText()).toEqual('Fallback Footer'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/app.js new file mode 100644 index 00000000..1f4eca63 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/app.js @@ -0,0 +1,18 @@ +(function(angular) { + 'use strict'; +angular.module('cancel-update-example', []) + +.controller('CancelUpdateController', ['$scope', function($scope) { + $scope.model = {}; + + $scope.setEmpty = function(e, value, rollback) { + if (e.keyCode == 27) { + e.preventDefault(); + if (rollback) { + $scope.myForm[value].$rollbackViewValue(); + } + $scope.model[value] = ''; + } + }; +}]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-debug.html new file mode 100644 index 00000000..afcc8cc9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-debug.html @@ -0,0 +1,50 @@ + + + + + Example - example-ng-model-cancel-update-debug + + + + + + + + + + +
+

Both of these inputs are only updated if they are blurred. Hitting escape should + empty them. Follow these steps and observe the difference:

+
    +
  1. Type something in the input. You will see that the model is not yet updated
  2. +
  3. Press the Escape key. +
      +
    1. In the first example, nothing happens, because the model is already '', and no + update is detected. If you blur the input, the model will be set to the current view. +
    2. +
    3. In the second example, the pending update is cancelled, and the input is set back + to the last committed view value (''). Blurring the input does nothing. +
    4. +
    +
  4. +
+ +
+
+

Without $rollbackViewValue():

+ + value1: "{{ model.value1 }}" +
+ +
+

With $rollbackViewValue():

+ + value2: "{{ model.value2 }}" +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-jquery.html new file mode 100644 index 00000000..6467f57e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-jquery.html @@ -0,0 +1,51 @@ + + + + + Example - example-ng-model-cancel-update-jquery + + + + + + + + + + + +
+

Both of these inputs are only updated if they are blurred. Hitting escape should + empty them. Follow these steps and observe the difference:

+
    +
  1. Type something in the input. You will see that the model is not yet updated
  2. +
  3. Press the Escape key. +
      +
    1. In the first example, nothing happens, because the model is already '', and no + update is detected. If you blur the input, the model will be set to the current view. +
    2. +
    3. In the second example, the pending update is cancelled, and the input is set back + to the last committed view value (''). Blurring the input does nothing. +
    4. +
    +
  4. +
+ +
+
+

Without $rollbackViewValue():

+ + value1: "{{ model.value1 }}" +
+ +
+

With $rollbackViewValue():

+ + value2: "{{ model.value2 }}" +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-production.html new file mode 100644 index 00000000..1f9d9e0f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index-production.html @@ -0,0 +1,50 @@ + + + + + Example - example-ng-model-cancel-update-production + + + + + + + + + + +
+

Both of these inputs are only updated if they are blurred. Hitting escape should + empty them. Follow these steps and observe the difference:

+
    +
  1. Type something in the input. You will see that the model is not yet updated
  2. +
  3. Press the Escape key. +
      +
    1. In the first example, nothing happens, because the model is already '', and no + update is detected. If you blur the input, the model will be set to the current view. +
    2. +
    3. In the second example, the pending update is cancelled, and the input is set back + to the last committed view value (''). Blurring the input does nothing. +
    4. +
    +
  4. +
+ +
+
+

Without $rollbackViewValue():

+ + value1: "{{ model.value1 }}" +
+ +
+

With $rollbackViewValue():

+ + value2: "{{ model.value2 }}" +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index.html new file mode 100644 index 00000000..db284ca5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/index.html @@ -0,0 +1,50 @@ + + + + + Example - example-ng-model-cancel-update + + + + + + + + + + +
+

Both of these inputs are only updated if they are blurred. Hitting escape should + empty them. Follow these steps and observe the difference:

+
    +
  1. Type something in the input. You will see that the model is not yet updated
  2. +
  3. Press the Escape key. +
      +
    1. In the first example, nothing happens, because the model is already '', and no + update is detected. If you blur the input, the model will be set to the current view. +
    2. +
    3. In the second example, the pending update is cancelled, and the input is set back + to the last committed view value (''). Blurring the input does nothing. +
    4. +
    +
  4. +
+ +
+
+

Without $rollbackViewValue():

+ + value1: "{{ model.value1 }}" +
+ +
+

With $rollbackViewValue():

+ + value2: "{{ model.value2 }}" +
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/manifest.json new file mode 100644 index 00000000..583e381e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ng-model-cancel-update", + "files": [ + "index-production.html", + "app.js", + "style.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/style.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/style.css new file mode 100644 index 00000000..691bc994 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ng-model-cancel-update/style.css @@ -0,0 +1,6 @@ +div { + display: table-cell; +} +div:nth-child(1) { + padding-right: 30px; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/animations.css new file mode 100644 index 00000000..ac09d863 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/animations.css @@ -0,0 +1,33 @@ +.container.ng-enter, +.container.ng-leave { + transition: all ease 1.5s; +} + +.container.ng-enter, +.container.ng-leave-active { + opacity: 0; +} + +.container.ng-leave, +.container.ng-enter-active { + opacity: 1; +} + +.item { + background: firebrick; + color: #FFF; + margin-bottom: 10px; +} + +.item.ng-enter, +.item.ng-leave { + transition: transform 1.5s ease; +} + +.item.ng-enter { + transform: translateX(50px); +} + +.item.ng-enter-active { + transform: translateX(0); +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-debug.html new file mode 100644 index 00000000..7f6ed986 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-debug.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngAnimateChildren-debug + + + + + + + + + + + +
+ + +
+
+
+ List of items: +
Item {{item}}
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-jquery.html new file mode 100644 index 00000000..bef901f2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-jquery.html @@ -0,0 +1,30 @@ + + + + + Example - example-ngAnimateChildren-jquery + + + + + + + + + + + + +
+ + +
+
+
+ List of items: +
Item {{item}}
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-production.html new file mode 100644 index 00000000..629edde2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index-production.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngAnimateChildren-production + + + + + + + + + + + +
+ + +
+
+
+ List of items: +
Item {{item}}
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index.html new file mode 100644 index 00000000..a949d0ac --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/index.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngAnimateChildren + + + + + + + + + + + +
+ + +
+
+
+ List of items: +
Item {{item}}
+
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/manifest.json new file mode 100644 index 00000000..80161246 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngAnimateChildren", + "files": [ + "index-production.html", + "animations.css", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/script.js new file mode 100644 index 00000000..d8c23910 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateChildren/script.js @@ -0,0 +1,8 @@ +(function(angular) { + 'use strict'; +angular.module('ngAnimateChildren', ['ngAnimate']) + .controller('mainController', function() { + this.animateChildren = false; + this.enterElement = false; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/animations.css new file mode 100644 index 00000000..d3157391 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/animations.css @@ -0,0 +1,37 @@ +.container { + height:250px; + width:250px; + position:relative; + overflow:hidden; + border:2px solid black; +} +.container .cell { + font-size:150px; + text-align:center; + line-height:250px; + position:absolute; + top:0; + left:0; + right:0; + border-bottom:2px solid black; +} +.swap-animation.ng-enter, .swap-animation.ng-leave { + transition:0.5s linear all; +} +.swap-animation.ng-enter { + top:-250px; +} +.swap-animation.ng-enter-active { + top:0px; +} +.swap-animation.ng-leave { + top:0px; +} +.swap-animation.ng-leave-active { + top:250px; +} +.red { background:red; } +.green { background:green; } +.blue { background:blue; } +.yellow { background:yellow; } +.orange { background:orange; } \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-debug.html new file mode 100644 index 00000000..b29795b1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-debug.html @@ -0,0 +1,25 @@ + + + + + Example - example-ngAnimateSwap-directive-debug + + + + + + + + + + + +
+
+ {{ number }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-jquery.html new file mode 100644 index 00000000..20ec3879 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-jquery.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngAnimateSwap-directive-jquery + + + + + + + + + + + + +
+
+ {{ number }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-production.html new file mode 100644 index 00000000..849f89e7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index-production.html @@ -0,0 +1,25 @@ + + + + + Example - example-ngAnimateSwap-directive-production + + + + + + + + + + + +
+
+ {{ number }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index.html new file mode 100644 index 00000000..29c79d41 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/index.html @@ -0,0 +1,25 @@ + + + + + Example - example-ngAnimateSwap-directive + + + + + + + + + + + +
+
+ {{ number }} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/manifest.json new file mode 100644 index 00000000..820bb5b7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngAnimateSwap-directive", + "files": [ + "index-production.html", + "script.js", + "animations.css" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/script.js new file mode 100644 index 00000000..234b8306 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngAnimateSwap-directive/script.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +angular.module('ngAnimateSwapExample', ['ngAnimate']) + .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) { + $scope.number = 0; + $interval(function() { + $scope.number++; + }, 1000); + + var colors = ['red','blue','green','yellow','orange']; + $scope.colorClass = function(number) { + return colors[number % colors.length]; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index-debug.html new file mode 100644 index 00000000..1fc8dc7c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index-jquery.html new file mode 100644 index 00000000..1bdd6f0d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index-production.html new file mode 100644 index 00000000..3e8b8fc6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/index.html new file mode 100644 index 00000000..8f050d68 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/manifest.json new file mode 100644 index 00000000..738d489c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngChange-directive/protractor.js new file mode 100644 index 00000000..84691d3a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/app.js new file mode 100644 index 00000000..00ad1383 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/app.js @@ -0,0 +1,30 @@ +(function(angular) { + 'use strict'; +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 = ''; + }; +} +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-debug.html new file mode 100644 index 00000000..bb57bbfd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngController-debug + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • [ ]
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-jquery.html new file mode 100644 index 00000000..cb9c89dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngController-jquery + + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • [ ]
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-production.html new file mode 100644 index 00000000..0b00ca17 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngController-production + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • [ ]
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index.html new file mode 100644 index 00000000..6aa4ab4a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngController + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • [ ]
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/manifest.json new file mode 100644 index 00000000..ae92ea9e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngController/protractor.js new file mode 100644 index 00000000..0e3dafbd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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.buttonText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.buttonText('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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/app.js new file mode 100644 index 00000000..04aba491 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/app.js @@ -0,0 +1,30 @@ +(function(angular) { + 'use strict'; +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 = ''; +}; +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-debug.html new file mode 100644 index 00000000..9ffb9aa1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngControllerAs-debug + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-jquery.html new file mode 100644 index 00000000..33b5f456 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngControllerAs-jquery + + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-production.html new file mode 100644 index 00000000..67100af3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngControllerAs-production + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index.html new file mode 100644 index 00000000..93b2d523 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngControllerAs + + + + + + + + + +
+ +
+ Contact: +
    +
  • + + + + +
  • +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/manifest.json new file mode 100644 index 00000000..b54b3acd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngControllerAs/protractor.js new file mode 100644 index 00000000..995ed4c8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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.buttonText('clear')).click(); + + expect(firstRepeat.element(by.model('contact.value')).getAttribute('value')) + .toBe(''); + + container.element(by.buttonText('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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-debug.html new file mode 100644 index 00000000..4cfaa118 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-debug.html @@ -0,0 +1,17 @@ + + + + + Example - example-ngList-directive-newlines-debug + + + + + + + + + +
{{ list | json }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-jquery.html new file mode 100644 index 00000000..fa28e08c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-jquery.html @@ -0,0 +1,18 @@ + + + + + Example - example-ngList-directive-newlines-jquery + + + + + + + + + + +
{{ list | json }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-production.html new file mode 100644 index 00000000..6db1ecc6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index-production.html @@ -0,0 +1,17 @@ + + + + + Example - example-ngList-directive-newlines-production + + + + + + + + + +
{{ list | json }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index.html new file mode 100644 index 00000000..fbd7af9f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/index.html @@ -0,0 +1,17 @@ + + + + + Example - example-ngList-directive-newlines + + + + + + + + + +
{{ list | json }}
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/manifest.json new file mode 100644 index 00000000..887abf2e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngList-directive-newlines", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/protractor.js new file mode 100644 index 00000000..341788f2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive-newlines/protractor.js @@ -0,0 +1,6 @@ +it("should split the text by newlines", function() { + var listInput = element(by.model('list')); + var output = element(by.binding('list | json')); + listInput.sendKeys('abc\ndef\nghi'); + expect(output.getText()).toContain('[\n "abc",\n "def",\n "ghi"\n]'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/app.js new file mode 100644 index 00000000..12a486c5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/app.js @@ -0,0 +1,7 @@ +(function(angular) { + 'use strict'; +angular.module('listExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.names = ['morpheus', 'neo', 'trinity']; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-debug.html new file mode 100644 index 00000000..86cc5947 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-debug.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngList-directive-debug + + + + + + + + + +
+ + + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-jquery.html new file mode 100644 index 00000000..a42d7b46 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-jquery.html @@ -0,0 +1,30 @@ + + + + + Example - example-ngList-directive-jquery + + + + + + + + + + +
+ + + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-production.html new file mode 100644 index 00000000..2ed18d64 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index-production.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngList-directive-production + + + + + + + + + +
+ + + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index.html new file mode 100644 index 00000000..0a2b41e9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/index.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngList-directive + + + + + + + + + +
+ + + + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/manifest.json new file mode 100644 index 00000000..46ff1d99 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngList-directive", + "files": [ + "index-production.html", + "app.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/protractor.js new file mode 100644 index 00000000..f210531e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngList-directive/protractor.js @@ -0,0 +1,19 @@ +var listInput = element(by.model('names')); +var names = element(by.exactBinding('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('["morpheus","neo","trinity"]'); + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-debug.html new file mode 100644 index 00000000..2606865b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngMaxlengthDirective-debug + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-jquery.html new file mode 100644 index 00000000..84be95dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngMaxlengthDirective-jquery + + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-production.html new file mode 100644 index 00000000..1bf5249a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngMaxlengthDirective-production + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index.html new file mode 100644 index 00000000..93711539 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngMaxlengthDirective + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/manifest.json new file mode 100644 index 00000000..a2a16be5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngMaxlengthDirective", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/protractor.js new file mode 100644 index 00000000..62a1e696 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMaxlengthDirective/protractor.js @@ -0,0 +1,12 @@ +var model = element(by.binding('model')); +var input = element(by.id('input')); + +it('should validate the input with the default maxlength', function() { + input.sendKeys('abcdef'); + expect(model.getText()).not.toContain('abcdef'); + + input.clear().then(function() { + input.sendKeys('abcde'); + expect(model.getText()).toContain('abcde'); + }); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-debug.html new file mode 100644 index 00000000..6e1321f5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngMessageFormat-example-debug + + + + + + + + + + +
+
+ {{recipients.length, plural, offset:1 + =0 {{{sender.name}} gave no gifts (\#=#)} + =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)} + one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)} + other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)} + }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-jquery.html new file mode 100644 index 00000000..6d0bac69 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-ngMessageFormat-example-jquery + + + + + + + + + + + +
+
+ {{recipients.length, plural, offset:1 + =0 {{{sender.name}} gave no gifts (\#=#)} + =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)} + one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)} + other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)} + }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-production.html new file mode 100644 index 00000000..49d5b193 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngMessageFormat-example-production + + + + + + + + + + +
+
+ {{recipients.length, plural, offset:1 + =0 {{{sender.name}} gave no gifts (\#=#)} + =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)} + one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)} + other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)} + }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index.html new file mode 100644 index 00000000..e4be331e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngMessageFormat-example + + + + + + + + + + +
+
+ {{recipients.length, plural, offset:1 + =0 {{{sender.name}} gave no gifts (\#=#)} + =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)} + one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)} + other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)} + }} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/manifest.json new file mode 100644 index 00000000..7ba6f5c7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngMessageFormat-example", + "files": [ + "index-production.html", + "script.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/protractor.js new file mode 100644 index 00000000..3d3cc93f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/protractor.js @@ -0,0 +1,12 @@ +describe('MessageFormat plural', function() { + it('should pluralize initial values', function() { + var messageElem = element(by.binding('recipients.length')), decreaseRecipientsBtn = element(by.id('decreaseRecipients')); + expect(messageElem.getText()).toEqual('Harry Potter gave Alice and 2 other people a gift (#=2)'); + decreaseRecipientsBtn.click(); + expect(messageElem.getText()).toEqual('Harry Potter gave Alice and one other person a gift (#=1)'); + decreaseRecipientsBtn.click(); + expect(messageElem.getText()).toEqual('Harry Potter gave one gift to Alice (#=0)'); + decreaseRecipientsBtn.click(); + expect(messageElem.getText()).toEqual('Harry Potter gave no gifts (#=-1)'); + }); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/script.js new file mode 100644 index 00000000..0c37b9d5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessageFormat-example/script.js @@ -0,0 +1,21 @@ +(function(angular) { + 'use strict'; +function Person(name, gender) { + this.name = name; + this.gender = gender; +} + +var alice = new Person("Alice", "female"), + bob = new Person("Bob", "male"), + charlie = new Person("Charlie", "male"), + harry = new Person("Harry Potter", "male"); + +angular.module('msgFmtExample', ['ngMessageFormat']) + .controller('AppController', ['$scope', function($scope) { + $scope.recipients = [alice, bob, charlie]; + $scope.sender = harry; + $scope.decreaseRecipients = function() { + --$scope.recipients.length; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-debug.html new file mode 100644 index 00000000..dbeef7cd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-debug.html @@ -0,0 +1,37 @@ + + + + + Example - example-ngMessages-directive-debug + + + + + + + + + + +
+ +
myForm.myName.$error = {{ myForm.myName.$error | json }}
+ +
+
You did not enter a field
+
Your field is too short
+
Your field is too long
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-jquery.html new file mode 100644 index 00000000..bee99902 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-jquery.html @@ -0,0 +1,38 @@ + + + + + Example - example-ngMessages-directive-jquery + + + + + + + + + + + +
+ +
myForm.myName.$error = {{ myForm.myName.$error | json }}
+ +
+
You did not enter a field
+
Your field is too short
+
Your field is too long
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-production.html new file mode 100644 index 00000000..cc1490d2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index-production.html @@ -0,0 +1,37 @@ + + + + + Example - example-ngMessages-directive-production + + + + + + + + + + +
+ +
myForm.myName.$error = {{ myForm.myName.$error | json }}
+ +
+
You did not enter a field
+
Your field is too short
+
Your field is too long
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index.html new file mode 100644 index 00000000..e8b0ae2a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/index.html @@ -0,0 +1,37 @@ + + + + + Example - example-ngMessages-directive + + + + + + + + + + +
+ +
myForm.myName.$error = {{ myForm.myName.$error | json }}
+ +
+
You did not enter a field
+
Your field is too short
+
Your field is too long
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/manifest.json new file mode 100644 index 00000000..1918dce0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngMessages-directive", + "files": [ + "index-production.html", + "script.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/script.js new file mode 100644 index 00000000..c4ec8162 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMessages-directive/script.js @@ -0,0 +1,4 @@ +(function(angular) { + 'use strict'; +angular.module('ngMessagesExample', ['ngMessages']); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-debug.html new file mode 100644 index 00000000..fdfc2828 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngMinlengthDirective-debug + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-jquery.html new file mode 100644 index 00000000..6c4041c3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngMinlengthDirective-jquery + + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-production.html new file mode 100644 index 00000000..dea0a382 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngMinlengthDirective-production + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index.html new file mode 100644 index 00000000..6cbe7a28 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngMinlengthDirective + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/manifest.json new file mode 100644 index 00000000..5acc9f9a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngMinlengthDirective", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/protractor.js new file mode 100644 index 00000000..4edb5955 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngMinlengthDirective/protractor.js @@ -0,0 +1,10 @@ +var model = element(by.binding('model')); +var input = element(by.id('input')); + +it('should validate the input with the default minlength', function() { + input.sendKeys('ab'); + expect(model.getText()).not.toContain('ab'); + + input.sendKeys('abc'); + expect(model.getText()).toContain('abc'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/app.js new file mode 100644 index 00000000..5042eb49 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/app.js @@ -0,0 +1,16 @@ +(function(angular) { + 'use strict'; +angular.module('getterSetterExample', []) + .controller('ExampleController', ['$scope', function($scope) { + var _name = 'Brian'; + $scope.user = { + name: function(newName) { + // Note that newName can be undefined for two reasons: + // 1. Because it is called as a getter and thus called with no arguments + // 2. Because the property should actually be set to undefined. This happens e.g. if the + // input is invalid + return arguments.length ? (_name = newName) : _name; + } + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-debug.html new file mode 100644 index 00000000..974e2ddf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngModel-getter-setter-debug + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-jquery.html new file mode 100644 index 00000000..5260e089 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-ngModel-getter-setter-jquery + + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-production.html new file mode 100644 index 00000000..179a7bd7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngModel-getter-setter-production + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index.html new file mode 100644 index 00000000..ed91d422 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngModel-getter-setter + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/manifest.json new file mode 100644 index 00000000..2d8bb1e7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModel-getter-setter/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngModel-getter-setter", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/app.js new file mode 100644 index 00000000..a32a7ebf --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/app.js @@ -0,0 +1,13 @@ +(function(angular) { + 'use strict'; +angular.module('optionsExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.user = { name: 'John', data: '' }; + + $scope.cancel = function(e) { + if (e.keyCode == 27) { + $scope.userForm.userName.$rollbackViewValue(); + } + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-debug.html new file mode 100644 index 00000000..1845b5f9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-debug.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngModelOptions-directive-blur-debug + + + + + + + + + +
+
+
+
+
+
user.name = 
+
user.data = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-jquery.html new file mode 100644 index 00000000..b566332a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-jquery.html @@ -0,0 +1,32 @@ + + + + + Example - example-ngModelOptions-directive-blur-jquery + + + + + + + + + + +
+
+
+
+
+
user.name = 
+
user.data = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-production.html new file mode 100644 index 00000000..18595c29 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index-production.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngModelOptions-directive-blur-production + + + + + + + + + +
+
+
+
+
+
user.name = 
+
user.data = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index.html new file mode 100644 index 00000000..de5b9554 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/index.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngModelOptions-directive-blur + + + + + + + + + +
+
+
+
+
+
user.name = 
+
user.data = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/manifest.json new file mode 100644 index 00000000..84481b31 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-ngModelOptions-directive-blur", + "files": [ + "index-production.html", + "app.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/protractor.js new file mode 100644 index 00000000..25335f37 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-blur/protractor.js @@ -0,0 +1,20 @@ +var model = element(by.binding('user.name')); +var input = element(by.model('user.name')); +var other = element(by.model('user.data')); + +it('should allow custom events', function() { + input.sendKeys(' Doe'); + input.click(); + expect(model.getText()).toEqual('John'); + other.click(); + expect(model.getText()).toEqual('John Doe'); +}); + +it('should $rollbackViewValue when model changes', function() { + input.sendKeys(' Doe'); + expect(input.getAttribute('value')).toEqual('John Doe'); + input.sendKeys(protractor.Key.ESCAPE); + expect(input.getAttribute('value')).toEqual('John'); + other.click(); + expect(model.getText()).toEqual('John'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/app.js new file mode 100644 index 00000000..2fadf3a8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/app.js @@ -0,0 +1,7 @@ +(function(angular) { + 'use strict'; +angular.module('optionsExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.user = { name: 'Igor' }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-debug.html new file mode 100644 index 00000000..516aa6a7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-debug.html @@ -0,0 +1,28 @@ + + + + + Example - example-ngModelOptions-directive-debounce-debug + + + + + + + + + +
+
+ + +
+
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-jquery.html new file mode 100644 index 00000000..2de12df8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-jquery.html @@ -0,0 +1,29 @@ + + + + + Example - example-ngModelOptions-directive-debounce-jquery + + + + + + + + + + +
+
+ + +
+
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-production.html new file mode 100644 index 00000000..bb2b79ad --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index-production.html @@ -0,0 +1,28 @@ + + + + + Example - example-ngModelOptions-directive-debounce-production + + + + + + + + + +
+
+ + +
+
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index.html new file mode 100644 index 00000000..af686590 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/index.html @@ -0,0 +1,28 @@ + + + + + Example - example-ngModelOptions-directive-debounce + + + + + + + + + +
+
+ + +
+
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/manifest.json new file mode 100644 index 00000000..c1836815 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-debounce/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngModelOptions-directive-debounce", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/app.js new file mode 100644 index 00000000..7a374000 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/app.js @@ -0,0 +1,16 @@ +(function(angular) { + 'use strict'; +angular.module('getterSetterExample', []) + .controller('ExampleController', ['$scope', function($scope) { + var _name = 'Brian'; + $scope.user = { + name: function(newName) { + // Note that newName can be undefined for two reasons: + // 1. Because it is called as a getter and thus called with no arguments + // 2. Because the property should actually be set to undefined. This happens e.g. if the + // input is invalid + return arguments.length ? (_name = newName) : _name; + } + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-debug.html new file mode 100644 index 00000000..22659dec --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngModelOptions-directive-getter-setter-debug + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-jquery.html new file mode 100644 index 00000000..5df99814 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-ngModelOptions-directive-getter-setter-jquery + + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-production.html new file mode 100644 index 00000000..a2ff9fc4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngModelOptions-directive-getter-setter-production + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index.html new file mode 100644 index 00000000..f2b3d9dc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngModelOptions-directive-getter-setter + + + + + + + + + +
+
+ +
+
user.name = 
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/manifest.json new file mode 100644 index 00000000..3fbf3d7b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngModelOptions-directive-getter-setter/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngModelOptions-directive-getter-setter", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-debug.html new file mode 100644 index 00000000..7ac11a4c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngPatternDirective-debug + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-jquery.html new file mode 100644 index 00000000..f1fc2ae1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngPatternDirective-jquery + + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-production.html new file mode 100644 index 00000000..fa5ba048 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngPatternDirective-production + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index.html new file mode 100644 index 00000000..47daeb5d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngPatternDirective + + + + + + + + + +
+
+ + +
+ +
+
+ input valid? = {{form.input.$valid}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/manifest.json new file mode 100644 index 00000000..257a4f2a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngPatternDirective", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/protractor.js new file mode 100644 index 00000000..9b807ef0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngPatternDirective/protractor.js @@ -0,0 +1,12 @@ +var model = element(by.binding('model')); +var input = element(by.id('input')); + +it('should validate the input with the default pattern', function() { + input.sendKeys('aaa'); + expect(model.getText()).not.toContain('aaa'); + + input.clear().then(function() { + input.sendKeys('123'); + expect(model.getText()).toContain('123'); + }); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/animations.css new file mode 100644 index 00000000..21301cd7 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/animations.css @@ -0,0 +1,33 @@ +.example-animate-container { + background:white; + border:1px solid black; + list-style:none; + margin:0; + padding:0 10px; +} + +.animate-repeat { + line-height:30px; + list-style:none; + box-sizing:border-box; +} + +.animate-repeat.ng-move, +.animate-repeat.ng-enter, +.animate-repeat.ng-leave { + 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:30px; +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-debug.html new file mode 100644 index 00000000..2988bf84 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-debug.html @@ -0,0 +1,30 @@ + + + + + Example - example-ngRepeat-debug + + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
  • + No results found... +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-jquery.html new file mode 100644 index 00000000..93b0de80 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-jquery.html @@ -0,0 +1,31 @@ + + + + + Example - example-ngRepeat-jquery + + + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
  • + No results found... +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-production.html new file mode 100644 index 00000000..eb309086 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index-production.html @@ -0,0 +1,30 @@ + + + + + Example - example-ngRepeat-production + + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
  • + No results found... +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index.html new file mode 100644 index 00000000..c2b9ae28 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/index.html @@ -0,0 +1,30 @@ + + + + + Example - example-ngRepeat + + + + + + + + + + + +
+ I have {{friends.length}} friends. They are: + +
    +
  • + [{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old. +
  • +
  • + No results found... +
  • +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/manifest.json new file mode 100644 index 00000000..a7379153 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/manifest.json @@ -0,0 +1,9 @@ +{ + "name": "example-ngRepeat", + "files": [ + "index-production.html", + "script.js", + "animations.css", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/protractor.js new file mode 100644 index 00000000..b90d6fb6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/script.js new file mode 100644 index 00000000..66c9039f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRepeat/script.js @@ -0,0 +1,17 @@ +(function(angular) { + 'use strict'; +angular.module('ngRepeat', ['ngAnimate']).controller('repeatController', function($scope) { + $scope.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'} + ]; +}); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-debug.html new file mode 100644 index 00000000..66b5f2b1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-debug.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngRequiredDirective-debug + + + + + + + + + +
+
+ + +
+ +
+
+ required error set? = {{form.input.$error.required}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-jquery.html new file mode 100644 index 00000000..e243709f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-jquery.html @@ -0,0 +1,34 @@ + + + + + Example - example-ngRequiredDirective-jquery + + + + + + + + + + +
+
+ + +
+ +
+
+ required error set? = {{form.input.$error.required}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-production.html new file mode 100644 index 00000000..5161c7c6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index-production.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngRequiredDirective-production + + + + + + + + + +
+
+ + +
+ +
+
+ required error set? = {{form.input.$error.required}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index.html new file mode 100644 index 00000000..98415497 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/index.html @@ -0,0 +1,33 @@ + + + + + Example - example-ngRequiredDirective + + + + + + + + + +
+
+ + +
+ +
+
+ required error set? = {{form.input.$error.required}}
+ model = {{model}} +
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/manifest.json new file mode 100644 index 00000000..5fd71273 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngRequiredDirective", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/protractor.js new file mode 100644 index 00000000..4b132864 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngRequiredDirective/protractor.js @@ -0,0 +1,11 @@ +var required = element(by.binding('form.input.$error.required')); +var model = element(by.binding('model')); +var input = element(by.id('input')); + +it('should set the required error', function() { + expect(required.getText()).toContain('true'); + + input.sendKeys('123'); + expect(required.getText()).not.toContain('true'); + expect(model.getText()).toContain('123'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index-debug.html new file mode 100644 index 00000000..534eb70b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index-jquery.html new file mode 100644 index 00000000..344b1ce1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index-production.html new file mode 100644 index 00000000..7bceeafa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/index.html new file mode 100644 index 00000000..b434e8ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/manifest.json new file mode 100644 index 00000000..1e8f8974 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngValue-directive/protractor.js new file mode 100644 index 00000000..fd6ff127 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/animations.css b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/animations.css new file mode 100644 index 00000000..63356d94 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/animations.css @@ -0,0 +1,37 @@ +.view-animate-container { + position:relative; + height:100px!important; + background:white; + border:1px solid black; + height:40px; + overflow:hidden; +} + +.view-animate { + padding:10px; +} + +.view-animate.ng-enter, .view-animate.ng-leave { + 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/book.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/book.html new file mode 100644 index 00000000..df473cc3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/chapter.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/chapter.html new file mode 100644 index 00000000..390a0d8e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-debug.html new file mode 100644 index 00000000..dd60d3bd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-debug.html @@ -0,0 +1,39 @@ + + + + + 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}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-jquery.html new file mode 100644 index 00000000..47ac99ff --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-jquery.html @@ -0,0 +1,40 @@ + + + + + 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}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-production.html new file mode 100644 index 00000000..77e3d9b0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index-production.html @@ -0,0 +1,39 @@ + + + + + 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}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index.html new file mode 100644 index 00000000..8e71e590 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/index.html @@ -0,0 +1,39 @@ + + + + + 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}}
+
$routeParams = {{main.$routeParams}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/manifest.json new file mode 100644 index 00000000..5ebc47d0 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/protractor.js new file mode 100644 index 00000000..afd460a9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/script.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/script.js new file mode 100644 index 00000000..370722ef --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngView-directive/script.js @@ -0,0 +1,34 @@ +(function(angular) { + 'use strict'; +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; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/app.js new file mode 100644 index 00000000..7805f0ae --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/app.js @@ -0,0 +1,14 @@ +(function(angular) { + 'use strict'; +angular.module('ngrepeatSelect', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.data = { + repeatSelect: null, + availableOptions: [ + {id: '1', name: 'Option A'}, + {id: '2', name: 'Option B'}, + {id: '3', name: 'Option C'} + ], + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-debug.html new file mode 100644 index 00000000..a4b885d1 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngrepeat-select-debug + + + + + + + + + +
+
+ + +
+
+ repeatSelect = {{data.repeatSelect}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-jquery.html new file mode 100644 index 00000000..b7e19031 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-ngrepeat-select-jquery + + + + + + + + + + +
+
+ + +
+
+ repeatSelect = {{data.repeatSelect}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-production.html new file mode 100644 index 00000000..b3315906 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngrepeat-select-production + + + + + + + + + +
+
+ + +
+
+ repeatSelect = {{data.repeatSelect}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index.html new file mode 100644 index 00000000..37270240 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-ngrepeat-select + + + + + + + + + +
+
+ + +
+
+ repeatSelect = {{data.repeatSelect}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/manifest.json new file mode 100644 index 00000000..b148b3bd --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-ngrepeat-select/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-ngrepeat-select", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-debug.html new file mode 100644 index 00000000..fd97b073 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-debug.html @@ -0,0 +1,40 @@ + + + + + Example - example-number-input-directive-debug + + + + + + + + + +
+ +
+ + Required! + + Not valid number! +
+ value = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-jquery.html new file mode 100644 index 00000000..beb19a6d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-jquery.html @@ -0,0 +1,41 @@ + + + + + Example - example-number-input-directive-jquery + + + + + + + + + + +
+ +
+ + Required! + + Not valid number! +
+ value = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-production.html new file mode 100644 index 00000000..be1ce884 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index-production.html @@ -0,0 +1,40 @@ + + + + + Example - example-number-input-directive-production + + + + + + + + + +
+ +
+ + Required! + + Not valid number! +
+ value = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index.html new file mode 100644 index 00000000..707e669c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/index.html @@ -0,0 +1,40 @@ + + + + + Example - example-number-input-directive + + + + + + + + + +
+ +
+ + Required! + + Not valid number! +
+ value = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/manifest.json new file mode 100644 index 00000000..514d04f3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/protractor.js new file mode 100644 index 00000000..623877e3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-number-input-directive/protractor.js @@ -0,0 +1,22 @@ +var value = element(by.binding('example.value')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-debug.html new file mode 100644 index 00000000..e358a058 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-debug.html @@ -0,0 +1,43 @@ + + + + + Example - example-radio-input-directive-debug + + + + + + + + + +
+
+
+
+ color = {{color.name | 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-jquery.html new file mode 100644 index 00000000..651e1f46 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-jquery.html @@ -0,0 +1,44 @@ + + + + + Example - example-radio-input-directive-jquery + + + + + + + + + + +
+
+
+
+ color = {{color.name | 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-production.html new file mode 100644 index 00000000..b4ae1fc8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index-production.html @@ -0,0 +1,43 @@ + + + + + Example - example-radio-input-directive-production + + + + + + + + + +
+
+
+
+ color = {{color.name | 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index.html new file mode 100644 index 00000000..11b8a03a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/index.html @@ -0,0 +1,43 @@ + + + + + Example - example-radio-input-directive + + + + + + + + + +
+
+
+
+ color = {{color.name | 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/manifest.json new file mode 100644 index 00000000..863bef42 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/protractor.js new file mode 100644 index 00000000..ef0ebbe2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-radio-input-directive/protractor.js @@ -0,0 +1,9 @@ +it('should change state', function() { + var color = element(by.binding('color.name')); + + expect(color.getText()).toContain('blue'); + + element.all(by.model('color.name')).get(0).click(); + + expect(color.getText()).toContain('red'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/app.js new file mode 100644 index 00000000..2c9d7742 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/app.js @@ -0,0 +1,14 @@ +(function(angular) { + 'use strict'; +angular.module('defaultValueSelect', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.data = { + availableOptions: [ + {id: '1', name: 'Option A'}, + {id: '2', name: 'Option B'}, + {id: '3', name: 'Option C'} + ], + selectedOption: {id: '3', name: 'Option C'} //This sets the default value of the select in the ui + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-debug.html new file mode 100644 index 00000000..c2e28c50 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-debug.html @@ -0,0 +1,26 @@ + + + + + Example - example-select-with-default-values-debug + + + + + + + + + +
+
+ + +
+
+ option = {{data.selectedOption}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-jquery.html new file mode 100644 index 00000000..6f962ba6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-jquery.html @@ -0,0 +1,27 @@ + + + + + Example - example-select-with-default-values-jquery + + + + + + + + + + +
+
+ + +
+
+ option = {{data.selectedOption}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-production.html new file mode 100644 index 00000000..1630c188 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index-production.html @@ -0,0 +1,26 @@ + + + + + Example - example-select-with-default-values-production + + + + + + + + + +
+
+ + +
+
+ option = {{data.selectedOption}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index.html new file mode 100644 index 00000000..1fe3529e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/index.html @@ -0,0 +1,26 @@ + + + + + Example - example-select-with-default-values + + + + + + + + + +
+
+ + +
+
+ option = {{data.selectedOption}}
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/manifest.json new file mode 100644 index 00000000..99cca6df --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-default-values/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-select-with-default-values", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/app.js new file mode 100644 index 00000000..bcfb1676 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/app.js @@ -0,0 +1,20 @@ +(function(angular) { + 'use strict'; +angular.module('nonStringSelect', []) + .run(function($rootScope) { + $rootScope.model = { id: 2 }; + }) + .directive('convertToNumber', function() { + return { + require: 'ngModel', + link: function(scope, element, attrs, ngModel) { + ngModel.$parsers.push(function(val) { + return parseInt(val, 10); + }); + ngModel.$formatters.push(function(val) { + return '' + val; + }); + } + }; + }); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-debug.html new file mode 100644 index 00000000..890606d5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-debug.html @@ -0,0 +1,22 @@ + + + + + Example - example-select-with-non-string-options-debug + + + + + + + + + + +{{ model }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-jquery.html new file mode 100644 index 00000000..fd24bd45 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-jquery.html @@ -0,0 +1,23 @@ + + + + + Example - example-select-with-non-string-options-jquery + + + + + + + + + + + +{{ model }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-production.html new file mode 100644 index 00000000..9a9ad934 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index-production.html @@ -0,0 +1,22 @@ + + + + + Example - example-select-with-non-string-options-production + + + + + + + + + + +{{ model }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index.html new file mode 100644 index 00000000..4737afb4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/index.html @@ -0,0 +1,22 @@ + + + + + Example - example-select-with-non-string-options + + + + + + + + + + +{{ model }} + + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/manifest.json new file mode 100644 index 00000000..baf90744 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/manifest.json @@ -0,0 +1,8 @@ +{ + "name": "example-select-with-non-string-options", + "files": [ + "index-production.html", + "app.js", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/protractor.js new file mode 100644 index 00000000..29bf01f6 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-select-with-non-string-options/protractor.js @@ -0,0 +1,4 @@ +it('should initialize to model', function() { + var select = element(by.css('select')); + expect(element(by.model('model.id')).$('option:checked').getText()).toEqual('Two'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-debug.html new file mode 100644 index 00000000..5daf2b3a --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-debug.html @@ -0,0 +1,38 @@ + + + + + Example - example-simpleTranscludeExample-debug + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-jquery.html new file mode 100644 index 00000000..3ee625e9 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-jquery.html @@ -0,0 +1,39 @@ + + + + + Example - example-simpleTranscludeExample-jquery + + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-production.html new file mode 100644 index 00000000..f5e7426f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index-production.html @@ -0,0 +1,38 @@ + + + + + Example - example-simpleTranscludeExample-production + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index.html new file mode 100644 index 00000000..2d9fb6f4 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/index.html @@ -0,0 +1,38 @@ + + + + + Example - example-simpleTranscludeExample + + + + + + + + + +
+
+
+ {{text}} +
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/manifest.json new file mode 100644 index 00000000..5c9608ba --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-simpleTranscludeExample", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/protractor.js new file mode 100644 index 00000000..fb43905b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-simpleTranscludeExample/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/app.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/app.js new file mode 100644 index 00000000..d7511015 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/app.js @@ -0,0 +1,15 @@ +(function(angular) { + 'use strict'; +angular.module('staticSelect', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.data = { + singleSelect: null, + multipleSelect: [], + option1: 'option-1', + }; + + $scope.forceUnknownOption = function() { + $scope.data.singleSelect = 'nonsense'; + }; + }]); +})(window.angular); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-debug.html new file mode 100644 index 00000000..e6947b9d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-debug.html @@ -0,0 +1,43 @@ + + + + + Example - example-static-select-debug + + + + + + + + + +
+
+
+
+ +
+
+
+ singleSelect = {{data.singleSelect}} + +
+
+
+ multipleSelect = {{data.multipleSelect}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-jquery.html new file mode 100644 index 00000000..aaf40daa --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-jquery.html @@ -0,0 +1,44 @@ + + + + + Example - example-static-select-jquery + + + + + + + + + + +
+
+
+
+ +
+
+
+ singleSelect = {{data.singleSelect}} + +
+
+
+ multipleSelect = {{data.multipleSelect}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-production.html new file mode 100644 index 00000000..6bf6038d --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index-production.html @@ -0,0 +1,43 @@ + + + + + Example - example-static-select-production + + + + + + + + + +
+
+
+
+ +
+
+
+ singleSelect = {{data.singleSelect}} + +
+
+
+ multipleSelect = {{data.multipleSelect}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index.html new file mode 100644 index 00000000..6e7a1fc5 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/index.html @@ -0,0 +1,43 @@ + + + + + Example - example-static-select + + + + + + + + + +
+
+
+
+ +
+
+
+ singleSelect = {{data.singleSelect}} + +
+
+
+ multipleSelect = {{data.multipleSelect}}
+
+
+ + \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/manifest.json new file mode 100644 index 00000000..3b098d1b --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-static-select/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-static-select", + "files": [ + "index-production.html", + "app.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-debug.html new file mode 100644 index 00000000..a7c39a15 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-debug.html @@ -0,0 +1,41 @@ + + + + + Example - example-text-input-directive-debug + + + + + + + + + +
+ +
+ + Required! + + Single word only! +
+ text = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-jquery.html new file mode 100644 index 00000000..33f46699 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-jquery.html @@ -0,0 +1,42 @@ + + + + + Example - example-text-input-directive-jquery + + + + + + + + + + +
+ +
+ + Required! + + Single word only! +
+ text = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-production.html new file mode 100644 index 00000000..5ddaa154 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index-production.html @@ -0,0 +1,41 @@ + + + + + Example - example-text-input-directive-production + + + + + + + + + +
+ +
+ + Required! + + Single word only! +
+ text = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index.html new file mode 100644 index 00000000..7bdd6d0f --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/index.html @@ -0,0 +1,41 @@ + + + + + Example - example-text-input-directive + + + + + + + + + +
+ +
+ + Required! + + Single word only! +
+ text = {{example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/manifest.json new file mode 100644 index 00000000..2612b8ac --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/protractor.js new file mode 100644 index 00000000..dcf124d8 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-text-input-directive/protractor.js @@ -0,0 +1,23 @@ +var text = element(by.binding('example.text')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('example.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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-debug.html new file mode 100644 index 00000000..1ede2662 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-debug.html @@ -0,0 +1,39 @@ + + + + + Example - example-time-input-directive-debug + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "HH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-jquery.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-jquery.html new file mode 100644 index 00000000..62a963cc --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-jquery.html @@ -0,0 +1,40 @@ + + + + + Example - example-time-input-directive-jquery + + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "HH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-production.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-production.html new file mode 100644 index 00000000..10633f7e --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index-production.html @@ -0,0 +1,39 @@ + + + + + Example - example-time-input-directive-production + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "HH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index.html new file mode 100644 index 00000000..8256e2c3 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/index.html @@ -0,0 +1,39 @@ + + + + + Example - example-time-input-directive + + + + + + + + + +
+ + +
+ + Required! + + Not a valid date! +
+ value = {{example.value | date: "HH:mm:ss"}}
+ 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/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/manifest.json b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/manifest.json new file mode 100644 index 00000000..fdf77102 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "example-time-input-directive", + "files": [ + "index-production.html", + "protractor.js" + ] +} \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/protractor.js b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/protractor.js new file mode 100644 index 00000000..dc5d940c --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-time-input-directive/protractor.js @@ -0,0 +1,31 @@ +var value = element(by.binding('example.value | date: "HH:mm:ss"')); +var valid = element(by.binding('myForm.input.$valid')); +var input = element(by.model('example.value')); + +// currently protractor/webdriver does not support +// sending keys to all known HTML5 input controls +// for various browsers (https://github.com/angular/protractor/issues/562). +function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); +} + +it('should initialize to model', function() { + expect(value.getText()).toContain('14:57:00'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); +}); + +it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); + +it('should be invalid if over max', function() { + setInput('23:59:00'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); +}); \ No newline at end of file diff --git a/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-url-input-directive/index-debug.html b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-url-input-directive/index-debug.html new file mode 100644 index 00000000..e38ce2d2 --- /dev/null +++ b/Sunra/AngularBundle/Resources/public/js/angular/angular-1.5.5/docs/examples/example-url-input-directive/index-debug.html @@ -0,0 +1,40 @@ + + + + + Example - example-url-input-directive-debug + + + + + + + + + +
+