@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.
Files changed (25) hide show
  1. package/esm2022/lib/form/action/form.action.dialog.component.mjs +6 -10
  2. package/esm2022/lib/form/action/form.action.directive.mjs +14 -13
  3. package/esm2022/lib/form/io/form.change.directive.mjs +9 -7
  4. package/esm2022/lib/form/io/form.input.directive.mjs +8 -9
  5. package/esm2022/lib/form/io/form.loading.directive.mjs +6 -7
  6. package/esm2022/lib/formly/field/checklist/checklist.item.field.component.mjs +8 -7
  7. package/esm2022/lib/formly/field/wrapper/working.wrapper.component.mjs +2 -2
  8. package/esm2022/lib/formly/form/search.form.component.mjs +1 -1
  9. package/esm2022/lib/formly/formly.context.directive.mjs +1 -1
  10. package/esm2022/lib/formly/formly.directive.mjs +8 -13
  11. package/esm2022/lib/formly/formly.form.component.mjs +18 -19
  12. package/fesm2022/dereekb-dbx-form.mjs +61 -71
  13. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  14. package/lib/form/action/form.action.dialog.component.d.ts +2 -3
  15. package/lib/form/action/form.action.directive.d.ts +4 -5
  16. package/lib/form/io/form.change.directive.d.ts +3 -3
  17. package/lib/form/io/form.input.directive.d.ts +2 -3
  18. package/lib/form/io/form.loading.directive.d.ts +1 -3
  19. package/lib/formly/field/checklist/checklist.item.field.component.d.ts +2 -2
  20. package/lib/formly/field/wrapper/working.wrapper.component.d.ts +1 -1
  21. package/lib/formly/form/search.form.component.d.ts +1 -2
  22. package/lib/formly/formly.context.directive.d.ts +1 -2
  23. package/lib/formly/formly.directive.d.ts +7 -9
  24. package/lib/formly/formly.form.component.d.ts +3 -4
  25. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LmNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWEsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sK0JBQTZDLFNBQVEsZ0NBQW1DO0lBQzFGLE1BQU0sR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDcEYsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0dBRmxDLCtCQUErQjs0RkFBL0IsK0JBQStCLGdOQUgvQixvQkFBb0IsRUFBRTs7NEZBR3RCLCtCQUErQjtrQkFMM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIE9uRGVzdHJveSwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHByb3ZpZGVGb3JtbHlDb250ZXh0IH0gZnJvbSAnLi9mb3JtbHkuY29udGV4dCc7XG5pbXBvcnQgeyBBYnN0cmFjdEFzeW5jRm9ybWx5Rm9ybURpcmVjdGl2ZSB9IGZyb20gJy4vZm9ybWx5LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyB0eXBlIE1heWJlIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKlxuICogUHJvdmlkZXMgYW4gRGJ4Rm9ybWx5Q29udGV4dCBhbmQgaGFzIGFuIGlucHV0IGZvciBmaWVsZHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkYnhGb3JtbHlGaWVsZHNdJyxcbiAgcHJvdmlkZXJzOiBwcm92aWRlRm9ybWx5Q29udGV4dCgpLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIERieEZvcm1seUZpZWxkc0NvbnRleHREaXJlY3RpdmU8VCA9IHVua25vd24+IGV4dGVuZHMgQWJzdHJhY3RBc3luY0Zvcm1seUZvcm1EaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSBmaWVsZHMgPSBpbnB1dDxNYXliZTxGb3JtbHlGaWVsZENvbmZpZ1tdPj4odW5kZWZpbmVkLCB7IGFsaWFzOiAnZGJ4Rm9ybWx5RmllbGRzJyB9KTtcbiAgcmVhZG9ubHkgZmllbGRzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLmZpZWxkcyk7XG59XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmNvbnRleHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vc3JjL2xpYi9mb3JtbHkvZm9ybWx5LmNvbnRleHQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFMUQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sK0JBQTZDLFNBQVEsZ0NBQW1DO0lBQzFGLE1BQU0sR0FBRyxLQUFLLENBQTZCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDcEYsT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7d0dBRmxDLCtCQUErQjs0RkFBL0IsK0JBQStCLGdOQUgvQixvQkFBb0IsRUFBRTs7NEZBR3RCLCtCQUErQjtrQkFMM0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUUsb0JBQW9CLEVBQUU7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1seUZpZWxkQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm92aWRlRm9ybWx5Q29udGV4dCB9IGZyb20gJy4vZm9ybWx5LmNvbnRleHQnO1xuaW1wb3J0IHsgQWJzdHJhY3RBc3luY0Zvcm1seUZvcm1EaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm1seS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIERieEZvcm1seUNvbnRleHQgYW5kIGhhcyBhbiBpbnB1dCBmb3IgZmllbGRzLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZGJ4Rm9ybWx5RmllbGRzXScsXG4gIHByb3ZpZGVyczogcHJvdmlkZUZvcm1seUNvbnRleHQoKSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtbHlGaWVsZHNDb250ZXh0RGlyZWN0aXZlPFQgPSB1bmtub3duPiBleHRlbmRzIEFic3RyYWN0QXN5bmNGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IHtcbiAgcmVhZG9ubHkgZmllbGRzID0gaW5wdXQ8TWF5YmU8Rm9ybWx5RmllbGRDb25maWdbXT4+KHVuZGVmaW5lZCwgeyBhbGlhczogJ2RieEZvcm1seUZpZWxkcycgfSk7XG4gIHJlYWRvbmx5IGZpZWxkcyQgPSB0b09ic2VydmFibGUodGhpcy5maWVsZHMpO1xufVxuIl19
