@dereekb/dbx-core 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 (89) hide show
  1. package/esm2022/lib/action/action.machine.mjs +4 -5
  2. package/esm2022/lib/action/action.store.mjs +11 -7
  3. package/esm2022/lib/action/action.store.source.provide.mjs +4 -9
  4. package/esm2022/lib/action/directive/auto/action.automodify.directive.mjs +9 -9
  5. package/esm2022/lib/action/directive/auto/action.autotrigger.directive.mjs +12 -14
  6. package/esm2022/lib/action/directive/context/action.directive.mjs +7 -5
  7. package/esm2022/lib/action/directive/debug/action.logger.directive.mjs +9 -9
  8. package/esm2022/lib/action/directive/map/action.map.directive.mjs +3 -5
  9. package/esm2022/lib/action/directive/map/action.map.mjs +5 -4
  10. package/esm2022/lib/action/directive/map/action.map.working.disable.directive.mjs +11 -12
  11. package/esm2022/lib/action/directive/state/action.disabled.directive.mjs +7 -11
  12. package/esm2022/lib/action/directive/state/action.disableonsuccess.directive.mjs +7 -11
  13. package/esm2022/lib/action/directive/state/action.enforce.modified.directive.mjs +10 -13
  14. package/esm2022/lib/action/directive/state/action.error.handler.directive.mjs +9 -9
  15. package/esm2022/lib/action/directive/state/action.handler.directive.mjs +3 -5
  16. package/esm2022/lib/action/directive/state/action.success.directive.mjs +1 -1
  17. package/esm2022/lib/action/directive/state/action.success.handler.directive.mjs +9 -9
  18. package/esm2022/lib/action/directive/state/action.value.directive.mjs +6 -15
  19. package/esm2022/lib/action/directive/state/action.value.stream.directive.mjs +18 -19
  20. package/esm2022/lib/action/directive/state/action.value.trigger.directive.mjs +5 -6
  21. package/esm2022/lib/button/action/action.button.directive.mjs +10 -17
  22. package/esm2022/lib/button/action/action.button.trigger.directive.mjs +9 -9
  23. package/esm2022/lib/button/button.directive.mjs +11 -16
  24. package/esm2022/lib/button/button.loading.directive.mjs +7 -6
  25. package/esm2022/lib/button/router/button.segue.directive.mjs +6 -7
  26. package/esm2022/lib/filter/filter.abstract.connector.directive.mjs +3 -5
  27. package/esm2022/lib/filter/filter.map.directive.mjs +3 -5
  28. package/esm2022/lib/index.mjs +2 -2
  29. package/esm2022/lib/injection/injection.context.directive.mjs +2 -2
  30. package/esm2022/lib/injection/injection.instance.mjs +3 -3
  31. package/esm2022/lib/injection/injection.mjs +1 -1
  32. package/esm2022/lib/router/model/model.router.id.directive.mjs +9 -13
  33. package/esm2022/lib/router/model/model.router.key.directive.mjs +9 -12
  34. package/esm2022/lib/router/model/model.router.uid.directive.mjs +8 -8
  35. package/esm2022/lib/router/router/transition/transition.watcher.directive.mjs +8 -11
  36. package/esm2022/lib/rxjs/clean.mjs +28 -0
  37. package/esm2022/lib/rxjs/destroy.mjs +13 -0
  38. package/esm2022/lib/rxjs/index.mjs +7 -0
  39. package/esm2022/lib/rxjs/loading.mjs +19 -0
  40. package/esm2022/lib/rxjs/lockset.mjs +56 -0
  41. package/esm2022/lib/rxjs/rxjs.directive.mjs +42 -0
  42. package/esm2022/lib/rxjs/subscription.mjs +16 -0
  43. package/esm2022/lib/view/if.directive.mjs +7 -6
  44. package/fesm2022/dereekb-dbx-core.mjs +306 -245
  45. package/fesm2022/dereekb-dbx-core.mjs.map +1 -1
  46. package/lib/action/action.machine.d.ts +2 -4
  47. package/lib/action/action.store.d.ts +2 -2
  48. package/lib/action/action.store.source.provide.d.ts +1 -4
  49. package/lib/action/directive/auto/action.automodify.directive.d.ts +2 -4
  50. package/lib/action/directive/auto/action.autotrigger.directive.d.ts +3 -5
  51. package/lib/action/directive/context/action.directive.d.ts +1 -3
  52. package/lib/action/directive/debug/action.logger.directive.d.ts +2 -4
  53. package/lib/action/directive/map/action.map.directive.d.ts +1 -3
  54. package/lib/action/directive/map/action.map.working.disable.directive.d.ts +2 -5
  55. package/lib/action/directive/state/action.disabled.directive.d.ts +1 -4
  56. package/lib/action/directive/state/action.disableonsuccess.directive.d.ts +1 -4
  57. package/lib/action/directive/state/action.enforce.modified.directive.d.ts +2 -5
  58. package/lib/action/directive/state/action.error.handler.directive.d.ts +2 -4
  59. package/lib/action/directive/state/action.handler.directive.d.ts +1 -3
  60. package/lib/action/directive/state/action.success.directive.d.ts +1 -2
  61. package/lib/action/directive/state/action.success.handler.directive.d.ts +2 -4
  62. package/lib/action/directive/state/action.value.directive.d.ts +1 -5
  63. package/lib/action/directive/state/action.value.stream.directive.d.ts +2 -6
  64. package/lib/action/directive/state/action.value.trigger.directive.d.ts +4 -5
  65. package/lib/button/action/action.button.directive.d.ts +2 -6
  66. package/lib/button/action/action.button.trigger.directive.d.ts +2 -4
  67. package/lib/button/button.directive.d.ts +3 -5
  68. package/lib/button/button.loading.directive.d.ts +2 -2
  69. package/lib/button/router/button.segue.directive.d.ts +1 -2
  70. package/lib/filter/filter.abstract.connector.directive.d.ts +1 -3
  71. package/lib/filter/filter.map.directive.d.ts +1 -3
  72. package/lib/index.d.ts +1 -1
  73. package/lib/injection/injection.d.ts +2 -0
  74. package/lib/router/model/model.router.id.directive.d.ts +2 -5
  75. package/lib/router/model/model.router.key.directive.d.ts +2 -5
  76. package/lib/router/model/model.router.uid.directive.d.ts +2 -4
  77. package/lib/router/router/transition/transition.watcher.directive.d.ts +3 -5
  78. package/lib/rxjs/clean.d.ts +16 -0
  79. package/lib/rxjs/destroy.d.ts +7 -0
  80. package/lib/rxjs/index.d.ts +6 -0
  81. package/lib/rxjs/loading.d.ts +13 -0
  82. package/lib/rxjs/lockset.d.ts +47 -0
  83. package/lib/{subscription/subscription.directive.d.ts → rxjs/rxjs.directive.d.ts} +4 -0
  84. package/lib/rxjs/subscription.d.ts +9 -0
  85. package/lib/view/if.directive.d.ts +2 -2
  86. package/package.json +1 -1
  87. package/esm2022/lib/subscription/index.mjs +0 -2
  88. package/esm2022/lib/subscription/subscription.directive.mjs +0 -38
  89. package/lib/subscription/index.d.ts +0 -1
@@ -1,8 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, inject, input, computed, signal, Injectable, forwardRef, effect, TemplateRef, ViewContainerRef, Injector, runInInjectionContext, NgModule, InjectionToken, makeEnvironmentProviders, output, model, NgZone, Input, Pipe, LOCALE_ID, viewChild, Component, ChangeDetectionStrategy, Inject, Optional } from '@angular/core';
3
- import { SubscriptionObject, LockSet, filterMaybe, LoadingStateType, beginLoading, idleLoadingState, errorResult, successResult, scanCount, workFactory, asObservable, combineLatestFromMapValuesObsFn, emitDelayObs, makeIsModifiedFunctionObservable, returnIfIs, timeoutStartWith, onFalseToTrue, onTrueToFalse, setContainsAllValuesFrom, setContainsNoValueFrom, maybeValueFromObservableOrValue, distinctUntilKeysChange, maybeValueFromObservableOrValueGetter, switchMapToDefault, asObservableFromGetter, FilterSource, FilterSourceConnector, FilterSourceInstance, FilterMap, skipAllInitialMaybe, switchMapObject } from '@dereekb/rxjs';
2
+ import { inject, DestroyRef, Directive, input, computed, signal, Injectable, forwardRef, effect, TemplateRef, ViewContainerRef, Injector, runInInjectionContext, NgModule, InjectionToken, makeEnvironmentProviders, output, model, NgZone, Input, Pipe, LOCALE_ID, viewChild, Component, ChangeDetectionStrategy, Inject, Optional } from '@angular/core';
3
+ import { SubscriptionObject, LockSet, loadingStateContext, listLoadingStateContext, filterMaybe, LoadingStateType, beginLoading, idleLoadingState, errorResult, successResult, scanCount, workFactory, asObservable, combineLatestFromMapValuesObsFn, emitDelayObs, makeIsModifiedFunctionObservable, returnIfIs, timeoutStartWith, onFalseToTrue, onTrueToFalse, setContainsAllValuesFrom, setContainsNoValueFrom, maybeValueFromObservableOrValue, distinctUntilKeysChange, maybeValueFromObservableOrValueGetter, switchMapToDefault, asObservableFromGetter, FilterSource, FilterSourceConnector, FilterSourceInstance, FilterMap, skipAllInitialMaybe, switchMapObject } from '@dereekb/rxjs';
4
+ import { getValueFromGetter, DestroyFunctionObject, isNotFalse, isDefinedAndNotFalse, BooleanStringKeyArrayUtility, reduceBooleansWithOrFn, asGetter, toReadableError, hasValueOrNotEmpty, isGetter, asArray, setIncludes, isAllowed, maybeSet, iterableToSet, expandTreeFunction, flattenTreeToArrayFunction, expandFlattenTreeFunction, mailToUrlString, telUrlString, mergeObjects, KeyValueTypleValueFilter, filterMaybeArrayValues, defaultForwardFunctionFactory, cutString, dollarAmountString, objectHasKey, objectHasKeys, mergeArrays, flattenArrayOrValueArray, promiseReference, DataIsExpiredError, DataDoesNotExistError, hasNonNullValue, unixDateTimeSecondsNumberForNow, isThrottled, splitJoinRemainder, StorageObjectUtility, SHARED_MEMORY_STORAGE } from '@dereekb/util';
4
5
  import { switchMap, first, distinctUntilChanged, filter, EMPTY, debounce, interval, throttle, exhaustMap, mergeMap, map, shareReplay, combineLatest, startWith, of, delay, BehaviorSubject, tap, combineLatestWith, catchError, withLatestFrom, firstValueFrom, takeUntil, Subject, Observable } from 'rxjs';
5
- import { isNotFalse, isDefinedAndNotFalse, BooleanStringKeyArrayUtility, reduceBooleansWithOrFn, asGetter, getValueFromGetter, toReadableError, hasValueOrNotEmpty, isGetter, asArray, setIncludes, isAllowed, maybeSet, iterableToSet, expandTreeFunction, flattenTreeToArrayFunction, expandFlattenTreeFunction, mailToUrlString, telUrlString, mergeObjects, KeyValueTypleValueFilter, filterMaybeArrayValues, defaultForwardFunctionFactory, cutString, dollarAmountString, objectHasKey, objectHasKeys, mergeArrays, flattenArrayOrValueArray, promiseReference, DataIsExpiredError, DataDoesNotExistError, hasNonNullValue, unixDateTimeSecondsNumberForNow, isThrottled, splitJoinRemainder, StorageObjectUtility, SHARED_MEMORY_STORAGE } from '@dereekb/util';
6
6
  import { toObservable, outputToObservable, toSignal } from '@angular/core/rxjs-interop';
