@dereekb/dbx-form 12.6.21 → 12.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/form/action/form.action.dialog.component.mjs +6 -10
- package/esm2022/lib/form/action/form.action.directive.mjs +14 -13
- package/esm2022/lib/form/io/form.change.directive.mjs +9 -7
- package/esm2022/lib/form/io/form.input.directive.mjs +8 -9
- package/esm2022/lib/form/io/form.loading.directive.mjs +6 -7
- package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +8 -7
- package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +2 -2
- package/esm2022/lib/formly/form/search.form.component.mjs +1 -1
- package/esm2022/lib/formly/formly.context.directive.mjs +1 -1
- package/esm2022/lib/formly/formly.directive.mjs +8 -13
- package/esm2022/lib/formly/formly.form.component.mjs +18 -19
- package/fesm2022/dereekb-dbx-form.mjs +61 -71
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/form/action/form.action.dialog.component.d.ts +2 -3
- package/lib/form/action/form.action.directive.d.ts +4 -5
- package/lib/form/io/form.change.directive.d.ts +3 -3
- package/lib/form/io/form.input.directive.d.ts +2 -3
- package/lib/form/io/form.loading.directive.d.ts +1 -3
- package/lib/formly/field/checklist/checklist.item.field.component.d.ts +2 -2
- package/lib/formly/field/wrapper/working.wrapper.component.d.ts +1 -1
- package/lib/formly/form/search.form.component.d.ts +1 -2
- package/lib/formly/formly.context.directive.d.ts +1 -2
- package/lib/formly/formly.directive.d.ts +7 -9
- package/lib/formly/formly.form.component.d.ts +3 -4
- package/package.json +1 -1
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
20
20
|
standalone: true
|
|
21
21
|
}]
|
|
22
22
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LmNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sK0JBQTZDLFNBQVEsZ0NBQW1DO0lBQzFGLE1BQU0sR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDcEYsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0dBRmxDLCtCQUErQjs0RkFBL0IsK0JBQStCLGdOQUgvQixvQkFBb0IsRUFBRTs7NEZBR3RCLCtCQUErQjtrQkFMM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlRm9ybWx5Q29udGV4dCB9IGZyb20gJy4vZm9ybWx5LmNvbnRleHQnO1xuaW1wb3J0IHsgQWJzdHJhY3RBc3luY0Zvcm1seUZvcm1EaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm1seS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIERieEZvcm1seUNvbnRleHQgYW5kIGhhcyBhbiBpbnB1dCBmb3IgZmllbGRzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4Rm9ybWx5RmllbGRzXScsXG4gIHByb3ZpZGVyczogcHJvdmlkZUZvcm1seUNvbnRleHQoKSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtbHlGaWVsZHNDb250ZXh0RGlyZWN0aXZlPFQgPSB1bmtub3duPiBleHRlbmRzIEFic3RyYWN0QXN5bmNGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IHtcbiAgcmVhZG9ubHkgZmllbGRzID0gaW5wdXQ8TWF5YmU8Rm9ybWx5RmllbGRDb25maWdbXT4+KHVuZGVmaW5lZCwgeyBhbGlhczogJ2RieEZvcm1seUZpZWxkcycgfSk7XG4gIHJlYWRvbmx5IGZpZWxkcyQgPSB0b09ic2VydmFibGUodGhpcy5maWVsZHMpO1xufVxuIl19
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { filterMaybe, maybeValueFromObservableOrValue } from '@dereekb/rxjs';
|
|
2
2
|
import { shareReplay, distinctUntilChanged } from 'rxjs';
|
|
3
3
|
import { Directive, inject, input, effect } from '@angular/core';
|
|
4
4
|
import { DbxFormlyContext } from './formly.context';
|
|
5
5
|
import { toObservable } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { cleanSubscription } from '@dereekb/dbx-core';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
/**
|
|
8
9
|
* Abstract component for wrapping a DbxFormlyContext.
|
|
@@ -12,10 +13,7 @@ import * as i0 from "@angular/core";
|
|
|
12
13
|
export class AbstractFormlyFormDirective {
|
|
13
14
|
context = inject((DbxFormlyContext), { self: true });
|
|
14
15
|
disabled = input(false);
|
|
15
|
-
|
|
16
|
-
ngOnDestroy() {
|
|
17
|
-
this._setDisabledOnContext.destroy();
|
|
18
|
-
}
|
|
16
|
+
_disabledEffect = effect(() => this.context.setDisabled(undefined, this.disabled()));
|
|
19
17
|
// Utility Functions
|
|
20
18
|
getValue() {
|
|
21
19
|
return this.context.getValue();
|
|
@@ -55,15 +53,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
55
53
|
* Abstract component for wrapping an asyncrhronously-configured form.
|
|
56
54
|
*/
|
|
57
55
|
export class AbstractAsyncFormlyFormDirective extends AbstractFormlyFormDirective {
|
|
58
|
-
|
|
56
|
+
_fieldSub = cleanSubscription();
|
|
59
57
|
ngOnInit() {
|
|
60
|
-
|
|
58
|
+
// fields$ is only available after initialization.
|
|
59
|
+
this._fieldSub.setSub(this.fields$.pipe(distinctUntilChanged()).subscribe((fields) => {
|
|
61
60
|
this.context.fields = fields;
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
ngOnDestroy() {
|
|
65
|
-
super.ngOnDestroy();
|
|
66
|
-
this._fieldsSub.destroy();
|
|
61
|
+
}));
|
|
67
62
|
}
|
|
68
63
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractAsyncFormlyFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
69
64
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractAsyncFormlyFormDirective, usesInheritance: true, ngImport: i0 });
|
|
@@ -81,4 +76,4 @@ export class AbstractConfigAsyncFormlyFormDirective extends AbstractAsyncFormlyF
|
|
|
81
76
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractConfigAsyncFormlyFormDirective, decorators: [{
|
|
82
77
|
type: Directive
|
|
83
78
|
}] });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2Zvcm1seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBMEIsK0JBQStCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFjLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyRSxPQUFPLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFFdEQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBZ0IsMkJBQTJCO0lBQ3RDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQSxnQkFBbUIsQ0FBQSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEQsUUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUV2QixlQUFlLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXhHLG9CQUFvQjtJQUNwQixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBaUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQXdCLEVBQUUsUUFBa0I7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7d0dBMUJtQiwyQkFBMkI7NEZBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEaEQsU0FBUzs7QUE4QlY7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLCtCQUFtQyxTQUFRLDJCQUE4QjtJQUc3RixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO3dHQUxtQiwrQkFBK0I7NEZBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEcEQsU0FBUzs7QUFTVjs7R0FFRztBQUVILE1BQU0sT0FBZ0IsZ0NBQW9DLFNBQVEsMkJBQThCO0lBTTNFLFNBQVMsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBRW5ELFFBQVE7UUFDTixrREFBa0Q7UUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7d0dBZm1CLGdDQUFnQzs0RkFBaEMsZ0NBQWdDOzs0RkFBaEMsZ0NBQWdDO2tCQURyRCxTQUFTOztBQW9CVixNQUFNLE9BQWdCLHNDQUE2QyxTQUFRLGdDQUFtQztJQUNuRyxNQUFNLEdBQUcsS0FBSyxDQUE0QixTQUFTLENBQUMsQ0FBQztJQUVyRCxjQUFjLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3R0FKdkQsc0NBQXNDOzRGQUF0QyxzQ0FBc0M7OzRGQUF0QyxzQ0FBc0M7a0JBRDNELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmaWx0ZXJNYXliZSwgTWF5YmVPYnNlcnZhYmxlT3JWYWx1ZSwgbWF5YmVWYWx1ZUZyb21PYnNlcnZhYmxlT3JWYWx1ZSB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgT25Jbml0LCBEaXJlY3RpdmUsIGluamVjdCwgaW5wdXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybWx5Q29udGV4dCB9IGZyb20gJy4vZm9ybWx5LmNvbnRleHQnO1xuaW1wb3J0IHsgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGJ4Rm9ybURpc2FibGVkS2V5IH0gZnJvbSAnLi4vZm9ybS9mb3JtJztcbmltcG9ydCB7IGNsZWFuU3Vic2NyaXB0aW9uIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWNvcmUnO1xuXG4vKipcbiAqIEFic3RyYWN0IGNvbXBvbmVudCBmb3Igd3JhcHBpbmcgYSBEYnhGb3JtbHlDb250ZXh0LlxuICpcbiAqIFRoZSBpbXBsZW1lbnRpbmcgY29tcG9uZW50IHNob3VsZCB1c2UgcHJvdmlkZUZvcm1seUNvbnRleHQoKSB0byBwcm92aWRlIHRoZSBEYnhGb3JtbHlDb250ZXh0IHNwZWNpZmljIHRvIHRoaXMgZGlyZWN0aXZlLiBUaGUgY29udGV4dCBpcyBpbmplY3RlZCB1c2luZyBvbmx5IHNlbGYuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybWx5Rm9ybURpcmVjdGl2ZTxUPiB7XG4gIHJlYWRvbmx5IGNvbnRleHQgPSBpbmplY3QoRGJ4Rm9ybWx5Q29udGV4dDxUPiwgeyBzZWxmOiB0cnVlIH0pO1xuXG4gIHJlYWRvbmx5IGRpc2FibGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBfZGlzYWJsZWRFZmZlY3QgPSBlZmZlY3QoKCkgPT4gdGhpcy5jb250ZXh0LnNldERpc2FibGVkKHVuZGVmaW5lZCwgdGhpcy5kaXNhYmxlZCgpKSk7XG5cbiAgLy8gVXRpbGl0eSBGdW5jdGlvbnNcbiAgZ2V0VmFsdWUoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSh7fSk7XG4gIH1cblxuICBzZXREaXNhYmxlZChrZXk/OiBEYnhGb3JtRGlzYWJsZWRLZXksIGRpc2FibGVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5zZXREaXNhYmxlZChrZXksIGRpc2FibGVkKTtcbiAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNvbXBvbmVudCBmb3Igd3JhcHBpbmcgYSBmb3JtLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN5bmNGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IGV4dGVuZHMgQWJzdHJhY3RGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYWJzdHJhY3QgZmllbGRzOiBGb3JtbHlGaWVsZENvbmZpZ1tdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5maWVsZHMgPSB0aGlzLmZpZWxkcztcbiAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNvbXBvbmVudCBmb3Igd3JhcHBpbmcgYW4gYXN5bmNyaHJvbm91c2x5LWNvbmZpZ3VyZWQgZm9ybS5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RBc3luY0Zvcm1seUZvcm1EaXJlY3RpdmU8VD4gZXh0ZW5kcyBBYnN0cmFjdEZvcm1seUZvcm1EaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogVXNlZCB0byBwcm92aWRlIGZpZWxkcyB0byB0aGUgY29udGV4dC5cbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGZpZWxkcyQ6IE9ic2VydmFibGU8TWF5YmU8Rm9ybWx5RmllbGRDb25maWdbXT4+O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBfZmllbGRTdWIgPSBjbGVhblN1YnNjcmlwdGlvbigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIGZpZWxkcyQgaXMgb25seSBhdmFpbGFibGUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uXG4gICAgdGhpcy5fZmllbGRTdWIuc2V0U3ViKFxuICAgICAgdGhpcy5maWVsZHMkLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKChmaWVsZHMpID0+IHtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpZWxkcyA9IGZpZWxkcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbmZpZ0FzeW5jRm9ybWx5Rm9ybURpcmVjdGl2ZTxULCBDPiBleHRlbmRzIEFic3RyYWN0QXN5bmNGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IHtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQ8TWF5YmVPYnNlcnZhYmxlT3JWYWx1ZTxDPj4odW5kZWZpbmVkKTtcblxuICByZWFkb25seSBjdXJyZW50Q29uZmlnJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmNvbmZpZykucGlwZShtYXliZVZhbHVlRnJvbU9ic2VydmFibGVPclZhbHVlKCkpO1xuICByZWFkb25seSBjb25maWckID0gdGhpcy5jdXJyZW50Q29uZmlnJC5waXBlKGZpbHRlck1heWJlKCksIHNoYXJlUmVwbGF5KDEpKTtcbn1cbiJdfQ==
|
|
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, computed, inject, signal, viewChild
|
|
|
2
2
|
import { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { FormlyForm, FormlyModule } from '@ngx-formly/core';
|
|
4
4
|
import { distinctUntilChanged, map, throttleTime, startWith, BehaviorSubject, Subject, switchMap, shareReplay, of, scan, filter, timer, first, merge, delay } from 'rxjs';
|
|
5
|
-
import {
|
|
5
|
+
import { cleanWithLockSet } from '@dereekb/dbx-core';
|
|
6
6
|
import { DbxFormState, DEFAULT_FORM_DISABLED_KEY, provideDbxMutableForm, toggleDisableFormControl } from '../form/form';
|
|
7
7
|
import { DbxFormlyContext } from './formly.context';
|
|
8
8
|
import { scanCount, switchMapFilterMaybe, SubscriptionObject } from '@dereekb/rxjs';
|
|
@@ -14,7 +14,7 @@ import * as i2 from "@ngx-formly/core";
|
|
|
14
14
|
/**
|
|
15
15
|
* Used for rending a form from a DbxFormlyContext.
|
|
16
16
|
*/
|
|
17
|
-
export class DbxFormlyComponent
|
|
17
|
+
export class DbxFormlyComponent {
|
|
18
18
|
_dbxFormlyContext = inject((DbxFormlyContext));
|
|
19
19
|
formlyForm = viewChild(FormlyForm);
|
|
20
20
|
_fields = new BehaviorSubject(undefined);
|
|
@@ -80,6 +80,18 @@ export class DbxFormlyComponent extends AbstractSubscriptionDirective {
|
|
|
80
80
|
}))), shareReplay(1));
|
|
81
81
|
_fieldsSignal = toSignal(this.fields$, { initialValue: undefined });
|
|
82
82
|
fieldsSignal = computed(() => this._fieldsSignal() ?? []);
|
|
83
|
+
constructor() {
|
|
84
|
+
cleanWithLockSet(this._dbxFormlyContext.lockSet, () => {
|
|
85
|
+
this._dbxFormlyContext.clearDelegate(this);
|
|
86
|
+
this._events.complete();
|
|
87
|
+
this._fields.complete();
|
|
88
|
+
this._reset.complete();
|
|
89
|
+
this._forceUpdate.complete();
|
|
90
|
+
this._disabled.complete();
|
|
91
|
+
this._disabledSub.destroy();
|
|
92
|
+
this._enforceDisabledSub.destroy();
|
|
93
|
+
});
|
|
94
|
+
}
|
|
83
95
|
ngOnInit() {
|
|
84
96
|
this._dbxFormlyContext.setDelegate(this);
|
|
85
97
|
const resyncDisabledState = () => {
|
|
@@ -102,19 +114,6 @@ export class DbxFormlyComponent extends AbstractSubscriptionDirective {
|
|
|
102
114
|
resyncDisabledState();
|
|
103
115
|
});
|
|
104
116
|
}
|
|
105
|
-
ngOnDestroy() {
|
|
106
|
-
this._dbxFormlyContext.lockSet.onNextUnlock(() => {
|
|
107
|
-
super.ngOnDestroy();
|
|
108
|
-
this._dbxFormlyContext.clearDelegate(this);
|
|
109
|
-
this._events.complete();
|
|
110
|
-
this._fields.complete();
|
|
111
|
-
this._reset.complete();
|
|
112
|
-
this._forceUpdate.complete();
|
|
113
|
-
this._disabled.complete();
|
|
114
|
-
this._disabledSub.destroy();
|
|
115
|
-
this._enforceDisabledSub.destroy();
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
117
|
// MARK: Delegate
|
|
119
118
|
init(initialize) {
|
|
120
119
|
this._fields.next(initialize.fields);
|
|
@@ -165,8 +164,8 @@ export class DbxFormlyComponent extends AbstractSubscriptionDirective {
|
|
|
165
164
|
forceFormUpdate() {
|
|
166
165
|
this._forceUpdate.next();
|
|
167
166
|
}
|
|
168
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormlyComponent, deps:
|
|
169
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: DbxFormlyComponent, isStandalone: true, selector: "dbx-formly", host: { classAttribute: "dbx-formly" }, providers: provideDbxMutableForm(DbxFormlyComponent), viewQueries: [{ propertyName: "formlyForm", first: true, predicate: FormlyForm, descendants: true, isSignal: true }], exportAs: ["formly"],
|
|
167
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormlyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
168
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: DbxFormlyComponent, isStandalone: true, selector: "dbx-formly", host: { classAttribute: "dbx-formly" }, providers: provideDbxMutableForm(DbxFormlyComponent), viewQueries: [{ propertyName: "formlyForm", first: true, predicate: FormlyForm, descendants: true, isSignal: true }], exportAs: ["formly"], ngImport: i0, template: `
|
|
170
169
|
<form [formGroup]="form" class="dbx-formly">
|
|
171
170
|
<formly-form [form]="form" [options]="options" [fields]="fieldsSignal()" [model]="modelSignal()"></formly-form>
|
|
172
171
|
</form>
|
|
@@ -190,5 +189,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
190
189
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
191
190
|
standalone: true
|
|
192
191
|
}]
|
|
193
|
-
}] });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LmZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBcUIsVUFBVSxFQUFxQixZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0TCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRSxPQUFPLEVBQTZDLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuSyxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlELE1BQU0sa0JBQWtCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQXlCLDRCQUE0QixFQUFFLHlCQUF5QixFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIs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LFlBQVksQ0FBQztvQkFDekQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtLCBGb3JtbHlGb3JtT3B0aW9ucywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0aHJvdHRsZVRpbWUsIHN0YXJ0V2l0aCwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBvZiwgc2NhbiwgZmlsdGVyLCB0aW1lciwgZmlyc3QsIG1lcmdlLCBkZWxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWJzdHJhY3RTdWJzY3JpcHRpb25EaXJlY3RpdmUgfSBmcm9tICdAZGVyZWVrYi9kYngtY29yZSc7XG5pbXBvcnQgeyBEYnhGb3JtLCBEYnhGb3JtRGlzYWJsZWRLZXksIERieEZvcm1FdmVudCwgRGJ4Rm9ybVN0YXRlLCBERUZBVUxUX0ZPUk1fRElTQUJMRURfS0VZLCBwcm92aWRlRGJ4TXV0YWJsZUZvcm0sIHRvZ2dsZURpc2FibGVGb3JtQ29udHJvbCB9IGZyb20gJy4uL2Zvcm0vZm9ybSc7XG5pbXBvcnQgeyBEYnhGb3JtbHlDb250ZXh0LCBEYnhGb3JtbHlDb250ZXh0RGVsZWdhdGUsIERieEZvcm1seUluaXRpYWxpemUgfSBmcm9tICcuL2Zvcm1seS5jb250ZXh0JztcbmltcG9ydCB7IHNjYW5Db3VudCwgc3dpdGNoTWFwRmlsdGVyTWF5YmUsIFN1YnNjcmlwdGlvbk9iamVjdCB9IGZyb20gJ0BkZXJlZWtiL3J4anMnO1xuaW1wb3J0IHsgQm9vbGVhblN0cmluZ0tleUFycmF5LCBCb29sZWFuU3RyaW5nS2V5QXJyYXlVdGlsaXR5LCBpdGVyYWJsZXNBcmVTZXRFcXVpdmFsZW50LCB0eXBlIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtbHlGb3JtU3RhdGUge1xuICBjaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudDogbnVtYmVyO1xuICBpc0Zvcm1WYWxpZDogYm9vbGVhbjtcbiAgaXNGb3JtRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogVXNlZCBmb3IgcmVuZGluZyBhIGZvcm0gZnJvbSBhIERieEZvcm1seUNvbnRleHQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2RieC1mb3JtbHknLFxuICBleHBvcnRBczogJ2Zvcm1seScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJkYngtZm9ybWx5XCI+XG4gICAgICA8Zm9ybWx5LWZvcm0gW2Zvcm1dPVwiZm9ybVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiBbZmllbGRzXT1cImZpZWxkc1NpZ25hbCgpXCIgW21vZGVsXT1cIm1vZGVsU2lnbmFsKClcIj48L2Zvcm1seS1mb3JtPlxuICAgIDwvZm9ybT5cbiAgYCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZGJ4LWZvcm1seSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBwcm92aWRlRGJ4TXV0YWJsZUZvcm0oRGJ4Rm9ybWx5Q29tcG9uZW50KSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtbHlNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtbHlDb21wb25lbnQ8VD4gZXh0ZW5kcyBBYnN0cmFjdFN1YnNjcmlwdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIERieEZvcm0sIERieEZvcm1seUNvbnRleHREZWxlZ2F0ZTxUPiwgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYnhGb3JtbHlDb250ZXh0ID0gaW5qZWN0KERieEZvcm1seUNvbnRleHQ8VD4pO1xuXG4gIHJlYWRvbmx5IGZvcm1seUZvcm0gPSB2aWV3Q2hpbGQoRm9ybWx5Rm9ybSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmllbGRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxPYnNlcnZhYmxlPEZvcm1seUZpZWxkQ29uZmlnW10+Pj4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXZlbnRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxEYnhGb3JtRXZlbnQ+KHsgaXNDb21wbGV0ZTogZmFsc2UsIHN0YXRlOiBEYnhGb3JtU3RhdGUuSU5JVElBTElaSU5HLCBzdGF0dXM6ICdQRU5ESU5HJyB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJvb2xlYW5TdHJpbmdLZXlBcnJheT4odW5kZWZpbmVkKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0ZT4obmV3IERhdGUoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvcmNlVXBkYXRlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNhYmxlZFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZW5mb3JjZURpc2FibGVkU3ViID0gbmV3IFN1YnNjcmlwdGlvbk9iamVjdCgpO1xuXG4gIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcmVhZG9ubHkgbW9kZWxTaWduYWwgPSBzaWduYWw8VD4oe30gYXMgVCk7XG5cbiAgcmVhZG9ubHkgb3B0aW9uczogRm9ybWx5Rm9ybU9wdGlvbnMgPSB7fTtcblxuICByZWFkb25seSBmaWVsZHMkID0gdGhpcy5fZmllbGRzLnBpcGUoc3dpdGNoTWFwRmlsdGVyTWF5YmUoKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuXG4gIHJlYWRvbmx5IHN0cmVhbSQ6IE9ic2VydmFibGU8RGJ4Rm9ybUV2ZW50PiA9IHRoaXMuX3Jlc2V0LnBpcGUoXG4gICAgc3dpdGNoTWFwKChsYXN0UmVzZXRBdCkgPT5cbiAgICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0aHJvdHRsZVRpbWUoNTAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSxcbiAgICAgICAgc2NhbkNvdW50KC0xKSxcbiAgICAgICAgLy8gdXBkYXRlIG9uIHZhbGlkYXRpb24gY2hhbmdlcyB0b28uIERvZXMgbm90IGNvdW50IHRvd2FyZHMgY2hhbmdlcyBzaW5jZSBsYXN0IHJlc2V0LlxuICAgICAgICBzd2l0Y2hNYXAoKGNoYW5nZXNTaW5jZUxhc3RSZXNldCkgPT4gdGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5mb3JtLnN0YXR1cyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUobWFwKCgpID0+IGNoYW5nZXNTaW5jZUxhc3RSZXNldCkpKSxcbiAgICAgICAgbWFwKChjaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudDogbnVtYmVyKSA9PiAoe1xuICAgICAgICAgIGNoYW5nZXNTaW5jZUxhc3RSZXNldENvdW50LFxuICAgICAgICAgIGlzRm9ybVZhbGlkOiB0aGlzLmZvcm0uc3RhdHVzICE9PSAnUEVORElORycgJiYgdGhpcy5mb3JtLnZhbGlkLFxuICAgICAgICAgIGlzRm9ybURpc2FibGVkOiB0aGlzLmZvcm0uZGlzYWJsZWRcbiAgICAgICAgfSkpLFxuICAgICAgICBzY2FuKFxuICAgICAgICAgIChhY2M6IERieEZvcm1seUZvcm1TdGF0ZSwgbmV4dDogRGJ4Rm9ybWx5Rm9ybVN0YXRlKSA9PiB7XG4gICAgICAgICAgICAvLyBQYXNzIGZvcndhcmQgdmFsaWQgaWYgbmV4dCB3YXMgYSBkaXNhYmxlZCBjaGFuZ2UvY2hlY2ssIHdoaWNoIGNoYW5nZXMgYW5ndWxhciBmb3JtJ3MgaXNWYWxpZCB2YWx1ZS5cbiAgICAgICAgICAgIC8vIElmIGl0IHdhcyB2YWxpZCBwcmlvciwgdGhlbiBpdCBzaG91bGQgYmUgdmFsaWQgbm93LCB1bmxlc3Mgd2UganVzdCByZXNldCwgaW4gd2hpY2ggY2FzZSBpdCBtaWdodCBub3QgYmUgdmFsaWQuXG4gICAgICAgICAgICBjb25zdCB2YWxpZCA9IG5leHQuaXNGb3JtVmFsaWQgfHwgKG5leHQuaXNGb3JtRGlzYWJsZWQgJiYgYWNjLmlzRm9ybVZhbGlkICYmIGFjYy5jaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudCA+IDApO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudDogbmV4dC5jaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudCxcbiAgICAgICAgICAgICAgaXNGb3JtVmFsaWQ6IHZhbGlkLFxuICAgICAgICAgICAgICBpc0Zvcm1EaXNhYmxlZDogbmV4dC5pc0Zvcm1EaXNhYmxlZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNoYW5nZXNTaW5jZUxhc3RSZXNldENvdW50OiAwLFxuICAgICAgICAgICAgaXNGb3JtVmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgaXNGb3JtRGlzYWJsZWQ6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICApLFxuICAgICAgICBzd2l0Y2hNYXAoKHsgY2hhbmdlc1NpbmNlTGFzdFJlc2V0Q291bnQsIGlzRm9ybVZhbGlkLCBpc0Zvcm1EaXNhYmxlZCB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV4dFN0YXRlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXNSZXNldCA9IGNoYW5nZXNTaW5jZUxhc3RSZXNldENvdW50IDw9IDE7IC8vIGZpcnN0IGVtaXNzaW9uIGFmdGVyIHJlc2V0IGlzIHRoZSBmaXJzdCB2YWx1ZS5cbiAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlID0gaXNGb3JtVmFsaWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZTogRGJ4Rm9ybUV2ZW50ID0ge1xuICAgICAgICAgICAgICBpc0NvbXBsZXRlOiBjb21wbGV0ZSxcbiAgICAgICAgICAgICAgc3RhdGU6IGlzUmVzZXQgPyBEYnhGb3JtU3RhdGUuUkVTRVQgOiBEYnhGb3JtU3RhdGUuVVNFRCxcbiAgICAgICAgICAgICAgc3RhdHVzOiB0aGlzLmZvcm0uc3RhdHVzLFxuICAgICAgICAgICAgICB1bnRvdWNoZWQ6IHRoaXMuZm9ybS51bnRvdWNoZWQsXG4gICAgICAgICAgICAgIHByaXN0aW5lOiB0aGlzLmZvcm0ucHJpc3RpbmUsXG4gICAgICAgICAgICAgIGNoYW5nZXNDb3VudDogY2hhbmdlc1NpbmNlTGFzdFJlc2V0Q291bnQsXG4gICAgICAgICAgICAgIGxhc3RSZXNldEF0LFxuICAgICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZDogaXNGb3JtRGlzYWJsZWRcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBuZXh0U3RhdGU7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IHN0YXRlID0gbmV4dFN0YXRlKCk7XG5cbiAgICAgICAgICBpZiAoaXNGb3JtVmFsaWQgJiYgdGhpcy5mb3JtLnVudG91Y2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpbWVyKDE1MCwgMjAwKS5waXBlKFxuICAgICAgICAgICAgICAvLyBldmVyeSAyMDAgbXMgY2hlY2sgaWYgdGhlIGZvcm0gaXMgbm93IG1hcmtlZCB0b3VjaGVkLCB0aGVuIHB1c2ggYSBuZXcgc3RhdGVcbiAgICAgICAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS50b3VjaGVkKSxcbiAgICAgICAgICAgICAgbWFwKCgpID0+IG5leHRTdGF0ZSgpKSxcbiAgICAgICAgICAgICAgLy8gb25seSBwdXNoIHRoZSBuZXcgc3RhdGUgb25jZVxuICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAvLyBzZW5kIHRoZSBmaXJzdCB2YWx1ZSBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICBzdGFydFdpdGgoc3RhdGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2Yoc3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZmllbGRzU2lnbmFsID0gdG9TaWduYWwodGhpcy5maWVsZHMkLCB7IGluaXRpYWxWYWx1ZTogdW5kZWZpbmVkIH0pO1xuICByZWFkb25seSBmaWVsZHNTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWVsZHNTaWduYWwoKSA/PyBbXSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGJ4Rm9ybWx5Q29udGV4dC5zZXREZWxlZ2F0ZSh0aGlzKTtcblxuICAgIGNvbnN0IHJlc3luY0Rpc2FibGVkU3RhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gQm9vbGVhblN0cmluZ0tleUFycmF5VXRpbGl0eS5pc1RydWUodGhpcy5fZGlzYWJsZWQudmFsdWUpO1xuICAgICAgbGV0IGNoYW5nZSA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5mb3JtLmRpc2FibGVkICE9PSBpc0Rpc2FibGVkKSB7XG4gICAgICAgIHRvZ2dsZURpc2FibGVGb3JtQ29udHJvbCh0aGlzLmZvcm0sIGlzRGlzYWJsZWQsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhbmdlO1xuICAgIH07XG5cbiAgICB0aGlzLl9kaXNhYmxlZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9kaXNhYmxlZC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKGl0ZXJhYmxlc0FyZVNldEVxdWl2YWxlbnQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgcmVzeW5jRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gTk9URTogRm9ybSBzb21ldGltZXMgYmVjb21lcyB1bmRpc2FibGVkIHNvbWV3aGVyZS9zb21laG93LiBSZS1lbmZvcmNlIHRoZSBkaXNhYmxlZCBzdGF0ZSB3aGVyZSBuZWNlc3NhcnkuXG4gICAgdGhpcy5fZW5mb3JjZURpc2FibGVkU3ViLnN1YnNjcmlwdGlvbiA9IG1lcmdlKFtcbiAgICAgIHRoaXMuX3Jlc2V0LnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiAnUkVTRVQnKSxcbiAgICAgICAgZGVsYXkoNTApXG4gICAgICApLFxuICAgICAgdGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMucGlwZSh0aHJvdHRsZVRpbWUoNTAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSlcbiAgICBdKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgcmVzeW5jRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGJ4Rm9ybWx5Q29udGV4dC5sb2NrU2V0Lm9uTmV4dFVubG9jaygoKSA9PiB7XG4gICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgICAgdGhpcy5fZGJ4Rm9ybWx5Q29udGV4dC5jbGVhckRlbGVnYXRlKHRoaXMpO1xuICAgICAgdGhpcy5fZXZlbnRzLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9maWVsZHMuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX3Jlc2V0LmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9mb3JjZVVwZGF0ZS5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fZGlzYWJsZWQuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX2Rpc2FibGVkU3ViLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuX2VuZm9yY2VEaXNhYmxlZFN1Yi5kZXN0cm95KCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBNQVJLOiBEZWxlZ2F0ZVxuICBpbml0KGluaXRpYWxpemU6IERieEZvcm1seUluaXRpYWxpemU8VD4pOiB2b2lkIHtcbiAgICB0aGlzLl9maWVsZHMubmV4dChpbml0aWFsaXplLmZpZWxkcyk7XG4gICAgdGhpcy5fZGlzYWJsZWQubmV4dChpbml0aWFsaXplLmluaXRpYWxEaXNhYmxlZCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gb2YodGhpcy5mb3JtLnZhbHVlIGFzIFQpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsU2lnbmFsLnNldChzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpIGFzIFQpO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy51cGRhdGVJbml0aWFsVmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy51cGRhdGVJbml0aWFsVmFsdWUoKTtcbiAgICAgIHRoaXMub3B0aW9ucy5yZXNldE1vZGVsPy4oKTtcbiAgICB9XG5cbiAgICAvLyBSZS1tYXJrIGFzIHVudG91Y2hlZCBhbmQgcHJpc3RpbmUuXG4gICAgdGhpcy5mb3JtLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xuXG4gICAgLy8gQWZ0ZXIgdXBkYXRpbmcgdGhlIHZhbHVlLCBpZiB0aGUgZm9ybSBpcyBzdGlsbCB1bnRvdWNoZWQgbWFyayBpdCBhcyBwcmlzdGluZSBhZ2Fpbi5cbiAgICAvLyBTb21ldGltZXMgdGhlIHZhbHVlcyBnZXQgbWFya2VkIGFzIGNoYW5nZWQgYW5kIGJyZWFrIHByaXN0aW5lIGJlZm9yZSBhIHVzZXIgaGFzIHRpbWUgdG8gaW50ZXJhY3QuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5mb3JtLnVudG91Y2hlZCkge1xuICAgICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuXG4gICAgLy8gcGluZyByZXNldFxuICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gIH1cblxuICByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5yZXNldE1vZGVsKSB7XG4gICAgICB0aGlzLm9wdGlvbnMucmVzZXRNb2RlbCgpO1xuICAgIH1cblxuICAgIHRoaXMuX3Jlc2V0Lm5leHQobmV3IERhdGUoKSk7XG4gIH1cblxuICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhblN0cmluZ0tleUFycmF5VXRpbGl0eS5pc1RydWUodGhpcy5kaXNhYmxlZCk7XG4gIH1cblxuICBnZXQgZGlzYWJsZWQoKTogQm9vbGVhblN0cmluZ0tleUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQudmFsdWU7XG4gIH1cblxuICBnZXREaXNhYmxlZCgpOiBPYnNlcnZhYmxlPEJvb2xlYW5TdHJpbmdLZXlBcnJheT4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldERpc2FibGVkKGtleT86IERieEZvcm1EaXNhYmxlZEtleSwgZGlzYWJsZWQgPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHkuc2V0KHRoaXMuZGlzYWJsZWQsIGtleSA/PyBERUZBVUxUX0ZPUk1fRElTQUJMRURfS0VZLCBkaXNhYmxlZCk7XG4gICAgdGhpcy5fZGlzYWJsZWQubmV4dChuZXh0KTtcbiAgfVxuXG4gIC8vIE1BUks6IFVwZGF0ZVxuICBmb3JjZUZvcm1VcGRhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VVcGRhdGUubmV4dCgpO1xuICB9XG59XG4iXX0=
|
|
192
|
+
}], ctorParameters: () => [] });
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LmZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFxQixVQUFVLEVBQXFCLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RMLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBNkMsWUFBWSxFQUFFLHlCQUF5QixFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25LLE9BQU8sRUFBRSxnQkFBZ0IsRUFBaUQsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRyxPQUFPLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBeUIsNEJBQTRCLEVBQUUseUJBQXlCLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBUXREOztHQUVHO0FBaUJILE1BQU0sT0FBTyxrQkFBa0I7SUFDWixpQkFBaUIsR0FBRyxNQUFNLENBQUMsQ0FBQSxnQkFBbUIsQ0FBQSxDQUFDLENBQUM7SUFFeEQsVUFBVSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUzQixPQUFPLEdBQUcsSUFBSSxlQUFlLENBQXlDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBZSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDeEgsU0FBUyxHQUFHLElBQUksZUFBZSxDQUF3QixTQUFTLENBQUMsQ0FBQztJQUVsRSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRW5DLFlBQVksR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFDeEMsbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO0lBRXZELElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QixXQUFXLEdBQUcsTUFBTSxDQUFJLEVBQU8sQ0FBQyxDQUFDO0lBRWpDLE9BQU8sR0FBc0IsRUFBRSxDQUFDO0lBRWhDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUYsT0FBTyxHQUE2QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDM0QsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUN6QixTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQ1osb0JBQW9CLEVBQUUsRUFDdEIsWUFBWSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUM5RCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDYixxRkFBcUY7SUFDckYsU0FBUyxDQUFDLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsRUFDOUosR0FBRyxDQUFDLENBQUMsMEJBQWtDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDM0MsMEJBQTBCO1FBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO1FBQzlELGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7S0FDbkMsQ0FBQyxDQUFDLEVBQ0gsSUFBSSxDQUNGLENBQUMsR0FBdUIsRUFBRSxJQUF3QixFQUFFLEVBQUU7UUFDcEQsc0dBQXNHO1FBQ3RHLGlIQUFpSDtRQUNqSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVqSCxPQUFPO1lBQ0wsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtZQUMzRCxXQUFXLEVBQUUsS0FBSztZQUNsQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQztJQUNKLENBQUMsRUFDRDtRQUNFLDBCQUEwQixFQUFFLENBQUM7UUFDN0IsV0FBVyxFQUFFLEtBQUs7UUFDbEIsY0FBYyxFQUFFLEtBQUs7S0FDdEIsQ0FDRixFQUNELFNBQVMsQ0FBQyxDQUFDLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7UUFDeEUsTUFBTSxTQUFTLEdBQUcsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sT0FBTyxHQUFHLDBCQUEwQixJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFpRDtZQUNsRyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUM7WUFFN0IsTUFBTSxTQUFTLEdBQWlCO2dCQUM5QixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUk7Z0JBQ3ZELE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQ3hCLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7Z0JBQzVCLFlBQVksRUFBRSwwQkFBMEI7Z0JBQ3hDLFdBQVc7Z0JBQ1gsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixVQUFVLEVBQUUsY0FBYzthQUMzQixDQUFDO1lBRUYsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFFMUIsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxPQUFPLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSTtZQUN6Qiw4RUFBOEU7WUFDOUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQy9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QiwrQkFBK0I7WUFDL0IsS0FBSyxFQUFFO1lBQ1AsbUNBQW1DO1lBQ25DLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDakIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUNILENBQ0YsRUFDRCxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUVlLGFBQWEsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRW5FO1FBQ0UsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDcEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFekMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxVQUFVLEdBQUcsNEJBQTRCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBRW5CLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3RDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3JFLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ25ILG1CQUFtQixFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCw0R0FBNEc7UUFDNUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUNsQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQ1Y7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQzdGLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN0QixtQkFBbUIsRUFBRSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtJQUNqQixJQUFJLENBQUMsVUFBa0M7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBVSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFRO1FBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBTSxDQUFDLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBRUQscUNBQXFDO1FBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUUzQixzRkFBc0Y7UUFDdEYsb0dBQW9HO1FBQ3BHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVSLGFBQWE7UUFDYixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUF3QixFQUFFLFFBQVEsR0FBRyxJQUFJO1FBQ25ELE1BQU0sSUFBSSxHQUFHLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsZUFBZTtJQUNmLGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBN01VLGtCQUFrQjs0RkFBbEIsa0JBQWtCLGlHQUxsQixxQkFBcUIsQ0FBQyxrQkFBa0IsQ0FBQyxzRUFRcEIsVUFBVSxzRkFoQmhDOzs7O0dBSVQsMkRBS1MsV0FBVyxtU0FBRSxtQkFBbUIsK0tBQUUsWUFBWTs7NEZBSTdDLGtCQUFrQjtrQkFoQjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFFBQVEsRUFBRSxRQUFRO29CQUNsQixRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxJQUFJLEVBQUU7d0JBQ0osS0FBSyxFQUFFLFlBQVk7cUJBQ3BCO29CQUNELFNBQVMsRUFBRSxxQkFBcUIsb0JBQW9CO29CQUNwRCxPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxDQUFDO29CQUN6RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0LCBjb21wdXRlZCwgaW5qZWN0LCBzaWduYWwsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnLCBGb3JtbHlGb3JtLCBGb3JtbHlGb3JtT3B0aW9ucywgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCB0aHJvdHRsZVRpbWUsIHN0YXJ0V2l0aCwgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHNoYXJlUmVwbGF5LCBvZiwgc2NhbiwgZmlsdGVyLCB0aW1lciwgZmlyc3QsIG1lcmdlLCBkZWxheSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2xlYW5XaXRoTG9ja1NldCB9IGZyb20gJ0BkZXJlZWtiL2RieC1jb3JlJztcbmltcG9ydCB7IERieEZvcm0sIERieEZvcm1EaXNhYmxlZEtleSwgRGJ4Rm9ybUV2ZW50LCBEYnhGb3JtU3RhdGUsIERFRkFVTFRfRk9STV9ESVNBQkxFRF9LRVksIHByb3ZpZGVEYnhNdXRhYmxlRm9ybSwgdG9nZ2xlRGlzYWJsZUZvcm1Db250cm9sIH0gZnJvbSAnLi4vZm9ybS9mb3JtJztcbmltcG9ydCB7IERieEZvcm1seUNvbnRleHQsIERieEZvcm1seUNvbnRleHREZWxlZ2F0ZSwgRGJ4Rm9ybWx5SW5pdGlhbGl6ZSB9IGZyb20gJy4vZm9ybWx5LmNvbnRleHQnO1xuaW1wb3J0IHsgc2NhbkNvdW50LCBzd2l0Y2hNYXBGaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBCb29sZWFuU3RyaW5nS2V5QXJyYXksIEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHksIGl0ZXJhYmxlc0FyZVNldEVxdWl2YWxlbnQsIHR5cGUgTWF5YmUgfSBmcm9tICdAZGVyZWVrYi91dGlsJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERieEZvcm1seUZvcm1TdGF0ZSB7XG4gIGNoYW5nZXNTaW5jZUxhc3RSZXNldENvdW50OiBudW1iZXI7XG4gIGlzRm9ybVZhbGlkOiBib29sZWFuO1xuICBpc0Zvcm1EaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBVc2VkIGZvciByZW5kaW5nIGEgZm9ybSBmcm9tIGEgRGJ4Rm9ybWx5Q29udGV4dC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGJ4LWZvcm1seScsXG4gIGV4cG9ydEFzOiAnZm9ybWx5JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImRieC1mb3JtbHlcIj5cbiAgICAgIDxmb3JtbHktZm9ybSBbZm9ybV09XCJmb3JtXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiIFtmaWVsZHNdPVwiZmllbGRzU2lnbmFsKClcIiBbbW9kZWxdPVwibW9kZWxTaWduYWwoKVwiPjwvZm9ybWx5LWZvcm0+XG4gICAgPC9mb3JtPlxuICBgLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdkYngtZm9ybWx5J1xuICB9LFxuICBwcm92aWRlcnM6IHByb3ZpZGVEYnhNdXRhYmxlRm9ybShEYnhGb3JtbHlDb21wb25lbnQpLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1seU1vZHVsZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1seUNvbXBvbmVudDxUPiBpbXBsZW1lbnRzIERieEZvcm0sIERieEZvcm1seUNvbnRleHREZWxlZ2F0ZTxUPiwgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGJ4Rm9ybWx5Q29udGV4dCA9IGluamVjdChEYnhGb3JtbHlDb250ZXh0PFQ+KTtcblxuICByZWFkb25seSBmb3JtbHlGb3JtID0gdmlld0NoaWxkKEZvcm1seUZvcm0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpZWxkcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWF5YmU8T2JzZXJ2YWJsZTxGb3JtbHlGaWVsZENvbmZpZ1tdPj4+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V2ZW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGJ4Rm9ybUV2ZW50Pih7IGlzQ29tcGxldGU6IGZhbHNlLCBzdGF0ZTogRGJ4Rm9ybVN0YXRlLklOSVRJQUxJWklORywgc3RhdHVzOiAnUEVORElORycgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuU3RyaW5nS2V5QXJyYXk+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERhdGU+KG5ldyBEYXRlKCkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JjZVVwZGF0ZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWRTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VuZm9yY2VEaXNhYmxlZFN1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcblxuICByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHJlYWRvbmx5IG1vZGVsU2lnbmFsID0gc2lnbmFsPFQ+KHt9IGFzIFQpO1xuXG4gIHJlYWRvbmx5IG9wdGlvbnM6IEZvcm1seUZvcm1PcHRpb25zID0ge307XG5cbiAgcmVhZG9ubHkgZmllbGRzJCA9IHRoaXMuX2ZpZWxkcy5waXBlKHN3aXRjaE1hcEZpbHRlck1heWJlKCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHNoYXJlUmVwbGF5KDEpKTtcblxuICByZWFkb25seSBzdHJlYW0kOiBPYnNlcnZhYmxlPERieEZvcm1FdmVudD4gPSB0aGlzLl9yZXNldC5waXBlKFxuICAgIHN3aXRjaE1hcCgobGFzdFJlc2V0QXQpID0+XG4gICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGhyb3R0bGVUaW1lKDUwLCB1bmRlZmluZWQsIHsgbGVhZGluZzogdHJ1ZSwgdHJhaWxpbmc6IHRydWUgfSksXG4gICAgICAgIHNjYW5Db3VudCgtMSksXG4gICAgICAgIC8vIHVwZGF0ZSBvbiB2YWxpZGF0aW9uIGNoYW5nZXMgdG9vLiBEb2VzIG5vdCBjb3VudCB0b3dhcmRzIGNoYW5nZXMgc2luY2UgbGFzdCByZXNldC5cbiAgICAgICAgc3dpdGNoTWFwKChjaGFuZ2VzU2luY2VMYXN0UmVzZXQpID0+IHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKHRoaXMuZm9ybS5zdGF0dXMpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5waXBlKG1hcCgoKSA9PiBjaGFuZ2VzU2luY2VMYXN0UmVzZXQpKSksXG4gICAgICAgIG1hcCgoY2hhbmdlc1NpbmNlTGFzdFJlc2V0Q291bnQ6IG51bWJlcikgPT4gKHtcbiAgICAgICAgICBjaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudCxcbiAgICAgICAgICBpc0Zvcm1WYWxpZDogdGhpcy5mb3JtLnN0YXR1cyAhPT0gJ1BFTkRJTkcnICYmIHRoaXMuZm9ybS52YWxpZCxcbiAgICAgICAgICBpc0Zvcm1EaXNhYmxlZDogdGhpcy5mb3JtLmRpc2FibGVkXG4gICAgICAgIH0pKSxcbiAgICAgICAgc2NhbihcbiAgICAgICAgICAoYWNjOiBEYnhGb3JtbHlGb3JtU3RhdGUsIG5leHQ6IERieEZvcm1seUZvcm1TdGF0ZSkgPT4ge1xuICAgICAgICAgICAgLy8gUGFzcyBmb3J3YXJkIHZhbGlkIGlmIG5leHQgd2FzIGEgZGlzYWJsZWQgY2hhbmdlL2NoZWNrLCB3aGljaCBjaGFuZ2VzIGFuZ3VsYXIgZm9ybSdzIGlzVmFsaWQgdmFsdWUuXG4gICAgICAgICAgICAvLyBJZiBpdCB3YXMgdmFsaWQgcHJpb3IsIHRoZW4gaXQgc2hvdWxkIGJlIHZhbGlkIG5vdywgdW5sZXNzIHdlIGp1c3QgcmVzZXQsIGluIHdoaWNoIGNhc2UgaXQgbWlnaHQgbm90IGJlIHZhbGlkLlxuICAgICAgICAgICAgY29uc3QgdmFsaWQgPSBuZXh0LmlzRm9ybVZhbGlkIHx8IChuZXh0LmlzRm9ybURpc2FibGVkICYmIGFjYy5pc0Zvcm1WYWxpZCAmJiBhY2MuY2hhbmdlc1NpbmNlTGFzdFJlc2V0Q291bnQgPiAwKTtcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgY2hhbmdlc1NpbmNlTGFzdFJlc2V0Q291bnQ6IG5leHQuY2hhbmdlc1NpbmNlTGFzdFJlc2V0Q291bnQsXG4gICAgICAgICAgICAgIGlzRm9ybVZhbGlkOiB2YWxpZCxcbiAgICAgICAgICAgICAgaXNGb3JtRGlzYWJsZWQ6IG5leHQuaXNGb3JtRGlzYWJsZWRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudDogMCxcbiAgICAgICAgICAgIGlzRm9ybVZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgIGlzRm9ybURpc2FibGVkOiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgc3dpdGNoTWFwKCh7IGNoYW5nZXNTaW5jZUxhc3RSZXNldENvdW50LCBpc0Zvcm1WYWxpZCwgaXNGb3JtRGlzYWJsZWQgfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzUmVzZXQgPSBjaGFuZ2VzU2luY2VMYXN0UmVzZXRDb3VudCA8PSAxOyAvLyBmaXJzdCBlbWlzc2lvbiBhZnRlciByZXNldCBpcyB0aGUgZmlyc3QgdmFsdWUuXG4gICAgICAgICAgICBjb25zdCBjb21wbGV0ZSA9IGlzRm9ybVZhbGlkO1xuXG4gICAgICAgICAgICBjb25zdCBuZXh0U3RhdGU6IERieEZvcm1FdmVudCA9IHtcbiAgICAgICAgICAgICAgaXNDb21wbGV0ZTogY29tcGxldGUsXG4gICAgICAgICAgICAgIHN0YXRlOiBpc1Jlc2V0ID8gRGJ4Rm9ybVN0YXRlLlJFU0VUIDogRGJ4Rm9ybVN0YXRlLlVTRUQsXG4gICAgICAgICAgICAgIHN0YXR1czogdGhpcy5mb3JtLnN0YXR1cyxcbiAgICAgICAgICAgICAgdW50b3VjaGVkOiB0aGlzLmZvcm0udW50b3VjaGVkLFxuICAgICAgICAgICAgICBwcmlzdGluZTogdGhpcy5mb3JtLnByaXN0aW5lLFxuICAgICAgICAgICAgICBjaGFuZ2VzQ291bnQ6IGNoYW5nZXNTaW5jZUxhc3RSZXNldENvdW50LFxuICAgICAgICAgICAgICBsYXN0UmVzZXRBdCxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRm9ybURpc2FibGVkXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBzdGF0ZSA9IG5leHRTdGF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGlzRm9ybVZhbGlkICYmIHRoaXMuZm9ybS51bnRvdWNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aW1lcigxNTAsIDIwMCkucGlwZShcbiAgICAgICAgICAgICAgLy8gZXZlcnkgMjAwIG1zIGNoZWNrIGlmIHRoZSBmb3JtIGlzIG5vdyBtYXJrZWQgdG91Y2hlZCwgdGhlbiBwdXNoIGEgbmV3IHN0YXRlXG4gICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvcm0udG91Y2hlZCksXG4gICAgICAgICAgICAgIG1hcCgoKSA9PiBuZXh0U3RhdGUoKSksXG4gICAgICAgICAgICAgIC8vIG9ubHkgcHVzaCB0aGUgbmV3IHN0YXRlIG9uY2VcbiAgICAgICAgICAgICAgZmlyc3QoKSxcbiAgICAgICAgICAgICAgLy8gc2VuZCB0aGUgZmlyc3QgdmFsdWUgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgICAgc3RhcnRXaXRoKHN0YXRlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG9mKHN0YXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSgxKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpZWxkc1NpZ25hbCA9IHRvU2lnbmFsKHRoaXMuZmllbGRzJCwgeyBpbml0aWFsVmFsdWU6IHVuZGVmaW5lZCB9KTtcblxuICByZWFkb25seSBmaWVsZHNTaWduYWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9maWVsZHNTaWduYWwoKSA/PyBbXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY2xlYW5XaXRoTG9ja1NldCh0aGlzLl9kYnhGb3JtbHlDb250ZXh0LmxvY2tTZXQsICgpID0+IHtcbiAgICAgIHRoaXMuX2RieEZvcm1seUNvbnRleHQuY2xlYXJEZWxlZ2F0ZSh0aGlzKTtcbiAgICAgIHRoaXMuX2V2ZW50cy5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fZmllbGRzLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9yZXNldC5jb21wbGV0ZSgpO1xuICAgICAgdGhpcy5fZm9yY2VVcGRhdGUuY29tcGxldGUoKTtcbiAgICAgIHRoaXMuX2Rpc2FibGVkLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLl9kaXNhYmxlZFN1Yi5kZXN0cm95KCk7XG4gICAgICB0aGlzLl9lbmZvcmNlRGlzYWJsZWRTdWIuZGVzdHJveSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZGJ4Rm9ybWx5Q29udGV4dC5zZXREZWxlZ2F0ZSh0aGlzKTtcblxuICAgIGNvbnN0IHJlc3luY0Rpc2FibGVkU3RhdGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc0Rpc2FibGVkID0gQm9vbGVhblN0cmluZ0tleUFycmF5VXRpbGl0eS5pc1RydWUodGhpcy5fZGlzYWJsZWQudmFsdWUpO1xuICAgICAgbGV0IGNoYW5nZSA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5mb3JtLmRpc2FibGVkICE9PSBpc0Rpc2FibGVkKSB7XG4gICAgICAgIHRvZ2dsZURpc2FibGVGb3JtQ29udHJvbCh0aGlzLmZvcm0sIGlzRGlzYWJsZWQsIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xuICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhbmdlO1xuICAgIH07XG5cbiAgICB0aGlzLl9kaXNhYmxlZFN1Yi5zdWJzY3JpcHRpb24gPSB0aGlzLl9kaXNhYmxlZC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKGl0ZXJhYmxlc0FyZVNldEVxdWl2YWxlbnQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgcmVzeW5jRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgLy8gTk9URTogRm9ybSBzb21ldGltZXMgYmVjb21lcyB1bmRpc2FibGVkIHNvbWV3aGVyZS9zb21laG93LiBSZS1lbmZvcmNlIHRoZSBkaXNhYmxlZCBzdGF0ZSB3aGVyZSBuZWNlc3NhcnkuXG4gICAgdGhpcy5fZW5mb3JjZURpc2FibGVkU3ViLnN1YnNjcmlwdGlvbiA9IG1lcmdlKFtcbiAgICAgIHRoaXMuX3Jlc2V0LnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiAnUkVTRVQnKSxcbiAgICAgICAgZGVsYXkoNTApXG4gICAgICApLFxuICAgICAgdGhpcy5mb3JtLnN0YXR1c0NoYW5nZXMucGlwZSh0aHJvdHRsZVRpbWUoNTAsIHVuZGVmaW5lZCwgeyBsZWFkaW5nOiB0cnVlLCB0cmFpbGluZzogdHJ1ZSB9KSlcbiAgICBdKS5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgcmVzeW5jRGlzYWJsZWRTdGF0ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gTUFSSzogRGVsZWdhdGVcbiAgaW5pdChpbml0aWFsaXplOiBEYnhGb3JtbHlJbml0aWFsaXplPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5fZmllbGRzLm5leHQoaW5pdGlhbGl6ZS5maWVsZHMpO1xuICAgIHRoaXMuX2Rpc2FibGVkLm5leHQoaW5pdGlhbGl6ZS5pbml0aWFsRGlzYWJsZWQpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuZm9ybS52YWx1ZSBhcyBUKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbFNpZ25hbC5zZXQoc3RydWN0dXJlZENsb25lKHZhbHVlKSBhcyBUKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMudXBkYXRlSW5pdGlhbFZhbHVlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMudXBkYXRlSW5pdGlhbFZhbHVlKCk7XG4gICAgICB0aGlzLm9wdGlvbnMucmVzZXRNb2RlbD8uKCk7XG4gICAgfVxuXG4gICAgLy8gUmUtbWFyayBhcyB1bnRvdWNoZWQgYW5kIHByaXN0aW5lLlxuICAgIHRoaXMuZm9ybS5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcblxuICAgIC8vIEFmdGVyIHVwZGF0aW5nIHRoZSB2YWx1ZSwgaWYgdGhlIGZvcm0gaXMgc3RpbGwgdW50b3VjaGVkIG1hcmsgaXQgYXMgcHJpc3RpbmUgYWdhaW4uXG4gICAgLy8gU29tZXRpbWVzIHRoZSB2YWx1ZXMgZ2V0IG1hcmtlZCBhcyBjaGFuZ2VkIGFuZCBicmVhayBwcmlzdGluZSBiZWZvcmUgYSB1c2VyIGhhcyB0aW1lIHRvIGludGVyYWN0LlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybS51bnRvdWNoZWQpIHtcbiAgICAgICAgdGhpcy5mb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcblxuICAgIC8vIHBpbmcgcmVzZXRcbiAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICB9XG5cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wdGlvbnMucmVzZXRNb2RlbCkge1xuICAgICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZXNldC5uZXh0KG5ldyBEYXRlKCkpO1xuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW5TdHJpbmdLZXlBcnJheVV0aWxpdHkuaXNUcnVlKHRoaXMuZGlzYWJsZWQpO1xuICB9XG5cbiAgZ2V0IGRpc2FibGVkKCk6IEJvb2xlYW5TdHJpbmdLZXlBcnJheSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkLnZhbHVlO1xuICB9XG5cbiAgZ2V0RGlzYWJsZWQoKTogT2JzZXJ2YWJsZTxCb29sZWFuU3RyaW5nS2V5QXJyYXk+IHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBzZXREaXNhYmxlZChrZXk/OiBEYnhGb3JtRGlzYWJsZWRLZXksIGRpc2FibGVkID0gdHJ1ZSk6IHZvaWQge1xuICAgIGNvbnN0IG5leHQgPSBCb29sZWFuU3RyaW5nS2V5QXJyYXlVdGlsaXR5LnNldCh0aGlzLmRpc2FibGVkLCBrZXkgPz8gREVGQVVMVF9GT1JNX0RJU0FCTEVEX0tFWSwgZGlzYWJsZWQpO1xuICAgIHRoaXMuX2Rpc2FibGVkLm5leHQobmV4dCk7XG4gIH1cblxuICAvLyBNQVJLOiBVcGRhdGVcbiAgZm9yY2VGb3JtVXBkYXRlKCk6IHZvaWQge1xuICAgIHRoaXMuX2ZvcmNlVXBkYXRlLm5leHQoKTtcbiAgfVxufVxuIl19
|
|
@@ -5,8 +5,8 @@ import { DbxActionTransitionSafetyDirective, AbstractDialogDirective, DbxDialogC
|
|
|
5
5
|
import { isPast, addSeconds, startOfDay, addMinutes, addDays, isBefore } from 'date-fns';
|
|
6
6
|
import { map, of, shareReplay, switchMap, first, exhaustMap, catchError, delay, filter, combineLatest, distinctUntilChanged, BehaviorSubject, Subject, startWith, throttleTime, scan, timer, merge, tap, takeUntil, EMPTY, mergeMap, debounceTime, skip, combineLatestWith, interval } from 'rxjs';
|
|
7
7
|
import * as i2 from '@dereekb/dbx-core';
|
|
8
|
-
import { DbxActionContextStoreSourceInstance,
|
|
9
|
-
import {
|
|
8
|
+
import { DbxActionContextStoreSourceInstance, cleanLockSet, cleanWithLockSet, cleanSubscription, DbxInjectionComponent, mergeDbxInjectionComponentConfigs, GetValuePipe, DateDistancePipe, TimeDistancePipe } from '@dereekb/dbx-core';
|
|
9
|
+
import { makeIsModifiedFunctionObservable, SubscriptionObject, asObservable, LockSet, filterMaybe, switchMapFilterMaybe, scanCount, cleanup, errorOnEmissionsInPeriod, asObservableFromGetter, maybeValueFromObservableOrValue, valueFromFinishedLoadingState, switchMapMaybeDefault, SimpleLoadingContext, distinctUntilHasDifferentValues, startWithBeginLoading, mapLoadingStateResults, successResult, listLoadingStateContext, mapIsListLoadingStateWithEmptyValue, loadingStateContext, isLoadingStateInLoadingState, isLoadingStateWithDefinedValue, isLoadingStateLoading, beginLoading, mapLoadingStateValueWithOperator, skipFirstMaybe, asyncPusherCache } from '@dereekb/rxjs';
|
|
10
10
|
import { toObservable, toSignal } from '@angular/core/rxjs-interop';
|
|
11
11
|
import { BooleanStringKeyArrayUtility, iterablesAreSetEquivalent, objectIsEmpty, mergeObjectsFunction, filterFromPOJOFunction, mergeObjects, filterFromPOJO, asArray, objectHasNoKeys, addPlusPrefixToNumber, convertMaybeToArray, isSelectedDecisionFunctionFactory, readKeysFrom, hasDifferentValues, makeValuesGroupMap, separateValues, filterUniqueValues, searchStringFilterFunction, caseInsensitiveFilterByIndexOfDecisionFactory, sortByStringFunction, mergeArraysIntoArray, lastValue, arrayToMap, setContainsAllValues, addToSetCopy, setsAreEquivalent, filterMaybeArrayValues, mergeArrays, firstValue, cachedGetter, makeGetter, asDecisionFunction, getValueFromGetter, asGetter, dateFromMinuteOfDay, dateToMinuteOfDay, isISO8601DayStringStart, mapIdentityFunction, MS_IN_MINUTE, isMonthDaySlashDate, HAS_WEBSITE_DOMAIN_NAME_REGEX, KeyValueTypleValueFilter, valuesFromPOJO, allObjectsAreEqual, isNumberDivisibleBy, nearestDivisibleValues, isE164PhoneNumber as isE164PhoneNumber$1, isValidPhoneExtensionNumber, e164PhoneNumberExtensionPair, isWebsiteUrlWithPrefix, websiteUrlDetails, mapMaybeFunction, transformNumberFunction, concatArrays, DOLLAR_AMOUNT_PRECISION, e164PhoneNumberFromE164PhoneNumberExtensionPair, transformStringFunction, US_STATE_CODE_STRING_REGEX, ZIP_CODE_STRING_REGEX, LAT_LNG_PATTERN, capitalizeFirstLetter } from '@dereekb/util';
|
|
12
12
|
import * as i1 from '@angular/forms';
|
|
@@ -111,7 +111,17 @@ const APP_ACTION_FORM_DISABLED_KEY = 'dbx_action_form';
|
|
|
111
111
|
class DbxActionFormDirective {
|
|
112
112
|
form = inject((DbxMutableForm), { host: true });
|
|
113
113
|
source = inject((DbxActionContextStoreSourceInstance));
|
|
114
|
-
lockSet =
|
|
114
|
+
lockSet = cleanLockSet({
|
|
115
|
+
onDestroy: () => {
|
|
116
|
+
this.source.enable(APP_ACTION_FORM_DISABLED_KEY);
|
|
117
|
+
},
|
|
118
|
+
onLockSetDestroy: () => {
|
|
119
|
+
this._triggeredSub.destroy();
|
|
120
|
+
this._isCompleteSub.destroy();
|
|
121
|
+
this._isWorkingSub.destroy();
|
|
122
|
+
this.form.setDisabled(APP_ACTION_FORM_DISABLED_KEY, false);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
115
125
|
/**
|
|
116
126
|
* Whether or not to disable the form while the action is working.
|
|
117
127
|
*
|
|
@@ -218,15 +228,6 @@ class DbxActionFormDirective {
|
|
|
218
228
|
this.form.setDisabled(APP_ACTION_FORM_DISABLED_KEY, disable);
|
|
219
229
|
});
|
|
220
230
|
}
|
|
221
|
-
ngOnDestroy() {
|
|
222
|
-
this.source.enable(APP_ACTION_FORM_DISABLED_KEY);
|
|
223
|
-
this.lockSet.destroyOnNextUnlock(() => {
|
|
224
|
-
this._triggeredSub.destroy();
|
|
225
|
-
this._isCompleteSub.destroy();
|
|
226
|
-
this._isWorkingSub.destroy();
|
|
227
|
-
this.form.setDisabled(APP_ACTION_FORM_DISABLED_KEY, false);
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
231
|
checkIsValidAndIsModified(value, overrides) {
|
|
231
232
|
const { isModifiedFunction: overrideIsModifiedFunction, isValidFunction: overrideIsValidFunction } = overrides ?? {};
|
|
232
233
|
const isValidFunctionObs = overrideIsValidFunction != null ? of(overrideIsValidFunction) : this.isValidFunction$;
|
|
@@ -414,7 +415,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
414
415
|
/**
|
|
415
416
|
* Used for rending a form from a DbxFormlyContext.
|
|
416
417
|
*/
|
|
417
|
-
class DbxFormlyComponent
|
|
418
|
+
class DbxFormlyComponent {
|
|
418
419
|
_dbxFormlyContext = inject((DbxFormlyContext));
|
|
419
420
|
formlyForm = viewChild(FormlyForm);
|
|
420
421
|
_fields = new BehaviorSubject(undefined);
|
|
@@ -480,6 +481,18 @@ class DbxFormlyComponent extends AbstractSubscriptionDirective {
|
|
|
480
481
|
}))), shareReplay(1));
|
|
481
482
|
_fieldsSignal = toSignal(this.fields$, { initialValue: undefined });
|
|
482
483
|
fieldsSignal = computed(() => this._fieldsSignal() ?? []);
|
|
484
|
+
constructor() {
|
|
485
|
+
cleanWithLockSet(this._dbxFormlyContext.lockSet, () => {
|
|
486
|
+
this._dbxFormlyContext.clearDelegate(this);
|
|
487
|
+
this._events.complete();
|
|
488
|
+
this._fields.complete();
|
|
489
|
+
this._reset.complete();
|
|
490
|
+
this._forceUpdate.complete();
|
|
491
|
+
this._disabled.complete();
|
|
492
|
+
this._disabledSub.destroy();
|
|
493
|
+
this._enforceDisabledSub.destroy();
|
|
494
|
+
});
|
|
495
|
+
}
|
|
483
496
|
ngOnInit() {
|
|
484
497
|
this._dbxFormlyContext.setDelegate(this);
|
|
485
498
|
const resyncDisabledState = () => {
|
|
@@ -502,19 +515,6 @@ class DbxFormlyComponent extends AbstractSubscriptionDirective {
|
|
|
502
515
|
resyncDisabledState();
|
|
503
516
|
});
|
|
504
517
|
}
|
|
505
|
-
ngOnDestroy() {
|
|
506
|
-
this._dbxFormlyContext.lockSet.onNextUnlock(() => {
|
|
507
|
-
super.ngOnDestroy();
|
|
508
|
-
this._dbxFormlyContext.clearDelegate(this);
|
|
509
|
-
this._events.complete();
|
|
510
|
-
this._fields.complete();
|
|
511
|
-
this._reset.complete();
|
|
512
|
-
this._forceUpdate.complete();
|
|
513
|
-
this._disabled.complete();
|
|
514
|
-
this._disabledSub.destroy();
|
|
515
|
-
this._enforceDisabledSub.destroy();
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
518
|
// MARK: Delegate
|
|
519
519
|
init(initialize) {
|
|
520
520
|
this._fields.next(initialize.fields);
|
|
@@ -565,8 +565,8 @@ class DbxFormlyComponent extends AbstractSubscriptionDirective {
|
|
|
565
565
|
forceFormUpdate() {
|
|
566
566
|
this._forceUpdate.next();
|
|
567
567
|
}
|
|
568
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormlyComponent, deps:
|
|
569
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: DbxFormlyComponent, isStandalone: true, selector: "dbx-formly", host: { classAttribute: "dbx-formly" }, providers: provideDbxMutableForm(DbxFormlyComponent), viewQueries: [{ propertyName: "formlyForm", first: true, predicate: FormlyForm, descendants: true, isSignal: true }], exportAs: ["formly"],
|
|
568
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormlyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
569
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: DbxFormlyComponent, isStandalone: true, selector: "dbx-formly", host: { classAttribute: "dbx-formly" }, providers: provideDbxMutableForm(DbxFormlyComponent), viewQueries: [{ propertyName: "formlyForm", first: true, predicate: FormlyForm, descendants: true, isSignal: true }], exportAs: ["formly"], ngImport: i0, template: `
|
|
570
570
|
<form [formGroup]="form" class="dbx-formly">
|
|
571
571
|
<formly-form [form]="form" [options]="options" [fields]="fieldsSignal()" [model]="modelSignal()"></formly-form>
|
|
572
572
|
</form>
|
|
@@ -590,7 +590,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
590
590
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
591
591
|
standalone: true
|
|
592
592
|
}]
|
|
593
|
-
}] });
|
|
593
|
+
}], ctorParameters: () => [] });
|
|
594
594
|
|
|
595
595
|
function dbxFormSourceObservable(form, inputObs, modeObs) {
|
|
596
596
|
return dbxFormSourceObservableFromStream(form.stream$, inputObs, modeObs);
|
|
@@ -653,10 +653,11 @@ function dbxFormSourceObservableFromStream(streamObs, inputObs, modeObs) {
|
|
|
653
653
|
/**
|
|
654
654
|
* Used with a FormComponent to set the value based on the input value.
|
|
655
655
|
*/
|
|
656
|
-
class DbxFormSourceDirective
|
|
656
|
+
class DbxFormSourceDirective {
|
|
657
657
|
form = inject((DbxMutableForm), { host: true });
|
|
658
658
|
dbxFormSourceMode = input();
|
|
659
659
|
dbxFormSource = input();
|
|
660
|
+
_effectSub = cleanSubscription();
|
|
660
661
|
_setFormSourceObservableEffect = effect(() => {
|
|
661
662
|
const formSource = this.dbxFormSource();
|
|
662
663
|
const mode = this.dbxFormSourceMode() ?? 'reset';
|
|
@@ -666,12 +667,10 @@ class DbxFormSourceDirective extends AbstractSubscriptionDirective {
|
|
|
666
667
|
this.form.setValue(x);
|
|
667
668
|
});
|
|
668
669
|
}
|
|
669
|
-
this.
|
|
670
|
-
}, {
|
|
671
|
-
|
|
672
|
-
});
|
|
673
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormSourceDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
674
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFormSourceDirective, isStandalone: true, selector: "[dbxFormSource]", inputs: { dbxFormSourceMode: { classPropertyName: "dbxFormSourceMode", publicName: "dbxFormSourceMode", isSignal: true, isRequired: false, transformFunction: null }, dbxFormSource: { classPropertyName: "dbxFormSource", publicName: "dbxFormSource", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
670
|
+
this._effectSub.setSub(subscription);
|
|
671
|
+
}, { allowSignalWrites: true });
|
|
672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
673
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFormSourceDirective, isStandalone: true, selector: "[dbxFormSource]", inputs: { dbxFormSourceMode: { classPropertyName: "dbxFormSourceMode", publicName: "dbxFormSourceMode", isSignal: true, isRequired: false, transformFunction: null }, dbxFormSource: { classPropertyName: "dbxFormSource", publicName: "dbxFormSource", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
675
674
|
}
|
|
676
675
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormSourceDirective, decorators: [{
|
|
677
676
|
type: Directive,
|
|
@@ -685,7 +684,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
685
684
|
*
|
|
686
685
|
*/
|
|
687
686
|
class DbxFormActionDialogComponent extends AbstractDialogDirective {
|
|
688
|
-
_fieldsSub =
|
|
687
|
+
_fieldsSub = cleanSubscription();
|
|
689
688
|
context = inject((DbxFormlyContext), { self: true });
|
|
690
689
|
fields$ = asObservableFromGetter(this.data.fields);
|
|
691
690
|
initialValue$ = asObservableFromGetter(this.data.initialValue);
|
|
@@ -695,14 +694,9 @@ class DbxFormActionDialogComponent extends AbstractDialogDirective {
|
|
|
695
694
|
...this.data.submitButtonConfig
|
|
696
695
|
};
|
|
697
696
|
ngOnInit() {
|
|
698
|
-
|
|
699
|
-
this._fieldsSub.subscription = this.fields$.pipe(distinctUntilChanged()).subscribe((fields) => {
|
|
697
|
+
this._fieldsSub.setSub(this.fields$.pipe(distinctUntilChanged()).subscribe((fields) => {
|
|
700
698
|
this.context.fields = fields;
|
|
701
|
-
});
|
|
702
|
-
}
|
|
703
|
-
ngOnDestroy() {
|
|
704
|
-
super.ngOnDestroy();
|
|
705
|
-
this._fieldsSub.destroy();
|
|
699
|
+
}));
|
|
706
700
|
}
|
|
707
701
|
handleSubmitValue = (value, context) => {
|
|
708
702
|
context.success();
|
|
@@ -755,20 +749,19 @@ const DEFAULT_DBX_FORM_LOADING_SOURCE_DIRECTIVE_MODE = 'reset';
|
|
|
755
749
|
*
|
|
756
750
|
* Only passes non-null values from the source.
|
|
757
751
|
*/
|
|
758
|
-
class DbxFormLoadingSourceDirective
|
|
752
|
+
class DbxFormLoadingSourceDirective {
|
|
759
753
|
form = inject((DbxMutableForm), { host: true });
|
|
760
754
|
dbxFormLoadingSourceMode = input(DEFAULT_DBX_FORM_LOADING_SOURCE_DIRECTIVE_MODE, { transform: (x) => x ?? DEFAULT_DBX_FORM_LOADING_SOURCE_DIRECTIVE_MODE });
|
|
761
755
|
dbxFormLoadingSource = input();
|
|
762
756
|
mode$ = toObservable(this.dbxFormLoadingSourceMode);
|
|
763
757
|
source$ = toObservable(this.dbxFormLoadingSource).pipe(maybeValueFromObservableOrValue(), filterMaybe(), valueFromFinishedLoadingState());
|
|
764
758
|
constructor() {
|
|
765
|
-
|
|
766
|
-
this.sub = dbxFormSourceObservableFromStream(this.form.stream$, this.source$, this.mode$).subscribe((x) => {
|
|
759
|
+
cleanSubscription(dbxFormSourceObservableFromStream(this.form.stream$, this.source$, this.mode$).subscribe((x) => {
|
|
767
760
|
this.form.setValue(x);
|
|
768
|
-
});
|
|
761
|
+
}));
|
|
769
762
|
}
|
|
770
763
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormLoadingSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
771
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFormLoadingSourceDirective, isStandalone: true, selector: "[dbxFormLoadingSource]", inputs: { dbxFormLoadingSourceMode: { classPropertyName: "dbxFormLoadingSourceMode", publicName: "dbxFormLoadingSourceMode", isSignal: true, isRequired: false, transformFunction: null }, dbxFormLoadingSource: { classPropertyName: "dbxFormLoadingSource", publicName: "dbxFormLoadingSource", isSignal: true, isRequired: false, transformFunction: null } },
|
|
764
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxFormLoadingSourceDirective, isStandalone: true, selector: "[dbxFormLoadingSource]", inputs: { dbxFormLoadingSourceMode: { classPropertyName: "dbxFormLoadingSourceMode", publicName: "dbxFormLoadingSourceMode", isSignal: true, isRequired: false, transformFunction: null }, dbxFormLoadingSource: { classPropertyName: "dbxFormLoadingSource", publicName: "dbxFormLoadingSource", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
772
765
|
}
|
|
773
766
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormLoadingSourceDirective, decorators: [{
|
|
774
767
|
type: Directive,
|
|
@@ -783,11 +776,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
783
776
|
*
|
|
784
777
|
* Emits undefined when the form is incomplete, and the value when the form is complete.
|
|
785
778
|
*/
|
|
786
|
-
class DbxFormValueChangeDirective
|
|
779
|
+
class DbxFormValueChangeDirective {
|
|
787
780
|
form = inject((DbxForm), { host: true });
|
|
788
781
|
dbxFormValueChange = output();
|
|
782
|
+
_sub = cleanSubscription();
|
|
789
783
|
ngOnInit() {
|
|
790
|
-
|
|
784
|
+
// specifically call within ngOnInit to ensure first emission occurs after the form is initialized.
|
|
785
|
+
this._sub.setSub(this.form.stream$
|
|
791
786
|
.pipe(mergeMap((x) => this.form.getValue().pipe(first(), map((value) => ({ isComplete: x.isComplete, value })))), delay(0))
|
|
792
787
|
.subscribe(({ isComplete, value }) => {
|
|
793
788
|
if (isComplete) {
|
|
@@ -796,10 +791,10 @@ class DbxFormValueChangeDirective extends AbstractSubscriptionDirective {
|
|
|
796
791
|
else {
|
|
797
792
|
this.dbxFormValueChange.emit(undefined);
|
|
798
793
|
}
|
|
799
|
-
});
|
|
794
|
+
}));
|
|
800
795
|
}
|
|
801
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormValueChangeDirective, deps:
|
|
802
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFormValueChangeDirective, isStandalone: true, selector: "[dbxFormValueChange]", outputs: { dbxFormValueChange: "dbxFormValueChange" },
|
|
796
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormValueChangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
797
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFormValueChangeDirective, isStandalone: true, selector: "[dbxFormValueChange]", outputs: { dbxFormValueChange: "dbxFormValueChange" }, ngImport: i0 });
|
|
803
798
|
}
|
|
804
799
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFormValueChangeDirective, decorators: [{
|
|
805
800
|
type: Directive,
|
|
@@ -925,18 +920,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
925
920
|
}]
|
|
926
921
|
}] });
|
|
927
922
|
|
|
928
|
-
class DbxChecklistItemContentComponent
|
|
923
|
+
class DbxChecklistItemContentComponent {
|
|
929
924
|
checklistItemFieldComponent = inject((DbxChecklistItemFieldComponent));
|
|
930
925
|
config = {
|
|
931
926
|
componentClass: this.checklistItemFieldComponent.componentClass,
|
|
932
927
|
init: (instance) => {
|
|
933
|
-
this.
|
|
928
|
+
cleanSubscription(this.checklistItemFieldComponent.displayContent$.subscribe((content) => {
|
|
934
929
|
instance.setDisplayContent(content);
|
|
935
|
-
});
|
|
930
|
+
}));
|
|
936
931
|
}
|
|
937
932
|
};
|
|
938
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxChecklistItemContentComponent, deps:
|
|
939
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxChecklistItemContentComponent, isStandalone: true, selector: "dbx-checklist-item-content-component",
|
|
933
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxChecklistItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
934
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxChecklistItemContentComponent, isStandalone: true, selector: "dbx-checklist-item-content-component", ngImport: i0, template: `
|
|
940
935
|
<dbx-injection [config]="config"></dbx-injection>
|
|
941
936
|
`, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
942
937
|
}
|
|
@@ -984,6 +979,7 @@ class DbxChecklistItemFieldComponent extends FieldType {
|
|
|
984
979
|
return this.checklistField.componentClass ?? DbxDefaultChecklistItemFieldDisplayComponent;
|
|
985
980
|
}
|
|
986
981
|
ngOnInit() {
|
|
982
|
+
// field prop is finally available here
|
|
987
983
|
this._displayContentObs.set(this.checklistField.displayContent);
|
|
988
984
|
}
|
|
989
985
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxChecklistItemFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -1328,7 +1324,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1328
1324
|
}] });
|
|
1329
1325
|
|
|
1330
1326
|
/**
|
|
1331
|
-
* Adds a loading bar to help signify
|
|
1327
|
+
* Adds a loading bar to help signify asynchronous work is occuring.
|
|
1332
1328
|
*
|
|
1333
1329
|
* By default shows loading during asynchronous validation of a field (FormControl status is "PENDING")
|
|
1334
1330
|
*/
|
|
@@ -6226,10 +6222,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
6226
6222
|
class AbstractFormlyFormDirective {
|
|
6227
6223
|
context = inject((DbxFormlyContext), { self: true });
|
|
6228
6224
|
disabled = input(false);
|
|
6229
|
-
|
|
6230
|
-
ngOnDestroy() {
|
|
6231
|
-
this._setDisabledOnContext.destroy();
|
|
6232
|
-
}
|
|
6225
|
+
_disabledEffect = effect(() => this.context.setDisabled(undefined, this.disabled()));
|
|
6233
6226
|
// Utility Functions
|
|
6234
6227
|
getValue() {
|
|
6235
6228
|
return this.context.getValue();
|
|
@@ -6269,15 +6262,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
6269
6262
|
* Abstract component for wrapping an asyncrhronously-configured form.
|
|
6270
6263
|
*/
|
|
6271
6264
|
class AbstractAsyncFormlyFormDirective extends AbstractFormlyFormDirective {
|
|
6272
|
-
|
|
6265
|
+
_fieldSub = cleanSubscription();
|
|
6273
6266
|
ngOnInit() {
|
|
6274
|
-
|
|
6267
|
+
// fields$ is only available after initialization.
|
|
6268
|
+
this._fieldSub.setSub(this.fields$.pipe(distinctUntilChanged()).subscribe((fields) => {
|
|
6275
6269
|
this.context.fields = fields;
|
|
6276
|
-
});
|
|
6277
|
-
}
|
|
6278
|
-
ngOnDestroy() {
|
|
6279
|
-
super.ngOnDestroy();
|
|
6280
|
-
this._fieldsSub.destroy();
|
|
6270
|
+
}));
|
|
6281
6271
|
}
|
|
6282
6272
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractAsyncFormlyFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
6283
6273
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractAsyncFormlyFormDirective, usesInheritance: true, ngImport: i0 });
|