@@ -1,8 +1,9 @@
1
- import { SubscriptionObject, filterMaybe, maybeValueFromObservableOrValue } from '@dereekb/rxjs';
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
- _setDisabledOnContext = effect(() => this.context.setDisabled(undefined, this.disabled()));
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
- _fieldsSub = new SubscriptionObject();
56
+ _fieldSub = cleanSubscription();
59
57
  ngOnInit() {
60
- this._fieldsSub.subscription = this.fields$.pipe(distinctUntilChanged()).subscribe((fields) => {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL3NyYy9saWIvZm9ybWx5L2Zvcm1seS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBMEIsK0JBQStCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFjLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVyRSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRzFEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLDJCQUEyQjtJQUN0QyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUEsZ0JBQW1CLENBQUEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRELFFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDekIscUJBQXFCLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTVHLFdBQVc7UUFDVCxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELG9CQUFvQjtJQUNwQixRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBaUI7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQXdCLEVBQUUsUUFBa0I7UUFDdEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7d0dBN0JtQiwyQkFBMkI7NEZBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEaEQsU0FBUzs7QUFpQ1Y7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLCtCQUFtQyxTQUFRLDJCQUE4QjtJQUc3RixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxDQUFDO3dHQUxtQiwrQkFBK0I7NEZBQS9CLCtCQUErQjs7NEZBQS9CLCtCQUErQjtrQkFEcEQsU0FBUzs7QUFTVjs7R0FFRztBQUVILE1BQU0sT0FBZ0IsZ0NBQW9DLFNBQVEsMkJBQThCO0lBTTdFLFVBQVUsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7SUFFdkQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUM1RixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVEsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQWpCbUIsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRHJELFNBQVM7O0FBc0JWLE1BQU0sT0FBZ0Isc0NBQTZDLFNBQVEsZ0NBQW1DO0lBQ25HLE1BQU0sR0FBRyxLQUFLLENBQTRCLFNBQVMsQ0FBQyxDQUFDO0lBRXJELGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUM7SUFDbkYsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dHQUp2RCxzQ0FBc0M7NEZBQXRDLHNDQUFzQzs7NEZBQXRDLHNDQUFzQztrQkFEM0QsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YnNjcmlwdGlvbk9iamVjdCwgZmlsdGVyTWF5YmUsIE1heWJlT2JzZXJ2YWJsZU9yVmFsdWUsIG1heWJlVmFsdWVGcm9tT2JzZXJ2YWJsZU9yVmFsdWUgfSBmcm9tICdAZGVyZWVrYi9yeGpzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHNoYXJlUmVwbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybWx5RmllbGRDb25maWcgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IE9uSW5pdCwgT25EZXN0cm95LCBEaXJlY3RpdmUsIGluamVjdCwgaW5wdXQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGJ4Rm9ybWx5Q29udGV4dCB9IGZyb20gJy4vZm9ybWx5LmNvbnRleHQnO1xuaW1wb3J0IHsgdHlwZSBNYXliZSB9IGZyb20gJ0BkZXJlZWtiL3V0aWwnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRGJ4Rm9ybURpc2FibGVkS2V5IH0gZnJvbSAnLi4vZm9ybS9mb3JtJztcblxuLyoqXG4gKiBBYnN0cmFjdCBjb21wb25lbnQgZm9yIHdyYXBwaW5nIGEgRGJ4Rm9ybWx5Q29udGV4dC5cbiAqXG4gKiBUaGUgaW1wbGVtZW50aW5nIGNvbXBvbmVudCBzaG91bGQgdXNlIHByb3ZpZGVGb3JtbHlDb250ZXh0KCkgdG8gcHJvdmlkZSB0aGUgRGJ4Rm9ybWx5Q29udGV4dCBzcGVjaWZpYyB0byB0aGlzIGRpcmVjdGl2ZS4gVGhlIGNvbnRleHQgaXMgaW5qZWN0ZWQgdXNpbmcgb25seSBzZWxmLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZvcm1seUZvcm1EaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSBjb250ZXh0ID0gaW5qZWN0KERieEZvcm1seUNvbnRleHQ8VD4sIHsgc2VsZjogdHJ1ZSB9KTtcblxuICByZWFkb25seSBkaXNhYmxlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2V0RGlzYWJsZWRPbkNvbnRleHQgPSBlZmZlY3QoKCkgPT4gdGhpcy5jb250ZXh0LnNldERpc2FibGVkKHVuZGVmaW5lZCwgdGhpcy5kaXNhYmxlZCgpKSk7XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0RGlzYWJsZWRPbkNvbnRleHQuZGVzdHJveSgpO1xuICB9XG5cbiAgLy8gVXRpbGl0eSBGdW5jdGlvbnNcbiAgZ2V0VmFsdWUoKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFBhcnRpYWw8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQuc2V0VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5yZXNldEZvcm0oKTtcbiAgfVxuXG4gIGNsZWFyVmFsdWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRWYWx1ZSh7fSk7XG4gIH1cblxuICBzZXREaXNhYmxlZChrZXk/OiBEYnhGb3JtRGlzYWJsZWRLZXksIGRpc2FibGVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC5zZXREaXNhYmxlZChrZXksIGRpc2FibGVkKTtcbiAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IGNvbXBvbmVudCBmb3Igd3JhcHBpbmcgYSBmb3JtLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN5bmNGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IGV4dGVuZHMgQWJzdHJhY3RGb3JtbHlGb3JtRGlyZWN0aXZlPFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBhYnN0cmFjdCBmaWVsZHM6IEZvcm1seUZpZWxkQ29uZmlnW107XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0LmZpZWxkcyA9IHRoaXMuZmllbGRzO1xuICB9XG59XG5cbi8qKlxuICogQWJzdHJhY3QgY29tcG9uZW50IGZvciB3cmFwcGluZyBhbiBhc3luY3Jocm9ub3VzbHktY29uZmlndXJlZCBmb3JtLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEFzeW5jRm9ybWx5Rm9ybURpcmVjdGl2ZTxUPiBleHRlbmRzIEFic3RyYWN0Rm9ybWx5Rm9ybURpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFVzZWQgdG8gcHJvdmlkZSBmaWVsZHMgdG8gdGhlIGNvbnRleHQuXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBmaWVsZHMkOiBPYnNlcnZhYmxlPE1heWJlPEZvcm1seUZpZWxkQ29uZmlnW10+PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9maWVsZHNTdWIgPSBuZXcgU3Vic2NyaXB0aW9uT2JqZWN0KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fZmllbGRzU3ViLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmllbGRzJC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgoZmllbGRzKSA9PiB7XG4gICAgICB0aGlzLmNvbnRleHQuZmllbGRzID0gZmllbGRzO1xuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB0aGlzLl9maWVsZHNTdWIuZGVzdHJveSgpO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Q29uZmlnQXN5bmNGb3JtbHlGb3JtRGlyZWN0aXZlPFQsIEM+IGV4dGVuZHMgQWJzdHJhY3RBc3luY0Zvcm1seUZvcm1EaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IGlucHV0PE1heWJlT2JzZXJ2YWJsZU9yVmFsdWU8Qz4+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgY3VycmVudENvbmZpZyQgPSB0b09ic2VydmFibGUodGhpcy5jb25maWcpLnBpcGUobWF5YmVWYWx1ZUZyb21PYnNlcnZhYmxlT3JWYWx1ZSgpKTtcbiAgcmVhZG9ubHkgY29uZmlnJCA9IHRoaXMuY3VycmVudENvbmZpZyQucGlwZShmaWx0ZXJNYXliZSgpLCBzaGFyZVJlcGxheSgxKSk7XG59XG4iXX0=
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 { AbstractSubscriptionDirective } from '@dereekb/dbx-core';
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 extends AbstractSubscriptionDirective {
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: null, target: i0.ɵɵFactoryTarget.Component });
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"], usesInheritance: true, ngImport: i0, template: `
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, AbstractSubscriptionDirective, DbxInjectionComponent, mergeDbxInjectionComponentConfigs, GetValuePipe, DateDistancePipe, TimeDistancePipe } from '@dereekb/dbx-core';
9
- import { LockSet, makeIsModifiedFunctionObservable, SubscriptionObject, asObservable, 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';
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 = new 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 extends AbstractSubscriptionDirective {
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: null, 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"], usesInheritance: true, ngImport: i0, template: `
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 extends AbstractSubscriptionDirective {
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.sub = subscription;
670
- }, {
671
- allowSignalWrites: true
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 = new SubscriptionObject();
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
- super.ngOnInit();
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 extends AbstractSubscriptionDirective {
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
- super();
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 } }, usesInheritance: true, ngImport: i0 });
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 extends AbstractSubscriptionDirective {
779
+ class DbxFormValueChangeDirective {
787
780
  form = inject((DbxForm), { host: true });
788
781
  dbxFormValueChange = output();
782
+ _sub = cleanSubscription();
789
783
  ngOnInit() {
790
- this.sub = this.form.stream$
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: null, target: i0.ɵɵFactoryTarget.Directive });
802
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFormValueChangeDirective, isStandalone: true, selector: "[dbxFormValueChange]", outputs: { dbxFormValueChange: "dbxFormValueChange" }, usesInheritance: true, ngImport: i0 });
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 extends AbstractSubscriptionDirective {
923
+ class DbxChecklistItemContentComponent {
929
924
  checklistItemFieldComponent = inject((DbxChecklistItemFieldComponent));
930
925
  config = {
931
926
  componentClass: this.checklistItemFieldComponent.componentClass,
932
927
  init: (instance) => {
933
- this.sub = this.checklistItemFieldComponent.displayContent$.subscribe((content) => {
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: null, target: i0.ɵɵFactoryTarget.Component });
939
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DbxChecklistItemContentComponent, isStandalone: true, selector: "dbx-checklist-item-content-component", usesInheritance: true, ngImport: i0, template: `
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 asynchronos work is occuring.
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
- _setDisabledOnContext = effect(() => this.context.setDisabled(undefined, this.disabled()));
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
- _fieldsSub = new SubscriptionObject();
6265
+ _fieldSub = cleanSubscription();
6273
6266
  ngOnInit() {
6274
- this._fieldsSub.subscription = this.fields$.pipe(distinctUntilChanged()).subscribe((fields) => {
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 });