7
7
  import { ComponentStore } from '@ngrx/component-store';
8
8
  import { Actions, ofType, createEffect, provideEffects } from '@ngrx/effects';
@@ -14,8 +14,37 @@ import { addMinutes, isValid, isPast, formatDistance, formatDistanceToNow } from
14
14
  import { formatDate, NgTemplateOutlet, NgFor } from '@angular/common';
15
15
  import { toJsDate, formatToTimeString, formatDateDistance, formatToDayRangeString, formatToTimeRangeString, formatToDayTimeRangeString, formatDateRangeDistance, dateTimezoneUtcNormal, getTimezoneAbbreviation } from '@dereekb/date';
16
16
 
17
+ /**
18
+ * Wraps a Destroyable in a function that registers the input Destroyable to be destroyed
19
+ * when the DestroyRef is destroyed in the context.
20
+ *
21
+ * Must be run in an Angular injection context.
22
+ */
23
+ function clean(input) {
24
+ const destroyRef = inject(DestroyRef);
25
+ if (input.destroy) {
26
+ destroyRef.onDestroy(() => input.destroy());
27
+ }
28
+ else {
29
+ destroyRef.onDestroy(input);
30
+ }
31
+ return input;
32
+ }
33
+ /**
34
+ * Wraps a Subject in a function that registers the input Subject to be completed
35
+ * when the DestroyRef is destroyed in the context.
36
+ *
37
+ * Must be run in an Angular injection context.
38
+ */
39
+ function completeOnDestroy(input) {
40
+ clean(() => input.complete());
41
+ return input;
42
+ }
43
+
17
44
  /**
18
45
  * Abstract component that contains a SubscriptionObject and will clean it up automatically.
46
+ *
47
+ * @deprecated Consider using cleanSubscription() directly instead, as it performs the same functionality
19
48
  */
20
49
  class AbstractSubscriptionDirective {
21
50
  _subscriptionObject = new SubscriptionObject();
@@ -33,6 +62,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
33
62
  }] });
34
63
  /**
35
64
  * AbstractSubscriptionDirective extension that prevents the OnDestroy from occuring until the lockset is unlocked.
65
+ *
66
+ * @deprecated Consider using cleanLockSet() directly instead, as it performs the same functionality.
36
67
  */
37
68
  class AbstractLockSetSubscriptionDirective extends AbstractSubscriptionDirective {
38
69
  lockSet = new LockSet();
@@ -49,6 +80,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
49
80
  type: Directive
50
81
  }] });
51
82
 
83
+ // MARK: cleanSubscription()
84
+ /**
85
+ * Creates a new SubscriptionObject that is automatically destroyed when the context is destroyed.
86
+ *
87
+ * Must be run within an Angular injection context.
88
+ */
89
+ function cleanSubscription(sub) {
90
+ const subscription = getValueFromGetter(sub);
91
+ const subscriptionObject = new SubscriptionObject(subscription);
92
+ clean(subscriptionObject);
93
+ return subscriptionObject;
94
+ }
95
+
96
+ /**
97
+ * Creates a new LockSet that is automatically destroyed when the component is destroyed.
98
+ *
99
+ * Must be run within an Angular injection context.
100
+ *
101
+ * @param onLockSetDestroy Optional callback to run when the lockset is unlocked.
102
+ */
103
+ function cleanLockSet(config) {
104
+ const { onDestroy, onLockSetDestroy, destroyLocksetTiming } = config ?? {};
105
+ const destroyRef = inject(DestroyRef);
106
+ const lockSet = new LockSet();
107
+ destroyRef.onDestroy(() => {
108
+ onDestroy?.();
109
+ lockSet.destroyOnNextUnlock(destroyLocksetTiming); // flag to be destroyed on the next complete unlock
110
+ });
111
+ if (onLockSetDestroy) {
112
+ const _destroySub = cleanSubscription(lockSet.onDestroy$.subscribe(() => {
113
+ onLockSetDestroy();
114
+ _destroySub.destroy();
115
+ }));
116
+ }
117
+ return lockSet;
118
+ }
119
+ // MARK: cleanWithLockSet()
120
+ /**
121
+ * Runs the given onDestroy function when the context is destroyed, and the lock set's next unlock occurs.
122
+ *
123
+ * Must be run within an Angular injection context.
124
+ *
125
+ * @param lockSet The lockset to use.
126
+ * @param onDestroy The function to run when the lockset is unlocked.
127
+ */
128
+ function cleanWithLockSet(lockSet, onDestroy) {
129
+ const destroyRef = inject(DestroyRef);
130
+ destroyRef.onDestroy(() => {
131
+ lockSet.onNextUnlock(() => {
132
+ onDestroy();
133
+ });
134
+ });
135
+ }
136
+ /**
137
+ * Creates a new SubscriptionObject that is automatically destroyed when the context is destroyed, and the lock set's next unlock occurs.
138
+ *
139
+ * Must be run within an Angular injection context.
140
+ */
141
+ function cleanSubscriptionWithLockSet(input) {
142
+ const subscription = getValueFromGetter(input.sub);
143
+ const subscriptionObject = new SubscriptionObject(subscription);
144
+ cleanWithLockSet(input.lockSet, () => subscriptionObject.destroy());
145
+ return subscriptionObject;
146
+ }
147
+
148
+ /**
149
+ * Creates a new LoadingStateContext that is automatically destroyed when the context is destroyed.
150
+ *
151
+ * Must be run within an Angular injection context.
152
+ */
153
+ function cleanLoadingContext(input) {
154
+ return clean(loadingStateContext(input));
155
+ }
156
+ /**
157
+ * Creates a new ListLoadingStateContext that is automatically destroyed when the context is destroyed.
158
+ *
159
+ * Must be run within an Angular injection context.
160
+ */
161
+ function cleanListLoadingContext(input) {
162
+ return clean(listLoadingStateContext(input));
163
+ }
164
+
165
+ /**
166
+ * Creates a new DestroyFunctionObject that is automatically destroyed when the context is destroyed.
167
+ *
168
+ * Must be run within an Angular injection context.
169
+ */
170
+ function cleanDestroy(input) {
171
+ const destroyFunction = new DestroyFunctionObject(input);
172
+ clean(destroyFunction);
173
+ return destroyFunction;
174
+ }
175
+
52
176
  /**
53
177
  * Source that provides a ActionContextStore observable.
54
178
  */
@@ -209,7 +333,7 @@ class DbxActionContextStoreSourceInstance {
209
333
  }
210
334
  }
211
335
 
212
- class DbxActionAutoModifyDirective extends AbstractSubscriptionDirective {
336
+ class DbxActionAutoModifyDirective {
213
337
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
214
338
  autoModifyEnabled = input(true, { alias: 'dbxActionAutoModify', transform: isNotFalse });
215
339
  markAsModified$ = toObservable(this.autoModifyEnabled).pipe(distinctUntilChanged(), switchMap((x) => {
@@ -222,13 +346,13 @@ class DbxActionAutoModifyDirective extends AbstractSubscriptionDirective {
222
346
  }
223
347
  return obs;
224
348
  }));
225
- ngOnInit() {
226
- this.sub = this.markAsModified$.subscribe(() => {
349
+ constructor() {
350
+ cleanSubscription(this.markAsModified$.subscribe(() => {
227
351
  this.source.setIsModified(true);
228
- });
352
+ }));
229
353
  }
230
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
231
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionAutoModifyDirective, isStandalone: true, selector: "dbxActionAutoModify, [dbxActionAutoModify]", inputs: { autoModifyEnabled: { classPropertyName: "autoModifyEnabled", publicName: "dbxActionAutoModify", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
354
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
355
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionAutoModifyDirective, isStandalone: true, selector: "dbxActionAutoModify, [dbxActionAutoModify]", inputs: { autoModifyEnabled: { classPropertyName: "autoModifyEnabled", publicName: "dbxActionAutoModify", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
232
356
  }
233
357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoModifyDirective, decorators: [{
234
358
  type: Directive,
@@ -236,7 +360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
236
360
  selector: 'dbxActionAutoModify, [dbxActionAutoModify]',
237
361
  standalone: true
238
362
  }]
239
- }] });
363
+ }], ctorParameters: () => [] });
240
364
 
241
365
  const DEFAULT_DEBOUNCE_MS = 2 * 1000;
242
366
  const DEFAULT_THROTTLE_MS = 10 * 1000;
@@ -249,7 +373,7 @@ const DBX_ACTION_AUTO_TRIGGER_INSTANT_TRIGGER_DEBOUNCE = 10;
249
373
  *
250
374
  * When using auto triggers be sure to make sure that the action is not triggering too often due to misconfiguration.
251
375
  */
