@angular/core 9.0.6 → 9.0.7

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.
Files changed (45) hide show
  1. package/bundles/core-testing.umd.js +1 -1
  2. package/bundles/core-testing.umd.min.js +1 -1
  3. package/bundles/core-testing.umd.min.js.map +1 -1
  4. package/bundles/core.umd.js +414 -399
  5. package/bundles/core.umd.js.map +1 -1
  6. package/bundles/core.umd.min.js +133 -132
  7. package/bundles/core.umd.min.js.map +1 -1
  8. package/core.d.ts +1 -1
  9. package/core.metadata.json +1 -1
  10. package/esm2015/src/render3/assert.js +4 -1
  11. package/esm2015/src/render3/i18n.js +12 -6
  12. package/esm2015/src/render3/instructions/attribute.js +6 -6
  13. package/esm2015/src/render3/instructions/attribute_interpolation.js +29 -47
  14. package/esm2015/src/render3/instructions/host_property.js +13 -10
  15. package/esm2015/src/render3/instructions/property.js +7 -6
  16. package/esm2015/src/render3/instructions/property_interpolation.js +40 -39
  17. package/esm2015/src/render3/instructions/shared.js +17 -26
  18. package/esm2015/src/render3/node_assert.js +1 -1
  19. package/esm2015/src/render3/pure_function.js +23 -6
  20. package/esm2015/src/render3/state.js +11 -1
  21. package/esm2015/src/util/assert.js +1 -1
  22. package/esm2015/src/version.js +1 -1
  23. package/esm5/src/render3/assert.js +3 -1
  24. package/esm5/src/render3/i18n.js +11 -5
  25. package/esm5/src/render3/instructions/attribute.js +5 -5
  26. package/esm5/src/render3/instructions/attribute_interpolation.js +29 -38
  27. package/esm5/src/render3/instructions/host_property.js +10 -8
  28. package/esm5/src/render3/instructions/property.js +6 -5
  29. package/esm5/src/render3/instructions/property_interpolation.js +31 -30
  30. package/esm5/src/render3/instructions/shared.js +9 -13
  31. package/esm5/src/render3/node_assert.js +1 -1
  32. package/esm5/src/render3/pure_function.js +19 -6
  33. package/esm5/src/render3/state.js +9 -1
  34. package/esm5/src/util/assert.js +1 -1
  35. package/esm5/src/version.js +1 -1
  36. package/fesm2015/core.js +879 -870
  37. package/fesm2015/core.js.map +1 -1
  38. package/fesm2015/testing.js +1 -1
  39. package/fesm5/core.js +414 -399
  40. package/fesm5/core.js.map +1 -1
  41. package/fesm5/testing.js +1 -1
  42. package/package.json +1 -1
  43. package/src/r3_symbols.d.ts +1 -1
  44. package/testing/testing.d.ts +1 -1
  45. package/testing.d.ts +1 -1
