rails-angularjs 1.3.12 → 1.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/rails-angularjs/version.rb +2 -2
- data/vendor/assets/javascripts/{angularjs/angular-animate.js → angular-animate.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-animate.min.js → angular-animate.min.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-aria.js → angular-aria.js} +16 -6
- data/vendor/assets/javascripts/angular-aria.min.js +12 -0
- data/vendor/assets/javascripts/{angularjs/angular-cookies.js → angular-cookies.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-cookies.min.js → angular-cookies.min.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-loader.js → angular-loader.js} +2 -2
- data/vendor/assets/javascripts/{angularjs/angular-loader.min.js → angular-loader.min.js} +2 -2
- data/vendor/assets/javascripts/{angularjs/angular-messages.js → angular-messages.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-messages.min.js → angular-messages.min.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-mocks.js → angular-mocks.js} +2 -2
- data/vendor/assets/javascripts/{angularjs/angular-resource.js → angular-resource.js} +2 -1
- data/vendor/assets/javascripts/{angularjs/angular-resource.min.js → angular-resource.min.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-route.js → angular-route.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-route.min.js → angular-route.min.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-sanitize.js → angular-sanitize.js} +7 -19
- data/vendor/assets/javascripts/angular-sanitize.min.js +16 -0
- data/vendor/assets/javascripts/{angularjs/angular-scenario.js → angular-scenario.js} +89 -38
- data/vendor/assets/javascripts/{angularjs/angular-touch.js → angular-touch.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular-touch.min.js → angular-touch.min.js} +1 -1
- data/vendor/assets/javascripts/{angularjs/angular.js → angular.js} +89 -38
- data/vendor/assets/javascripts/angular.min.js +250 -0
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-animate.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-animate.min.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-aria.js +16 -6
- data/vendor/assets/javascripts/unstable/angular-aria.min.js +12 -0
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-cookies.min.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-loader.js +2 -2
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-loader.min.js +2 -2
- data/vendor/assets/javascripts/unstable/angular-messages.js +644 -0
- data/vendor/assets/javascripts/unstable/angular-messages.min.js +12 -0
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-mocks.js +2 -2
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-resource.js +3 -2
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-resource.min.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-route.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-route.min.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-sanitize.js +12 -22
- data/vendor/assets/javascripts/unstable/angular-sanitize.min.js +16 -0
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-scenario.js +317 -155
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-touch.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular-touch.min.js +1 -1
- data/vendor/assets/javascripts/{angularjs/unstable → unstable}/angular.js +317 -155
- data/vendor/assets/javascripts/unstable/angular.min.js +282 -0
- metadata +46 -46
- data/vendor/assets/javascripts/angularjs/angular-aria.min.js +0 -12
- data/vendor/assets/javascripts/angularjs/angular-sanitize.min.js +0 -16
- data/vendor/assets/javascripts/angularjs/angular.min.js +0 -250
- data/vendor/assets/javascripts/angularjs/unstable/angular-aria.min.js +0 -12
- data/vendor/assets/javascripts/angularjs/unstable/angular-messages.js +0 -400
- data/vendor/assets/javascripts/angularjs/unstable/angular-messages.min.js +0 -10
- data/vendor/assets/javascripts/angularjs/unstable/angular-sanitize.min.js +0 -16
- data/vendor/assets/javascripts/angularjs/unstable/angular.min.js +0 -281
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90a69e266a797d2c64aa28343e058f1978094d92
|
4
|
+
data.tar.gz: 6cfe1c1ec8cc27bfae8290422823b778a678667f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa57831b261244a2f715c15bde97559f7dd52f6737902d6cf06ecd14cb89354dd1ae28ff746862f6e47a0746371847b15636146725cd5c38e909c69ad63daf2e
|
7
|
+
data.tar.gz: 749f36044b85738341e1d2710639815129719ddce2cb6ea0dabd8a03ac81a4663fa966d5539e00b536da1bf2e100ae3a5897f1b2eb32e3491d9835b0112b8dec
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.14
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -105,7 +105,8 @@ function $AriaProvider() {
|
|
105
105
|
* - **ariaMultiline** – `{boolean}` – Enables/disables aria-multiline tags
|
106
106
|
* - **ariaValue** – `{boolean}` – Enables/disables aria-valuemin, aria-valuemax and aria-valuenow tags
|
107
107
|
* - **tabindex** – `{boolean}` – Enables/disables tabindex tags
|
108
|
-
* - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on
|
108
|
+
* - **bindKeypress** – `{boolean}` – Enables/disables keypress event binding on `<div>` and
|
109
|
+
* `<li>` elements with ng-click
|
109
110
|
*
|
110
111
|
* @description
|
111
112
|
* Enables/disables various ARIA attributes
|
@@ -133,6 +134,7 @@ function $AriaProvider() {
|
|
133
134
|
* @name $aria
|
134
135
|
*
|
135
136
|
* @description
|
137
|
+
* @priority 200
|
136
138
|
*
|
137
139
|
* The $aria service contains helper methods for applying common
|
138
140
|
* [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
|
@@ -209,6 +211,7 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
209
211
|
return {
|
210
212
|
restrict: 'A',
|
211
213
|
require: '?ngModel',
|
214
|
+
priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value
|
212
215
|
link: function(scope, elem, attr, ngModel) {
|
213
216
|
var shape = getShape(attr, elem);
|
214
217
|
var needsTabIndex = shouldAttachAttr('tabindex', 'tabindex', elem);
|
@@ -221,19 +224,19 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
221
224
|
if (needsTabIndex) {
|
222
225
|
needsTabIndex = false;
|
223
226
|
return function ngAriaRadioReaction(newVal) {
|
224
|
-
var boolVal =
|
227
|
+
var boolVal = (attr.value == ngModel.$viewValue);
|
225
228
|
elem.attr('aria-checked', boolVal);
|
226
229
|
elem.attr('tabindex', 0 - !boolVal);
|
227
230
|
};
|
228
231
|
} else {
|
229
232
|
return function ngAriaRadioReaction(newVal) {
|
230
|
-
elem.attr('aria-checked',
|
233
|
+
elem.attr('aria-checked', (attr.value == ngModel.$viewValue));
|
231
234
|
};
|
232
235
|
}
|
233
236
|
}
|
234
237
|
|
235
238
|
function ngAriaCheckboxReaction(newVal) {
|
236
|
-
elem.attr('aria-checked',
|
239
|
+
elem.attr('aria-checked', !ngModel.$isEmpty(ngModel.$viewValue));
|
237
240
|
}
|
238
241
|
|
239
242
|
switch (shape) {
|
@@ -308,11 +311,18 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
308
311
|
compile: function(elem, attr) {
|
309
312
|
var fn = $parse(attr.ngClick, /* interceptorFn */ null, /* expensiveChecks */ true);
|
310
313
|
return function(scope, elem, attr) {
|
314
|
+
|
315
|
+
function isNodeOneOf(elem, nodeTypeArray) {
|
316
|
+
if (nodeTypeArray.indexOf(elem[0].nodeName) !== -1) {
|
317
|
+
return true;
|
318
|
+
}
|
319
|
+
}
|
320
|
+
|
311
321
|
if ($aria.config('tabindex') && !elem.attr('tabindex')) {
|
312
322
|
elem.attr('tabindex', 0);
|
313
323
|
}
|
314
324
|
|
315
|
-
if ($aria.config('bindKeypress') && !attr.ngKeypress) {
|
325
|
+
if ($aria.config('bindKeypress') && !attr.ngKeypress && isNodeOneOf(elem, ['DIV', 'LI'])) {
|
316
326
|
elem.on('keypress', function(event) {
|
317
327
|
if (event.keyCode === 32 || event.keyCode === 13) {
|
318
328
|
scope.$apply(callback);
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/*
|
2
|
+
AngularJS v1.3.14
|
3
|
+
(c) 2010-2014 Google, Inc. http://angularjs.org
|
4
|
+
License: MIT
|
5
|
+
*/
|
6
|
+
(function(q,m,r){'use strict';m.module("ngAria",["ng"]).provider("$aria",function(){function a(a,f,b){return function(d,c,h){var k=h.$normalize(f);e[k]&&!h[k]&&d.$watch(h[a],function(d){b&&(d=!d);c.attr(f,d)})}}var e={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0};this.config=function(a){e=m.extend(e,a)};this.$get=function(){return{config:function(a){return e[a]},$$watchExpr:a}}}).directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow",
|
7
|
+
"aria-hidden",!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(a){function e(e,b,d){return a.config(b)&&!d.attr(e)}function g(a,b){var d=a.type,c=a.role;return"checkbox"===(d||c)||"menuitemcheckbox"===c?"checkbox":"radio"===(d||c)||"menuitemradio"===c?"radio":"range"===d||"progressbar"===c||"slider"===c?"range":"textbox"===(d||c)||"TEXTAREA"===b[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",
|
8
|
+
priority:200,link:function(f,b,d,c){function h(){return c.$modelValue}function k(){return l?(l=!1,function(a){a=d.value==c.$viewValue;b.attr("aria-checked",a);b.attr("tabindex",0-!a)}):function(a){b.attr("aria-checked",d.value==c.$viewValue)}}function p(a){b.attr("aria-checked",!c.$isEmpty(c.$viewValue))}var n=g(d,b),l=e("tabindex","tabindex",b);switch(n){case "radio":case "checkbox":e("aria-checked","ariaChecked",b)&&f.$watch(h,"radio"===n?k():p);break;case "range":a.config("ariaValue")&&(d.min&&
|
9
|
+
!b.attr("aria-valuemin")&&b.attr("aria-valuemin",d.min),d.max&&!b.attr("aria-valuemax")&&b.attr("aria-valuemax",d.max),b.attr("aria-valuenow")||f.$watch(h,function(a){b.attr("aria-valuenow",a)}));break;case "multiline":e("aria-multiline","ariaMultiline",b)&&b.attr("aria-multiline",!0)}l&&b.attr("tabindex",0);c.$validators.required&&e("aria-required","ariaRequired",b)&&f.$watch(function(){return c.$error.required},function(a){b.attr("aria-required",!!a)});e("aria-invalid","ariaInvalid",b)&&f.$watch(function(){return c.$invalid},
|
10
|
+
function(a){b.attr("aria-invalid",!!a)})}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,e,g,f){e.attr("aria-live")||e.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,e){return{restrict:"A",compile:function(g,f){var b=e(f.ngClick,null,!0);return function(d,c,e){function f(a,b){if(-1!==b.indexOf(a[0].nodeName))return!0}
|
11
|
+
a.config("tabindex")&&!c.attr("tabindex")&&c.attr("tabindex",0);if(a.config("bindKeypress")&&!e.ngKeypress&&f(c,["DIV","LI"]))c.on("keypress",function(a){function c(){b(d,{$event:a})}32!==a.keyCode&&13!==a.keyCode||d.$apply(c)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(e,g,f){a.config("tabindex")&&!g.attr("tabindex")&&g.attr("tabindex",0)}}])})(window,window.angular);
|
12
|
+
//# sourceMappingURL=angular-aria.min.js.map
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.14
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -55,7 +55,7 @@ function minErr(module, ErrorConstructor) {
|
|
55
55
|
return match;
|
56
56
|
});
|
57
57
|
|
58
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
58
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.14/' +
|
59
59
|
(module ? module + '/' : '') + code;
|
60
60
|
for (i = 2; i < arguments.length; i++) {
|
61
61
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -1,9 +1,9 @@
|
|
1
1
|
/*
|
2
|
-
AngularJS v1.3.
|
2
|
+
AngularJS v1.3.14
|
3
3
|
(c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
License: MIT
|
5
5
|
*/
|
6
|
-
(function(){'use strict';function d(b){return function(){var c=arguments[0],e;e="["+(b?b+":":"")+c+"] http://errors.angularjs.org/1.3.
|
6
|
+
(function(){'use strict';function d(b){return function(){var c=arguments[0],e;e="["+(b?b+":":"")+c+"] http://errors.angularjs.org/1.3.14/"+(b?b+"/":"")+c;for(c=1;c<arguments.length;c++){e=e+(1==c?"?":"&")+"p"+(c-1)+"=";var d=encodeURIComponent,a;a=arguments[c];a="function"==typeof a?a.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof a?"undefined":"string"!=typeof a?JSON.stringify(a):a;e+=d(a)}return Error(e)}}(function(b){function c(a,c,b){return a[c]||(a[c]=b())}var e=d("$injector"),n=d("ng");
|
7
7
|
b=c(b,"angular",Object);b.$$minErr=b.$$minErr||d;return c(b,"module",function(){var a={};return function(b,d,g){if("hasOwnProperty"===b)throw n("badname","module");d&&a.hasOwnProperty(b)&&(a[b]=null);return c(a,b,function(){function a(b,d,e,f){f||(f=c);return function(){f[e||"push"]([b,d,arguments]);return h}}if(!d)throw e("nomod",b);var c=[],k=[],l=[],m=a("$injector","invoke","push",k),h={_invokeQueue:c,_configBlocks:k,_runBlocks:l,requires:d,name:b,provider:a("$provide","provider"),factory:a("$provide",
|
8
8
|
"factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:m,run:function(a){l.push(a);return this}};g&&m(g);return h})}})})(window)})(window);
|
9
9
|
//# sourceMappingURL=angular-loader.min.js.map
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.14
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -2134,7 +2134,7 @@ angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) {
|
|
2134
2134
|
if (window.jasmine || window.mocha) {
|
2135
2135
|
|
2136
2136
|
var currentSpec = null,
|
2137
|
-
annotatedFunctions,
|
2137
|
+
annotatedFunctions = [],
|
2138
2138
|
isSpecRunning = function() {
|
2139
2139
|
return !!currentSpec;
|
2140
2140
|
};
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.14
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -213,6 +213,7 @@ function shallowClearAndCopy(src, dst) {
|
|
213
213
|
* - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])`
|
214
214
|
* - non-GET instance actions: `instance.$action([parameters], [success], [error])`
|
215
215
|
*
|
216
|
+
*
|
216
217
|
* Success callback is called with (value, responseHeaders) arguments. Error callback is called
|
217
218
|
* with (httpResponse) argument.
|
218
219
|
*
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.
|
2
|
+
* @license AngularJS v1.3.14
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -341,7 +341,8 @@ function htmlParser(html, handler) {
|
|
341
341
|
}
|
342
342
|
|
343
343
|
} else {
|
344
|
-
|
344
|
+
// IE versions 9 and 10 do not understand the regex '[^]', so using a workaround with [\W\w].
|
345
|
+
html = html.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*" + stack.last() + "[^>]*>", 'i'),
|
345
346
|
function(all, text) {
|
346
347
|
text = text.replace(COMMENT_REGEXP, "$1").replace(CDATA_REGEXP, "$1");
|
347
348
|
|
@@ -415,7 +416,6 @@ function htmlParser(html, handler) {
|
|
415
416
|
}
|
416
417
|
|
417
418
|
var hiddenPre=document.createElement("pre");
|
418
|
-
var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
|
419
419
|
/**
|
420
420
|
* decodes all entities into regular string
|
421
421
|
* @param value
|
@@ -424,22 +424,10 @@ var spaceRe = /^(\s*)([\s\S]*?)(\s*)$/;
|
|
424
424
|
function decodeEntities(value) {
|
425
425
|
if (!value) { return ''; }
|
426
426
|
|
427
|
-
|
428
|
-
//
|
429
|
-
|
430
|
-
|
431
|
-
var spaceAfter = parts[3];
|
432
|
-
var content = parts[2];
|
433
|
-
if (content) {
|
434
|
-
hiddenPre.innerHTML=content.replace(/</g,"<");
|
435
|
-
// innerText depends on styling as it doesn't display hidden elements.
|
436
|
-
// Therefore, it's better to use textContent not to cause unnecessary
|
437
|
-
// reflows. However, IE<9 don't support textContent so the innerText
|
438
|
-
// fallback is necessary.
|
439
|
-
content = 'textContent' in hiddenPre ?
|
440
|
-
hiddenPre.textContent : hiddenPre.innerText;
|
441
|
-
}
|
442
|
-
return spaceBefore + content + spaceAfter;
|
427
|
+
hiddenPre.innerHTML = value.replace(/</g,"<");
|
428
|
+
// innerText depends on styling as it doesn't display hidden elements.
|
429
|
+
// Therefore, it's better to use textContent not to cause unnecessary reflows.
|
430
|
+
return hiddenPre.textContent;
|
443
431
|
}
|
444
432
|
|
445
433
|
/**
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/*
|
2
|
+
AngularJS v1.3.14
|
3
|
+
(c) 2010-2014 Google, Inc. http://angularjs.org
|
4
|
+
License: MIT
|
5
|
+
*/
|
6
|
+
(function(n,h,p){'use strict';function E(a){var e=[];r(e,h.noop).chars(a);return e.join("")}function g(a){var e={};a=a.split(",");var d;for(d=0;d<a.length;d++)e[a[d]]=!0;return e}function F(a,e){function d(a,b,d,l){b=h.lowercase(b);if(s[b])for(;f.last()&&t[f.last()];)c("",f.last());u[b]&&f.last()==b&&c("",b);(l=v[b]||!!l)||f.push(b);var m={};d.replace(G,function(a,b,e,c,d){m[b]=q(e||c||d||"")});e.start&&e.start(b,m,l)}function c(a,b){var c=0,d;if(b=h.lowercase(b))for(c=f.length-1;0<=c&&f[c]!=b;c--);
|
7
|
+
if(0<=c){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}"string"!==typeof a&&(a=null===a||"undefined"===typeof a?"":""+a);var b,k,f=[],m=a,l;for(f.last=function(){return f[f.length-1]};a;){l="";k=!0;if(f.last()&&w[f.last()])a=a.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(a,b){b=b.replace(H,"$1").replace(I,"$1");e.chars&&e.chars(q(b));return""}),c("",f.last());else{if(0===a.indexOf("\x3c!--"))b=a.indexOf("--",4),0<=b&&a.lastIndexOf("--\x3e",b)===b&&(e.comment&&
|
8
|
+
e.comment(a.substring(4,b)),a=a.substring(b+3),k=!1);else if(x.test(a)){if(b=a.match(x))a=a.replace(b[0],""),k=!1}else if(J.test(a)){if(b=a.match(y))a=a.substring(b[0].length),b[0].replace(y,c),k=!1}else K.test(a)&&((b=a.match(z))?(b[4]&&(a=a.substring(b[0].length),b[0].replace(z,d)),k=!1):(l+="<",a=a.substring(1)));k&&(b=a.indexOf("<"),l+=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(q(l)))}if(a==m)throw L("badparse",a);m=a}c()}function q(a){if(!a)return"";A.innerHTML=a.replace(/</g,
|
9
|
+
"<");return A.textContent}function B(a){return a.replace(/&/g,"&").replace(M,function(a){var d=a.charCodeAt(0);a=a.charCodeAt(1);return"&#"+(1024*(d-55296)+(a-56320)+65536)+";"}).replace(N,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}function r(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,k,f){a=h.lowercase(a);!d&&w[a]&&(d=a);d||!0!==C[a]||(c("<"),c(a),h.forEach(k,function(d,f){var k=h.lowercase(f),g="img"===a&&"src"===k||"background"===
|
10
|
+
k;!0!==O[k]||!0===D[k]&&!e(d,g)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a);d||!0!==C[a]||(c("</"),c(a),c(">"));a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),z=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,y=/^<\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^</,J=/^<\//,H=/\x3c!--(.*?)--\x3e/g,x=/<!DOCTYPE([^>]*?)>/i,
|
11
|
+
I=/<!\[CDATA\[(.*?)]]\x3e/g,M=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,N=/([^\#-~| |!])/g,v=g("area,br,col,hr,img,wbr");n=g("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr");p=g("rp,rt");var u=h.extend({},p,n),s=h.extend({},n,g("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,script,section,table,ul")),t=h.extend({},p,g("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"));
|
12
|
+
n=g("animate,animateColor,animateMotion,animateTransform,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,set,stop,svg,switch,text,title,tspan,use");var w=g("script,style"),C=h.extend({},v,s,t,u,n),D=g("background,cite,href,longdesc,src,usemap,xlink:href");n=g("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,target,title,type,valign,value,vspace,width");
|
13
|
+
p=g("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,attributeName,attributeType,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");
|
14
|
+
var O=h.extend({},D,p,n),A=document.createElement("pre");h.module("ngSanitize",[]).provider("$sanitize",function(){this.$get=["$$sanitizeUri",function(a){return function(e){var d=[];F(e,r(d,function(c,b){return!/^unsafe/.test(a(c,b))}));return d.join("")}}]});h.module("ngSanitize").filter("linky",["$sanitize",function(a){var e=/((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/,d=/^mailto:/;return function(c,b){function k(a){a&&g.push(E(a))}function f(a,c){g.push("<a ");
|
15
|
+
h.isDefined(b)&&g.push('target="',b,'" ');g.push('href="',a.replace(/"/g,"""),'">');k(c);g.push("</a>")}if(!c)return c;for(var m,l=c,g=[],n,p;m=l.match(e);)n=m[0],m[2]||m[4]||(n=(m[3]?"http://":"mailto:")+n),p=m.index,k(l.substr(0,p)),f(n,m[0].replace(d,"")),l=l.substring(p+m[0].length);k(l);return a(g.join(""))}}])})(window,window.angular);
|
16
|
+
//# sourceMappingURL=angular-sanitize.min.js.map
|
@@ -9190,7 +9190,7 @@ return jQuery;
|
|
9190
9190
|
}));
|
9191
9191
|
|
9192
9192
|
/**
|
9193
|
-
* @license AngularJS v1.3.
|
9193
|
+
* @license AngularJS v1.3.14
|
9194
9194
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
9195
9195
|
* License: MIT
|
9196
9196
|
*/
|
@@ -9246,7 +9246,7 @@ function minErr(module, ErrorConstructor) {
|
|
9246
9246
|
return match;
|
9247
9247
|
});
|
9248
9248
|
|
9249
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.
|
9249
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.14/' +
|
9250
9250
|
(module ? module + '/' : '') + code;
|
9251
9251
|
for (i = 2; i < arguments.length; i++) {
|
9252
9252
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i - 2) + '=' +
|
@@ -11313,11 +11313,11 @@ function toDebugString(obj) {
|
|
11313
11313
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11314
11314
|
*/
|
11315
11315
|
var version = {
|
11316
|
-
full: '1.3.
|
11316
|
+
full: '1.3.14', // all of these placeholder strings will be replaced by grunt's
|
11317
11317
|
major: 1, // package task
|
11318
11318
|
minor: 3,
|
11319
|
-
dot:
|
11320
|
-
codeName: '
|
11319
|
+
dot: 14,
|
11320
|
+
codeName: 'instantaneous-browserification'
|
11321
11321
|
};
|
11322
11322
|
|
11323
11323
|
|
@@ -20563,7 +20563,7 @@ function $LocationProvider() {
|
|
20563
20563
|
|
20564
20564
|
|
20565
20565
|
// rewrite hashbang url <> html5 url
|
20566
|
-
if ($location.absUrl() != initialUrl) {
|
20566
|
+
if (trimEmptyHash($location.absUrl()) != trimEmptyHash(initialUrl)) {
|
20567
20567
|
$browser.url($location.absUrl(), true);
|
20568
20568
|
}
|
20569
20569
|
|
@@ -27046,20 +27046,23 @@ var htmlAnchorDirective = valueFn({
|
|
27046
27046
|
*
|
27047
27047
|
* @description
|
27048
27048
|
*
|
27049
|
-
*
|
27049
|
+
* This directive sets the `disabled` attribute on the element if the
|
27050
|
+
* {@link guide/expression expression} inside `ngDisabled` evaluates to truthy.
|
27051
|
+
*
|
27052
|
+
* A special directive is necessary because we cannot use interpolation inside the `disabled`
|
27053
|
+
* attribute. The following example would make the button enabled on Chrome/Firefox
|
27054
|
+
* but not on older IEs:
|
27055
|
+
*
|
27050
27056
|
* ```html
|
27051
|
-
* <div ng-init="
|
27052
|
-
* <button disabled="{{
|
27057
|
+
* <div ng-init="isDisabled = false">
|
27058
|
+
* <button disabled="{{isDisabled}}">Disabled</button>
|
27053
27059
|
* </div>
|
27054
27060
|
* ```
|
27055
27061
|
*
|
27056
|
-
*
|
27057
|
-
* such as disabled
|
27062
|
+
* This is because the HTML specification does not require browsers to preserve the values of
|
27063
|
+
* boolean attributes such as `disabled` (Their presence means true and their absence means false.)
|
27058
27064
|
* If we put an Angular interpolation expression into such an attribute then the
|
27059
27065
|
* binding information would be lost when the browser removes the attribute.
|
27060
|
-
* The `ngDisabled` directive solves this problem for the `disabled` attribute.
|
27061
|
-
* This complementary directive is not removed by the browser and so provides
|
27062
|
-
* a permanent reliable place to store the binding information.
|
27063
27066
|
*
|
27064
27067
|
* @example
|
27065
27068
|
<example>
|
@@ -27078,7 +27081,7 @@ var htmlAnchorDirective = valueFn({
|
|
27078
27081
|
*
|
27079
27082
|
* @element INPUT
|
27080
27083
|
* @param {expression} ngDisabled If the {@link guide/expression expression} is truthy,
|
27081
|
-
* then
|
27084
|
+
* then the `disabled` attribute will be set on the element
|
27082
27085
|
*/
|
27083
27086
|
|
27084
27087
|
|
@@ -29080,7 +29083,7 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
29080
29083
|
return value;
|
29081
29084
|
});
|
29082
29085
|
|
29083
|
-
if (attr.min || attr.ngMin) {
|
29086
|
+
if (isDefined(attr.min) || attr.ngMin) {
|
29084
29087
|
var minVal;
|
29085
29088
|
ctrl.$validators.min = function(value) {
|
29086
29089
|
return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal;
|
@@ -29096,7 +29099,7 @@ function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
|
29096
29099
|
});
|
29097
29100
|
}
|
29098
29101
|
|
29099
|
-
if (attr.max || attr.ngMax) {
|
29102
|
+
if (isDefined(attr.max) || attr.ngMax) {
|
29100
29103
|
var maxVal;
|
29101
29104
|
ctrl.$validators.max = function(value) {
|
29102
29105
|
return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal;
|
@@ -31902,6 +31905,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
31902
31905
|
ngModelGet = parsedNgModel,
|
31903
31906
|
ngModelSet = parsedNgModelAssign,
|
31904
31907
|
pendingDebounce = null,
|
31908
|
+
parserValid,
|
31905
31909
|
ctrl = this;
|
31906
31910
|
|
31907
31911
|
this.$$setOptions = function(options) {
|
@@ -32174,16 +32178,12 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32174
32178
|
// the model although neither viewValue nor the model on the scope changed
|
32175
32179
|
var modelValue = ctrl.$$rawModelValue;
|
32176
32180
|
|
32177
|
-
// Check if the there's a parse error, so we don't unset it accidentially
|
32178
|
-
var parserName = ctrl.$$parserName || 'parse';
|
32179
|
-
var parserValid = ctrl.$error[parserName] ? false : undefined;
|
32180
|
-
|
32181
32181
|
var prevValid = ctrl.$valid;
|
32182
32182
|
var prevModelValue = ctrl.$modelValue;
|
32183
32183
|
|
32184
32184
|
var allowInvalid = ctrl.$options && ctrl.$options.allowInvalid;
|
32185
32185
|
|
32186
|
-
ctrl.$$runValidators(
|
32186
|
+
ctrl.$$runValidators(modelValue, viewValue, function(allValid) {
|
32187
32187
|
// If there was no change in validity, don't update the model
|
32188
32188
|
// This prevents changing an invalid modelValue to undefined
|
32189
32189
|
if (!allowInvalid && prevValid !== allValid) {
|
@@ -32201,12 +32201,12 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32201
32201
|
|
32202
32202
|
};
|
32203
32203
|
|
32204
|
-
this.$$runValidators = function(
|
32204
|
+
this.$$runValidators = function(modelValue, viewValue, doneCallback) {
|
32205
32205
|
currentValidationRunId++;
|
32206
32206
|
var localValidationRunId = currentValidationRunId;
|
32207
32207
|
|
32208
32208
|
// check parser error
|
32209
|
-
if (!processParseErrors(
|
32209
|
+
if (!processParseErrors()) {
|
32210
32210
|
validationDone(false);
|
32211
32211
|
return;
|
32212
32212
|
}
|
@@ -32216,21 +32216,22 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32216
32216
|
}
|
32217
32217
|
processAsyncValidators();
|
32218
32218
|
|
32219
|
-
function processParseErrors(
|
32219
|
+
function processParseErrors() {
|
32220
32220
|
var errorKey = ctrl.$$parserName || 'parse';
|
32221
|
-
if (
|
32221
|
+
if (parserValid === undefined) {
|
32222
32222
|
setValidity(errorKey, null);
|
32223
32223
|
} else {
|
32224
|
-
|
32225
|
-
if (!parseValid) {
|
32224
|
+
if (!parserValid) {
|
32226
32225
|
forEach(ctrl.$validators, function(v, name) {
|
32227
32226
|
setValidity(name, null);
|
32228
32227
|
});
|
32229
32228
|
forEach(ctrl.$asyncValidators, function(v, name) {
|
32230
32229
|
setValidity(name, null);
|
32231
32230
|
});
|
32232
|
-
return false;
|
32233
32231
|
}
|
32232
|
+
// Set the parse error last, to prevent unsetting it, should a $validators key == parserName
|
32233
|
+
setValidity(errorKey, parserValid);
|
32234
|
+
return parserValid;
|
32234
32235
|
}
|
32235
32236
|
return true;
|
32236
32237
|
}
|
@@ -32325,7 +32326,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32325
32326
|
this.$$parseAndValidate = function() {
|
32326
32327
|
var viewValue = ctrl.$$lastCommittedViewValue;
|
32327
32328
|
var modelValue = viewValue;
|
32328
|
-
|
32329
|
+
parserValid = isUndefined(modelValue) ? undefined : true;
|
32329
32330
|
|
32330
32331
|
if (parserValid) {
|
32331
32332
|
for (var i = 0; i < ctrl.$parsers.length; i++) {
|
@@ -32351,7 +32352,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32351
32352
|
|
32352
32353
|
// Pass the $$lastCommittedViewValue here, because the cached viewValue might be out of date.
|
32353
32354
|
// This can happen if e.g. $setViewValue is called from inside a parser
|
32354
|
-
ctrl.$$runValidators(
|
32355
|
+
ctrl.$$runValidators(modelValue, ctrl.$$lastCommittedViewValue, function(allValid) {
|
32355
32356
|
if (!allowInvalid) {
|
32356
32357
|
// Note: Don't check ctrl.$valid here, as we could have
|
32357
32358
|
// external validators (e.g. calculated on the server),
|
@@ -32472,6 +32473,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32472
32473
|
// TODO(perf): why not move this to the action fn?
|
32473
32474
|
if (modelValue !== ctrl.$modelValue) {
|
32474
32475
|
ctrl.$modelValue = ctrl.$$rawModelValue = modelValue;
|
32476
|
+
parserValid = undefined;
|
32475
32477
|
|
32476
32478
|
var formatters = ctrl.$formatters,
|
32477
32479
|
idx = formatters.length;
|
@@ -32484,7 +32486,7 @@ var NgModelController = ['$scope', '$exceptionHandler', '$attrs', '$element', '$
|
|
32484
32486
|
ctrl.$viewValue = ctrl.$$lastCommittedViewValue = viewValue;
|
32485
32487
|
ctrl.$render();
|
32486
32488
|
|
32487
|
-
ctrl.$$runValidators(
|
32489
|
+
ctrl.$$runValidators(modelValue, viewValue, noop);
|
32488
32490
|
}
|
32489
32491
|
}
|
32490
32492
|
|
@@ -33300,6 +33302,55 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
|
|
33300
33302
|
* when keys are deleted and reinstated.
|
33301
33303
|
*
|
33302
33304
|
*
|
33305
|
+
* # Tracking and Duplicates
|
33306
|
+
*
|
33307
|
+
* When the contents of the collection change, `ngRepeat` makes the corresponding changes to the DOM:
|
33308
|
+
*
|
33309
|
+
* * When an item is added, a new instance of the template is added to the DOM.
|
33310
|
+
* * When an item is removed, its template instance is removed from the DOM.
|
33311
|
+
* * When items are reordered, their respective templates are reordered in the DOM.
|
33312
|
+
*
|
33313
|
+
* By default, `ngRepeat` does not allow duplicate items in arrays. This is because when
|
33314
|
+
* there are duplicates, it is not possible to maintain a one-to-one mapping between collection
|
33315
|
+
* items and DOM elements.
|
33316
|
+
*
|
33317
|
+
* If you do need to repeat duplicate items, you can substitute the default tracking behavior
|
33318
|
+
* with your own using the `track by` expression.
|
33319
|
+
*
|
33320
|
+
* For example, you may track items by the index of each item in the collection, using the
|
33321
|
+
* special scope property `$index`:
|
33322
|
+
* ```html
|
33323
|
+
* <div ng-repeat="n in [42, 42, 43, 43] track by $index">
|
33324
|
+
* {{n}}
|
33325
|
+
* </div>
|
33326
|
+
* ```
|
33327
|
+
*
|
33328
|
+
* You may use arbitrary expressions in `track by`, including references to custom functions
|
33329
|
+
* on the scope:
|
33330
|
+
* ```html
|
33331
|
+
* <div ng-repeat="n in [42, 42, 43, 43] track by myTrackingFunction(n)">
|
33332
|
+
* {{n}}
|
33333
|
+
* </div>
|
33334
|
+
* ```
|
33335
|
+
*
|
33336
|
+
* If you are working with objects that have an identifier property, you can track
|
33337
|
+
* by the identifier instead of the whole object. Should you reload your data later, `ngRepeat`
|
33338
|
+
* will not have to rebuild the DOM elements for items it has already rendered, even if the
|
33339
|
+
* JavaScript objects in the collection have been substituted for new ones:
|
33340
|
+
* ```html
|
33341
|
+
* <div ng-repeat="model in collection track by model.id">
|
33342
|
+
* {{model.name}}
|
33343
|
+
* </div>
|
33344
|
+
* ```
|
33345
|
+
*
|
33346
|
+
* When no `track by` expression is provided, it is equivalent to tracking by the built-in
|
33347
|
+
* `$id` function, which tracks items by their identity:
|
33348
|
+
* ```html
|
33349
|
+
* <div ng-repeat="obj in collection track by $id(obj)">
|
33350
|
+
* {{obj.prop}}
|
33351
|
+
* </div>
|
33352
|
+
* ```
|
33353
|
+
*
|
33303
33354
|
* # Special repeat start and end points
|
33304
33355
|
* To repeat a series of elements instead of just one parent element, ngRepeat (as well as other ng directives) supports extending
|
33305
33356
|
* the range of the repeater by defining explicit start and end points by using **ng-repeat-start** and **ng-repeat-end** respectively.
|
@@ -33367,12 +33418,12 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
|
|
33367
33418
|
*
|
33368
33419
|
* For example: `(name, age) in {'adam':10, 'amalie':12}`.
|
33369
33420
|
*
|
33370
|
-
* * `variable in expression track by tracking_expression` – You can also provide an optional tracking
|
33371
|
-
* which can be used to associate the objects in the collection with the DOM elements. If no tracking
|
33372
|
-
* is specified
|
33373
|
-
* more than one tracking
|
33374
|
-
* mapped to the same DOM element, which is not possible.)
|
33375
|
-
* before
|
33421
|
+
* * `variable in expression track by tracking_expression` – You can also provide an optional tracking expression
|
33422
|
+
* which can be used to associate the objects in the collection with the DOM elements. If no tracking expression
|
33423
|
+
* is specified, ng-repeat associates elements by identity. It is an error to have
|
33424
|
+
* more than one tracking expression value resolve to the same key. (This would mean that two distinct objects are
|
33425
|
+
* mapped to the same DOM element, which is not possible.) If filters are used in the expression, they should be
|
33426
|
+
* applied before the tracking expression.
|
33376
33427
|
*
|
33377
33428
|
* For example: `item in items` is equivalent to `item in items track by $id(item)`. This implies that the DOM elements
|
33378
33429
|
* will be associated by item identity in the array.
|