@angular/forms 16.0.0-next.4 → 16.0.0-next.6
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.
- package/{esm2020 → esm2022}/src/directives/abstract_form_group_directive.mjs +4 -4
- package/{esm2020 → esm2022}/src/directives/checkbox_value_accessor.mjs +4 -4
- package/{esm2020 → esm2022}/src/directives/control_value_accessor.mjs +7 -7
- package/{esm2020 → esm2022}/src/directives/default_value_accessor.mjs +4 -4
- package/{esm2020 → esm2022}/src/directives/ng_control_status.mjs +7 -7
- package/{esm2020 → esm2022}/src/directives/ng_form.mjs +4 -4
- package/esm2022/src/directives/ng_model.mjs +332 -0
- package/esm2022/src/directives/ng_model_group.mjs +95 -0
- package/{esm2020 → esm2022}/src/directives/ng_no_validate_directive.mjs +4 -4
- package/{esm2020 → esm2022}/src/directives/number_value_accessor.mjs +4 -4
- package/{esm2020 → esm2022}/src/directives/radio_control_value_accessor.mjs +11 -11
- package/{esm2020 → esm2022}/src/directives/range_value_accessor.mjs +4 -4
- package/esm2022/src/directives/reactive_directives/form_control_directive.mjs +185 -0
- package/esm2022/src/directives/reactive_directives/form_control_name.mjs +219 -0
- package/{esm2020 → esm2022}/src/directives/reactive_directives/form_group_directive.mjs +4 -4
- package/esm2022/src/directives/reactive_directives/form_group_name.mjs +247 -0
- package/{esm2020 → esm2022}/src/directives/select_control_value_accessor.mjs +7 -7
- package/{esm2020 → esm2022}/src/directives/select_multiple_control_value_accessor.mjs +7 -7
- package/{esm2020 → esm2022}/src/directives/validators.mjs +28 -28
- package/{esm2020 → esm2022}/src/directives.mjs +43 -43
- package/esm2022/src/form_builder.mjs +259 -0
- package/{esm2020 → esm2022}/src/form_providers.mjs +9 -9
- package/esm2022/src/model/abstract_model.mjs +939 -0
- package/esm2022/src/validators.mjs +678 -0
- package/{esm2020 → esm2022}/src/version.mjs +1 -1
- package/{fesm2020 → fesm2022}/forms.mjs +228 -187
- package/fesm2022/forms.mjs.map +1 -0
- package/index.d.ts +13 -3
- package/package.json +8 -14
- package/esm2020/src/directives/ng_model.mjs +0 -326
- package/esm2020/src/directives/ng_model_group.mjs +0 -89
- package/esm2020/src/directives/reactive_directives/form_control_directive.mjs +0 -185
- package/esm2020/src/directives/reactive_directives/form_control_name.mjs +0 -209
- package/esm2020/src/directives/reactive_directives/form_group_name.mjs +0 -227
- package/esm2020/src/form_builder.mjs +0 -259
- package/esm2020/src/model/abstract_model.mjs +0 -939
- package/esm2020/src/validators.mjs +0 -679
- package/fesm2015/forms.mjs +0 -7272
- package/fesm2015/forms.mjs.map +0 -1
- package/fesm2020/forms.mjs.map +0 -1
- /package/{esm2020 → esm2022}/forms.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/abstract_control_directive.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/control_container.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/error_examples.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/form_interface.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/ng_control.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/reactive_errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/shared.mjs +0 -0
- /package/{esm2020 → esm2022}/src/directives/template_driven_errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/errors.mjs +0 -0
- /package/{esm2020 → esm2022}/src/forms.mjs +0 -0
- /package/{esm2020 → esm2022}/src/model/form_array.mjs +0 -0
- /package/{esm2020 → esm2022}/src/model/form_control.mjs +0 -0
- /package/{esm2020 → esm2022}/src/model/form_group.mjs +0 -0
- /package/{esm2020 → esm2022}/src/util.mjs +0 -0
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v16.0.0-next.
|
|
2
|
+
* @license Angular v16.0.0-next.6
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -4675,6 +4675,10 @@ declare const SHARED_FORM_DIRECTIVES: Type<any>[];
|
|
|
4675
4675
|
|
|
4676
4676
|
declare const TEMPLATE_DRIVEN_DIRECTIVES: Type<any>[];
|
|
4677
4677
|
|
|
4678
|
+
declare interface UnsafeValidatorFn {
|
|
4679
|
+
(control: AbstractControl): ValidationErrors | null;
|
|
4680
|
+
}
|
|
4681
|
+
|
|
4678
4682
|
/**
|
|
4679
4683
|
* UntypedFormArray is a non-strongly-typed version of `FormArray`, which
|
|
4680
4684
|
* permits heterogenous controls.
|
|
@@ -4816,17 +4820,23 @@ export declare interface Validator {
|
|
|
4816
4820
|
/**
|
|
4817
4821
|
* The union of all validator types that can be accepted by a ControlConfig.
|
|
4818
4822
|
*/
|
|
4819
|
-
declare type ValidatorConfig =
|
|
4823
|
+
declare type ValidatorConfig = UnsafeValidatorFn | AsyncValidatorFn | UnsafeValidatorFn[] | AsyncValidatorFn[];
|
|
4820
4824
|
|
|
4821
4825
|
/**
|
|
4822
4826
|
* @description
|
|
4823
4827
|
* A function that receives a control and synchronously returns a map of
|
|
4824
4828
|
* validation errors if present, otherwise null.
|
|
4825
4829
|
*
|
|
4830
|
+
* Error objects with a `then` key or a `subscribe` key are not valid.
|
|
4831
|
+
* They describe an async validator returning respectively a Promise or an Observable.
|
|
4832
|
+
*
|
|
4826
4833
|
* @publicApi
|
|
4827
4834
|
*/
|
|
4828
4835
|
export declare interface ValidatorFn {
|
|
4829
|
-
(control: AbstractControl): ValidationErrors
|
|
4836
|
+
(control: AbstractControl): (ValidationErrors & {
|
|
4837
|
+
then?: never;
|
|
4838
|
+
subscribe?: never;
|
|
4839
|
+
}) | null;
|
|
4830
4840
|
}
|
|
4831
4841
|
|
|
4832
4842
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/forms",
|
|
3
|
-
"version": "16.0.0-next.
|
|
3
|
+
"version": "16.0.0-next.6",
|
|
4
4
|
"description": "Angular - directives and services for creating forms",
|
|
5
5
|
"author": "angular",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"tslib": "^2.3.0"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
|
-
"@angular/core": "16.0.0-next.
|
|
15
|
-
"@angular/common": "16.0.0-next.
|
|
16
|
-
"@angular/platform-browser": "16.0.0-next.
|
|
14
|
+
"@angular/core": "16.0.0-next.6",
|
|
15
|
+
"@angular/common": "16.0.0-next.6",
|
|
16
|
+
"@angular/platform-browser": "16.0.0-next.6",
|
|
17
17
|
"rxjs": "^6.5.3 || ^7.4.0"
|
|
18
18
|
},
|
|
19
19
|
"repository": {
|
|
@@ -42,12 +42,8 @@
|
|
|
42
42
|
]
|
|
43
43
|
},
|
|
44
44
|
"sideEffects": false,
|
|
45
|
-
"
|
|
46
|
-
"fesm2015": "./fesm2015/forms.mjs",
|
|
47
|
-
"esm2020": "./esm2020/forms.mjs",
|
|
45
|
+
"module": "./fesm2022/forms.mjs",
|
|
48
46
|
"typings": "./index.d.ts",
|
|
49
|
-
"module": "./fesm2015/forms.mjs",
|
|
50
|
-
"es2020": "./fesm2020/forms.mjs",
|
|
51
47
|
"type": "module",
|
|
52
48
|
"exports": {
|
|
53
49
|
"./package.json": {
|
|
@@ -55,11 +51,9 @@
|
|
|
55
51
|
},
|
|
56
52
|
".": {
|
|
57
53
|
"types": "./index.d.ts",
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"node": "./fesm2015/forms.mjs",
|
|
62
|
-
"default": "./fesm2020/forms.mjs"
|
|
54
|
+
"esm2022": "./esm2022/forms.mjs",
|
|
55
|
+
"esm": "./esm2022/forms.mjs",
|
|
56
|
+
"default": "./fesm2022/forms.mjs"
|
|
63
57
|
}
|
|
64
58
|
}
|
|
65
59
|
}
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { ChangeDetectorRef, Directive, EventEmitter, forwardRef, Host, Inject, Input, Optional, Output, Self, ɵcoerceToBoolean as coerceToBoolean } from '@angular/core';
|
|
9
|
-
import { FormControl } from '../model/form_control';
|
|
10
|
-
import { NG_ASYNC_VALIDATORS, NG_VALIDATORS } from '../validators';
|
|
11
|
-
import { AbstractFormGroupDirective } from './abstract_form_group_directive';
|
|
12
|
-
import { ControlContainer } from './control_container';
|
|
13
|
-
import { NG_VALUE_ACCESSOR } from './control_value_accessor';
|
|
14
|
-
import { NgControl } from './ng_control';
|
|
15
|
-
import { NgForm } from './ng_form';
|
|
16
|
-
import { NgModelGroup } from './ng_model_group';
|
|
17
|
-
import { CALL_SET_DISABLED_STATE, controlPath, isPropertyUpdated, selectValueAccessor, setUpControl } from './shared';
|
|
18
|
-
import { formGroupNameException, missingNameException, modelParentException } from './template_driven_errors';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
import * as i1 from "./control_container";
|
|
21
|
-
const formControlBinding = {
|
|
22
|
-
provide: NgControl,
|
|
23
|
-
useExisting: forwardRef(() => NgModel)
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* `ngModel` forces an additional change detection run when its inputs change:
|
|
27
|
-
* E.g.:
|
|
28
|
-
* ```
|
|
29
|
-
* <div>{{myModel.valid}}</div>
|
|
30
|
-
* <input [(ngModel)]="myValue" #myModel="ngModel">
|
|
31
|
-
* ```
|
|
32
|
-
* I.e. `ngModel` can export itself on the element and then be used in the template.
|
|
33
|
-
* Normally, this would result in expressions before the `input` that use the exported directive
|
|
34
|
-
* to have an old value as they have been
|
|
35
|
-
* dirty checked before. As this is a very common case for `ngModel`, we added this second change
|
|
36
|
-
* detection run.
|
|
37
|
-
*
|
|
38
|
-
* Notes:
|
|
39
|
-
* - this is just one extra run no matter how many `ngModel`s have been changed.
|
|
40
|
-
* - this is a general problem when using `exportAs` for directives!
|
|
41
|
-
*/
|
|
42
|
-
const resolvedPromise = (() => Promise.resolve())();
|
|
43
|
-
/**
|
|
44
|
-
* @description
|
|
45
|
-
* Creates a `FormControl` instance from a domain model and binds it
|
|
46
|
-
* to a form control element.
|
|
47
|
-
*
|
|
48
|
-
* The `FormControl` instance tracks the value, user interaction, and
|
|
49
|
-
* validation status of the control and keeps the view synced with the model. If used
|
|
50
|
-
* within a parent form, the directive also registers itself with the form as a child
|
|
51
|
-
* control.
|
|
52
|
-
*
|
|
53
|
-
* This directive is used by itself or as part of a larger form. Use the
|
|
54
|
-
* `ngModel` selector to activate it.
|
|
55
|
-
*
|
|
56
|
-
* It accepts a domain model as an optional `Input`. If you have a one-way binding
|
|
57
|
-
* to `ngModel` with `[]` syntax, changing the domain model's value in the component
|
|
58
|
-
* class sets the value in the view. If you have a two-way binding with `[()]` syntax
|
|
59
|
-
* (also known as 'banana-in-a-box syntax'), the value in the UI always syncs back to
|
|
60
|
-
* the domain model in your class.
|
|
61
|
-
*
|
|
62
|
-
* To inspect the properties of the associated `FormControl` (like the validity state),
|
|
63
|
-
* export the directive into a local template variable using `ngModel` as the key (ex:
|
|
64
|
-
* `#myVar="ngModel"`). You can then access the control using the directive's `control` property.
|
|
65
|
-
* However, the most commonly used properties (like `valid` and `dirty`) also exist on the control
|
|
66
|
-
* for direct access. See a full list of properties directly available in
|
|
67
|
-
* `AbstractControlDirective`.
|
|
68
|
-
*
|
|
69
|
-
* @see `RadioControlValueAccessor`
|
|
70
|
-
* @see `SelectControlValueAccessor`
|
|
71
|
-
*
|
|
72
|
-
* @usageNotes
|
|
73
|
-
*
|
|
74
|
-
* ### Using ngModel on a standalone control
|
|
75
|
-
*
|
|
76
|
-
* The following examples show a simple standalone control using `ngModel`:
|
|
77
|
-
*
|
|
78
|
-
* {@example forms/ts/simpleNgModel/simple_ng_model_example.ts region='Component'}
|
|
79
|
-
*
|
|
80
|
-
* When using the `ngModel` within `<form>` tags, you'll also need to supply a `name` attribute
|
|
81
|
-
* so that the control can be registered with the parent form under that name.
|
|
82
|
-
*
|
|
83
|
-
* In the context of a parent form, it's often unnecessary to include one-way or two-way binding,
|
|
84
|
-
* as the parent form syncs the value for you. You access its properties by exporting it into a
|
|
85
|
-
* local template variable using `ngForm` such as (`#f="ngForm"`). Use the variable where
|
|
86
|
-
* needed on form submission.
|
|
87
|
-
*
|
|
88
|
-
* If you do need to populate initial values into your form, using a one-way binding for
|
|
89
|
-
* `ngModel` tends to be sufficient as long as you use the exported form's value rather
|
|
90
|
-
* than the domain model's value on submit.
|
|
91
|
-
*
|
|
92
|
-
* ### Using ngModel within a form
|
|
93
|
-
*
|
|
94
|
-
* The following example shows controls using `ngModel` within a form:
|
|
95
|
-
*
|
|
96
|
-
* {@example forms/ts/simpleForm/simple_form_example.ts region='Component'}
|
|
97
|
-
*
|
|
98
|
-
* ### Using a standalone ngModel within a group
|
|
99
|
-
*
|
|
100
|
-
* The following example shows you how to use a standalone ngModel control
|
|
101
|
-
* within a form. This controls the display of the form, but doesn't contain form data.
|
|
102
|
-
*
|
|
103
|
-
* ```html
|
|
104
|
-
* <form>
|
|
105
|
-
* <input name="login" ngModel placeholder="Login">
|
|
106
|
-
* <input type="checkbox" ngModel [ngModelOptions]="{standalone: true}"> Show more options?
|
|
107
|
-
* </form>
|
|
108
|
-
* <!-- form value: {login: ''} -->
|
|
109
|
-
* ```
|
|
110
|
-
*
|
|
111
|
-
* ### Setting the ngModel `name` attribute through options
|
|
112
|
-
*
|
|
113
|
-
* The following example shows you an alternate way to set the name attribute. Here,
|
|
114
|
-
* an attribute identified as name is used within a custom form control component. To still be able
|
|
115
|
-
* to specify the NgModel's name, you must specify it using the `ngModelOptions` input instead.
|
|
116
|
-
*
|
|
117
|
-
* ```html
|
|
118
|
-
* <form>
|
|
119
|
-
* <my-custom-form-control name="Nancy" ngModel [ngModelOptions]="{name: 'user'}">
|
|
120
|
-
* </my-custom-form-control>
|
|
121
|
-
* </form>
|
|
122
|
-
* <!-- form value: {user: ''} -->
|
|
123
|
-
* ```
|
|
124
|
-
*
|
|
125
|
-
* @ngModule FormsModule
|
|
126
|
-
* @publicApi
|
|
127
|
-
*/
|
|
128
|
-
class NgModel extends NgControl {
|
|
129
|
-
constructor(parent, validators, asyncValidators, valueAccessors, _changeDetectorRef, callSetDisabledState) {
|
|
130
|
-
super();
|
|
131
|
-
this._changeDetectorRef = _changeDetectorRef;
|
|
132
|
-
this.callSetDisabledState = callSetDisabledState;
|
|
133
|
-
this.control = new FormControl();
|
|
134
|
-
/** @internal */
|
|
135
|
-
this._registered = false;
|
|
136
|
-
/**
|
|
137
|
-
* @description
|
|
138
|
-
* Event emitter for producing the `ngModelChange` event after
|
|
139
|
-
* the view model updates.
|
|
140
|
-
*/
|
|
141
|
-
this.update = new EventEmitter();
|
|
142
|
-
this._parent = parent;
|
|
143
|
-
this._setValidators(validators);
|
|
144
|
-
this._setAsyncValidators(asyncValidators);
|
|
145
|
-
this.valueAccessor = selectValueAccessor(this, valueAccessors);
|
|
146
|
-
}
|
|
147
|
-
/** @nodoc */
|
|
148
|
-
ngOnChanges(changes) {
|
|
149
|
-
this._checkForErrors();
|
|
150
|
-
if (!this._registered || 'name' in changes) {
|
|
151
|
-
if (this._registered) {
|
|
152
|
-
this._checkName();
|
|
153
|
-
if (this.formDirective) {
|
|
154
|
-
// We can't call `formDirective.removeControl(this)`, because the `name` has already been
|
|
155
|
-
// changed. We also can't reset the name temporarily since the logic in `removeControl`
|
|
156
|
-
// is inside a promise and it won't run immediately. We work around it by giving it an
|
|
157
|
-
// object with the same shape instead.
|
|
158
|
-
const oldName = changes['name'].previousValue;
|
|
159
|
-
this.formDirective.removeControl({ name: oldName, path: this._getPath(oldName) });
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
this._setUpControl();
|
|
163
|
-
}
|
|
164
|
-
if ('isDisabled' in changes) {
|
|
165
|
-
this._updateDisabled(changes);
|
|
166
|
-
}
|
|
167
|
-
if (isPropertyUpdated(changes, this.viewModel)) {
|
|
168
|
-
this._updateValue(this.model);
|
|
169
|
-
this.viewModel = this.model;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/** @nodoc */
|
|
173
|
-
ngOnDestroy() {
|
|
174
|
-
this.formDirective && this.formDirective.removeControl(this);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* @description
|
|
178
|
-
* Returns an array that represents the path from the top-level form to this control.
|
|
179
|
-
* Each index is the string name of the control on that level.
|
|
180
|
-
*/
|
|
181
|
-
get path() {
|
|
182
|
-
return this._getPath(this.name);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* @description
|
|
186
|
-
* The top-level directive for this control if present, otherwise null.
|
|
187
|
-
*/
|
|
188
|
-
get formDirective() {
|
|
189
|
-
return this._parent ? this._parent.formDirective : null;
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* @description
|
|
193
|
-
* Sets the new value for the view model and emits an `ngModelChange` event.
|
|
194
|
-
*
|
|
195
|
-
* @param newValue The new value emitted by `ngModelChange`.
|
|
196
|
-
*/
|
|
197
|
-
viewToModelUpdate(newValue) {
|
|
198
|
-
this.viewModel = newValue;
|
|
199
|
-
this.update.emit(newValue);
|
|
200
|
-
}
|
|
201
|
-
_setUpControl() {
|
|
202
|
-
this._setUpdateStrategy();
|
|
203
|
-
this._isStandalone() ? this._setUpStandalone() : this.formDirective.addControl(this);
|
|
204
|
-
this._registered = true;
|
|
205
|
-
}
|
|
206
|
-
_setUpdateStrategy() {
|
|
207
|
-
if (this.options && this.options.updateOn != null) {
|
|
208
|
-
this.control._updateOn = this.options.updateOn;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
_isStandalone() {
|
|
212
|
-
return !this._parent || !!(this.options && this.options.standalone);
|
|
213
|
-
}
|
|
214
|
-
_setUpStandalone() {
|
|
215
|
-
setUpControl(this.control, this, this.callSetDisabledState);
|
|
216
|
-
this.control.updateValueAndValidity({ emitEvent: false });
|
|
217
|
-
}
|
|
218
|
-
_checkForErrors() {
|
|
219
|
-
if (!this._isStandalone()) {
|
|
220
|
-
this._checkParentType();
|
|
221
|
-
}
|
|
222
|
-
this._checkName();
|
|
223
|
-
}
|
|
224
|
-
_checkParentType() {
|
|
225
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
226
|
-
if (!(this._parent instanceof NgModelGroup) &&
|
|
227
|
-
this._parent instanceof AbstractFormGroupDirective) {
|
|
228
|
-
throw formGroupNameException();
|
|
229
|
-
}
|
|
230
|
-
else if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm)) {
|
|
231
|
-
throw modelParentException();
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
_checkName() {
|
|
236
|
-
if (this.options && this.options.name)
|
|
237
|
-
this.name = this.options.name;
|
|
238
|
-
if (!this._isStandalone() && !this.name && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
239
|
-
throw missingNameException();
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
_updateValue(value) {
|
|
243
|
-
resolvedPromise.then(() => {
|
|
244
|
-
this.control.setValue(value, { emitViewToModelChange: false });
|
|
245
|
-
this._changeDetectorRef?.markForCheck();
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
_updateDisabled(changes) {
|
|
249
|
-
const disabledValue = changes['isDisabled'].currentValue;
|
|
250
|
-
// checking for 0 to avoid breaking change
|
|
251
|
-
const isDisabled = disabledValue !== 0 && coerceToBoolean(disabledValue);
|
|
252
|
-
resolvedPromise.then(() => {
|
|
253
|
-
if (isDisabled && !this.control.disabled) {
|
|
254
|
-
this.control.disable();
|
|
255
|
-
}
|
|
256
|
-
else if (!isDisabled && this.control.disabled) {
|
|
257
|
-
this.control.enable();
|
|
258
|
-
}
|
|
259
|
-
this._changeDetectorRef?.markForCheck();
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
_getPath(controlName) {
|
|
263
|
-
return this._parent ? controlPath(controlName, this._parent) : [controlName];
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
NgModel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.4", ngImport: i0, type: NgModel, deps: [{ token: i1.ControlContainer, host: true, optional: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }, { token: NG_VALUE_ACCESSOR, optional: true, self: true }, { token: ChangeDetectorRef, optional: true }, { token: CALL_SET_DISABLED_STATE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
267
|
-
NgModel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.4", type: NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: { name: "name", isDisabled: ["disabled", "isDisabled"], model: ["ngModel", "model"], options: ["ngModelOptions", "options"] }, outputs: { update: "ngModelChange" }, providers: [formControlBinding], exportAs: ["ngModel"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
268
|
-
export { NgModel };
|
|
269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.4", ngImport: i0, type: NgModel, decorators: [{
|
|
270
|
-
type: Directive,
|
|
271
|
-
args: [{
|
|
272
|
-
selector: '[ngModel]:not([formControlName]):not([formControl])',
|
|
273
|
-
providers: [formControlBinding],
|
|
274
|
-
exportAs: 'ngModel'
|
|
275
|
-
}]
|
|
276
|
-
}], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
|
|
277
|
-
type: Optional
|
|
278
|
-
}, {
|
|
279
|
-
type: Host
|
|
280
|
-
}] }, { type: undefined, decorators: [{
|
|
281
|
-
type: Optional
|
|
282
|
-
}, {
|
|
283
|
-
type: Self
|
|
284
|
-
}, {
|
|
285
|
-
type: Inject,
|
|
286
|
-
args: [NG_VALIDATORS]
|
|
287
|
-
}] }, { type: undefined, decorators: [{
|
|
288
|
-
type: Optional
|
|
289
|
-
}, {
|
|
290
|
-
type: Self
|
|
291
|
-
}, {
|
|
292
|
-
type: Inject,
|
|
293
|
-
args: [NG_ASYNC_VALIDATORS]
|
|
294
|
-
}] }, { type: undefined, decorators: [{
|
|
295
|
-
type: Optional
|
|
296
|
-
}, {
|
|
297
|
-
type: Self
|
|
298
|
-
}, {
|
|
299
|
-
type: Inject,
|
|
300
|
-
args: [NG_VALUE_ACCESSOR]
|
|
301
|
-
}] }, { type: i0.ChangeDetectorRef, decorators: [{
|
|
302
|
-
type: Optional
|
|
303
|
-
}, {
|
|
304
|
-
type: Inject,
|
|
305
|
-
args: [ChangeDetectorRef]
|
|
306
|
-
}] }, { type: undefined, decorators: [{
|
|
307
|
-
type: Optional
|
|
308
|
-
}, {
|
|
309
|
-
type: Inject,
|
|
310
|
-
args: [CALL_SET_DISABLED_STATE]
|
|
311
|
-
}] }]; }, propDecorators: { name: [{
|
|
312
|
-
type: Input
|
|
313
|
-
}], isDisabled: [{
|
|
314
|
-
type: Input,
|
|
315
|
-
args: ['disabled']
|
|
316
|
-
}], model: [{
|
|
317
|
-
type: Input,
|
|
318
|
-
args: ['ngModel']
|
|
319
|
-
}], options: [{
|
|
320
|
-
type: Input,
|
|
321
|
-
args: ['ngModelOptions']
|
|
322
|
-
}], update: [{
|
|
323
|
-
type: Output,
|
|
324
|
-
args: ['ngModelChange']
|
|
325
|
-
}] } });
|
|
326
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mb3Jtcy9zcmMvZGlyZWN0aXZlcy9uZ19tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXdCLFFBQVEsRUFBRSxNQUFNLEVBQVksSUFBSSxFQUFpQixnQkFBZ0IsSUFBSSxlQUFlLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHdE4sT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUF1QixpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2pGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBMEIsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzVJLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7QUFHNUcsTUFBTSxrQkFBa0IsR0FBYTtJQUNuQyxPQUFPLEVBQUUsU0FBUztJQUNsQixXQUFXLEVBQUUsVUFB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QUMsYUFBYTs7MEJBQ3hDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1COzswQkFFOUMsUUFBUTs7MEJBQUksSUFBSTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUM1QyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3BDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsdUJBQXVCOzRDQWhEN0IsSUFBSTtzQkFBckIsS0FBSztnQkFPYSxVQUFVO3NCQUE1QixLQUFLO3VCQUFDLFVBQVU7Z0JBTUMsS0FBSztzQkFBdEIsS0FBSzt1QkFBQyxTQUFTO2dCQW1CUyxPQUFPO3NCQUEvQixLQUFLO3VCQUFDLGdCQUFnQjtnQkFPRSxNQUFNO3NCQUE5QixNQUFNO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3QsIEluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPcHRpb25hbCwgT3V0cHV0LCBQcm92aWRlciwgU2VsZiwgU2ltcGxlQ2hhbmdlcywgybVjb2VyY2VUb0Jvb2xlYW4gYXMgY29lcmNlVG9Cb29sZWFufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtGb3JtSG9va3N9IGZyb20gJy4uL21vZGVsL2Fic3RyYWN0X21vZGVsJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJy4uL21vZGVsL2Zvcm1fY29udHJvbCc7XG5pbXBvcnQge05HX0FTWU5DX1ZBTElEQVRPUlMsIE5HX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQge0Fic3RyYWN0Rm9ybUdyb3VwRGlyZWN0aXZlfSBmcm9tICcuL2Fic3RyYWN0X2Zvcm1fZ3JvdXBfZGlyZWN0aXZlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnLi9jb250cm9sX3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICcuL25nX2NvbnRyb2wnO1xuaW1wb3J0IHtOZ0Zvcm19IGZyb20gJy4vbmdfZm9ybSc7XG5pbXBvcnQge05nTW9kZWxHcm91cH0gZnJvbSAnLi9uZ19tb2RlbF9ncm91cCc7XG5pbXBvcnQge0NBTExfU0VUX0RJU0FCTEVEX1NUQVRFLCBjb250cm9sUGF0aCwgaXNQcm9wZXJ0eVVwZGF0ZWQsIHNlbGVjdFZhbHVlQWNjZXNzb3IsIFNldERpc2FibGVkU3RhdGVPcHRpb24sIHNldFVwQ29udHJvbH0gZnJvbSAnLi9zaGFyZWQnO1xuaW1wb3J0IHtmb3JtR3JvdXBOYW1lRXhjZXB0aW9uLCBtaXNzaW5nTmFtZUV4Y2VwdGlvbiwgbW9kZWxQYXJlbnRFeGNlcHRpb259IGZyb20gJy4vdGVtcGxhdGVfZHJpdmVuX2Vycm9ycyc7XG5pbXBvcnQge0FzeW5jVmFsaWRhdG9yLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3IsIFZhbGlkYXRvckZufSBmcm9tICcuL3ZhbGlkYXRvcnMnO1xuXG5jb25zdCBmb3JtQ29udHJvbEJpbmRpbmc6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOZ0NvbnRyb2wsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE5nTW9kZWwpXG59O1xuXG4vKipcbiAqIGBuZ01vZGVsYCBmb3JjZXMgYW4gYWRkaXRpb25hbCBjaGFuZ2UgZGV0ZWN0aW9uIHJ1biB3aGVuIGl0cyBpbnB1dHMgY2hhbmdlOlxuICogRS5nLjpcbiAqIGBgYFxuICogPGRpdj57e215TW9kZWwudmFsaWR9fTwvZGl2PlxuICogPGlucHV0IFsobmdNb2RlbCldPVwibXlWYWx1ZVwiICNteU1vZGVsPVwibmdNb2RlbFwiPlxuICogYGBgXG4gKiBJLmUuIGBuZ01vZGVsYCBjYW4gZXhwb3J0IGl0c2VsZiBvbiB0aGUgZWxlbWVudCBhbmQgdGhlbiBiZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZS5cbiAqIE5vcm1hbGx5LCB0aGlzIHdvdWxkIHJlc3VsdCBpbiBleHByZXNzaW9ucyBiZWZvcmUgdGhlIGBpbnB1dGAgdGhhdCB1c2UgdGhlIGV4cG9ydGVkIGRpcmVjdGl2ZVxuICogdG8gaGF2ZSBhbiBvbGQgdmFsdWUgYXMgdGhleSBoYXZlIGJlZW5cbiAqIGRpcnR5IGNoZWNrZWQgYmVmb3JlLiBBcyB0aGlzIGlzIGEgdmVyeSBjb21tb24gY2FzZSBmb3IgYG5nTW9kZWxgLCB3ZSBhZGRlZCB0aGlzIHNlY29uZCBjaGFuZ2VcbiAqIGRldGVjdGlvbiBydW4uXG4gKlxuICogTm90ZXM6XG4gKiAtIHRoaXMgaXMganVzdCBvbmUgZXh0cmEgcnVuIG5vIG1hdHRlciBob3cgbWFueSBgbmdNb2RlbGBzIGhhdmUgYmVlbiBjaGFuZ2VkLlxuICogLSB0aGlzIGlzIGEgZ2VuZXJhbCBwcm9ibGVtIHdoZW4gdXNpbmcgYGV4cG9ydEFzYCBmb3IgZGlyZWN0aXZlcyFcbiAqL1xuY29uc3QgcmVzb2x2ZWRQcm9taXNlID0gKCgpID0+IFByb21pc2UucmVzb2x2ZSgpKSgpO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQ3JlYXRlcyBhIGBGb3JtQ29udHJvbGAgaW5zdGFuY2UgZnJvbSBhIGRvbWFpbiBtb2RlbCBhbmQgYmluZHMgaXRcbiAqIHRvIGEgZm9ybSBjb250cm9sIGVsZW1lbnQuXG4gKlxuICogVGhlIGBGb3JtQ29udHJvbGAgaW5zdGFuY2UgdHJhY2tzIHRoZSB2YWx1ZSwgdXNlciBpbnRlcmFjdGlvbiwgYW5kXG4gKiB2YWxpZGF0aW9uIHN0YXR1cyBvZiB0aGUgY29udHJvbCBhbmQga2VlcHMgdGhlIHZpZXcgc3luY2VkIHdpdGggdGhlIG1vZGVsLiBJZiB1c2VkXG4gKiB3aXRoaW4gYSBwYXJlbnQgZm9ybSwgdGhlIGRpcmVjdGl2ZSBhbHNvIHJlZ2lzdGVycyBpdHNlbGYgd2l0aCB0aGUgZm9ybSBhcyBhIGNoaWxkXG4gKiBjb250cm9sLlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIGlzIHVzZWQgYnkgaXRzZWxmIG9yIGFzIHBhcnQgb2YgYSBsYXJnZXIgZm9ybS4gVXNlIHRoZVxuICogYG5nTW9kZWxgIHNlbGVjdG9yIHRvIGFjdGl2YXRlIGl0LlxuICpcbiAqIEl0IGFjY2VwdHMgYSBkb21haW4gbW9kZWwgYXMgYW4gb3B0aW9uYWwgYElucHV0YC4gSWYgeW91IGhhdmUgYSBvbmUtd2F5IGJpbmRpbmdcbiAqIHRvIGBuZ01vZGVsYCB3aXRoIGBbXWAgc3ludGF4LCBjaGFuZ2luZyB0aGUgZG9tYWluIG1vZGVsJ3MgdmFsdWUgaW4gdGhlIGNvbXBvbmVudFxuICogY2xhc3Mgc2V0cyB0aGUgdmFsdWUgaW4gdGhlIHZpZXcuIElmIHlvdSBoYXZlIGEgdHdvLXdheSBiaW5kaW5nIHdpdGggYFsoKV1gIHN5bnRheFxuICogKGFsc28ga25vd24gYXMgJ2JhbmFuYS1pbi1hLWJveCBzeW50YXgnKSwgdGhlIHZhbHVlIGluIHRoZSBVSSBhbHdheXMgc3luY3MgYmFjayB0b1xuICogdGhlIGRvbWFpbiBtb2RlbCBpbiB5b3VyIGNsYXNzLlxuICpcbiAqIFRvIGluc3BlY3QgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFzc29jaWF0ZWQgYEZvcm1Db250cm9sYCAobGlrZSB0aGUgdmFsaWRpdHkgc3RhdGUpLFxuICogZXhwb3J0IHRoZSBkaXJlY3RpdmUgaW50byBhIGxvY2FsIHRlbXBsYXRlIHZhcmlhYmxlIHVzaW5nIGBuZ01vZGVsYCBhcyB0aGUga2V5IChleDpcbiAqIGAjbXlWYXI9XCJuZ01vZGVsXCJgKS4gWW91IGNhbiB0aGVuIGFjY2VzcyB0aGUgY29udHJvbCB1c2luZyB0aGUgZGlyZWN0aXZlJ3MgYGNvbnRyb2xgIHByb3BlcnR5LlxuICogSG93ZXZlciwgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBwcm9wZXJ0aWVzIChsaWtlIGB2YWxpZGAgYW5kIGBkaXJ0eWApIGFsc28gZXhpc3Qgb24gdGhlIGNvbnRyb2xcbiAqIGZvciBkaXJlY3QgYWNjZXNzLiBTZWUgYSBmdWxsIGxpc3Qgb2YgcHJvcGVydGllcyBkaXJlY3RseSBhdmFpbGFibGUgaW5cbiAqIGBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmVgLlxuICpcbiAqIEBzZWUgYFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3JgXG4gKiBAc2VlIGBTZWxlY3RDb250cm9sVmFsdWVBY2Nlc3NvcmBcbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqICMjIyBVc2luZyBuZ01vZGVsIG9uIGEgc3RhbmRhbG9uZSBjb250cm9sXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlcyBzaG93IGEgc2ltcGxlIHN0YW5kYWxvbmUgY29udHJvbCB1c2luZyBgbmdNb2RlbGA6XG4gKlxuICoge0BleGFtcGxlIGZvcm1zL3RzL3NpbXBsZU5nTW9kZWwvc2ltcGxlX25nX21vZGVsX2V4YW1wbGUudHMgcmVnaW9uPSdDb21wb25lbnQnfVxuICpcbiAqIFdoZW4gdXNpbmcgdGhlIGBuZ01vZGVsYCB3aXRoaW4gYDxmb3JtPmAgdGFncywgeW91J2xsIGFsc28gbmVlZCB0byBzdXBwbHkgYSBgbmFtZWAgYXR0cmlidXRlXG4gKiBzbyB0aGF0IHRoZSBjb250cm9sIGNhbiBiZSByZWdpc3RlcmVkIHdpdGggdGhlIHBhcmVudCBmb3JtIHVuZGVyIHRoYXQgbmFtZS5cbiAqXG4gKiBJbiB0aGUgY29udGV4dCBvZiBhIHBhcmVudCBmb3JtLCBpdCdzIG9mdGVuIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgb25lLXdheSBvciB0d28td2F5IGJpbmRpbmcsXG4gKiBhcyB0aGUgcGFyZW50IGZvcm0gc3luY3MgdGhlIHZhbHVlIGZvciB5b3UuIFlvdSBhY2Nlc3MgaXRzIHByb3BlcnRpZXMgYnkgZXhwb3J0aW5nIGl0IGludG8gYVxuICogbG9jYWwgdGVtcGxhdGUgdmFyaWFibGUgdXNpbmcgYG5nRm9ybWAgc3VjaCBhcyAoYCNmPVwibmdGb3JtXCJgKS4gVXNlIHRoZSB2YXJpYWJsZSB3aGVyZVxuICogbmVlZGVkIG9uIGZvcm0gc3VibWlzc2lvbi5cbiAqXG4gKiBJZiB5b3UgZG8gbmVlZCB0byBwb3B1bGF0ZSBpbml0aWFsIHZhbHVlcyBpbnRvIHlvdXIgZm9ybSwgdXNpbmcgYSBvbmUtd2F5IGJpbmRpbmcgZm9yXG4gKiBgbmdNb2RlbGAgdGVuZHMgdG8gYmUgc3VmZmljaWVudCBhcyBsb25nIGFzIHlvdSB1c2UgdGhlIGV4cG9ydGVkIGZvcm0ncyB2YWx1ZSByYXRoZXJcbiAqIHRoYW4gdGhlIGRvbWFpbiBtb2RlbCdzIHZhbHVlIG9uIHN1Ym1pdC5cbiAqXG4gKiAjIyMgVXNpbmcgbmdNb2RlbCB3aXRoaW4gYSBmb3JtXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGNvbnRyb2xzIHVzaW5nIGBuZ01vZGVsYCB3aXRoaW4gYSBmb3JtOlxuICpcbiAqIHtAZXhhbXBsZSBmb3Jtcy90cy9zaW1wbGVGb3JtL3NpbXBsZV9mb3JtX2V4YW1wbGUudHMgcmVnaW9uPSdDb21wb25lbnQnfVxuICpcbiAqICMjIyBVc2luZyBhIHN0YW5kYWxvbmUgbmdNb2RlbCB3aXRoaW4gYSBncm91cFxuICpcbiAqIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyB5b3UgaG93IHRvIHVzZSBhIHN0YW5kYWxvbmUgbmdNb2RlbCBjb250cm9sXG4gKiB3aXRoaW4gYSBmb3JtLiBUaGlzIGNvbnRyb2xzIHRoZSBkaXNwbGF5IG9mIHRoZSBmb3JtLCBidXQgZG9lc24ndCBjb250YWluIGZvcm0gZGF0YS5cbiAqXG4gKiBgYGBodG1sXG4gKiA8Zm9ybT5cbiAqICAgPGlucHV0IG5hbWU9XCJsb2dpblwiIG5nTW9kZWwgcGxhY2Vob2xkZXI9XCJMb2dpblwiPlxuICogICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgbmdNb2RlbCBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+IFNob3cgbW9yZSBvcHRpb25zP1xuICogPC9mb3JtPlxuICogPCEtLSBmb3JtIHZhbHVlOiB7bG9naW46ICcnfSAtLT5cbiAqIGBgYFxuICpcbiAqICMjIyBTZXR0aW5nIHRoZSBuZ01vZGVsIGBuYW1lYCBhdHRyaWJ1dGUgdGhyb3VnaCBvcHRpb25zXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHlvdSBhbiBhbHRlcm5hdGUgd2F5IHRvIHNldCB0aGUgbmFtZSBhdHRyaWJ1dGUuIEhlcmUsXG4gKiBhbiBhdHRyaWJ1dGUgaWRlbnRpZmllZCBhcyBuYW1lIGlzIHVzZWQgd2l0aGluIGEgY3VzdG9tIGZvcm0gY29udHJvbCBjb21wb25lbnQuIFRvIHN0aWxsIGJlIGFibGVcbiAqIHRvIHNwZWNpZnkgdGhlIE5nTW9kZWwncyBuYW1lLCB5b3UgbXVzdCBzcGVjaWZ5IGl0IHVzaW5nIHRoZSBgbmdNb2RlbE9wdGlvbnNgIGlucHV0IGluc3RlYWQuXG4gKlxuICogYGBgaHRtbFxuICogPGZvcm0+XG4gKiAgIDxteS1jdXN0b20tZm9ybS1jb250cm9sIG5hbWU9XCJOYW5jeVwiIG5nTW9kZWwgW25nTW9kZWxPcHRpb25zXT1cIntuYW1lOiAndXNlcid9XCI+XG4gKiAgIDwvbXktY3VzdG9tLWZvcm0tY29udHJvbD5cbiAqIDwvZm9ybT5cbiAqIDwhLS0gZm9ybSB2YWx1ZToge3VzZXI6ICcnfSAtLT5cbiAqIGBgYFxuICpcbiAqIEBuZ01vZHVsZSBGb3Jtc01vZHVsZVxuICogQHB1YmxpY0FwaVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdNb2RlbF06bm90KFtmb3JtQ29udHJvbE5hbWVdKTpub3QoW2Zvcm1Db250cm9sXSknLFxuICBwcm92aWRlcnM6IFtmb3JtQ29udHJvbEJpbmRpbmddLFxuICBleHBvcnRBczogJ25nTW9kZWwnXG59KVxuZXhwb3J0IGNsYXNzIE5nTW9kZWwgZXh0ZW5kcyBOZ0NvbnRyb2wgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBvdmVycmlkZSByZWFkb25seSBjb250cm9sOiBGb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gIC8vIEF0IHJ1bnRpbWUgd2UgY29lcmNlIGFyYml0cmFyeSB2YWx1ZXMgYXNzaWduZWQgdG8gdGhlIFwiZGlzYWJsZWRcIiBpbnB1dCB0byBhIFwiYm9vbGVhblwiLlxuICAvLyBUaGlzIGlzIG5vdCByZWZsZWN0ZWQgaW4gdGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5IGJlY2F1c2Ugb3V0c2lkZSBvZiB0ZW1wbGF0ZXMsIGNvbnN1bWVyc1xuICAvLyBzaG91bGQgb25seSBkZWFsIHdpdGggYm9vbGVhbnMuIEluIHRlbXBsYXRlcywgYSBzdHJpbmcgaXMgYWxsb3dlZCBmb3IgY29udmVuaWVuY2UgYW5kIHRvXG4gIC8vIG1hdGNoIHRoZSBuYXRpdmUgXCJkaXNhYmxlZCBhdHRyaWJ1dGVcIiBzZW1hbnRpY3Mgd2hpY2ggY2FuIGJlIG9ic2VydmVkIG9uIGlucHV0IGVsZW1lbnRzLlxuICAvLyBUaGlzIHN0YXRpYyBtZW1iZXIgdGVsbHMgdGhlIGNvbXBpbGVyIHRoYXQgdmFsdWVzIG9mIHR5cGUgXCJzdHJpbmdcIiBjYW4gYWxzbyBiZSBhc3NpZ25lZFxuICAvLyB0byB0aGUgaW5wdXQgaW4gYSB0ZW1wbGF0ZS5cbiAgLyoqIEBub2RvYyAqL1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaXNEaXNhYmxlZDogYm9vbGVhbnxzdHJpbmc7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCByZWZlcmVuY2UgdG8gdGhlIHZpZXcgbW9kZWwgdmFsdWUuXG4gICAqIEBub2RvY1xuICAgKi9cbiAgdmlld01vZGVsOiBhbnk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUcmFja3MgdGhlIG5hbWUgYm91bmQgdG8gdGhlIGRpcmVjdGl2ZS4gSWYgYSBwYXJlbnQgZm9ybSBleGlzdHMsIGl0XG4gICAqIHVzZXMgdGhpcyBuYW1lIGFzIGEga2V5IHRvIHJldHJpZXZlIHRoaXMgY29udHJvbCdzIHZhbHVlLlxuICAgKi9cbiAgLy8gVE9ETyhpc3N1ZS8yNDU3MSk6IHJlbW92ZSAnIScuXG4gIEBJbnB1dCgpIG92ZXJyaWRlIG5hbWUhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUcmFja3Mgd2hldGhlciB0aGUgY29udHJvbCBpcyBkaXNhYmxlZC5cbiAgICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBASW5wdXQoJ2Rpc2FibGVkJykgaXNEaXNhYmxlZCE6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUcmFja3MgdGhlIHZhbHVlIGJvdW5kIHRvIHRoaXMgZGlyZWN0aXZlLlxuICAgKi9cbiAgQElucHV0KCduZ01vZGVsJykgbW9kZWw6IGFueTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRyYWNrcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIGBuZ01vZGVsYCBpbnN0YW5jZS5cbiAgICpcbiAgICogKipuYW1lKio6IEFuIGFsdGVybmF0aXZlIHRvIHNldHRpbmcgdGhlIG5hbWUgYXR0cmlidXRlIG9uIHRoZSBmb3JtIGNvbnRyb2wgZWxlbWVudC4gU2VlXG4gICAqIHRoZSBbZXhhbXBsZV0oYXBpL2Zvcm1zL05nTW9kZWwjdXNpbmctbmdtb2RlbC1vbi1hLXN0YW5kYWxvbmUtY29udHJvbCkgZm9yIHVzaW5nIGBOZ01vZGVsYFxuICAgKiBhcyBhIHN0YW5kYWxvbmUgY29udHJvbC5cbiAgICpcbiAgICogKipzdGFuZGFsb25lKio6IFdoZW4gc2V0IHRvIHRydWUsIHRoZSBgbmdNb2RlbGAgd2lsbCBub3QgcmVnaXN0ZXIgaXRzZWxmIHdpdGggaXRzIHBhcmVudCBmb3JtLFxuICAgKiBhbmQgYWN0cyBhcyBpZiBpdCdzIG5vdCBpbiB0aGUgZm9ybS4gRGVmYXVsdHMgdG8gZmFsc2UuIElmIG5vIHBhcmVudCBmb3JtIGV4aXN0cywgdGhpcyBvcHRpb25cbiAgICogaGFzIG5vIGVmZmVjdC5cbiAgICpcbiAgICogKip1cGRhdGVPbioqOiBEZWZpbmVzIHRoZSBldmVudCB1cG9uIHdoaWNoIHRoZSBmb3JtIGNvbnRyb2wgdmFsdWUgYW5kIHZhbGlkaXR5IHVwZGF0ZS5cbiAgICogRGVmYXVsdHMgdG8gJ2NoYW5nZScuIFBvc3NpYmxlIHZhbHVlczogYCdjaGFuZ2UnYCB8IGAnYmx1cidgIHwgYCdzdWJtaXQnYC5cbiAgICpcbiAgICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBASW5wdXQoJ25nTW9kZWxPcHRpb25zJykgb3B0aW9ucyE6IHtuYW1lPzogc3RyaW5nLCBzdGFuZGFsb25lPzogYm9vbGVhbiwgdXBkYXRlT24/OiBGb3JtSG9va3N9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRXZlbnQgZW1pdHRlciBmb3IgcHJvZHVjaW5nIHRoZSBgbmdNb2RlbENoYW5nZWAgZXZlbnQgYWZ0ZXJcbiAgICogdGhlIHZpZXcgbW9kZWwgdXBkYXRlcy5cbiAgICovXG4gIEBPdXRwdXQoJ25nTW9kZWxDaGFuZ2UnKSB1cGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgICBAT3B0aW9uYWwoKSBASG9zdCgpIHBhcmVudDogQ29udHJvbENvbnRhaW5lcixcbiAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19WQUxJREFUT1JTKSB2YWxpZGF0b3JzOiAoVmFsaWRhdG9yfFZhbGlkYXRvckZuKVtdLFxuICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX0FTWU5DX1ZBTElEQVRPUlMpIGFzeW5jVmFsaWRhdG9yczpcbiAgICAgICAgICAoQXN5bmNWYWxpZGF0b3J8QXN5bmNWYWxpZGF0b3JGbilbXSxcbiAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgQEluamVjdChOR19WQUxVRV9BQ0NFU1NPUikgdmFsdWVBY2Nlc3NvcnM6IENvbnRyb2xWYWx1ZUFjY2Vzc29yW10sXG4gICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZj86IENoYW5nZURldGVjdG9yUmVmfG51bGwsXG4gICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KENBTExfU0VUX0RJU0FCTEVEX1NUQVRFKSBwcml2YXRlIGNhbGxTZXREaXNhYmxlZFN0YXRlPzpcbiAgICAgICAgICBTZXREaXNhYmxlZFN0YXRlT3B0aW9uKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5fc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcbiAgICB0aGlzLnZhbHVlQWNjZXNzb3IgPSBzZWxlY3RWYWx1ZUFjY2Vzc29yKHRoaXMsIHZhbHVlQWNjZXNzb3JzKTtcbiAgfVxuXG4gIC8qKiBAbm9kb2MgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHRoaXMuX2NoZWNrRm9yRXJyb3JzKCk7XG4gICAgaWYgKCF0aGlzLl9yZWdpc3RlcmVkIHx8ICduYW1lJyBpbiBjaGFuZ2VzKSB7XG4gICAgICBpZiAodGhpcy5fcmVnaXN0ZXJlZCkge1xuICAgICAgICB0aGlzLl9jaGVja05hbWUoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybURpcmVjdGl2ZSkge1xuICAgICAgICAgIC8vIFdlIGNhbid0IGNhbGwgYGZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKWAsIGJlY2F1c2UgdGhlIGBuYW1lYCBoYXMgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgLy8gY2hhbmdlZC4gV2UgYWxzbyBjYW4ndCByZXNldCB0aGUgbmFtZSB0ZW1wb3JhcmlseSBzaW5jZSB0aGUgbG9naWMgaW4gYHJlbW92ZUNvbnRyb2xgXG4gICAgICAgICAgLy8gaXMgaW5zaWRlIGEgcHJvbWlzZSBhbmQgaXQgd29uJ3QgcnVuIGltbWVkaWF0ZWx5LiBXZSB3b3JrIGFyb3VuZCBpdCBieSBnaXZpbmcgaXQgYW5cbiAgICAgICAgICAvLyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZSBpbnN0ZWFkLlxuICAgICAgICAgIGNvbnN0IG9sZE5hbWUgPSBjaGFuZ2VzWyduYW1lJ10ucHJldmlvdXNWYWx1ZTtcbiAgICAgICAgICB0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh7bmFtZTogb2xkTmFtZSwgcGF0aDogdGhpcy5fZ2V0UGF0aChvbGROYW1lKX0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLl9zZXRVcENvbnRyb2woKTtcbiAgICB9XG4gICAgaWYgKCdpc0Rpc2FibGVkJyBpbiBjaGFuZ2VzKSB7XG4gICAgICB0aGlzLl91cGRhdGVEaXNhYmxlZChjaGFuZ2VzKTtcbiAgICB9XG5cbiAgICBpZiAoaXNQcm9wZXJ0eVVwZGF0ZWQoY2hhbmdlcywgdGhpcy52aWV3TW9kZWwpKSB7XG4gICAgICB0aGlzLl91cGRhdGVWYWx1ZSh0aGlzLm1vZGVsKTtcbiAgICAgIHRoaXMudmlld01vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICAvKiogQG5vZG9jICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURpcmVjdGl2ZSAmJiB0aGlzLmZvcm1EaXJlY3RpdmUucmVtb3ZlQ29udHJvbCh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmV0dXJucyBhbiBhcnJheSB0aGF0IHJlcHJlc2VudHMgdGhlIHBhdGggZnJvbSB0aGUgdG9wLWxldmVsIGZvcm0gdG8gdGhpcyBjb250cm9sLlxuICAgKiBFYWNoIGluZGV4IGlzIHRoZSBzdHJpbmcgbmFtZSBvZiB0aGUgY29udHJvbCBvbiB0aGF0IGxldmVsLlxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0IHBhdGgoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9nZXRQYXRoKHRoaXMubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0b3AtbGV2ZWwgZGlyZWN0aXZlIGZvciB0aGlzIGNvbnRyb2wgaWYgcHJlc2VudCwgb3RoZXJ3aXNlIG51bGwuXG4gICAqL1xuICBnZXQgZm9ybURpcmVjdGl2ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9wYXJlbnQgPyB0aGlzLl9wYXJlbnQuZm9ybURpcmVjdGl2ZSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIG5ldyB2YWx1ZSBmb3IgdGhlIHZpZXcgbW9kZWwgYW5kIGVtaXRzIGFuIGBuZ01vZGVsQ2hhbmdlYCBldmVudC5cbiAgICpcbiAgICogQHBhcmFtIG5ld1ZhbHVlIFRoZSBuZXcgdmFsdWUgZW1pdHRlZCBieSBgbmdNb2RlbENoYW5nZWAuXG4gICAqL1xuICBvdmVycmlkZSB2aWV3VG9Nb2RlbFVwZGF0ZShuZXdWYWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52aWV3TW9kZWwgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLnVwZGF0ZS5lbWl0KG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFVwQ29udHJvbCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZXRVcGRhdGVTdHJhdGVneSgpO1xuICAgIHRoaXMuX2lzU3RhbmRhbG9uZSgpID8gdGhpcy5fc2V0VXBTdGFuZGFsb25lKCkgOiB0aGlzLmZvcm1EaXJlY3RpdmUuYWRkQ29udHJvbCh0aGlzKTtcbiAgICB0aGlzLl9yZWdpc3RlcmVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldFVwZGF0ZVN0cmF0ZWd5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLnVwZGF0ZU9uICE9IG51bGwpIHtcbiAgICAgIHRoaXMuY29udHJvbC5fdXBkYXRlT24gPSB0aGlzLm9wdGlvbnMudXBkYXRlT247XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNTdGFuZGFsb25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fcGFyZW50IHx8ICEhKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuc3RhbmRhbG9uZSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRVcFN0YW5kYWxvbmUoKTogdm9pZCB7XG4gICAgc2V0VXBDb250cm9sKHRoaXMuY29udHJvbCwgdGhpcywgdGhpcy5jYWxsU2V0RGlzYWJsZWRTdGF0ZSk7XG4gICAgdGhpcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe2VtaXRFdmVudDogZmFsc2V9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrRm9yRXJyb3JzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNTdGFuZGFsb25lKCkpIHtcbiAgICAgIHRoaXMuX2NoZWNrUGFyZW50VHlwZSgpO1xuICAgIH1cbiAgICB0aGlzLl9jaGVja05hbWUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrUGFyZW50VHlwZSgpOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICBpZiAoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBOZ01vZGVsR3JvdXApICYmXG4gICAgICAgICAgdGhpcy5fcGFyZW50IGluc3RhbmNlb2YgQWJzdHJhY3RGb3JtR3JvdXBEaXJlY3RpdmUpIHtcbiAgICAgICAgdGhyb3cgZm9ybUdyb3VwTmFtZUV4Y2VwdGlvbigpO1xuICAgICAgfSBlbHNlIGlmICghKHRoaXMuX3BhcmVudCBpbnN0YW5jZW9mIE5nTW9kZWxHcm91cCkgJiYgISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBOZ0Zvcm0pKSB7XG4gICAgICAgIHRocm93IG1vZGVsUGFyZW50RXhjZXB0aW9uKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tOYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wdGlvbnMgJiYgdGhpcy5vcHRpb25zLm5hbWUpIHRoaXMubmFtZSA9IHRoaXMub3B0aW9ucy5uYW1lO1xuXG4gICAgaWYgKCF0aGlzLl9pc1N0YW5kYWxvbmUoKSAmJiAhdGhpcy5uYW1lICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBtaXNzaW5nTmFtZUV4Y2VwdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICByZXNvbHZlZFByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUsIHtlbWl0Vmlld1RvTW9kZWxDaGFuZ2U6IGZhbHNlfSk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj8ubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVEaXNhYmxlZChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgZGlzYWJsZWRWYWx1ZSA9IGNoYW5nZXNbJ2lzRGlzYWJsZWQnXS5jdXJyZW50VmFsdWU7XG4gICAgLy8gY2hlY2tpbmcgZm9yIDAgdG8gYXZvaWQgYnJlYWtpbmcgY2hhbmdlXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGRpc2FibGVkVmFsdWUgIT09IDAgJiYgY29lcmNlVG9Cb29sZWFuKGRpc2FibGVkVmFsdWUpO1xuXG4gICAgcmVzb2x2ZWRQcm9taXNlLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKGlzRGlzYWJsZWQgJiYgIXRoaXMuY29udHJvbC5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIGlmICghaXNEaXNhYmxlZCAmJiB0aGlzLmNvbnRyb2wuZGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZj8ubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRQYXRoKGNvbnRyb2xOYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudCA/IGNvbnRyb2xQYXRoKGNvbnRyb2xOYW1lLCB0aGlzLl9wYXJlbnQpIDogW2NvbnRyb2xOYW1lXTtcbiAgfVxufVxuIl19
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright Google LLC All Rights Reserved.
|
|
4
|
-
*
|
|
5
|
-
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
-
* found in the LICENSE file at https://angular.io/license
|
|
7
|
-
*/
|
|
8
|
-
import { Directive, forwardRef, Host, Inject, Input, Optional, Self, SkipSelf } from '@angular/core';
|
|
9
|
-
import { NG_ASYNC_VALIDATORS, NG_VALIDATORS } from '../validators';
|
|
10
|
-
import { AbstractFormGroupDirective } from './abstract_form_group_directive';
|
|
11
|
-
import { ControlContainer } from './control_container';
|
|
12
|
-
import { NgForm } from './ng_form';
|
|
13
|
-
import { modelGroupParentException } from './template_driven_errors';
|
|
14
|
-
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "./control_container";
|
|
16
|
-
export const modelGroupProvider = {
|
|
17
|
-
provide: ControlContainer,
|
|
18
|
-
useExisting: forwardRef(() => NgModelGroup)
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* @description
|
|
22
|
-
* Creates and binds a `FormGroup` instance to a DOM element.
|
|
23
|
-
*
|
|
24
|
-
* This directive can only be used as a child of `NgForm` (within `<form>` tags).
|
|
25
|
-
*
|
|
26
|
-
* Use this directive to validate a sub-group of your form separately from the
|
|
27
|
-
* rest of your form, or if some values in your domain model make more sense
|
|
28
|
-
* to consume together in a nested object.
|
|
29
|
-
*
|
|
30
|
-
* Provide a name for the sub-group and it will become the key
|
|
31
|
-
* for the sub-group in the form's full value. If you need direct access, export the directive into
|
|
32
|
-
* a local template variable using `ngModelGroup` (ex: `#myGroup="ngModelGroup"`).
|
|
33
|
-
*
|
|
34
|
-
* @usageNotes
|
|
35
|
-
*
|
|
36
|
-
* ### Consuming controls in a grouping
|
|
37
|
-
*
|
|
38
|
-
* The following example shows you how to combine controls together in a sub-group
|
|
39
|
-
* of the form.
|
|
40
|
-
*
|
|
41
|
-
* {@example forms/ts/ngModelGroup/ng_model_group_example.ts region='Component'}
|
|
42
|
-
*
|
|
43
|
-
* @ngModule FormsModule
|
|
44
|
-
* @publicApi
|
|
45
|
-
*/
|
|
46
|
-
class NgModelGroup extends AbstractFormGroupDirective {
|
|
47
|
-
constructor(parent, validators, asyncValidators) {
|
|
48
|
-
super();
|
|
49
|
-
this._parent = parent;
|
|
50
|
-
this._setValidators(validators);
|
|
51
|
-
this._setAsyncValidators(asyncValidators);
|
|
52
|
-
}
|
|
53
|
-
/** @internal */
|
|
54
|
-
_checkParentType() {
|
|
55
|
-
if (!(this._parent instanceof NgModelGroup) && !(this._parent instanceof NgForm) &&
|
|
56
|
-
(typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
57
|
-
throw modelGroupParentException();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
NgModelGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-next.4", ngImport: i0, type: NgModelGroup, deps: [{ token: i1.ControlContainer, host: true, skipSelf: true }, { token: NG_VALIDATORS, optional: true, self: true }, { token: NG_ASYNC_VALIDATORS, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
62
|
-
NgModelGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-next.4", type: NgModelGroup, selector: "[ngModelGroup]", inputs: { name: ["ngModelGroup", "name"] }, providers: [modelGroupProvider], exportAs: ["ngModelGroup"], usesInheritance: true, ngImport: i0 });
|
|
63
|
-
export { NgModelGroup };
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-next.4", ngImport: i0, type: NgModelGroup, decorators: [{
|
|
65
|
-
type: Directive,
|
|
66
|
-
args: [{ selector: '[ngModelGroup]', providers: [modelGroupProvider], exportAs: 'ngModelGroup' }]
|
|
67
|
-
}], ctorParameters: function () { return [{ type: i1.ControlContainer, decorators: [{
|
|
68
|
-
type: Host
|
|
69
|
-
}, {
|
|
70
|
-
type: SkipSelf
|
|
71
|
-
}] }, { type: undefined, decorators: [{
|
|
72
|
-
type: Optional
|
|
73
|
-
}, {
|
|
74
|
-
type: Self
|
|
75
|
-
}, {
|
|
76
|
-
type: Inject,
|
|
77
|
-
args: [NG_VALIDATORS]
|
|
78
|
-
}] }, { type: undefined, decorators: [{
|
|
79
|
-
type: Optional
|
|
80
|
-
}, {
|
|
81
|
-
type: Self
|
|
82
|
-
}, {
|
|
83
|
-
type: Inject,
|
|
84
|
-
args: [NG_ASYNC_VALIDATORS]
|
|
85
|
-
}] }]; }, propDecorators: { name: [{
|
|
86
|
-
type: Input,
|
|
87
|
-
args: ['ngModelGroup']
|
|
88
|
-
}] } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfbW9kZWxfZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9mb3Jtcy9zcmMvZGlyZWN0aXZlcy9uZ19tb2RlbF9ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFdEgsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGFBQWEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDOzs7QUFHbkUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQVE7SUFDckMsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztDQUM1QyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFDSCxNQUNhLFlBQWEsU0FBUSwwQkFBMEI7SUFTMUQsWUFDd0IsTUFBd0IsRUFDRCxVQUFxQyxFQUMvQixlQUNWO1FBQ3pDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGdCQUFnQjtJQUNQLGdCQUFnQjtRQUN2QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxZQUFZLE1BQU0sQ0FBQztZQUM1RSxDQUFDLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsRUFBRTtZQUNuRCxNQUFNLHlCQUF5QixFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDOztvSEExQlUsWUFBWSw4RUFXUyxhQUFhLHlDQUNiLG1CQUFtQjt3R0FaeEMsWUFBWSxxRkFEMEIsQ0FBQyxrQkFBa0IsQ0FBQztTQUMxRCxZQUFZO3NHQUFaLFlBQVk7a0JBRHhCLFNBQVM7bUJBQUMsRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLENBQUMsa0JBQWtCLENBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFDOzswQkFXM0YsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ3hDLFFBQVE7OzBCQUFJLElBQUk7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1COzRDQUxuQixJQUFJO3NCQUFuQyxLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtEaXJlY3RpdmUsIGZvcndhcmRSZWYsIEhvc3QsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgU2VsZiwgU2tpcFNlbGZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge05HX0FTWU5DX1ZBTElEQVRPUlMsIE5HX1ZBTElEQVRPUlN9IGZyb20gJy4uL3ZhbGlkYXRvcnMnO1xuXG5pbXBvcnQge0Fic3RyYWN0Rm9ybUdyb3VwRGlyZWN0aXZlfSBmcm9tICcuL2Fic3RyYWN0X2Zvcm1fZ3JvdXBfZGlyZWN0aXZlJztcbmltcG9ydCB7Q29udHJvbENvbnRhaW5lcn0gZnJvbSAnLi9jb250cm9sX2NvbnRhaW5lcic7XG5pbXBvcnQge05nRm9ybX0gZnJvbSAnLi9uZ19mb3JtJztcbmltcG9ydCB7bW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbn0gZnJvbSAnLi90ZW1wbGF0ZV9kcml2ZW5fZXJyb3JzJztcbmltcG9ydCB7QXN5bmNWYWxpZGF0b3IsIEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvciwgVmFsaWRhdG9yRm59IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBjb25zdCBtb2RlbEdyb3VwUHJvdmlkZXI6IGFueSA9IHtcbiAgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lcixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTmdNb2RlbEdyb3VwKVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIENyZWF0ZXMgYW5kIGJpbmRzIGEgYEZvcm1Hcm91cGAgaW5zdGFuY2UgdG8gYSBET00gZWxlbWVudC5cbiAqXG4gKiBUaGlzIGRpcmVjdGl2ZSBjYW4gb25seSBiZSB1c2VkIGFzIGEgY2hpbGQgb2YgYE5nRm9ybWAgKHdpdGhpbiBgPGZvcm0+YCB0YWdzKS5cbiAqXG4gKiBVc2UgdGhpcyBkaXJlY3RpdmUgdG8gdmFsaWRhdGUgYSBzdWItZ3JvdXAgb2YgeW91ciBmb3JtIHNlcGFyYXRlbHkgZnJvbSB0aGVcbiAqIHJlc3Qgb2YgeW91ciBmb3JtLCBvciBpZiBzb21lIHZhbHVlcyBpbiB5b3VyIGRvbWFpbiBtb2RlbCBtYWtlIG1vcmUgc2Vuc2VcbiAqIHRvIGNvbnN1bWUgdG9nZXRoZXIgaW4gYSBuZXN0ZWQgb2JqZWN0LlxuICpcbiAqIFByb3ZpZGUgYSBuYW1lIGZvciB0aGUgc3ViLWdyb3VwIGFuZCBpdCB3aWxsIGJlY29tZSB0aGUga2V5XG4gKiBmb3IgdGhlIHN1Yi1ncm91cCBpbiB0aGUgZm9ybSdzIGZ1bGwgdmFsdWUuIElmIHlvdSBuZWVkIGRpcmVjdCBhY2Nlc3MsIGV4cG9ydCB0aGUgZGlyZWN0aXZlIGludG9cbiAqIGEgbG9jYWwgdGVtcGxhdGUgdmFyaWFibGUgdXNpbmcgYG5nTW9kZWxHcm91cGAgKGV4OiBgI215R3JvdXA9XCJuZ01vZGVsR3JvdXBcImApLlxuICpcbiAqIEB1c2FnZU5vdGVzXG4gKlxuICogIyMjIENvbnN1bWluZyBjb250cm9scyBpbiBhIGdyb3VwaW5nXG4gKlxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIHlvdSBob3cgdG8gY29tYmluZSBjb250cm9scyB0b2dldGhlciBpbiBhIHN1Yi1ncm91cFxuICogb2YgdGhlIGZvcm0uXG4gKlxuICoge0BleGFtcGxlIGZvcm1zL3RzL25nTW9kZWxHcm91cC9uZ19tb2RlbF9ncm91cF9leGFtcGxlLnRzIHJlZ2lvbj0nQ29tcG9uZW50J31cbiAqXG4gKiBAbmdNb2R1bGUgRm9ybXNNb2R1bGVcbiAqIEBwdWJsaWNBcGlcbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICdbbmdNb2RlbEdyb3VwXScsIHByb3ZpZGVyczogW21vZGVsR3JvdXBQcm92aWRlcl0sIGV4cG9ydEFzOiAnbmdNb2RlbEdyb3VwJ30pXG5leHBvcnQgY2xhc3MgTmdNb2RlbEdyb3VwIGV4dGVuZHMgQWJzdHJhY3RGb3JtR3JvdXBEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVHJhY2tzIHRoZSBuYW1lIG9mIHRoZSBgTmdNb2RlbEdyb3VwYCBib3VuZCB0byB0aGUgZGlyZWN0aXZlLiBUaGUgbmFtZSBjb3JyZXNwb25kc1xuICAgKiB0byBhIGtleSBpbiB0aGUgcGFyZW50IGBOZ0Zvcm1gLlxuICAgKi9cbiAgLy8gVE9ETyhpc3N1ZS8yNDU3MSk6IHJlbW92ZSAnIScuXG4gIEBJbnB1dCgnbmdNb2RlbEdyb3VwJykgb3ZlcnJpZGUgbmFtZSE6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIEBIb3N0KCkgQFNraXBTZWxmKCkgcGFyZW50OiBDb250cm9sQ29udGFpbmVyLFxuICAgICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIHZhbGlkYXRvcnM6IChWYWxpZGF0b3J8VmFsaWRhdG9yRm4pW10sXG4gICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIEBJbmplY3QoTkdfQVNZTkNfVkFMSURBVE9SUykgYXN5bmNWYWxpZGF0b3JzOlxuICAgICAgICAgIChBc3luY1ZhbGlkYXRvcnxBc3luY1ZhbGlkYXRvckZuKVtdKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5fc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcbiAgICB0aGlzLl9zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb3ZlcnJpZGUgX2NoZWNrUGFyZW50VHlwZSgpOiB2b2lkIHtcbiAgICBpZiAoISh0aGlzLl9wYXJlbnQgaW5zdGFuY2VvZiBOZ01vZGVsR3JvdXApICYmICEodGhpcy5fcGFyZW50IGluc3RhbmNlb2YgTmdGb3JtKSAmJlxuICAgICAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSkge1xuICAgICAgdGhyb3cgbW9kZWxHcm91cFBhcmVudEV4Y2VwdGlvbigpO1xuICAgIH1cbiAgfVxufVxuIl19
|