package/fesm2015/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v9.0.6
2
+ * @license Angular v9.0.7
3
3
  * (c) 2010-2020 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -2910,6 +2910,8 @@ function isRootView(target) {
2910
2910
  * Generated from: packages/core/src/render3/assert.ts
2911
2911
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2912
2912
  */
2913
+ // [Assert functions do not constraint type when they are guarded by a truthy
2914
+ // expression.](https://github.com/microsoft/TypeScript/issues/37295)
2913
2915
  /**
2914
2916
  * @param {?} tNode
2915
2917
  * @param {?} lView
@@ -3013,6 +3015,7 @@ function assertFirstUpdatePass(tView, errMessage) {
3013
3015
  /**
3014
3016
  * This is a basic sanity check that an object is probably a directive def. DirectiveDef is
3015
3017
  * an interface, so we can't do a direct instanceof check.
3018
+ * @template T
3016
3019
  * @param {?} obj
3017
3020
  * @return {?}
3018
3021
  */
@@ -3039,6 +3042,739 @@ const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
3039
3042
  /** @type {?} */
3040
3043
  const MATH_ML_NAMESPACE = 'http://www.w3.org/1998/MathML/';
3041
3044
 
3045
+ /**
3046
+ * @fileoverview added by tsickle
3047
+ * Generated from: packages/core/src/render3/interfaces/context.ts
3048
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3049
+ */
3050
+ /**
3051
+ * @license
3052
+ * Copyright Google Inc. All Rights Reserved.
3053
+ *
3054
+ * Use of this source code is governed by an MIT-style license that can be
3055
+ * found in the LICENSE file at https://angular.io/license
3056
+ */
3057
+ /**
3058
+ * This property will be monkey-patched on elements, components and directives
3059
+ * @type {?}
3060
+ */
3061
+ const MONKEY_PATCH_KEY_NAME = '__ngContext__';
3062
+ /**
3063
+ * The internal view context which is specific to a given DOM element, directive or
3064
+ * component instance. Each value in here (besides the LView and element node details)
3065
+ * can be present, null or undefined. If undefined then it implies the value has not been
3066
+ * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
3067
+ *
3068
+ * Each value will get filled when the respective value is examined within the getContext
3069
+ * function. The component, element and each directive instance will share the same instance
3070
+ * of the context.
3071
+ * @record
3072
+ */
3073
+ function LContext() { }
3074
+ if (false) {
3075
+ /**
3076
+ * The component's parent view data.
3077
+ * @type {?}
3078
+ */
3079
+ LContext.prototype.lView;
3080
+ /**
3081
+ * The index instance of the node.
3082
+ * @type {?}
3083
+ */
3084
+ LContext.prototype.nodeIndex;
3085
+ /**
3086
+ * The instance of the DOM node that is attached to the lNode.
3087
+ * @type {?}
3088
+ */
3089
+ LContext.prototype.native;
3090
+ /**
3091
+ * The instance of the Component node.
3092
+ * @type {?}
3093
+ */
3094
+ LContext.prototype.component;
3095
+ /**
3096
+ * The list of active directives that exist on this element.
3097
+ * @type {?}
3098
+ */
3099
+ LContext.prototype.directives;
3100
+ /**
3101
+ * The map of local references (local reference name => element or directive instance) that exist
3102
+ * on this element.
3103
+ * @type {?}
3104
+ */
3105
+ LContext.prototype.localRefs;
3106
+ }
3107
+
3108
+ /**
3109
+ * @fileoverview added by tsickle
3110
+ * Generated from: packages/core/src/render3/interfaces/document.ts
3111
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3112
+ */
3113
+ /**
3114
+ * @license
3115
+ * Copyright Google Inc. All Rights Reserved.
3116
+ *
3117
+ * Use of this source code is governed by an MIT-style license that can be
3118
+ * found in the LICENSE file at https://angular.io/license
3119
+ */
3120
+ /**
3121
+ * Most of the use of `document` in Angular is from within the DI system so it is possible to simply
3122
+ * inject the `DOCUMENT` token and are done.
3123
+ *
3124
+ * Ivy is special because it does not rely upon the DI and must get hold of the document some other
3125
+ * way.
3126
+ *
3127
+ * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.
3128
+ * Wherever ivy needs the global document, it calls `getDocument()` instead.
3129
+ *
3130
+ * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to
3131
+ * tell ivy what the global `document` is.
3132
+ *
3133
+ * Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)
3134
+ * by calling `setDocument()` when providing the `DOCUMENT` token.
3135
+ * @type {?}
3136
+ */
3137
+ let DOCUMENT = undefined;
3138
+ /**
3139
+ * Tell ivy what the `document` is for this platform.
3140
+ *
3141
+ * It is only necessary to call this if the current platform is not a browser.
3142
+ *
3143
+ * @param {?} document The object representing the global `document` in this environment.
3144
+ * @return {?}
3145
+ */
3146
+ function setDocument(document) {
3147
+ DOCUMENT = document;
3148
+ }
3149
+ /**
3150
+ * Access the object that represents the `document` for this platform.
3151
+ *
3152
+ * Ivy calls this whenever it needs to access the `document` object.
3153
+ * For example to create the renderer or to do sanitization.
3154
+ * @return {?}
3155
+ */
3156
+ function getDocument() {
3157
+ if (DOCUMENT !== undefined) {
3158
+ return DOCUMENT;
3159
+ }
3160
+ else if (typeof document !== 'undefined') {
3161
+ return document;
3162
+ }
3163
+ // No "document" can be found. This should only happen if we are running ivy outside Angular and
3164
+ // the current platform is not a browser. Since this is not a supported scenario at the moment
3165
+ // this should not happen in Angular apps.
3166
+ // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a
3167
+ // public API. Meanwhile we just return `undefined` and let the application fail.
3168
+ return (/** @type {?} */ (undefined));
3169
+ }
3170
+
3171
+ /**
3172
+ * @fileoverview added by tsickle
3173
+ * Generated from: packages/core/src/render3/interfaces/renderer.ts
3174
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3175
+ */
3176
+ /** @enum {number} */
3177
+ const RendererStyleFlags3 = {
3178
+ Important: 1,
3179
+ DashCase: 2,
3180
+ };
3181
+ RendererStyleFlags3[RendererStyleFlags3.Important] = 'Important';
3182
+ RendererStyleFlags3[RendererStyleFlags3.DashCase] = 'DashCase';
3183
+ /**
3184
+ * Object Oriented style of API needed to create elements and text nodes.
3185
+ *
3186
+ * This is the native browser API style, e.g. operations are methods on individual objects
3187
+ * like HTMLElement. With this style, no additional code is needed as a facade
3188
+ * (reducing payload size).
3189
+ *
3190
+ * @record
3191
+ */
3192
+ function ObjectOrientedRenderer3() { }
3193
+ if (false) {
3194
+ /**
3195
+ * @param {?} data
3196
+ * @return {?}
3197
+ */
3198
+ ObjectOrientedRenderer3.prototype.createComment = function (data) { };
3199
+ /**
3200
+ * @param {?} tagName
3201
+ * @return {?}
3202
+ */
3203
+ ObjectOrientedRenderer3.prototype.createElement = function (tagName) { };
3204
+ /**
3205
+ * @param {?} namespace
3206
+ * @param {?} tagName
3207
+ * @return {?}
3208
+ */
3209
+ ObjectOrientedRenderer3.prototype.createElementNS = function (namespace, tagName) { };
3210
+ /**
3211
+ * @param {?} data
3212
+ * @return {?}
3213
+ */
3214
+ ObjectOrientedRenderer3.prototype.createTextNode = function (data) { };
3215
+ /**
3216
+ * @param {?} selectors
3217
+ * @return {?}
3218
+ */
3219
+ ObjectOrientedRenderer3.prototype.querySelector = function (selectors) { };
3220
+ }
3221
+ /**
3222
+ * Returns whether the `renderer` is a `ProceduralRenderer3`
3223
+ * @param {?} renderer
3224
+ * @return {?}
3225
+ */
3226
+ function isProceduralRenderer(renderer) {
3227
+ return !!(((/** @type {?} */ (renderer))).listen);
3228
+ }
3229
+ /**
3230
+ * Procedural style of API needed to create elements and text nodes.
3231
+ *
3232
+ * In non-native browser environments (e.g. platforms such as web-workers), this is the
3233
+ * facade that enables element manipulation. This also facilitates backwards compatibility
3234
+ * with Renderer2.
3235
+ * @record
3236
+ */
3237
+ function ProceduralRenderer3() { }
3238
+ if (false) {
3239
+ /**
3240
+ * This property is allowed to be null / undefined,
3241
+ * in which case the view engine won't call it.
3242
+ * This is used as a performance optimization for production mode.
3243
+ * @type {?|undefined}
3244
+ */
3245
+ ProceduralRenderer3.prototype.destroyNode;
3246
+ /**
3247
+ * @return {?}
3248
+ */
3249
+ ProceduralRenderer3.prototype.destroy = function () { };
3250
+ /**
3251
+ * @param {?} value
3252
+ * @return {?}
3253
+ */
3254
+ ProceduralRenderer3.prototype.createComment = function (value) { };
3255
+ /**
3256
+ * @param {?} name
3257
+ * @param {?=} namespace
3258
+ * @return {?}
3259
+ */
3260
+ ProceduralRenderer3.prototype.createElement = function (name, namespace) { };
3261
+ /**
3262
+ * @param {?} value
3263
+ * @return {?}
3264
+ */
3265
+ ProceduralRenderer3.prototype.createText = function (value) { };
3266
+ /**
3267
+ * @param {?} parent
3268
+ * @param {?} newChild
3269
+ * @return {?}
3270
+ */
3271
+ ProceduralRenderer3.prototype.appendChild = function (parent, newChild) { };
3272
+ /**
3273
+ * @param {?} parent
3274
+ * @param {?} newChild
3275
+ * @param {?} refChild
3276
+ * @return {?}
3277
+ */
3278
+ ProceduralRenderer3.prototype.insertBefore = function (parent, newChild, refChild) { };
3279
+ /**
3280
+ * @param {?} parent
3281
+ * @param {?} oldChild
3282
+ * @param {?=} isHostElement
3283
+ * @return {?}
3284
+ */
3285
+ ProceduralRenderer3.prototype.removeChild = function (parent, oldChild, isHostElement) { };
3286
+ /**
3287
+ * @param {?} selectorOrNode
3288
+ * @param {?=} preserveContent
3289
+ * @return {?}
3290
+ */
3291
+ ProceduralRenderer3.prototype.selectRootElement = function (selectorOrNode, preserveContent) { };
3292
+ /**
3293
+ * @param {?} node
3294
+ * @return {?}
3295
+ */
3296
+ ProceduralRenderer3.prototype.parentNode = function (node) { };
3297
+ /**
3298
+ * @param {?} node
3299
+ * @return {?}
3300
+ */
3301
+ ProceduralRenderer3.prototype.nextSibling = function (node) { };
3302
+ /**
3303
+ * @param {?} el
3304
+ * @param {?} name
3305
+ * @param {?} value
3306
+ * @param {?=} namespace
3307
+ * @return {?}
3308
+ */
3309
+ ProceduralRenderer3.prototype.setAttribute = function (el, name, value, namespace) { };
3310
+ /**
3311
+ * @param {?} el
3312
+ * @param {?} name
3313
+ * @param {?=} namespace
3314
+ * @return {?}
3315
+ */
3316
+ ProceduralRenderer3.prototype.removeAttribute = function (el, name, namespace) { };
3317
+ /**
3318
+ * @param {?} el
3319
+ * @param {?} name
3320
+ * @return {?}
3321
+ */
3322
+ ProceduralRenderer3.prototype.addClass = function (el, name) { };
3323
+ /**
3324
+ * @param {?} el
3325
+ * @param {?} name
3326
+ * @return {?}
3327
+ */
3328
+ ProceduralRenderer3.prototype.removeClass = function (el, name) { };
3329
+ /**
3330
+ * @param {?} el
3331
+ * @param {?} style
3332
+ * @param {?} value
3333
+ * @param {?=} flags
3334
+ * @return {?}
3335
+ */
3336
+ ProceduralRenderer3.prototype.setStyle = function (el, style, value, flags) { };
3337
+ /**
3338
+ * @param {?} el
3339
+ * @param {?} style
3340
+ * @param {?=} flags
3341
+ * @return {?}
3342
+ */
3343
+ ProceduralRenderer3.prototype.removeStyle = function (el, style, flags) { };
3344
+ /**
3345
+ * @param {?} el
3346
+ * @param {?} name
3347
+ * @param {?} value
3348
+ * @return {?}
3349
+ */
3350
+ ProceduralRenderer3.prototype.setProperty = function (el, name, value) { };
3351
+ /**
3352
+ * @param {?} node
3353
+ * @param {?} value
3354
+ * @return {?}
3355
+ */
3356
+ ProceduralRenderer3.prototype.setValue = function (node, value) { };
3357
+ /**
3358
+ * @param {?} target
3359
+ * @param {?} eventName
3360
+ * @param {?} callback
3361
+ * @return {?}
3362
+ */
3363
+ ProceduralRenderer3.prototype.listen = function (target, eventName, callback) { };
3364
+ }
3365
+ /**
3366
+ * @record
3367
+ */
3368
+ function RendererFactory3() { }
3369
+ if (false) {
3370
+ /**
3371
+ * @param {?} hostElement
3372
+ * @param {?} rendererType
3373
+ * @return {?}
3374
+ */
3375
+ RendererFactory3.prototype.createRenderer = function (hostElement, rendererType) { };
3376
+ /**
3377
+ * @return {?}
3378
+ */
3379
+ RendererFactory3.prototype.begin = function () { };
3380
+ /**
3381
+ * @return {?}
3382
+ */
3383
+ RendererFactory3.prototype.end = function () { };
3384
+ }
3385
+ const ɵ0$2 = /**
3386
+ * @param {?} hostElement
3387
+ * @param {?} rendererType
3388
+ * @return {?}
3389
+ */
3390
+ (hostElement, rendererType) => { return getDocument(); };
3391
+ /** @type {?} */
3392
+ const domRendererFactory3 = {
3393
+ createRenderer: (ɵ0$2)
3394
+ };
3395
+ /**
3396
+ * Subset of API needed for appending elements and text nodes.
3397
+ * @record
3398
+ */
3399
+ function RNode() { }
3400
+ if (false) {
3401
+ /**
3402
+ * Returns the parent Element, Document, or DocumentFragment
3403
+ * @type {?}
3404
+ */
3405
+ RNode.prototype.parentNode;
3406
+ /**
3407
+ * Returns the parent Element if there is one
3408
+ * @type {?}
3409
+ */
3410
+ RNode.prototype.parentElement;
3411
+ /**
3412
+ * Gets the Node immediately following this one in the parent's childNodes
3413
+ * @type {?}
3414
+ */
3415
+ RNode.prototype.nextSibling;
3416
+ /**
3417
+ * Removes a child from the current node and returns the removed node
3418
+ * @param {?} oldChild the child node to remove
3419
+ * @return {?}
3420
+ */
3421
+ RNode.prototype.removeChild = function (oldChild) { };
3422
+ /**
3423
+ * Insert a child node.
3424
+ *
3425
+ * Used exclusively for adding View root nodes into ViewAnchor location.
3426
+ * @param {?} newChild
3427
+ * @param {?} refChild
3428
+ * @param {?} isViewRoot
3429
+ * @return {?}
3430
+ */
3431
+ RNode.prototype.insertBefore = function (newChild, refChild, isViewRoot) { };
3432
+ /**
3433
+ * Append a child node.
3434
+ *
3435
+ * Used exclusively for building up DOM which are static (ie not View roots)
3436
+ * @param {?} newChild
3437
+ * @return {?}
3438
+ */
3439
+ RNode.prototype.appendChild = function (newChild) { };
3440
+ }
3441
+ /**
3442
+ * Subset of API needed for writing attributes, properties, and setting up
3443
+ * listeners on Element.
3444
+ * @record
3445
+ */
3446
+ function RElement() { }
3447
+ if (false) {
3448
+ /** @type {?} */
3449
+ RElement.prototype.style;
3450
+ /** @type {?} */
3451
+ RElement.prototype.classList;
3452
+ /** @type {?} */
3453
+ RElement.prototype.className;
3454
+ /** @type {?} */
3455
+ RElement.prototype.textContent;
3456
+ /**
3457
+ * @param {?} name
3458
+ * @param {?} value
3459
+ * @return {?}
3460
+ */
3461
+ RElement.prototype.setAttribute = function (name, value) { };
3462
+ /**
3463
+ * @param {?} name
3464
+ * @return {?}
3465
+ */
3466
+ RElement.prototype.removeAttribute = function (name) { };
3467
+ /**
3468
+ * @param {?} namespaceURI
3469
+ * @param {?} qualifiedName
3470
+ * @param {?} value
3471
+ * @return {?}
3472
+ */
3473
+ RElement.prototype.setAttributeNS = function (namespaceURI, qualifiedName, value) { };
3474
+ /**
3475
+ * @param {?} type
3476
+ * @param {?} listener
3477
+ * @param {?=} useCapture
3478
+ * @return {?}
3479
+ */
3480
+ RElement.prototype.addEventListener = function (type, listener, useCapture) { };
3481
+ /**
3482
+ * @param {?} type
3483
+ * @param {?=} listener
3484
+ * @param {?=} options
3485
+ * @return {?}
3486
+ */
3487
+ RElement.prototype.removeEventListener = function (type, listener, options) { };
3488
+ /**
3489
+ * @param {?} name
3490
+ * @param {?} value
3491
+ * @return {?}
3492
+ */
3493
+ RElement.prototype.setProperty = function (name, value) { };
3494
+ }
3495
+ /**
3496
+ * @record
3497
+ */
3498
+ function RCssStyleDeclaration() { }
3499
+ if (false) {
3500
+ /**
3501
+ * @param {?} propertyName
3502
+ * @return {?}
3503
+ */
3504
+ RCssStyleDeclaration.prototype.removeProperty = function (propertyName) { };
3505
+ /**
3506
+ * @param {?} propertyName
3507
+ * @param {?} value
3508
+ * @param {?=} priority
3509
+ * @return {?}
3510
+ */
3511
+ RCssStyleDeclaration.prototype.setProperty = function (propertyName, value, priority) { };
3512
+ }
3513
+ /**
3514
+ * @record
3515
+ */
3516
+ function RDomTokenList() { }
3517
+ if (false) {
3518
+ /**
3519
+ * @param {?} token
3520
+ * @return {?}
3521
+ */
3522
+ RDomTokenList.prototype.add = function (token) { };
3523
+ /**
3524
+ * @param {?} token
3525
+ * @return {?}
3526
+ */
3527
+ RDomTokenList.prototype.remove = function (token) { };
3528
+ }
3529
+ /**
3530
+ * @record
3531
+ */
3532
+ function RText() { }
3533
+ if (false) {
3534
+ /** @type {?} */
3535
+ RText.prototype.textContent;
3536
+ }
3537
+ /**
3538
+ * @record
3539
+ */
3540
+ function RComment() { }
3541
+ if (false) {
3542
+ /** @type {?} */
3543
+ RComment.prototype.textContent;
3544
+ }
3545
+ // Note: This hack is necessary so we don't erroneously get a circular dependency
3546
+ // failure based on types.
3547
+ /** @type {?} */
3548
+ const unusedValueExportToPlacateAjd$2 = 1;
3549
+
3550
+ /**
3551
+ * @fileoverview added by tsickle
3552
+ * Generated from: packages/core/src/render3/util/view_utils.ts
3553
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3554
+ */
3555
+ /**
3556
+ * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)
3557
+ * in same location in `LView`. This is because we don't want to pre-allocate space for it
3558
+ * because the storage is sparse. This file contains utilities for dealing with such data types.
3559
+ *
3560
+ * How do we know what is stored at a given location in `LView`.
3561
+ * - `Array.isArray(value) === false` => `RNode` (The normal storage value)
3562
+ * - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.
3563
+ * - `typeof value[TYPE] === 'object'` => `LView`
3564
+ * - This happens when we have a component at a given location
3565
+ * - `typeof value[TYPE] === true` => `LContainer`
3566
+ * - This happens when we have `LContainer` binding at a given location.
3567
+ *
3568
+ *
3569
+ * NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.
3570
+ */
3571
+ /**
3572
+ * Returns `RNode`.
3573
+ * @param {?} value wrapped value of `RNode`, `LView`, `LContainer`
3574
+ * @return {?}
3575
+ */
3576
+ function unwrapRNode(value) {
3577
+ while (Array.isArray(value)) {
3578
+ value = (/** @type {?} */ (value[HOST]));
3579
+ }
3580
+ return (/** @type {?} */ (value));
3581
+ }
3582
+ /**
3583
+ * Returns `LView` or `null` if not found.
3584
+ * @param {?} value wrapped value of `RNode`, `LView`, `LContainer`
3585
+ * @return {?}
3586
+ */
3587
+ function unwrapLView(value) {
3588
+ while (Array.isArray(value)) {
3589
+ // This check is same as `isLView()` but we don't call at as we don't want to call
3590
+ // `Array.isArray()` twice and give JITer more work for inlining.
3591
+ if (typeof value[TYPE] === 'object')
3592
+ return (/** @type {?} */ (value));
3593
+ value = (/** @type {?} */ (value[HOST]));
3594
+ }
3595
+ return null;
3596
+ }
3597
+ /**
3598
+ * Returns `LContainer` or `null` if not found.
3599
+ * @param {?} value wrapped value of `RNode`, `LView`, `LContainer`
3600
+ * @return {?}
3601
+ */
3602
+ function unwrapLContainer(value) {
3603
+ while (Array.isArray(value)) {
3604
+ // This check is same as `isLContainer()` but we don't call at as we don't want to call
3605
+ // `Array.isArray()` twice and give JITer more work for inlining.
3606
+ if (value[TYPE] === true)
3607
+ return (/** @type {?} */ (value));
3608
+ value = (/** @type {?} */ (value[HOST]));
3609
+ }
3610
+ return null;
3611
+ }
3612
+ /**
3613
+ * Retrieves an element value from the provided `viewData`, by unwrapping
3614
+ * from any containers, component views, or style contexts.
3615
+ * @param {?} index
3616
+ * @param {?} lView
3617
+ * @return {?}
3618
+ */
3619
+ function getNativeByIndex(index, lView) {
3620
+ return unwrapRNode(lView[index + HEADER_OFFSET]);
3621
+ }
3622
+ /**
3623
+ * Retrieve an `RNode` for a given `TNode` and `LView`.
3624
+ *
3625
+ * This function guarantees in dev mode to retrieve a non-null `RNode`.
3626
+ *
3627
+ * @param {?} tNode
3628
+ * @param {?} lView
3629
+ * @return {?}
3630
+ */
3631
+ function getNativeByTNode(tNode, lView) {
3632
+ ngDevMode && assertTNodeForLView(tNode, lView);
3633
+ ngDevMode && assertDataInRange(lView, tNode.index);
3634
+ /** @type {?} */
3635
+ const node = unwrapRNode(lView[tNode.index]);
3636
+ ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
3637
+ return node;
3638
+ }
3639
+ /**
3640
+ * Retrieve an `RNode` or `null` for a given `TNode` and `LView`.
3641
+ *
3642
+ * Some `TNode`s don't have associated `RNode`s. For example `Projection`
3643
+ *
3644
+ * @param {?} tNode
3645
+ * @param {?} lView
3646
+ * @return {?}
3647
+ */
3648
+ function getNativeByTNodeOrNull(tNode, lView) {
3649
+ /** @type {?} */
3650
+ const index = tNode.index;
3651
+ if (index !== -1) {
3652
+ ngDevMode && assertTNodeForLView(tNode, lView);
3653
+ /** @type {?} */
3654
+ const node = unwrapRNode(lView[index]);
3655
+ ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
3656
+ return node;
3657
+ }
3658
+ return null;
3659
+ }
3660
+ /**
3661
+ * @param {?} tView
3662
+ * @param {?} index
3663
+ * @return {?}
3664
+ */
3665
+ function getTNode(tView, index) {
3666
+ ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');
3667
+ ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');
3668
+ return (/** @type {?} */ (tView.data[index + HEADER_OFFSET]));
3669
+ }
3670
+ /**
3671
+ * Retrieves a value from any `LView` or `TData`.
3672
+ * @template T
3673
+ * @param {?} view
3674
+ * @param {?} index
3675
+ * @return {?}
3676
+ */
3677
+ function load(view, index) {
3678
+ ngDevMode && assertDataInRange(view, index + HEADER_OFFSET);
3679
+ return view[index + HEADER_OFFSET];
3680
+ }
3681
+ /**
3682
+ * @param {?} nodeIndex
3683
+ * @param {?} hostView
3684
+ * @return {?}
3685
+ */
3686
+ function getComponentLViewByIndex(nodeIndex, hostView) {
3687
+ // Could be an LView or an LContainer. If LContainer, unwrap to find LView.
3688
+ ngDevMode && assertDataInRange(hostView, nodeIndex);
3689
+ /** @type {?} */
3690
+ const slotValue = hostView[nodeIndex];
3691
+ /** @type {?} */
3692
+ const lView = isLView(slotValue) ? slotValue : slotValue[HOST];
3693
+ return lView;
3694
+ }
3695
+ /**
3696
+ * Returns the monkey-patch value data present on the target (which could be
3697
+ * a component, directive or a DOM node).
3698
+ * @param {?} target
3699
+ * @return {?}
3700
+ */
3701
+ function readPatchedData(target) {
3702
+ ngDevMode && assertDefined(target, 'Target expected');
3703
+ return target[MONKEY_PATCH_KEY_NAME] || null;
3704
+ }
3705
+ /**
3706
+ * @param {?} target
3707
+ * @return {?}
3708
+ */
3709
+ function readPatchedLView(target) {
3710
+ /** @type {?} */
3711
+ const value = readPatchedData(target);
3712
+ if (value) {
3713
+ return Array.isArray(value) ? value : ((/** @type {?} */ (value))).lView;
3714
+ }
3715
+ return null;
3716
+ }
3717
+ /**
3718
+ * Checks whether a given view is in creation mode
3719
+ * @param {?} view
3720
+ * @return {?}
3721
+ */
3722
+ function isCreationMode(view) {
3723
+ return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;
3724
+ }
3725
+ /**
3726
+ * Returns a boolean for whether the view is attached to the change detection tree.
3727
+ *
3728
+ * Note: This determines whether a view should be checked, not whether it's inserted
3729
+ * into a container. For that, you'll want `viewAttachedToContainer` below.
3730
+ * @param {?} view
3731
+ * @return {?}
3732
+ */
3733
+ function viewAttachedToChangeDetector(view) {
3734
+ return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;
3735
+ }
3736
+ /**
3737
+ * Returns a boolean for whether the view is attached to a container.
3738
+ * @param {?} view
3739
+ * @return {?}
3740
+ */
3741
+ function viewAttachedToContainer(view) {
3742
+ return isLContainer(view[PARENT]);
3743
+ }
3744
+ /**
3745
+ * Returns a constant from `TConstants` instance.
3746
+ * @template T
3747
+ * @param {?} consts
3748
+ * @param {?} index
3749
+ * @return {?}
3750
+ */
3751
+ function getConstant(consts, index) {
3752
+ return consts === null || index == null ? null : (/** @type {?} */ ((/** @type {?} */ (consts[index]))));
3753
+ }
3754
+ /**
3755
+ * Resets the pre-order hook flags of the view.
3756
+ * @param {?} lView the LView on which the flags are reset
3757
+ * @return {?}
3758
+ */
3759
+ function resetPreOrderHookFlags(lView) {
3760
+ lView[PREORDER_HOOK_FLAGS] = 0;
3761
+ }
3762
+ /**
3763
+ * @param {?} lContainer
3764
+ * @return {?}
3765
+ */
3766
+ function getLContainerActiveIndex(lContainer) {
3767
+ return lContainer[ACTIVE_INDEX] >> 1 /* SHIFT */;
3768
+ }
3769
+ /**
3770
+ * @param {?} lContainer
3771
+ * @param {?} index
3772
+ * @return {?}
3773
+ */
3774
+ function setLContainerActiveIndex(lContainer, index) {
3775
+ lContainer[ACTIVE_INDEX] = index << 1 /* SHIFT */;
3776
+ }
3777
+
3042
3778
  /**
3043
3779
  * @fileoverview added by tsickle
3044
3780
  * Generated from: packages/core/src/render3/state.ts
@@ -3645,6 +4381,15 @@ function getSelectedIndex() {
3645
4381
  function setSelectedIndex(index) {
3646
4382
  instructionState.lFrame.selectedIndex = index;
3647
4383
  }
4384
+ /**
4385
+ * Gets the `tNode` that represents currently selected element.
4386
+ * @return {?}
4387
+ */
4388
+ function getSelectedTNode() {
4389
+ /** @type {?} */
4390
+ const lFrame = instructionState.lFrame;
4391
+ return getTNode(lFrame.tView, lFrame.selectedIndex);
4392
+ }
3648
4393
  /**
3649
4394
  * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.
3650
4395
  *
@@ -4197,7 +4942,7 @@ function isFactory(obj) {
4197
4942
  // Note: This hack is necessary so we don't erroneously get a circular dependency
4198
4943
  // failure based on types.
4199
4944
  /** @type {?} */
4200
- const unusedValueExportToPlacateAjd$2 = 1;
4945
+ const unusedValueExportToPlacateAjd$3 = 1;
4201
4946
 
4202
4947
  /**
4203
4948
  * @fileoverview added by tsickle
@@ -4248,448 +4993,6 @@ function typeName(type) {
4248
4993
  return '<unknown>';
4249
4994
  }
4250
4995
 
4251
- /**
4252
- * @fileoverview added by tsickle
4253
- * Generated from: packages/core/src/render3/interfaces/document.ts
4254
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4255
- */
4256
- /**
4257
- * @license
4258
- * Copyright Google Inc. All Rights Reserved.
4259
- *
4260
- * Use of this source code is governed by an MIT-style license that can be
4261
- * found in the LICENSE file at https://angular.io/license
4262
- */
4263
- /**
4264
- * Most of the use of `document` in Angular is from within the DI system so it is possible to simply
4265
- * inject the `DOCUMENT` token and are done.
4266
- *
4267
- * Ivy is special because it does not rely upon the DI and must get hold of the document some other
4268
- * way.
4269
- *
4270
- * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.
4271
- * Wherever ivy needs the global document, it calls `getDocument()` instead.
4272
- *
4273
- * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to
4274
- * tell ivy what the global `document` is.
4275
- *
4276
- * Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)
4277
- * by calling `setDocument()` when providing the `DOCUMENT` token.
4278
- * @type {?}
4279
- */
4280
- let DOCUMENT = undefined;
4281
- /**
4282
- * Tell ivy what the `document` is for this platform.
4283
- *
4284
- * It is only necessary to call this if the current platform is not a browser.
4285
- *
4286
- * @param {?} document The object representing the global `document` in this environment.
4287
- * @return {?}
4288
- */
4289
- function setDocument(document) {
4290
- DOCUMENT = document;
4291
- }
4292
- /**
4293
- * Access the object that represents the `document` for this platform.
4294
- *
4295
- * Ivy calls this whenever it needs to access the `document` object.
4296
- * For example to create the renderer or to do sanitization.
4297
- * @return {?}
4298
- */
4299
- function getDocument() {
4300
- if (DOCUMENT !== undefined) {
4301
- return DOCUMENT;
4302
- }
4303
- else if (typeof document !== 'undefined') {
4304
- return document;
4305
- }
4306
- // No "document" can be found. This should only happen if we are running ivy outside Angular and
4307
- // the current platform is not a browser. Since this is not a supported scenario at the moment
4308
- // this should not happen in Angular apps.
4309
- // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a
4310
- // public API. Meanwhile we just return `undefined` and let the application fail.
4311
- return (/** @type {?} */ (undefined));
4312
- }
4313
-
4314
- /**
4315
- * @fileoverview added by tsickle
4316
- * Generated from: packages/core/src/render3/interfaces/renderer.ts
4317
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4318
- */
4319
- /** @enum {number} */
4320
- const RendererStyleFlags3 = {
4321
- Important: 1,
4322
- DashCase: 2,
4323
- };
4324
- RendererStyleFlags3[RendererStyleFlags3.Important] = 'Important';
4325
- RendererStyleFlags3[RendererStyleFlags3.DashCase] = 'DashCase';
4326
- /**
4327
- * Object Oriented style of API needed to create elements and text nodes.
4328
- *
4329
- * This is the native browser API style, e.g. operations are methods on individual objects
4330
- * like HTMLElement. With this style, no additional code is needed as a facade
4331
- * (reducing payload size).
4332
- *
4333
- * @record
4334
- */
4335
- function ObjectOrientedRenderer3() { }
4336
- if (false) {
4337
- /**
4338
- * @param {?} data
4339
- * @return {?}
4340
- */
4341
- ObjectOrientedRenderer3.prototype.createComment = function (data) { };
4342
- /**
4343
- * @param {?} tagName
4344
- * @return {?}
4345
- */
4346
- ObjectOrientedRenderer3.prototype.createElement = function (tagName) { };
4347
- /**
4348
- * @param {?} namespace
4349
- * @param {?} tagName
4350
- * @return {?}
4351
- */
4352
- ObjectOrientedRenderer3.prototype.createElementNS = function (namespace, tagName) { };
4353
- /**
4354
- * @param {?} data
4355
- * @return {?}
4356
- */
4357
- ObjectOrientedRenderer3.prototype.createTextNode = function (data) { };
4358
- /**
4359
- * @param {?} selectors
4360
- * @return {?}
4361
- */
4362
- ObjectOrientedRenderer3.prototype.querySelector = function (selectors) { };
4363
- }
4364
- /**
4365
- * Returns whether the `renderer` is a `ProceduralRenderer3`
4366
- * @param {?} renderer
4367
- * @return {?}
4368
- */
4369
- function isProceduralRenderer(renderer) {
4370
- return !!(((/** @type {?} */ (renderer))).listen);
4371
- }
4372
- /**
4373
- * Procedural style of API needed to create elements and text nodes.
4374
- *
4375
- * In non-native browser environments (e.g. platforms such as web-workers), this is the
4376
- * facade that enables element manipulation. This also facilitates backwards compatibility
4377
- * with Renderer2.
4378
- * @record
4379
- */
4380
- function ProceduralRenderer3() { }
4381
- if (false) {
4382
- /**
4383
- * This property is allowed to be null / undefined,
4384
- * in which case the view engine won't call it.
4385
- * This is used as a performance optimization for production mode.
4386
- * @type {?|undefined}
4387
- */
4388
- ProceduralRenderer3.prototype.destroyNode;
4389
- /**
4390
- * @return {?}
4391
- */
4392
- ProceduralRenderer3.prototype.destroy = function () { };
4393
- /**
4394
- * @param {?} value
4395
- * @return {?}
4396
- */
4397
- ProceduralRenderer3.prototype.createComment = function (value) { };
4398
- /**
4399
- * @param {?} name
4400
- * @param {?=} namespace
4401
- * @return {?}
4402
- */
4403
- ProceduralRenderer3.prototype.createElement = function (name, namespace) { };
4404
- /**
4405
- * @param {?} value
4406
- * @return {?}
4407
- */
4408
- ProceduralRenderer3.prototype.createText = function (value) { };
4409
- /**
4410
- * @param {?} parent
4411
- * @param {?} newChild
4412
- * @return {?}
4413
- */
4414
- ProceduralRenderer3.prototype.appendChild = function (parent, newChild) { };
4415
- /**
4416
- * @param {?} parent
4417
- * @param {?} newChild
4418
- * @param {?} refChild
4419
- * @return {?}
4420
- */
4421
- ProceduralRenderer3.prototype.insertBefore = function (parent, newChild, refChild) { };
4422
- /**
4423
- * @param {?} parent
4424
- * @param {?} oldChild
4425
- * @param {?=} isHostElement
4426
- * @return {?}
4427
- */
4428
- ProceduralRenderer3.prototype.removeChild = function (parent, oldChild, isHostElement) { };
4429
- /**
4430
- * @param {?} selectorOrNode
4431
- * @param {?=} preserveContent
4432
- * @return {?}
4433
- */
4434
- ProceduralRenderer3.prototype.selectRootElement = function (selectorOrNode, preserveContent) { };
4435
- /**
4436
- * @param {?} node
4437
- * @return {?}
4438
- */
4439
- ProceduralRenderer3.prototype.parentNode = function (node) { };
4440
- /**
4441
- * @param {?} node
4442
- * @return {?}
4443
- */
4444
- ProceduralRenderer3.prototype.nextSibling = function (node) { };
4445
- /**
4446
- * @param {?} el
4447
- * @param {?} name
4448
- * @param {?} value
4449
- * @param {?=} namespace
4450
- * @return {?}
4451
- */
4452
- ProceduralRenderer3.prototype.setAttribute = function (el, name, value, namespace) { };
4453
- /**
4454
- * @param {?} el
4455
- * @param {?} name
4456
- * @param {?=} namespace
4457
- * @return {?}
4458
- */
4459
- ProceduralRenderer3.prototype.removeAttribute = function (el, name, namespace) { };
4460
- /**
4461
- * @param {?} el
4462
- * @param {?} name
4463
- * @return {?}
4464
- */
4465
- ProceduralRenderer3.prototype.addClass = function (el, name) { };
4466
- /**
4467
- * @param {?} el
4468
- * @param {?} name
4469
- * @return {?}
4470
- */
4471
- ProceduralRenderer3.prototype.removeClass = function (el, name) { };
4472
- /**
4473
- * @param {?} el
4474
- * @param {?} style
4475
- * @param {?} value
4476
- * @param {?=} flags
4477
- * @return {?}
4478
- */
4479
- ProceduralRenderer3.prototype.setStyle = function (el, style, value, flags) { };
4480
- /**
4481
- * @param {?} el
4482
- * @param {?} style
4483
- * @param {?=} flags
4484
- * @return {?}
4485
- */
4486
- ProceduralRenderer3.prototype.removeStyle = function (el, style, flags) { };
4487
- /**
4488
- * @param {?} el
4489
- * @param {?} name
4490
- * @param {?} value
4491
- * @return {?}
4492
- */
4493
- ProceduralRenderer3.prototype.setProperty = function (el, name, value) { };
4494
- /**
4495
- * @param {?} node
4496
- * @param {?} value
4497
- * @return {?}
4498
- */
4499
- ProceduralRenderer3.prototype.setValue = function (node, value) { };
4500
- /**
4501
- * @param {?} target
4502
- * @param {?} eventName
4503
- * @param {?} callback
4504
- * @return {?}
4505
- */
4506
- ProceduralRenderer3.prototype.listen = function (target, eventName, callback) { };
4507
- }
4508
- /**
4509
- * @record
4510
- */
4511
- function RendererFactory3() { }
4512
- if (false) {
4513
- /**
4514
- * @param {?} hostElement
4515
- * @param {?} rendererType
4516
- * @return {?}
4517
- */
4518
- RendererFactory3.prototype.createRenderer = function (hostElement, rendererType) { };
4519
- /**
4520
- * @return {?}
4521
- */
4522
- RendererFactory3.prototype.begin = function () { };
4523
- /**
4524
- * @return {?}
4525
- */
4526
- RendererFactory3.prototype.end = function () { };
4527
- }
4528
- const ɵ0$2 = /**
4529
- * @param {?} hostElement
4530
- * @param {?} rendererType
4531
- * @return {?}
4532
- */
4533
- (hostElement, rendererType) => { return getDocument(); };
4534
- /** @type {?} */
4535
- const domRendererFactory3 = {
4536
- createRenderer: (ɵ0$2)
4537
- };
4538
- /**
4539
- * Subset of API needed for appending elements and text nodes.
4540
- * @record
4541
- */
4542
- function RNode() { }
4543
- if (false) {
4544
- /**
4545
- * Returns the parent Element, Document, or DocumentFragment
4546
- * @type {?}
4547
- */
4548
- RNode.prototype.parentNode;
4549
- /**
4550
- * Returns the parent Element if there is one
4551
- * @type {?}
4552
- */
4553
- RNode.prototype.parentElement;
4554
- /**
4555
- * Gets the Node immediately following this one in the parent's childNodes
4556
- * @type {?}
4557
- */
4558
- RNode.prototype.nextSibling;
4559
- /**
4560
- * Removes a child from the current node and returns the removed node
4561
- * @param {?} oldChild the child node to remove
4562
- * @return {?}
4563
- */
4564
- RNode.prototype.removeChild = function (oldChild) { };
4565
- /**
4566
- * Insert a child node.
4567
- *
4568
- * Used exclusively for adding View root nodes into ViewAnchor location.
4569
- * @param {?} newChild
4570
- * @param {?} refChild
4571
- * @param {?} isViewRoot
4572
- * @return {?}
4573
- */
4574
- RNode.prototype.insertBefore = function (newChild, refChild, isViewRoot) { };
4575
- /**
4576
- * Append a child node.
4577
- *
4578
- * Used exclusively for building up DOM which are static (ie not View roots)
4579
- * @param {?} newChild
4580
- * @return {?}
4581
- */
4582
- RNode.prototype.appendChild = function (newChild) { };
4583
- }
4584
- /**
4585
- * Subset of API needed for writing attributes, properties, and setting up
4586
- * listeners on Element.
4587
- * @record
4588
- */
4589
- function RElement() { }
4590
- if (false) {
4591
- /** @type {?} */
4592
- RElement.prototype.style;
4593
- /** @type {?} */
4594
- RElement.prototype.classList;
4595
- /** @type {?} */
4596
- RElement.prototype.className;
4597
- /** @type {?} */
4598
- RElement.prototype.textContent;
4599
- /**
4600
- * @param {?} name
4601
- * @param {?} value
4602
- * @return {?}
4603
- */
4604
- RElement.prototype.setAttribute = function (name, value) { };
4605
- /**
4606
- * @param {?} name
4607
- * @return {?}
4608
- */
4609
- RElement.prototype.removeAttribute = function (name) { };
4610
- /**
4611
- * @param {?} namespaceURI
4612
- * @param {?} qualifiedName
4613
- * @param {?} value
4614
- * @return {?}
4615
- */
4616
- RElement.prototype.setAttributeNS = function (namespaceURI, qualifiedName, value) { };
4617
- /**
4618
- * @param {?} type
4619
- * @param {?} listener
4620
- * @param {?=} useCapture
4621
- * @return {?}
4622
- */
4623
- RElement.prototype.addEventListener = function (type, listener, useCapture) { };
4624
- /**
4625
- * @param {?} type
4626
- * @param {?=} listener
4627
- * @param {?=} options
4628
- * @return {?}
4629
- */
4630
- RElement.prototype.removeEventListener = function (type, listener, options) { };
4631
- /**
4632
- * @param {?} name
4633
- * @param {?} value
4634
- * @return {?}
4635
- */
4636
- RElement.prototype.setProperty = function (name, value) { };
4637
- }
4638
- /**
4639
- * @record
4640
- */
4641
- function RCssStyleDeclaration() { }
4642
- if (false) {
4643
- /**
4644
- * @param {?} propertyName
4645
- * @return {?}
4646
- */
4647
- RCssStyleDeclaration.prototype.removeProperty = function (propertyName) { };
4648
- /**
4649
- * @param {?} propertyName
4650
- * @param {?} value
4651
- * @param {?=} priority
4652
- * @return {?}
4653
- */
4654
- RCssStyleDeclaration.prototype.setProperty = function (propertyName, value, priority) { };
4655
- }
4656
- /**
4657
- * @record
4658
- */
4659
- function RDomTokenList() { }
4660
- if (false) {
4661
- /**
4662
- * @param {?} token
4663
- * @return {?}
4664
- */
4665
- RDomTokenList.prototype.add = function (token) { };
4666
- /**
4667
- * @param {?} token
4668
- * @return {?}
4669
- */
4670
- RDomTokenList.prototype.remove = function (token) { };
4671
- }
4672
- /**
4673
- * @record
4674
- */
4675
- function RText() { }
4676
- if (false) {
4677
- /** @type {?} */
4678
- RText.prototype.textContent;
4679
- }
4680
- /**
4681
- * @record
4682
- */
4683
- function RComment() { }
4684
- if (false) {
4685
- /** @type {?} */
4686
- RComment.prototype.textContent;
4687
- }
4688
- // Note: This hack is necessary so we don't erroneously get a circular dependency
4689
- // failure based on types.
4690
- /** @type {?} */
4691
- const unusedValueExportToPlacateAjd$3 = 1;
4692
-
4693
4996
  /**
4694
4997
  * @fileoverview added by tsickle
4695
4998
  * Generated from: packages/core/src/render3/util/attrs_utils.ts
@@ -7359,297 +7662,6 @@ function normalizeDebugBindingValue(value) {
7359
7662
  }
7360
7663
  }
7361
7664
 
7362
- /**
7363
- * @fileoverview added by tsickle
7364
- * Generated from: packages/core/src/render3/interfaces/context.ts
7365
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7366
- */
7367
- /**
7368
- * @license
7369
- * Copyright Google Inc. All Rights Reserved.
7370
- *
7371
- * Use of this source code is governed by an MIT-style license that can be
7372
- * found in the LICENSE file at https://angular.io/license
7373
- */
7374
- /**
7375
- * This property will be monkey-patched on elements, components and directives
7376
- * @type {?}
7377
- */
7378
- const MONKEY_PATCH_KEY_NAME = '__ngContext__';
7379
- /**
7380
- * The internal view context which is specific to a given DOM element, directive or
7381
- * component instance. Each value in here (besides the LView and element node details)
7382
- * can be present, null or undefined. If undefined then it implies the value has not been
7383
- * looked up yet, otherwise, if null, then a lookup was executed and nothing was found.
7384
- *
7385
- * Each value will get filled when the respective value is examined within the getContext
7386
- * function. The component, element and each directive instance will share the same instance
7387
- * of the context.
7388
- * @record
7389
- */
7390
- function LContext() { }
7391
- if (false) {
7392
- /**
7393
- * The component's parent view data.
7394
- * @type {?}
7395
- */
7396
- LContext.prototype.lView;
7397
- /**
7398
- * The index instance of the node.
7399
- * @type {?}
7400
- */
7401
- LContext.prototype.nodeIndex;
7402
- /**
7403
- * The instance of the DOM node that is attached to the lNode.
7404
- * @type {?}
7405
- */
7406
- LContext.prototype.native;
7407
- /**
7408
- * The instance of the Component node.
7409
- * @type {?}
7410
- */
7411
- LContext.prototype.component;
7412
- /**
7413
- * The list of active directives that exist on this element.
7414
- * @type {?}
7415
- */
7416
- LContext.prototype.directives;
7417
- /**
7418
- * The map of local references (local reference name => element or directive instance) that exist
7419
- * on this element.
7420
- * @type {?}
7421
- */
7422
- LContext.prototype.localRefs;
7423
- }
7424
-
7425
- /**
7426
- * @fileoverview added by tsickle
7427
- * Generated from: packages/core/src/render3/util/view_utils.ts
7428
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7429
- */
7430
- /**
7431
- * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)
7432
- * in same location in `LView`. This is because we don't want to pre-allocate space for it
7433
- * because the storage is sparse. This file contains utilities for dealing with such data types.
7434
- *
7435
- * How do we know what is stored at a given location in `LView`.
7436
- * - `Array.isArray(value) === false` => `RNode` (The normal storage value)
7437
- * - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.
7438
- * - `typeof value[TYPE] === 'object'` => `LView`
7439
- * - This happens when we have a component at a given location
7440
- * - `typeof value[TYPE] === true` => `LContainer`
7441
- * - This happens when we have `LContainer` binding at a given location.
7442
- *
7443
- *
7444
- * NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.
7445
- */
7446
- /**
7447
- * Returns `RNode`.
7448
- * @param {?} value wrapped value of `RNode`, `LView`, `LContainer`
7449
- * @return {?}
7450
- */
7451
- function unwrapRNode(value) {
7452
- while (Array.isArray(value)) {
7453
- value = (/** @type {?} */ (value[HOST]));
7454
- }
7455
- return (/** @type {?} */ (value));
7456
- }
7457
- /**
7458
- * Returns `LView` or `null` if not found.
7459
- * @param {?} value wrapped value of `RNode`, `LView`, `LContainer`
7460
- * @return {?}
7461
- */
7462
- function unwrapLView(value) {
7463
- while (Array.isArray(value)) {
7464
- // This check is same as `isLView()` but we don't call at as we don't want to call
7465
- // `Array.isArray()` twice and give JITer more work for inlining.
7466
- if (typeof value[TYPE] === 'object')
7467
- return (/** @type {?} */ (value));
7468
- value = (/** @type {?} */ (value[HOST]));
7469
- }
7470
- return null;
7471
- }
7472
- /**
7473
- * Returns `LContainer` or `null` if not found.
7474
- * @param {?} value wrapped value of `RNode`, `LView`, `LContainer`
7475
- * @return {?}
7476
- */
7477
- function unwrapLContainer(value) {
7478
- while (Array.isArray(value)) {
7479
- // This check is same as `isLContainer()` but we don't call at as we don't want to call
7480
- // `Array.isArray()` twice and give JITer more work for inlining.
7481
- if (value[TYPE] === true)
7482
- return (/** @type {?} */ (value));
7483
- value = (/** @type {?} */ (value[HOST]));
7484
- }
7485
- return null;
7486
- }
7487
- /**
7488
- * Retrieves an element value from the provided `viewData`, by unwrapping
7489
- * from any containers, component views, or style contexts.
7490
- * @param {?} index
7491
- * @param {?} lView
7492
- * @return {?}
7493
- */
7494
- function getNativeByIndex(index, lView) {
7495
- return unwrapRNode(lView[index + HEADER_OFFSET]);
7496
- }
7497
- /**
7498
- * Retrieve an `RNode` for a given `TNode` and `LView`.
7499
- *
7500
- * This function guarantees in dev mode to retrieve a non-null `RNode`.
7501
- *
7502
- * @param {?} tNode
7503
- * @param {?} lView
7504
- * @return {?}
7505
- */
7506
- function getNativeByTNode(tNode, lView) {
7507
- ngDevMode && assertTNodeForLView(tNode, lView);
7508
- ngDevMode && assertDataInRange(lView, tNode.index);
7509
- /** @type {?} */
7510
- const node = unwrapRNode(lView[tNode.index]);
7511
- ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
7512
- return node;
7513
- }
7514
- /**
7515
- * Retrieve an `RNode` or `null` for a given `TNode` and `LView`.
7516
- *
7517
- * Some `TNode`s don't have associated `RNode`s. For example `Projection`
7518
- *
7519
- * @param {?} tNode
7520
- * @param {?} lView
7521
- * @return {?}
7522
- */
7523
- function getNativeByTNodeOrNull(tNode, lView) {
7524
- /** @type {?} */
7525
- const index = tNode.index;
7526
- if (index !== -1) {
7527
- ngDevMode && assertTNodeForLView(tNode, lView);
7528
- /** @type {?} */
7529
- const node = unwrapRNode(lView[index]);
7530
- ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);
7531
- return node;
7532
- }
7533
- return null;
7534
- }
7535
- /**
7536
- * @param {?} tView
7537
- * @param {?} index
7538
- * @return {?}
7539
- */
7540
- function getTNode(tView, index) {
7541
- ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');
7542
- ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');
7543
- return (/** @type {?} */ (tView.data[index + HEADER_OFFSET]));
7544
- }
7545
- /**
7546
- * Retrieves a value from any `LView` or `TData`.
7547
- * @template T
7548
- * @param {?} view
7549
- * @param {?} index
7550
- * @return {?}
7551
- */
7552
- function load(view, index) {
7553
- ngDevMode && assertDataInRange(view, index + HEADER_OFFSET);
7554
- return view[index + HEADER_OFFSET];
7555
- }
7556
- /**
7557
- * @param {?} nodeIndex
7558
- * @param {?} hostView
7559
- * @return {?}
7560
- */
7561
- function getComponentLViewByIndex(nodeIndex, hostView) {
7562
- // Could be an LView or an LContainer. If LContainer, unwrap to find LView.
7563
- ngDevMode && assertDataInRange(hostView, nodeIndex);
7564
- /** @type {?} */
7565
- const slotValue = hostView[nodeIndex];
7566
- /** @type {?} */
7567
- const lView = isLView(slotValue) ? slotValue : slotValue[HOST];
7568
- return lView;
7569
- }
7570
- /**
7571
- * Returns the monkey-patch value data present on the target (which could be
7572
- * a component, directive or a DOM node).
7573
- * @param {?} target
7574
- * @return {?}
7575
- */
7576
- function readPatchedData(target) {
7577
- ngDevMode && assertDefined(target, 'Target expected');
7578
- return target[MONKEY_PATCH_KEY_NAME] || null;
7579
- }
7580
- /**
7581
- * @param {?} target
7582
- * @return {?}
7583
- */
7584
- function readPatchedLView(target) {
7585
- /** @type {?} */
7586
- const value = readPatchedData(target);
7587
- if (value) {
7588
- return Array.isArray(value) ? value : ((/** @type {?} */ (value))).lView;
7589
- }
7590
- return null;
7591
- }
7592
- /**
7593
- * Checks whether a given view is in creation mode
7594
- * @param {?} view
7595
- * @return {?}
7596
- */
7597
- function isCreationMode(view) {
7598
- return (view[FLAGS] & 4 /* CreationMode */) === 4 /* CreationMode */;
7599
- }
7600
- /**
7601
- * Returns a boolean for whether the view is attached to the change detection tree.
7602
- *
7603
- * Note: This determines whether a view should be checked, not whether it's inserted
7604
- * into a container. For that, you'll want `viewAttachedToContainer` below.
7605
- * @param {?} view
7606
- * @return {?}
7607
- */
7608
- function viewAttachedToChangeDetector(view) {
7609
- return (view[FLAGS] & 128 /* Attached */) === 128 /* Attached */;
7610
- }
7611
- /**
7612
- * Returns a boolean for whether the view is attached to a container.
7613
- * @param {?} view
7614
- * @return {?}
7615
- */
7616
- function viewAttachedToContainer(view) {
7617
- return isLContainer(view[PARENT]);
7618
- }
7619
- /**
7620
- * Returns a constant from `TConstants` instance.
7621
- * @template T
7622
- * @param {?} consts
7623
- * @param {?} index
7624
- * @return {?}
7625
- */
7626
- function getConstant(consts, index) {
7627
- return consts === null || index == null ? null : (/** @type {?} */ ((/** @type {?} */ (consts[index]))));
7628
- }
7629
- /**
7630
- * Resets the pre-order hook flags of the view.
7631
- * @param {?} lView the LView on which the flags are reset
7632
- * @return {?}
7633
- */
7634
- function resetPreOrderHookFlags(lView) {
7635
- lView[PREORDER_HOOK_FLAGS] = 0;
7636
- }
7637
- /**
7638
- * @param {?} lContainer
7639
- * @return {?}
7640
- */
7641
- function getLContainerActiveIndex(lContainer) {
7642
- return lContainer[ACTIVE_INDEX] >> 1 /* SHIFT */;
7643
- }
7644
- /**
7645
- * @param {?} lContainer
7646
- * @param {?} index
7647
- * @return {?}
7648
- */
7649
- function setLContainerActiveIndex(lContainer, index) {
7650
- lContainer[ACTIVE_INDEX] = index << 1 /* SHIFT */;
7651
- }
7652
-
7653
7665
  /**
7654
7666
  * @fileoverview added by tsickle
7655
7667
  * Generated from: packages/core/src/render3/context_discovery.ts
@@ -12375,21 +12387,19 @@ function mapPropName(name) {
12375
12387
  /**
12376
12388
  * @template T
12377
12389
  * @param {?} tView
12390
+ * @param {?} tNode
12378
12391
  * @param {?} lView
12379
- * @param {?} index
12380
12392
  * @param {?} propName
12381
12393
  * @param {?} value
12382
- * @param {?=} sanitizer
12383
- * @param {?=} nativeOnly
12384
- * @param {?=} loadRendererFn
12394
+ * @param {?} renderer
12395
+ * @param {?} sanitizer
12396
+ * @param {?} nativeOnly
12385
12397
  * @return {?}
12386
12398
  */
