@ng-atomic/common 17.10.0 → 17.11.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 (47) hide show
  1. package/esm2022/interceptors/authorization/authorization.interceptor.mjs +9 -3
  2. package/esm2022/interceptors/interceptors.module.mjs +9 -9
  3. package/esm2022/services/app/app.service.mjs +3 -1
  4. package/esm2022/services/auth/auth.service.mjs +3 -2
  5. package/esm2022/services/initializer/index.mjs +2 -0
  6. package/esm2022/services/initializer/initializer.service.mjs +44 -0
  7. package/esm2022/services/initializer/ng-atomic-common-services-initializer.mjs +5 -0
  8. package/esm2022/services/root-property/index.mjs +2 -1
  9. package/esm2022/services/root-property/root-property.di.mjs +14 -0
  10. package/esm2022/services/root-property/root-property.service.mjs +47 -15
  11. package/esm2022/services/side-nav-mode/side-nav-mode.service.mjs +1 -1
  12. package/esm2022/services/ui/ui.helpers.mjs +15 -6
  13. package/esm2022/stores/entities/di.mjs +3 -3
  14. package/esm2022/utils/inject/inject.mjs +26 -8
  15. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +9 -3
  16. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  17. package/fesm2022/ng-atomic-common-interceptors.mjs +10 -10
  18. package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -1
  19. package/fesm2022/ng-atomic-common-services-app.mjs +2 -0
  20. package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
  21. package/fesm2022/ng-atomic-common-services-auth.mjs +3 -2
  22. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  23. package/fesm2022/ng-atomic-common-services-initializer.mjs +50 -0
  24. package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -0
  25. package/fesm2022/ng-atomic-common-services-root-property.mjs +58 -15
  26. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
  27. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
  28. package/fesm2022/ng-atomic-common-services-ui.mjs +15 -6
  29. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  30. package/fesm2022/ng-atomic-common-stores-entities.mjs +2 -2
  31. package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
  32. package/fesm2022/ng-atomic-common-utils.mjs +26 -8
  33. package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
  34. package/interceptors/authorization/authorization.interceptor.d.ts +3 -2
  35. package/interceptors/interceptors.module.d.ts +4 -0
  36. package/package.json +8 -2
  37. package/services/app/app.service.d.ts +2 -0
  38. package/services/auth/auth.service.d.ts +1 -0
  39. package/services/initializer/index.d.ts +1 -0
  40. package/services/initializer/initializer.service.d.ts +22 -0
  41. package/services/root-property/index.d.ts +1 -0
  42. package/services/root-property/root-property.di.d.ts +6 -0
  43. package/services/root-property/root-property.service.d.ts +7 -5
  44. package/services/side-nav-mode/side-nav-mode.service.d.ts +2 -1
  45. package/services/ui/ui.helpers.d.ts +6 -4
  46. package/stores/entities/di.d.ts +11 -3
  47. package/utils/inject/inject.d.ts +5 -1
@@ -4,7 +4,7 @@ import { injectResolver$ } from '@ng-atomic/common/utils';
4
4
  import { combineLatest, isObservable, of, filter, map, shareReplay, switchMap } from 'rxjs';
5
5
  import { injectEntityStore } from './entity-store-manager';
6
6
  import { computedAsync } from 'ngxtension/computed-async';
