rails-angularjs 1.3.12 → 1.3.14
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|