12387
- function elementPropertyInternal(tView, lView, index, propName, value, sanitizer, nativeOnly, loadRendererFn) {
12399
+ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, nativeOnly) {
12388
12400
  ngDevMode && assertNotSame(value, (/** @type {?} */ (NO_CHANGE)), 'Incoming value should never be NO_CHANGE.');
12389
12401
  /** @type {?} */
12390
- const element = (/** @type {?} */ (getNativeByIndex(index, lView)));
12391
- /** @type {?} */
12392
- const tNode = getTNode(tView, index);
12402
+ const element = (/** @type {?} */ (getNativeByTNode(tNode, lView)));
12393
12403
  /** @type {?} */
12394
12404
  let inputData = tNode.inputs;
12395
12405
  /** @type {?} */
@@ -12397,7 +12407,7 @@ function elementPropertyInternal(tView, lView, index, propName, value, sanitizer
12397
12407
  if (!nativeOnly && inputData != null && (dataValue = inputData[propName])) {
12398
12408
  setInputsForProperty(tView, lView, dataValue, propName, value);
12399
12409
  if (isComponentHost(tNode))
12400
- markDirtyIfOnPush(lView, index + HEADER_OFFSET);
12410
+ markDirtyIfOnPush(lView, tNode.index);
12401
12411
  if (ngDevMode) {
12402
12412
  setNgReflectProperties(lView, element, tNode.type, dataValue, value);
12403
12413
  }
@@ -12413,8 +12423,6 @@ function elementPropertyInternal(tView, lView, index, propName, value, sanitizer
12413
12423
  }
12414
12424
  ngDevMode.rendererSetProperty++;
12415
12425
  }
12416
- /** @type {?} */
12417
- const renderer = loadRendererFn ? loadRendererFn(tNode, lView) : lView[RENDERER];
12418
12426
  // It is assumed that the sanitizer is only added when the compiler determines that the
12419
12427
  // property is risky, so sanitization can be done without further checks.
12420
12428
  value = sanitizer != null ? ((/** @type {?} */ (sanitizer(value, tNode.tagName || '', propName)))) : value;
@@ -12969,20 +12977,19 @@ function addComponentLogic(lView, hostTNode, def) {
12969
12977
  lView[hostTNode.index] = componentView;
12970
12978
  }
12971
12979
  /**
12972
- * @param {?} index
12980
+ * @param {?} tNode
12981
+ * @param {?} lView
12973
12982
  * @param {?} name
12974
12983
  * @param {?} value
12975
- * @param {?} tView
12976
- * @param {?} lView
12977
- * @param {?=} sanitizer
12978
- * @param {?=} namespace
12984
+ * @param {?} sanitizer
12985
+ * @param {?} namespace
12979
12986
  * @return {?}
12980
12987
  */
12981
- function elementAttributeInternal(index, name, value, tView, lView, sanitizer, namespace) {
12988
+ function elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace) {
12982
12989
  ngDevMode && assertNotSame(value, (/** @type {?} */ (NO_CHANGE)), 'Incoming value should never be NO_CHANGE.');
12983
12990
  ngDevMode && validateAgainstEventAttributes(name);
12984
12991
  /** @type {?} */
12985
- const element = (/** @type {?} */ (getNativeByIndex(index, lView)));
12992
+ const element = (/** @type {?} */ (getNativeByTNode(tNode, lView)));
12986
12993
  /** @type {?} */
12987
12994
  const renderer = lView[RENDERER];
12988
12995
  if (value == null) {
@@ -12993,8 +13000,6 @@ function elementAttributeInternal(index, name, value, tView, lView, sanitizer, n
12993
13000
  else {
12994
13001
  ngDevMode && ngDevMode.rendererSetAttribute++;
12995
13002
  /** @type {?} */
12996
- const tNode = getTNode(tView, index);
12997
- /** @type {?} */
12998
13003
  const strValue = sanitizer == null ? renderStringify(value) : sanitizer(value, tNode.tagName || '', name);
12999
13004
  if (isProceduralRenderer(renderer)) {
13000
13005
  renderer.setAttribute(element, name, strValue, namespace);
@@ -13485,19 +13490,17 @@ function executeViewQueryFn(flags, viewQueryFn, component) {
13485
13490
  * interpolated properties.
13486
13491
  *
13487
13492
  * @param {?} tData `TData` where meta-data will be saved;
13488
- * @param {?} nodeIndex index of a `TNode` that is a target of the binding;
13493
+ * @param {?} tNode `TNode` that is a target of the binding;
13489
13494
  * @param {?} propertyName bound property name;
13490
13495
  * @param {?} bindingIndex binding index in `LView`
13491
13496
  * @param {...?} interpolationParts static interpolation parts (for property interpolations)
13492
13497
  * @return {?}
13493
13498
  */
13494
- function storePropertyBindingMetadata(tData, nodeIndex, propertyName, bindingIndex, ...interpolationParts) {
13499
+ function storePropertyBindingMetadata(tData, tNode, propertyName, bindingIndex, ...interpolationParts) {
13495
13500
  // Binding meta-data are stored only the first time a given property instruction is processed.
13496
13501
  // Since we don't have a concept of the "first update pass" we need to check for presence of the
13497
13502
  // binding meta-data to decide if one should be stored (or if was stored already).
13498
13503
  if (tData[bindingIndex] === null) {
13499
- /** @type {?} */
13500
- const tNode = (/** @type {?} */ (tData[nodeIndex + HEADER_OFFSET]));
13501
13504
  if (tNode.inputs == null || !tNode.inputs[propertyName]) {
13502
13505
  /** @type {?} */
13503
13506
  const propBindingIdxs = tNode.propertyBindings || (tNode.propertyBindings = []);
@@ -13609,7 +13612,7 @@ function textBindingInternal(lView, index, value) {
13609
13612
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13610
13613
  */
13611
13614
  /** @type {?} */
13612
- const unusedValueToPlacateAjd$1 = unusedValueExportToPlacateAjd$1 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$3 + unusedValueExportToPlacateAjd;
13615
+ const unusedValueToPlacateAjd$1 = unusedValueExportToPlacateAjd$1 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$5 + unusedValueExportToPlacateAjd$2 + unusedValueExportToPlacateAjd;
13613
13616
  /**
13614
13617
  * @param {?} tNode
13615
13618
  * @param {?} embeddedView
@@ -19847,12 +19850,12 @@ function ɵɵattribute(name, value, sanitizer, namespace) {
19847
19850
  /** @type {?} */
19848
19851
  const bindingIndex = nextBindingIndex();
19849
19852
  if (bindingUpdated(lView, bindingIndex, value)) {
19850
- /** @type {?} */
19851
- const nodeIndex = getSelectedIndex();
19852
19853
  /** @type {?} */
19853
19854
  const tView = getTView();
19854
- elementAttributeInternal(nodeIndex, name, value, tView, lView, sanitizer, namespace);
19855
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + name, bindingIndex);
19855
+ /** @type {?} */
19856
+ const tNode = getSelectedTNode();
19857
+ elementAttributeInternal(tNode, lView, name, value, sanitizer, namespace);
19858
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, 'attr.' + name, bindingIndex);
19856
19859
  }
19857
19860
  return ɵɵattribute;
19858
19861
  }
@@ -20143,12 +20146,10 @@ function ɵɵattributeInterpolate1(attrName, prefix, v0, suffix, sanitizer, name
20143
20146
  const interpolatedValue = interpolation1(lView, prefix, v0, suffix);
20144
20147
  if (interpolatedValue !== NO_CHANGE) {
20145
20148
  /** @type {?} */
20146
- const nodeIndex = getSelectedIndex();
20147
- /** @type {?} */
20148
- const tView = getTView();
20149
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20149
+ const tNode = getSelectedTNode();
20150
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20150
20151
  ngDevMode &&
20151
- storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 1, prefix, suffix);
20152
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 1, prefix, suffix);
20152
20153
  }
20153
20154
  return ɵɵattributeInterpolate1;
20154
20155
  }
@@ -20186,12 +20187,10 @@ function ɵɵattributeInterpolate2(attrName, prefix, v0, i0, v1, suffix, sanitiz
20186
20187
  const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);
20187
20188
  if (interpolatedValue !== NO_CHANGE) {
20188
20189
  /** @type {?} */
20189
- const nodeIndex = getSelectedIndex();
20190
- /** @type {?} */
20191
- const tView = getTView();
20192
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20190
+ const tNode = getSelectedTNode();
20191
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20193
20192
  ngDevMode &&
20194
- storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 2, prefix, i0, suffix);
20193
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 2, prefix, i0, suffix);
20195
20194
  }
20196
20195
  return ɵɵattributeInterpolate2;
20197
20196
  }
@@ -20232,11 +20231,9 @@ function ɵɵattributeInterpolate3(attrName, prefix, v0, i0, v1, i1, v2, suffix,
20232
20231
  const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);
20233
20232
  if (interpolatedValue !== NO_CHANGE) {
20234
20233
  /** @type {?} */
20235
- const nodeIndex = getSelectedIndex();
20236
- /** @type {?} */
20237
- const tView = getTView();
20238
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20239
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 3, prefix, i0, i1, suffix);
20234
+ const tNode = getSelectedTNode();
20235
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20236
+ ngDevMode && storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 3, prefix, i0, i1, suffix);
20240
20237
  }
20241
20238
  return ɵɵattributeInterpolate3;
20242
20239
  }
@@ -20279,11 +20276,9 @@ function ɵɵattributeInterpolate4(attrName, prefix, v0, i0, v1, i1, v2, i2, v3,
20279
20276
  const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);
20280
20277
  if (interpolatedValue !== NO_CHANGE) {
20281
20278
  /** @type {?} */
20282
- const nodeIndex = getSelectedIndex();
20283
- /** @type {?} */
20284
- const tView = getTView();
20285
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20286
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);
20279
+ const tNode = getSelectedTNode();
20280
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20281
+ ngDevMode && storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);
20287
20282
  }