7
- export function injectOne$(Entity, params = {}, resolverType) {
7
+ export function injectOne$(Entity, params, resolverType) {
8
8
  if (resolverType) {
9
9
  return combineLatest({
10
10
  resolver: injectResolver$(resolverType, params),
@@ -19,7 +19,7 @@ function signalMapToObs(map) {
19
19
  return acc;
20
20
  }, {});
21
21
  }
22
- export function injectOne(Entity, params = {}, resolverType) {
22
+ export function injectOne(Entity, params, resolverType) {
23
23
  return toSignal(injectOne$(Entity, signalMapToObs(params), resolverType));
24
24
  }
25
25
  export function injectAll$(Entity, params = {}, resolverType) {
@@ -61,4 +61,4 @@ export function mapToOne$(storeType, keyOrKey$) {
61
61
  const key$ = isObservable(keyOrKey$) ? keyOrKey$ : of(keyOrKey$);
62
62
  return key$.pipe(switchMap(key => store.mapToOne(key)));
63
63
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3N0b3Jlcy9lbnRpdGllcy9kaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBeUIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakYsT0FBTyxFQUFjLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBNkIsTUFBTSxNQUFNLENBQUM7QUFHbkksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE1BQU0sVUFBVSxVQUFVLENBQ3hCLE1BQWUsRUFDZixTQUFpRCxFQUFFLEVBQ25ELFlBQTJFO0lBRTNFLElBQUksWUFBWSxFQUFFO1FBQ2hCLE9BQU8sYUFBYSxDQUFDO1lBQ25CLFFBQVEsRUFBRSxlQUFlLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQztZQUMvQyxNQUFNLEVBQUUsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3hELE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUM3QjtTQUNGLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFP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LENBQUMsSUFBSSxFQUFFLEVBQUMsWUFBWSxFQUFFLEVBQUUsRUFBQyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUlELE1BQU0sVUFBVSxTQUFTLENBQ3ZCLFNBQW1DLEVBQ25DLFNBQW9DO0lBRXBDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBaUIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvT2JzZXJ2YWJsZSwgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTaWduYWwsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tICdAbngtZGRkL2NvbW1vbi9kb21haW4vbW9kZWxzJztcbmltcG9ydCB7IFJlc29sdmVyLCBnZXRSZXNvbHZlciwgaW5qZWN0UmVzb2x2ZXIkIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgaXNPYnNlcnZhYmxlLCBvZiwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAsIHRhcCwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vdGFzay1jb21wb3Nlcic7XG5pbXBvcnQgeyBFbnRpdHlTdG9yZSB9IGZyb20gJy4vZW50aXR5LXN0b3JlJztcbmltcG9ydCB7IGluamVjdEVudGl0eVN0b3JlIH0gZnJvbSAnLi9lbnRpdHktc3RvcmUtbWFuYWdlcic7XG5pbXBvcnQgeyBjb21wdXRlZEFzeW5jIH0gZnJvbSAnbmd4dGVuc2lvbi9jb21wdXRlZC1hc3luYyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RPbmUkPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICBFbnRpdHk6IFR5cGU8VD4sXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZyB8ICdpZCcsIE9ic2VydmFibGU8YW55Pj4gPSB7fSxcbiAgcmVzb2x2ZXJUeXBlPzogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4pID0+IFJlc29sdmVyPFQ+XG4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgaWYgKHJlc29sdmVyVHlwZSkge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgIHJlc29sdmVyOiBpbmplY3RSZXNvbHZlciQocmVzb2x2ZXJUeXBlLCBwYXJhbXMpLFxuICAgICAgRW50aXR5OiBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpLm1hcFRvT25lKHBhcmFtcy5pZCkucGlwZShcbiAgICAgICAgZmlsdGVyKChFbnRpdHkpID0+ICEhRW50aXR5KVxuICAgICAgKSxcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKCh7IHJlc29sdmVyLCBFbnRpdHkgfSkgPT4gcmVzb2x2ZXIucmVzb2x2ZShFbnRpdHkpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpLm1hcFRvT25lKHBhcmFtcy5pZCkucGlwZShcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2lnbmFsTWFwVG9PYnMobWFwOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8YW55Pj4pOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcCkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGFjY1trZXldID0gdG9PYnNlcnZhYmxlKHZhbHVlKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE9uZTxUIGV4dGVuZHMgRW50aXR5PihcbiAgRW50aXR5OiBUeXBlPFQ+LFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcgfCAnaWQnLCBTaWduYWw8YW55Pj4gPSB7fSxcbiAgcmVzb2x2ZXJUeXBlPzogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+XG4pIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdE9uZSQoRW50aXR5LCBzaWduYWxNYXBUb09icyhwYXJhbXMpLCByZXNvbHZlclR5cGUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFsbCQ8VCBleHRlbmRzIEVudGl0eT4oXG4gIEVudGl0eTogVHlwZTxUPixcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+ID0ge30sXG4gIHJlc29sdmVyVHlwZT86IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZXNvbHZlcjxUPlxuKSB7XG4gIGlmIChyZXNvbHZlclR5cGUpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgICByZXNvbHZlcjogaW5qZWN0UmVzb2x2ZXIkKHJlc29sdmVyVHlwZSwgcGFyYW1zKSxcbiAgICAgIGVudGl0aWVzOiBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpLmFsbCQsXG4gICAgfSkucGlwZShcbiAgICAgIG1hcCgoeyByZXNvbHZlciwgZW50aXRpZXMgfSkgPT4gcmVzb2x2ZXIucmVzb2x2ZU1hbnkoZW50aXRpZXMpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpLmVudGl0aWVzJC5waXBlKFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgY29uc3QgY2FsbFNpZ25hbE1hcCA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgU2lnbmFsPGFueT4+PihtYXA6IFQpOiBTaWduYWw8VD4gPT4gIHtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IE9iamVjdC5lbnRyaWVzKG1hcCkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIHJldHVybiB7Li4uYWNjLCBba2V5XTogdmFsdWUoKX07XG4gIH0sIHt9IGFzIFQpKTtcbn1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFsbDxUIGV4dGVuZHMgRW50aXR5Pihcbi8vICAgRW50aXR5OiBUeXBlPFQ+LFxuLy8gICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIFNpZ25hbDxhbnk+PiA9IHt9LFxuLy8gICByZXNvbHZlclR5cGU/OiBuZXcgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUmVzb2x2ZXI8VD5cbi8vICkge1xuLy8gICBjb25zdCBzdG9yZSA9IGluamVjdEVudGl0eVN0b3JlKEVudGl0eSk7XG4vLyAgIGlmIChyZXNvbHZlclR5cGUpIHtcbi8vICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuLy8gICAgICAgY29uc3QgcmVzb2x2ZXIgPSBnZXRSZXNvbHZlcihyZXNvbHZlclR5cGUsIGNhbGxTaWduYWxNYXAocGFyYW1zKSgpKTtcbi8vICAgICAgIGNvbnN0IGl0ZW1zID0gcmVzb2x2ZXIucmVzb2x2ZU1hbnkoc3RvcmUuYWxsKCkpO1xuLy8gICAgICAgcmV0dXJuIGl0ZW1zO1xuLy8gICAgIH0pO1xuLy8gICB9XG4vLyAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBzdG9yZS5hbGwoKSk7XG4vLyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBbGw8VCBleHRlbmRzIEVudGl0eT4oXG4gIEVudGl0eTogVHlwZTxUPixcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8YW55Pj4gPSB7fSxcbiAgcmVzb2x2ZXJUeXBlPzogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+XG4pIHtcbiAgY29uc3QgJHBhcmFtcyA9IHNpZ25hbE1hcFRvT2JzKHBhcmFtcyk7XG4gIGNvbnN0IGFsbCQgPSBpbmplY3RBbGwkKEVudGl0eSwgJHBhcmFtcywgcmVzb2x2ZXJUeXBlKTtcbiAgcmV0dXJuIGNvbXB1dGVkQXN5bmMoKCkgPT4gYWxsJCwge2luaXRpYWxWYWx1ZTogW119KTtcbn1cblxuZXhwb3J0IHR5cGUgVmFsdWVPck9ic2VydmFibGU8VD4gPSBUIHwgT2JzZXJ2YWJsZTxUPjtcblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvT25lJDxUIGV4dGVuZHMge2lkOiBzdHJpbmd9PihcbiAgc3RvcmVUeXBlOiBuZXcgKCkgPT4gRW50aXR5U3RvcmU8VD4sXG4gIGtleU9yS2V5JDogVmFsdWVPck9ic2VydmFibGU8c3RyaW5nPixcbik6IE9ic2VydmFibGU8VD4ge1xuICBjb25zdCBzdG9yZSA9IGluamVjdDxFbnRpdHlTdG9yZTxUPj4oc3RvcmVUeXBlLCB7fSk7XG4gIGNvbnN0IGtleSQgPSBpc09ic2VydmFibGUoa2V5T3JLZXkkKSA/IGtleU9yS2V5JCA6IG9mKGtleU9yS2V5JCk7XG4gIHJldHVybiBrZXkkLnBpcGUoc3dpdGNoTWFwKGtleSA9PiBzdG9yZS5tYXBUb09uZShrZXkpKSk7XG59XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3N0b3Jlcy9lbnRpdGllcy9kaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hGLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBeUIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakYsT0FBTyxFQUFjLGFBQWEsRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBNkIsTUFBTSxNQUFNLENBQUM7QUFHbkksT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSzFELE1BQU0sVUFBVSxVQUFVLENBQ3hCLE1BQWUsRUFDZixNQUFpQyxFQUNqQyxZQUEyRTtJQUUzRSxJQUFJLFlBQVksRUFBRTtRQUNoQixPQUFPLGFBQWEsQ0FBQztZQUNuQixRQUFRLEVBQUUsZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUM7WUFDL0MsTUFBTSxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FDN0I7U0FDRixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFD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QUksRUFBRSxFQUFDLFlBQVksRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFJRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixTQUFtQyxFQUNuQyxTQUFvQztJQUVwQyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQWlCLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgU2lnbmFsLCBjb21wdXRlZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnQG54LWRkZC9jb21tb24vZG9tYWluL21vZGVscyc7XG5pbXBvcnQgeyBSZXNvbHZlciwgZ2V0UmVzb2x2ZXIsIGluamVjdFJlc29sdmVyJCB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGlzT2JzZXJ2YWJsZSwgb2YsIGZpbHRlciwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YXAsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL3Rhc2stY29tcG9zZXInO1xuaW1wb3J0IHsgRW50aXR5U3RvcmUgfSBmcm9tICcuL2VudGl0eS1zdG9yZSc7XG5pbXBvcnQgeyBpbmplY3RFbnRpdHlTdG9yZSB9IGZyb20gJy4vZW50aXR5LXN0b3JlLW1hbmFnZXInO1xuaW1wb3J0IHsgY29tcHV0ZWRBc3luYyB9IGZyb20gJ25neHRlbnNpb24vY29tcHV0ZWQtYXN5bmMnO1xuXG50eXBlIE9uZVByb3BzPFY+ID0ge2lkOiBWLCBba2V5OiBzdHJpbmddOiBWfTtcbnR5cGUgQWxsUHJvcHM8Vj4gPSB7W2tleTogc3RyaW5nXTogVn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RPbmUkPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICBFbnRpdHk6IFR5cGU8VD4sXG4gIHBhcmFtczogT25lUHJvcHM8T2JzZXJ2YWJsZTxhbnk+PixcbiAgcmVzb2x2ZXJUeXBlPzogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4pID0+IFJlc29sdmVyPFQ+XG4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgaWYgKHJlc29sdmVyVHlwZSkge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICAgIHJlc29sdmVyOiBpbmplY3RSZXNvbHZlciQocmVzb2x2ZXJUeXBlLCBwYXJhbXMpLFxuICAgICAgRW50aXR5OiBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpLm1hcFRvT25lKHBhcmFtcy5pZCkucGlwZShcbiAgICAgICAgZmlsdGVyKChFbnRpdHkpID0+ICEhRW50aXR5KVxuICAgICAgKSxcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKCh7IHJlc29sdmVyLCBFbnRpdHkgfSkgPT4gcmVzb2x2ZXIucmVzb2x2ZShFbnRpdHkpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpLm1hcFRvT25lKHBhcmFtcy5pZCkucGlwZShcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gc2lnbmFsTWFwVG9PYnMobWFwOiBBbGxQcm9wczxTaWduYWw8YW55Pj4pOiBBbGxQcm9wczxPYnNlcnZhYmxlPGFueT4+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcCkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGFjY1trZXldID0gdG9PYnNlcnZhYmxlKHZhbHVlIGFzIGFueSk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30gYXMgQWxsUHJvcHM8T2JzZXJ2YWJsZTxhbnk+Pik7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE9uZTxUIGV4dGVuZHMgRW50aXR5PihcbiAgRW50aXR5OiBUeXBlPFQ+LFxuICBwYXJhbXM6IE9uZVByb3BzPFNpZ25hbDxhbnk+PixcbiAgcmVzb2x2ZXJUeXBlPzogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+XG4pIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdE9uZSQoRW50aXR5LCBzaWduYWxNYXBUb09icyhwYXJhbXMpIGFzIGFueSwgcmVzb2x2ZXJUeXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBbGwkPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICBFbnRpdHk6IFR5cGU8VD4sXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+PiA9IHt9LFxuICByZXNvbHZlclR5cGU/OiBuZXcgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUmVzb2x2ZXI8VD5cbikge1xuICBpZiAocmVzb2x2ZXJUeXBlKSB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qoe1xuICAgICAgcmVzb2x2ZXI6IGluamVjdFJlc29sdmVyJChyZXNvbHZlclR5cGUsIHBhcmFtcyksXG4gICAgICBlbnRpdGllczogaW5qZWN0RW50aXR5U3RvcmUoRW50aXR5KS5hbGwkLFxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgcmVzb2x2ZXIsIGVudGl0aWVzIH0pID0+IHJlc29sdmVyLnJlc29sdmVNYW55KGVudGl0aWVzKSksXG4gICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gaW5qZWN0RW50aXR5U3RvcmUoRW50aXR5KS5lbnRpdGllcyQucGlwZShcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNhbGxTaWduYWxNYXAgPSA8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFNpZ25hbDxhbnk+Pj4obWFwOiBUKTogU2lnbmFsPFQ+ID0+ICB7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBPYmplY3QuZW50cmllcyhtYXApLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICByZXR1cm4gey4uLmFjYywgW2tleV06IHZhbHVlKCl9O1xuICB9LCB7fSBhcyBUKSk7XG59XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBpbmplY3RBbGw8VCBleHRlbmRzIEVudGl0eT4oXG4vLyAgIEVudGl0eTogVHlwZTxUPixcbi8vICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBTaWduYWw8YW55Pj4gPSB7fSxcbi8vICAgcmVzb2x2ZXJUeXBlPzogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+XG4vLyApIHtcbi8vICAgY29uc3Qgc3RvcmUgPSBpbmplY3RFbnRpdHlTdG9yZShFbnRpdHkpO1xuLy8gICBpZiAocmVzb2x2ZXJUeXBlKSB7XG4vLyAgICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbi8vICAgICAgIGNvbnN0IHJlc29sdmVyID0gZ2V0UmVzb2x2ZXIocmVzb2x2ZXJUeXBlLCBjYWxsU2lnbmFsTWFwKHBhcmFtcykoKSk7XG4vLyAgICAgICBjb25zdCBpdGVtcyA9IHJlc29sdmVyLnJlc29sdmVNYW55KHN0b3JlLmFsbCgpKTtcbi8vICAgICAgIHJldHVybiBpdGVtcztcbi8vICAgICB9KTtcbi8vICAgfVxuLy8gICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gc3RvcmUuYWxsKCkpO1xuLy8gfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QWxsPFQgZXh0ZW5kcyBFbnRpdHk+KFxuICBFbnRpdHk6IFR5cGU8VD4sXG4gIHBhcmFtczogQWxsUHJvcHM8U2lnbmFsPGFueT4+ID0ge30sXG4gIHJlc29sdmVyVHlwZT86IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZXNvbHZlcjxUPlxuKSB7XG4gIGNvbnN0ICRwYXJhbXMgPSBzaWduYWxNYXBUb09icyhwYXJhbXMpO1xuICBjb25zdCBhbGwkID0gaW5qZWN0QWxsJChFbnRpdHksICRwYXJhbXMsIHJlc29sdmVyVHlwZSk7XG4gIHJldHVybiBjb21wdXRlZEFzeW5jKCgpID0+IGFsbCQsIHtpbml0aWFsVmFsdWU6IFtdfSk7XG59XG5cbmV4cG9ydCB0eXBlIFZhbHVlT3JPYnNlcnZhYmxlPFQ+ID0gVCB8IE9ic2VydmFibGU8VD47XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09uZSQ8VCBleHRlbmRzIHtpZDogc3RyaW5nfT4oXG4gIHN0b3JlVHlwZTogbmV3ICgpID0+IEVudGl0eVN0b3JlPFQ+LFxuICBrZXlPcktleSQ6IFZhbHVlT3JPYnNlcnZhYmxlPHN0cmluZz4sXG4pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgY29uc3Qgc3RvcmUgPSBpbmplY3Q8RW50aXR5U3RvcmU8VD4+KHN0b3JlVHlwZSwge30pO1xuICBjb25zdCBrZXkkID0gaXNPYnNlcnZhYmxlKGtleU9yS2V5JCkgPyBrZXlPcktleSQgOiBvZihrZXlPcktleSQpO1xuICByZXR1cm4ga2V5JC5waXBlKHN3aXRjaE1hcChrZXkgPT4gc3RvcmUubWFwVG9PbmUoa2V5KSkpO1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { Injectable, Injector, inject } from "@angular/core";
2
2
  import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
3
3
  import { ActivatedRoute, NavigationEnd, Router } from "@angular/router";
4
- import { NEVER, combineLatest, filter, map, shareReplay, startWith, switchMap } from "rxjs";
4
+ import { combineLatest, filter, map, of, shareReplay, startWith, switchMap } from "rxjs";
5
5
  import { toSignal } from '@angular/core/rxjs-interop';
6
6
  import { get } from "lodash-es";
7
7
  import * as i0 from "@angular/core";
@@ -40,18 +40,36 @@ export function injectRouteParams$() {
40
40
  export function injectRouteParams() {
41
41
  return toSignal(injectRouteParams$());
42
42
  }
43
- export function injectChildRouteParam$(key, initial = NEVER) {
44
- const route = inject(ActivatedRoute);
43
+ export function injectRouteNavigated$() {
45
44
  const router = inject(Router);
46
- return router.events.pipe(switchMap(() => route?.firstChild ? route.firstChild.paramMap : initial), map((params) => params.get(key)), shareReplay(1), takeUntilDestroyed());
45
+ const route = inject(ActivatedRoute);
46
+ return router.events.pipe(filter(event => event instanceof NavigationEnd), map(() => route));
47
+ }
48
+ export function injectRouteNavigated() {
49
+ return toSignal(injectRouteNavigated$());
50
+ }
51
+ export function injectPrimaryPaths$() {
52
+ return injectRouteNavigated$().pipe(map(route => {
53
+ const paths = [];
54
+ let current = route.root;
55
+ while (current) {
56
+ paths.push(current?.routeConfig?.path ?? null);
57
+ current = current.firstChild;
58
+ }
59
+ return paths.filter(Boolean);
60
+ }), shareReplay(1), takeUntilDestroyed());
61
+ }
62
+ export function injectPrimaryPaths() {
63
+ return toSignal(injectPrimaryPaths$());
64
+ }
65
+ export function injectChildRouteParam$(key) {
66
+ return injectRouteNavigated$().pipe(switchMap((route) => route?.firstChild ? route.firstChild.paramMap : of(new Map())), map((params) => params.get(key)), shareReplay(1), takeUntilDestroyed());
47
67
  }
48
68
  export function injectChildRouteParam(key) {
49
69
  return toSignal(injectChildRouteParam$(key));
50
70
  }
51
71
  export function injectChildRoute$() {
52
- const router = inject(Router);
53
- const route = inject(ActivatedRoute);
54
- return router.events.pipe(filter(event => event instanceof NavigationEnd), map(() => route?.firstChild?.firstChild), shareReplay(1), takeUntilDestroyed());
72
+ return injectRouteNavigated$().pipe(map((route) => route?.firstChild?.firstChild), shareReplay(1), takeUntilDestroyed());
55
73
  }
56
74
  export function injectChildRoute() {
57
75
  return toSignal(injectChildRoute$());
@@ -117,4 +135,4 @@ export function injectResolver$(ResolverType, params) {
117
135
  export function getResolver(ResolverType, params) {
118
136
  return new ResolverType(params);
119
137
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9pbmplY3QvaW5qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFvQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQTZCLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25HLE9BQU8sRUFBRSxLQUFLLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQU0sV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXRELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRWhDLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFXO0lBQzVDLE9BQU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3pDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUNoQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxrQkFBa0I7QUFDbEIsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVc7SUFDM0MsT0FBTyxNQUFN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QUE4QztRQUM5QyxJQUFJLEVBQUUsRUFBRTtRQUNSLEtBQUssRUFBRSxJQUFJO0tBQ1osQ0FBQztBQUNKLENBQUM7QUFHRCxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVZLFFBQUcsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQztLQVFsRDtJQU5DLEdBQUcsQ0FBQyxNQUEwQjtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzlCLHdCQUF3QjtTQUN6QjtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7OEdBUlUsZUFBZTtrSEFBZixlQUFlLGNBREgsTUFBTTs7MkZBQ2xCLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQVloQyxNQUFNLFVBQVUsZUFBZSxDQUM3QixZQUE4RCxFQUM5RCxNQUF1QztJQUV2QyxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQy9CLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsRUFDekMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FDekIsWUFBOEQsRUFDOUQsTUFBMkI7SUFFM0IsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFBhcmFtTWFwLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBORVZFUiwgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIkBueC1kZGQvY29tbW9uL2RvbWFpbi9tb2RlbHNcIjtcbmltcG9ydCB7IGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclBhcmFtJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclBhcmFtKGtleTogc3RyaW5nKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVyUGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbSQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5wYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVRdWVyeVBhcmFtJDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSBhcyBUKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUXVlcnlQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlUXVlcnlQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtKGtleTogc3RyaW5nLCBpbmplY3Rvcj86IEluamVjdG9yKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVQYXJhbSQoa2V5KSwge2luamVjdG9yfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwJCgpOiBPYnNlcnZhYmxlPFBhcmFtTWFwPiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwKCk6IFNpZ25hbDxQYXJhbU1hcD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVQYXJhbU1hcCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtcyQoKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgcGFyYW1zLmtleXMuZm9yRWFjaChrZXkgPT4gcmVzdWx0W2tleV0gPSBwYXJhbXMuZ2V0KGtleSkpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1zKCk6IFNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtcyQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlUGFyYW0kKGtleTogc3RyaW5nLCBpbml0aWFsOiBPYnNlcnZhYmxlPE1hcDxzdHJpbmcsIHN0cmluZz4+ID0gTkVWRVIpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICByZXR1cm4gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiByb3V0ZT8uZmlyc3RDaGlsZCA/IHJvdXRlLmZpcnN0Q2hpbGQucGFyYW1NYXAgOiBpbml0aWFsKSxcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENoaWxkUm91dGVQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdENoaWxkUm91dGVQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlJCgpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICBtYXAoKCkgPT4gcm91dGU/LmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZSgpOiBTaWduYWw8QWN0aXZhdGVkUm91dGU+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdENoaWxkUm91dGUkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGFzTmV4dCQoKSB7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJldHVybiByb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIG1hcCgoKSA9PiAhIXJvdXRlPy5maXJzdENoaWxkPy5maXJzdENoaWxkKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhhc05leHQoKSB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RIYXNOZXh0JCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclF1ZXJ5UGFyYW0kKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucXVlcnlQYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVyUXVlcnlQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlclF1ZXJ5UGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVEYXRhJDxUPihwYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkuZGF0YS5waXBlKG1hcChkYXRhID0+IGdldChkYXRhLCBwYXRoKSBhcyBUKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZURhdGE8VD4oa2V5OiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVEYXRhJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFjdGl2YXRlZENvbXBvbmVudHMoaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSk6IGFueVtdIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuICBsZXQgcm91dGUgPSBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUsIHtvcHRpb25hbDogdHJ1ZX0pID8/IG51bGw7XG4gIHdoaWxlKHJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbXBvbmVudCkgY29tcG9uZW50cy5wdXNoKHJvdXRlLmNvbXBvbmVudCk7XG4gICAgcm91dGUgPSByb3V0ZS5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVyPFQ+IHtcbiAgcmVzb2x2ZShlbnRyeTogVCk6IFQ7XG4gIHJlc29sdmVNYW55KGVudGl0aWVzOiBUW10pOiBUW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUmVzb2x2ZXIoXG4gIEVudGl0eTogVHlwZTx7aWQ6IHN0cmluZ30+LFxuICBSZXNvbHZlclR5cGU6IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+KSA9PiBSZXNvbHZlcjxhbnk+LFxuKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogRW50aXR5LFxuICAgIC8vIHVzZUZhY3Rvcnk6ICgpID0+IG5ldyBSZXNvbHZlclR5cGUocGFyYW1zKSxcbiAgICBkZXBzOiBbXSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUmVzb2x2ZXJNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvbHZlcjxhbnk+PigpO1xuXG4gIGdldChFbnRpdHk6IFR5cGU8e2lkOiBzdHJpbmd9Pikge1xuICAgIGlmICghdGhpcy5tYXAuaGFzKEVudGl0eS5uYW1lKSkge1xuICAgICAgLy8gcmV0dXJuIHRoaXMubWFwLnNldCgpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hcC5nZXQoRW50aXR5Lm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSZXNvbHZlciQ8VD4oXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+LFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4sXG4pOiBPYnNlcnZhYmxlPFJlc29sdmVyPFQ+PiB7XG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KHBhcmFtcykucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVyPFQ+KFxuICBSZXNvbHZlclR5cGU6IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZXNvbHZlcjxUPixcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogUmVzb2x2ZXI8VD4ge1xuICByZXR1cm4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpO1xufVxuIl19
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9pbmplY3QvaW5qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVoQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDaEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsa0JBQWtCO0FBQ2xCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sTUFBTSxD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LE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQVJVLGVBQWU7a0hBQWYsZUFBZSxjQURILE1BQU07OzJGQUNsQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7QUFZaEMsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsWUFBOEQsRUFDOUQsTUFBdUM7SUFFdkMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMvQixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3pCLFlBQThELEVBQzlELE1BQTJCO0lBRTNCLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBTaWduYWwsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbU1hcCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIkBueC1kZGQvY29tbW9uL2RvbWFpbi9tb2RlbHNcIjtcbmltcG9ydCB7IGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclBhcmFtJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbi8qKiBAZGVwcmVjYXRlZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclBhcmFtKGtleTogc3RyaW5nKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVyUGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbSQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5wYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVRdWVyeVBhcmFtJDxUIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSBhcyBUKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUXVlcnlQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlUXVlcnlQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtKGtleTogc3RyaW5nLCBpbmplY3Rvcj86IEluamVjdG9yKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVQYXJhbSQoa2V5KSwge2luamVjdG9yfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwJCgpOiBPYnNlcnZhYmxlPFBhcmFtTWFwPiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwKCk6IFNpZ25hbDxQYXJhbU1hcD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVQYXJhbU1hcCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtcyQoKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgcGFyYW1zLmtleXMuZm9yRWFjaChrZXkgPT4gcmVzdWx0W2tleV0gPSBwYXJhbXMuZ2V0KGtleSkpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1zKCk6IFNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtcyQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKSB7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJldHVybiByb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgbWFwKCgpID0+IHJvdXRlKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlTmF2aWdhdGVkKCkge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVOYXZpZ2F0ZWQkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UHJpbWFyeVBhdGhzJCgpIHtcbiAgcmV0dXJuIGluamVjdFJvdXRlTmF2aWdhdGVkJCgpLnBpcGUoXG4gICAgbWFwKHJvdXRlID0+IHtcbiAgICAgIGNvbnN0IHBhdGhzID0gW107XG4gICAgICBsZXQgY3VycmVudCA9IHJvdXRlLnJvb3Q7XG4gICAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICBwYXRocy5wdXNoKGN1cnJlbnQ/LnJvdXRlQ29uZmlnPy5wYXRoID8/IG51bGwpO1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5maXJzdENoaWxkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHBhdGhzLmZpbHRlcihCb29sZWFuKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFByaW1hcnlQYXRocygpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFByaW1hcnlQYXRocyQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlUGFyYW0kKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGluamVjdFJvdXRlTmF2aWdhdGVkJCgpLnBpcGUoXG4gICAgc3dpdGNoTWFwKChyb3V0ZSkgPT4gcm91dGU/LmZpcnN0Q2hpbGQgPyByb3V0ZS5maXJzdENoaWxkLnBhcmFtTWFwIDogb2YobmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSkpLFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZVBhcmFtKGtleTogc3RyaW5nKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Q2hpbGRSb3V0ZVBhcmFtJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENoaWxkUm91dGUkKCkge1xuICByZXR1cm4gaW5qZWN0Um91dGVOYXZpZ2F0ZWQkKCkucGlwZShcbiAgICBtYXAoKHJvdXRlKSA9PiByb3V0ZT8uZmlyc3RDaGlsZD8uZmlyc3RDaGlsZCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlKCk6IFNpZ25hbDxBY3RpdmF0ZWRSb3V0ZT4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Q2hpbGRSb3V0ZSQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIYXNOZXh0JCgpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+ICEhcm91dGU/LmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGFzTmV4dCgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdEhhc05leHQkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVyUXVlcnlQYXJhbSQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZXJRdWVyeVBhcmFtKGtleTogc3RyaW5nKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVyUXVlcnlQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZURhdGEkPFQ+KHBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5kYXRhLnBpcGUobWFwKGRhdGEgPT4gZ2V0KGRhdGEsIHBhdGgpIGFzIFQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlRGF0YTxUPihrZXk6IHN0cmluZyk6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZURhdGEkKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QWN0aXZhdGVkQ29tcG9uZW50cyhpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKTogYW55W10ge1xuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCByb3V0ZSA9IGluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSwge29wdGlvbmFsOiB0cnVlfSkgPz8gbnVsbDtcbiAgd2hpbGUocm91dGUpIHtcbiAgICBpZiAocm91dGUuY29tcG9uZW50KSBjb21wb25lbnRzLnB1c2gocm91dGUuY29tcG9uZW50KTtcbiAgICByb3V0ZSA9IHJvdXRlLnBhcmVudDtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZXI8VD4ge1xuICByZXNvbHZlKGVudHJ5OiBUKTogVDtcbiAgcmVzb2x2ZU1hbnkoZW50aXRpZXM6IFRbXSk6IFRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSZXNvbHZlcihcbiAgRW50aXR5OiBUeXBlPHtpZDogc3RyaW5nfT4sXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4pID0+IFJlc29sdmVyPGFueT4sXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBFbnRpdHksXG4gICAgLy8gdXNlRmFjdG9yeTogKCkgPT4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpLFxuICAgIGRlcHM6IFtdLFxuICAgIG11bHRpOiB0cnVlLFxuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBSZXNvbHZlck1hbmFnZXIge1xuICBwcm90ZWN0ZWQgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlc29sdmVyPGFueT4+KCk7XG5cbiAgZ2V0KEVudGl0eTogVHlwZTx7aWQ6IHN0cmluZ30+KSB7XG4gICAgaWYgKCF0aGlzLm1hcC5oYXMoRW50aXR5Lm5hbWUpKSB7XG4gICAgICAvLyByZXR1cm4gdGhpcy5tYXAuc2V0KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChFbnRpdHkubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlc29sdmVyJDxUPihcbiAgUmVzb2x2ZXJUeXBlOiBuZXcgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUmVzb2x2ZXI8VD4sXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+Pixcbik6IE9ic2VydmFibGU8UmVzb2x2ZXI8VD4+IHtcbiAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGFyYW1zKS5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBuZXcgUmVzb2x2ZXJUeXBlKHBhcmFtcykpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x2ZXI8VD4oXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+LFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBSZXNvbHZlcjxUPiB7XG4gIHJldHVybiBuZXcgUmVzb2x2ZXJUeXBlKHBhcmFtcyk7XG59XG4iXX0=
@@ -6,12 +6,12 @@ import { take, mergeMap } from 'rxjs/operators';
6
6
  const PROVIDE_AUTHORIZATION = new InjectionToken('PROVIDE_AUTHORIZATION');
7
7
  class AuthorizationInterceptor {
8
8
  constructor() {
9
- this.provide = inject(PROVIDE_AUTHORIZATION);
9
+ this.getAuth = inject(PROVIDE_AUTHORIZATION);
10
10
  }
11
11
  intercept(req, next) {
12
12
  if (!req.url.startsWith('/api'))
13
13
  return next.handle(req);
14
- return from(this.provide())
14
+ return from(this.getAuth())
15
15
  .pipe(take(1))
16
16
  .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));
17
17
  }
@@ -24,10 +24,16 @@ class AuthorizationInterceptor {
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
25
25
  type: Injectable
26
26
  }] });
27
+ const authorizationInterceptor = (req, next) => {
28
+ const getAuth = inject(PROVIDE_AUTHORIZATION);
29
+ if (!req.url.startsWith('/api'))
30
+ return next(req);
31
+ return from(getAuth()).pipe(take(1), mergeMap(token => next(token ? req.clone({ setHeaders: { Authorization: token } }) : req)));
32
+ };
27
33
 
28
34
  /**
29
35
  * Generated bundle index. Do not edit.
30
36
  */
31
37
 
32
- export { AuthorizationInterceptor, PROVIDE_AUTHORIZATION };
38
+ export { AuthorizationInterceptor, PROVIDE_AUTHORIZATION, authorizationInterceptor };
33
39
  //# sourceMappingURL=ng-atomic-common-interceptors-authorization.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type ProvideAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const PROVIDE_AUTHORIZATION = new InjectionToken<ProvideAuthorization>('PROVIDE_AUTHORIZATION');\n\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private provide = inject(PROVIDE_AUTHORIZATION);\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api')) return next.handle(req);\n\n return from(this.provide())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,qBAAqB,GAAG,IAAI,cAAc,CAAuB,uBAAuB,EAAE;MAG1F,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAajD,KAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACnG;IAEO,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,CAAC;KAC1D;8GAdU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACRX;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-interceptors-authorization.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/authorization.interceptor.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/authorization/ng-atomic-common-interceptors-authorization.ts"],"sourcesContent":["import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpInterceptorFn } from '@angular/common/http';\nimport { from, Observable } from 'rxjs';\nimport { mergeMap, take } from 'rxjs/operators';\n\nexport type ProvideAuthorization = () => Promise<string | null> | Observable<string | null>;\nexport const PROVIDE_AUTHORIZATION = new InjectionToken<ProvideAuthorization>('PROVIDE_AUTHORIZATION');\n\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n private getAuth = inject(PROVIDE_AUTHORIZATION);\n\n intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (!req.url.startsWith('/api')) return next.handle(req);\n\n return from(this.getAuth())\n .pipe(take(1))\n .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));\n }\n\n private getRequestWithToken(req: HttpRequest<unknown>, token: string) {\n return req.clone({ setHeaders: {Authorization: token} });\n }\n}\n\nexport const authorizationInterceptor: HttpInterceptorFn = (req, next) => {\n const getAuth = inject(PROVIDE_AUTHORIZATION);\n if (!req.url.startsWith('/api')) return next(req);\n\n return from(getAuth()).pipe(\n take(1),\n mergeMap(token => next(token ? req.clone({ setHeaders: {Authorization: token} }) : req)),\n );\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAMa,qBAAqB,GAAG,IAAI,cAAc,CAAuB,uBAAuB,EAAE;MAG1F,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAajD,KAAA;IAXC,SAAS,CAAC,GAAyB,EAAE,IAAiB,EAAA;QACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAEzD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACb,aAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KACnG;IAEO,mBAAmB,CAAC,GAAyB,EAAE,KAAa,EAAA;AAClE,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,CAAC;KAC1D;8GAdU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAAxB,wBAAwB,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;MAkBE,wBAAwB,GAAsB,CAAC,GAAG,EAAE,IAAI,KAAI;AACvE,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAElD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACzB,IAAI,CAAC,CAAC,CAAC,EACP,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,EAAC,aAAa,EAAE,KAAK,EAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CACzF,CAAC;AACJ;;AClCA;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, NgModule } from '@angular/core';
2
+ import { NgModule, inject } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { HTTP_INTERCEPTORS } from '@angular/common/http';
5
5
  import { AuthorizationInterceptor, PROVIDE_AUTHORIZATION } from '@ng-atomic/common/interceptors/authorization';
@@ -21,10 +21,7 @@ class InterceptorsModule {
21
21
  useClass: ThrottleInterceptor,
22
22
  multi: true
23
23
  },
24
- {
25
- provide: PROVIDE_AUTHORIZATION,
26
- useValue: () => inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of(``)), map(token => `Bearer ${token}`)),
27
- },
24
+ provideAuthorization()
28
25
  ], imports: [CommonModule] }); }
29
26
  }
