angularjs-rails 1.6.8 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/lib/angularjs-rails/version.rb +1 -1
- data/vendor/assets/javascripts/angular-animate.js +242 -128
- data/vendor/assets/javascripts/angular-aria.js +35 -10
- data/vendor/assets/javascripts/angular-cookies.js +9 -82
- data/vendor/assets/javascripts/angular-loader.js +46 -17
- data/vendor/assets/javascripts/angular-message-format.js +10 -10
- data/vendor/assets/javascripts/angular-messages.js +146 -58
- data/vendor/assets/javascripts/angular-mocks.js +613 -335
- data/vendor/assets/javascripts/angular-parse-ext.js +11 -5
- data/vendor/assets/javascripts/angular-resource.js +234 -180
- data/vendor/assets/javascripts/angular-route.js +99 -57
- data/vendor/assets/javascripts/angular-sanitize.js +132 -20
- data/vendor/assets/javascripts/angular-touch.js +27 -403
- data/vendor/assets/javascripts/angular.js +3796 -1555
- metadata +2 -3
- data/vendor/assets/javascripts/angular-scenario.js +0 -46603
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
3
|
-
* (c) 2010-
|
2
|
+
* @license AngularJS v1.8.0
|
3
|
+
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
6
6
|
(function(window, angular) {'use strict';
|
@@ -19,8 +19,8 @@
|
|
19
19
|
*
|
20
20
|
* For ngAria to do its magic, simply include the module `ngAria` as a dependency. The following
|
21
21
|
* directives are supported:
|
22
|
-
* `ngModel`, `ngChecked`, `ngReadonly`, `ngRequired`, `ngValue`, `ngDisabled`, `ngShow`, `ngHide`,
|
23
|
-
* `ngDblClick`, and `ngMessages`.
|
22
|
+
* `ngModel`, `ngChecked`, `ngReadonly`, `ngRequired`, `ngValue`, `ngDisabled`, `ngShow`, `ngHide`,
|
23
|
+
* `ngClick`, `ngDblClick`, and `ngMessages`.
|
24
24
|
*
|
25
25
|
* Below is a more detailed breakdown of the attributes handled by ngAria:
|
26
26
|
*
|
@@ -51,13 +51,19 @@
|
|
51
51
|
* <md-checkbox ng-disabled="disabled" aria-disabled="true">
|
52
52
|
* ```
|
53
53
|
*
|
54
|
-
* ## Disabling Attributes
|
55
|
-
* It
|
54
|
+
* ## Disabling Specific Attributes
|
55
|
+
* It is possible to disable individual attributes added by ngAria with the
|
56
56
|
* {@link ngAria.$ariaProvider#config config} method. For more details, see the
|
57
57
|
* {@link guide/accessibility Developer Guide}.
|
58
|
+
*
|
59
|
+
* ## Disabling `ngAria` on Specific Elements
|
60
|
+
* It is possible to make `ngAria` ignore a specific element, by adding the `ng-aria-disable`
|
61
|
+
* attribute on it. Note that only the element itself (and not its child elements) will be ignored.
|
58
62
|
*/
|
63
|
+
var ARIA_DISABLE_ATTR = 'ngAriaDisable';
|
64
|
+
|
59
65
|
var ngAriaModule = angular.module('ngAria', ['ng']).
|
60
|
-
info({ angularVersion: '1.
|
66
|
+
info({ angularVersion: '1.8.0' }).
|
61
67
|
provider('$aria', $AriaProvider);
|
62
68
|
|
63
69
|
/**
|
@@ -137,6 +143,8 @@ function $AriaProvider() {
|
|
137
143
|
|
138
144
|
function watchExpr(attrName, ariaAttr, nodeBlackList, negate) {
|
139
145
|
return function(scope, elem, attr) {
|
146
|
+
if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
|
147
|
+
|
140
148
|
var ariaCamelName = attr.$normalize(ariaAttr);
|
141
149
|
if (config[ariaCamelName] && !isNodeOneOf(elem, nodeBlackList) && !attr[ariaCamelName]) {
|
142
150
|
scope.$watch(attr[attrName], function(boolVal) {
|
@@ -152,7 +160,6 @@ function $AriaProvider() {
|
|
152
160
|
* @name $aria
|
153
161
|
*
|
154
162
|
* @description
|
155
|
-
* @priority 200
|
156
163
|
*
|
157
164
|
* The $aria service contains helper methods for applying common
|
158
165
|
* [ARIA](http://www.w3.org/TR/wai-aria/) attributes to HTML directives.
|
@@ -229,7 +236,10 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
229
236
|
.directive('ngModel', ['$aria', function($aria) {
|
230
237
|
|
231
238
|
function shouldAttachAttr(attr, normalizedAttr, elem, allowBlacklistEls) {
|
232
|
-
return $aria.config(normalizedAttr) &&
|
239
|
+
return $aria.config(normalizedAttr) &&
|
240
|
+
!elem.attr(attr) &&
|
241
|
+
(allowBlacklistEls || !isNodeOneOf(elem, nodeBlackList)) &&
|
242
|
+
(elem.attr('type') !== 'hidden' || elem[0].nodeName !== 'INPUT');
|
233
243
|
}
|
234
244
|
|
235
245
|
function shouldAttachRole(role, elem) {
|
@@ -253,6 +263,8 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
253
263
|
require: 'ngModel',
|
254
264
|
priority: 200, //Make sure watches are fired after any other directives that affect the ngModel value
|
255
265
|
compile: function(elem, attr) {
|
266
|
+
if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
|
267
|
+
|
256
268
|
var shape = getShape(attr, elem);
|
257
269
|
|
258
270
|
return {
|
@@ -349,6 +361,8 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
349
361
|
restrict: 'A',
|
350
362
|
require: '?ngMessages',
|
351
363
|
link: function(scope, elem, attr, ngMessages) {
|
364
|
+
if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
|
365
|
+
|
352
366
|
if (!elem.attr('aria-live')) {
|
353
367
|
elem.attr('aria-live', 'assertive');
|
354
368
|
}
|
@@ -359,6 +373,8 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
359
373
|
return {
|
360
374
|
restrict: 'A',
|
361
375
|
compile: function(elem, attr) {
|
376
|
+
if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
|
377
|
+
|
362
378
|
var fn = $parse(attr.ngClick);
|
363
379
|
return function(scope, elem, attr) {
|
364
380
|
|
@@ -375,7 +391,14 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
375
391
|
if ($aria.config('bindKeydown') && !attr.ngKeydown && !attr.ngKeypress && !attr.ngKeyup) {
|
376
392
|
elem.on('keydown', function(event) {
|
377
393
|
var keyCode = event.which || event.keyCode;
|
378
|
-
|
394
|
+
|
395
|
+
if (keyCode === 13 || keyCode === 32) {
|
396
|
+
// If the event is triggered on a non-interactive element ...
|
397
|
+
if (nodeBlackList.indexOf(event.target.nodeName) === -1 && !event.target.isContentEditable) {
|
398
|
+
// ... prevent the default browser behavior (e.g. scrolling when pressing spacebar)
|
399
|
+
// See https://github.com/angular/angular.js/issues/16664
|
400
|
+
event.preventDefault();
|
401
|
+
}
|
379
402
|
scope.$apply(callback);
|
380
403
|
}
|
381
404
|
|
@@ -391,6 +414,8 @@ ngAriaModule.directive('ngShow', ['$aria', function($aria) {
|
|
391
414
|
}])
|
392
415
|
.directive('ngDblclick', ['$aria', function($aria) {
|
393
416
|
return function(scope, elem, attr) {
|
417
|
+
if (attr.hasOwnProperty(ARIA_DISABLE_ATTR)) return;
|
418
|
+
|
394
419
|
if ($aria.config('tabindex') && !elem.attr('tabindex') && !isNodeOneOf(elem, nodeBlackList)) {
|
395
420
|
elem.attr('tabindex', 0);
|
396
421
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
3
|
-
* (c) 2010-
|
2
|
+
* @license AngularJS v1.8.0
|
3
|
+
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
6
6
|
(function(window, angular) {'use strict';
|
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
|
19
19
|
angular.module('ngCookies', ['ng']).
|
20
|
-
info({ angularVersion: '1.
|
20
|
+
info({ angularVersion: '1.8.0' }).
|
21
21
|
/**
|
22
22
|
* @ngdoc provider
|
23
23
|
* @name $cookiesProvider
|
@@ -43,6 +43,10 @@ angular.module('ngCookies', ['ng']).
|
|
43
43
|
* or a Date object indicating the exact date/time this cookie will expire.
|
44
44
|
* - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a
|
45
45
|
* secured connection.
|
46
|
+
* - **samesite** - `{string}` - prevents the browser from sending the cookie along with cross-site requests.
|
47
|
+
* Accepts the values `lax` and `strict`. See the [OWASP Wiki](https://www.owasp.org/index.php/SameSite)
|
48
|
+
* for more info. Note that as of May 2018, not all browsers support `SameSite`,
|
49
|
+
* so it cannot be used as a single measure against Cross-Site-Request-Forgery (CSRF) attacks.
|
46
50
|
*
|
47
51
|
* Note: By default, the address that appears in your `<base>` tag will be used as the path.
|
48
52
|
* This is important so that cookies will be visible for all routes when html5mode is enabled.
|
@@ -72,7 +76,7 @@ angular.module('ngCookies', ['ng']).
|
|
72
76
|
* Provides read/write access to browser's cookies.
|
73
77
|
*
|
74
78
|
* <div class="alert alert-info">
|
75
|
-
* Up until
|
79
|
+
* Up until AngularJS 1.3, `$cookies` exposed properties that represented the
|
76
80
|
* current browser cookie values. In version 1.4, this behavior has changed, and
|
77
81
|
* `$cookies` now provides a standard api of getters, setters etc.
|
78
82
|
* </div>
|
@@ -185,84 +189,6 @@ angular.module('ngCookies', ['ng']).
|
|
185
189
|
}];
|
186
190
|
}]);
|
187
191
|
|
188
|
-
angular.module('ngCookies').
|
189
|
-
/**
|
190
|
-
* @ngdoc service
|
191
|
-
* @name $cookieStore
|
192
|
-
* @deprecated
|
193
|
-
* sinceVersion="v1.4.0"
|
194
|
-
* Please use the {@link ngCookies.$cookies `$cookies`} service instead.
|
195
|
-
*
|
196
|
-
* @requires $cookies
|
197
|
-
*
|
198
|
-
* @description
|
199
|
-
* Provides a key-value (string-object) storage, that is backed by session cookies.
|
200
|
-
* Objects put or retrieved from this storage are automatically serialized or
|
201
|
-
* deserialized by angular's toJson/fromJson.
|
202
|
-
*
|
203
|
-
* Requires the {@link ngCookies `ngCookies`} module to be installed.
|
204
|
-
*
|
205
|
-
* @example
|
206
|
-
*
|
207
|
-
* ```js
|
208
|
-
* angular.module('cookieStoreExample', ['ngCookies'])
|
209
|
-
* .controller('ExampleController', ['$cookieStore', function($cookieStore) {
|
210
|
-
* // Put cookie
|
211
|
-
* $cookieStore.put('myFavorite','oatmeal');
|
212
|
-
* // Get cookie
|
213
|
-
* var favoriteCookie = $cookieStore.get('myFavorite');
|
214
|
-
* // Removing a cookie
|
215
|
-
* $cookieStore.remove('myFavorite');
|
216
|
-
* }]);
|
217
|
-
* ```
|
218
|
-
*/
|
219
|
-
factory('$cookieStore', ['$cookies', function($cookies) {
|
220
|
-
|
221
|
-
return {
|
222
|
-
/**
|
223
|
-
* @ngdoc method
|
224
|
-
* @name $cookieStore#get
|
225
|
-
*
|
226
|
-
* @description
|
227
|
-
* Returns the value of given cookie key
|
228
|
-
*
|
229
|
-
* @param {string} key Id to use for lookup.
|
230
|
-
* @returns {Object} Deserialized cookie value, undefined if the cookie does not exist.
|
231
|
-
*/
|
232
|
-
get: function(key) {
|
233
|
-
return $cookies.getObject(key);
|
234
|
-
},
|
235
|
-
|
236
|
-
/**
|
237
|
-
* @ngdoc method
|
238
|
-
* @name $cookieStore#put
|
239
|
-
*
|
240
|
-
* @description
|
241
|
-
* Sets a value for given cookie key
|
242
|
-
*
|
243
|
-
* @param {string} key Id for the `value`.
|
244
|
-
* @param {Object} value Value to be stored.
|
245
|
-
*/
|
246
|
-
put: function(key, value) {
|
247
|
-
$cookies.putObject(key, value);
|
248
|
-
},
|
249
|
-
|
250
|
-
/**
|
251
|
-
* @ngdoc method
|
252
|
-
* @name $cookieStore#remove
|
253
|
-
*
|
254
|
-
* @description
|
255
|
-
* Remove given cookie
|
256
|
-
*
|
257
|
-
* @param {string} key Id of the key-value pair to delete.
|
258
|
-
*/
|
259
|
-
remove: function(key) {
|
260
|
-
$cookies.remove(key);
|
261
|
-
}
|
262
|
-
};
|
263
|
-
|
264
|
-
}]);
|
265
|
-
|
266
192
|
/**
|
267
193
|
* @name $$cookieWriter
|
268
194
|
* @requires $document
|
@@ -296,6 +222,7 @@ function $$CookieWriter($document, $log, $browser) {
|
|
296
222
|
str += options.domain ? ';domain=' + options.domain : '';
|
297
223
|
str += expires ? ';expires=' + expires.toUTCString() : '';
|
298
224
|
str += options.secure ? ';secure' : '';
|
225
|
+
str += options.samesite ? ';samesite=' + options.samesite : '';
|
299
226
|
|
300
227
|
// per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:
|
301
228
|
// - 300 cookies
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
3
|
-
* (c) 2010-
|
2
|
+
* @license AngularJS v1.8.0
|
3
|
+
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
6
6
|
|
@@ -76,7 +76,8 @@ function toDebugString(obj, maxDepth) {
|
|
76
76
|
*/
|
77
77
|
|
78
78
|
var minErrConfig = {
|
79
|
-
objectMaxDepth: 5
|
79
|
+
objectMaxDepth: 5,
|
80
|
+
urlErrorParamsEnabled: true
|
80
81
|
};
|
81
82
|
|
82
83
|
/**
|
@@ -99,12 +100,21 @@ var minErrConfig = {
|
|
99
100
|
* * `objectMaxDepth` **{Number}** - The max depth for stringifying objects. Setting to a
|
100
101
|
* non-positive or non-numeric value, removes the max depth limit.
|
101
102
|
* Default: 5
|
103
|
+
*
|
104
|
+
* * `urlErrorParamsEnabled` **{Boolean}** - Specifies whether the generated error url will
|
105
|
+
* contain the parameters of the thrown error. Disabling the parameters can be useful if the
|
106
|
+
* generated error url is very long.
|
107
|
+
*
|
108
|
+
* Default: true. When used without argument, it returns the current value.
|
102
109
|
*/
|
103
110
|
function errorHandlingConfig(config) {
|
104
111
|
if (isObject(config)) {
|
105
112
|
if (isDefined(config.objectMaxDepth)) {
|
106
113
|
minErrConfig.objectMaxDepth = isValidObjectMaxDepth(config.objectMaxDepth) ? config.objectMaxDepth : NaN;
|
107
114
|
}
|
115
|
+
if (isDefined(config.urlErrorParamsEnabled) && isBoolean(config.urlErrorParamsEnabled)) {
|
116
|
+
minErrConfig.urlErrorParamsEnabled = config.urlErrorParamsEnabled;
|
117
|
+
}
|
108
118
|
} else {
|
109
119
|
return minErrConfig;
|
110
120
|
}
|
@@ -119,11 +129,12 @@ function isValidObjectMaxDepth(maxDepth) {
|
|
119
129
|
return isNumber(maxDepth) && maxDepth > 0;
|
120
130
|
}
|
121
131
|
|
132
|
+
|
122
133
|
/**
|
123
134
|
* @description
|
124
135
|
*
|
125
136
|
* This object provides a utility for producing rich Error messages within
|
126
|
-
*
|
137
|
+
* AngularJS. It can be called as follows:
|
127
138
|
*
|
128
139
|
* var exampleMinErr = minErr('example');
|
129
140
|
* throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
|
@@ -140,7 +151,7 @@ function isValidObjectMaxDepth(maxDepth) {
|
|
140
151
|
* Since data will be parsed statically during a build step, some restrictions
|
141
152
|
* are applied with respect to how minErr instances are created and called.
|
142
153
|
* Instances should have names of the form namespaceMinErr for a minErr created
|
143
|
-
* using minErr('namespace')
|
154
|
+
* using minErr('namespace'). Error codes, namespaces and template strings
|
144
155
|
* should all be static strings, not variables or general expressions.
|
145
156
|
*
|
146
157
|
* @param {string} module The namespace to use for the new minErr instance.
|
@@ -151,6 +162,11 @@ function isValidObjectMaxDepth(maxDepth) {
|
|
151
162
|
|
152
163
|
function minErr(module, ErrorConstructor) {
|
153
164
|
ErrorConstructor = ErrorConstructor || Error;
|
165
|
+
|
166
|
+
var url = 'https://errors.angularjs.org/1.8.0/';
|
167
|
+
var regex = url.replace('.', '\\.') + '[\\s\\S]*';
|
168
|
+
var errRegExp = new RegExp(regex, 'g');
|
169
|
+
|
154
170
|
return function() {
|
155
171
|
var code = arguments[0],
|
156
172
|
template = arguments[1],
|
@@ -160,21 +176,27 @@ function minErr(module, ErrorConstructor) {
|
|
160
176
|
}),
|
161
177
|
paramPrefix, i;
|
162
178
|
|
179
|
+
// A minErr message has two parts: the message itself and the url that contains the
|
180
|
+
// encoded message.
|
181
|
+
// The message's parameters can contain other error messages which also include error urls.
|
182
|
+
// To prevent the messages from getting too long, we strip the error urls from the parameters.
|
183
|
+
|
163
184
|
message += template.replace(/\{\d+\}/g, function(match) {
|
164
185
|
var index = +match.slice(1, -1);
|
165
186
|
|
166
187
|
if (index < templateArgs.length) {
|
167
|
-
return templateArgs[index];
|
188
|
+
return templateArgs[index].replace(errRegExp, '');
|
168
189
|
}
|
169
190
|
|
170
191
|
return match;
|
171
192
|
});
|
172
193
|
|
173
|
-
message += '\
|
174
|
-
(module ? module + '/' : '') + code;
|
194
|
+
message += '\n' + url + (module ? module + '/' : '') + code;
|
175
195
|
|
176
|
-
|
177
|
-
|
196
|
+
if (minErrConfig.urlErrorParamsEnabled) {
|
197
|
+
for (i = 0, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
|
198
|
+
message += paramPrefix + 'p' + i + '=' + encodeURIComponent(templateArgs[i]);
|
199
|
+
}
|
178
200
|
}
|
179
201
|
|
180
202
|
return new ErrorConstructor(message);
|
@@ -187,7 +209,7 @@ function minErr(module, ErrorConstructor) {
|
|
187
209
|
* @module ng
|
188
210
|
* @description
|
189
211
|
*
|
190
|
-
* Interface for configuring
|
212
|
+
* Interface for configuring AngularJS {@link angular.module modules}.
|
191
213
|
*/
|
192
214
|
|
193
215
|
function setupModuleLoader(window) {
|
@@ -214,9 +236,9 @@ function setupModuleLoader(window) {
|
|
214
236
|
* @module ng
|
215
237
|
* @description
|
216
238
|
*
|
217
|
-
* The `angular.module` is a global place for creating, registering and retrieving
|
239
|
+
* The `angular.module` is a global place for creating, registering and retrieving AngularJS
|
218
240
|
* modules.
|
219
|
-
* All modules (
|
241
|
+
* All modules (AngularJS core or 3rd party) that should be available to an application must be
|
220
242
|
* registered using this mechanism.
|
221
243
|
*
|
222
244
|
* Passing one argument retrieves an existing {@link angular.Module},
|
@@ -466,13 +488,13 @@ function setupModuleLoader(window) {
|
|
466
488
|
* @ngdoc method
|
467
489
|
* @name angular.Module#filter
|
468
490
|
* @module ng
|
469
|
-
* @param {string} name Filter name - this must be a valid
|
491
|
+
* @param {string} name Filter name - this must be a valid AngularJS expression identifier
|
470
492
|
* @param {Function} filterFactory Factory function for creating new instance of filter.
|
471
493
|
* @description
|
472
494
|
* See {@link ng.$filterProvider#register $filterProvider.register()}.
|
473
495
|
*
|
474
496
|
* <div class="alert alert-warning">
|
475
|
-
* **Note:** Filter names must be valid
|
497
|
+
* **Note:** Filter names must be valid AngularJS {@link expression} identifiers, such as `uppercase` or `orderBy`.
|
476
498
|
* Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
|
477
499
|
* your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
|
478
500
|
* (`myapp_subsection_filterx`).
|
@@ -509,7 +531,8 @@ function setupModuleLoader(window) {
|
|
509
531
|
* @ngdoc method
|
510
532
|
* @name angular.Module#component
|
511
533
|
* @module ng
|
512
|
-
* @param {string} name Name of the component in
|
534
|
+
* @param {string|Object} name Name of the component in camelCase (i.e. `myComp` which will match `<my-comp>`),
|
535
|
+
* or an object map of components where the keys are the names and the values are the component definition objects.
|
513
536
|
* @param {Object} options Component definition object (a simplified
|
514
537
|
* {@link ng.$compile#directive-definition-object directive definition object})
|
515
538
|
*
|
@@ -525,7 +548,13 @@ function setupModuleLoader(window) {
|
|
525
548
|
* @param {Function} configFn Execute this function on module load. Useful for service
|
526
549
|
* configuration.
|
527
550
|
* @description
|
528
|
-
* Use this method to
|
551
|
+
* Use this method to configure services by injecting their
|
552
|
+
* {@link angular.Module#provider `providers`}, e.g. for adding routes to the
|
553
|
+
* {@link ngRoute.$routeProvider $routeProvider}.
|
554
|
+
*
|
555
|
+
* Note that you can only inject {@link angular.Module#provider `providers`} and
|
556
|
+
* {@link angular.Module#constant `constants`} into this function.
|
557
|
+
*
|
529
558
|
* For more about how to configure services, see
|
530
559
|
* {@link providers#provider-recipe Provider Recipe}.
|
531
560
|
*/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/**
|
2
|
-
* @license AngularJS v1.
|
3
|
-
* (c) 2010-
|
2
|
+
* @license AngularJS v1.8.0
|
3
|
+
* (c) 2010-2020 Google, Inc. http://angularjs.org
|
4
4
|
* License: MIT
|
5
5
|
*/
|
6
6
|
(function(window, angular) {'use strict';
|
@@ -725,7 +725,7 @@ MessageFormatParser.prototype.ruleEndMustache = function ruleEndMustache() {
|
|
725
725
|
// day), then the result *has* to be a string and those rules would have already set
|
726
726
|
// this.parsedFn. If there was no MessageFormat extension, then there is no requirement to
|
727
727
|
// stringify the result and parsedFn isn't set. We set it here. While we could have set it
|
728
|
-
// unconditionally when exiting the
|
728
|
+
// unconditionally when exiting the AngularJS expression, I intend for us to not just replace
|
729
729
|
// $interpolate, but also to replace $parse in a future version (so ng-bind can work), and in
|
730
730
|
// such a case we do not want to unnecessarily stringify something if it's not going to be used
|
731
731
|
// in a string context.
|
@@ -769,7 +769,7 @@ MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularEx
|
|
769
769
|
var position;
|
770
770
|
if (match == null) {
|
771
771
|
if (this.angularOperatorStack.length === 0) {
|
772
|
-
// This is the end of the
|
772
|
+
// This is the end of the AngularJS expression so this is actually a
|
773
773
|
// success. Note that when inside an interpolation, this means we even
|
774
774
|
// consumed the closing interpolation symbols if they were curlies. This
|
775
775
|
// is NOT an error at this point but will become an error further up the
|
@@ -785,7 +785,7 @@ MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularEx
|
|
785
785
|
}
|
786
786
|
var innermostOperator = this.angularOperatorStack[0];
|
787
787
|
throw $interpolateMinErr('badexpr',
|
788
|
-
'Unexpected end of
|
788
|
+
'Unexpected end of AngularJS expression. Expecting operator “{0}” at the end of the text “{1}”',
|
789
789
|
this.getEndOperator(innermostOperator), this.text);
|
790
790
|
}
|
791
791
|
var operator = match[0];
|
@@ -860,7 +860,7 @@ MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularEx
|
|
860
860
|
*
|
861
861
|
* ## What is ngMessageFormat?
|
862
862
|
*
|
863
|
-
* The ngMessageFormat module extends the
|
863
|
+
* The ngMessageFormat module extends the AngularJS {@link ng.$interpolate `$interpolate`} service
|
864
864
|
* with a syntax for handling pluralization and gender specific messages, which is based on the
|
865
865
|
* [ICU MessageFormat syntax][ICU].
|
866
866
|
*
|
@@ -1055,10 +1055,10 @@ var noop;
|
|
1055
1055
|
var toJson;
|
1056
1056
|
var $$stringify;
|
1057
1057
|
|
1058
|
-
var
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1058
|
+
var ngModule = window['angular']['module']('ngMessageFormat', ['ng']);
|
1059
|
+
ngModule['info']({ 'angularVersion': '1.8.0' });
|
1060
|
+
ngModule['factory']('$$messageFormat', $$MessageFormatFactory);
|
1061
|
+
ngModule['config'](['$provide', function($provide) {
|
1062
1062
|
$interpolateMinErr = window['angular']['$interpolateMinErr'];
|
1063
1063
|
isFunction = window['angular']['isFunction'];
|
1064
1064
|
noop = window['angular']['noop'];
|