angularjs-rails 1.2.1 → 1.2.2
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/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +91 -34
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +8 -3
- data/vendor/assets/javascripts/angular-mocks.js +2 -2
- data/vendor/assets/javascripts/angular-resource.js +3 -3
- data/vendor/assets/javascripts/angular-route.js +40 -27
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +242 -158
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +246 -162
- metadata +3 -3
@@ -9790,7 +9790,7 @@ if ( typeof module === "object" && module && typeof module.exports === "object"
|
|
9790
9790
|
})( window );
|
9791
9791
|
|
9792
9792
|
/**
|
9793
|
-
* @license AngularJS v1.2.
|
9793
|
+
* @license AngularJS v1.2.2
|
9794
9794
|
* (c) 2010-2012 Google, Inc. http://angularjs.org
|
9795
9795
|
* License: MIT
|
9796
9796
|
*/
|
@@ -9860,7 +9860,7 @@ function minErr(module) {
|
|
9860
9860
|
return match;
|
9861
9861
|
});
|
9862
9862
|
|
9863
|
-
message = message + '\nhttp://errors.angularjs.org/1.2.
|
9863
|
+
message = message + '\nhttp://errors.angularjs.org/1.2.2/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -9951,7 +9951,7 @@ function minErr(module) {
|
|
9951
9951
|
-assertArgFn,
|
9952
9952
|
-assertNotHasOwnProperty,
|
9953
9953
|
-getter,
|
9954
|
-
-getBlockElements
|
9954
|
+
-getBlockElements,
|
9955
9955
|
|
9956
9956
|
*/
|
9957
9957
|
|
@@ -10973,26 +10973,38 @@ function encodeUriQuery(val, pctEncodeSpaces) {
|
|
10973
10973
|
*
|
10974
10974
|
* @description
|
10975
10975
|
*
|
10976
|
-
* Use this directive to auto-bootstrap an application.
|
10977
|
-
*
|
10978
|
-
*
|
10979
|
-
* at the root of the page.
|
10976
|
+
* Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive
|
10977
|
+
* designates the **root element** of the application and is typically placed near the root element
|
10978
|
+
* of the page - e.g. on the `<body>` or `<html>` tags.
|
10980
10979
|
*
|
10981
|
-
*
|
10982
|
-
*
|
10983
|
-
*
|
10980
|
+
* Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`
|
10981
|
+
* found in the document will be used to define the root element to auto-bootstrap as an
|
10982
|
+
* application. To run multiple applications in an HTML document you must manually bootstrap them using
|
10983
|
+
* {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.
|
10984
10984
|
*
|
10985
|
-
*
|
10986
|
-
*
|
10987
|
-
*
|
10985
|
+
* You can specify an **AngularJS module** to be used as the root module for the application. This
|
10986
|
+
* module will be loaded into the {@link AUTO.$injector} when the application is bootstrapped and
|
10987
|
+
* should contain the application code needed or have dependencies on other modules that will
|
10988
|
+
* contain the code. See {@link angular.module} for more information.
|
10988
10989
|
*
|
10989
|
-
* `ngApp`
|
10990
|
+
* In the example below if the `ngApp` directive were not placed on the `html` element then the
|
10991
|
+
* document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`
|
10992
|
+
* would not be resolved to `3`.
|
10990
10993
|
*
|
10991
|
-
|
10992
|
-
|
10993
|
-
|
10994
|
-
|
10995
|
-
|
10994
|
+
* `ngApp` is the easiest, and most common, way to bootstrap an application.
|
10995
|
+
*
|
10996
|
+
<example module="ngAppDemo">
|
10997
|
+
<file name="index.html">
|
10998
|
+
<div ng-controller="ngAppDemoController">
|
10999
|
+
I can add: {{a}} + {{b}} = {{ a+b }}
|
11000
|
+
</file>
|
11001
|
+
<file name="script.js">
|
11002
|
+
angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {
|
11003
|
+
$scope.a = 1;
|
11004
|
+
$scope.b = 2;
|
11005
|
+
});
|
11006
|
+
</file>
|
11007
|
+
</example>
|
10996
11008
|
*
|
10997
11009
|
*/
|
10998
11010
|
function angularInit(element, bootstrap) {
|
@@ -11227,7 +11239,12 @@ function setupModuleLoader(window) {
|
|
11227
11239
|
return obj[name] || (obj[name] = factory());
|
11228
11240
|
}
|
11229
11241
|
|
11230
|
-
|
11242
|
+
var angular = ensure(window, 'angular', Object);
|
11243
|
+
|
11244
|
+
// We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
|
11245
|
+
angular.$$minErr = angular.$$minErr || minErr;
|
11246
|
+
|
11247
|
+
return ensure(angular, 'module', function() {
|
11231
11248
|
/** @type {Object.<string, angular.Module>} */
|
11232
11249
|
var modules = {};
|
11233
11250
|
|
@@ -11600,11 +11617,11 @@ function setupModuleLoader(window) {
|
|
11600
11617
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11601
11618
|
*/
|
11602
11619
|
var version = {
|
11603
|
-
full: '1.2.
|
11620
|
+
full: '1.2.2', // all of these placeholder strings will be replaced by grunt's
|
11604
11621
|
major: 1, // package task
|
11605
11622
|
minor: 2,
|
11606
|
-
dot:
|
11607
|
-
codeName: '
|
11623
|
+
dot: 2,
|
11624
|
+
codeName: 'consciousness-inertia'
|
11608
11625
|
};
|
11609
11626
|
|
11610
11627
|
|
@@ -13151,11 +13168,11 @@ function annotate(fn) {
|
|
13151
13168
|
* @example
|
13152
13169
|
* Here are some examples of creating value services.
|
13153
13170
|
* <pre>
|
13154
|
-
* $provide.
|
13171
|
+
* $provide.value('ADMIN_USER', 'admin');
|
13155
13172
|
*
|
13156
|
-
* $provide.
|
13173
|
+
* $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });
|
13157
13174
|
*
|
13158
|
-
* $provide.
|
13175
|
+
* $provide.value('halfOf', function(value) {
|
13159
13176
|
* return value / 2;
|
13160
13177
|
* });
|
13161
13178
|
* </pre>
|
@@ -13641,13 +13658,14 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|
13641
13658
|
* inserted into the DOM
|
13642
13659
|
*/
|
13643
13660
|
enter : function(element, parent, after, done) {
|
13644
|
-
|
13645
|
-
|
13646
|
-
|
13647
|
-
|
13648
|
-
|
13649
|
-
|
13650
|
-
|
13661
|
+
if (after) {
|
13662
|
+
after.after(element);
|
13663
|
+
} else {
|
13664
|
+
if (!parent || !parent[0]) {
|
13665
|
+
parent = after.parent();
|
13666
|
+
}
|
13667
|
+
parent.append(element);
|
13668
|
+
}
|
13651
13669
|
done && $timeout(done, 0, false);
|
13652
13670
|
},
|
13653
13671
|
|
@@ -15052,6 +15070,24 @@ function $CompileProvider($provide) {
|
|
15052
15070
|
}
|
15053
15071
|
},
|
15054
15072
|
|
15073
|
+
/**
|
15074
|
+
* @ngdoc function
|
15075
|
+
* @name ng.$compile.directive.Attributes#$updateClass
|
15076
|
+
* @methodOf ng.$compile.directive.Attributes
|
15077
|
+
* @function
|
15078
|
+
*
|
15079
|
+
* @description
|
15080
|
+
* Adds and removes the appropriate CSS class values to the element based on the difference
|
15081
|
+
* between the new and old CSS class values (specified as newClasses and oldClasses).
|
15082
|
+
*
|
15083
|
+
* @param {string} newClasses The current CSS className value
|
15084
|
+
* @param {string} oldClasses The former CSS className value
|
15085
|
+
*/
|
15086
|
+
$updateClass : function(newClasses, oldClasses) {
|
15087
|
+
this.$removeClass(tokenDifference(oldClasses, newClasses));
|
15088
|
+
this.$addClass(tokenDifference(newClasses, oldClasses));
|
15089
|
+
},
|
15090
|
+
|
15055
15091
|
/**
|
15056
15092
|
* Set a normalized attribute on the element in a way such that all directives
|
15057
15093
|
* can share the attribute. This function properly handles boolean attributes.
|
@@ -15062,59 +15098,53 @@ function $CompileProvider($provide) {
|
|
15062
15098
|
* @param {string=} attrName Optional none normalized name. Defaults to key.
|
15063
15099
|
*/
|
15064
15100
|
$set: function(key, value, writeAttr, attrName) {
|
15065
|
-
//
|
15066
|
-
//
|
15067
|
-
//
|
15068
|
-
if(key == 'class') {
|
15069
|
-
value = value || '';
|
15070
|
-
var current = this.$$element.attr('class') || '';
|
15071
|
-
this.$removeClass(tokenDifference(current, value).join(' '));
|
15072
|
-
this.$addClass(tokenDifference(value, current).join(' '));
|
15073
|
-
} else {
|
15074
|
-
var booleanKey = getBooleanAttrName(this.$$element[0], key),
|
15075
|
-
normalizedVal,
|
15076
|
-
nodeName;
|
15101
|
+
// TODO: decide whether or not to throw an error if "class"
|
15102
|
+
//is set through this function since it may cause $updateClass to
|
15103
|
+
//become unstable.
|
15077
15104
|
|
15078
|
-
|
15079
|
-
|
15080
|
-
|
15081
|
-
}
|
15105
|
+
var booleanKey = getBooleanAttrName(this.$$element[0], key),
|
15106
|
+
normalizedVal,
|
15107
|
+
nodeName;
|
15082
15108
|
|
15083
|
-
|
15109
|
+
if (booleanKey) {
|
15110
|
+
this.$$element.prop(key, value);
|
15111
|
+
attrName = booleanKey;
|
15112
|
+
}
|
15084
15113
|
|
15085
|
-
|
15086
|
-
|
15087
|
-
|
15088
|
-
|
15089
|
-
|
15090
|
-
|
15091
|
-
|
15092
|
-
|
15114
|
+
this[key] = value;
|
15115
|
+
|
15116
|
+
// translate normalized key to actual key
|
15117
|
+
if (attrName) {
|
15118
|
+
this.$attr[key] = attrName;
|
15119
|
+
} else {
|
15120
|
+
attrName = this.$attr[key];
|
15121
|
+
if (!attrName) {
|
15122
|
+
this.$attr[key] = attrName = snake_case(key, '-');
|
15093
15123
|
}
|
15124
|
+
}
|
15094
15125
|
|
15095
|
-
|
15096
|
-
|
15097
|
-
|
15098
|
-
|
15099
|
-
|
15100
|
-
|
15101
|
-
|
15102
|
-
|
15103
|
-
|
15104
|
-
|
15105
|
-
|
15106
|
-
|
15107
|
-
}
|
15126
|
+
nodeName = nodeName_(this.$$element);
|
15127
|
+
|
15128
|
+
// sanitize a[href] and img[src] values
|
15129
|
+
if ((nodeName === 'A' && key === 'href') ||
|
15130
|
+
(nodeName === 'IMG' && key === 'src')) {
|
15131
|
+
// NOTE: urlResolve() doesn't support IE < 8 so we don't sanitize for that case.
|
15132
|
+
if (!msie || msie >= 8 ) {
|
15133
|
+
normalizedVal = urlResolve(value).href;
|
15134
|
+
if (normalizedVal !== '') {
|
15135
|
+
if ((key === 'href' && !normalizedVal.match(aHrefSanitizationWhitelist)) ||
|
15136
|
+
(key === 'src' && !normalizedVal.match(imgSrcSanitizationWhitelist))) {
|
15137
|
+
this[key] = value = 'unsafe:' + normalizedVal;
|
15108
15138
|
}
|
15109
15139
|
}
|
15110
15140
|
}
|
15141
|
+
}
|
15111
15142
|
|
15112
|
-
|
15113
|
-
|
15114
|
-
|
15115
|
-
|
15116
|
-
|
15117
|
-
}
|
15143
|
+
if (writeAttr !== false) {
|
15144
|
+
if (value === null || value === undefined) {
|
15145
|
+
this.$$element.removeAttr(attrName);
|
15146
|
+
} else {
|
15147
|
+
this.$$element.attr(attrName, value);
|
15118
15148
|
}
|
15119
15149
|
}
|
15120
15150
|
|
@@ -15127,22 +15157,6 @@ function $CompileProvider($provide) {
|
|
15127
15157
|
$exceptionHandler(e);
|
15128
15158
|
}
|
15129
15159
|
});
|
15130
|
-
|
15131
|
-
function tokenDifference(str1, str2) {
|
15132
|
-
var values = [],
|
15133
|
-
tokens1 = str1.split(/\s+/),
|
15134
|
-
tokens2 = str2.split(/\s+/);
|
15135
|
-
|
15136
|
-
outer:
|
15137
|
-
for(var i=0;i<tokens1.length;i++) {
|
15138
|
-
var token = tokens1[i];
|
15139
|
-
for(var j=0;j<tokens2.length;j++) {
|
15140
|
-
if(token == tokens2[j]) continue outer;
|
15141
|
-
}
|
15142
|
-
values.push(token);
|
15143
|
-
}
|
15144
|
-
return values;
|
15145
|
-
}
|
15146
15160
|
},
|
15147
15161
|
|
15148
15162
|
|
@@ -16164,10 +16178,15 @@ function $CompileProvider($provide) {
|
|
16164
16178
|
|
16165
16179
|
|
16166
16180
|
function getTrustedContext(node, attrNormalizedName) {
|
16181
|
+
if (attrNormalizedName == "srcdoc") {
|
16182
|
+
return $sce.HTML;
|
16183
|
+
}
|
16184
|
+
var tag = nodeName_(node);
|
16167
16185
|
// maction[xlink:href] can source SVG. It's not limited to <maction>.
|
16168
16186
|
if (attrNormalizedName == "xlinkHref" ||
|
16169
|
-
(
|
16170
|
-
|
16187
|
+
(tag == "FORM" && attrNormalizedName == "action") ||
|
16188
|
+
(tag != "IMG" && (attrNormalizedName == "src" ||
|
16189
|
+
attrNormalizedName == "ngSrc"))) {
|
16171
16190
|
return $sce.RESOURCE_URL;
|
16172
16191
|
}
|
16173
16192
|
}
|
@@ -16212,9 +16231,19 @@ function $CompileProvider($provide) {
|
|
16212
16231
|
attr[name] = interpolateFn(scope);
|
16213
16232
|
($$observers[name] || ($$observers[name] = [])).$$inter = true;
|
16214
16233
|
(attr.$$observers && attr.$$observers[name].$$scope || scope).
|
16215
|
-
|
16216
|
-
|
16217
|
-
|
16234
|
+
$watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) {
|
16235
|
+
//special case for class attribute addition + removal
|
16236
|
+
//so that class changes can tap into the animation
|
16237
|
+
//hooks provided by the $animate service. Be sure to
|
16238
|
+
//skip animations when the first digest occurs (when
|
16239
|
+
//both the new and the old values are the same) since
|
16240
|
+
//the CSS classes are the non-interpolated values
|
16241
|
+
if(name === 'class' && newValue != oldValue) {
|
16242
|
+
attr.$updateClass(newValue, oldValue);
|
16243
|
+
} else {
|
16244
|
+
attr.$set(name, newValue);
|
16245
|
+
}
|
16246
|
+
});
|
16218
16247
|
}
|
16219
16248
|
};
|
16220
16249
|
}
|
@@ -16355,6 +16384,22 @@ function directiveLinkingFn(
|
|
16355
16384
|
/* function(Function) */ boundTranscludeFn
|
16356
16385
|
){}
|
16357
16386
|
|
16387
|
+
function tokenDifference(str1, str2) {
|
16388
|
+
var values = '',
|
16389
|
+
tokens1 = str1.split(/\s+/),
|
16390
|
+
tokens2 = str2.split(/\s+/);
|
16391
|
+
|
16392
|
+
outer:
|
16393
|
+
for(var i = 0; i < tokens1.length; i++) {
|
16394
|
+
var token = tokens1[i];
|
16395
|
+
for(var j = 0; j < tokens2.length; j++) {
|
16396
|
+
if(token == tokens2[j]) continue outer;
|
16397
|
+
}
|
16398
|
+
values += (values.length > 0 ? ' ' : '') + token;
|
16399
|
+
}
|
16400
|
+
return values;
|
16401
|
+
}
|
16402
|
+
|
16358
16403
|
/**
|
16359
16404
|
* @ngdoc object
|
16360
16405
|
* @name ng.$controllerProvider
|
@@ -17571,6 +17616,8 @@ function $HttpBackendProvider() {
|
|
17571
17616
|
}
|
17572
17617
|
|
17573
17618
|
function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument, locationProtocol) {
|
17619
|
+
var ABORTED = -1;
|
17620
|
+
|
17574
17621
|
// TODO(vojta): fix the signature
|
17575
17622
|
return function(method, url, post, callback, headers, timeout, withCredentials, responseType) {
|
17576
17623
|
var status;
|
@@ -17606,13 +17653,19 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument,
|
|
17606
17653
|
// always async
|
17607
17654
|
xhr.onreadystatechange = function() {
|
17608
17655
|
if (xhr.readyState == 4) {
|
17609
|
-
var responseHeaders =
|
17656
|
+
var responseHeaders = null,
|
17657
|
+
response = null;
|
17658
|
+
|
17659
|
+
if(status !== ABORTED) {
|
17660
|
+
responseHeaders = xhr.getAllResponseHeaders();
|
17661
|
+
response = xhr.responseType ? xhr.response : xhr.responseText;
|
17662
|
+
}
|
17610
17663
|
|
17611
17664
|
// responseText is the old-school way of retrieving response (supported by IE8 & 9)
|
17612
17665
|
// response/responseType properties were introduced in XHR Level2 spec (supported by IE10)
|
17613
17666
|
completeRequest(callback,
|
17614
17667
|
status || xhr.status,
|
17615
|
-
|
17668
|
+
response,
|
17616
17669
|
responseHeaders);
|
17617
17670
|
}
|
17618
17671
|
};
|
@@ -17636,7 +17689,7 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument,
|
|
17636
17689
|
|
17637
17690
|
|
17638
17691
|
function timeoutRequest() {
|
17639
|
-
status =
|
17692
|
+
status = ABORTED;
|
17640
17693
|
jsonpDone && jsonpDone();
|
17641
17694
|
xhr && xhr.abort();
|
17642
17695
|
}
|
@@ -17665,6 +17718,7 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument,
|
|
17665
17718
|
// - adds and immediately removes script elements from the document
|
17666
17719
|
var script = rawDocument.createElement('script'),
|
17667
17720
|
doneWrapper = function() {
|
17721
|
+
script.onreadystatechange = script.onload = script.onerror = null;
|
17668
17722
|
rawDocument.body.removeChild(script);
|
17669
17723
|
if (done) done();
|
17670
17724
|
};
|
@@ -17672,12 +17726,16 @@ function createHttpBackend($browser, XHR, $browserDefer, callbacks, rawDocument,
|
|
17672
17726
|
script.type = 'text/javascript';
|
17673
17727
|
script.src = url;
|
17674
17728
|
|
17675
|
-
if (msie) {
|
17729
|
+
if (msie && msie <= 8) {
|
17676
17730
|
script.onreadystatechange = function() {
|
17677
|
-
if (/loaded|complete/.test(script.readyState))
|
17731
|
+
if (/loaded|complete/.test(script.readyState)) {
|
17732
|
+
doneWrapper();
|
17733
|
+
}
|
17678
17734
|
};
|
17679
17735
|
} else {
|
17680
|
-
script.onload = script.onerror =
|
17736
|
+
script.onload = script.onerror = function() {
|
17737
|
+
doneWrapper();
|
17738
|
+
};
|
17681
17739
|
}
|
17682
17740
|
|
17683
17741
|
rawDocument.body.appendChild(script);
|
@@ -18754,7 +18812,7 @@ function $LocationProvider(){
|
|
18754
18812
|
*
|
18755
18813
|
* The main purpose of this service is to simplify debugging and troubleshooting.
|
18756
18814
|
*
|
18757
|
-
* The default is
|
18815
|
+
* The default is to log `debug` messages. You can use
|
18758
18816
|
* {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this.
|
18759
18817
|
*
|
18760
18818
|
* @example
|
@@ -19920,7 +19978,7 @@ function getterFn(path, options, fullExp) {
|
|
19920
19978
|
: '((k&&k.hasOwnProperty("' + key + '"))?k:s)') + '["' + key + '"]' + ';\n' +
|
19921
19979
|
(options.unwrapPromises
|
19922
19980
|
? 'if (s && s.then) {\n' +
|
19923
|
-
' pw("' + fullExp.replace(
|
19981
|
+
' pw("' + fullExp.replace(/(["\r\n])/g, '\\$1') + '");\n' +
|
19924
19982
|
' if (!("$$v" in s)) {\n' +
|
19925
19983
|
' p=s;\n' +
|
19926
19984
|
' p.$$v = undefined;\n' +
|
@@ -21890,8 +21948,7 @@ function $SceDelegateProvider() {
|
|
21890
21948
|
return resourceUrlBlacklist;
|
21891
21949
|
};
|
21892
21950
|
|
21893
|
-
this.$get = ['$
|
21894
|
-
$log, $document, $injector) {
|
21951
|
+
this.$get = ['$injector', function($injector) {
|
21895
21952
|
|
21896
21953
|
var htmlSanitizer = function htmlSanitizer(html) {
|
21897
21954
|
throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.');
|
@@ -22422,18 +22479,15 @@ function $SceProvider() {
|
|
22422
22479
|
* sce.js and sceSpecs.js would need to be aware of this detail.
|
22423
22480
|
*/
|
22424
22481
|
|
22425
|
-
this.$get = ['$parse', '$
|
22426
|
-
$parse, $
|
22482
|
+
this.$get = ['$parse', '$sniffer', '$sceDelegate', function(
|
22483
|
+
$parse, $sniffer, $sceDelegate) {
|
22427
22484
|
// Prereq: Ensure that we're not running in IE8 quirks mode. In that mode, IE allows
|
22428
22485
|
// the "expression(javascript expression)" syntax which is insecure.
|
22429
|
-
if (enabled && msie) {
|
22430
|
-
|
22431
|
-
|
22432
|
-
|
22433
|
-
|
22434
|
-
'mode. You can fix this by adding the text <!doctype html> to the top of your HTML ' +
|
22435
|
-
'document. See http://docs.angularjs.org/api/ng.$sce for more information.');
|
22436
|
-
}
|
22486
|
+
if (enabled && $sniffer.msie && $sniffer.msieDocumentMode < 8) {
|
22487
|
+
throw $sceMinErr('iequirks',
|
22488
|
+
'Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks ' +
|
22489
|
+
'mode. You can fix this by adding the text <!doctype html> to the top of your HTML ' +
|
22490
|
+
'document. See http://docs.angularjs.org/api/ng.$sce for more information.');
|
22437
22491
|
}
|
22438
22492
|
|
22439
22493
|
var sce = copy(SCE_CONTEXTS);
|
@@ -22795,6 +22849,7 @@ function $SnifferProvider() {
|
|
22795
22849
|
int((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]),
|
22796
22850
|
boxee = /Boxee/i.test(($window.navigator || {}).userAgent),
|
22797
22851
|
document = $document[0] || {},
|
22852
|
+
documentMode = document.documentMode,
|
22798
22853
|
vendorPrefix,
|
22799
22854
|
vendorRegex = /^(Moz|webkit|O|ms)(?=[A-Z])/,
|
22800
22855
|
bodyStyle = document.body && document.body.style,
|
@@ -22839,7 +22894,7 @@ function $SnifferProvider() {
|
|
22839
22894
|
// jshint +W018
|
22840
22895
|
hashchange: 'onhashchange' in $window &&
|
22841
22896
|
// IE8 compatible mode lies
|
22842
|
-
(!
|
22897
|
+
(!documentMode || documentMode > 7),
|
22843
22898
|
hasEvent: function(event) {
|
22844
22899
|
// IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have
|
22845
22900
|
// it. In particular the event is not fired when backspace or delete key are pressed or
|
@@ -22857,7 +22912,8 @@ function $SnifferProvider() {
|
|
22857
22912
|
vendorPrefix: vendorPrefix,
|
22858
22913
|
transitions : transitions,
|
22859
22914
|
animations : animations,
|
22860
|
-
msie : msie
|
22915
|
+
msie : msie,
|
22916
|
+
msieDocumentMode: documentMode
|
22861
22917
|
};
|
22862
22918
|
}];
|
22863
22919
|
}
|
@@ -24472,8 +24528,11 @@ var htmlAnchorDirective = valueFn({
|
|
24472
24528
|
*
|
24473
24529
|
* The HTML specification does not require browsers to preserve the values of boolean attributes
|
24474
24530
|
* such as disabled. (Their presence means true and their absence means false.)
|
24475
|
-
*
|
24531
|
+
* If we put an Angular interpolation expression into such an attribute then the
|
24532
|
+
* binding information would be lost when the browser removes the attribute.
|
24476
24533
|
* The `ngDisabled` directive solves this problem for the `disabled` attribute.
|
24534
|
+
* This complementary directive is not removed by the browser and so provides
|
24535
|
+
* a permanent reliable place to store the binding information.
|
24477
24536
|
*
|
24478
24537
|
* @example
|
24479
24538
|
<doc:example>
|
@@ -24504,8 +24563,11 @@ var htmlAnchorDirective = valueFn({
|
|
24504
24563
|
* @description
|
24505
24564
|
* The HTML specification does not require browsers to preserve the values of boolean attributes
|
24506
24565
|
* such as checked. (Their presence means true and their absence means false.)
|
24507
|
-
*
|
24566
|
+
* If we put an Angular interpolation expression into such an attribute then the
|
24567
|
+
* binding information would be lost when the browser removes the attribute.
|
24508
24568
|
* The `ngChecked` directive solves this problem for the `checked` attribute.
|
24569
|
+
* This complementary directive is not removed by the browser and so provides
|
24570
|
+
* a permanent reliable place to store the binding information.
|
24509
24571
|
* @example
|
24510
24572
|
<doc:example>
|
24511
24573
|
<doc:source>
|
@@ -24535,8 +24597,12 @@ var htmlAnchorDirective = valueFn({
|
|
24535
24597
|
* @description
|
24536
24598
|
* The HTML specification does not require browsers to preserve the values of boolean attributes
|
24537
24599
|
* such as readonly. (Their presence means true and their absence means false.)
|
24538
|
-
*
|
24600
|
+
* If we put an Angular interpolation expression into such an attribute then the
|
24601
|
+
* binding information would be lost when the browser removes the attribute.
|
24539
24602
|
* The `ngReadonly` directive solves this problem for the `readonly` attribute.
|
24603
|
+
* This complementary directive is not removed by the browser and so provides
|
24604
|
+
* a permanent reliable place to store the binding information.
|
24605
|
+
|
24540
24606
|
* @example
|
24541
24607
|
<doc:example>
|
24542
24608
|
<doc:source>
|
@@ -24566,8 +24632,11 @@ var htmlAnchorDirective = valueFn({
|
|
24566
24632
|
* @description
|
24567
24633
|
* The HTML specification does not require browsers to preserve the values of boolean attributes
|
24568
24634
|
* such as selected. (Their presence means true and their absence means false.)
|
24569
|
-
*
|
24635
|
+
* If we put an Angular interpolation expression into such an attribute then the
|
24636
|
+
* binding information would be lost when the browser removes the attribute.
|
24570
24637
|
* The `ngSelected` directive solves this problem for the `selected` atttribute.
|
24638
|
+
* This complementary directive is not removed by the browser and so provides
|
24639
|
+
* a permanent reliable place to store the binding information.
|
24571
24640
|
* @example
|
24572
24641
|
<doc:example>
|
24573
24642
|
<doc:source>
|
@@ -24599,8 +24668,12 @@ var htmlAnchorDirective = valueFn({
|
|
24599
24668
|
* @description
|
24600
24669
|
* The HTML specification does not require browsers to preserve the values of boolean attributes
|
24601
24670
|
* such as open. (Their presence means true and their absence means false.)
|
24602
|
-
*
|
24671
|
+
* If we put an Angular interpolation expression into such an attribute then the
|
24672
|
+
* binding information would be lost when the browser removes the attribute.
|
24603
24673
|
* The `ngOpen` directive solves this problem for the `open` attribute.
|
24674
|
+
* This complementary directive is not removed by the browser and so provides
|
24675
|
+
* a permanent reliable place to store the binding information.
|
24676
|
+
|
24604
24677
|
*
|
24605
24678
|
* @example
|
24606
24679
|
<doc:example>
|
@@ -25430,8 +25503,21 @@ var inputType = {
|
|
25430
25503
|
|
25431
25504
|
|
25432
25505
|
function textInputType(scope, element, attr, ctrl, $sniffer, $browser) {
|
25506
|
+
// In composition mode, users are still inputing intermediate text buffer,
|
25507
|
+
// hold the listener until composition is done.
|
25508
|
+
// More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent
|
25509
|
+
var composing = false;
|
25510
|
+
|
25511
|
+
element.on('compositionstart', function() {
|
25512
|
+
composing = true;
|
25513
|
+
});
|
25514
|
+
|
25515
|
+
element.on('compositionend', function() {
|
25516
|
+
composing = false;
|
25517
|
+
});
|
25433
25518
|
|
25434
25519
|
var listener = function() {
|
25520
|
+
if (composing) return;
|
25435
25521
|
var value = element.val();
|
25436
25522
|
|
25437
25523
|
// By default we will trim the value
|
@@ -26721,11 +26807,10 @@ function classDirective(name, selector) {
|
|
26721
26807
|
// jshint bitwise: false
|
26722
26808
|
var mod = $index & 1;
|
26723
26809
|
if (mod !== old$index & 1) {
|
26724
|
-
|
26725
|
-
|
26726
|
-
|
26727
|
-
removeClass(
|
26728
|
-
}
|
26810
|
+
var classes = flattenClasses(scope.$eval(attr[name]));
|
26811
|
+
mod === selector ?
|
26812
|
+
attr.$addClass(classes) :
|
26813
|
+
attr.$removeClass(classes);
|
26729
26814
|
}
|
26730
26815
|
});
|
26731
26816
|
}
|
@@ -26733,24 +26818,17 @@ function classDirective(name, selector) {
|
|
26733
26818
|
|
26734
26819
|
function ngClassWatchAction(newVal) {
|
26735
26820
|
if (selector === true || scope.$index % 2 === selector) {
|
26736
|
-
|
26737
|
-
|
26821
|
+
var newClasses = flattenClasses(newVal || '');
|
26822
|
+
if(!oldVal) {
|
26823
|
+
attr.$addClass(newClasses);
|
26824
|
+
} else if(!equals(newVal,oldVal)) {
|
26825
|
+
attr.$updateClass(newClasses, flattenClasses(oldVal));
|
26738
26826
|
}
|
26739
|
-
addClass(newVal);
|
26740
26827
|
}
|
26741
26828
|
oldVal = copy(newVal);
|
26742
26829
|
}
|
26743
26830
|
|
26744
26831
|
|
26745
|
-
function removeClass(classVal) {
|
26746
|
-
attr.$removeClass(flattenClasses(classVal));
|
26747
|
-
}
|
26748
|
-
|
26749
|
-
|
26750
|
-
function addClass(classVal) {
|
26751
|
-
attr.$addClass(flattenClasses(classVal));
|
26752
|
-
}
|
26753
|
-
|
26754
26832
|
function flattenClasses(classVal) {
|
26755
26833
|
if(isArray(classVal)) {
|
26756
26834
|
return classVal.join(' ');
|
@@ -27228,7 +27306,8 @@ var ngCloakDirective = ngDirective({
|
|
27228
27306
|
var ngControllerDirective = [function() {
|
27229
27307
|
return {
|
27230
27308
|
scope: true,
|
27231
|
-
controller: '@'
|
27309
|
+
controller: '@',
|
27310
|
+
priority: 500
|
27232
27311
|
};
|
27233
27312
|
}];
|
27234
27313
|
|
@@ -27924,18 +28003,23 @@ var ngIncludeDirective = ['$http', '$templateCache', '$anchorScroll', '$compile'
|
|
27924
28003
|
if (thisChangeId !== changeCounter) return;
|
27925
28004
|
var newScope = scope.$new();
|
27926
28005
|
|
27927
|
-
|
27928
|
-
|
27929
|
-
|
27930
|
-
|
27931
|
-
|
27932
|
-
|
27933
|
-
|
27934
|
-
|
27935
|
-
|
27936
|
-
|
27937
|
-
|
27938
|
-
|
28006
|
+
// Note: This will also link all children of ng-include that were contained in the original
|
28007
|
+
// html. If that content contains controllers, ... they could pollute/change the scope.
|
28008
|
+
// However, using ng-include on an element with additional content does not make sense...
|
28009
|
+
// Note: We can't remove them in the cloneAttchFn of $transclude as that
|
28010
|
+
// function is called before linking the content, which would apply child
|
28011
|
+
// directives to non existing elements.
|
28012
|
+
var clone = $transclude(newScope, noop);
|
28013
|
+
cleanupLastIncludeContent();
|
28014
|
+
|
28015
|
+
currentScope = newScope;
|
28016
|
+
currentElement = clone;
|
28017
|
+
|
28018
|
+
currentElement.html(response);
|
28019
|
+
$animate.enter(currentElement, null, $element, afterAnimation);
|
28020
|
+
$compile(currentElement.contents())(currentScope);
|
28021
|
+
currentScope.$emit('$includeContentLoaded');
|
28022
|
+
scope.$eval(onloadExp);
|
27939
28023
|
}).error(function() {
|
27940
28024
|
if (thisChangeId === changeCounter) cleanupLastIncludeContent();
|
27941
28025
|
});
|
@@ -28090,7 +28174,7 @@ var ngNonBindableDirective = ngDirective({ terminal: true, priority: 1000 });
|
|
28090
28174
|
* other numbers, for example 12, so that instead of showing "12 people are viewing", you can
|
28091
28175
|
* show "a dozen people are viewing".
|
28092
28176
|
*
|
28093
|
-
* You can use a set of closed braces(`{}`) as a placeholder for the number that you want substituted
|
28177
|
+
* You can use a set of closed braces (`{}`) as a placeholder for the number that you want substituted
|
28094
28178
|
* into pluralized strings. In the previous example, Angular will replace `{}` with
|
28095
28179
|
* <span ng-non-bindable>`{{personCount}}`</span>. The closed braces `{}` is a placeholder
|
28096
28180
|
* for <span ng-non-bindable>{{numberExpression}}</span>.
|
@@ -28351,7 +28435,7 @@ var ngPluralizeDirective = ['$locale', '$interpolate', function($locale, $interp
|
|
28351
28435
|
* For example: `item in items track by $id(item)`. A built in `$id()` function can be used to assign a unique
|
28352
28436
|
* `$$hashKey` property to each item in the array. This property is then used as a key to associated DOM elements
|
28353
28437
|
* with the corresponding item in the array by identity. Moving the same object in array would move the DOM
|
28354
|
-
* element in the same way
|
28438
|
+
* element in the same way in the DOM.
|
28355
28439
|
*
|
28356
28440
|
* For example: `item in items track by item.id` is a typical pattern when the items come from the database. In this
|
28357
28441
|
* case the object identity does not matter. Two objects are considered equivalent as long as their `id`
|
@@ -32132,5 +32216,5 @@ if (config.autotest) {
|
|
32132
32216
|
})(window, document);
|
32133
32217
|
|
32134
32218
|
|
32135
|
-
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak,\n.ng-hide {\n display: none !important;\n}\n\nng\\:form {\n display: block;\n}\n\n/* The styles below ensure that the CSS transition will ALWAYS\n * animate and close. A nasty bug occurs with CSS transitions where\n * when the active class isn\'t set, or if the active class doesn\'t\n * contain any styles to transition to, then, if ngAnimate is used,\n * it will appear as if the webpage is broken due to the forever hanging\n * animations. The
|
32219
|
+
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n\n[ng\\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],\n.ng-cloak, .x-ng-cloak,\n.ng-hide {\n display: none !important;\n}\n\nng\\:form {\n display: block;\n}\n\n/* The styles below ensure that the CSS transition will ALWAYS\n * animate and close. A nasty bug occurs with CSS transitions where\n * when the active class isn\'t set, or if the active class doesn\'t\n * contain any styles to transition to, then, if ngAnimate is used,\n * it will appear as if the webpage is broken due to the forever hanging\n * animations. The border-spacing (!ie) and zoom (ie) CSS properties are\n * used below since they trigger a transition without making the browser\n * animate anything and they\'re both highly underused CSS properties */\n.ng-animate-start { border-spacing:1px 1px; -ms-zoom:1.0001; }\n.ng-animate-active { border-spacing:0px 0px; -ms-zoom:1; }\n</style>');
|
32136
32220
|
!angular.$$csp() && angular.element(document).find('head').prepend('<style type="text/css">@charset "UTF-8";\n/* CSS Document */\n\n/** Structure */\nbody {\n font-family: Arial, sans-serif;\n margin: 0;\n font-size: 14px;\n}\n\n#system-error {\n font-size: 1.5em;\n text-align: center;\n}\n\n#json, #xml {\n display: none;\n}\n\n#header {\n position: fixed;\n width: 100%;\n}\n\n#specs {\n padding-top: 50px;\n}\n\n#header .angular {\n font-family: Courier New, monospace;\n font-weight: bold;\n}\n\n#header h1 {\n font-weight: normal;\n float: left;\n font-size: 30px;\n line-height: 30px;\n margin: 0;\n padding: 10px 10px;\n height: 30px;\n}\n\n#application h2,\n#specs h2 {\n margin: 0;\n padding: 0.5em;\n font-size: 1.1em;\n}\n\n#status-legend {\n margin-top: 10px;\n margin-right: 10px;\n}\n\n#header,\n#application,\n.test-info,\n.test-actions li {\n overflow: hidden;\n}\n\n#application {\n margin: 10px;\n}\n\n#application iframe {\n width: 100%;\n height: 758px;\n}\n\n#application .popout {\n float: right;\n}\n\n#application iframe {\n border: none;\n}\n\n.tests li,\n.test-actions li,\n.test-it li,\n.test-it ol,\n.status-display {\n list-style-type: none;\n}\n\n.tests,\n.test-it ol,\n.status-display {\n margin: 0;\n padding: 0;\n}\n\n.test-info {\n margin-left: 1em;\n margin-top: 0.5em;\n border-radius: 8px 0 0 8px;\n -webkit-border-radius: 8px 0 0 8px;\n -moz-border-radius: 8px 0 0 8px;\n cursor: pointer;\n}\n\n.test-info:hover .test-name {\n text-decoration: underline;\n}\n\n.test-info .closed:before {\n content: \'\\25b8\\00A0\';\n}\n\n.test-info .open:before {\n content: \'\\25be\\00A0\';\n font-weight: bold;\n}\n\n.test-it ol {\n margin-left: 2.5em;\n}\n\n.status-display,\n.status-display li {\n float: right;\n}\n\n.status-display li {\n padding: 5px 10px;\n}\n\n.timer-result,\n.test-title {\n display: inline-block;\n margin: 0;\n padding: 4px;\n}\n\n.test-actions .test-title,\n.test-actions .test-result {\n display: table-cell;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n\n.test-actions {\n display: table;\n}\n\n.test-actions li {\n display: table-row;\n}\n\n.timer-result {\n width: 4em;\n padding: 0 10px;\n text-align: right;\n font-family: monospace;\n}\n\n.test-it pre,\n.test-actions pre {\n clear: left;\n color: black;\n margin-left: 6em;\n}\n\n.test-describe {\n padding-bottom: 0.5em;\n}\n\n.test-describe .test-describe {\n margin: 5px 5px 10px 2em;\n}\n\n.test-actions .status-pending .test-title:before {\n content: \'\\00bb\\00A0\';\n}\n\n.scrollpane {\n max-height: 20em;\n overflow: auto;\n}\n\n/** Colors */\n\n#header {\n background-color: #F2C200;\n}\n\n#specs h2 {\n border-top: 2px solid #BABAD1;\n}\n\n#specs h2,\n#application h2 {\n background-color: #efefef;\n}\n\n#application {\n border: 1px solid #BABAD1;\n}\n\n.test-describe .test-describe {\n border-left: 1px solid #BABAD1;\n border-right: 1px solid #BABAD1;\n border-bottom: 1px solid #BABAD1;\n}\n\n.status-display {\n border: 1px solid #777;\n}\n\n.status-display .status-pending,\n.status-pending .test-info {\n background-color: #F9EEBC;\n}\n\n.status-display .status-success,\n.status-success .test-info {\n background-color: #B1D7A1;\n}\n\n.status-display .status-failure,\n.status-failure .test-info {\n background-color: #FF8286;\n}\n\n.status-display .status-error,\n.status-error .test-info {\n background-color: black;\n color: white;\n}\n\n.test-actions .status-success .test-title {\n color: #30B30A;\n}\n\n.test-actions .status-failure .test-title {\n color: #DF0000;\n}\n\n.test-actions .status-error .test-title {\n color: black;\n}\n\n.test-actions .timer-result {\n color: #888;\n}\n</style>');
|