@dereekb/dbx-core 13.18.0 → 13.20.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.
@@ -1119,7 +1119,7 @@ function loadingStateForActionContextState(state) {
1119
1119
  function loadingStateTypeForActionContextState(state) {
1120
1120
  return loadingStateTypeForActionState(state.actionState);
1121
1121
  }
1122
- const INITIAL_STATE$2 = {
1122
+ const INITIAL_STATE$3 = {
1123
1123
  isModified: false,
1124
1124
  actionState: DbxActionState.IDLE
1125
1125
  };
@@ -1165,7 +1165,7 @@ class ActionContextStore extends ComponentStore {
1165
1165
  }
1166
1166
  });
1167
1167
  constructor() {
1168
- super({ ...INITIAL_STATE$2 });
1168
+ super({ ...INITIAL_STATE$3 });
1169
1169
  this.lockSet.addLock('working', this.isWorking$);
1170
1170
  }
1171
1171
  // MARK: Accessors
@@ -1346,7 +1346,7 @@ class ActionContextStore extends ComponentStore {
1346
1346
  /**
1347
1347
  * Completely resets the store.
1348
1348
  */
1349
- reset = this.updater(() => ({ ...INITIAL_STATE$2 }));
1349
+ reset = this.updater(() => ({ ...INITIAL_STATE$3 }));
1350
1350
  // MARK: Utility
1351
1351
  afterDistinctBoolean(fromState) {
1352
1352
  return this.state$.pipe(map((x) => fromState(x)), distinctUntilChanged(), shareReplay(1));
@@ -3640,10 +3640,10 @@ var index$3 = /*#__PURE__*/Object.freeze({
3640
3640
  * The feature key for these items/reducers.
3641
3641
  */
3642
3642
  const DBX_APP_CONTEXT_STATE_FEATURE_KEY = 'data';
3643
- const INITIAL_STATE$1 = {
3643
+ const INITIAL_STATE$2 = {
3644
3644
  state: DBX_INIT_APP_CONTEXT_STATE
3645
3645
  };
3646
- const reducer$1 = createReducer(INITIAL_STATE$1,
3646
+ const reducer$2 = createReducer(INITIAL_STATE$2,
3647
3647
  /**
3648
3648
  * When DbxAppContextActions.dbxAppContextSetState is pushed, update the app's state to match the argument state.
3649
3649
  */
@@ -3662,7 +3662,7 @@ const FEATURE_KEY$1 = 'app.context';
3662
3662
  */
3663
3663
  function reducers$1(state, action) {
3664
3664
  return combineReducers({
3665
- [DBX_APP_CONTEXT_STATE_FEATURE_KEY]: reducer$1
3665
+ [DBX_APP_CONTEXT_STATE_FEATURE_KEY]: reducer$2
3666
3666
  })(state, action);
3667
3667
  }
3668
3668
  /**
@@ -3824,6 +3824,31 @@ var user_action = /*#__PURE__*/Object.freeze({
3824
3824
  setUserState: setUserState
3825
3825
  });
3826
3826
 
3827
+ /**
3828
+ * NgRx action dispatched when impersonation of a user starts (or switches to a different target).
3829
+ *
3830
+ * Dispatched by `DbxAppAuthImpersonationEffects` in response to a `'start'`
3831
+ * {@link DbxAuthImpersonationEvent} from {@link DbxAuthImpersonationService.events$}.
3832
+ *
3833
+ * @see {@link stoppedImpersonating} for the corresponding clear event.
3834
+ */
3835
+ const startedImpersonating = createAction('[App/Auth/Impersonation] Started', props());
3836
+ /**
3837
+ * NgRx action dispatched when impersonation is cleared and the app reverts to the real authenticated user.
3838
+ *
3839
+ * Dispatched by `DbxAppAuthImpersonationEffects` in response to an `'end'`
3840
+ * {@link DbxAuthImpersonationEvent} from {@link DbxAuthImpersonationService.events$}.
3841
+ *
3842
+ * @see {@link startedImpersonating} for the corresponding start event.
3843
+ */
3844
+ const stoppedImpersonating = createAction('[App/Auth/Impersonation] Stopped', props());
3845
+
3846
+ var impersonation_action = /*#__PURE__*/Object.freeze({
3847
+ __proto__: null,
3848
+ startedImpersonating: startedImpersonating,
3849
+ stoppedImpersonating: stoppedImpersonating
3850
+ });
3851
+
3827
3852
  /**
3828
3853
  * Actions related to the auth state.
3829
3854
  */
@@ -3831,6 +3856,7 @@ var user_action = /*#__PURE__*/Object.freeze({
3831
3856
  var index$1 = /*#__PURE__*/Object.freeze({
3832
3857
  __proto__: null,
3833
3858
  DbxAppAuthActions: auth_action,
3859
+ DbxAppAuthImpersonationActions: impersonation_action,
3834
3860
  DbxAppAuthUserActions: user_action
3835
3861
  });
3836
3862
 
@@ -3844,13 +3870,25 @@ const DBX_APP_AUTH_USER_FEATURE_KEY = 'user';
3844
3870
  * Represents a fully unauthenticated state: no user identifier, not onboarded,
3845
3871
  * in the `'none'` auth state, with no roles assigned.
3846
3872
  */
3847
- const INITIAL_STATE = {
3873
+ const INITIAL_STATE$1 = {
3848
3874
  userId: NO_AUTH_USER_IDENTIFIER,
3849
3875
  isOnboarded: false,
3850
3876
  userState: 'none',
3851
3877
  userRoles: []
3852
3878
  };
3853
- const reducer = createReducer(INITIAL_STATE, on(loggedOut, () => ({ ...INITIAL_STATE })), on(setUserIdentifier, (state, { id: userId }) => ({ ...state, userId })), on(setUserIsOnboarded, (state, { isOnboarded }) => ({ ...state, isOnboarded })), on(setUserState, (state, { state: userState }) => ({ ...state, userState })), on(setUserRoles, (state, { roles: userRoles }) => ({ ...state, userRoles: [...userRoles] })));
3879
+ const reducer$1 = createReducer(INITIAL_STATE$1, on(loggedOut, () => ({ ...INITIAL_STATE$1 })), on(setUserIdentifier, (state, { id: userId }) => ({ ...state, userId })), on(setUserIsOnboarded, (state, { isOnboarded }) => ({ ...state, isOnboarded })), on(setUserState, (state, { state: userState }) => ({ ...state, userState })), on(setUserRoles, (state, { roles: userRoles }) => ({ ...state, userRoles: [...userRoles] })));
3880
+
3881
+ /**
3882
+ * NgRx feature key for the impersonation sub-state within the auth feature.
3883
+ */
3884
+ const DBX_APP_AUTH_IMPERSONATION_FEATURE_KEY = 'impersonation';
3885
+ /**
3886
+ * Initial state for the impersonation reducer: not impersonating anyone.
3887
+ */
3888
+ const INITIAL_STATE = {
3889
+ impersonatedUserId: undefined
3890
+ };
3891
+ const reducer = createReducer(INITIAL_STATE, on(loggedOut, () => ({ ...INITIAL_STATE })), on(startedImpersonating, (state, { userId }) => ({ ...state, impersonatedUserId: userId })), on(stoppedImpersonating, (state) => ({ ...state, impersonatedUserId: undefined })));
3854
3892
 
3855
3893
  /**
3856
3894
  * NgRx feature key used to register the auth feature state in the global store.
@@ -3870,7 +3908,8 @@ const FEATURE_KEY = 'app.auth';
3870
3908
  */
3871
3909
  function reducers(state, action) {
3872
3910
  return combineReducers({
3873
- [DBX_APP_AUTH_USER_FEATURE_KEY]: reducer
3911
+ [DBX_APP_AUTH_USER_FEATURE_KEY]: reducer$1,
3912
+ [DBX_APP_AUTH_IMPERSONATION_FEATURE_KEY]: reducer
3874
3913
  })(state, action);
3875
3914
  }
3876
3915
  /**
@@ -3885,12 +3924,19 @@ const selectAppAuthFeature = createFeatureSelector(FEATURE_KEY);
3885
3924
  * @see {@link DbxAppAuthStateService.authStateUser$} for the observable wrapper.
3886
3925
  */
3887
3926
  const selectDbxAppAuthUser = createSelector(selectAppAuthFeature, (featureState) => featureState[DBX_APP_AUTH_USER_FEATURE_KEY]);
3927
+ /**
3928
+ * NgRx selector that retrieves the {@link DbxAppAuthStateImpersonation} from the auth feature state.
3929
+ *
3930
+ * @see {@link DbxAppAuthStateService.authStateImpersonation$} for the observable wrapper.
3931
+ */
3932
+ const selectDbxAppAuthImpersonation = createSelector(selectAppAuthFeature, (featureState) => featureState[DBX_APP_AUTH_IMPERSONATION_FEATURE_KEY]);
3888
3933
 
3889
3934
  var index = /*#__PURE__*/Object.freeze({
3890
3935
  __proto__: null,
3891
3936
  FEATURE_KEY: FEATURE_KEY,
3892
3937
  reducers: reducers,
3893
3938
  selectAppAuthFeature: selectAppAuthFeature,
3939
+ selectDbxAppAuthImpersonation: selectDbxAppAuthImpersonation,
3894
3940
  selectDbxAppAuthUser: selectDbxAppAuthUser
3895
3941
  });
3896
3942
 
@@ -4338,6 +4384,311 @@ function authRolesSetContainsNoRolesFrom(roles) {
4338
4384
  return setContainsNoValueFrom(roles);
4339
4385
  }
4340
4386
 
4387
+ /**
4388
+ * Abstract delegate used by {@link DbxAuthImpersonationService} to load details for an impersonated user.
4389
+ *
4390
+ * Optional: when no delegate is provided, {@link DbxAuthImpersonationService.impersonationDetails$} emits
4391
+ * `undefined`. Register a concrete implementation with {@link provideDbxAuthImpersonationDelegate} (or via
4392
+ * the `delegateType` option of `provideDbxAuthImpersonation`).
4393
+ *
4394
+ * @typeParam T - The provider-specific raw payload type carried on {@link DbxAuthImpersonationDetails.raw}.
4395
+ */
4396
+ class DbxAuthImpersonationDelegate {
4397
+ }
4398
+ /**
4399
+ * Creates Angular DI providers that register the given source type as a {@link DbxAuthImpersonationDelegate}.
4400
+ *
4401
+ * Registers the class itself (so it is instantiable) and aliases the abstract {@link DbxAuthImpersonationDelegate}
4402
+ * token to it via `useExisting`.
4403
+ *
4404
+ * @param sourceType - The class to provide as the delegate.
4405
+ * @returns Array of Angular providers.
4406
+ *
4407
+ * @typeParam S - The concrete delegate class type to register.
4408
+ */
4409
+ function provideDbxAuthImpersonationDelegate(sourceType) {
4410
+ const providers = [
4411
+ sourceType,
4412
+ {
4413
+ provide: DbxAuthImpersonationDelegate,
4414
+ useExisting: forwardRef(() => sourceType)
4415
+ }
4416
+ ];
4417
+ return providers;
4418
+ }
4419
+
4420
+ /**
4421
+ * Optional, opt-in auth feature that lets an app act as a different user ("view as another user" / impersonation).
4422
+ *
4423
+ * This service is the source of truth for the impersonation state and is intentionally NOT `providedIn: 'root'`:
4424
+ * it is registered by `provideDbxAuthImpersonation()` so it is tree-shaken out of apps that do not opt in.
4425
+ *
4426
+ * It depends only on the abstract {@link DbxAuthService} (so it works in any dbx app, Firebase or not) and
4427
+ * resolves the {@link DbxAuthImpersonationService.effectiveUserId$} that downstream per-user stores key off of.
4428
+ * The compounding effects of impersonation (re-keying stores, banner UI, disabling edits, loading the viewed
4429
+ * user's details for display) are the responsibility of the consuming app.
4430
+ *
4431
+ * @typeParam T - The provider-specific raw payload type carried on {@link DbxAuthImpersonationDetails.raw}.
4432
+ *
4433
+ * @see {@link DbxAuthImpersonationTriggerDirective} for the route-driven trigger.
4434
+ * @see {@link DbxAuthImpersonationDelegate} for loading the impersonated user's details.
4435
+ */
4436
+ class DbxAuthImpersonationService {
4437
+ _dbxAuthService = inject(DbxAuthService);
4438
+ _delegate = inject(DbxAuthImpersonationDelegate, { optional: true });
4439
+ _impersonatedUserId = completeOnDestroy(new BehaviorSubject(undefined));
4440
+ _events = completeOnDestroy(new Subject());
4441
+ /**
4442
+ * Tracks the latest real authenticated identifier so {@link startImpersonating} can ignore self-impersonation.
4443
+ */
4444
+ _currentRealUserId;
4445
+ /**
4446
+ * The user currently being impersonated, or null/undefined when not impersonating.
4447
+ */
4448
+ impersonatedUserId$ = this._impersonatedUserId.pipe(distinctUntilChanged(), shareReplay(1));
4449
+ /**
4450
+ * True while a user is being impersonated.
4451
+ */
4452
+ isImpersonating$ = this.impersonatedUserId$.pipe(map((x) => x != null), distinctUntilChanged(), shareReplay(1));
4453
+ /**
4454
+ * The effective user the app should act as: the impersonated user when set, otherwise the real authenticated user.
4455
+ */
4456
+ effectiveUserId$ = combineLatest([this.impersonatedUserId$, this._dbxAuthService.userIdentifier$]).pipe(map(([impersonated, real]) => authUserIdentifier(impersonated ?? real)), distinctUntilChanged(), shareReplay(1));
4457
+ /**
4458
+ * Edge-triggered start/end signal. Subscribe to react to the impersonation lifecycle.
4459
+ */
4460
+ events$ = this._events.asObservable();
4461
+ /**
4462
+ * Lazily-loaded details of the impersonated user via the optional {@link DbxAuthImpersonationDelegate}.
4463
+ * Emits `undefined` when not impersonating or when no delegate is configured.
4464
+ */
4465
+ impersonationDetails$ = this.impersonatedUserId$.pipe(switchMap((uid) => (uid != null && this._delegate != null ? this._delegate.loadImpersonationDetails(uid) : of(undefined))), shareReplay(1));
4466
+ constructor() {
4467
+ // Auto-clear impersonation whenever the real authenticated identity changes or the user logs out,
4468
+ // so impersonation never leaks across sessions or account switches. The first emission only captures
4469
+ // the current identity; subsequent changes trigger the clear.
4470
+ let isFirstIdentity = true;
4471
+ cleanSubscription(this._dbxAuthService.userIdentifier$.pipe(distinctUntilChanged()).subscribe((realUserId) => {
4472
+ this._currentRealUserId = realUserId;
4473
+ if (isFirstIdentity) {
4474
+ isFirstIdentity = false;
4475
+ }
4476
+ else {
4477
+ this._clear('auth');
4478
+ }
4479
+ }));
4480
+ cleanSubscription(this._dbxAuthService.onLogOut$.subscribe(() => this._clear('auth')));
4481
+ }
4482
+ /**
4483
+ * Begins (or switches) impersonation of the given user.
4484
+ *
4485
+ * No-ops when `userId` is the {@link NO_AUTH_USER_IDENTIFIER} sentinel, the current real user, or already the
4486
+ * impersonated user. To revert to the real user, call {@link stopImpersonating}.
4487
+ *
4488
+ * @param userId - The identifier of the user to impersonate.
4489
+ */
4490
+ startImpersonating(userId) {
4491
+ const previous = this._impersonatedUserId.value;
4492
+ const isValidTarget = userId !== NO_AUTH_USER_IDENTIFIER && userId !== this._currentRealUserId && userId !== previous;
4493
+ if (isValidTarget) {
4494
+ this._impersonatedUserId.next(userId);
4495
+ this._emit('start', userId, previous, 'manual');
4496
+ }
4497
+ }
4498
+ /**
4499
+ * Ends impersonation, reverting the effective user to the real authenticated user. No-ops if not impersonating.
4500
+ */
4501
+ stopImpersonating() {
4502
+ this._clear('manual');
4503
+ }
4504
+ _clear(reason) {
4505
+ const previous = this._impersonatedUserId.value;
4506
+ if (previous != null) {
4507
+ this._impersonatedUserId.next(undefined);
4508
+ this._emit('end', undefined, previous, reason);
4509
+ }
4510
+ }
4511
+ _emit(type, impersonatedUserId, previousImpersonatedUserId, reason) {
4512
+ this._events.next({ type, impersonatedUserId, previousImpersonatedUserId, reason });
4513
+ }
4514
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAuthImpersonationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4515
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAuthImpersonationService });
4516
+ }
4517
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAuthImpersonationService, decorators: [{
4518
+ type: Injectable
4519
+ }], ctorParameters: () => [] });
4520
+
4521
+ // MARK: Id
4522
+ /**
4523
+ * Abstract delegate that receives model identifier observables from a {@link DbxRouteModelIdDirective}.
4524
+ *
4525
+ * Implement this class and register it as a provider to receive the id parameter read from the current route.
4526
+ * The directive will call {@link useRouteModelIdParamsObservable} during initialization.
4527
+ *
4528
+ * @example
4529
+ * ```ts
4530
+ * @Directive({
4531
+ * selector: '[myModelLoader]',
4532
+ * providers: provideDbxRouteModelIdDirectiveDelegate(MyModelLoaderDirective)
4533
+ * })
4534
+ * class MyModelLoaderDirective extends DbxRouteModelIdDirectiveDelegate {
4535
+ * useRouteModelIdParamsObservable(idFromParams$: Observable<Maybe<ModelKey>>, computedId$: Observable<Maybe<ModelKey>>): Subscription {
4536
+ * return computedId$.subscribe(id => this.loadModel(id));
4537
+ * }
4538
+ * }
4539
+ * ```
4540
+ *
4541
+ * @see {@link DbxRouteModelIdDirective} for the directive that provides the id observables
4542
+ * @see {@link provideDbxRouteModelIdDirectiveDelegate} for registering the delegate provider
4543
+ */
4544
+ class DbxRouteModelIdDirectiveDelegate {
4545
+ }
4546
+ /**
4547
+ * Creates Angular DI providers that register the given source type as a {@link DbxRouteModelIdDirectiveDelegate}.
4548
+ *
4549
+ * @param sourceType - The class to provide as the delegate.
4550
+ * @returns Array of Angular providers.
4551
+ *
4552
+ * @see {@link DbxRouteModelIdDirectiveDelegate}
4553
+ * @typeParam S - The concrete delegate class type to register.
4554
+ */
4555
+ function provideDbxRouteModelIdDirectiveDelegate(sourceType) {
4556
+ const providers = [
4557
+ {
4558
+ provide: DbxRouteModelIdDirectiveDelegate,
4559
+ useExisting: forwardRef(() => sourceType)
4560
+ }
4561
+ ];
4562
+ return providers;
4563
+ }
4564
+ // MARK: Key
4565
+ /**
4566
+ * Abstract delegate that receives model key observables from a {@link DbxRouteModelKeyDirective}.
4567
+ *
4568
+ * Implement this class and register it as a provider to receive the key parameter read from the current route.
4569
+ * The directive will call {@link useRouteModelKeyParamsObservable} during initialization.
4570
+ *
4571
+ * @example
4572
+ * ```ts
4573
+ * @Directive({
4574
+ * selector: '[myModelKeyLoader]',
4575
+ * providers: provideDbxRouteModelKeyDirectiveDelegate(MyModelKeyLoaderDirective)
4576
+ * })
4577
+ * class MyModelKeyLoaderDirective extends DbxRouteModelKeyDirectiveDelegate {
4578
+ * useRouteModelKeyParamsObservable(keyFromParams$: Observable<Maybe<ModelKey>>, computedKey$: Observable<Maybe<ModelKey>>): Subscription {
4579
+ * return computedKey$.subscribe(key => this.loadModel(key));
4580
+ * }
4581
+ * }
4582
+ * ```
4583
+ *
4584
+ * @see {@link DbxRouteModelKeyDirective} for the directive that provides the key observables
4585
+ * @see {@link provideDbxRouteModelKeyDirectiveDelegate} for registering the delegate provider
4586
+ */
4587
+ class DbxRouteModelKeyDirectiveDelegate {
4588
+ }
4589
+ /**
4590
+ * Creates Angular DI providers that register the given source type as a {@link DbxRouteModelKeyDirectiveDelegate}.
4591
+ *
4592
+ * @param sourceType - The class to provide as the delegate.
4593
+ * @returns Array of Angular providers.
4594
+ *
4595
+ * @see {@link DbxRouteModelKeyDirectiveDelegate}
4596
+ * @typeParam S - The concrete delegate class type to register.
4597
+ */
4598
+ function provideDbxRouteModelKeyDirectiveDelegate(sourceType) {
4599
+ const providers = [
4600
+ {
4601
+ provide: DbxRouteModelKeyDirectiveDelegate,
4602
+ useExisting: forwardRef(() => sourceType)
4603
+ }
4604
+ ];
4605
+ return providers;
4606
+ }
4607
+
4608
+ /**
4609
+ * Route-driven trigger that begins/ends impersonation based on the model id read from the current route.
4610
+ *
4611
+ * Pair it with the {@link DbxRouteModelIdDirective} (`dbxRouteModelId`) in a template:
4612
+ *
4613
+ * ```html
4614
+ * <div dbxRouteModelId="uid" dbxAuthImpersonationTrigger>
4615
+ * <ui-view></ui-view>
4616
+ * </div>
4617
+ * ```
4618
+ *
4619
+ * When the route id is a non-sentinel user different from the logged-in user, impersonation starts;
4620
+ * otherwise it stops. Requires {@link provideDbxAuthImpersonation} to have registered the service.
4621
+ */
4622
+ class DbxAuthImpersonationTriggerDirective extends DbxRouteModelIdDirectiveDelegate {
4623
+ _impersonationService = inject(DbxAuthImpersonationService);
4624
+ _dbxAuthService = inject(DbxAuthService);
4625
+ useRouteModelIdParamsObservable(_idFromParamsObs, computedIdObs) {
4626
+ return combineLatest([computedIdObs, this._dbxAuthService.userIdentifier$]).subscribe(([routeUid, currentUid]) => {
4627
+ if (routeUid != null && routeUid !== NO_AUTH_USER_IDENTIFIER && routeUid !== currentUid) {
4628
+ this._impersonationService.startImpersonating(routeUid);
4629
+ }
4630
+ else {
4631
+ this._impersonationService.stopImpersonating();
4632
+ }
4633
+ });
4634
+ }
4635
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAuthImpersonationTriggerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4636
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.11", type: DbxAuthImpersonationTriggerDirective, isStandalone: true, selector: "[dbxAuthImpersonationTrigger]", providers: provideDbxRouteModelIdDirectiveDelegate(DbxAuthImpersonationTriggerDirective), usesInheritance: true, ngImport: i0 });
4637
+ }
4638
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAuthImpersonationTriggerDirective, decorators: [{
4639
+ type: Directive,
4640
+ args: [{
4641
+ selector: '[dbxAuthImpersonationTrigger]',
4642
+ standalone: true,
4643
+ providers: provideDbxRouteModelIdDirectiveDelegate(DbxAuthImpersonationTriggerDirective)
4644
+ }]
4645
+ }] });
4646
+
4647
+ /**
4648
+ * NgRx effects class that bridges {@link DbxAuthImpersonationService.events$} into the `app.auth` impersonation slice.
4649
+ *
4650
+ * One-directional service → store, mirroring {@link DbxAppAuthEffects}. Registered only when an app opts in via
4651
+ * `provideDbxAuthImpersonation({ ngrx: true })`, so the slice stays empty unless impersonation is actually enabled.
4652
+ *
4653
+ * @see {@link DbxAuthImpersonationService}
4654
+ * @see {@link DbxAppAuthImpersonationActions}
4655
+ */
4656
+ class DbxAppAuthImpersonationEffects {
4657
+ dbxAuthImpersonationService = inject(DbxAuthImpersonationService);
4658
+ /**
4659
+ * Dispatches the started/stopped impersonation action for each lifecycle event emitted by the service.
4660
+ */
4661
+ syncImpersonationState = createEffect(() => this.dbxAuthImpersonationService.events$.pipe(map((event) => (event.type === 'start' ? startedImpersonating({ userId: authUserIdentifier(event.impersonatedUserId), previousUserId: event.previousImpersonatedUserId }) : stoppedImpersonating({ previousUserId: event.previousImpersonatedUserId })))));
4662
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAppAuthImpersonationEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4663
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAppAuthImpersonationEffects });
4664
+ }
4665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAppAuthImpersonationEffects, decorators: [{
4666
+ type: Injectable
4667
+ }] });
4668
+
4669
+ /**
4670
+ * Opt-in provider that enables the impersonation ("view as another user") feature.
4671
+ *
4672
+ * Registers {@link DbxAuthImpersonationService} (and the optional details delegate / NgRx bridge effect).
4673
+ * The route trigger {@link DbxAuthImpersonationTriggerDirective} is standalone and imported where used.
4674
+ *
4675
+ * The impersonation NgRx reducer slice itself is always registered by `provideDbxAppAuthState()`; this
4676
+ * provider only adds the service, the optional delegate, and (when `ngrx` is set) the effect that feeds the slice.
4677
+ *
4678
+ * @param config - Optional configuration.
4679
+ * @returns Angular `EnvironmentProviders` for the impersonation feature.
4680
+ */
4681
+ function provideDbxAuthImpersonation(config) {
4682
+ const providers = [DbxAuthImpersonationService];
4683
+ if (config?.delegateType != null) {
4684
+ providers.push(...provideDbxAuthImpersonationDelegate(config.delegateType));
4685
+ }
4686
+ if (config?.ngrx) {
4687
+ providers.push(provideEffects(DbxAppAuthImpersonationEffects));
4688
+ }
4689
+ return makeEnvironmentProviders(providers);
4690
+ }
4691
+
4341
4692
  /**
4342
4693
  * NgRx effects class that bridges the {@link DbxAuthService} observables into the NgRx store.
4343
4694
  *
@@ -4586,6 +4937,12 @@ class DbxAppAuthStateService {
4586
4937
  * Observable of the current {@link DbxAppAuthStateUser} from the NgRx store.
4587
4938
  */