252
- class DbxActionAutoTriggerDirective extends AbstractSubscriptionDirective {
376
+ class DbxActionAutoTriggerDirective {
253
377
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
254
378
  triggerDebounce = input(undefined);
255
379
  triggerThrottle = input(undefined);
@@ -323,18 +447,16 @@ class DbxActionAutoTriggerDirective extends AbstractSubscriptionDirective {
323
447
  isTriggerAllowedToRun$ = this._isTriggerLimited$.pipe(map((x) => x[1]), shareReplay(1));
324
448
  automaticTrigger$ = this._isTriggerLimited$.pipe(filter((x) => x[1]), distinctUntilChanged((a, b) => a[0] === b[0]), // Only trigger when the count changes.
325
449
  map(() => undefined));
326
- ngOnInit() {
327
- this.sub = this.automaticTrigger$.subscribe(() => {
328
- this.source.trigger();
329
- });
330
- }
331
- ngOnDestroy() {
332
- this.source.lockSet.onNextUnlock(() => {
333
- super.ngOnDestroy();
450
+ constructor() {
451
+ cleanSubscriptionWithLockSet({
452
+ lockSet: this.source.lockSet,
453
+ sub: this.automaticTrigger$.subscribe(() => {
454
+ this.source.trigger();
455
+ })
334
456
  });
335
457
  }
336
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoTriggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
337
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionAutoTriggerDirective, isStandalone: true, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: { triggerDebounce: { classPropertyName: "triggerDebounce", publicName: "triggerDebounce", isSignal: true, isRequired: false, transformFunction: null }, triggerThrottle: { classPropertyName: "triggerThrottle", publicName: "triggerThrottle", isSignal: true, isRequired: false, transformFunction: null }, triggerErrorThrottle: { classPropertyName: "triggerErrorThrottle", publicName: "triggerErrorThrottle", isSignal: true, isRequired: false, transformFunction: null }, maxErrorsForThrottle: { classPropertyName: "maxErrorsForThrottle", publicName: "maxErrorsForThrottle", isSignal: true, isRequired: false, transformFunction: null }, triggerLimit: { classPropertyName: "triggerLimit", publicName: "triggerLimit", isSignal: true, isRequired: false, transformFunction: null }, triggerEnabled: { classPropertyName: "triggerEnabled", publicName: "dbxActionAutoTrigger", isSignal: true, isRequired: false, transformFunction: null }, useFastTriggerPreset: { classPropertyName: "useFastTriggerPreset", publicName: "useFastTriggerPreset", isSignal: true, isRequired: false, transformFunction: null }, useInstantTriggerPreset: { classPropertyName: "useInstantTriggerPreset", publicName: "useInstantTriggerPreset", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
458
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
459
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionAutoTriggerDirective, isStandalone: true, selector: "dbxActionAutoTrigger,[dbxActionAutoTrigger]", inputs: { triggerDebounce: { classPropertyName: "triggerDebounce", publicName: "triggerDebounce", isSignal: true, isRequired: false, transformFunction: null }, triggerThrottle: { classPropertyName: "triggerThrottle", publicName: "triggerThrottle", isSignal: true, isRequired: false, transformFunction: null }, triggerErrorThrottle: { classPropertyName: "triggerErrorThrottle", publicName: "triggerErrorThrottle", isSignal: true, isRequired: false, transformFunction: null }, maxErrorsForThrottle: { classPropertyName: "maxErrorsForThrottle", publicName: "maxErrorsForThrottle", isSignal: true, isRequired: false, transformFunction: null }, triggerLimit: { classPropertyName: "triggerLimit", publicName: "triggerLimit", isSignal: true, isRequired: false, transformFunction: null }, triggerEnabled: { classPropertyName: "triggerEnabled", publicName: "dbxActionAutoTrigger", isSignal: true, isRequired: false, transformFunction: null }, useFastTriggerPreset: { classPropertyName: "useFastTriggerPreset", publicName: "useFastTriggerPreset", isSignal: true, isRequired: false, transformFunction: null }, useInstantTriggerPreset: { classPropertyName: "useInstantTriggerPreset", publicName: "useInstantTriggerPreset", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
338
460
  }
339
461
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionAutoTriggerDirective, decorators: [{
340
462
  type: Directive,
@@ -342,7 +464,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
342
464
  selector: 'dbxActionAutoTrigger,[dbxActionAutoTrigger]',
343
465
  standalone: true
344
466
  }]
345
- }] });
467
+ }], ctorParameters: () => [] });
346
468
 
347
469
  /**
348
470
  * WorkInstanceDelegate implementation using an DbxActionContextStoreSourceInstance.
@@ -515,7 +637,12 @@ const INITIAL_STATE = {
515
637
  actionState: DbxActionState.IDLE
516
638
  };
517
639
  class ActionContextStore extends ComponentStore {
518
- lockSet = new LockSet();
640
+ lockSet = cleanLockSet({
641
+ onLockSetDestroy: () => super.ngOnDestroy(),
642
+ destroyLocksetTiming: {
643
+ delayTime: 2000
644
+ }
645
+ });
519
646
  constructor() {
520
647
  super({ ...INITIAL_STATE });
521
648
  this.lockSet.addLock('working', this.isWorking$);
@@ -717,10 +844,8 @@ class ActionContextStore extends ComponentStore {
717
844
  }
718
845
  // MARK: Cleanup
719
846
  ngOnDestroy() {
720
- // Wait for any actions to complete before destroying.
721
- this.lockSet.onNextUnlock(() => {
722
- super.ngOnDestroy();
723
- }, 2000);
847
+ // do not call super.destroy here, to keep the component store from destroying itself.
848
+ // the lockset is configured to cleanup the component store.
724
849
  }
725
850
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
726
851
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ActionContextStore });
@@ -859,7 +984,7 @@ class DbxActionContextMachine extends DbxActionContextBaseSource {
859
984
  }
860
985
  }
861
986
  /**
862
- * DbxActionContextMachine that implements OnDestroy and is configured for use as a Service/Injectable.
987
+ * DbxActionContextMachine configured for use as a Service/Injectable.
863
988
  */
864
989
  class DbxActionContextMachineAsService extends DbxActionContextMachine {
865
990
  constructor() {
@@ -867,9 +992,7 @@ class DbxActionContextMachineAsService extends DbxActionContextMachine {
867
992
  oneTimeUse: false,
868
993
  handleValueReady: false
869
994
  });
870
- }
871
- ngOnDestroy() {
872
- this.destroy();
995
+ clean(() => this.destroy());
873
996
  }
874
997
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionContextMachineAsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
875
998
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionContextMachineAsService });
@@ -878,12 +1001,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
878
1001
  type: Injectable
879
1002
  }], ctorParameters: () => [] });
880
1003
 
881
- const actionContextStoreSourceInstanceFactory = (source) => {
882
- return new DbxActionContextStoreSourceInstance(source);
883
- };
884
- const actionContextStoreSourceMachineFactory = () => {
885
- return new DbxActionContextMachineAsService();
886
- };
887
1004
  /**
888
1005
  * Provides an ActionContextStoreSource, as well as an DbxActionContextStoreSourceInstance.
889
1006
  */
@@ -895,13 +1012,13 @@ function provideActionStoreSource(sourceType) {
895
1012
  }
896
1013
  : {
897
1014
  provide: ActionContextStoreSource,
898
- useFactory: actionContextStoreSourceMachineFactory
1015
+ useFactory: () => new DbxActionContextMachineAsService()
899
1016
  };
900
1017
  return [
901
1018
  storeSourceProvider,
902
1019
  {
903
1020
  provide: DbxActionContextStoreSourceInstance,
904
- useFactory: actionContextStoreSourceInstanceFactory,
1021
+ useFactory: (source) => clean(new DbxActionContextStoreSourceInstance(source)),
905
1022
  deps: [ActionContextStoreSource]
906
1023
  }
907
1024
  ];
@@ -922,10 +1039,11 @@ function provideSecondaryActionStoreSource(sourceType) {
922
1039
  class DbxActionDirective extends DbxActionContextBaseSource {
923
1040
  constructor() {
924
1041
  super(inject((SecondaryActionContextStoreSource), { optional: true, host: true }));
925
- }
926
- ngOnDestroy() {
927
- this.lockSet.destroyOnNextUnlock(() => {
928
- this.destroy();
1042
+ // during cleaning/onDestroy, queue the lockset for cleanup
1043
+ clean(() => {
1044
+ this.lockSet.destroyOnNextUnlock(() => {
1045
+ this.destroy();
1046
+ });
929
1047
  });
930
1048
  }
931
1049
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -962,15 +1080,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
962
1080
  /**
963
1081
  * Prints out the current state to the console. Useful for debugging.
964
1082
  */
965
- class DbxActionContextLoggerDirective extends AbstractSubscriptionDirective {
1083
+ class DbxActionContextLoggerDirective {
966
1084
  source = inject(DbxActionContextStoreSourceInstance, { host: true });
967
- ngOnInit() {
968
- this.sub = this.source.state$.subscribe((state) => {
1085
+ constructor() {
1086
+ cleanSubscription(this.source.state$.subscribe((state) => {
969
1087
  console.log('dbxActionLogger - state: ', state);
970
- });
1088
+ }));
971
1089
  }
972
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionContextLoggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
973
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxActionContextLoggerDirective, isStandalone: true, selector: "[dbxActionLogger],[dbxActionContextLogger]", usesInheritance: true, ngImport: i0 });
1090
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionContextLoggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1091
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxActionContextLoggerDirective, isStandalone: true, selector: "[dbxActionLogger],[dbxActionContextLogger]", ngImport: i0 });
974
1092
  }
975
1093
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionContextLoggerDirective, decorators: [{
976
1094
  type: Directive,
@@ -978,7 +1096,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
978
1096
  selector: '[dbxActionLogger],[dbxActionContextLogger]',
979
1097
  standalone: true
980
1098
  }]
981
- }] });
1099
+ }], ctorParameters: () => [] });
982
1100
 
983
1101
  /**
984
1102
  * Map that returns sources for ActionKey values.
@@ -1025,14 +1143,15 @@ function actionContextStoreSourceMap() {
1025
1143
  return actionKeySourceMap;
1026
1144
  });
1027
1145
  }
1146
+ function destroy() {
1147
+ _actionKeySourceMap.complete();
1148
+ }
1028
1149
  const result = {
1029
1150
  actionKeySourceMap$: actionKeySourceMap$,
1030
1151
  sourceForKey: sourceForKey,
1031
1152
  addStoreSource: addStoreSource,
1032
1153
  removeStoreSource: removeStoreSource,
1033
- destroy: () => {
1034
- _actionKeySourceMap.complete();
1035
- }
1154
+ destroy
1036
1155
  };
1037
1156
  return result;
1038
1157
  }
@@ -1043,10 +1162,7 @@ function actionContextStoreSourceMap() {
1043
1162
  * This is useful for passing action contexts around via the providers instead of explicit injection.
1044
1163
  */