20288
20283
  return ɵɵattributeInterpolate4;
20289
20284
  }
@@ -20328,11 +20323,9 @@ function ɵɵattributeInterpolate5(attrName, prefix, v0, i0, v1, i1, v2, i2, v3,
20328
20323
  const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);
20329
20324
  if (interpolatedValue !== NO_CHANGE) {
20330
20325
  /** @type {?} */
20331
- const nodeIndex = getSelectedIndex();
20332
- /** @type {?} */
20333
- const tView = getTView();
20334
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20335
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
20326
+ const tNode = getSelectedTNode();
20327
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20328
+ ngDevMode && storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
20336
20329
  }
20337
20330
  return ɵɵattributeInterpolate5;
20338
20331
  }
@@ -20379,11 +20372,9 @@ function ɵɵattributeInterpolate6(attrName, prefix, v0, i0, v1, i1, v2, i2, v3,
20379
20372
  const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);
20380
20373
  if (interpolatedValue !== NO_CHANGE) {
20381
20374
  /** @type {?} */
20382
- const nodeIndex = getSelectedIndex();
20383
- /** @type {?} */
20384
- const tView = getTView();
20385
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20386
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 6, prefix, i0, i1, i2, i3, i4, suffix);
20375
+ const tNode = getSelectedTNode();
20376
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20377
+ ngDevMode && storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 6, prefix, i0, i1, i2, i3, i4, suffix);
20387
20378
  }