4588
4939
  authStateUser$ = this.store.select(selectDbxAppAuthUser);
4940
+ /**
4941
+ * Observable of the current {@link DbxAppAuthStateImpersonation} from the NgRx store.
4942
+ *
4943
+ * Stays empty unless an app opts into impersonation via `provideDbxAuthImpersonation({ ngrx: true })`.
4944
+ */
4945
+ authStateImpersonation$ = this.store.select(selectDbxAppAuthImpersonation);
4589
4946
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAppAuthStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4590
4947
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.11", ngImport: i0, type: DbxAppAuthStateService, providedIn: 'root' });
4591
4948
  }
@@ -6357,93 +6714,6 @@ function dbxRouteModelIdParamRedirect(dbxRouterService, defaultParamKey = DEFAUL
6357
6714
  return result;
6358
6715
  }
6359
6716
 
6360
- // MARK: Id
6361
- /**
6362
- * Abstract delegate that receives model identifier observables from a {@link DbxRouteModelIdDirective}.
6363
- *
6364
- * Implement this class and register it as a provider to receive the id parameter read from the current route.
6365
- * The directive will call {@link useRouteModelIdParamsObservable} during initialization.
6366
- *
6367
- * @example
6368
- * ```ts
6369
- * @Directive({
6370
- * selector: '[myModelLoader]',
6371
- * providers: provideDbxRouteModelIdDirectiveDelegate(MyModelLoaderDirective)
6372
- * })
6373
- * class MyModelLoaderDirective extends DbxRouteModelIdDirectiveDelegate {
6374
- * useRouteModelIdParamsObservable(idFromParams$: Observable<Maybe<ModelKey>>, computedId$: Observable<Maybe<ModelKey>>): Subscription {
6375
- * return computedId$.subscribe(id => this.loadModel(id));
6376
- * }
6377
- * }
6378
- * ```
6379
- *
6380
- * @see {@link DbxRouteModelIdDirective} for the directive that provides the id observables
6381
- * @see {@link provideDbxRouteModelIdDirectiveDelegate} for registering the delegate provider
6382
- */
6383
- class DbxRouteModelIdDirectiveDelegate {
6384
- }
6385
- /**
6386
- * Creates Angular DI providers that register the given source type as a {@link DbxRouteModelIdDirectiveDelegate}.
6387
- *
6388
- * @param sourceType - The class to provide as the delegate.
6389
- * @returns Array of Angular providers.
6390
- *
6391
- * @see {@link DbxRouteModelIdDirectiveDelegate}
6392
- * @typeParam S - The concrete delegate class type to register.
6393
- */
6394
- function provideDbxRouteModelIdDirectiveDelegate(sourceType) {
6395
- const providers = [
6396
- {
6397
- provide: DbxRouteModelIdDirectiveDelegate,
6398
- useExisting: forwardRef(() => sourceType)
6399
- }
6400
- ];
6401
- return providers;
6402
- }
6403
- // MARK: Key
6404
- /**
6405
- * Abstract delegate that receives model key observables from a {@link DbxRouteModelKeyDirective}.
6406
- *
6407
- * Implement this class and register it as a provider to receive the key parameter read from the current route.
6408
- * The directive will call {@link useRouteModelKeyParamsObservable} during initialization.
6409
- *
6410
- * @example
6411
- * ```ts
6412
- * @Directive({
6413
- * selector: '[myModelKeyLoader]',
6414
- * providers: provideDbxRouteModelKeyDirectiveDelegate(MyModelKeyLoaderDirective)
6415
- * })
6416
- * class MyModelKeyLoaderDirective extends DbxRouteModelKeyDirectiveDelegate {
6417
- * useRouteModelKeyParamsObservable(keyFromParams$: Observable<Maybe<ModelKey>>, computedKey$: Observable<Maybe<ModelKey>>): Subscription {
6418
- * return computedKey$.subscribe(key => this.loadModel(key));
6419
- * }
6420
- * }
6421
- * ```
6422
- *
6423
- * @see {@link DbxRouteModelKeyDirective} for the directive that provides the key observables
6424
- * @see {@link provideDbxRouteModelKeyDirectiveDelegate} for registering the delegate provider
6425
- */
6426
- class DbxRouteModelKeyDirectiveDelegate {
6427
- }
6428
- /**
6429
- * Creates Angular DI providers that register the given source type as a {@link DbxRouteModelKeyDirectiveDelegate}.
6430
- *
6431
- * @param sourceType - The class to provide as the delegate.
6432
- * @returns Array of Angular providers.
6433
- *
6434
- * @see {@link DbxRouteModelKeyDirectiveDelegate}
6435
- * @typeParam S - The concrete delegate class type to register.
6436
- */
6437
- function provideDbxRouteModelKeyDirectiveDelegate(sourceType) {
6438
- const providers = [
6439
- {
6440
- provide: DbxRouteModelKeyDirectiveDelegate,
6441
- useExisting: forwardRef(() => sourceType)
6442
- }
6443
- ];
6444
- return providers;
6445
- }
6446
-
6447
6717
  /**
6448
6718
  * Directive that retrieves the currently authenticated user's identifier from {@link DbxAuthService}
6449
6719
  * and passes it directly to a {@link DbxRouteModelIdDirectiveDelegate}.
@@ -9400,5 +9670,5 @@ function safeUseCdRef(cdRef, use) {
9400
9670
  * Generated bundle index. Do not edit.
9401
9671
  */