30
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InterceptorsModule, decorators: [{
@@ -45,17 +42,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
45
42
  useClass: ThrottleInterceptor,
46
43
  multi: true
47
44
  },
48
- {
49
- provide: PROVIDE_AUTHORIZATION,
50
- useValue: () => inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of(``)), map(token => `Bearer ${token}`)),
51
- },
45
+ provideAuthorization()
52
46
  ],
53
47
  }]
54
48
  }] });
49
+ function provideAuthorization() {
50
+ return {
51
+ provide: PROVIDE_AUTHORIZATION,
52
+ useValue: () => inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of('')), map(token => `Bearer ${token}`)),
53
+ };
54
+ }
55
55
 
56
56
  /**
57
57
  * Generated bundle index. Do not edit.
58
58
  */
59
59
 
60
- export { InterceptorsModule };
60
+ export { InterceptorsModule, provideAuthorization };
61
61
  //# sourceMappingURL=ng-atomic-common-interceptors.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-interceptors.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/interceptors.module.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/ng-atomic-common-interceptors.ts"],"sourcesContent":["import { NgModule, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { AuthorizationInterceptor, PROVIDE_AUTHORIZATION } from '@ng-atomic/common/interceptors/authorization';\nimport { ThrottleInterceptor } from '@ng-atomic/common/interceptors/throttle';\nimport { AuthService } from '@ng-atomic/common/services/auth';\nimport { map, of, switchMap } from 'rxjs';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthorizationInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ThrottleInterceptor,\n multi: true\n },\n {\n provide: PROVIDE_AUTHORIZATION,\n useValue: () => inject(AuthService).auth$.pipe(\n switchMap(auth => auth ? auth.getIdToken() : of(``)),\n map(token => `Bearer ${token}`),\n ),\n },\n ],\n})\nexport class InterceptorsModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAiCa,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAtB3B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAsBH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EApBlB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,wBAAwB;AAClC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAC5C,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EACpD,GAAG,CAAC,KAAK,IAAI,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAChC;AACF,aAAA;AACF,SAAA,EAAA,OAAA,EAAA,CApBC,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAsBH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAzB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,wBAAwB;AAClC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC7B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;4BAC9B,QAAQ,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAC5C,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EACpD,GAAG,CAAC,KAAK,IAAI,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAChC;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA,CAAA;;;AChCD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-interceptors.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/interceptors/interceptors.module.ts","../../../../../packages/@ng-atomic/common/src/lib/interceptors/ng-atomic-common-interceptors.ts"],"sourcesContent":["import { NgModule, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { AuthorizationInterceptor, PROVIDE_AUTHORIZATION } from '@ng-atomic/common/interceptors/authorization';\nimport { ThrottleInterceptor } from '@ng-atomic/common/interceptors/throttle';\nimport { AuthService } from '@ng-atomic/common/services/auth';\nimport { map, of, switchMap } from 'rxjs';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthorizationInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: ThrottleInterceptor,\n multi: true\n },\n provideAuthorization()\n ],\n})\nexport class InterceptorsModule { }\n\nexport function provideAuthorization() {\n return {\n provide: PROVIDE_AUTHORIZATION,\n useValue: () => inject(AuthService).auth$.pipe(\n switchMap(auth => auth ? auth.getIdToken() : of('')),\n map(token => `Bearer ${token}`),\n ),\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MA2Ba,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAhB3B,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAgBH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAdlB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,wBAAwB;AAClC,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,mBAAmB;AAC7B,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA,oBAAoB,EAAE;AACvB,SAAA,EAAA,OAAA,EAAA,CAdC,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAgBH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,wBAAwB;AAClC,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,mBAAmB;AAC7B,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA,oBAAoB,EAAE;AACvB,qBAAA;AACF,iBAAA,CAAA;;SAGe,oBAAoB,GAAA;IAClC,OAAO;AACL,QAAA,OAAO,EAAE,qBAAqB;QAC9B,QAAQ,EAAE,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAC5C,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EACpD,GAAG,CAAC,KAAK,IAAI,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAChC;KACF,CAAC;AACJ;;ACrCA;;AAEG;;;;"}