1045
1164
  class DbxActionContextMapDirective {
1046
- actionContextStoreSourceMap = inject(ActionContextStoreSourceMap);
1047
- ngOnDestroy() {
1048
- this.actionContextStoreSourceMap.destroy();
1049
- }
1165
+ actionContextStoreSourceMap = clean(inject(ActionContextStoreSourceMap));
1050
1166
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionContextMapDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1051
1167
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxActionContextMapDirective, isStandalone: true, selector: "[dbxActionContextMap]", providers: [
1052
1168
  {
@@ -1168,22 +1284,21 @@ const DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY = 'action_map_working_disable';
1168
1284
  /**
1169
1285
  * Used to communicate with an dbxActionMap and set the ActionContextStore to be disabled if any other element in the map is working.
1170
1286
  */
1171
- class DbxActionMapWorkingDisableDirective extends AbstractSubscriptionDirective {
1287
+ class DbxActionMapWorkingDisableDirective {
1172
1288
  _actionContextStoreSourceMap = inject(ActionContextStoreSourceMap);
1173
1289
  source = inject(DbxActionContextStoreSourceInstance, { host: true });
1174
1290
  disabledKey = input(undefined, { alias: 'dbxActionMapWorkingDisable' });
1175
1291
  areAnySourcesWorking$ = actionContextStoreSourceMapReader(this._actionContextStoreSourceMap.actionKeySourceMap$).checkAny((x) => x.isWorking$, false);
1176
- ngOnInit() {
1177
- this.sub = this.areAnySourcesWorking$.subscribe((x) => {
1292
+ constructor() {
1293
+ cleanSubscription(this.areAnySourcesWorking$.subscribe((x) => {
1178
1294
  this.source.disable(this.disabledKey() || DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, x);
1295
+ }));
1296
+ clean(() => {
1297
+ this.source.enable(this.disabledKey() || DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY);
1179
1298
  });
1180
1299
  }
1181
- ngOnDestroy() {
1182
- super.ngOnDestroy();
1183
- this.source.enable(this.disabledKey() || DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY);
1184
- }
1185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionMapWorkingDisableDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1186
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionMapWorkingDisableDirective, isStandalone: true, selector: "[dbxActionMapWorkingDisable]", inputs: { disabledKey: { classPropertyName: "disabledKey", publicName: "dbxActionMapWorkingDisable", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1300
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionMapWorkingDisableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1301
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionMapWorkingDisableDirective, isStandalone: true, selector: "[dbxActionMapWorkingDisable]", inputs: { disabledKey: { classPropertyName: "disabledKey", publicName: "dbxActionMapWorkingDisable", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1187
1302
  }
1188
1303
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionMapWorkingDisableDirective, decorators: [{
1189
1304
  type: Directive,
@@ -1191,28 +1306,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1191
1306
  selector: '[dbxActionMapWorkingDisable]',
1192
1307
  standalone: true
1193
1308
  }]
1194
- }] });
1309
+ }], ctorParameters: () => [] });
1195
1310
 
1196
1311
  const APP_ACTION_DISABLED_DIRECTIVE_KEY = 'dbx_action_disabled';
1197
1312
  /**
1198
1313
  * Directive that allows disabling an action using the inputs.
1199
1314
  */
1200
- class DbxActionDisabledDirective extends AbstractSubscriptionDirective {
1315
+ class DbxActionDisabledDirective {
1201
1316
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
1202
1317
  disabled = input(false, { alias: 'dbxActionDisabled', transform: (value) => value !== false });
1203
1318
  disabled$ = toObservable(this.disabled);
1204
1319
  constructor() {
1205
- super();
1206
- this.sub = this.disabled$.subscribe((x) => {
1320
+ cleanSubscription(this.disabled$.subscribe((x) => {
1207
1321
  this.source.disable(APP_ACTION_DISABLED_DIRECTIVE_KEY, x);
1208
- });
1209
- }
1210
- ngOnDestroy() {
1211
- super.ngOnDestroy();
1212
- this.source.enable(APP_ACTION_DISABLED_DIRECTIVE_KEY);
1322
+ }));
1323
+ clean(() => this.source.enable(APP_ACTION_DISABLED_DIRECTIVE_KEY));
1213
1324
  }
1214
1325
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionDisabledDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1215
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionDisabledDirective, isStandalone: true, selector: "[dbxActionDisabled]", inputs: { disabled: { classPropertyName: "disabled", publicName: "dbxActionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1326
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionDisabledDirective, isStandalone: true, selector: "[dbxActionDisabled]", inputs: { disabled: { classPropertyName: "disabled", publicName: "dbxActionDisabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1216
1327
  }
1217
1328
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionDisabledDirective, decorators: [{
1218
1329
  type: Directive,
@@ -1226,22 +1337,18 @@ const APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY = 'dbx_action_disabled_on_suc
1226
1337
  /**
1227
1338
  * Directive that will disable the action after the action completes successfully.
1228
1339
  */
1229
- class DbxActionDisabledOnSuccessDirective extends AbstractSubscriptionDirective {
1340
+ class DbxActionDisabledOnSuccessDirective {
1230
1341
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
1231
1342
  disabledOnSuccess = input(true, { alias: 'dbxActionDisabledOnSuccess', transform: (value) => value !== false });
1232
1343
  disabledOnSuccess$ = toObservable(this.disabledOnSuccess);
1233
1344
  constructor() {
1234
- super();
1235
- this.sub = combineLatest([this.disabledOnSuccess$, this.source.isSuccess$]).subscribe(([disableOnSuccess, success]) => {
1345
+ cleanSubscription(combineLatest([this.disabledOnSuccess$, this.source.isSuccess$]).subscribe(([disableOnSuccess, success]) => {
1236
1346
  this.source.disable(APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY, disableOnSuccess && success);
1237
- });
1238
- }
1239
- ngOnDestroy() {
1240
- super.ngOnDestroy();
1241
- this.source.enable(APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY);
1347
+ }));
1348
+ clean(() => this.source.enable(APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY));
1242
1349
  }
1243
1350
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionDisabledOnSuccessDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1244
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionDisabledOnSuccessDirective, isStandalone: true, selector: "[dbxActionDisabledOnSuccess]", inputs: { disabledOnSuccess: { classPropertyName: "disabledOnSuccess", publicName: "dbxActionDisabledOnSuccess", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1351
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionDisabledOnSuccessDirective, isStandalone: true, selector: "[dbxActionDisabledOnSuccess]", inputs: { disabledOnSuccess: { classPropertyName: "disabledOnSuccess", publicName: "dbxActionDisabledOnSuccess", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1245
1352
  }
1246
1353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionDisabledOnSuccessDirective, decorators: [{
1247
1354
  type: Directive,
@@ -1313,13 +1420,10 @@ class DbxActionHandlerInstance {
1313
1420
  */
1314
1421
  class AbstractDbxActionHandlerDirective {
1315
1422
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
1316
- _dbxActionHandlerInstance = new DbxActionHandlerInstance(this.source);
1423
+ _dbxActionHandlerInstance = clean(new DbxActionHandlerInstance(this.source));
1317
1424
  constructor() {
1318
1425
  this._dbxActionHandlerInstance.init();
1319
1426
  }
1320
- ngOnDestroy() {
1321
- this._dbxActionHandlerInstance.destroy();
1322
- }
1323
1427
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxActionHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1324
1428
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractDbxActionHandlerDirective, ngImport: i0 });
1325
1429
  }
@@ -1366,11 +1470,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1366
1470
  /**
1367
1471
  * Abstract directive class that watches a show$ observable and behaves like *ngIf.
1368
1472
  */
1369
- class AbstractIfDirective extends AbstractSubscriptionDirective {
1473
+ class AbstractIfDirective {
1370
1474
  _templateRef = inject(TemplateRef);
1371
1475
  _viewContainer = inject(ViewContainerRef);
1476
+ _sub = cleanSubscription();
1372
1477
  ngOnInit() {
1373
- this.sub = this.show$.pipe(distinctUntilChanged()).subscribe((show) => {
1478
+ this._sub.subscription = this.show$.pipe(distinctUntilChanged()).subscribe((show) => {
1374
1479
  if (show) {
1375
1480
  this._viewContainer.createEmbeddedView(this._templateRef);
1376
1481
  }
@@ -1379,8 +1484,8 @@ class AbstractIfDirective extends AbstractSubscriptionDirective {
1379
1484
  }
1380
1485
  });
1381
1486
  }
1382
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractIfDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1383
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractIfDirective, usesInheritance: true, ngImport: i0 });
1487
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractIfDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1488
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractIfDirective, ngImport: i0 });
1384
1489
  }
1385
1490
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractIfDirective, decorators: [{
1386
1491
  type: Directive
@@ -1477,19 +1582,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1477
1582
  /**
1478
1583
  * Directive that executes a function on ActionContextStore Success.
1479
1584
  */
1480
- class DbxActionSuccessHandlerDirective extends AbstractSubscriptionDirective {
1585
+ class DbxActionSuccessHandlerDirective {
1481
1586
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
1482
1587
  dbxActionSuccessHandler = input();
1483
1588
  successFunction$ = toObservable(this.dbxActionSuccessHandler).pipe(filterMaybe(), shareReplay(1));
1484
- ngOnInit() {
1485
- this.sub = this.successFunction$
1589
+ constructor() {
1590
+ cleanSubscription(this.successFunction$
1486
1591
  .pipe(switchMap((successFunction) => this.source.success$.pipe(map((x) => [successFunction, x]), tap(([successFn, result]) => {
1487
1592
  successFn(result);
1488
1593
  }))))
1489
- .subscribe();
1594
+ .subscribe());
1490
1595
  }
1491
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionSuccessHandlerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1492
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionSuccessHandlerDirective, isStandalone: true, selector: "[dbxActionSuccessHandler]", inputs: { dbxActionSuccessHandler: { classPropertyName: "dbxActionSuccessHandler", publicName: "dbxActionSuccessHandler", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1596
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionSuccessHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1597
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionSuccessHandlerDirective, isStandalone: true, selector: "[dbxActionSuccessHandler]", inputs: { dbxActionSuccessHandler: { classPropertyName: "dbxActionSuccessHandler", publicName: "dbxActionSuccessHandler", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1493
1598
  }
1494
1599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionSuccessHandlerDirective, decorators: [{
1495
1600
  type: Directive,
@@ -1497,24 +1602,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1497
1602
  selector: '[dbxActionSuccessHandler]',
1498
1603
  standalone: true
1499
1604
  }]
1500
- }] });
1605
+ }], ctorParameters: () => [] });
1501
1606
 
1502
1607
  /**
1503
1608
  * Directive that executes a function on ActionContextStore error.
1504
1609
  */
1505
- class DbxActionErrorHandlerDirective extends AbstractSubscriptionDirective {
1610
+ class DbxActionErrorHandlerDirective {
1506
1611
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
1507
1612
  dbxActionErrorHandler = input();
1508
1613
  errorFunction$ = toObservable(this.dbxActionErrorHandler).pipe(filterMaybe(), shareReplay(1));
1509
- ngOnInit() {
1510
- this.sub = this.errorFunction$
1614
+ constructor() {
1615
+ cleanSubscription(this.errorFunction$
1511
1616
  .pipe(switchMap((errorFunction) => this.source.error$.pipe(filterMaybe(), map((x) => [errorFunction, x]), tap(([errorFn, error]) => {
1512
1617
  errorFn(error);
1513
1618
  }))))
1514
- .subscribe();
1619
+ .subscribe());
1515
1620
  }
1516
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionErrorHandlerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1517
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionErrorHandlerDirective, isStandalone: true, selector: "[dbxActionErrorHandler]", inputs: { dbxActionErrorHandler: { classPropertyName: "dbxActionErrorHandler", publicName: "dbxActionErrorHandler", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1621
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionErrorHandlerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1622
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionErrorHandlerDirective, isStandalone: true, selector: "[dbxActionErrorHandler]", inputs: { dbxActionErrorHandler: { classPropertyName: "dbxActionErrorHandler", publicName: "dbxActionErrorHandler", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1518
1623
  }
1519
1624
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionErrorHandlerDirective, decorators: [{
1520
1625
  type: Directive,
@@ -1522,7 +1627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1522
1627
  selector: '[dbxActionErrorHandler]',
1523
1628
  standalone: true
1524
1629
  }]
1525
- }] });
1630
+ }], ctorParameters: () => [] });
1526
1631
 
1527
1632
  /**
1528
1633
  * Directive that provides a default value when triggered.
@@ -1533,31 +1638,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1533
1638
  *
1534
1639
  * Use a getter if null/undefined values should be passed to the action.
1535
1640
  */
1536
- class DbxActionValueDirective extends AbstractSubscriptionDirective {
1641
+ class DbxActionValueDirective {
1537
1642
  valueOrFunction = input('', { alias: 'dbxActionValue' });
1538
1643
  source = inject((DbxActionContextStoreSourceInstance), { host: true });
1539
1644
  _valueOrFunctionOverride = new BehaviorSubject(undefined);
1540
1645
  valueOrFunction$ = combineLatest([this._valueOrFunctionOverride, toObservable(this.valueOrFunction)]).pipe(map(([x, y]) => x ?? y), filterMaybe(), shareReplay(1));
1541
1646
  constructor() {
1542
- super();
1543
- }
1544
- ngOnInit() {
1545
- this.sub = this.valueOrFunction$.pipe(switchMap((valueOrFunction) => this.source.triggered$.pipe(map(() => valueOrFunction)))).subscribe((valueOrFunction) => {
1647
+ cleanSubscription(this.valueOrFunction$.pipe(switchMap((valueOrFunction) => this.source.triggered$.pipe(map(() => valueOrFunction)))).subscribe((valueOrFunction) => {
1546
1648
  const value = getValueFromGetter(valueOrFunction);
1547
1649
  this.source.readyValue(value);
1548
- });
1650
+ }));
1549
1651
  }
1550
1652
  setValueOrFunction(value) {
1551
1653
  this._valueOrFunctionOverride.next(value);
1552
1654
  }
1553
- ngOnDestroy() {
1554
- this.source.lockSet.onNextUnlock(() => {
1555
- super.ngOnDestroy();
1556
- this._valueOrFunctionOverride.complete();
1557
- });
1558
- }
1559
1655
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionValueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1560
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionValueDirective, isStandalone: true, selector: "dbxActionValue,[dbxActionValue]", inputs: { valueOrFunction: { classPropertyName: "valueOrFunction", publicName: "dbxActionValue", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1656
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionValueDirective, isStandalone: true, selector: "dbxActionValue,[dbxActionValue]", inputs: { valueOrFunction: { classPropertyName: "valueOrFunction", publicName: "dbxActionValue", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1561
1657
  }
1562
1658
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionValueDirective, decorators: [{
1563
1659
  type: Directive,
@@ -1605,24 +1701,21 @@ const APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY = 'dbx_action_enforce_modified';
1605
1701
  /**
1606
1702
  * Directive that toggles disabling an action if the action is not marked modified.
1607
1703
  */
1608
- class DbxActionEnforceModifiedDirective extends AbstractSubscriptionDirective {
1704
+ class DbxActionEnforceModifiedDirective {
1609
1705
  source = inject(DbxActionContextStoreSourceInstance, { host: true });
1610
1706
  enabled = input(true, { alias: 'dbxActionEnforceModified', transform: (value) => value !== false });
1611
1707
  enabled$ = toObservable(this.enabled);
1612
- ngOnInit() {
1613
- this.sub = combineLatest([this.source.isModified$, this.enabled$])
1708
+ constructor() {
1709
+ cleanSubscription(combineLatest([this.source.isModified$, this.enabled$])
1614
1710
  .pipe(delay(0))
1615
1711
  .subscribe(([modified, enableDirective]) => {
1616
1712
  const disable = enableDirective && !modified;
1617
1713
  this.source.disable(APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY, disable);
1618
- });
1619
- }
1620
- ngOnDestroy() {
1621
- super.ngOnDestroy();
1622
- this.source.enable(APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY);
1714
+ }));
1715
+ clean(() => this.source.enable(APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY));
1623
1716
  }
1624
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionEnforceModifiedDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1625
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionEnforceModifiedDirective, isStandalone: true, selector: "[dbxActionEnforceModified]", inputs: { enabled: { classPropertyName: "enabled", publicName: "dbxActionEnforceModified", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
1717
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionEnforceModifiedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1718
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxActionEnforceModifiedDirective, isStandalone: true, selector: "[dbxActionEnforceModified]", inputs: { enabled: { classPropertyName: "enabled", publicName: "dbxActionEnforceModified", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
1626
1719
  }
1627
1720
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionEnforceModifiedDirective, decorators: [{
1628
1721
  type: Directive,
@@ -1630,7 +1723,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1630
1723
  selector: '[dbxActionEnforceModified]',
1631
1724
  standalone: true
1632
1725
  }]
1633
- }] });
1726
+ }], ctorParameters: () => [] });
1634
1727
 
1635
1728
  /**
1636
1729
  * Utility class that handles trigger events to retrieve a value.
@@ -1697,11 +1790,9 @@ class AbstractDbxActionValueGetterDirective {
1697
1790
  _triggerInstance = new DbxActionValueGetterInstance({
1698
1791
  source: this.source
1699
1792
  });
1700
- ngOnInit() {
1793
+ constructor() {
1701
1794
  this._triggerInstance.init();
1702
- }
1703
- ngOnDestroy() {
1704
- this._triggerInstance.destroy();
1795
+ clean(this._triggerInstance);
1705
1796
  }
1706
1797
  setValueGetterFunction(valueGetterFunction) {
1707
1798
  this._triggerInstance.setValueGetterFunction(valueGetterFunction);
@@ -1729,7 +1820,7 @@ class AbstractDbxActionValueGetterDirective {
1729
1820
  }
1730
1821
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxActionValueGetterDirective, decorators: [{
1731
1822
  type: Directive
1732
- }] });
1823
+ }], ctorParameters: () => [] });
1733
1824
  /**
1734
1825
  * Action directive that uses a getter function instead and waits for the trigger to be called before calling the function.
1735
1826
  *
@@ -1768,8 +1859,6 @@ class DbxActionValueStreamDirective {
1768
1859
  dbxActionValueStream = input(EMPTY);
1769
1860
  dbxActionValueStreamIsEqualValue = input();
1770
1861
  dbxActionValueStreamIsModifiedValue = input();
1771
- _modifiedSub = new SubscriptionObject();
1772
- _triggerSub = new SubscriptionObject();
1773
1862
  isModifiedFunction$ = makeIsModifiedFunctionObservable({
1774
1863
  isModified: toObservable(this.dbxActionValueStreamIsModifiedValue),
1775
1864
  isEqual: toObservable(this.dbxActionValueStreamIsEqualValue)
@@ -1784,23 +1873,23 @@ class DbxActionValueStreamDirective {
1784
1873
  }
1785
1874
  return result;
1786
1875
  }), shareReplay(1))));
1787
- ngOnInit() {
1876
+ constructor() {
1788
1877
  // Update isModified on source
1789
- this._modifiedSub.subscription = this.modifiedValue$.subscribe(([isModified]) => {
1790
- this.source.setIsModified(isModified);
1878
+ cleanSubscriptionWithLockSet({
1879
+ lockSet: this.source.lockSet,
1880
+ sub: this.modifiedValue$.subscribe(([isModified]) => {
1881
+ this.source.setIsModified(isModified);
1882
+ })
1791
1883
  });
1792
1884
  // Set the value on triggers.
1793
- this._triggerSub.subscription = this.source.triggered$.pipe(switchMap(() => this.modifiedValue$)).subscribe(([isModified, value]) => {
1794
- // only mark ready once modified
1795
- if (isModified) {
1796
- this.source.readyValue(value);
1797
- }
1798
- });
1799
- }
1800
- ngOnDestroy() {
1801
- this.source.lockSet.onNextUnlock(() => {
1802
- this._modifiedSub.destroy();
1803
- this._triggerSub.destroy();
1885
+ cleanSubscriptionWithLockSet({
1886
+ lockSet: this.source.lockSet,
1887
+ sub: this.source.triggered$.pipe(switchMap(() => this.modifiedValue$)).subscribe(([isModified, value]) => {
1888
+ // only mark ready once modified
1889
+ if (isModified) {
1890
+ this.source.readyValue(value);
1891
+ }
1892
+ })
1804
1893
  });
1805
1894
  }
1806
1895
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionValueStreamDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -1812,7 +1901,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
1812
1901
  selector: '[dbxActionValueStream]',
1813
1902
  standalone: true
1814
1903
  }]
1815
- }] });
1904
+ }], ctorParameters: () => [] });
1816
1905
 
1817
1906
  /**
1818
1907
  * Structural directive that displays the content when the store has been triggered.
@@ -2759,19 +2848,19 @@ function dbxButtonDisplayType(content) {
2759
2848
  /**
2760
2849
  * Context used for linking a button to an ActionContext and only look for triggers.
2761
2850
  */
2762
- class DbxActionButtonTriggerDirective extends AbstractSubscriptionDirective {
2851
+ class DbxActionButtonTriggerDirective {
2763
2852
  dbxButton = inject(DbxButton, { host: true });
2764
2853
  source = inject(DbxActionContextStoreSourceInstance);
2765
- ngOnInit() {
2766
- this.sub = this.dbxButton.clicked$.subscribe(() => {
2854
+ constructor() {
2855
+ cleanSubscription(this.dbxButton.clicked$.subscribe(() => {
2767
2856
  this._buttonClicked();
2768
- });
2857
+ }));
2769
2858
  }
2770
2859
  _buttonClicked() {
2771
2860
  this.source.trigger();
2772
2861
  }
2773
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionButtonTriggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2774
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxActionButtonTriggerDirective, isStandalone: true, selector: "[dbxActionButtonTrigger]", usesInheritance: true, ngImport: i0 });
2862
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionButtonTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2863
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxActionButtonTriggerDirective, isStandalone: true, selector: "[dbxActionButtonTrigger]", ngImport: i0 });
2775
2864
  }
2776
2865
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionButtonTriggerDirective, decorators: [{
2777
2866
  type: Directive,
@@ -2779,29 +2868,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2779
2868
  selector: '[dbxActionButtonTrigger]',
2780
2869
  standalone: true
2781
2870
  }]
2782
- }] });
2871
+ }], ctorParameters: () => [] });
2783
2872
 
2784
2873
  /**
2785
2874
  * Context used for linking a button to an ActionContext.
2786
2875
  */
2787
2876
  class DbxActionButtonDirective extends DbxActionButtonTriggerDirective {
2788
- _workingSub = new SubscriptionObject();
2789
- _disabledSub = new SubscriptionObject();
2790
- ngOnInit() {
2791
- super.ngOnInit();
2792
- this._workingSub.subscription = this.source.isWorkingOrWorkProgress$.subscribe((working) => {
2877
+ constructor() {
2878
+ super();
2879
+ cleanSubscription(this.source.isWorkingOrWorkProgress$.subscribe((working) => {
2793
2880
  this.dbxButton.setWorking(working);
2794
- });
2795
- this._disabledSub.subscription = this.source.isDisabled$.subscribe((disabled) => {
2881
+ }));
2882
+ cleanSubscription(this.source.isDisabled$.subscribe((disabled) => {
2796
2883
  this.dbxButton.setDisabled(disabled);
2797
- });
2798
- }
2799
- ngOnDestroy() {
2800
- super.ngOnDestroy();
2801
- this._workingSub.destroy();
2802
- this._disabledSub.destroy();
2884
+ }));
2803
2885
  }
2804
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionButtonDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2886
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2805
2887
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxActionButtonDirective, isStandalone: true, selector: "[dbxActionButton]", usesInheritance: true, ngImport: i0 });
2806
2888
  }
2807
2889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxActionButtonDirective, decorators: [{
@@ -2810,24 +2892,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2810
2892
  selector: '[dbxActionButton]',
2811
2893
  standalone: true
2812
2894
  }]
2813
- }] });
2895
+ }], ctorParameters: () => [] });
2814
2896
 