9402
9672
 
9403
- export { ACTION_CONTEXT_STORE_LOCKSET_DESTROY_DELAY_TIME, 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, AbstractTransitionDirective, AbstractTransitionWatcherDirective, ActionContextStore, ActionContextStoreSource, ActionContextStoreSourceMap, AsObservablePipe, CutTextPipe, DBX_ACTION_BUTTON_ECHO_CONFIG, DBX_ACTION_HANDLER_LOCK_KEY, DBX_APP_APP_CONTEXT_STATE, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN, DBX_ASSET_LOADER_CONFIG_TOKEN, DBX_AUTH_APP_CONTEXT_STATE, DBX_INIT_APP_CONTEXT_STATE, DBX_INJECTION_COMPONENT_DATA, DBX_KNOWN_APP_CONTEXT_STATES, DBX_OAUTH_APP_CONTEXT_STATE, DBX_ONBOARD_APP_CONTEXT_STATE, DBX_PUBLIC_APP_CONTEXT_STATE, DEFAULT_ACTION_DISABLED_KEY, DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, DEFAULT_DBX_ACTION_BUTTON_ECHO_CONFIG, DEFAULT_DBX_ACTION_BUTTON_ERROR_ECHO, DEFAULT_DBX_ACTION_BUTTON_SUCCESS_ECHO, DEFAULT_DBX_BUTTON_ECHO_DURATION, DEFAULT_DBX_ROUTE_MODEL_ID_PARAM_ID_PARAM_KEY, DEFAULT_DBX_ROUTE_MODEL_ID_PARAM_KEY_PARAM_KEY, DEFAULT_DBX_ROUTE_MODEL_ID_PARAM_USE_PARAM_VALUE, DEFAULT_FILTER_SOURCE_DIRECTIVE_FILTER_TOKEN, DEFAULT_LOCAL_ASSET_BASE_URL, 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, DateFormatFromToPipe, 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, DbxActionIsModifiedDirective, DbxActionIsWorkingDirective, DbxActionMapSourceDirective, DbxActionMapWorkingDisableDirective, DbxActionPreSuccessDirective, DbxActionSourceDirective, DbxActionState, DbxActionSuccessHandlerDirective, DbxActionTriggeredDirective, DbxActionValueDirective, DbxActionValueGetterInstance, DbxActionValueStreamDirective, DbxActionValueTriggerDirective, DbxActionWorkInstanceDelegate, DbxActionWorkable, DbxAnchor, DbxAngularRouterService, DbxAppAuthRouterEffects, DbxAppAuthRouterService, DbxAppAuthRoutes, DbxAppAuthStateService, DbxAppContextService, DbxAppContextStateDirective, DbxAppEnvironment, DbxAppEnvironmentService, DbxAuthHasAnyRoleDirective, DbxAuthHasRolesDirective, DbxAuthNotAnyRoleDirective, DbxAuthService, DbxButton, DbxButtonDirective, DbxButtonSegueDirective, DbxCoreActionModule, DbxCoreAngularRouterSegueModule, DbxCoreAssetLoader, DbxCoreButtonModule, DbxCoreFilterModule, DbxFilterConnectSourceDirective, DbxFilterMapDirective, DbxFilterMapSourceConnectorDirective, DbxFilterMapSourceDirective, DbxFilterSourceConnectorDirective, DbxFilterSourceDirective, DbxInjectionArrayComponent, DbxInjectionComponent, DbxInjectionContext, DbxInjectionContextDirective, DbxInjectionInstance, DbxLoadingButtonDirective, DbxRouteModelIdDirective, DbxRouteModelIdDirectiveDelegate, DbxRouteModelIdFromAuthUserIdDirective, DbxRouteModelKeyDirective, DbxRouteModelKeyDirectiveDelegate, DbxRouteParamDefaultRedirectInstance, DbxRouterService, DbxRouterTransitionEventType, DbxRouterTransitionService, DbxUIRouterService, DollarAmountPipe, 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, createInjectorForInjectionComponentConfig, dbxActionWorkProgress, dbxButtonDisplayType, dbxInjectionComponentConfigIsEqual, dbxRouteModelIdParamRedirect, dbxRouteModelKeyParamRedirect, dbxRouteParamReaderInstance, defaultStorageObjectFactory, enableHasAuthRoleHook, enableHasAuthStateHook, enableIsLoggedInHook, expandClickableAnchorLinkTree, expandClickableAnchorLinkTreeNode, expandClickableAnchorLinkTrees, filterTransitionEvent, filterTransitionSuccess, flattenExpandedClickableAnchorLinkTree, flattenExpandedClickableAnchorLinkTreeToLinks, fromAllActionContextStoreSourceMapSources, index as fromDbxAppAuth, index$2 as fromDbxAppContext, goWithRouter, hasAuthRoleDecisionPipe, hasNonTrivialChildNodes, initInjectionComponent, 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, provideDbxActionButtonEchoConfig, provideDbxActionWorkable, provideDbxAnchor, provideDbxAppAuth, provideDbxAppAuthRouter, provideDbxAppAuthRouterState, provideDbxAppAuthState, provideDbxAppContextState, provideDbxAppEnvironment, provideDbxAssetLoader, provideDbxButton, provideDbxInjectionContext, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, provideDbxStorage, provideDbxUIRouterService, provideFilterSource, provideFilterSourceConnector, provideFilterSourceDirective, provideSecondaryActionStoreSource, redirectBasedOnAuthUserState, redirectForIdentifierParamHook, redirectForUserIdentifierParamHook, refStringToSegueRef, safeDetectChanges, safeMarkForCheck, safeUseCdRef, successTransition, switchMapDbxInjectionComponentConfig, tapDetectChanges, tapSafeMarkForCheck, transformEmptyStringInputToUndefined, useActionStore };
9673
+ export { ACTION_CONTEXT_STORE_LOCKSET_DESTROY_DELAY_TIME, 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, AbstractTransitionDirective, AbstractTransitionWatcherDirective, ActionContextStore, ActionContextStoreSource, ActionContextStoreSourceMap, AsObservablePipe, CutTextPipe, DBX_ACTION_BUTTON_ECHO_CONFIG, DBX_ACTION_HANDLER_LOCK_KEY, DBX_APP_APP_CONTEXT_STATE, DBX_APP_AUTH_ROUTER_EFFECTS_TOKEN, DBX_ASSET_LOADER_CONFIG_TOKEN, DBX_AUTH_APP_CONTEXT_STATE, DBX_INIT_APP_CONTEXT_STATE, DBX_INJECTION_COMPONENT_DATA, DBX_KNOWN_APP_CONTEXT_STATES, DBX_OAUTH_APP_CONTEXT_STATE, DBX_ONBOARD_APP_CONTEXT_STATE, DBX_PUBLIC_APP_CONTEXT_STATE, DEFAULT_ACTION_DISABLED_KEY, DEFAULT_ACTION_MAP_WORKING_DISABLED_KEY, DEFAULT_DBX_ACTION_BUTTON_ECHO_CONFIG, DEFAULT_DBX_ACTION_BUTTON_ERROR_ECHO, DEFAULT_DBX_ACTION_BUTTON_SUCCESS_ECHO, DEFAULT_DBX_BUTTON_ECHO_DURATION, DEFAULT_DBX_ROUTE_MODEL_ID_PARAM_ID_PARAM_KEY, DEFAULT_DBX_ROUTE_MODEL_ID_PARAM_KEY_PARAM_KEY, DEFAULT_DBX_ROUTE_MODEL_ID_PARAM_USE_PARAM_VALUE, DEFAULT_FILTER_SOURCE_DIRECTIVE_FILTER_TOKEN, DEFAULT_LOCAL_ASSET_BASE_URL, 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, DateFormatFromToPipe, 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, DbxActionIsModifiedDirective, DbxActionIsWorkingDirective, DbxActionMapSourceDirective, DbxActionMapWorkingDisableDirective, DbxActionPreSuccessDirective, DbxActionSourceDirective, DbxActionState, DbxActionSuccessHandlerDirective, DbxActionTriggeredDirective, DbxActionValueDirective, DbxActionValueGetterInstance, DbxActionValueStreamDirective, DbxActionValueTriggerDirective, DbxActionWorkInstanceDelegate, DbxActionWorkable, DbxAnchor, DbxAngularRouterService, DbxAppAuthRouterEffects, DbxAppAuthRouterService, DbxAppAuthRoutes, DbxAppAuthStateService, DbxAppContextService, DbxAppContextStateDirective, DbxAppEnvironment, DbxAppEnvironmentService, DbxAuthHasAnyRoleDirective, DbxAuthHasRolesDirective, DbxAuthImpersonationDelegate, DbxAuthImpersonationService, DbxAuthImpersonationTriggerDirective, DbxAuthNotAnyRoleDirective, DbxAuthService, DbxButton, DbxButtonDirective, DbxButtonSegueDirective, DbxCoreActionModule, DbxCoreAngularRouterSegueModule, DbxCoreAssetLoader, DbxCoreButtonModule, DbxCoreFilterModule, DbxFilterConnectSourceDirective, DbxFilterMapDirective, DbxFilterMapSourceConnectorDirective, DbxFilterMapSourceDirective, DbxFilterSourceConnectorDirective, DbxFilterSourceDirective, DbxInjectionArrayComponent, DbxInjectionComponent, DbxInjectionContext, DbxInjectionContextDirective, DbxInjectionInstance, DbxLoadingButtonDirective, DbxRouteModelIdDirective, DbxRouteModelIdDirectiveDelegate, DbxRouteModelIdFromAuthUserIdDirective, DbxRouteModelKeyDirective, DbxRouteModelKeyDirectiveDelegate, DbxRouteParamDefaultRedirectInstance, DbxRouterService, DbxRouterTransitionEventType, DbxRouterTransitionService, DbxUIRouterService, DollarAmountPipe, 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, createInjectorForInjectionComponentConfig, dbxActionWorkProgress, dbxButtonDisplayType, dbxInjectionComponentConfigIsEqual, dbxRouteModelIdParamRedirect, dbxRouteModelKeyParamRedirect, dbxRouteParamReaderInstance, defaultStorageObjectFactory, enableHasAuthRoleHook, enableHasAuthStateHook, enableIsLoggedInHook, expandClickableAnchorLinkTree, expandClickableAnchorLinkTreeNode, expandClickableAnchorLinkTrees, filterTransitionEvent, filterTransitionSuccess, flattenExpandedClickableAnchorLinkTree, flattenExpandedClickableAnchorLinkTreeToLinks, fromAllActionContextStoreSourceMapSources, index as fromDbxAppAuth, index$2 as fromDbxAppContext, goWithRouter, hasAuthRoleDecisionPipe, hasNonTrivialChildNodes, initInjectionComponent, 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, provideDbxActionButtonEchoConfig, provideDbxActionWorkable, provideDbxAnchor, provideDbxAppAuth, provideDbxAppAuthRouter, provideDbxAppAuthRouterState, provideDbxAppAuthState, provideDbxAppContextState, provideDbxAppEnvironment, provideDbxAssetLoader, provideDbxAuthImpersonation, provideDbxAuthImpersonationDelegate, provideDbxButton, provideDbxInjectionContext, provideDbxRouteModelIdDirectiveDelegate, provideDbxRouteModelKeyDirectiveDelegate, provideDbxStorage, provideDbxUIRouterService, provideFilterSource, provideFilterSourceConnector, provideFilterSourceDirective, provideSecondaryActionStoreSource, redirectBasedOnAuthUserState, redirectForIdentifierParamHook, redirectForUserIdentifierParamHook, refStringToSegueRef, safeDetectChanges, safeMarkForCheck, safeUseCdRef, successTransition, switchMapDbxInjectionComponentConfig, tapDetectChanges, tapSafeMarkForCheck, transformEmptyStringInputToUndefined, useActionStore };
9404
9674
  //# sourceMappingURL=dereekb-dbx-core.mjs.map