@@ -7,9 +7,11 @@ import { SideNavModeService } from '@ng-atomic/common/services/side-nav-mode';
7
7
  import { FabService } from '@ng-atomic/common/services/fab';
8
8
  import { SnackBarService } from '@ng-atomic/common/services/snack-bar';
9
9
  import { Clipboard } from '@angular/cdk/clipboard';
10
+ import { MatDialog } from '@angular/material/dialog';
10
11
 
11
12
  class AppService {
12
13
  constructor() {
14
+ this.dialog = inject(MatDialog);
13
15
  this.loading = inject(LoadingService);
14
16
  this.sideApp = inject(SideAppService);
15
17
  this.sideNavMode = inject(SideNavModeService);
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-app.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/app/app.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/app/ng-atomic-common-services-app.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LoadingService } from '@ng-atomic/common/services/loading';\nimport { SideAppService } from '@ng-atomic/common/services/side-app';\nimport { SideNavModeService } from '@ng-atomic/common/services/side-nav-mode';\nimport { FabService } from '@ng-atomic/common/services/fab';\nimport { SnackBarService } from '@ng-atomic/common/services/snack-bar';\nimport { Clipboard } from '@angular/cdk/clipboard';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n readonly loading = inject(LoadingService);\n readonly sideApp = inject(SideAppService);\n readonly sideNavMode = inject(SideNavModeService);\n readonly sideNav = inject(SideNavModeService);\n readonly router = inject(Router);\n readonly fab = inject(FabService);\n readonly snackBar = inject(SnackBarService);\n readonly clipboard = inject(Clipboard);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;MAYa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACxC,KAAA;8GATY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACXD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-services-app.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/app/app.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/app/ng-atomic-common-services-app.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { LoadingService } from '@ng-atomic/common/services/loading';\nimport { SideAppService } from '@ng-atomic/common/services/side-app';\nimport { SideNavModeService } from '@ng-atomic/common/services/side-nav-mode';\nimport { FabService } from '@ng-atomic/common/services/fab';\nimport { SnackBarService } from '@ng-atomic/common/services/snack-bar';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n readonly dialog = inject(MatDialog);\n readonly loading = inject(LoadingService);\n readonly sideApp = inject(SideAppService);\n readonly sideNavMode = inject(SideNavModeService);\n readonly sideNav = inject(SideNavModeService);\n readonly router = inject(Router);\n readonly fab = inject(FabService);\n readonly snackBar = inject(SnackBarService);\n readonly clipboard = inject(Clipboard);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;MAaa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACxC,KAAA;8GAVY,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}
@@ -3,13 +3,14 @@ import { inject, Injectable } from '@angular/core';
3
3
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { Auth, authState, TwitterAuthProvider, signInWithPopup, GoogleAuthProvider, signInWithEmailAndPassword, createUserWithEmailAndPassword, signInWithCustomToken, signOut } from '@angular/fire/auth';
5
5
  import { get } from 'lodash-es';
