angularjs-rails 1.2.15 → 1.2.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/angularjs-rails/version.rb +2 -2
- data/vendor/assets/javascripts/angular-animate.js +11 -8
- data/vendor/assets/javascripts/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/angular-loader.js +4 -4
- data/vendor/assets/javascripts/angular-mocks.js +26 -22
- data/vendor/assets/javascripts/angular-resource.js +4 -1
- data/vendor/assets/javascripts/angular-route.js +1 -1
- data/vendor/assets/javascripts/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/angular-scenario.js +400 -104
- data/vendor/assets/javascripts/angular-touch.js +1 -1
- data/vendor/assets/javascripts/angular.js +400 -104
- data/vendor/assets/javascripts/unstable/angular-animate.js +250 -230
- data/vendor/assets/javascripts/unstable/angular-cookies.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-loader.js +4 -4
- data/vendor/assets/javascripts/unstable/angular-mocks.js +26 -22
- data/vendor/assets/javascripts/unstable/angular-resource.js +4 -1
- data/vendor/assets/javascripts/unstable/angular-route.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-sanitize.js +1 -1
- data/vendor/assets/javascripts/unstable/angular-scenario.js +430 -120
- data/vendor/assets/javascripts/unstable/angular-touch.js +1 -1
- data/vendor/assets/javascripts/unstable/angular.js +430 -120
- metadata +2 -2
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.0-beta.
|
2
|
+
* @license AngularJS v1.3.0-beta.5
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -69,7 +69,7 @@ function minErr(module) {
|
|
69
69
|
return match;
|
70
70
|
});
|
71
71
|
|
72
|
-
message = message + '\nhttp://errors.angularjs.org/1.3.0-beta.
|
72
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.0-beta.5/' +
|
73
73
|
(module ? module + '/' : '') + code;
|
74
74
|
for (i = 2; i < arguments.length; i++) {
|
75
75
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -152,9 +152,9 @@ function setupModuleLoader(window) {
|
|
152
152
|
* {@link angular.bootstrap} to simplify this process for you.
|
153
153
|
*
|
154
154
|
* @param {!string} name The name of the module to create or retrieve.
|
155
|
-
* @param {Array.<string>=} requires If specified then new module is being created. If
|
155
|
+
* @param {!Array.<string>=} requires If specified then new module is being created. If
|
156
156
|
* unspecified then the module is being retrieved for further configuration.
|
157
|
-
* @param {Function} configFn Optional configuration function for the module. Same as
|
157
|
+
* @param {Function=} configFn Optional configuration function for the module. Same as
|
158
158
|
* {@link angular.Module#config Module#config()}.
|
159
159
|
* @returns {module} new module with the {@link angular.Module} api.
|
160
160
|
*/
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.0-beta.
|
2
|
+
* @license AngularJS v1.3.0-beta.5
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -1097,12 +1097,12 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
|
|
1097
1097
|
responsesPush = angular.bind(responses, responses.push),
|
1098
1098
|
copy = angular.copy;
|
1099
1099
|
|
1100
|
-
function createResponse(status, data, headers) {
|
1100
|
+
function createResponse(status, data, headers, statusText) {
|
1101
1101
|
if (angular.isFunction(status)) return status;
|
1102
1102
|
|
1103
1103
|
return function() {
|
1104
1104
|
return angular.isNumber(status)
|
1105
|
-
? [status, data, headers]
|
1105
|
+
? [status, data, headers, statusText]
|
1106
1106
|
: [200, status, data];
|
1107
1107
|
};
|
1108
1108
|
}
|
@@ -1127,7 +1127,8 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
|
|
1127
1127
|
function handleResponse() {
|
1128
1128
|
var response = wrapped.response(method, url, data, headers);
|
1129
1129
|
xhr.$$respHeaders = response[2];
|
1130
|
-
callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders()
|
1130
|
+
callback(copy(response[0]), copy(response[1]), xhr.getAllResponseHeaders(),
|
1131
|
+
copy(response[3] || ''));
|
1131
1132
|
}
|
1132
1133
|
|
1133
1134
|
function handleTimeout() {
|
@@ -1195,16 +1196,17 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
|
|
1195
1196
|
* request is handled.
|
1196
1197
|
*
|
1197
1198
|
* - respond –
|
1198
|
-
* `{function([status,] data[, headers
|
1199
|
-
*
|
1200
|
-
*
|
1201
|
-
* (
|
1199
|
+
* `{function([status,] data[, headers, statusText])
|
1200
|
+
* | function(function(method, url, data, headers)}`
|
1201
|
+
* – The respond method takes a set of static data to be returned or a function that can
|
1202
|
+
* return an array containing response status (number), response data (string), response
|
1203
|
+
* headers (Object), and the text for the status (string).
|
1202
1204
|
*/
|
1203
1205
|
$httpBackend.when = function(method, url, data, headers) {
|
1204
1206
|
var definition = new MockHttpExpectation(method, url, data, headers),
|
1205
1207
|
chain = {
|
1206
|
-
respond: function(status, data, headers) {
|
1207
|
-
definition.response = createResponse(status, data, headers);
|
1208
|
+
respond: function(status, data, headers, statusText) {
|
1209
|
+
definition.response = createResponse(status, data, headers, statusText);
|
1208
1210
|
}
|
1209
1211
|
};
|
1210
1212
|
|
@@ -1319,17 +1321,18 @@ function createHttpBackendMock($rootScope, $delegate, $browser) {
|
|
1319
1321
|
* request is handled.
|
1320
1322
|
*
|
1321
1323
|
* - respond –
|
1322
|
-
* `{function([status,] data[, headers
|
1323
|
-
*
|
1324
|
-
*
|
1325
|
-
* (
|
1324
|
+
* `{function([status,] data[, headers, statusText])
|
1325
|
+
* | function(function(method, url, data, headers)}`
|
1326
|
+
* – The respond method takes a set of static data to be returned or a function that can
|
1327
|
+
* return an array containing response status (number), response data (string), response
|
1328
|
+
* headers (Object), and the text for the status (string).
|
1326
1329
|
*/
|
1327
1330
|
$httpBackend.expect = function(method, url, data, headers) {
|
1328
1331
|
var expectation = new MockHttpExpectation(method, url, data, headers);
|
1329
1332
|
expectations.push(expectation);
|
1330
1333
|
return {
|
1331
|
-
respond: function(status, data, headers) {
|
1332
|
-
expectation.response = createResponse(status, data, headers);
|
1334
|
+
respond: function (status, data, headers, statusText) {
|
1335
|
+
expectation.response = createResponse(status, data, headers, statusText);
|
1333
1336
|
}
|
1334
1337
|
};
|
1335
1338
|
};
|
@@ -1840,13 +1843,14 @@ angular.module('ngMockE2E', ['ng']).config(['$provide', function($provide) {
|
|
1840
1843
|
* control how a matched request is handled.
|
1841
1844
|
*
|
1842
1845
|
* - respond –
|
1843
|
-
* `{function([status,] data[, headers
|
1846
|
+
* `{function([status,] data[, headers, statusText])
|
1847
|
+
* | function(function(method, url, data, headers)}`
|
1844
1848
|
* – The respond method takes a set of static data to be returned or a function that can return
|
1845
|
-
* an array containing response status (number), response data (string)
|
1846
|
-
* (Object).
|
1847
|
-
* - passThrough – `{function()}` – Any request matching a backend definition with
|
1848
|
-
* handler will be passed through to the real backend (an XHR request will be made
|
1849
|
-
* server.)
|
1849
|
+
* an array containing response status (number), response data (string), response headers
|
1850
|
+
* (Object), and the text for the status (string).
|
1851
|
+
* - passThrough – `{function()}` – Any request matching a backend definition with
|
1852
|
+
* `passThrough` handler will be passed through to the real backend (an XHR request will be made
|
1853
|
+
* to the server.)
|
1850
1854
|
*/
|
1851
1855
|
|
1852
1856
|
/**
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.3.0-beta.
|
2
|
+
* @license AngularJS v1.3.0-beta.5
|
3
3
|
* (c) 2010-2014 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
@@ -204,6 +204,9 @@ function shallowClearAndCopy(src, dst) {
|
|
204
204
|
* On failure, the promise is resolved with the {@link ng.$http http response} object, without
|
205
205
|
* the `resource` property.
|
206
206
|
*
|
207
|
+
* If an interceptor object was provided, the promise will instead be resolved with the value
|
208
|
+
* returned by the interceptor.
|
209
|
+
*
|
207
210
|
* - `$resolved`: `true` after first server interaction is completed (either with success or
|
208
211
|
* rejection), `false` before that. Knowing if the Resource has been resolved is useful in
|
209
212
|
* data-binding.
|
@@ -9790,7 +9790,7 @@ if ( typeof module === "object" && module && typeof module.exports === "object"
|
|
9790
9790
|
})( window );
|
9791
9791
|
|
9792
9792
|
/**
|
9793
|
-
* @license AngularJS v1.3.0-beta.
|
9793
|
+
* @license AngularJS v1.3.0-beta.5
|
9794
9794
|
* (c) 2010-2014 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.3.0-beta.
|
9863
|
+
message = message + '\nhttp://errors.angularjs.org/1.3.0-beta.5/' +
|
9864
9864
|
(module ? module + '/' : '') + code;
|
9865
9865
|
for (i = 2; i < arguments.length; i++) {
|
9866
9866
|
message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +
|
@@ -11147,7 +11147,7 @@ function angularInit(element, bootstrap) {
|
|
11147
11147
|
* </file>
|
11148
11148
|
* </example>
|
11149
11149
|
*
|
11150
|
-
* @param {
|
11150
|
+
* @param {DOMElement} element DOM element which is the root of angular application.
|
11151
11151
|
* @param {Array<String|Function|Array>=} modules an array of modules to load into the application.
|
11152
11152
|
* Each item in the array should be the name of a predefined module or a (DI annotated)
|
11153
11153
|
* function that will be invoked by the injector as a run block.
|
@@ -11381,9 +11381,9 @@ function setupModuleLoader(window) {
|
|
11381
11381
|
* {@link angular.bootstrap} to simplify this process for you.
|
11382
11382
|
*
|
11383
11383
|
* @param {!string} name The name of the module to create or retrieve.
|
11384
|
-
* @param {Array.<string>=} requires If specified then new module is being created. If
|
11384
|
+
* @param {!Array.<string>=} requires If specified then new module is being created. If
|
11385
11385
|
* unspecified then the module is being retrieved for further configuration.
|
11386
|
-
* @param {Function} configFn Optional configuration function for the module. Same as
|
11386
|
+
* @param {Function=} configFn Optional configuration function for the module. Same as
|
11387
11387
|
* {@link angular.Module#config Module#config()}.
|
11388
11388
|
* @returns {module} new module with the {@link angular.Module} api.
|
11389
11389
|
*/
|
@@ -11711,11 +11711,11 @@ function setupModuleLoader(window) {
|
|
11711
11711
|
* - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat".
|
11712
11712
|
*/
|
11713
11713
|
var version = {
|
11714
|
-
full: '1.3.0-beta.
|
11714
|
+
full: '1.3.0-beta.5', // all of these placeholder strings will be replaced by grunt's
|
11715
11715
|
major: 1, // package task
|
11716
11716
|
minor: 3,
|
11717
11717
|
dot: 0,
|
11718
|
-
codeName: '
|
11718
|
+
codeName: 'chimeric-glitterfication'
|
11719
11719
|
};
|
11720
11720
|
|
11721
11721
|
|
@@ -12018,6 +12018,81 @@ function jqLitePatchJQueryRemove(name, dispatchThis, filterElems, getterIfNoArgu
|
|
12018
12018
|
}
|
12019
12019
|
}
|
12020
12020
|
|
12021
|
+
var SINGLE_TAG_REGEXP = /^<(\w+)\s*\/?>(?:<\/\1>|)$/;
|
12022
|
+
var HTML_REGEXP = /<|&#?\w+;/;
|
12023
|
+
var TAG_NAME_REGEXP = /<([\w:]+)/;
|
12024
|
+
var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi;
|
12025
|
+
|
12026
|
+
var wrapMap = {
|
12027
|
+
'option': [1, '<select multiple="multiple">', '</select>'],
|
12028
|
+
|
12029
|
+
'thead': [1, '<table>', '</table>'],
|
12030
|
+
'col': [2, '<table><colgroup>', '</colgroup></table>'],
|
12031
|
+
'tr': [2, '<table><tbody>', '</tbody></table>'],
|
12032
|
+
'td': [3, '<table><tbody><tr>', '</tr></tbody></table>'],
|
12033
|
+
'_default': [0, "", ""]
|
12034
|
+
};
|
12035
|
+
|
12036
|
+
wrapMap.optgroup = wrapMap.option;
|
12037
|
+
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
12038
|
+
wrapMap.th = wrapMap.td;
|
12039
|
+
|
12040
|
+
function jqLiteIsTextNode(html) {
|
12041
|
+
return !HTML_REGEXP.test(html);
|
12042
|
+
}
|
12043
|
+
|
12044
|
+
function jqLiteBuildFragment(html, context) {
|
12045
|
+
var elem, tmp, tag, wrap,
|
12046
|
+
fragment = context.createDocumentFragment(),
|
12047
|
+
nodes = [], i;
|
12048
|
+
|
12049
|
+
if (jqLiteIsTextNode(html)) {
|
12050
|
+
// Convert non-html into a text node
|
12051
|
+
nodes.push(context.createTextNode(html));
|
12052
|
+
} else {
|
12053
|
+
// Convert html into DOM nodes
|
12054
|
+
tmp = tmp || fragment.appendChild(context.createElement("div"));
|
12055
|
+
tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase();
|
12056
|
+
wrap = wrapMap[tag] || wrapMap._default;
|
12057
|
+
tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1></$2>") + wrap[2];
|
12058
|
+
|
12059
|
+
// Descend through wrappers to the right content
|
12060
|
+
i = wrap[0];
|
12061
|
+
while (i--) {
|
12062
|
+
tmp = tmp.lastChild;
|
12063
|
+
}
|
12064
|
+
|
12065
|
+
nodes = concat(nodes, tmp.childNodes);
|
12066
|
+
|
12067
|
+
tmp = fragment.firstChild;
|
12068
|
+
tmp.textContent = "";
|
12069
|
+
}
|
12070
|
+
|
12071
|
+
// Remove wrapper from fragment
|
12072
|
+
fragment.textContent = "";
|
12073
|
+
fragment.innerHTML = ""; // Clear inner HTML
|
12074
|
+
forEach(nodes, function(node) {
|
12075
|
+
fragment.appendChild(node);
|
12076
|
+
});
|
12077
|
+
|
12078
|
+
return fragment;
|
12079
|
+
}
|
12080
|
+
|
12081
|
+
function jqLiteParseHTML(html, context) {
|
12082
|
+
context = context || document;
|
12083
|
+
var parsed;
|
12084
|
+
|
12085
|
+
if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {
|
12086
|
+
return [context.createElement(parsed[1])];
|
12087
|
+
}
|
12088
|
+
|
12089
|
+
if ((parsed = jqLiteBuildFragment(html, context))) {
|
12090
|
+
return parsed.childNodes;
|
12091
|
+
}
|
12092
|
+
|
12093
|
+
return [];
|
12094
|
+
}
|
12095
|
+
|
12021
12096
|
/////////////////////////////////////////////
|
12022
12097
|
function JQLite(element) {
|
12023
12098
|
if (element instanceof JQLite) {
|
@@ -12034,14 +12109,7 @@ function JQLite(element) {
|
|
12034
12109
|
}
|
12035
12110
|
|
12036
12111
|
if (isString(element)) {
|
12037
|
-
|
12038
|
-
// Read about the NoScope elements here:
|
12039
|
-
// http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx
|
12040
|
-
div.innerHTML = '<div> </div>' + element; // IE insanity to make NoScope elements work!
|
12041
|
-
div.removeChild(div.firstChild); // remove the superfluous div
|
12042
|
-
jqLiteAddNodes(this, div.childNodes);
|
12043
|
-
var fragment = jqLite(document.createDocumentFragment());
|
12044
|
-
fragment.append(this); // detach the elements from the temporary DOM div.
|
12112
|
+
jqLiteAddNodes(this, jqLiteParseHTML(element));
|
12045
12113
|
} else {
|
12046
12114
|
jqLiteAddNodes(this, element);
|
12047
12115
|
}
|
@@ -13834,8 +13902,9 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|
13834
13902
|
* @ngdoc method
|
13835
13903
|
* @name $animate#enter
|
13836
13904
|
* @function
|
13837
|
-
* @description Inserts the element into the DOM either after the `after` element or
|
13838
|
-
*
|
13905
|
+
* @description Inserts the element into the DOM either after the `after` element or
|
13906
|
+
* as the first child within the `parent` element. Once complete, the done() callback
|
13907
|
+
* will be fired (if provided).
|
13839
13908
|
* @param {DOMElement} element the element which will be inserted into the DOM
|
13840
13909
|
* @param {DOMElement} parent the parent element which will append the element as
|
13841
13910
|
* a child (if the after element is not present)
|
@@ -13845,14 +13914,9 @@ var $AnimateProvider = ['$provide', function($provide) {
|
|
13845
13914
|
* inserted into the DOM
|
13846
13915
|
*/
|
13847
13916
|
enter : function(element, parent, after, done) {
|
13848
|
-
|
13849
|
-
|
13850
|
-
|
13851
|
-
if (!parent || !parent[0]) {
|
13852
|
-
parent = after.parent();
|
13853
|
-
}
|
13854
|
-
parent.append(element);
|
13855
|
-
}
|
13917
|
+
after
|
13918
|
+
? after.after(element)
|
13919
|
+
: parent.prepend(element);
|
13856
13920
|
async(done);
|
13857
13921
|
},
|
13858
13922
|
|
@@ -14367,7 +14431,8 @@ function $BrowserProvider(){
|
|
14367
14431
|
* @name $cacheFactory
|
14368
14432
|
*
|
14369
14433
|
* @description
|
14370
|
-
* Factory that constructs
|
14434
|
+
* Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to
|
14435
|
+
* them.
|
14371
14436
|
*
|
14372
14437
|
* ```js
|
14373
14438
|
*
|
@@ -14399,6 +14464,46 @@ function $BrowserProvider(){
|
|
14399
14464
|
* - `{void}` `removeAll()` — Removes all cached values.
|
14400
14465
|
* - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.
|
14401
14466
|
*
|
14467
|
+
* @example
|
14468
|
+
<example module="cacheExampleApp">
|
14469
|
+
<file name="index.html">
|
14470
|
+
<div ng-controller="CacheController">
|
14471
|
+
<input ng-model="newCacheKey" placeholder="Key">
|
14472
|
+
<input ng-model="newCacheValue" placeholder="Value">
|
14473
|
+
<button ng-click="put(newCacheKey, newCacheValue)">Cache</button>
|
14474
|
+
|
14475
|
+
<p ng-if="keys.length">Cached Values</p>
|
14476
|
+
<div ng-repeat="key in keys">
|
14477
|
+
<span ng-bind="key"></span>
|
14478
|
+
<span>: </span>
|
14479
|
+
<b ng-bind="cache.get(key)"></b>
|
14480
|
+
</div>
|
14481
|
+
|
14482
|
+
<p>Cache Info</p>
|
14483
|
+
<div ng-repeat="(key, value) in cache.info()">
|
14484
|
+
<span ng-bind="key"></span>
|
14485
|
+
<span>: </span>
|
14486
|
+
<b ng-bind="value"></b>
|
14487
|
+
</div>
|
14488
|
+
</div>
|
14489
|
+
</file>
|
14490
|
+
<file name="script.js">
|
14491
|
+
angular.module('cacheExampleApp', []).
|
14492
|
+
controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
|
14493
|
+
$scope.keys = [];
|
14494
|
+
$scope.cache = $cacheFactory('cacheId');
|
14495
|
+
$scope.put = function(key, value) {
|
14496
|
+
$scope.cache.put(key, value);
|
14497
|
+
$scope.keys.push(key);
|
14498
|
+
};
|
14499
|
+
}]);
|
14500
|
+
</file>
|
14501
|
+
<file name="style.css">
|
14502
|
+
p {
|
14503
|
+
margin: 10px 0 3px;
|
14504
|
+
}
|
14505
|
+
</file>
|
14506
|
+
</example>
|
14402
14507
|
*/
|
14403
14508
|
function $CacheFactoryProvider() {
|
14404
14509
|
|
@@ -14418,8 +14523,65 @@ function $CacheFactoryProvider() {
|
|
14418
14523
|
freshEnd = null,
|
14419
14524
|
staleEnd = null;
|
14420
14525
|
|
14526
|
+
/**
|
14527
|
+
* @ngdoc type
|
14528
|
+
* @name $cacheFactory.Cache
|
14529
|
+
*
|
14530
|
+
* @description
|
14531
|
+
* A cache object used to store and retrieve data, primarily used by
|
14532
|
+
* {@link $http $http} and the {@link ng.directive:script script} directive to cache
|
14533
|
+
* templates and other data.
|
14534
|
+
*
|
14535
|
+
* ```js
|
14536
|
+
* angular.module('superCache')
|
14537
|
+
* .factory('superCache', ['$cacheFactory', function($cacheFactory) {
|
14538
|
+
* return $cacheFactory('super-cache');
|
14539
|
+
* }]);
|
14540
|
+
* ```
|
14541
|
+
*
|
14542
|
+
* Example test:
|
14543
|
+
*
|
14544
|
+
* ```js
|
14545
|
+
* it('should behave like a cache', inject(function(superCache) {
|
14546
|
+
* superCache.put('key', 'value');
|
14547
|
+
* superCache.put('another key', 'another value');
|
14548
|
+
*
|
14549
|
+
* expect(superCache.info()).toEqual({
|
14550
|
+
* id: 'super-cache',
|
14551
|
+
* size: 2
|
14552
|
+
* });
|
14553
|
+
*
|
14554
|
+
* superCache.remove('another key');
|
14555
|
+
* expect(superCache.get('another key')).toBeUndefined();
|
14556
|
+
*
|
14557
|
+
* superCache.removeAll();
|
14558
|
+
* expect(superCache.info()).toEqual({
|
14559
|
+
* id: 'super-cache',
|
14560
|
+
* size: 0
|
14561
|
+
* });
|
14562
|
+
* }));
|
14563
|
+
* ```
|
14564
|
+
*/
|
14421
14565
|
return caches[cacheId] = {
|
14422
14566
|
|
14567
|
+
/**
|
14568
|
+
* @ngdoc method
|
14569
|
+
* @name $cacheFactory.Cache#put
|
14570
|
+
* @function
|
14571
|
+
*
|
14572
|
+
* @description
|
14573
|
+
* Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be
|
14574
|
+
* retrieved later, and incrementing the size of the cache if the key was not already
|
14575
|
+
* present in the cache. If behaving like an LRU cache, it will also remove stale
|
14576
|
+
* entries from the set.
|
14577
|
+
*
|
14578
|
+
* It will not insert undefined values into the cache.
|
14579
|
+
*
|
14580
|
+
* @param {string} key the key under which the cached data is stored.
|
14581
|
+
* @param {*} value the value to store alongside the key. If it is undefined, the key
|
14582
|
+
* will not be stored.
|
14583
|
+
* @returns {*} the value stored.
|
14584
|
+
*/
|
14423
14585
|
put: function(key, value) {
|
14424
14586
|
if (capacity < Number.MAX_VALUE) {
|
14425
14587
|
var lruEntry = lruHash[key] || (lruHash[key] = {key: key});
|
@@ -14438,7 +14600,17 @@ function $CacheFactoryProvider() {
|
|
14438
14600
|
return value;
|
14439
14601
|
},
|
14440
14602
|
|
14441
|
-
|
14603
|
+
/**
|
14604
|
+
* @ngdoc method
|
14605
|
+
* @name $cacheFactory.Cache#get
|
14606
|
+
* @function
|
14607
|
+
*
|
14608
|
+
* @description
|
14609
|
+
* Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.
|
14610
|
+
*
|
14611
|
+
* @param {string} key the key of the data to be retrieved
|
14612
|
+
* @returns {*} the value stored.
|
14613
|
+
*/
|
14442
14614
|
get: function(key) {
|
14443
14615
|
if (capacity < Number.MAX_VALUE) {
|
14444
14616
|
var lruEntry = lruHash[key];
|
@@ -14452,6 +14624,16 @@ function $CacheFactoryProvider() {
|
|
14452
14624
|
},
|
14453
14625
|
|
14454
14626
|
|
14627
|
+
/**
|
14628
|
+
* @ngdoc method
|
14629
|
+
* @name $cacheFactory.Cache#remove
|
14630
|
+
* @function
|
14631
|
+
*
|
14632
|
+
* @description
|
14633
|
+
* Removes an entry from the {@link $cacheFactory.Cache Cache} object.
|
14634
|
+
*
|
14635
|
+
* @param {string} key the key of the entry to be removed
|
14636
|
+
*/
|
14455
14637
|
remove: function(key) {
|
14456
14638
|
if (capacity < Number.MAX_VALUE) {
|
14457
14639
|
var lruEntry = lruHash[key];
|
@@ -14470,6 +14652,14 @@ function $CacheFactoryProvider() {
|
|
14470
14652
|
},
|
14471
14653
|
|
14472
14654
|
|
14655
|
+
/**
|
14656
|
+
* @ngdoc method
|
14657
|
+
* @name $cacheFactory.Cache#removeAll
|
14658
|
+
* @function
|
14659
|
+
*
|
14660
|
+
* @description
|
14661
|
+
* Clears the cache object of any entries.
|
14662
|
+
*/
|
14473
14663
|
removeAll: function() {
|
14474
14664
|
data = {};
|
14475
14665
|
size = 0;
|
@@ -14478,6 +14668,15 @@ function $CacheFactoryProvider() {
|
|
14478
14668
|
},
|
14479
14669
|
|
14480
14670
|
|
14671
|
+
/**
|
14672
|
+
* @ngdoc method
|
14673
|
+
* @name $cacheFactory.Cache#destroy
|
14674
|
+
* @function
|
14675
|
+
*
|
14676
|
+
* @description
|
14677
|
+
* Destroys the {@link $cacheFactory.Cache Cache} object entirely,
|
14678
|
+
* removing it from the {@link $cacheFactory $cacheFactory} set.
|
14679
|
+
*/
|
14481
14680
|
destroy: function() {
|
14482
14681
|
data = null;
|
14483
14682
|
stats = null;
|
@@ -14486,6 +14685,22 @@ function $CacheFactoryProvider() {
|
|
14486
14685
|
},
|
14487
14686
|
|
14488
14687
|
|
14688
|
+
/**
|
14689
|
+
* @ngdoc method
|
14690
|
+
* @name $cacheFactory.Cache#info
|
14691
|
+
* @function
|
14692
|
+
*
|
14693
|
+
* @description
|
14694
|
+
* Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.
|
14695
|
+
*
|
14696
|
+
* @returns {object} an object with the following properties:
|
14697
|
+
* <ul>
|
14698
|
+
* <li>**id**: the id of the cache instance</li>
|
14699
|
+
* <li>**size**: the number of entries kept in the cache instance</li>
|
14700
|
+
* <li>**...**: any additional properties from the options object when creating the
|
14701
|
+
* cache.</li>
|
14702
|
+
* </ul>
|
14703
|
+
*/
|
14489
14704
|
info: function() {
|
14490
14705
|
return extend({}, stats, {size: size});
|
14491
14706
|
}
|
@@ -14672,6 +14887,7 @@ function $TemplateCacheProvider() {
|
|
14672
14887
|
* restrict: 'A',
|
14673
14888
|
* scope: false,
|
14674
14889
|
* controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },
|
14890
|
+
* controllerAs: 'stringAlias',
|
14675
14891
|
* require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],
|
14676
14892
|
* compile: function compile(tElement, tAttrs, transclude) {
|
14677
14893
|
* return {
|
@@ -14889,6 +15105,16 @@ function $TemplateCacheProvider() {
|
|
14889
15105
|
* apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration
|
14890
15106
|
* should be done in a linking function rather than in a compile function.
|
14891
15107
|
* </div>
|
15108
|
+
|
15109
|
+
* <div class="alert alert-warning">
|
15110
|
+
* **Note:** The compile function cannot handle directives that recursively use themselves in their
|
15111
|
+
* own templates or compile functions. Compiling these directives results in an infinite loop and a
|
15112
|
+
* stack overflow errors.
|
15113
|
+
*
|
15114
|
+
* This can be avoided by manually using $compile in the postLink function to imperatively compile
|
15115
|
+
* a directive's template instead of relying on automatic template compilation via `template` or
|
15116
|
+
* `templateUrl` declaration or manual compilation inside the compile function.
|
15117
|
+
* </div>
|
14892
15118
|
*
|
14893
15119
|
* <div class="alert alert-error">
|
14894
15120
|
* **Note:** The `transclude` function that is passed to the compile function is deprecated, as it
|
@@ -15110,8 +15336,7 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15110
15336
|
var hasDirectives = {},
|
15111
15337
|
Suffix = 'Directive',
|
15112
15338
|
COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\d\w\-_]+)\s+(.*)$/,
|
15113
|
-
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)
|
15114
|
-
TABLE_CONTENT_REGEXP = /^<\s*(tr|th|td|thead|tbody|tfoot)(\s+[^>]*)?>/i;
|
15339
|
+
CLASS_DIRECTIVE_REGEXP = /(([\d\w\-_]+)(?:\:([^;]+))?;?)/;
|
15115
15340
|
|
15116
15341
|
// Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes
|
15117
15342
|
// The assumption is that future DOM event attribute names will begin with
|
@@ -15856,7 +16081,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
15856
16081
|
|
15857
16082
|
if (directive.replace) {
|
15858
16083
|
replaceDirective = directive;
|
15859
|
-
|
16084
|
+
if (jqLiteIsTextNode(directiveValue)) {
|
16085
|
+
$template = [];
|
16086
|
+
} else {
|
16087
|
+
$template = jqLite(directiveValue);
|
16088
|
+
}
|
15860
16089
|
compileNode = $template[0];
|
15861
16090
|
|
15862
16091
|
if ($template.length != 1 || compileNode.nodeType !== 1) {
|
@@ -16255,27 +16484,6 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16255
16484
|
}
|
16256
16485
|
|
16257
16486
|
|
16258
|
-
function directiveTemplateContents(template) {
|
16259
|
-
var type;
|
16260
|
-
template = trim(template);
|
16261
|
-
if ((type = TABLE_CONTENT_REGEXP.exec(template))) {
|
16262
|
-
type = type[1].toLowerCase();
|
16263
|
-
var table = jqLite('<table>' + template + '</table>');
|
16264
|
-
if (/(thead|tbody|tfoot)/.test(type)) {
|
16265
|
-
return table.children(type);
|
16266
|
-
}
|
16267
|
-
table = table.children('tbody');
|
16268
|
-
if (type === 'tr') {
|
16269
|
-
return table.children('tr');
|
16270
|
-
}
|
16271
|
-
return table.children('tr').contents();
|
16272
|
-
}
|
16273
|
-
return jqLite('<div>' +
|
16274
|
-
template +
|
16275
|
-
'</div>').contents();
|
16276
|
-
}
|
16277
|
-
|
16278
|
-
|
16279
16487
|
function compileTemplateUrl(directives, $compileNode, tAttrs,
|
16280
16488
|
$rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) {
|
16281
16489
|
var linkQueue = [],
|
@@ -16300,7 +16508,11 @@ function $CompileProvider($provide, $$sanitizeUriProvider) {
|
|
16300
16508
|
content = denormalizeTemplate(content);
|
16301
16509
|
|
16302
16510
|
if (origAsyncDirective.replace) {
|
16303
|
-
|
16511
|
+
if (jqLiteIsTextNode(content)) {
|
16512
|
+
$template = [];
|
16513
|
+
} else {
|
16514
|
+
$template = jqLite(content);
|
16515
|
+
}
|
16304
16516
|
compileNode = $template[0];
|
16305
16517
|
|
16306
16518
|
if ($template.length != 1 || compileNode.nodeType !== 1) {
|
@@ -17078,7 +17290,7 @@ function $HttpProvider() {
|
|
17078
17290
|
*
|
17079
17291
|
* ```
|
17080
17292
|
* module.run(function($http) {
|
17081
|
-
* $http.defaults.headers.common.
|
17293
|
+
* $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'
|
17082
17294
|
* });
|
17083
17295
|
* ```
|
17084
17296
|
*
|
@@ -17372,6 +17584,7 @@ function $HttpProvider() {
|
|
17372
17584
|
* - **status** – `{number}` – HTTP status code of the response.
|
17373
17585
|
* - **headers** – `{function([headerName])}` – Header getter function.
|
17374
17586
|
* - **config** – `{Object}` – The configuration object that was used to generate the request.
|
17587
|
+
* - **statusText** – `{string}` – HTTP status text of the response.
|
17375
17588
|
*
|
17376
17589
|
* @property {Array.<Object>} pendingRequests Array of config objects for currently pending
|
17377
17590
|
* requests. This is primarily meant to be used for debugging purposes.
|
@@ -17746,9 +17959,9 @@ function $HttpProvider() {
|
|
17746
17959
|
} else {
|
17747
17960
|
// serving from cache
|
17748
17961
|
if (isArray(cachedResp)) {
|
17749
|
-
resolvePromise(cachedResp[1], cachedResp[0], copy(cachedResp[2]));
|
17962
|
+
resolvePromise(cachedResp[1], cachedResp[0], copy(cachedResp[2]), cachedResp[3]);
|
17750
17963
|
} else {
|
17751
|
-
resolvePromise(cachedResp, 200, {});
|
17964
|
+
resolvePromise(cachedResp, 200, {}, 'OK');
|
17752
17965
|
}
|
17753
17966
|
}
|
17754
17967
|
} else {
|
@@ -17772,17 +17985,17 @@ function $HttpProvider() {
|
|
17772
17985
|
* - resolves the raw $http promise
|
17773
17986
|
* - calls $apply
|
17774
17987
|
*/
|
17775
|
-
function done(status, response, headersString) {
|
17988
|
+
function done(status, response, headersString, statusText) {
|
17776
17989
|
if (cache) {
|
17777
17990
|
if (isSuccess(status)) {
|
17778
|
-
cache.put(url, [status, response, parseHeaders(headersString)]);
|
17991
|
+
cache.put(url, [status, response, parseHeaders(headersString), statusText]);
|
17779
17992
|
} else {
|
17780
17993
|
// remove promise from the cache
|
17781
17994
|
cache.remove(url);
|
17782
17995
|
}
|
17783
17996
|
}
|
17784
17997
|
|
17785
|
-
resolvePromise(response, status, headersString);
|
17998
|
+
resolvePromise(response, status, headersString, statusText);
|
17786
17999
|
if (!$rootScope.$$phase) $rootScope.$apply();
|
17787
18000
|
}
|
17788
18001
|
|
@@ -17790,7 +18003,7 @@ function $HttpProvider() {
|
|
17790
18003
|
/**
|
17791
18004
|
* Resolves the raw $http promise.
|
17792
18005
|
*/
|
17793
|
-
function resolvePromise(response, status, headers) {
|
18006
|
+
function resolvePromise(response, status, headers, statusText) {
|
17794
18007
|
// normalize internal statuses to 0
|
17795
18008
|
status = Math.max(status, 0);
|
17796
18009
|
|
@@ -17798,7 +18011,8 @@ function $HttpProvider() {
|
|
17798
18011
|
data: response,
|
17799
18012
|
status: status,
|
17800
18013
|
headers: headersGetter(headers),
|
17801
|
-
config: config
|
18014
|
+
config: config,
|
18015
|
+
statusText : statusText
|
17802
18016
|
});
|
17803
18017
|
}
|
17804
18018
|
|
@@ -17929,7 +18143,8 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
|
|
17929
18143
|
completeRequest(callback,
|
17930
18144
|
status || xhr.status,
|
17931
18145
|
response,
|
17932
|
-
responseHeaders
|
18146
|
+
responseHeaders,
|
18147
|
+
xhr.statusText || '');
|
17933
18148
|
}
|
17934
18149
|
};
|
17935
18150
|
|
@@ -17970,7 +18185,7 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
|
|
17970
18185
|
xhr && xhr.abort();
|
17971
18186
|
}
|
17972
18187
|
|
17973
|
-
function completeRequest(callback, status, response, headersString) {
|
18188
|
+
function completeRequest(callback, status, response, headersString, statusText) {
|
17974
18189
|
// cancel timeout and subsequent timeout promise resolution
|
17975
18190
|
timeoutId && $browserDefer.cancel(timeoutId);
|
17976
18191
|
jsonpDone = xhr = null;
|
@@ -17983,9 +18198,10 @@ function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDoc
|
|
17983
18198
|
}
|
17984
18199
|
|
17985
18200
|
// normalize IE bug (http://bugs.jquery.com/ticket/1450)
|
17986
|
-
status = status
|
18201
|
+
status = status === 1223 ? 204 : status;
|
18202
|
+
statusText = statusText || '';
|
17987
18203
|
|
17988
|
-
callback(status, response, headersString);
|
18204
|
+
callback(status, response, headersString, statusText);
|
17989
18205
|
$browser.$$completeOutstandingRequest(noop);
|
17990
18206
|
}
|
17991
18207
|
};
|
@@ -19027,8 +19243,7 @@ function locationGetterSetter(property, preprocess) {
|
|
19027
19243
|
* - Clicks on a link.
|
19028
19244
|
* - Represents the URL object as a set of methods (protocol, host, port, path, search, hash).
|
19029
19245
|
*
|
19030
|
-
* For more information see {@link guide
|
19031
|
-
* Services: Using $location}
|
19246
|
+
* For more information see {@link guide/$location Developer Guide: Using $location}
|
19032
19247
|
*/
|
19033
19248
|
|
19034
19249
|
/**
|
@@ -19764,7 +19979,11 @@ var Parser = function (lexer, $filter, options) {
|
|
19764
19979
|
this.options = options;
|
19765
19980
|
};
|
19766
19981
|
|
19767
|
-
Parser.ZERO = function () {
|
19982
|
+
Parser.ZERO = extend(function () {
|
19983
|
+
return 0;
|
19984
|
+
}, {
|
19985
|
+
constant: true
|
19986
|
+
});
|
19768
19987
|
|
19769
19988
|
Parser.prototype = {
|
19770
19989
|
constructor: Parser,
|
@@ -21509,7 +21728,8 @@ function $RootScopeProvider(){
|
|
21509
21728
|
* - `function(newValue, oldValue, scope)`: called with current and previous values as
|
21510
21729
|
* parameters.
|
21511
21730
|
*
|
21512
|
-
* @param {boolean=} objectEquality Compare object
|
21731
|
+
* @param {boolean=} objectEquality Compare for object equality using {@link angular.equals} instead of
|
21732
|
+
* comparing for reference equality.
|
21513
21733
|
* @returns {function()} Returns a deregistration function for this listener.
|
21514
21734
|
*/
|
21515
21735
|
$watch: function(watchExp, listener, objectEquality) {
|
@@ -21930,15 +22150,32 @@ function $RootScopeProvider(){
|
|
21930
22150
|
|
21931
22151
|
forEach(this.$$listenerCount, bind(null, decrementListenerCount, this));
|
21932
22152
|
|
22153
|
+
// sever all the references to parent scopes (after this cleanup, the current scope should
|
22154
|
+
// not be retained by any of our references and should be eligible for garbage collection)
|
21933
22155
|
if (parent.$$childHead == this) parent.$$childHead = this.$$nextSibling;
|
21934
22156
|
if (parent.$$childTail == this) parent.$$childTail = this.$$prevSibling;
|
21935
22157
|
if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling;
|
21936
22158
|
if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling;
|
21937
22159
|
|
21938
|
-
|
21939
|
-
//
|
22160
|
+
|
22161
|
+
// All of the code below is bogus code that works around V8's memory leak via optimized code
|
22162
|
+
// and inline caches.
|
22163
|
+
//
|
22164
|
+
// see:
|
22165
|
+
// - https://code.google.com/p/v8/issues/detail?id=2073#c26
|
22166
|
+
// - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909
|
22167
|
+
// - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451
|
22168
|
+
|
21940
22169
|
this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead =
|
21941
|
-
this.$$childTail = null;
|
22170
|
+
this.$$childTail = this.$root = null;
|
22171
|
+
|
22172
|
+
// don't reset these to null in case some async task tries to register a listener/watch/task
|
22173
|
+
this.$$listeners = {};
|
22174
|
+
this.$$watchers = this.$$asyncQueue = this.$$postDigestQueue = [];
|
22175
|
+
|
22176
|
+
// prevent NPEs since these methods have references to properties we nulled out
|
22177
|
+
this.$destroy = this.$digest = this.$apply = noop;
|
22178
|
+
this.$on = this.$watch = function() { return noop; };
|
21942
22179
|
},
|
21943
22180
|
|
21944
22181
|
/**
|
@@ -22907,7 +23144,7 @@ function $SceDelegateProvider() {
|
|
22907
23144
|
* | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. |
|
22908
23145
|
* | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. |
|
22909
23146
|
* | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`<a href=` and `<img src=` sanitize their urls and don't constitute an SCE context. |
|
22910
|
-
* | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose
|
23147
|
+
* | `$sce.RESOURCE_URL` | For URLs that are not only safe to follow as links, but whose contents are also safe to include in your application. Examples include `ng-include`, `src` / `ngSrc` bindings for tags other than `IMG` (e.g. `IFRAME`, `OBJECT`, etc.) <br><br>Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. |
|
22911
23148
|
* | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. |
|
22912
23149
|
*
|
22913
23150
|
* ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist} <a name="resourceUrlPatternItem"></a>
|
@@ -24755,7 +24992,7 @@ function limitToFilter(){
|
|
24755
24992
|
* - `Array`: An array of function or string predicates. The first predicate in the array
|
24756
24993
|
* is used for sorting, but when two items are equivalent, the next predicate is used.
|
24757
24994
|
*
|
24758
|
-
* @param {boolean=} reverse Reverse the order the array.
|
24995
|
+
* @param {boolean=} reverse Reverse the order of the array.
|
24759
24996
|
* @returns {Array} Sorted copy of the source array.
|
24760
24997
|
*
|
24761
24998
|
* @example
|
@@ -25520,6 +25757,10 @@ function FormController(element, attrs, $scope, $animate) {
|
|
25520
25757
|
* does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a
|
25521
25758
|
* sub-group of controls needs to be determined.
|
25522
25759
|
*
|
25760
|
+
* Note: the purpose of `ngForm` is to group controls,
|
25761
|
+
* but not to be a replacement for the `<form>` tag with all of its capabilities
|
25762
|
+
* (e.g. posting to the server, ...).
|
25763
|
+
*
|
25523
25764
|
* @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into
|
25524
25765
|
* related scope, under this name.
|
25525
25766
|
*
|
@@ -26600,7 +26841,6 @@ function addNativeHtml5Validators(ctrl, validatorName, element) {
|
|
26600
26841
|
return value;
|
26601
26842
|
};
|
26602
26843
|
ctrl.$parsers.push(validator);
|
26603
|
-
ctrl.$formatters.push(validator);
|
26604
26844
|
}
|
26605
26845
|
}
|
26606
26846
|
|
@@ -28034,7 +28274,7 @@ var ngBindHtmlDirective = ['$sce', '$parse', function($sce, $parse) {
|
|
28034
28274
|
|
28035
28275
|
function classDirective(name, selector) {
|
28036
28276
|
name = 'ngClass' + name;
|
28037
|
-
return function() {
|
28277
|
+
return ['$animate', function($animate) {
|
28038
28278
|
return {
|
28039
28279
|
restrict: 'AC',
|
28040
28280
|
link: function(scope, element, attr) {
|
@@ -28052,46 +28292,100 @@ function classDirective(name, selector) {
|
|
28052
28292
|
// jshint bitwise: false
|
28053
28293
|
var mod = $index & 1;
|
28054
28294
|
if (mod !== old$index & 1) {
|
28055
|
-
var classes =
|
28295
|
+
var classes = arrayClasses(scope.$eval(attr[name]));
|
28056
28296
|
mod === selector ?
|
28057
|
-
|
28058
|
-
|
28297
|
+
addClasses(classes) :
|
28298
|
+
removeClasses(classes);
|
28299
|
+
}
|
28300
|
+
});
|
28301
|
+
}
|
28302
|
+
|
28303
|
+
function addClasses(classes) {
|
28304
|
+
var newClasses = digestClassCounts(classes, 1);
|
28305
|
+
attr.$addClass(newClasses);
|
28306
|
+
}
|
28307
|
+
|
28308
|
+
function removeClasses(classes) {
|
28309
|
+
var newClasses = digestClassCounts(classes, -1);
|
28310
|
+
attr.$removeClass(newClasses);
|
28311
|
+
}
|
28312
|
+
|
28313
|
+
function digestClassCounts (classes, count) {
|
28314
|
+
var classCounts = element.data('$classCounts') || {};
|
28315
|
+
var classesToUpdate = [];
|
28316
|
+
forEach(classes, function (className) {
|
28317
|
+
if (count > 0 || classCounts[className]) {
|
28318
|
+
classCounts[className] = (classCounts[className] || 0) + count;
|
28319
|
+
if (classCounts[className] === +(count > 0)) {
|
28320
|
+
classesToUpdate.push(className);
|
28321
|
+
}
|
28059
28322
|
}
|
28060
28323
|
});
|
28324
|
+
element.data('$classCounts', classCounts);
|
28325
|
+
return classesToUpdate.join(' ');
|
28061
28326
|
}
|
28062
28327
|
|
28328
|
+
function updateClasses (oldClasses, newClasses) {
|
28329
|
+
var toAdd = arrayDifference(newClasses, oldClasses);
|
28330
|
+
var toRemove = arrayDifference(oldClasses, newClasses);
|
28331
|
+
toRemove = digestClassCounts(toRemove, -1);
|
28332
|
+
toAdd = digestClassCounts(toAdd, 1);
|
28333
|
+
|
28334
|
+
if (toAdd.length === 0) {
|
28335
|
+
$animate.removeClass(element, toRemove);
|
28336
|
+
} else if (toRemove.length === 0) {
|
28337
|
+
$animate.addClass(element, toAdd);
|
28338
|
+
} else {
|
28339
|
+
$animate.setClass(element, toAdd, toRemove);
|
28340
|
+
}
|
28341
|
+
}
|
28063
28342
|
|
28064
28343
|
function ngClassWatchAction(newVal) {
|
28065
28344
|
if (selector === true || scope.$index % 2 === selector) {
|
28066
|
-
var newClasses =
|
28067
|
-
if(!oldVal) {
|
28068
|
-
|
28069
|
-
} else if(!equals(newVal,oldVal)) {
|
28070
|
-
|
28345
|
+
var newClasses = arrayClasses(newVal || []);
|
28346
|
+
if (!oldVal) {
|
28347
|
+
addClasses(newClasses);
|
28348
|
+
} else if (!equals(newVal,oldVal)) {
|
28349
|
+
var oldClasses = arrayClasses(oldVal);
|
28350
|
+
updateClasses(oldClasses, newClasses);
|
28071
28351
|
}
|
28072
28352
|
}
|
28073
28353
|
oldVal = copy(newVal);
|
28074
28354
|
}
|
28355
|
+
}
|
28356
|
+
};
|
28075
28357
|
|
28358
|
+
function arrayDifference(tokens1, tokens2) {
|
28359
|
+
var values = [];
|
28076
28360
|
|
28077
|
-
|
28078
|
-
|
28079
|
-
|
28080
|
-
|
28081
|
-
|
28082
|
-
forEach(classVal, function(v, k) {
|
28083
|
-
if (v) {
|
28084
|
-
classes.push(k);
|
28085
|
-
}
|
28086
|
-
});
|
28087
|
-
return classes.join(' ');
|
28088
|
-
}
|
28089
|
-
|
28090
|
-
return classVal;
|
28361
|
+
outer:
|
28362
|
+
for(var i = 0; i < tokens1.length; i++) {
|
28363
|
+
var token = tokens1[i];
|
28364
|
+
for(var j = 0; j < tokens2.length; j++) {
|
28365
|
+
if(token == tokens2[j]) continue outer;
|
28091
28366
|
}
|
28367
|
+
values.push(token);
|
28092
28368
|
}
|
28093
|
-
|
28094
|
-
|
28369
|
+
return values;
|
28370
|
+
}
|
28371
|
+
|
28372
|
+
function arrayClasses (classVal) {
|
28373
|
+
if (isArray(classVal)) {
|
28374
|
+
return classVal;
|
28375
|
+
} else if (isString(classVal)) {
|
28376
|
+
return classVal.split(' ');
|
28377
|
+
} else if (isObject(classVal)) {
|
28378
|
+
var classes = [], i = 0;
|
28379
|
+
forEach(classVal, function(v, k) {
|
28380
|
+
if (v) {
|
28381
|
+
classes.push(k);
|
28382
|
+
}
|
28383
|
+
});
|
28384
|
+
return classes;
|
28385
|
+
}
|
28386
|
+
return classVal;
|
28387
|
+
}
|
28388
|
+
}];
|
28095
28389
|
}
|
28096
28390
|
|
28097
28391
|
/**
|
@@ -28652,7 +28946,7 @@ var ngControllerDirective = [function() {
|
|
28652
28946
|
* @element ANY
|
28653
28947
|
* @priority 0
|
28654
28948
|
* @param {expression} ngClick {@link guide/expression Expression} to evaluate upon
|
28655
|
-
* click. (Event object is available as `$event`)
|
28949
|
+
* click. ({@link guide/expression#-event- Event object is available as `$event`})
|
28656
28950
|
*
|
28657
28951
|
* @example
|
28658
28952
|
<example>
|
@@ -28733,7 +29027,7 @@ forEach(
|
|
28733
29027
|
* @element ANY
|
28734
29028
|
* @priority 0
|
28735
29029
|
* @param {expression} ngMousedown {@link guide/expression Expression} to evaluate upon
|
28736
|
-
* mousedown. (Event object is available as `$event`)
|
29030
|
+
* mousedown. ({@link guide/expression#-event- Event object is available as `$event`})
|
28737
29031
|
*
|
28738
29032
|
* @example
|
28739
29033
|
<example>
|
@@ -28757,7 +29051,7 @@ forEach(
|
|
28757
29051
|
* @element ANY
|
28758
29052
|
* @priority 0
|
28759
29053
|
* @param {expression} ngMouseup {@link guide/expression Expression} to evaluate upon
|
28760
|
-
* mouseup. (Event object is available as `$event`)
|
29054
|
+
* mouseup. ({@link guide/expression#-event- Event object is available as `$event`})
|
28761
29055
|
*
|
28762
29056
|
* @example
|
28763
29057
|
<example>
|
@@ -28780,7 +29074,7 @@ forEach(
|
|
28780
29074
|
* @element ANY
|
28781
29075
|
* @priority 0
|
28782
29076
|
* @param {expression} ngMouseover {@link guide/expression Expression} to evaluate upon
|
28783
|
-
* mouseover. (Event object is available as `$event`)
|
29077
|
+
* mouseover. ({@link guide/expression#-event- Event object is available as `$event`})
|
28784
29078
|
*
|
28785
29079
|
* @example
|
28786
29080
|
<example>
|
@@ -28804,7 +29098,7 @@ forEach(
|
|
28804
29098
|
* @element ANY
|
28805
29099
|
* @priority 0
|
28806
29100
|
* @param {expression} ngMouseenter {@link guide/expression Expression} to evaluate upon
|
28807
|
-
* mouseenter. (Event object is available as `$event`)
|
29101
|
+
* mouseenter. ({@link guide/expression#-event- Event object is available as `$event`})
|
28808
29102
|
*
|
28809
29103
|
* @example
|
28810
29104
|
<example>
|
@@ -28828,7 +29122,7 @@ forEach(
|
|
28828
29122
|
* @element ANY
|
28829
29123
|
* @priority 0
|
28830
29124
|
* @param {expression} ngMouseleave {@link guide/expression Expression} to evaluate upon
|
28831
|
-
* mouseleave. (Event object is available as `$event`)
|
29125
|
+
* mouseleave. ({@link guide/expression#-event- Event object is available as `$event`})
|
28832
29126
|
*
|
28833
29127
|
* @example
|
28834
29128
|
<example>
|
@@ -28852,7 +29146,7 @@ forEach(
|
|
28852
29146
|
* @element ANY
|
28853
29147
|
* @priority 0
|
28854
29148
|
* @param {expression} ngMousemove {@link guide/expression Expression} to evaluate upon
|
28855
|
-
* mousemove. (Event object is available as `$event`)
|
29149
|
+
* mousemove. ({@link guide/expression#-event- Event object is available as `$event`})
|
28856
29150
|
*
|
28857
29151
|
* @example
|
28858
29152
|
<example>
|
@@ -28919,7 +29213,8 @@ forEach(
|
|
28919
29213
|
*
|
28920
29214
|
* @element ANY
|
28921
29215
|
* @param {expression} ngKeypress {@link guide/expression Expression} to evaluate upon
|
28922
|
-
* keypress. (Event object is available as `$event`
|
29216
|
+
* keypress. ({@link guide/expression#-event- Event object is available as `$event`}
|
29217
|
+
* and can be interrogated for keyCode, altKey, etc.)
|
28923
29218
|
*
|
28924
29219
|
* @example
|
28925
29220
|
<example>
|
@@ -28944,7 +29239,8 @@ forEach(
|
|
28944
29239
|
*
|
28945
29240
|
* @element form
|
28946
29241
|
* @priority 0
|
28947
|
-
* @param {expression} ngSubmit {@link guide/expression Expression} to eval.
|
29242
|
+
* @param {expression} ngSubmit {@link guide/expression Expression} to eval.
|
29243
|
+
* ({@link guide/expression#-event- Event object is available as `$event`})
|
28948
29244
|
*
|
28949
29245
|
* @example
|
28950
29246
|
<example>
|
@@ -28995,7 +29291,7 @@ forEach(
|
|
28995
29291
|
* @element window, input, select, textarea, a
|
28996
29292
|
* @priority 0
|
28997
29293
|
* @param {expression} ngFocus {@link guide/expression Expression} to evaluate upon
|
28998
|
-
* focus. (Event object is available as `$event`)
|
29294
|
+
* focus. ({@link guide/expression#-event- Event object is available as `$event`})
|
28999
29295
|
*
|
29000
29296
|
* @example
|
29001
29297
|
* See {@link ng.directive:ngClick ngClick}
|
@@ -29011,7 +29307,7 @@ forEach(
|
|
29011
29307
|
* @element window, input, select, textarea, a
|
29012
29308
|
* @priority 0
|
29013
29309
|
* @param {expression} ngBlur {@link guide/expression Expression} to evaluate upon
|
29014
|
-
* blur. (Event object is available as `$event`)
|
29310
|
+
* blur. ({@link guide/expression#-event- Event object is available as `$event`})
|
29015
29311
|
*
|
29016
29312
|
* @example
|
29017
29313
|
* See {@link ng.directive:ngClick ngClick}
|
@@ -29027,7 +29323,7 @@ forEach(
|
|
29027
29323
|
* @element window, input, select, textarea, a
|
29028
29324
|
* @priority 0
|
29029
29325
|
* @param {expression} ngCopy {@link guide/expression Expression} to evaluate upon
|
29030
|
-
* copy. (Event object is available as `$event`)
|
29326
|
+
* copy. ({@link guide/expression#-event- Event object is available as `$event`})
|
29031
29327
|
*
|
29032
29328
|
* @example
|
29033
29329
|
<example>
|
@@ -29048,7 +29344,7 @@ forEach(
|
|
29048
29344
|
* @element window, input, select, textarea, a
|
29049
29345
|
* @priority 0
|
29050
29346
|
* @param {expression} ngCut {@link guide/expression Expression} to evaluate upon
|
29051
|
-
* cut. (Event object is available as `$event`)
|
29347
|
+
* cut. ({@link guide/expression#-event- Event object is available as `$event`})
|
29052
29348
|
*
|
29053
29349
|
* @example
|
29054
29350
|
<example>
|
@@ -29069,7 +29365,7 @@ forEach(
|
|
29069
29365
|
* @element window, input, select, textarea, a
|
29070
29366
|
* @priority 0
|
29071
29367
|
* @param {expression} ngPaste {@link guide/expression Expression} to evaluate upon
|
29072
|
-
* paste. (Event object is available as `$event`)
|
29368
|
+
* paste. ({@link guide/expression#-event- Event object is available as `$event`})
|
29073
29369
|
*
|
29074
29370
|
* @example
|
29075
29371
|
<example>
|
@@ -30211,10 +30507,10 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
30211
30507
|
* restating the styles for the .ng-hide class in CSS:
|
30212
30508
|
* ```css
|
30213
30509
|
* .ng-hide {
|
30214
|
-
*
|
30510
|
+
* /* Not to worry, this will override the AngularJS default...
|
30215
30511
|
* display:block!important;
|
30216
30512
|
*
|
30217
|
-
*
|
30513
|
+
* /* this is just another form of hiding an element */
|
30218
30514
|
* position:absolute;
|
30219
30515
|
* top:-9999px;
|
30220
30516
|
* left:-9999px;
|
@@ -30240,10 +30536,20 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
30240
30536
|
* //a working example can be found at the bottom of this page
|
30241
30537
|
* //
|
30242
30538
|
* .my-element.ng-hide-add, .my-element.ng-hide-remove {
|
30243
|
-
*
|
30539
|
+
* /* this is required as of 1.3x to properly
|
30540
|
+
* apply all styling in a show/hide animation */
|
30541
|
+
* transition:0s linear all;
|
30542
|
+
*
|
30543
|
+
* /* this must be set as block so the animation is visible */
|
30244
30544
|
* display:block!important;
|
30245
30545
|
* }
|
30246
30546
|
*
|
30547
|
+
* .my-element.ng-hide-add-active,
|
30548
|
+
* .my-element.ng-hide-remove-active {
|
30549
|
+
* /* the transition is defined in the active class */
|
30550
|
+
* transition:1s linear all;
|
30551
|
+
* }
|
30552
|
+
*
|
30247
30553
|
* .my-element.ng-hide-add { ... }
|
30248
30554
|
* .my-element.ng-hide-add.ng-hide-add-active { ... }
|
30249
30555
|
* .my-element.ng-hide-remove { ... }
|
@@ -30280,8 +30586,6 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
30280
30586
|
</file>
|
30281
30587
|
<file name="animations.css">
|
30282
30588
|
.animate-show {
|
30283
|
-
-webkit-transition:all linear 0.5s;
|
30284
|
-
transition:all linear 0.5s;
|
30285
30589
|
line-height:20px;
|
30286
30590
|
opacity:1;
|
30287
30591
|
padding:10px;
|
@@ -30294,6 +30598,12 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
|
|
30294
30598
|
display:block!important;
|
30295
30599
|
}
|
30296
30600
|
|
30601
|
+
.animate-show.ng-hide-add.ng-hide-add-active,
|
30602
|
+
.animate-show.ng-hide-remove.ng-hide-remove-active {
|
30603
|
+
-webkit-transition:all linear 0.5s;
|
30604
|
+
transition:all linear 0.5s;
|
30605
|
+
}
|
30606
|
+
|
30297
30607
|
.animate-show.ng-hide {
|
30298
30608
|
line-height:0;
|
30299
30609
|
opacity:0;
|
@@ -30342,7 +30652,7 @@ var ngShowDirective = ['$animate', function($animate) {
|
|
30342
30652
|
* in AngularJS and sets the display style to none (using an !important flag).
|
30343
30653
|
* For CSP mode please add `angular-csp.css` to your html file (see {@link ng.directive:ngCsp ngCsp}).
|
30344
30654
|
*
|
30345
|
-
* ```
|
30655
|
+
* ```html
|
30346
30656
|
* <!-- when $scope.myValue is truthy (element is hidden) -->
|
30347
30657
|
* <div ng-hide="myValue"></div>
|
30348
30658
|
*
|
@@ -33731,5 +34041,5 @@ if (config.autotest) {
|
|
33731
34041
|
})(window, document);
|
33732
34042
|
|
33733
34043
|
|
33734
|
-
!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
|
34044
|
+
!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</style>');
|
33735
34045
|
!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>');
|