20388
20379
  return ɵɵattributeInterpolate6;
20389
20380
  }
@@ -20432,11 +20423,9 @@ function ɵɵattributeInterpolate7(attrName, prefix, v0, i0, v1, i1, v2, i2, v3,
20432
20423
  const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);
20433
20424
  if (interpolatedValue !== NO_CHANGE) {
20434
20425
  /** @type {?} */
20435
- const nodeIndex = getSelectedIndex();
20436
- /** @type {?} */
20437
- const tView = getTView();
20438
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20439
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 7, prefix, i0, i1, i2, i3, i4, i5, suffix);
20426
+ const tNode = getSelectedTNode();
20427
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20428
+ ngDevMode && storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 7, prefix, i0, i1, i2, i3, i4, i5, suffix);
20440
20429
  }
20441
20430
  return ɵɵattributeInterpolate7;
20442
20431
  }
@@ -20487,11 +20476,9 @@ function ɵɵattributeInterpolate8(attrName, prefix, v0, i0, v1, i1, v2, i2, v3,
20487
20476
  const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);
20488
20477
  if (interpolatedValue !== NO_CHANGE) {
20489
20478
  /** @type {?} */
20490
- const nodeIndex = getSelectedIndex();
20491
- /** @type {?} */
20492
- const tView = getTView();
20493
- elementAttributeInternal(nodeIndex, attrName, interpolatedValue, tView, lView, sanitizer, namespace);
20494
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - 8, prefix, i0, i1, i2, i3, i4, i5, i6, suffix);
20479
+ const tNode = getSelectedTNode();
20480
+ elementAttributeInternal(tNode, lView, attrName, interpolatedValue, sanitizer, namespace);
20481
+ ngDevMode && storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - 8, prefix, i0, i1, i2, i3, i4, i5, i6, suffix);
20495
20482
  }