6
- import { switchMap, of, map, distinctUntilChanged, shareReplay } from 'rxjs';
6
+ import { map, distinctUntilChanged, shareReplay, switchMap, of } from 'rxjs';
7
7
 
8
8
  class AuthService {
9
9
  constructor() {
10
10
  this.#auth = inject(Auth);
11
11
  this.auth$ = authState(this.#auth);
12
12
  this.auth = toSignal(this.auth$);
13
+ this.userId$ = this.auth$.pipe(map(auth => auth?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
13
14
  this.customClaims$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdTokenResult() : of(null)), map(token => token?.claims ?? {}), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
14
15
  }
15
16
  #auth;
@@ -49,7 +50,7 @@ function injectAuthState() {
49
50
  return toSignal(injectAuthState$());
50
51
  }
51
52
  function injectUserId$() {
52
- return inject(AuthService).auth$.pipe(map(auth => auth?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
53
+ return inject(AuthService).userId$.pipe(distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
53
54
  }
54
55
  function injectUserId() {
55
56
  return toSignal(injectUserId$());
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/auth/auth.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/auth/ng-atomic-common-services-auth.ts"],"sourcesContent":["import { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, UserCredential, signInWithEmailAndPassword, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { Observable, distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\n\nexport interface TwitterCredential {\n context: string;\n displayName: string;\n email: string;\n emailVerified: boolean;\n expiresIn: string;\n federatedId: string;\n fullName: string;\n idToken: string;\n kind: 'identitytoolkit#VerifyAssertionResponse';\n localId: string;\n oauthAccessToken: string;\n oauthTokenSecret: string;\n photoUrl: string;\n providerId: 'twitter.com';\n rawUserInfo: string;\n refreshToken: string;\n screenName: string;\n}\n\nexport type Result = UserCredential & {_tokenResponse: TwitterCredential};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n #auth = inject(Auth);\n auth$ = authState(this.#auth);\n auth = toSignal(this.auth$);\n\n customClaims$ = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdTokenResult() : of(null)),\n map(token => token?.claims ?? {}),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n signInWithTwitter(): Promise<Result> {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider) as Promise<Result>\n }\n\n signInWithGoogle() {\n const provider = new GoogleAuthProvider();\n return signInWithPopup(this.#auth, provider);\n }\n\n signInWithEmailAndPassword(email: string, password: string) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n\n createUserWithEmailAndPassword(email: string, password: string) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n\n signInWithCustomToken(customToken: string): Promise<Result> {\n return signInWithCustomToken(this.#auth, customToken) as Promise<Result>;\n }\n\n signOut() {\n return signOut(this.#auth);\n }\n}\n\nexport function injectAuthState$() {\n return inject(AuthService).auth$;\n}\n\nexport function injectAuthState() {\n return toSignal(injectAuthState$());\n}\n\nexport function injectUserId$(): Observable<string | null> {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectUserId(): Signal<string | null> {\n return toSignal(injectUserId$());\n}\n\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.providerData?.[0]?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectClaim$<T = string>(claim: string): Observable<T> {\n return inject(AuthService).customClaims$.pipe(\n map(token => claim ? get(token, claim) : token),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n ) as any;\n}\n\nexport function injectClaim<T = string>(claim: string): Signal<T> {\n return toSignal(injectClaim$<T>(claim));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-atomic-common-services-auth.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/auth/auth.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/auth/ng-atomic-common-services-auth.ts"],"sourcesContent":["import { Injectable, Signal, inject } from '@angular/core';\nimport { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Auth, authState, signInWithCustomToken, GoogleAuthProvider, TwitterAuthProvider, signInWithPopup, signOut, UserCredential, signInWithEmailAndPassword, createUserWithEmailAndPassword } from '@angular/fire/auth';\nimport { get } from 'lodash-es';\nimport { Observable, distinctUntilChanged, map, of, shareReplay, switchMap } from 'rxjs';\n\nexport interface TwitterCredential {\n context: string;\n displayName: string;\n email: string;\n emailVerified: boolean;\n expiresIn: string;\n federatedId: string;\n fullName: string;\n idToken: string;\n kind: 'identitytoolkit#VerifyAssertionResponse';\n localId: string;\n oauthAccessToken: string;\n oauthTokenSecret: string;\n photoUrl: string;\n providerId: 'twitter.com';\n rawUserInfo: string;\n refreshToken: string;\n screenName: string;\n}\n\nexport type Result = UserCredential & {_tokenResponse: TwitterCredential};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n #auth = inject(Auth);\n auth$ = authState(this.#auth);\n auth = toSignal(this.auth$);\n\n userId$ = this.auth$.pipe(\n map(auth => auth?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n customClaims$ = this.auth$.pipe(\n switchMap(auth => auth ? auth.getIdTokenResult() : of(null)),\n map(token => token?.claims ?? {}),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n\n signInWithTwitter(): Promise<Result> {\n const provider = new TwitterAuthProvider();\n return signInWithPopup(this.#auth, provider) as Promise<Result>\n }\n\n signInWithGoogle() {\n const provider = new GoogleAuthProvider();\n return signInWithPopup(this.#auth, provider);\n }\n\n signInWithEmailAndPassword(email: string, password: string) {\n return signInWithEmailAndPassword(this.#auth, email, password);\n }\n\n createUserWithEmailAndPassword(email: string, password: string) {\n return createUserWithEmailAndPassword(this.#auth, email, password);\n }\n\n signInWithCustomToken(customToken: string): Promise<Result> {\n return signInWithCustomToken(this.#auth, customToken) as Promise<Result>;\n }\n\n signOut() {\n return signOut(this.#auth);\n }\n}\n\nexport function injectAuthState$() {\n return inject(AuthService).auth$;\n}\n\nexport function injectAuthState() {\n return toSignal(injectAuthState$());\n}\n\nexport function injectUserId$(): Observable<string | null> {\n return inject(AuthService).userId$.pipe(\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectUserId(): Signal<string | null> {\n return toSignal(injectUserId$());\n}\n\nexport function injectTwitterId$() {\n return inject(AuthService).auth$.pipe(\n map(auth => auth?.providerData?.[0]?.uid ?? null),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectClaim$<T = string>(claim: string): Observable<T> {\n return inject(AuthService).customClaims$.pipe(\n map(token => claim ? get(token, claim) : token),\n distinctUntilChanged(),\n shareReplay(1),\n takeUntilDestroyed(),\n ) as any;\n}\n\nexport function injectClaim<T = string>(claim: string): Signal<T> {\n return toSignal(injectClaim$<T>(claim));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MA+Ba,WAAW,CAAA;AAHxB,IAAA,WAAA,GAAA;AAKE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,IAAA,CAAA,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE5B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CACvB,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,EAC9B,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC7B,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,EAC5D,GAAG,CAAC,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,EACjC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AA2BH,KAAA;AA5CC,IAAA,KAAK,CAAgB;IAmBrB,iBAAiB,GAAA;AACf,QAAA,MAAM,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAoB,CAAA;KAChE;IAED,gBAAgB,GAAA;AACd,QAAA,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC1C,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KAC9C;IAED,0BAA0B,CAAC,KAAa,EAAE,QAAgB,EAAA;QACxD,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KAChE;IAED,8BAA8B,CAAC,KAAa,EAAE,QAAgB,EAAA;QAC5D,OAAO,8BAA8B,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KACpE;AAED,IAAA,qBAAqB,CAAC,WAAmB,EAAA;QACvC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAoB,CAAC;KAC1E;IAED,OAAO,GAAA;AACL,QAAA,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;8GA7CU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;SAiDe,gBAAgB,GAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;AACnC,CAAC;SAEe,eAAe,GAAA;AAC7B,IAAA,OAAO,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtC,CAAC;SAEe,aAAa,GAAA;IAC3B,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CACrC,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;SAEe,YAAY,GAAA;AAC1B,IAAA,OAAO,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AACnC,CAAC;SAEe,gBAAgB,GAAA;AAC9B,IAAA,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CACnC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EACjD,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEK,SAAU,YAAY,CAAa,KAAa,EAAA;AACpD,IAAA,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,IAAI,CAC3C,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,EAC/C,oBAAoB,EAAE,EACtB,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACd,CAAC;AACX,CAAC;AAEK,SAAU,WAAW,CAAa,KAAa,EAAA;AACnD,IAAA,OAAO,QAAQ,CAAC,YAAY,CAAI,KAAK,CAAC,CAAC,CAAC;AAC1C;;ACvHA;;AAEG;;;;"}
@@ -0,0 +1,50 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, inject, Injector, runInInjectionContext, Injectable } from '@angular/core';
3
+
4
+ const STORE_INITIALIZER = new InjectionToken('[@ng-atomic/components/pages/form] StoreInitializer');
5
+ function provideStoreInitializer(key, initializer) {
6
+ return [
7
+ { provide: STORE_INITIALIZER, useValue: { key, initializer }, multi: true },
8
+ ];
9
+ }
10
+ function injectInitializerEntries() {
11
+ return inject(STORE_INITIALIZER, { optional: true }) ?? [];
12
+ }
13
+ function injectStoreInitializers(key) {
14
+ const entries = injectInitializerEntries();
15
+ return entries.filter(entry => entry.key === key).map(entry => entry.initializer);
16
+ }
17
+ function makeInitializerConfig(klass) {
18
+ return {
19
+ provide(initializer) {
20
+ return provideStoreInitializer(klass, initializer);
21
+ },
22
+ inject() {
23
+ return injectStoreInitializers(klass);
24
+ },
25
+ async initializeStore(store) {
26
+ const injector = inject(Injector);
27
+ const initializers = injectStoreInitializers(klass);
28
+ for (const initializer of initializers) {
29
+ await runInInjectionContext(injector, () => initializer(store));
30
+ }
31
+ },
32
+ };
33
+ }
34
+ class InitializerService {
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InitializerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InitializerService, providedIn: 'root' }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InitializerService, decorators: [{
39
+ type: Injectable,
40
+ args: [{
41
+ providedIn: 'root'
42
+ }]
43
+ }] });
44
+
45
+ /**
46
+ * Generated bundle index. Do not edit.
47
+ */
48
+
49
+ export { InitializerService, makeInitializerConfig };
50
+ //# sourceMappingURL=ng-atomic-common-services-initializer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-atomic-common-services-initializer.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/initializer/initializer.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/initializer/ng-atomic-common-services-initializer.ts"],"sourcesContent":["import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { InjectionToken } from \"@angular/core\";\n\ntype StoreInitializer<S> = (store: S) => Promise<void> | void;\n\ninterface StoreInitializerEntry<S> {\n key: { new(): S };\n initializer: StoreInitializer<S>;\n}\n\nconst STORE_INITIALIZER = new InjectionToken<StoreInitializer<any>>('[@ng-atomic/components/pages/form] StoreInitializer');\n\nfunction provideStoreInitializer<S>(key: {new(): S}, initializer: StoreInitializer<S>) {\n return [\n { provide: STORE_INITIALIZER, useValue: { key, initializer}, multi: true },\n ];\n}\n\nfunction injectInitializerEntries<S>(): StoreInitializerEntry<S>[] {\n return inject<StoreInitializerEntry<S>[]>(STORE_INITIALIZER, {optional: true}) ?? [];\n}\n\nfunction injectStoreInitializers<S>(key: {new(): S}): StoreInitializer<S>[] {\n const entries = injectInitializerEntries<S>();\n return entries.filter(entry => entry.key === key).map(entry => entry.initializer);\n}\n\nexport function makeInitializerConfig<S>(klass: {new(): S}) {\n return {\n provide<SI extends StoreInitializer<S>>(initializer: SI) {\n return provideStoreInitializer(klass, initializer);\n },\n inject(): StoreInitializer<S>[] {\n return injectStoreInitializers(klass);\n },\n async initializeStore(store: S) {\n const injector = inject(Injector);\n const initializers = injectStoreInitializers(klass);\n for (const initializer of initializers) {\n await runInInjectionContext(injector, () => initializer(store));\n }\n },\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InitializerService {\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAUA,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAwB,qDAAqD,CAAC,CAAC;AAE3H,SAAS,uBAAuB,CAAI,GAAe,EAAE,WAAgC,EAAA;IACnF,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,GAAA;AAC/B,IAAA,OAAO,MAAM,CAA6B,iBAAiB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE,CAAC;AACvF,CAAC;AAED,SAAS,uBAAuB,CAAI,GAAe,EAAA;AACjD,IAAA,MAAM,OAAO,GAAG,wBAAwB,EAAK,CAAC;IAC9C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AACpF,CAAC;AAEK,SAAU,qBAAqB,CAAI,KAAiB,EAAA;IACxD,OAAO;AACL,QAAA,OAAO,CAAiC,WAAe,EAAA;AACrD,YAAA,OAAO,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;SACpD;QACD,MAAM,GAAA;AACJ,YAAA,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;SACvC;QACD,MAAM,eAAe,CAAC,KAAQ,EAAA;AAC5B,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,YAAA,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACpD,YAAA,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AACtC,gBAAA,MAAM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACjE,aAAA;SACF;KACF,CAAA;AACH,CAAC;MAKY,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;AC/CD;;AAEG;;;;"}
@@ -1,13 +1,14 @@
1
- import { isPlatformBrowser, isPlatformServer } from '@angular/common';
2
1
  import * as i0 from '@angular/core';
3
- import { inject, PLATFORM_ID, effect, Injectable, ENVIRONMENT_INITIALIZER, ElementRef, Directive } from '@angular/core';
2
+ import { inject, PLATFORM_ID, effect, Injectable, ElementRef, Directive, ENVIRONMENT_INITIALIZER } from '@angular/core';
3
+ import { MaterialCssVarsService, provideMaterialCssVars } from 'angular-material-css-vars';
4
+ import { isPlatformBrowser, isPlatformServer } from '@angular/common';
4
5
  import { toObservable } from '@angular/core/rxjs-interop';
5
6
  import { makeConfig } from '@ng-atomic/common/services/ui';
6
7
  import { of, filter, delay, map } from 'rxjs';
7
8
 
8
9
  class RootPropertyService {
9
10
  static { this.Config = makeConfig(() => {
10
- return (_, context) => {
11
+ return (context) => {
11
12
  switch (context.breakpoint) {
12
13
  case 'xSmall': return {
13
14
  '--primary-color': '#404040',
@@ -65,15 +66,58 @@ class RootPropertyService {
65
66
  }
66
67
  };
67
68
  }, ['root', 'properties']); }
69
+ static provideColorSchema1() {
70
+ return RootPropertyService.Config.provide(() => {
71
+ return (config) => ({
72
+ ...config,
73
+ '--primary-color': '#404040',
74
+ '--on-primary-color': '#f0f0f0',
75
+ '--accent-color': '#d8ab12',
76
+ '--background-color': '#ffffff',
77
+ '--on-background-color': '#404040',
78
+ '--menu-background-color': '#404040',
79
+ '--menu-on-background-color': '#f0f0f0',
80
+ '--navigator-background-color': '#404040',
81
+ '--navigator-on-background-color': '#f0f0f0',
82
+ '--loading-primary-color': 'var(--accent-color)',
83
+ '--background-primary-color': 'var(--primary-color)',
84
+ '--background-on-primary-color': 'var(--on-primary-color)',
85
+ '--selection-color': 'var(--background-color)',
86
+ '--selection-background-color': 'var(--on-background-color)',
87
+ });
88
+ });
89
+ }
90
+ static provideMenuWidthForIconButtonMenu() {
91
+ return RootPropertyService.Config.provide(() => {
92
+ const getMenuWidth = (context) => {
93
+ switch (context.breakpoint) {
94
+ case 'xSmall': return '220px';
95
+ case 'small':
96
+ case 'medium':
97
+ case 'large':
98
+ case 'xLarge': return '64px';
99
+ }
100
+ };
101
+ return (config, context) => ({
102
+ ...config,
103
+ '--menu-width': getMenuWidth(context),
104
+ });
105
+ });
106
+ }
68
107
  constructor() {
69
108
  this.config = RootPropertyService.Config.inject();
70
109
  this.platformId = inject(PLATFORM_ID);
110
+ this.matCssVar = inject(MaterialCssVarsService);
71
111
  effect(() => {
72
112
  if (isPlatformBrowser(this.platformId)) {
73
113
  for (const [key, value] of Object.entries(this.config?.() ?? {})) {
74
114
  document.documentElement.style.setProperty(key, value);
75
115
  }
76
116
  }
117
+ this.matCssVar.setPrimaryColor(this.config()['--primary-color']);
118
+ this.matCssVar.setAccentColor(this.config()['--accent-color']);
119
+ this.matCssVar.setWarnColor(this.config()['--warn-color']);
120
+ this.matCssVar.setDarkTheme(false);
77
121
  });
78
122
  }
79
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -83,18 +127,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
83
127
  type: Injectable,
84
128
  args: [{ providedIn: 'root' }]
85
129
  }], ctorParameters: () => [] });
86
- function provideRootProperty(resolverFactoryFactory) {
87
- return [
88
- {
89
- provide: ENVIRONMENT_INITIALIZER,
90
- useFactory: () => {
91
- return () => inject(RootPropertyService);
92
- },
93
- multi: true,
94
- },
95
- RootPropertyService.Config.provide(resolverFactoryFactory),
96
- ];
97
- }
98
130
  class NgAtomicStyleDirective {
99
131
  #el;
100
132
  constructor(rootPropertyService) {
@@ -133,6 +165,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
133
165
  args: [{ providedIn: 'root' }]
134
166
  }] });
135
167
 
168
+ function provideRootProperty() {
169
+ return [
170
+ {
171
+ provide: ENVIRONMENT_INITIALIZER,
172
+ useFactory: () => () => inject(RootPropertyService),
173
+ multi: true,
174
+ },
175
+ provideMaterialCssVars({}),
176
+ ];
177
+ }
178
+
136
179
  /**
137
180
  * Generated bundle index. Do not edit.
138
181
  */