2815
2897
  // MARK: Button Directives
2816
- class DbxButtonSegueDirective extends AbstractSubscriptionDirective {
2898
+ class DbxButtonSegueDirective {
2817
2899
  dbxButton = inject(DbxButton);
2818
2900
  dbxRouterService = inject(DbxRouterService);
2819
2901
  segueRef = input(undefined, { alias: 'dbxButtonSegue' });
2820
2902
  constructor() {
2821
- super();
2822
- this.sub = this.dbxButton.clicked$.subscribe(() => {
2903
+ cleanSubscription(() => this.dbxButton.clicked$.subscribe(() => {
2823
2904
  const segueRef = this.segueRef();
2824
2905
  if (segueRef) {
2825
2906
  this.dbxRouterService.go(segueRef);
2826
2907
  }
2827
- });
2908
+ }));
2828
2909
  }
2829
2910
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxButtonSegueDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2830
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxButtonSegueDirective, isStandalone: true, selector: "[dbxButtonSegue]", inputs: { segueRef: { classPropertyName: "segueRef", publicName: "dbxButtonSegue", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
2911
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxButtonSegueDirective, isStandalone: true, selector: "[dbxButtonSegue]", inputs: { segueRef: { classPropertyName: "segueRef", publicName: "dbxButtonSegue", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
2831
2912
  }
2832
2913
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxButtonSegueDirective, decorators: [{
2833
2914
  type: Directive,
@@ -2840,12 +2921,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2840
2921
  /**
2841
2922
  * Abstract button component.
2842
2923
  */
2843
- class AbstractDbxButtonDirective extends AbstractSubscriptionDirective {
2924
+ class AbstractDbxButtonDirective {
2844
2925
  /**
2845
2926
  * Pre-interceptor button click.
2846
2927
  */
2847
- _buttonClick = new Subject();
2848
- _buttonInterceptor = new BehaviorSubject(undefined);
2928
+ _buttonClick = completeOnDestroy(new Subject());
2929
+ _buttonInterceptor = completeOnDestroy(new BehaviorSubject(undefined));
2849
2930
  buttonClick = output();
2850
2931
  disabled = input(false, { transform: Boolean });
2851
2932
  working = input(false, { transform: (x) => (x == null ? false : x) });
@@ -2877,8 +2958,8 @@ class AbstractDbxButtonDirective extends AbstractSubscriptionDirective {
2877
2958
  working$ = toObservable(this.workingSignal);
2878
2959
  display$ = toObservable(this.buttonDisplayContentSignal);
2879
2960
  clicked$ = outputToObservable(this.buttonClick);
2880
- ngOnInit() {
2881
- this.sub = this._buttonClick
2961
+ constructor() {
2962
+ cleanSubscription(this._buttonClick
2882
2963
  .pipe(switchMap(() => this._buttonInterceptor.pipe(switchMap((x) => {
2883
2964
  if (x) {
2884
2965
  return x.interceptButtonClick().pipe(first());
@@ -2890,12 +2971,7 @@ class AbstractDbxButtonDirective extends AbstractSubscriptionDirective {
2890
2971
  )))
2891
2972
  .subscribe(() => {
2892
2973
  this._forceButtonClicked();
2893
- });
2894
- }
2895
- ngOnDestroy() {
2896
- super.ngOnDestroy();
2897
- this._buttonClick.complete();
2898
- this._buttonInterceptor.complete();
2974
+ }));
2899
2975
  }
2900
2976
  setDisabled(disabled) {
2901
2977
  this._disabledSignal.set(disabled);
@@ -2926,12 +3002,12 @@ class AbstractDbxButtonDirective extends AbstractSubscriptionDirective {
2926
3002
  _forceButtonClicked() {
2927
3003
  this.buttonClick.emit();
2928
3004
  }
2929
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxButtonDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2930
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxButtonDirective, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, working: { classPropertyName: "working", publicName: "working", isSignal: true, isRequired: false, transformFunction: null }, buttonDisplay: { classPropertyName: "buttonDisplay", publicName: "buttonDisplay", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick" }, usesInheritance: true, ngImport: i0 });
3005
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3006
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: AbstractDbxButtonDirective, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, working: { classPropertyName: "working", publicName: "working", isSignal: true, isRequired: false, transformFunction: null }, buttonDisplay: { classPropertyName: "buttonDisplay", publicName: "buttonDisplay", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { buttonClick: "buttonClick" }, ngImport: i0 });
2931
3007
  }
2932
3008
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractDbxButtonDirective, decorators: [{
2933
3009
  type: Directive
2934
- }] });
3010
+ }], ctorParameters: () => [] });
2935
3011
  // MARK: Implementation
2936
3012
  /**
2937
3013
  * Provides an DbxButton directive.
@@ -2955,21 +3031,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2955
3031
  *
2956
3032
  * It will be set working when the context is set loading.
2957
3033
  */
2958
- class DbxLoadingButtonDirective extends AbstractSubscriptionDirective {
3034
+ class DbxLoadingButtonDirective {
2959
3035
  dbxButton = inject(DbxButton, { host: true });
2960
3036
  context = input.required({ alias: 'dbxLoadingButton' });
2961
3037
  context$ = toObservable(this.context).pipe(maybeValueFromObservableOrValue(), distinctUntilChanged(), shareReplay(1));
2962
3038
  contextSignal = toSignal(this.context$);
3039
+ _loadingEffectSub = cleanSubscription();
2963
3040
  _loadingEffect = effect(() => {
2964
3041
  const context = this.contextSignal();
2965
3042
  let subscription;
2966
3043
  if (context) {
2967
3044
  subscription = context.stream$.subscribe((x) => this.dbxButton.setWorking(x.loading));
2968
3045
  }
2969
- this.sub = subscription;
3046
+ this._loadingEffectSub.setSub(subscription);
2970
3047
  });
2971
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxLoadingButtonDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
2972
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxLoadingButtonDirective, isStandalone: true, selector: "[dbxLoadingButton]", inputs: { context: { classPropertyName: "context", publicName: "dbxLoadingButton", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
3048
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxLoadingButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3049
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: DbxLoadingButtonDirective, isStandalone: true, selector: "[dbxLoadingButton]", inputs: { context: { classPropertyName: "context", publicName: "dbxLoadingButton", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
2973
3050
  }
2974
3051
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxLoadingButtonDirective, decorators: [{
2975
3052
  type: Directive,
@@ -3627,15 +3704,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3627
3704
  * Abstract directive that listens to onSuccess transition events and runs a function.
3628
3705
  */
3629
3706
  class AbstractTransitionWatcherDirective extends AbstractTransitionDirective {
3630
- _transitionSub = new SubscriptionObject();
3631
3707
  ngZone = inject(NgZone);
3632
- ngOnInit() {
3633
- this._transitionSub.subscription = this.transitionSuccess$.subscribe(() => {
3708
+ constructor() {
3709
+ super();
3710
+ cleanSubscription(this.transitionSuccess$.subscribe(() => {
3634
3711
  this.updateForSuccessfulTransition();
3635
- });
3636
- }
3637
- ngOnDestroy() {
3638
- this._transitionSub.destroy();
3712
+ }));
3639
3713
  }
3640
3714
  // MARK: Action
3641
3715
  zoneUpdateForSuccessfulTransition() {
@@ -3643,12 +3717,12 @@ class AbstractTransitionWatcherDirective extends AbstractTransitionDirective {
3643
3717
  // remove this function and replace, if necessary or remove entirely with angular zoneless implementation details.
3644
3718
  this.ngZone.run(() => this.updateForSuccessfulTransition());
3645
3719
  }
3646
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractTransitionWatcherDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3720
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractTransitionWatcherDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3647
3721
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: AbstractTransitionWatcherDirective, usesInheritance: true, ngImport: i0 });
3648
3722
  }
3649
3723
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AbstractTransitionWatcherDirective, decorators: [{
3650
3724
  type: Directive
3651
- }] });
3725
+ }], ctorParameters: () => [] });
3652
3726
 
3653
3727
  /**
3654
3728
  * Creates an IsSegueRefActiveFunction
@@ -3918,19 +3992,16 @@ function provideDbxRouteModelKeyDirectiveDelegate(sourceType) {
3918
3992
  *
3919
3993
  * If the key does not exist in the params, then the p
3920
3994
  */
3921
- class DbxRouteModelKeyDirective extends AbstractSubscriptionDirective {
3995
+ class DbxRouteModelKeyDirective {
3922
3996
  dbxRouterService = inject(DbxRouterService);
3923
3997
  dbxRouteModelKeyDelegate = inject(DbxRouteModelKeyDirectiveDelegate, { host: true });
3924
- _redirectInstance = dbxRouteModelKeyParamRedirect(this.dbxRouterService);
3998
+ _redirectInstance = clean(dbxRouteModelKeyParamRedirect(this.dbxRouterService));
3925
3999
  keyFromParams$ = this._redirectInstance.paramValue$;
3926
4000
  key$ = this._redirectInstance.value$;
3927
- ngOnInit() {
3928
- this.sub = this.dbxRouteModelKeyDelegate.useRouteModelKeyParamsObservable(this.keyFromParams$, this.key$);
4001
+ constructor() {
4002
+ cleanSubscription(this.dbxRouteModelKeyDelegate.useRouteModelKeyParamsObservable(this.keyFromParams$, this.key$));
3929
4003
  this._redirectInstance.init();
3930
4004
  }
3931
- ngOnDestroy() {
3932
- this._redirectInstance.destroy();
3933
- }
3934
4005
  // MARK: Input
3935
4006
  get keyParam() {
3936
4007
  return this._redirectInstance.getParamKey();
@@ -3950,8 +4021,8 @@ class DbxRouteModelKeyDirective extends AbstractSubscriptionDirective {
3950
4021
  set dbxRouteModelKeyDefaultDecision(decider) {
3951
4022
  this._redirectInstance.setDecider(decider);
3952
4023
  }
3953
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelKeyDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3954
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxRouteModelKeyDirective, isStandalone: true, selector: "[dbxRouteModelKey]", inputs: { keyParam: ["dbxRouteModelKey", "keyParam"], dbxRouteModelKeyDefault: "dbxRouteModelKeyDefault", dbxRouteModelKeyDefaultRedirect: "dbxRouteModelKeyDefaultRedirect", dbxRouteModelKeyDefaultDecision: "dbxRouteModelKeyDefaultDecision" }, usesInheritance: true, ngImport: i0 });
4024
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelKeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4025
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxRouteModelKeyDirective, isStandalone: true, selector: "[dbxRouteModelKey]", inputs: { keyParam: ["dbxRouteModelKey", "keyParam"], dbxRouteModelKeyDefault: "dbxRouteModelKeyDefault", dbxRouteModelKeyDefaultRedirect: "dbxRouteModelKeyDefaultRedirect", dbxRouteModelKeyDefaultDecision: "dbxRouteModelKeyDefaultDecision" }, ngImport: i0 });
3955
4026
  }
3956
4027
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelKeyDirective, decorators: [{
3957
4028
  type: Directive,
@@ -3959,7 +4030,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3959
4030
  selector: '[dbxRouteModelKey]',
3960
4031
  standalone: true
3961
4032
  }]
3962
- }], propDecorators: { keyParam: [{
4033
+ }], ctorParameters: () => [], propDecorators: { keyParam: [{
3963
4034
  type: Input,
3964
4035
  args: ['dbxRouteModelKey']
3965
4036
  }], dbxRouteModelKeyDefault: [{
@@ -3973,14 +4044,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3973
4044
  /**
3974
4045
  * Used for retrieving the user's current id DbxAuthService and passes it as an identifier for a DbxRouteModelIdDirectiveDelegate.
3975
4046
  */
3976
- class DbxRouteModelIdFromAuthUserIdDirective extends AbstractSubscriptionDirective {
4047
+ class DbxRouteModelIdFromAuthUserIdDirective {
3977
4048
  dbxAuthService = inject(DbxAuthService);
3978
4049
  dbxRouteModelIdDelegate = inject(DbxRouteModelIdDirectiveDelegate, { host: true });
3979
- ngOnInit() {
3980
- this.sub = this.dbxRouteModelIdDelegate.useRouteModelIdParamsObservable(this.dbxAuthService.userIdentifier$, this.dbxAuthService.userIdentifier$);
4050
+ constructor() {
4051
+ cleanSubscription(this.dbxRouteModelIdDelegate.useRouteModelIdParamsObservable(this.dbxAuthService.userIdentifier$, this.dbxAuthService.userIdentifier$));
3981
4052
  }
3982
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelIdFromAuthUserIdDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
3983
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxRouteModelIdFromAuthUserIdDirective, isStandalone: true, selector: "[dbxRouteModelIdFromAuthUserId]", usesInheritance: true, ngImport: i0 });
4053
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelIdFromAuthUserIdDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4054
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxRouteModelIdFromAuthUserIdDirective, isStandalone: true, selector: "[dbxRouteModelIdFromAuthUserId]", ngImport: i0 });
3984
4055
  }
3985
4056
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelIdFromAuthUserIdDirective, decorators: [{
3986
4057
  type: Directive,
@@ -3988,25 +4059,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
3988
4059
  selector: '[dbxRouteModelIdFromAuthUserId]',
3989
4060
  standalone: true
3990
4061
  }]
3991
- }] });
4062
+ }], ctorParameters: () => [] });
3992
4063
 
3993
4064
  /**
3994
4065
  * Used for retrieving the model's id from the current route using the configured parameter and passes it to its delegate.
3995
4066
  */
3996
- class DbxRouteModelIdDirective extends AbstractSubscriptionDirective {
4067
+ class DbxRouteModelIdDirective {
3997
4068
  dbxRouterService = inject(DbxRouterService);
3998
4069
  dbxRouteModelIdDelegate = inject(DbxRouteModelIdDirectiveDelegate, { host: true });
3999
- _redirectInstance = dbxRouteModelIdParamRedirect(this.dbxRouterService);
4070
+ _redirectInstance = clean(dbxRouteModelIdParamRedirect(this.dbxRouterService));
4000
4071
  idFromParams$ = this._redirectInstance.paramValue$;
4001
4072
  id$ = this._redirectInstance.value$;
4002
- ngOnInit() {
4003
- this.sub = this.dbxRouteModelIdDelegate.useRouteModelIdParamsObservable(this.idFromParams$, this.id$);
4073
+ constructor() {
4074
+ cleanSubscription(this.dbxRouteModelIdDelegate.useRouteModelIdParamsObservable(this.idFromParams$, this.id$));
4004
4075
  this._redirectInstance.init();
4005
4076
  }
4006
- ngOnDestroy() {
4007
- super.ngOnDestroy();
4008
- this._redirectInstance.destroy();
4009
- }
4010
4077
  // MARK: Input
4011
4078
  get idParam() {
4012
4079
  return this._redirectInstance.getParamKey();
@@ -4026,8 +4093,8 @@ class DbxRouteModelIdDirective extends AbstractSubscriptionDirective {
4026
4093
  set dbxRouteModelIdDefaultDecision(decider) {
4027
4094
  this._redirectInstance.setDecider(decider);
4028
4095
  }
4029
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelIdDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4030
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxRouteModelIdDirective, isStandalone: true, selector: "[dbxRouteModelId]", inputs: { idParam: ["dbxRouteModelId", "idParam"], dbxRouteModelIdDefault: "dbxRouteModelIdDefault", dbxRouteModelIdDefaultRedirect: "dbxRouteModelIdDefaultRedirect", dbxRouteModelIdDefaultDecision: "dbxRouteModelIdDefaultDecision" }, usesInheritance: true, ngImport: i0 });
4096
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelIdDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4097
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxRouteModelIdDirective, isStandalone: true, selector: "[dbxRouteModelId]", inputs: { idParam: ["dbxRouteModelId", "idParam"], dbxRouteModelIdDefault: "dbxRouteModelIdDefault", dbxRouteModelIdDefaultRedirect: "dbxRouteModelIdDefaultRedirect", dbxRouteModelIdDefaultDecision: "dbxRouteModelIdDefaultDecision" }, ngImport: i0 });
4031
4098
  }
4032
4099
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxRouteModelIdDirective, decorators: [{
4033
4100
  type: Directive,
@@ -4035,7 +4102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
4035
4102
  selector: '[dbxRouteModelId]',
4036
4103
  standalone: true
4037
4104
  }]
4038
- }], propDecorators: { idParam: [{
4105
+ }], ctorParameters: () => [], propDecorators: { idParam: [{
4039
4106
  type: Input,
4040
4107
  args: ['dbxRouteModelId']
4041
4108
  }], dbxRouteModelIdDefault: [{
@@ -4773,11 +4840,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
4773
4840
  * Abstract FilterSourceConnector directive.
4774
4841
  */
4775
4842
  class AbstractFilterSourceConnectorDirective {
4776
- _source = new BehaviorSubject(undefined);
4843
+ _source = completeOnDestroy(new BehaviorSubject(undefined));
4777
4844
  filter$ = this._source.pipe(switchMap((x) => x?.filter$ ?? of(undefined)), filterMaybe(), shareReplay(1));
4778
- ngOnDestroy() {
4779
- this._source.complete();
4780
- }
4781
4845
  connectWithSource(filterSource) {
4782
4846
  this._source.next(filterSource);
4783
4847
  }
@@ -5002,10 +5066,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
5002
5066
  * Direction that provides a FilterMap.
5003
5067
  */
5004
5068
  class DbxFilterMapDirective {
5005
- filterMap = inject((FilterMap));
5006
- ngOnDestroy() {
5007
- this.filterMap.destroy();
5008
- }
5069
+ filterMap = clean(inject((FilterMap)));
5009
5070
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DbxFilterMapDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
5010
5071
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: DbxFilterMapDirective, isStandalone: true, selector: "[dbxFilterMap]", providers: [FilterMap], exportAs: ["dbxFilterMap"], ngImport: i0 });
5011
5072
  }
@@ -5173,7 +5234,7 @@ class DbxInjectionInstance {
5173
5234
  const componentRef = content.createComponent(componentClass, { injector, ngModuleRef });
5174
5235
  const instance = componentRef.instance;
5175
5236
  if (init) {
5176
- init(instance);
5237
+ runInInjectionContext(componentRef.injector, () => init(instance));
5177
5238
  }
5178
5239
  this.componentRef = componentRef;
5179
5240
  }
@@ -5329,7 +5390,7 @@ class DbxInjectionContextDirective {
5329
5390
  }
5330
5391
  ngOnDestroy() {
5331
5392
  this._instance.destroy();
5332
- this._embeddedView?.destroy(); // destroy our embedded view too.
5393
+ this._embeddedView?.destroy(); // destroy our embedded view too if it is set.
5333
5394
  }
5334
5395
  async showContext(config) {
5335
5396
  // clear the current context before showing something new.
@@ -6000,5 +6061,5 @@ function checkNgContentWrapperHasContent(ref) {
6000
6061
  * Generated bundle index. Do not edit.
6001
6062
  */
6002
6063
 
6003
- export { APP_ACTION_DISABLED_DIRECTIVE_KEY, APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY, APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY, AbstractDbxActionHandlerDirective, AbstractDbxActionValueGetterDirective, AbstractDbxAnchorDirective, AbstractDbxButtonDirective, AbstractDbxFilterMapInstanceDirective, AbstractDbxFilterMapSourceDirective, AbstractDbxInjectionDirective, AbstractFilterSourceConnectorDirective, AbstractFilterSourceDirective, AbstractForwardDbxInjectionContextDirective, AbstractIfDirective, AbstractLockSetSubscriptionDirective, AbstractSubscriptionDirective, AbstractTransitionDirective, AbstractTransitionWatcherDirective, ActionContextStore, ActionContextStoreSource, ActionContextStoreSourceMap, AsObservablePipe, CutTextPipe, DBX_ACTION_HANDLER_LOCK_KEY, DBX_APP_APP_CONTEXT_STATE, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN, DBX_AUTH_APP_CONTEXT_STATE, DBX_INIT_APP_CONTEXT_STATE, DBX_INJECTION_COMPONENT_DATA, DBX_KNOWN_APP_CONTEXT_STATES, DBX_ONBOARD_APP_CONTEXT_STATE, DBX_PUBLIC_APP_CONTEXT_STATE, DBX_ROUTE_MODEL_ID_PARAM_DEFAULT_ID_PARAM_KEY, DBX_ROUTE_MODEL_ID_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_ROUTE_MODEL_ID_PARAM_DEFAULT_USE_PARAM_VALUE, DEFAULT_ACTION_DISABLED_KEY, DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, DEFAULT_STORAGE_ACCESSOR_FACTORY_TOKEN, DEFAULT_STORAGE_OBJECT_TOKEN, DateDayRangePipe, DateDayTimeRangePipe, DateDistancePipe, DateFormatDistancePipe, DateFromToTimePipe, DateRangeDistancePipe, DateTimeRangeOnlyDistancePipe, DateTimeRangeOnlyPipe, DateTimeRangePipe, DbxActionAutoModifyDirective, DbxActionAutoTriggerDirective, DbxActionButtonDirective, DbxActionButtonTriggerDirective, DbxActionContextBaseSource, DbxActionContextLoggerDirective, DbxActionContextMachine, DbxActionContextMachineAsService, DbxActionContextMapDirective, DbxActionContextStoreSourceInstance, DbxActionDirective, DbxActionDisabledDirective, DbxActionDisabledOnSuccessDirective, DbxActionEnforceModifiedDirective, DbxActionErrorHandlerDirective, DbxActionFromMapDirective, DbxActionHandlerDirective, DbxActionHandlerInstance, DbxActionHandlerValueDirective, DbxActionHasSuccessDirective, DbxActionIdleDirective, DbxActionIsWorkingDirective, DbxActionMapSourceDirective, DbxActionMapWorkingDisableDirective, DbxActionPreSuccessDirective, DbxActionSourceDirective, DbxActionState, DbxActionSuccessHandlerDirective, DbxActionTriggeredDirective, DbxActionValueDirective, DbxActionValueGetterInstance, DbxActionValueStreamDirective, DbxActionValueTriggerDirective, DbxActionWorkInstanceDelegate, DbxAnchor, DbxAngularRouterService, DbxAppAuthRouterEffects, DbxAppAuthRouterService, DbxAppAuthRoutes, DbxAppAuthStateService, DbxAppContextService, DbxAppContextStateDirective, DbxAppContextStateModule, DbxAppEnviroment, DbxAppEnviromentService, DbxAsyncPipeModule, DbxAuthHasAnyRoleDirective, DbxAuthHasRolesDirective, DbxAuthNotAnyRoleDirective, DbxAuthService, DbxButton, DbxButtonDirective, DbxButtonSegueDirective, DbxCoreActionModule, DbxCoreAngularRouterSegueModule, DbxCoreAuthModule, DbxCoreButtonModule, DbxCoreFilterModule, DbxCoreRouterModelModule, DbxCoreUIRouterSegueModule, DbxDatePipeModule, DbxFilterConnectSourceDirective, DbxFilterMapDirective, DbxFilterMapSourceConnectorDirective, DbxFilterMapSourceDirective, DbxFilterSourceConnectorDirective, DbxFilterSourceDirective, DbxInjectionArrayComponent, DbxInjectionComponent, DbxInjectionComponentModule, DbxInjectionContext, DbxInjectionContextDirective, DbxInjectionInstance, DbxLoadingButtonDirective, DbxMiscPipeModule, DbxPipesModule, DbxRouteModelIdDirective, DbxRouteModelIdDirectiveDelegate, DbxRouteModelIdFromAuthUserIdDirective, DbxRouteModelKeyDirective, DbxRouteModelKeyDirectiveDelegate, DbxRouteParamDefaultRedirectInstance, DbxRouterService, DbxRouterTransitionEventType, DbxRouterTransitionService, DbxUIRouterService, DbxValuePipeModule, DollarAmountPipe, FILTER_SOURCE_DIRECTIVE_DEFAULT_FILTER_TOKEN, FilterSourceDirective, FullLocalStorageObject, GetValueOncePipe, GetValuePipe, InstantStorageAccessor, LimitedStorageAccessor, LockSetComponentStore, MemoryStorageObject, MinutesStringPipe, NO_AUTH_USER_IDENTIFIER, PrettyJsonPipe, SecondaryActionContextStoreSource, SimpleStorageAccessor, SimpleStorageAccessorFactory, StorageAccessor, StringStorageAccessor, StringifySimpleStorageAccessorConverter, SystemDateToTargetDatePipe, TargetDateToSystemDatePipe, TimeDistanceCountdownPipe, TimeDistancePipe, TimezoneAbbreviationPipe, ToJsDatePipe, ToMinutesPipe, WrapperSimpleStorageAccessorDelegate, actionContextHasNoErrorAndIsModifiedAndCanTrigger, actionContextIsModifiedAndCanTrigger, actionContextStoreSourceInstanceFactory, actionContextStoreSourceMachineFactory, actionContextStoreSourceMap, actionContextStoreSourceMapReader, actionContextStoreSourcePipe, anchorTypeForAnchor, asSegueRef, asSegueRefString, assertValidStorageKeyPrefix, authRolesSetContainsAllRolesFrom, authRolesSetContainsAnyRoleFrom, authRolesSetContainsNoRolesFrom, authUserIdentifier, canReadyValue, canTriggerAction, canTriggerActionState, checkNgContentWrapperHasContent, clickableUrlInNewTab, clickableUrlMailTo, clickableUrlTel, dbxActionWorkProgress, dbxButtonDisplayType, dbxRouteModelIdParamRedirect, dbxRouteModelKeyParamRedirect, dbxRouteParamReaderInstance, defaultStorageObjectFactory, enableHasAuthRoleHook, enableHasAuthStateHook, enableIsLoggedInHook, expandClickableAnchorLinkTree, expandClickableAnchorLinkTreeNode, expandClickableAnchorLinkTrees, filterTransitionEvent, filterTransitionSuccess, flattenExpandedClickableAnchorLinkTree, flattenExpandedClickableAnchorLinkTreeToLinks, fromAllActionContextStoreSourceMapSources, index as fromDbxAppAuth, index$2 as fromDbxAppContext, goWithRouter, hasAuthRoleDecisionPipe, isActionContextDisabled, isActionContextEnabled, isClickableFilterPreset, isClickablePartialFilterPreset, isDisabledActionContextState, isIdleActionState, isLatestSuccessfulRoute, isSegueRef, isSegueRefActive, isSegueRefActiveFunction, isSegueRefActiveOnTransitionSuccess, isValidStorageKeyPrefix, isWorkingActionState, latestSuccessfulRoutes, loadingStateForActionContextState, loadingStateTypeForActionContextState, loadingStateTypeForActionState, loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, makeAuthTransitionHook, makeDbxActionContextSourceReference, mapRefStringObsToSegueRefObs, mergeDbxInjectionComponentConfigs, mergeStaticProviders, newWithInjector, index$1 as onDbxAppAuth, index$3 as onDbxAppContext, onRouterTransitionEventType, onRouterTransitionSuccessEvent, pipeActionStore, provideActionStoreSource, provideDbxAnchor, provideDbxAppAuth, provideDbxAppAuthRouter, provideDbxAppAuthRouterState, provideDbxAppAuthState, provideDbxAppContextState, provideDbxAppEnviroment, provideDbxButton, provideDbxInjectionContext, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, provideDbxStorage, provideDbxUIRouterService, provideFilterSource, provideFilterSourceConnector, provideFilterSourceDirective, provideSecondaryActionStoreSource, redirectBasedOnAuthUserState, redirectForIdentifierParamHook, redirectForUserIdentifierParamHook, refStringToSegueRef, safeDetectChanges, safeMarkForCheck, safeUseCdRef, successTransition, switchMapDbxInjectionComponentConfig, tapDetectChanges, tapSafeMarkForCheck, transformEmptyStringInputToUndefined, useActionStore };
6064
+ export { APP_ACTION_DISABLED_DIRECTIVE_KEY, APP_ACTION_DISABLED_ON_SUCCESS_DIRECTIVE_KEY, APP_ACTION_ENFORCE_MODIFIED_DIRECTIVE_KEY, AbstractDbxActionHandlerDirective, AbstractDbxActionValueGetterDirective, AbstractDbxAnchorDirective, AbstractDbxButtonDirective, AbstractDbxFilterMapInstanceDirective, AbstractDbxFilterMapSourceDirective, AbstractDbxInjectionDirective, AbstractFilterSourceConnectorDirective, AbstractFilterSourceDirective, AbstractForwardDbxInjectionContextDirective, AbstractIfDirective, AbstractLockSetSubscriptionDirective, AbstractSubscriptionDirective, AbstractTransitionDirective, AbstractTransitionWatcherDirective, ActionContextStore, ActionContextStoreSource, ActionContextStoreSourceMap, AsObservablePipe, CutTextPipe, DBX_ACTION_HANDLER_LOCK_KEY, DBX_APP_APP_CONTEXT_STATE, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN, DBX_AUTH_APP_CONTEXT_STATE, DBX_INIT_APP_CONTEXT_STATE, DBX_INJECTION_COMPONENT_DATA, DBX_KNOWN_APP_CONTEXT_STATES, DBX_ONBOARD_APP_CONTEXT_STATE, DBX_PUBLIC_APP_CONTEXT_STATE, DBX_ROUTE_MODEL_ID_PARAM_DEFAULT_ID_PARAM_KEY, DBX_ROUTE_MODEL_ID_PARAM_DEFAULT_KEY_PARAM_KEY, DBX_ROUTE_MODEL_ID_PARAM_DEFAULT_USE_PARAM_VALUE, DEFAULT_ACTION_DISABLED_KEY, DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_IDENTIFIER_PARAM_VALUE, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_KEY, DEFAULT_REDIRECT_FOR_USER_IDENTIFIER_PARAM_VALUE, DEFAULT_STORAGE_ACCESSOR_FACTORY_TOKEN, DEFAULT_STORAGE_OBJECT_TOKEN, DateDayRangePipe, DateDayTimeRangePipe, DateDistancePipe, DateFormatDistancePipe, DateFromToTimePipe, DateRangeDistancePipe, DateTimeRangeOnlyDistancePipe, DateTimeRangeOnlyPipe, DateTimeRangePipe, DbxActionAutoModifyDirective, DbxActionAutoTriggerDirective, DbxActionButtonDirective, DbxActionButtonTriggerDirective, DbxActionContextBaseSource, DbxActionContextLoggerDirective, DbxActionContextMachine, DbxActionContextMachineAsService, DbxActionContextMapDirective, DbxActionContextStoreSourceInstance, DbxActionDirective, DbxActionDisabledDirective, DbxActionDisabledOnSuccessDirective, DbxActionEnforceModifiedDirective, DbxActionErrorHandlerDirective, DbxActionFromMapDirective, DbxActionHandlerDirective, DbxActionHandlerInstance, DbxActionHandlerValueDirective, DbxActionHasSuccessDirective, DbxActionIdleDirective, DbxActionIsWorkingDirective, DbxActionMapSourceDirective, DbxActionMapWorkingDisableDirective, DbxActionPreSuccessDirective, DbxActionSourceDirective, DbxActionState, DbxActionSuccessHandlerDirective, DbxActionTriggeredDirective, DbxActionValueDirective, DbxActionValueGetterInstance, DbxActionValueStreamDirective, DbxActionValueTriggerDirective, DbxActionWorkInstanceDelegate, DbxAnchor, DbxAngularRouterService, DbxAppAuthRouterEffects, DbxAppAuthRouterService, DbxAppAuthRoutes, DbxAppAuthStateService, DbxAppContextService, DbxAppContextStateDirective, DbxAppContextStateModule, DbxAppEnviroment, DbxAppEnviromentService, DbxAsyncPipeModule, DbxAuthHasAnyRoleDirective, DbxAuthHasRolesDirective, DbxAuthNotAnyRoleDirective, DbxAuthService, DbxButton, DbxButtonDirective, DbxButtonSegueDirective, DbxCoreActionModule, DbxCoreAngularRouterSegueModule, DbxCoreAuthModule, DbxCoreButtonModule, DbxCoreFilterModule, DbxCoreRouterModelModule, DbxCoreUIRouterSegueModule, DbxDatePipeModule, DbxFilterConnectSourceDirective, DbxFilterMapDirective, DbxFilterMapSourceConnectorDirective, DbxFilterMapSourceDirective, DbxFilterSourceConnectorDirective, DbxFilterSourceDirective, DbxInjectionArrayComponent, DbxInjectionComponent, DbxInjectionComponentModule, DbxInjectionContext, DbxInjectionContextDirective, DbxInjectionInstance, DbxLoadingButtonDirective, DbxMiscPipeModule, DbxPipesModule, DbxRouteModelIdDirective, DbxRouteModelIdDirectiveDelegate, DbxRouteModelIdFromAuthUserIdDirective, DbxRouteModelKeyDirective, DbxRouteModelKeyDirectiveDelegate, DbxRouteParamDefaultRedirectInstance, DbxRouterService, DbxRouterTransitionEventType, DbxRouterTransitionService, DbxUIRouterService, DbxValuePipeModule, DollarAmountPipe, FILTER_SOURCE_DIRECTIVE_DEFAULT_FILTER_TOKEN, FilterSourceDirective, FullLocalStorageObject, GetValueOncePipe, GetValuePipe, InstantStorageAccessor, LimitedStorageAccessor, LockSetComponentStore, MemoryStorageObject, MinutesStringPipe, NO_AUTH_USER_IDENTIFIER, PrettyJsonPipe, SecondaryActionContextStoreSource, SimpleStorageAccessor, SimpleStorageAccessorFactory, StorageAccessor, StringStorageAccessor, StringifySimpleStorageAccessorConverter, SystemDateToTargetDatePipe, TargetDateToSystemDatePipe, TimeDistanceCountdownPipe, TimeDistancePipe, TimezoneAbbreviationPipe, ToJsDatePipe, ToMinutesPipe, WrapperSimpleStorageAccessorDelegate, actionContextHasNoErrorAndIsModifiedAndCanTrigger, actionContextIsModifiedAndCanTrigger, actionContextStoreSourceMap, actionContextStoreSourceMapReader, actionContextStoreSourcePipe, anchorTypeForAnchor, asSegueRef, asSegueRefString, assertValidStorageKeyPrefix, authRolesSetContainsAllRolesFrom, authRolesSetContainsAnyRoleFrom, authRolesSetContainsNoRolesFrom, authUserIdentifier, canReadyValue, canTriggerAction, canTriggerActionState, checkNgContentWrapperHasContent, clean, cleanDestroy, cleanListLoadingContext, cleanLoadingContext, cleanLockSet, cleanSubscription, cleanSubscriptionWithLockSet, cleanWithLockSet, clickableUrlInNewTab, clickableUrlMailTo, clickableUrlTel, completeOnDestroy, dbxActionWorkProgress, dbxButtonDisplayType, dbxRouteModelIdParamRedirect, dbxRouteModelKeyParamRedirect, dbxRouteParamReaderInstance, defaultStorageObjectFactory, enableHasAuthRoleHook, enableHasAuthStateHook, enableIsLoggedInHook, expandClickableAnchorLinkTree, expandClickableAnchorLinkTreeNode, expandClickableAnchorLinkTrees, filterTransitionEvent, filterTransitionSuccess, flattenExpandedClickableAnchorLinkTree, flattenExpandedClickableAnchorLinkTreeToLinks, fromAllActionContextStoreSourceMapSources, index as fromDbxAppAuth, index$2 as fromDbxAppContext, goWithRouter, hasAuthRoleDecisionPipe, isActionContextDisabled, isActionContextEnabled, isClickableFilterPreset, isClickablePartialFilterPreset, isDisabledActionContextState, isIdleActionState, isLatestSuccessfulRoute, isSegueRef, isSegueRefActive, isSegueRefActiveFunction, isSegueRefActiveOnTransitionSuccess, isValidStorageKeyPrefix, isWorkingActionState, latestSuccessfulRoutes, loadingStateForActionContextState, loadingStateTypeForActionContextState, loadingStateTypeForActionState, loggedInObsFromIsLoggedIn, loggedOutObsFromIsLoggedIn, makeAuthTransitionHook, makeDbxActionContextSourceReference, mapRefStringObsToSegueRefObs, mergeDbxInjectionComponentConfigs, mergeStaticProviders, newWithInjector, index$1 as onDbxAppAuth, index$3 as onDbxAppContext, onRouterTransitionEventType, onRouterTransitionSuccessEvent, pipeActionStore, provideActionStoreSource, provideDbxAnchor, provideDbxAppAuth, provideDbxAppAuthRouter, provideDbxAppAuthRouterState, provideDbxAppAuthState, provideDbxAppContextState, provideDbxAppEnviroment, provideDbxButton, provideDbxInjectionContext, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, provideDbxStorage, provideDbxUIRouterService, provideFilterSource, provideFilterSourceConnector, provideFilterSourceDirective, provideSecondaryActionStoreSource, redirectBasedOnAuthUserState, redirectForIdentifierParamHook, redirectForUserIdentifierParamHook, refStringToSegueRef, safeDetectChanges, safeMarkForCheck, safeUseCdRef, successTransition, switchMapDbxInjectionComponentConfig, tapDetectChanges, tapSafeMarkForCheck, transformEmptyStringInputToUndefined, useActionStore };
6004
6065
  //# sourceMappingURL=dereekb-dbx-core.mjs.map