20496
20483
  return ɵɵattributeInterpolate8;
20497
20484
  }
@@ -20529,17 +20516,15 @@ function ɵɵattributeInterpolateV(attrName, values, sanitizer, namespace) {
20529
20516
  const interpolated = interpolationV(lView, values);
20530
20517
  if (interpolated !== NO_CHANGE) {
20531
20518
  /** @type {?} */
20532
- const tView = getTView();
20533
- /** @type {?} */
20534
- const nodeIndex = getSelectedIndex();
20535
- elementAttributeInternal(nodeIndex, attrName, interpolated, tView, lView, sanitizer, namespace);
20519
+ const tNode = getSelectedTNode();
20520
+ elementAttributeInternal(tNode, lView, attrName, interpolated, sanitizer, namespace);
20536
20521
  if (ngDevMode) {
20537
20522
  /** @type {?} */
20538
20523
  const interpolationInBetween = [values[0]];
20539
20524
  for (let i = 2; i < values.length; i += 2) {
20540
20525
  interpolationInBetween.push(values[i]);
20541
20526
  }
20542
- storePropertyBindingMetadata(tView.data, nodeIndex, 'attr.' + attrName, getBindingIndex() - interpolationInBetween.length + 1, ...interpolationInBetween);
20527
+ storePropertyBindingMetadata(getTView().data, tNode, 'attr.' + attrName, getBindingIndex() - interpolationInBetween.length + 1, ...interpolationInBetween);
20543
20528
  }
20544
20529
  }
20545
20530
  return ɵɵattributeInterpolateV;
@@ -20934,12 +20919,12 @@ function ɵɵproperty(propName, value, sanitizer) {
20934
20919
  /** @type {?} */
20935
20920
  const bindingIndex = nextBindingIndex();
20936
20921
  if (bindingUpdated(lView, bindingIndex, value)) {
20937
- /** @type {?} */
20938
- const nodeIndex = getSelectedIndex();
20939
20922
  /** @type {?} */
20940
20923
  const tView = getTView();
20941
- elementPropertyInternal(tView, lView, nodeIndex, propName, value, sanitizer);
20942
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, bindingIndex);
20924
+ /** @type {?} */
20925
+ const tNode = getSelectedTNode();
20926
+ elementPropertyInternal(tView, tNode, lView, propName, value, lView[RENDERER], sanitizer, false);
20927
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);
20943
20928
  }
20944
20929
  return ɵɵproperty;
20945
20930
  }
@@ -21995,12 +21980,12 @@ function ɵɵpropertyInterpolate1(propName, prefix, v0, suffix, sanitizer) {
21995
21980
  /** @type {?} */
21996
21981
  const interpolatedValue = interpolation1(lView, prefix, v0, suffix);
21997
21982
  if (interpolatedValue !== NO_CHANGE) {
21998
- /** @type {?} */
21999
- const nodeIndex = getSelectedIndex();
22000
21983
  /** @type {?} */
22001
21984
  const tView = getTView();
22002
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22003
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 1, prefix, suffix);
21985
+ /** @type {?} */
21986
+ const tNode = getSelectedTNode();
21987
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
21988
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 1, prefix, suffix);
22004
21989
  }
22005
21990
  return ɵɵpropertyInterpolate1;
22006
21991
  }
@@ -22040,12 +22025,12 @@ function ɵɵpropertyInterpolate2(propName, prefix, v0, i0, v1, suffix, sanitize
22040
22025
  /** @type {?} */
22041
22026
  const interpolatedValue = interpolation2(lView, prefix, v0, i0, v1, suffix);
22042
22027
  if (interpolatedValue !== NO_CHANGE) {
22043
- /** @type {?} */
22044
- const nodeIndex = getSelectedIndex();
22045
22028
  /** @type {?} */
22046
22029
  const tView = getTView();
22047
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22048
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 2, prefix, i0, suffix);
22030
+ /** @type {?} */
22031
+ const tNode = getSelectedTNode();
22032
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22033
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 2, prefix, i0, suffix);
22049
22034
  }
22050
22035
  return ɵɵpropertyInterpolate2;
22051
22036
  }
@@ -22088,13 +22073,12 @@ function ɵɵpropertyInterpolate3(propName, prefix, v0, i0, v1, i1, v2, suffix,
22088
22073
  /** @type {?} */
22089
22074
  const interpolatedValue = interpolation3(lView, prefix, v0, i0, v1, i1, v2, suffix);
22090
22075
  if (interpolatedValue !== NO_CHANGE) {
22091
- /** @type {?} */
22092
- const nodeIndex = getSelectedIndex();
22093
22076
  /** @type {?} */
22094
22077
  const tView = getTView();
22095
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22096
- ngDevMode &&
22097
- storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 3, prefix, i0, i1, suffix);
22078
+ /** @type {?} */
22079
+ const tNode = getSelectedTNode();
22080
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22081
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 3, prefix, i0, i1, suffix);
22098
22082
  }
22099
22083
  return ɵɵpropertyInterpolate3;
22100
22084
  }
@@ -22139,13 +22123,13 @@ function ɵɵpropertyInterpolate4(propName, prefix, v0, i0, v1, i1, v2, i2, v3,
22139
22123
  /** @type {?} */
22140
22124
  const interpolatedValue = interpolation4(lView, prefix, v0, i0, v1, i1, v2, i2, v3, suffix);
22141
22125
  if (interpolatedValue !== NO_CHANGE) {
22142
- /** @type {?} */
22143
- const nodeIndex = getSelectedIndex();
22144
22126
  /** @type {?} */
22145
22127
  const tView = getTView();
22146
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22128
+ /** @type {?} */
22129
+ const tNode = getSelectedTNode();
22130
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22147
22131
  ngDevMode &&
22148
- storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);
22132
+ storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 4, prefix, i0, i1, i2, suffix);
22149
22133
  }
22150
22134
  return ɵɵpropertyInterpolate4;
22151
22135
  }
@@ -22192,13 +22176,13 @@ function ɵɵpropertyInterpolate5(propName, prefix, v0, i0, v1, i1, v2, i2, v3,
22192
22176
  /** @type {?} */
22193
22177
  const interpolatedValue = interpolation5(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, suffix);
22194
22178
  if (interpolatedValue !== NO_CHANGE) {
22195
- /** @type {?} */
22196
- const nodeIndex = getSelectedIndex();
22197
22179
  /** @type {?} */
22198
22180
  const tView = getTView();
22199
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22181
+ /** @type {?} */
22182
+ const tNode = getSelectedTNode();
22183
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22200
22184
  ngDevMode &&
22201
- storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
22185
+ storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 5, prefix, i0, i1, i2, i3, suffix);
22202
22186
  }
22203
22187
  return ɵɵpropertyInterpolate5;
22204
22188
  }
@@ -22247,12 +22231,13 @@ function ɵɵpropertyInterpolate6(propName, prefix, v0, i0, v1, i1, v2, i2, v3,
22247
22231
  /** @type {?} */
22248
22232
  const interpolatedValue = interpolation6(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, suffix);
22249
22233
  if (interpolatedValue !== NO_CHANGE) {
22250
- /** @type {?} */
22251
- const nodeIndex = getSelectedIndex();
22252
22234
  /** @type {?} */
22253
22235
  const tView = getTView();
22254
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22255
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 6, prefix, i0, i1, i2, i3, i4, suffix);
22236
+ /** @type {?} */
22237
+ const tNode = getSelectedTNode();
22238
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22239
+ ngDevMode &&
22240
+ storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 6, prefix, i0, i1, i2, i3, i4, suffix);
22256
22241
  }
22257
22242
  return ɵɵpropertyInterpolate6;
22258
22243
  }
@@ -22303,12 +22288,12 @@ function ɵɵpropertyInterpolate7(propName, prefix, v0, i0, v1, i1, v2, i2, v3,
22303
22288
  /** @type {?} */
22304
22289
  const interpolatedValue = interpolation7(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, suffix);
22305
22290
  if (interpolatedValue !== NO_CHANGE) {
22306
- /** @type {?} */
22307
- const nodeIndex = getSelectedIndex();
22308
22291
  /** @type {?} */
22309
22292
  const tView = getTView();
22310
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22311
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 7, prefix, i0, i1, i2, i3, i4, i5, suffix);
22293
+ /** @type {?} */
22294
+ const tNode = getSelectedTNode();
22295
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22296
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 7, prefix, i0, i1, i2, i3, i4, i5, suffix);
22312
22297
  }
22313
22298
  return ɵɵpropertyInterpolate7;
22314
22299
  }
@@ -22361,12 +22346,12 @@ function ɵɵpropertyInterpolate8(propName, prefix, v0, i0, v1, i1, v2, i2, v3,
22361
22346
  /** @type {?} */
22362
22347
  const interpolatedValue = interpolation8(lView, prefix, v0, i0, v1, i1, v2, i2, v3, i3, v4, i4, v5, i5, v6, i6, v7, suffix);
22363
22348
  if (interpolatedValue !== NO_CHANGE) {
22364
- /** @type {?} */
22365
- const nodeIndex = getSelectedIndex();
22366
22349
  /** @type {?} */
22367
22350
  const tView = getTView();
22368
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22369
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - 8, prefix, i0, i1, i2, i3, i4, i5, i6, suffix);
22351
+ /** @type {?} */
22352
+ const tNode = getSelectedTNode();
22353
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22354
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - 8, prefix, i0, i1, i2, i3, i4, i5, i6, suffix);
22370
22355
  }
22371
22356
  return ɵɵpropertyInterpolate8;
22372
22357
  }
@@ -22406,18 +22391,18 @@ function ɵɵpropertyInterpolateV(propName, values, sanitizer) {
22406
22391
  /** @type {?} */
22407
22392
  const interpolatedValue = interpolationV(lView, values);
22408
22393
  if (interpolatedValue !== NO_CHANGE) {
22409
- /** @type {?} */
22410
- const nodeIndex = getSelectedIndex();
22411
22394
  /** @type {?} */
22412
22395
  const tView = getTView();
22413
- elementPropertyInternal(tView, lView, nodeIndex, propName, interpolatedValue, sanitizer);
22396
+ /** @type {?} */
22397
+ const tNode = getSelectedTNode();
22398
+ elementPropertyInternal(tView, tNode, lView, propName, interpolatedValue, lView[RENDERER], sanitizer, false);
22414
22399
  if (ngDevMode) {
22415
22400
  /** @type {?} */
22416
22401
  const interpolationInBetween = [values[0]];
22417
22402
  for (let i = 2; i < values.length; i += 2) {
22418
22403
  interpolationInBetween.push(values[i]);
22419
22404
  }
22420
- storePropertyBindingMetadata(tView.data, nodeIndex, propName, getBindingIndex() - interpolationInBetween.length + 1, ...interpolationInBetween);
22405
+ storePropertyBindingMetadata(tView.data, tNode, propName, getBindingIndex() - interpolationInBetween.length + 1, ...interpolationInBetween);
22421
22406
  }
22422
22407
  }
22423
22408
  return ɵɵpropertyInterpolateV;
@@ -25573,12 +25558,12 @@ function ɵɵhostProperty(propName, value, sanitizer) {
25573
25558
  /** @type {?} */
25574
25559
  const bindingIndex = nextBindingIndex();
25575
25560
  if (bindingUpdated(lView, bindingIndex, value)) {
25576
- /** @type {?} */
25577
- const nodeIndex = getSelectedIndex();
25578
25561
  /** @type {?} */
25579
25562
  const tView = getTView();
25580
- elementPropertyInternal(tView, lView, nodeIndex, propName, value, sanitizer, true);
25581
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, bindingIndex);
25563
+ /** @type {?} */
25564
+ const tNode = getSelectedTNode();
25565
+ elementPropertyInternal(tView, tNode, lView, propName, value, lView[RENDERER], sanitizer, true);
25566
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);
25582
25567
  }
25583
25568
  return ɵɵhostProperty;
25584
25569
  }
@@ -25610,12 +25595,14 @@ function ɵɵupdateSyntheticHostBinding(propName, value, sanitizer) {
25610
25595
  /** @type {?} */
25611
25596
  const bindingIndex = nextBindingIndex();
25612
25597
  if (bindingUpdated(lView, bindingIndex, value)) {
25613
- /** @type {?} */
25614
- const nodeIndex = getSelectedIndex();
25615
25598
  /** @type {?} */
25616
25599
  const tView = getTView();
25617
- elementPropertyInternal(tView, lView, nodeIndex, propName, value, sanitizer, true, loadComponentRenderer);
25618
- ngDevMode && storePropertyBindingMetadata(tView.data, nodeIndex, propName, bindingIndex);
25600
+ /** @type {?} */
25601
+ const tNode = getSelectedTNode();
25602
+ /** @type {?} */
25603
+ const renderer = loadComponentRenderer(tNode, lView);
25604
+ elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, true);
25605
+ ngDevMode && storePropertyBindingMetadata(tView.data, tNode, propName, bindingIndex);
25619
25606
  }
25620
25607
  return ɵɵupdateSyntheticHostBinding;
25621
25608
  }
@@ -28050,7 +28037,7 @@ if (false) {
28050
28037
  * \@publicApi
28051
28038
  * @type {?}
28052
28039
  */
28053
- const VERSION = new Version('9.0.6');
28040
+ const VERSION = new Version('9.0.7');
28054
28041
 
28055
28042
  /**
28056
28043
  * @fileoverview added by tsickle
@@ -34820,14 +34807,20 @@ function i18nStartFirstPass(lView, tView, index, message, subTemplateIndex) {
34820
34807
  for (let j = 0; j < parts.length; j++) {
34821
34808
  if (j & 1) {
34822
34809
  // Odd indexes are ICU expressions
34810
+ /** @type {?} */
34811
+ const icuExpression = (/** @type {?} */ (parts[j]));
34812
+ // Verify that ICU expression has the right shape. Translations might contain invalid
34813
+ // constructions (while original messages were correct), so ICU parsing at runtime may not
34814
+ // succeed (thus `icuExpression` remains a string).
34815
+ if (typeof icuExpression !== 'object') {
34816
+ throw new Error(`Unable to parse ICU expression in "${templateTranslation}" message.`);
34817
+ }
34823
34818
  // Create the comment node that will anchor the ICU expression
34824
34819
  /** @type {?} */
34825
34820
  const icuNodeIndex = startIndex + i18nVarsCount++;
34826
34821
  createOpCodes.push(COMMENT_MARKER, ngDevMode ? `ICU ${icuNodeIndex}` : '', icuNodeIndex, parentIndex << 17 /* SHIFT_PARENT */ | 1 /* AppendChild */);
34827
34822
  // Update codes for the ICU expression
34828
34823
  /** @type {?} */
34829
- const icuExpression = (/** @type {?} */ (parts[j]));
34830
- /** @type {?} */
34831
34824
  const mask = getBindingMask(icuExpression);
34832
34825
  icuStart(icuExpressions, icuExpression, icuNodeIndex, icuNodeIndex);
34833
34826
  // Since this is recursive, the last TIcu that was pushed is the one we want
@@ -35231,7 +35224,7 @@ function readCreateOpCodes(index, createOpCodes, tView, lView) {
35231
35224
  const attrValue = (/** @type {?} */ (createOpCodes[++i]));
35232
35225
  // This code is used for ICU expressions only, since we don't support
35233
35226
  // directives/components in ICUs, we don't need to worry about inputs here
35234
- elementAttributeInternal(elementNodeIndex, attrName, attrValue, tView, lView);
35227
+ elementAttributeInternal(getTNode(tView, elementNodeIndex), lView, attrName, attrValue, null, null);
35235
35228
  break;
35236
35229
  default:
35237
35230
  throw new Error(`Unable to determine the type of mutate operation for "${opCode}"`);
@@ -35327,7 +35320,7 @@ function readUpdateOpCodes(updateOpCodes, icus, bindingsStartIndex, changeMask,
35327
35320
  const propName = (/** @type {?} */ (updateOpCodes[++j]));
35328
35321
  /** @type {?} */
35329
35322
  const sanitizeFn = (/** @type {?} */ (updateOpCodes[++j]));
35330
- elementPropertyInternal(tView, lView, nodeIndex, propName, value, sanitizeFn);
35323
+ elementPropertyInternal(tView, getTNode(tView, nodeIndex), lView, propName, value, lView[RENDERER], sanitizeFn, false);
35331
35324
  break;
35332
35325
  case 0 /* Text */:
35333
35326
  textBindingInternal(lView, nodeIndex, value);
@@ -35519,7 +35512,7 @@ function i18nAttributesFirstPass(lView, tView, index, values) {
35519
35512
  // Set attributes for Elements only, for other types (like ElementContainer),
35520
35513
  // only set inputs below
35521
35514
  if (tNode.type === 3 /* Element */) {
35522
- elementAttributeInternal(previousElementIndex, attrName, value, tView, lView);
35515
+ elementAttributeInternal(tNode, lView, attrName, value, null, null);
35523
35516
  }
35524
35517
  // Check if that attribute is a directive input
35525
35518
  /** @type {?} */
@@ -36450,6 +36443,22 @@ function ɵɵpureFunction8(slotOffset, pureFn, exp1, exp2, exp3, exp4, exp5, exp
36450
36443
  function ɵɵpureFunctionV(slotOffset, pureFn, exps, thisArg) {
36451
36444
  return pureFunctionVInternal(getLView(), getBindingRoot(), slotOffset, pureFn, exps, thisArg);
36452
36445
  }
36446
+ /**
36447
+ * Results of a pure function invocation are stored in LView in a dedicated slot that is initialized
36448
+ * to NO_CHANGE. In rare situations a pure pipe might throw an exception on the very first
36449
+ * invocation and not produce any valid results. In this case LView would keep holding the NO_CHANGE
36450
+ * value. The NO_CHANGE is not something that we can use in expressions / bindings thus we convert
36451
+ * it to `undefined`.
36452
+ * @param {?} lView
36453
+ * @param {?} returnValueIndex
36454
+ * @return {?}
36455
+ */
36456
+ function getPureFunctionReturnValue(lView, returnValueIndex) {
36457
+ ngDevMode && assertDataInRange(lView, returnValueIndex);
36458
+ /** @type {?} */
36459
+ const lastReturnValue = lView[returnValueIndex];
36460
+ return lastReturnValue === NO_CHANGE ? undefined : lastReturnValue;
36461
+ }
36453
36462
  /**
36454
36463
  * If the value of the provided exp has changed, calls the pure function to return
36455
36464
  * an updated value. Or if the value has not changed, returns cached value.
@@ -36467,7 +36476,7 @@ function pureFunction1Internal(lView, bindingRoot, slotOffset, pureFn, exp, this
36467
36476
  const bindingIndex = bindingRoot + slotOffset;
36468
36477
  return bindingUpdated(lView, bindingIndex, exp) ?
36469
36478
  updateBinding(lView, bindingIndex + 1, thisArg ? pureFn.call(thisArg, exp) : pureFn(exp)) :
36470
- getBinding(lView, bindingIndex + 1);
36479
+ getPureFunctionReturnValue(lView, bindingIndex + 1);
36471
36480
  }
36472
36481
  /**
36473
36482
  * If the value of any provided exp has changed, calls the pure function to return
@@ -36487,7 +36496,7 @@ function pureFunction2Internal(lView, bindingRoot, slotOffset, pureFn, exp1, exp
36487
36496
  const bindingIndex = bindingRoot + slotOffset;
36488
36497
  return bindingUpdated2(lView, bindingIndex, exp1, exp2) ?
36489
36498
  updateBinding(lView, bindingIndex + 2, thisArg ? pureFn.call(thisArg, exp1, exp2) : pureFn(exp1, exp2)) :
36490
- getBinding(lView, bindingIndex + 2);
36499
+ getPureFunctionReturnValue(lView, bindingIndex + 2);
36491
36500
  }
36492
36501
  /**
36493
36502
  * If the value of any provided exp has changed, calls the pure function to return
@@ -36508,7 +36517,7 @@ function pureFunction3Internal(lView, bindingRoot, slotOffset, pureFn, exp1, exp
36508
36517
  const bindingIndex = bindingRoot + slotOffset;
36509
36518
  return bindingUpdated3(lView, bindingIndex, exp1, exp2, exp3) ?
36510
36519
  updateBinding(lView, bindingIndex + 3, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3) : pureFn(exp1, exp2, exp3)) :
36511
- getBinding(lView, bindingIndex + 3);
36520
+ getPureFunctionReturnValue(lView, bindingIndex + 3);
36512
36521
  }
36513
36522
  /**
36514
36523
  * If the value of any provided exp has changed, calls the pure function to return
@@ -36531,7 +36540,7 @@ function pureFunction4Internal(lView, bindingRoot, slotOffset, pureFn, exp1, exp
36531
36540
  const bindingIndex = bindingRoot + slotOffset;
36532
36541
  return bindingUpdated4(lView, bindingIndex, exp1, exp2, exp3, exp4) ?
36533
36542
  updateBinding(lView, bindingIndex + 4, thisArg ? pureFn.call(thisArg, exp1, exp2, exp3, exp4) : pureFn(exp1, exp2, exp3, exp4)) :
36534
- getBinding(lView, bindingIndex + 4);
36543
+ getPureFunctionReturnValue(lView, bindingIndex + 4);
36535
36544
  }
36536
36545
  /**
36537
36546
  * pureFunction instruction that can support any number of bindings.
@@ -36557,7 +36566,7 @@ function pureFunctionVInternal(lView, bindingRoot, slotOffset, pureFn, exps, thi
36557
36566
  bindingUpdated(lView, bindingIndex++, exps[i]) && (different = true);
36558
36567
  }
36559
36568
  return different ? updateBinding(lView, bindingIndex, pureFn.apply(thisArg, exps)) :
36560
- getBinding(lView, bindingIndex);
36569
+ getPureFunctionReturnValue(lView, bindingIndex);
36561
36570
  }
36562
36571
 
36563
36572
  /**
@@ -37778,7 +37787,7 @@ const unusedValueExportToPlacateAjd$8 = 1;
37778
37787
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
37779
37788
  */
37780
37789
  /** @type {?} */
37781
- const unusedValueToPlacateAjd$2 = unusedValueExportToPlacateAjd$7 + unusedValueExportToPlacateAjd$2 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$8;
37790
+ const unusedValueToPlacateAjd$2 = unusedValueExportToPlacateAjd$7 + unusedValueExportToPlacateAjd$3 + unusedValueExportToPlacateAjd$4 + unusedValueExportToPlacateAjd$8;
37782
37791
  /**
37783
37792
  * @template T
37784
37793
  */