@ng-atomic/common 18.2.1 → 18.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common.module.d.ts +15 -0
- package/esm2022/common.module.mjs +34 -0
- package/esm2022/index.mjs +2 -2
- package/esm2022/interceptors/authorization/authorization.interceptor.mjs +2 -2
- package/esm2022/models/index.mjs +1 -1
- package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +7 -4
- package/esm2022/pipes/domain/domain.pipe.mjs +19 -1
- package/esm2022/pipes/smart-field/smart-field.pipe.mjs +2 -2
- package/esm2022/services/app/app.service.mjs +48 -2
- package/esm2022/services/fab/fab.service.mjs +11 -5
- package/esm2022/services/form/_index/index.service.mjs +2 -2
- package/esm2022/services/form/columns/columns.service.mjs +19 -10
- package/esm2022/services/form/json-schema/index.mjs +2 -0
- package/esm2022/services/form/json-schema/json-schema.mjs +51 -0
- package/esm2022/services/form/json-schema/json-schema.service.mjs +140 -0
- package/esm2022/services/form/json-schema/ng-atomic-common-services-form-json-schema.mjs +5 -0
- package/esm2022/services/initializer/initializer.service.mjs +2 -2
- package/esm2022/services/loading/loading.service.mjs +28 -31
- package/esm2022/services/root-property/root-property.service.mjs +3 -1
- package/esm2022/services/sheets/actions/actions.sheet.mjs +45 -0
- package/esm2022/services/sheets/actions/index.mjs +2 -0
- package/esm2022/services/sheets/actions/ng-atomic-common-services-sheets-actions.mjs +5 -0
- package/esm2022/services/sheets/index.mjs +3 -0
- package/esm2022/services/sheets/ng-atomic-common-services-sheets.mjs +5 -0
- package/esm2022/services/sheets/sheets.module.mjs +25 -0
- package/esm2022/services/sheets/sheets.service.mjs +22 -0
- package/esm2022/services/side-app/side-app.service.mjs +33 -3
- package/esm2022/services/ui/ui.helpers.mjs +47 -65
- package/esm2022/stores/entities/entity-store-adapter.mjs +4 -1
- package/esm2022/stores/entities/entity-store.mjs +13 -1
- package/esm2022/utils/inject/inject.mjs +61 -22
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +1 -1
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +7 -4
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs +18 -0
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-app.mjs +49 -3
- package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-fab.mjs +10 -4
- package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.mjs +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-columns.mjs +18 -9
- package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +194 -0
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-initializer.mjs +1 -1
- package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-loading.mjs +26 -29
- package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-root-property.mjs +2 -0
- package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs +52 -0
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-sheets.mjs +50 -0
- package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-side-app.mjs +33 -3
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-ui.mjs +46 -64
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs +15 -0
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +62 -23
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs +76 -0
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/models/index.d.ts +1 -0
- package/package.json +20 -2
- package/pipes/data-accessor/data-accessor.pipe.d.ts +4 -3
- package/pipes/domain/domain.pipe.d.ts +2 -1
- package/pipes/smart-field/smart-field.pipe.d.ts +1 -1
- package/services/app/app.service.d.ts +12 -0
- package/services/fab/fab.service.d.ts +3 -3
- package/services/form/columns/columns.service.d.ts +8 -1
- package/services/form/json-schema/index.d.ts +1 -0
- package/services/form/json-schema/json-schema.d.ts +2 -0
- package/services/form/json-schema/json-schema.service.d.ts +54 -0
- package/services/loading/loading.service.d.ts +13 -12
- package/services/sheets/actions/actions.sheet.d.ts +9 -0
- package/services/sheets/actions/index.d.ts +1 -0
- package/services/sheets/index.d.ts +2 -0
- package/services/sheets/sheets.module.d.ts +11 -0
- package/services/sheets/sheets.service.d.ts +10 -0
- package/services/side-app/side-app.service.d.ts +12 -0
- package/services/ui/ui.helpers.d.ts +6 -5
- package/stores/entities/entity-store-adapter.d.ts +3 -6
- package/stores/entities/entity-store.d.ts +4 -0
- package/utils/inject/inject.d.ts +29 -7
|
@@ -4,6 +4,7 @@ import { ActivatedRoute, NavigationEnd, Router } from "@angular/router";
|
|
|
4
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
|
+
import { unflatten } from 'flat';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export function injectRouterParam$(key) {
|
|
9
10
|
return inject(ActivatedRoute).paramMap.pipe(map((params) => params.get(key)), shareReplay(1), takeUntilDestroyed());
|
|
@@ -12,33 +13,59 @@ export function injectRouterParam$(key) {
|
|
|
12
13
|
export function injectRouterParam(key) {
|
|
13
14
|
return toSignal(injectRouterParam$(key));
|
|
14
15
|
}
|
|
15
|
-
export function injectRouteParam$(key) {
|
|
16
|
-
return inject(ActivatedRoute).paramMap.pipe(map((params) => params.get(key)), shareReplay(1), takeUntilDestroyed());
|
|
17
|
-
}
|
|
18
16
|
export function injectRouteQueryParam$(key) {
|
|
19
17
|
return inject(ActivatedRoute).queryParamMap.pipe(map((params) => params.get(key)), shareReplay(1), takeUntilDestroyed());
|
|
20
18
|
}
|
|
21
19
|
export function injectRouteQueryParam(key) {
|
|
22
20
|
return toSignal(injectRouteQueryParam$(key));
|
|
23
21
|
}
|
|
24
|
-
export function
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
export function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}), shareReplay(1), takeUntilDestroyed());
|
|
39
|
-
}
|
|
40
|
-
export function
|
|
41
|
-
return
|
|
22
|
+
// export function injectRouteParamMap$(): Observable<ParamMap> {
|
|
23
|
+
// return inject(ActivatedRoute).paramMap.pipe(
|
|
24
|
+
// shareReplay(1),
|
|
25
|
+
// takeUntilDestroyed(),
|
|
26
|
+
// );
|
|
27
|
+
// }
|
|
28
|
+
export function injectRouteParams$({ merge = true, route = inject(ActivatedRoute), } = {}) {
|
|
29
|
+
const parentParams = (merge && route.parent) ? injectRouteParams$({ merge, route: route.parent }) : of(new Map());
|
|
30
|
+
return combineLatest({
|
|
31
|
+
parentParams,
|
|
32
|
+
params: route.params
|
|
33
|
+
}).pipe(map(({ parentParams, params }) => ({
|
|
34
|
+
...parentParams,
|
|
35
|
+
...params,
|
|
36
|
+
})), shareReplay(1), takeUntilDestroyed());
|
|
37
|
+
}
|
|
38
|
+
export function injectUnflattenRouteParams$({ merge = true, route = inject(ActivatedRoute), } = {}) {
|
|
39
|
+
return injectRouteParams$({ merge, route }).pipe(map((params) => unflatten(params)));
|
|
40
|
+
}
|
|
41
|
+
export function injectUnflattenRouteParam$(key) {
|
|
42
|
+
return injectUnflattenRouteParams$().pipe(map((params) => params[key]));
|
|
43
|
+
}
|
|
44
|
+
export function injectUnflattenRouteParam(key) {
|
|
45
|
+
return toSignal(injectUnflattenRouteParam$(key));
|
|
46
|
+
}
|
|
47
|
+
export function injectUnflattenRouteParams({ merge = true, } = {}) {
|
|
48
|
+
return toSignal(injectUnflattenRouteParams$({ merge }));
|
|
49
|
+
}
|
|
50
|
+
export function injectRouteParamMap$({ merge = true, } = {}) {
|
|
51
|
+
return injectRouteParams$({ merge }).pipe(map((params) => new Map(Object.entries(params))));
|
|
52
|
+
}
|
|
53
|
+
export function injectRouteParamMap({ merge = true, } = {}) {
|
|
54
|
+
return toSignal(injectRouteParamMap$({ merge }));
|
|
55
|
+
}
|
|
56
|
+
// export function injectRouteParams$(): Observable<Record<string, string>> {
|
|
57
|
+
// return inject(ActivatedRoute).paramMap.pipe(
|
|
58
|
+
// map((params) => {
|
|
59
|
+
// const result = {};
|
|
60
|
+
// params.keys.forEach(key => result[key] = params.get(key));
|
|
61
|
+
// return result;
|
|
62
|
+
// }),
|
|
63
|
+
// shareReplay(1),
|
|
64
|
+
// takeUntilDestroyed(),
|
|
65
|
+
// );
|
|
66
|
+
// }
|
|
67
|
+
export function injectRouteParams({ merge = true, } = {}) {
|
|
68
|
+
return toSignal(injectRouteParams$({ merge }));
|
|
42
69
|
}
|
|
43
70
|
export function injectRouteNavigated$() {
|
|
44
71
|
const router = inject(Router);
|
|
@@ -135,4 +162,16 @@ export function injectResolver$(ResolverType, params) {
|
|
|
135
162
|
export function getResolver(ResolverType, params) {
|
|
136
163
|
return new ResolverType(params);
|
|
137
164
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9pbmplY3QvaW5qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBWSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVoQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDaEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsa0JBQWtCO0FBQ2xCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sTUFBTSxD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LElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQVJVLGVBQWU7a0hBQWYsZUFBZSxjQURILE1BQU07OzJGQUNsQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7QUFZaEMsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsWUFBOEQsRUFDOUQsTUFBdUM7SUFFdkMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUMvQixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3pDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQ3pCLFlBQThELEVBQzlELE1BQTJCO0lBRTNCLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBTaWduYWwsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbU1hcCwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIkBueC1kZGQvY29tbW9uL2RvbWFpbi9tb2RlbHNcIjtcbmltcG9ydCB7IGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclBhcmFtJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+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=
|
|
165
|
+
export function injectRouteParam$(key, { merge = true, } = {}) {
|
|
166
|
+
return injectRouteParamMap$({ merge }).pipe(map((params) => params.get(key)), takeUntilDestroyed());
|
|
167
|
+
}
|
|
168
|
+
export function injectRouteParam(key, injector) {
|
|
169
|
+
return toSignal(injectRouteParam$(key), { injector });
|
|
170
|
+
}
|
|
171
|
+
export function injectRouteSkip$() {
|
|
172
|
+
return injectRouteParam$('skip', { merge: false }).pipe(map((skip) => skip === 'true'), shareReplay(1), takeUntilDestroyed());
|
|
173
|
+
}
|
|
174
|
+
export function injectRouteSkip() {
|
|
175
|
+
return toSignal(injectRouteSkip$());
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9pbmplY3QvaW5qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUYsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVqQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDaEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsa0JBQWtCO0FBQ2xCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELE1B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S0FBSyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxFQUM5QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBTaWduYWwsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbU1hcCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQG54LWRkZC9jb21tb24vZG9tYWluL21vZGVsc1wiO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdW5mbGF0dGVuIH0gZnJvbSAnZmxhdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZXJQYXJhbSQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5wYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZXJQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlclBhcmFtJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUXVlcnlQYXJhbSQ8VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucXVlcnlQYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkgYXMgVCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVF1ZXJ5UGFyYW0oa2V5OiBzdHJpbmcpOiBTaWduYWw8c3RyaW5nPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVF1ZXJ5UGFyYW0kKGtleSkpO1xufVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbU1hcCQoKTogT2JzZXJ2YWJsZTxQYXJhbU1hcD4ge1xuLy8gICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5wYXJhbU1hcC5waXBlKFxuLy8gICAgIHNoYXJlUmVwbGF5KDEpLFxuLy8gICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuLy8gICApO1xuLy8gfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbXMkKHtcbiAgbWVyZ2UgPSB0cnVlLFxuICByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSksXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbiAgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZSxcbn0gPSB7fSk6IE9ic2VydmFibGU8UGFyYW1zPiB7XG4gIGNvbnN0IHBhcmVudFBhcmFtcyA9IChtZXJnZSAmJiByb3V0ZS5wYXJlbnQpID8gaW5qZWN0Um91dGVQYXJhbXMkKHttZXJnZSwgcm91dGU6IHJvdXRlLnBhcmVudH0pIDogb2YobmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSk7XG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICBwYXJlbnRQYXJhbXMsXG4gICAgcGFyYW1zOiByb3V0ZS5wYXJhbXNcbiAgfSkucGlwZShcbiAgICBtYXAoKHtwYXJlbnRQYXJhbXMsIHBhcmFtc30pID0+ICh7XG4gICAgICAuLi5wYXJlbnRQYXJhbXMsXG4gICAgICAuLi5wYXJhbXMsXG4gICAgfSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtcyQoe1xuICBtZXJnZSA9IHRydWUsXG4gIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKSxcbn06IHtcbiAgbWVyZ2U/OiBib29sZWFuLFxuICByb3V0ZT86IEFjdGl2YXRlZFJvdXRlLFxufSA9IHt9KSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtcyQoe21lcmdlLCByb3V0ZX0pLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+ICh1bmZsYXR0ZW4ocGFyYW1zKSBhcyBhbnkpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0kPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtcyQoKS5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXNba2V5XSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogU2lnbmFsPFQ+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbXMoe1xuICBtZXJnZSA9IHRydWUsXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbn0gPSB7fSk6IFNpZ25hbDxhbnk+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW1zJCh7bWVyZ2V9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwJCh7XG4gIG1lcmdlID0gdHJ1ZSxcbn06IHtcbiAgbWVyZ2U/OiBib29sZWFuLFxufSA9IHt9KSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtcyQoe21lcmdlfSkucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gbmV3IE1hcChPYmplY3QuZW50cmllcyhwYXJhbXMpKSBhcyBuZXZlciBhcyBQYXJhbU1hcCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwKHtcbiAgbWVyZ2UgPSB0cnVlLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG59ID0ge30pOiBTaWduYWw8UGFyYW1NYXA+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlUGFyYW1NYXAkKHttZXJnZX0pKTtcbn1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1zJCgpOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbi8vICAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucGFyYW1NYXAucGlwZShcbi8vICAgICBtYXAoKHBhcmFtcykgPT4ge1xuLy8gICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4vLyAgICAgICBwYXJhbXMua2V5cy5mb3JFYWNoKGtleSA9PiByZXN1bHRba2V5XSA9IHBhcmFtcy5nZXQoa2V5KSk7XG4vLyAgICAgICByZXR1cm4gcmVzdWx0O1xuLy8gICAgIH0pLFxuLy8gICAgIHNoYXJlUmVwbGF5KDEpLFxuLy8gICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuLy8gICApO1xuLy8gfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbXMoe1xuICBtZXJnZSA9IHRydWUsXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbn0gPSB7fSk6IFNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtcyQoe21lcmdlfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVOYXZpZ2F0ZWQkKCkge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZXR1cm4gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgIG1hcCgoKSA9PiByb3V0ZSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZU5hdmlnYXRlZCgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlTmF2aWdhdGVkJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFByaW1hcnlQYXRocyQoKSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKS5waXBlKFxuICAgIG1hcChyb3V0ZSA9PiB7XG4gICAgICBjb25zdCBwYXRocyA9IFtdO1xuICAgICAgbGV0IGN1cnJlbnQgPSByb3V0ZS5yb290O1xuICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgcGF0aHMucHVzaChjdXJyZW50Py5yb3V0ZUNvbmZpZz8ucGF0aCA/PyBudWxsKTtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuZmlyc3RDaGlsZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRocy5maWx0ZXIoQm9vbGVhbik7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQcmltYXJ5UGF0aHMoKSB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RQcmltYXJ5UGF0aHMkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZVBhcmFtJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKS5waXBlKFxuICAgIHN3aXRjaE1hcCgocm91dGUpID0+IHJvdXRlPy5maXJzdENoaWxkID8gcm91dGUuZmlyc3RDaGlsZC5wYXJhbU1hcCA6IG9mKG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpKSxcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENoaWxkUm91dGVQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdENoaWxkUm91dGVQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlJCgpIHtcbiAgcmV0dXJuIGluamVjdFJvdXRlTmF2aWdhdGVkJCgpLnBpcGUoXG4gICAgbWFwKChyb3V0ZSkgPT4gcm91dGU/LmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZSgpOiBTaWduYWw8QWN0aXZhdGVkUm91dGU+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdENoaWxkUm91dGUkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGFzTmV4dCQoKSB7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJldHVybiByb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIG1hcCgoKSA9PiAhIXJvdXRlPy5maXJzdENoaWxkPy5maXJzdENoaWxkKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhhc05leHQoKSB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RIYXNOZXh0JCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclF1ZXJ5UGFyYW0kKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucXVlcnlQYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVyUXVlcnlQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlclF1ZXJ5UGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVEYXRhJDxUPihwYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkuZGF0YS5waXBlKG1hcChkYXRhID0+IGdldChkYXRhLCBwYXRoKSBhcyBUKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZURhdGE8VD4oa2V5OiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVEYXRhJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFjdGl2YXRlZENvbXBvbmVudHMoaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSk6IGFueVtdIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuICBsZXQgcm91dGUgPSBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUsIHtvcHRpb25hbDogdHJ1ZX0pID8/IG51bGw7XG4gIHdoaWxlKHJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbXBvbmVudCkgY29tcG9uZW50cy5wdXNoKHJvdXRlLmNvbXBvbmVudCk7XG4gICAgcm91dGUgPSByb3V0ZS5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVyPFQ+IHtcbiAgcmVzb2x2ZShlbnRyeTogVCk6IFQ7XG4gIHJlc29sdmVNYW55KGVudGl0aWVzOiBUW10pOiBUW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUmVzb2x2ZXIoXG4gIEVudGl0eTogVHlwZTx7aWQ6IHN0cmluZ30+LFxuICBSZXNvbHZlclR5cGU6IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+KSA9PiBSZXNvbHZlcjxhbnk+LFxuKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogRW50aXR5LFxuICAgIC8vIHVzZUZhY3Rvcnk6ICgpID0+IG5ldyBSZXNvbHZlclR5cGUocGFyYW1zKSxcbiAgICBkZXBzOiBbXSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUmVzb2x2ZXJNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvbHZlcjxhbnk+PigpO1xuXG4gIGdldChFbnRpdHk6IFR5cGU8e2lkOiBzdHJpbmd9Pikge1xuICAgIGlmICghdGhpcy5tYXAuaGFzKEVudGl0eS5uYW1lKSkge1xuICAgICAgLy8gcmV0dXJuIHRoaXMubWFwLnNldCgpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hcC5nZXQoRW50aXR5Lm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSZXNvbHZlciQ8VD4oXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+LFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4sXG4pOiBPYnNlcnZhYmxlPFJlc29sdmVyPFQ+PiB7XG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KHBhcmFtcykucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVyPFQ+KFxuICBSZXNvbHZlclR5cGU6IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZXNvbHZlcjxUPixcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogUmVzb2x2ZXI8VD4ge1xuICByZXR1cm4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbSQoa2V5OiBzdHJpbmcsIHtcbiAgbWVyZ2UgPSB0cnVlLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG59ID0ge30pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0Um91dGVQYXJhbU1hcCQoe21lcmdlfSkucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW0oa2V5OiBzdHJpbmcsIGluamVjdG9yPzogSW5qZWN0b3IpOiBTaWduYWw8c3RyaW5nPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtJChrZXkpLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlU2tpcCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtJCgnc2tpcCcsIHttZXJnZTogZmFsc2V9KS5waXBlKFxuICAgIG1hcCgoc2tpcCkgPT4gc2tpcCA9PT0gJ3RydWUnKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVTa2lwKCk6IFNpZ25hbDxib29sZWFuPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVNraXAkKCkpO1xufVxuIl19
|
|
@@ -25,9 +25,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
25
25
|
type: Injectable
|
|
26
26
|
}] });
|
|
27
27
|
const authorizationInterceptor = (req, next) => {
|
|
28
|
-
const getAuth = inject(PROVIDE_AUTHORIZATION);
|
|
29
28
|
if (!req.url.startsWith('/api'))
|
|
30
29
|
return next(req);
|
|
30
|
+
const getAuth = inject(PROVIDE_AUTHORIZATION, { optional: true }) ?? null;
|
|
31
31
|
return from(getAuth()).pipe(take(1), mergeMap(token => next(token ? req.clone({ setHeaders: { Authorization: token } }) : req)));
|
|
32
32
|
};
|
|
33
33
|
|
|
@@ -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, 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
|
|
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 if (!req.url.startsWith('/api')) return next(req);\n const getAuth = inject(PROVIDE_AUTHORIZATION, { optional: true }) ?? null;\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;IACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;IAE1E,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;;;;"}
|
|
@@ -10,12 +10,15 @@ function provideDataAccessor(useFactory = () => defaultDataAccessor) {
|
|
|
10
10
|
function injectDataAccessor() {
|
|
11
11
|
return inject(DATA_ACCESSOR, { optional: true }) ?? defaultDataAccessor;
|
|
12
12
|
}
|
|
13
|
+
function injectParentDataAccessor() {
|
|
14
|
+
return inject(DATA_ACCESSOR, { skipSelf: true, optional: true }) ?? defaultDataAccessor;
|
|
15
|
+
}
|
|
13
16
|
class DataAccessorPipe {
|
|
14
17
|
constructor() {
|
|
15
|
-
this.dataAccessor =
|
|
18
|
+
this.dataAccessor = injectDataAccessor();
|
|
16
19
|
}
|
|
17
|
-
transform(data, key) {
|
|
18
|
-
return this.dataAccessor(data, key);
|
|
20
|
+
transform(data, key, index) {
|
|
21
|
+
return this.dataAccessor(data, key, index);
|
|
19
22
|
}
|
|
20
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: DataAccessorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
21
24
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: DataAccessorPipe, isStandalone: true, name: "dataAccessor" }); }
|
|
@@ -33,5 +36,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
33
36
|
* Generated bundle index. Do not edit.
|
|
34
37
|
*/
|
|
35
38
|
|
|
36
|
-
export { DATA_ACCESSOR, DataAccessorPipe, defaultDataAccessor, injectDataAccessor, provideDataAccessor };
|
|
39
|
+
export { DATA_ACCESSOR, DataAccessorPipe, defaultDataAccessor, injectDataAccessor, injectParentDataAccessor, provideDataAccessor };
|
|
37
40
|
//# sourceMappingURL=ng-atomic-common-pipes-data-accessor.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-data-accessor.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/data-accessor.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/ng-atomic-common-pipes-data-accessor.ts"],"sourcesContent":["import { InjectionToken, Pipe, inject, PipeTransform } from \"@angular/core\";\nimport { get } from 'lodash-es';\n\nexport type DataAccessor<T> = (obj: T, key: string) =>
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-data-accessor.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/data-accessor.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/data-accessor/ng-atomic-common-pipes-data-accessor.ts"],"sourcesContent":["import { InjectionToken, Pipe, inject, PipeTransform } from \"@angular/core\";\nimport { get } from 'lodash-es';\n\nexport type DataAccessor<T> = (obj: T, key: string, index?: number) => any;\nexport const DATA_ACCESSOR = new InjectionToken<DataAccessor<any>>('DATA_ACCESSOR');\nexport const defaultDataAccessor: DataAccessor<any> = (obj, key) => get(obj, key) ?? '';\nexport function provideDataAccessor<T>(useFactory: () => DataAccessor<T> = () => defaultDataAccessor) {\n return { provide: DATA_ACCESSOR, useFactory };\n}\n\nexport function injectDataAccessor<T>(): DataAccessor<T> {\n return inject(DATA_ACCESSOR, {optional: true}) ?? defaultDataAccessor;\n}\n\nexport function injectParentDataAccessor<T>(): DataAccessor<T> {\n return inject(DATA_ACCESSOR, {skipSelf: true, optional: true}) ?? defaultDataAccessor;\n}\n\n@Pipe({\n name: 'dataAccessor',\n pure: true,\n standalone: true,\n})\nexport class DataAccessorPipe<T> implements PipeTransform {\n protected dataAccessor = injectDataAccessor();\n\n transform(data: T, key: string, index?: number): any {\n return this.dataAccessor(data, key, index);\n }\n}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAIa,aAAa,GAAG,IAAI,cAAc,CAAoB,eAAe,EAAE;AACvE,MAAA,mBAAmB,GAAsB,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,GAAG;SACxE,mBAAmB,CAAI,aAAoC,MAAM,mBAAmB,EAAA;AAClG,IAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAChD,CAAC;SAEe,kBAAkB,GAAA;AAChC,IAAA,OAAO,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,mBAAmB,CAAC;AACxE,CAAC;SAEe,wBAAwB,GAAA;AACtC,IAAA,OAAO,MAAM,CAAC,aAAa,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,mBAAmB,CAAC;AACxF,CAAC;MAOY,gBAAgB,CAAA;AAL7B,IAAA,WAAA,GAAA;QAMY,IAAY,CAAA,YAAA,GAAG,kBAAkB,EAAE,CAAC;AAK/C,KAAA;AAHC,IAAA,SAAS,CAAC,IAAO,EAAE,GAAW,EAAE,KAAc,EAAA;QAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;KAC5C;8GALU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,cAAc;AACpB,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACtBD;;AAEG;;;;"}
|
|
@@ -2,6 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, inject, Pipe, signal } from '@angular/core';
|
|
3
3
|
import { getLangMap, getProps, getModelName } from '@nx-ddd/common/domain/models';
|
|
4
4
|
import { wrapFactory } from '@ng-atomic/common/pipes/signal';
|
|
5
|
+
import { has, get } from 'lodash-es';
|
|
5
6
|
|
|
6
7
|
const DOMAIN_MODEL = new InjectionToken('Domain Model');
|
|
7
8
|
const DOMAIN_LANG_MAP = new InjectionToken('domain lang map');
|
|
@@ -10,8 +11,25 @@ const DOMAIN_MODEL_NAME = new InjectionToken('Domain Model Name');
|
|
|
10
11
|
class DomainPipe {
|
|
11
12
|
constructor() {
|
|
12
13
|
this.map = inject(DOMAIN_LANG_MAP, { optional: true }) ?? {};
|
|
14
|
+
this.regexResolvers = Object.entries(this.map).map(([regexKey, value]) => {
|
|
15
|
+
const regexIndicators = /[.*+?^${}()|[\]\\]/;
|
|
16
|
+
if (regexIndicators.test(regexKey)) {
|
|
17
|
+
return (key) => {
|
|
18
|
+
const regex = new RegExp(regexKey);
|
|
19
|
+
return regex.test(key) ? value : null;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
return () => null;
|
|
23
|
+
});
|
|
13
24
|
}
|
|
14
25
|
transform(input, map = this.map) {
|
|
26
|
+
if (has(map, input))
|
|
27
|
+
return get(map, input);
|
|
28
|
+
for (const resolver of this.regexResolvers) {
|
|
29
|
+
const result = resolver(input);
|
|
30
|
+
if (result)
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
15
33
|
return map[input] ?? input;
|
|
16
34
|
}
|
|
17
35
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: DomainPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain/models';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n@Pipe({standalone: true, name: 'domain', pure: true})\nexport class DomainPipe implements PipeTransform {\n protected map = inject(DOMAIN_LANG_MAP, {optional: true}) ?? {};\n\n transform(input: string, map: DomainLangMap = this.map) {\n return map[input] ?? input;\n }\n}\n\nexport function provideLangMap(useFactory: () => DomainLangMap) {\n return { provide: DOMAIN_LANG_MAP, useFactory };\n}\n\nexport function provideDomainLang<E>(domain: Type<E>, mergeObj: DomainLangMap = {}) {\n return provideLangMap(() => getLangMap(domain, mergeObj));\n}\n\nexport function provideModel<E>(useFactory: () => Type<E>) {\n return { provide: DOMAIN_MODEL, useFactory};\n}\n\nexport function injectModel<E = Entity>(): Type<E> {\n return inject(DOMAIN_MODEL, {optional: true}) as Type<E> ?? null;\n}\n\nexport function provideProps(useFactory: () => SignalOrValue<string[]>) {\n return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory)}\n}\n\nexport function provideModelName(useFactory: () => SignalOrValue<string>) {\n return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory)}\n}\n\nexport function injectProps(): Signal<string[]> {\n return inject(DOMAIN_PROPS, {optional: true}) ?? signal([]);\n}\n\nexport function injectModelName(injector?: Injector): Signal<string> {\n if (injector) return injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null);\n return inject(DOMAIN_MODEL_NAME, {optional: true}) ?? signal(null);\n}\n\nexport function provideDomain<E>(useFactory: () => Type<E>) {\n return [\n provideModel(useFactory),\n provideLangMap(() => getLangMap(useFactory())),\n provideProps(() => getProps(useFactory())),\n provideModelName(() => getModelName(useFactory()))\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-domain.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/domain.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/domain/ng-atomic-common-pipes-domain.ts"],"sourcesContent":["import { InjectionToken, Injector, Pipe, Signal, inject, signal, PipeTransform } from '@angular/core';\nimport { Entity, Type, getLangMap, getModelName, getProps } from '@nx-ddd/common/domain/models';\nimport { SignalOrValue, wrapFactory } from '@ng-atomic/common/pipes/signal';\nimport { get, has } from 'lodash-es';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_MODEL = new InjectionToken<Type<{id: string}>>('Domain Model');\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\nexport const DOMAIN_PROPS = new InjectionToken<Signal<string[]>>('Domain Props');\nexport const DOMAIN_MODEL_NAME = new InjectionToken<Signal<string>>('Domain Model Name');\n\n\n\n@Pipe({standalone: true, name: 'domain', pure: true})\nexport class DomainPipe implements PipeTransform {\n protected map = inject(DOMAIN_LANG_MAP, {optional: true}) ?? {};\n protected regexResolvers = Object.entries(this.map).map(([regexKey, value]) => {\n const regexIndicators = /[.*+?^${}()|[\\]\\\\]/;\n if (regexIndicators.test(regexKey)) {\n return (key: string) => {\n const regex = new RegExp(regexKey);\n return regex.test(key) ? value : null;\n }\n }\n return () => null;\n });\n\n transform(input: string, map: DomainLangMap = this.map) {\n if (has(map, input)) return get(map, input);\n for (const resolver of this.regexResolvers) {\n const result = resolver(input);\n if (result) return result;\n }\n return map[input] ?? input;\n }\n}\n\nexport function provideLangMap(useFactory: () => DomainLangMap) {\n return { provide: DOMAIN_LANG_MAP, useFactory };\n}\n\nexport function provideDomainLang<E>(domain: Type<E>, mergeObj: DomainLangMap = {}) {\n return provideLangMap(() => getLangMap(domain, mergeObj));\n}\n\nexport function provideModel<E>(useFactory: () => Type<E>) {\n return { provide: DOMAIN_MODEL, useFactory};\n}\n\nexport function injectModel<E = Entity>(): Type<E> {\n return inject(DOMAIN_MODEL, {optional: true}) as Type<E> ?? null;\n}\n\nexport function provideProps(useFactory: () => SignalOrValue<string[]>) {\n return { provide: DOMAIN_PROPS, useFactory: wrapFactory(useFactory)}\n}\n\nexport function provideModelName(useFactory: () => SignalOrValue<string>) {\n return { provide: DOMAIN_MODEL_NAME, useFactory: wrapFactory(useFactory)}\n}\n\nexport function injectProps(): Signal<string[]> {\n return inject(DOMAIN_PROPS, {optional: true}) ?? signal([]);\n}\n\nexport function injectModelName(injector?: Injector): Signal<string> {\n if (injector) return injector.get(DOMAIN_MODEL_NAME, null) ?? signal(null);\n return inject(DOMAIN_MODEL_NAME, {optional: true}) ?? signal(null);\n}\n\nexport function provideDomain<E>(useFactory: () => Type<E>) {\n return [\n provideModel(useFactory),\n provideLangMap(() => getLangMap(useFactory())),\n provideProps(() => getProps(useFactory())),\n provideModelName(() => getModelName(useFactory()))\n ]\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import get from 'lodash.get';
|
|
|
4
4
|
|
|
5
5
|
/** @deprecated */
|
|
6
6
|
const FORM_FIELD_MAP = new InjectionToken('[@ng-atomic] Smart Form Field');
|
|
7
|
-
/** @deprecated */
|
|
7
|
+
/** @deprecated use fieldMap input*/
|
|
8
8
|
function provideFormFieldMap(useFactory) {
|
|
9
9
|
return { provide: FORM_FIELD_MAP, useFactory };
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-pipes-smart-field.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/smart-field.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/ng-atomic-common-pipes-smart-field.ts"],"sourcesContent":["import { InjectionToken, Pipe, PipeTransform, Signal, inject } from '@angular/core';\nimport { Action } from '@ng-atomic/core';\nimport { SignalOrValue } from '@ng-atomic/common/pipes/signal';\nimport get from 'lodash.get';\n\n\nexport interface Option<T> {\n name: string;\n value: T;\n}\n\ninterface BaseField {\n placeholder?: string;\n hint?: SignalOrValue<string>;\n actions?: Action[] | Signal<Action[]>;\n}\n\ninterface TextField extends BaseField {\n type: 'text';\n autoComplete?: SignalOrValue<string[]>;\n}\n\ninterface PasswordField extends BaseField {\n type: 'password';\n}\n\ninterface NumberField extends BaseField {\n type: 'number';\n}\n\ninterface TextareaField extends BaseField {\n type: 'textarea';\n rows?: number;\n}\n\ninterface DateInputField extends BaseField {\n type: 'date';\n}\n\ninterface DateRangeInputField extends BaseField {\n type: 'date-range';\n}\n\ninterface SelectField<T> extends BaseField {\n type: 'select';\n options: Option<T>[] | Signal<Option<T>[]>;\n multiple?: boolean;\n}\n\ninterface TimeRangeField extends BaseField {\n type: 'time-range';\n}\n\n//* @deprecated use multiple option */\ninterface MultiSelectField<T> extends BaseField {\n type: 'multi-select';\n options: Option<T>[] | Signal<Option<T>[]>;\n}\n\ninterface FileField extends BaseField {\n type: 'file';\n progress?: Signal<number | null>;\n}\n\ninterface ActionField extends BaseField {\n type: 'action';\n actions: Action[] | Signal<Action[]>;\n buttonType?: 'flat' | 'raised' | 'stroked' | 'icon';\n disabled?: boolean;\n}\n\ninterface AgreementField {\n type: 'agreement';\n labelTemp: null | any;\n}\n\ninterface SliderField extends BaseField {\n type: 'slider';\n slider: {\n min?: number;\n max?: number;\n step?: number;\n }\n}\n\ninterface HiddenField {\n type: 'hidden';\n}\n\ninterface PreviewField extends BaseField {\n type: 'preview';\n}\n\ninterface PreviewImageField extends BaseField {\n type: 'preview:image';\n}\n\nexport type FormField<V = any> = \n | TextField\n | PasswordField\n | TextareaField\n | DateInputField\n | DateRangeInputField\n | SelectField<V>\n | TimeRangeField\n | MultiSelectField<V>\n | FileField\n | ActionField\n | HiddenField\n | NumberField\n | PreviewField\n | AgreementField\n | SliderField\n | PreviewImageField;\n\nexport interface FormFieldMap {\n [key: string]: FormField<any> | FormFieldMap;\n}\n\n/** @deprecated */\nexport const FORM_FIELD_MAP = new InjectionToken<FormFieldMap>('[@ng-atomic] Smart Form Field');\n\n/** @deprecated */\nexport function provideFormFieldMap(useFactory: () => FormFieldMap) {\n return { provide: FORM_FIELD_MAP, useFactory };\n}\n\ntype Enum<T> = Record<string, T>;\n\n/** @deprecated */\nexport function buildOptions<T>(_enum: Enum<T>): Option<T>[] {\n return Object.values(_enum).map(value => ({value, name: value}) as Option<T>);\n}\n\n/** @deprecated */\n@Pipe({name: 'smartField', standalone: true, pure: true})\nexport class SmartFieldPipe implements PipeTransform {\n protected map = inject(FORM_FIELD_MAP, {optional: true}) ?? {\n createdAt: { type: 'date' },\n updatedAt: { type: 'date' },\n deletedAt: { type: 'date' },\n };\n\n transform(key: string, map: FormFieldMap = this.map): FormField<any> {\n return get(map, key) ?? {type: 'input'};\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAuHA;MACa,cAAc,GAAG,IAAI,cAAc,CAAe,+BAA+B,EAAE;AAEhG;AACM,SAAU,mBAAmB,CAAC,UAA8B,EAAA;AAChE,IAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAID;AACM,SAAU,YAAY,CAAI,KAAc,EAAA;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAc,CAAC,CAAC;AAChF,CAAC;AAED;MAEa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEY,IAAG,CAAA,GAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI;AAC1D,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5B,CAAC;AAKH,KAAA;AAHC,IAAA,SAAS,CAAC,GAAW,EAAE,GAAoB,GAAA,IAAI,CAAC,GAAG,EAAA;AACjD,QAAA,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;KACzC;8GATU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAA;;;ACvIxD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-pipes-smart-field.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/smart-field.pipe.ts","../../../../../packages/@ng-atomic/common/src/lib/pipes/smart-field/ng-atomic-common-pipes-smart-field.ts"],"sourcesContent":["import { InjectionToken, Pipe, PipeTransform, Signal, inject } from '@angular/core';\nimport { Action } from '@ng-atomic/core';\nimport { SignalOrValue } from '@ng-atomic/common/pipes/signal';\nimport get from 'lodash.get';\n\n\nexport interface Option<T> {\n name: string;\n value: T;\n}\n\ninterface BaseField {\n placeholder?: string;\n hint?: SignalOrValue<string>;\n actions?: Action[] | Signal<Action[]>;\n}\n\ninterface TextField extends BaseField {\n type: 'text';\n autoComplete?: SignalOrValue<string[]>;\n}\n\ninterface PasswordField extends BaseField {\n type: 'password';\n}\n\ninterface NumberField extends BaseField {\n type: 'number';\n}\n\ninterface TextareaField extends BaseField {\n type: 'textarea';\n rows?: number;\n}\n\ninterface DateInputField extends BaseField {\n type: 'date';\n}\n\ninterface DateRangeInputField extends BaseField {\n type: 'date-range';\n}\n\ninterface SelectField<T> extends BaseField {\n type: 'select';\n options: Option<T>[] | Signal<Option<T>[]>;\n multiple?: boolean;\n}\n\ninterface TimeRangeField extends BaseField {\n type: 'time-range';\n}\n\n//* @deprecated use multiple option */\ninterface MultiSelectField<T> extends BaseField {\n type: 'multi-select';\n options: Option<T>[] | Signal<Option<T>[]>;\n}\n\ninterface FileField extends BaseField {\n type: 'file';\n progress?: Signal<number | null>;\n}\n\ninterface ActionField extends BaseField {\n type: 'action';\n actions: Action[] | Signal<Action[]>;\n buttonType?: 'flat' | 'raised' | 'stroked' | 'icon';\n disabled?: boolean;\n}\n\ninterface AgreementField {\n type: 'agreement';\n labelTemp: null | any;\n}\n\ninterface SliderField extends BaseField {\n type: 'slider';\n slider: {\n min?: number;\n max?: number;\n step?: number;\n }\n}\n\ninterface HiddenField {\n type: 'hidden';\n}\n\ninterface PreviewField extends BaseField {\n type: 'preview';\n}\n\ninterface PreviewImageField extends BaseField {\n type: 'preview:image';\n}\n\nexport type FormField<V = any> = \n | TextField\n | PasswordField\n | TextareaField\n | DateInputField\n | DateRangeInputField\n | SelectField<V>\n | TimeRangeField\n | MultiSelectField<V>\n | FileField\n | ActionField\n | HiddenField\n | NumberField\n | PreviewField\n | AgreementField\n | SliderField\n | PreviewImageField;\n\nexport interface FormFieldMap {\n [key: string]: FormField<any> | FormFieldMap;\n}\n\n/** @deprecated */\nexport const FORM_FIELD_MAP = new InjectionToken<FormFieldMap>('[@ng-atomic] Smart Form Field');\n\n/** @deprecated use fieldMap input*/\nexport function provideFormFieldMap(useFactory: () => FormFieldMap) {\n return { provide: FORM_FIELD_MAP, useFactory };\n}\n\ntype Enum<T> = Record<string, T>;\n\n/** @deprecated */\nexport function buildOptions<T>(_enum: Enum<T>): Option<T>[] {\n return Object.values(_enum).map(value => ({value, name: value}) as Option<T>);\n}\n\n/** @deprecated */\n@Pipe({name: 'smartField', standalone: true, pure: true})\nexport class SmartFieldPipe implements PipeTransform {\n protected map = inject(FORM_FIELD_MAP, {optional: true}) ?? {\n createdAt: { type: 'date' },\n updatedAt: { type: 'date' },\n deletedAt: { type: 'date' },\n };\n\n transform(key: string, map: FormFieldMap = this.map): FormField<any> {\n return get(map, key) ?? {type: 'input'};\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAuHA;MACa,cAAc,GAAG,IAAI,cAAc,CAAe,+BAA+B,EAAE;AAEhG;AACM,SAAU,mBAAmB,CAAC,UAA8B,EAAA;AAChE,IAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;AACjD,CAAC;AAID;AACM,SAAU,YAAY,CAAI,KAAc,EAAA;IAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAc,CAAC,CAAC;AAChF,CAAC;AAED;MAEa,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEY,IAAG,CAAA,GAAA,GAAG,MAAM,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI;AAC1D,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;AAC3B,YAAA,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAC5B,CAAC;AAKH,KAAA;AAHC,IAAA,SAAS,CAAC,GAAW,EAAE,GAAoB,GAAA,IAAI,CAAC,GAAG,EAAA;AACjD,QAAA,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC;KACzC;8GATU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA,EAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAC,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAA;;;ACvIxD;;AAEG;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/router';
|
|
4
|
+
import { NavigationStart, Router } from '@angular/router';
|
|
4
5
|
import { LoadingService } from '@ng-atomic/common/services/loading';
|
|
5
6
|
import { SideAppService } from '@ng-atomic/common/services/side-app';
|
|
6
7
|
import { SideNavModeService } from '@ng-atomic/common/services/side-nav-mode';
|
|
@@ -8,11 +9,55 @@ import { FabService } from '@ng-atomic/common/services/fab';
|
|
|
8
9
|
import { SnackBarService } from '@ng-atomic/common/services/snack-bar';
|
|
9
10
|
import { Clipboard } from '@angular/cdk/clipboard';
|
|
10
11
|
import { MatDialog } from '@angular/material/dialog';
|
|
12
|
+
import { SheetService } from '@ng-atomic/common/services/sheets';
|
|
11
13
|
|
|
14
|
+
class HistoryInjectorService {
|
|
15
|
+
constructor(router) {
|
|
16
|
+
this.router = router;
|
|
17
|
+
this.isInitialNavigation = true;
|
|
18
|
+
this.router.events.subscribe((event) => {
|
|
19
|
+
if (event instanceof NavigationStart && this.isInitialNavigation) {
|
|
20
|
+
this.isInitialNavigation = false; // 最初のナビゲーションのみ適用
|
|
21
|
+
this.injectParentRoutes(event.url);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async injectParentRoutes(currentUrl) {
|
|
26
|
+
const urlTree = this.router.parseUrl(currentUrl);
|
|
27
|
+
const segments = this.getFilteredSegments(urlTree);
|
|
28
|
+
console.debug('[HistoryInjector] Filtered segments:', segments);
|
|
29
|
+
if (segments.length > 1) {
|
|
30
|
+
for (let i = 1; i < segments.length; i++) {
|
|
31
|
+
const parentUrl = '/' + segments.slice(0, i).map(segment => segment.path).join('/');
|
|
32
|
+
console.debug('[HistoryInjector] Adding parent URL to history:', parentUrl);
|
|
33
|
+
await this.router.navigateByUrl(parentUrl);
|
|
34
|
+
}
|
|
35
|
+
// 最終的に元のURLに遷移
|
|
36
|
+
await this.router.navigateByUrl(currentUrl);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
getFilteredSegments(urlTree) {
|
|
40
|
+
const segments = urlTree.root.children['primary']?.segments || [];
|
|
41
|
+
// `skip=true`のマトリクスパラメーターが含まれるセグメントを除外
|
|
42
|
+
return segments.filter(segment => {
|
|
43
|
+
const skip = segment.parameterMap.get('skip');
|
|
44
|
+
return skip !== 'true';
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HistoryInjectorService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HistoryInjectorService, providedIn: 'root' }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HistoryInjectorService, decorators: [{
|
|
51
|
+
type: Injectable,
|
|
52
|
+
args: [{
|
|
53
|
+
providedIn: 'root',
|
|
54
|
+
}]
|
|
55
|
+
}], ctorParameters: () => [{ type: i1.Router }] });
|
|
12
56
|
class AppService {
|
|
13
57
|
constructor() {
|
|
14
58
|
this.dialog = inject(MatDialog);
|
|
15
59
|
this.loading = inject(LoadingService);
|
|
60
|
+
this.sheet = inject(SheetService);
|
|
16
61
|
this.sideApp = inject(SideAppService);
|
|
17
62
|
this.sideNavMode = inject(SideNavModeService);
|
|
18
63
|
this.sideNav = inject(SideNavModeService);
|
|
@@ -20,6 +65,7 @@ class AppService {
|
|
|
20
65
|
this.fab = inject(FabService);
|
|
21
66
|
this.snackBar = inject(SnackBarService);
|
|
22
67
|
this.clipboard = inject(Clipboard);
|
|
68
|
+
this.navigationInterceptor = inject(HistoryInjectorService);
|
|
23
69
|
}
|
|
24
70
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: AppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
25
71
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: AppService, providedIn: 'root' }); }
|
|
@@ -35,5 +81,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
35
81
|
* Generated bundle index. Do not edit.
|
|
36
82
|
*/
|
|
37
83
|
|
|
38
|
-
export { AppService };
|
|
84
|
+
export { AppService, HistoryInjectorService };
|
|
39
85
|
//# sourceMappingURL=ng-atomic-common-services-app.mjs.map
|
|
@@ -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';\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":"
|
|
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 { NavigationStart, Router, UrlSegment, UrlTree } 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';\nimport { SheetService } from '@ng-atomic/common/services/sheets';\n\n\n@Injectable({\n providedIn: 'root',\n})\nexport class HistoryInjectorService {\n private isInitialNavigation = true;\n\n constructor(private router: Router) {\n this.router.events.subscribe((event) => {\n if (event instanceof NavigationStart && this.isInitialNavigation) {\n this.isInitialNavigation = false; // 最初のナビゲーションのみ適用\n this.injectParentRoutes(event.url);\n }\n });\n }\n\n private async injectParentRoutes(currentUrl: string): Promise<void> {\n const urlTree: UrlTree = this.router.parseUrl(currentUrl);\n const segments = this.getFilteredSegments(urlTree);\n\n console.debug('[HistoryInjector] Filtered segments:', segments);\n\n if (segments.length > 1) {\n for (let i = 1; i < segments.length; i++) {\n const parentUrl = '/' + segments.slice(0, i).map(segment => segment.path).join('/');\n console.debug('[HistoryInjector] Adding parent URL to history:', parentUrl);\n await this.router.navigateByUrl(parentUrl);\n }\n\n // 最終的に元のURLに遷移\n await this.router.navigateByUrl(currentUrl);\n }\n }\n\n private getFilteredSegments(urlTree: UrlTree): UrlSegment[] {\n const segments = urlTree.root.children['primary']?.segments || [];\n\n // `skip=true`のマトリクスパラメーターが含まれるセグメントを除外\n return segments.filter(segment => {\n const skip = segment.parameterMap.get('skip');\n return skip !== 'true';\n });\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AppService {\n readonly dialog = inject(MatDialog);\n readonly loading = inject(LoadingService);\n readonly sheet = inject(SheetService);\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 readonly navigationInterceptor = inject(HistoryInjectorService);\n \n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, inject, Injectable } from '@angular/core';
|
|
3
|
-
import { toSignal } from '@angular/core/rxjs-interop';
|
|
2
|
+
import { signal, inject, computed, isSignal, Injectable } from '@angular/core';
|
|
4
3
|
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
|
|
4
|
+
import { computedAsync } from 'ngxtension/computed-async';
|
|
5
5
|
import { filter, map, switchMap } from 'rxjs';
|
|
6
6
|
|
|
7
7
|
class FabService {
|
|
@@ -10,8 +10,14 @@ class FabService {
|
|
|
10
10
|
this.router = inject(Router);
|
|
11
11
|
this.route = inject(ActivatedRoute);
|
|
12
12
|
this.route$ = this.router.events.pipe(filter(event => event instanceof NavigationEnd), map(() => this.findLastChild(this.route)));
|
|
13
|
-
this.
|
|
14
|
-
|
|
13
|
+
this.data = computedAsync(() => {
|
|
14
|
+
return this.route$.pipe(switchMap((route) => route.data));
|
|
15
|
+
});
|
|
16
|
+
this.actions = computed(() => {
|
|
17
|
+
return isSignal(this.data()?.fabActions)
|
|
18
|
+
? this.data().fabActions()
|
|
19
|
+
: this.data()?.fabActions || [];
|
|
20
|
+
});
|
|
15
21
|
}
|
|
16
22
|
findLastChild(route) {
|
|
17
23
|
let child = route;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-fab.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/fab/fab.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/fab/ng-atomic-common-services-fab.ts"],"sourcesContent":["import { inject, Injectable, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Action } from '@ng-atomic/core';\nimport { filter, map, Observable, switchMap, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FabService {\n readonly hidden = signal(false);\n protected readonly router = inject(Router);\n protected readonly route = inject(ActivatedRoute);\n readonly route$ = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => this.findLastChild(this.route)),\n );\n\n readonly
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-fab.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/fab/fab.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/fab/ng-atomic-common-services-fab.ts"],"sourcesContent":["import { computed, inject, Injectable, isSignal, Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { Action } from '@ng-atomic/core';\nimport { computedAsync } from 'ngxtension/computed-async';\nimport { filter, map, Observable, switchMap, tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FabService {\n readonly hidden = signal(false);\n protected readonly router = inject(Router);\n protected readonly route = inject(ActivatedRoute);\n readonly route$ = this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => this.findLastChild(this.route)),\n );\n\n readonly data = computedAsync(() => {\n return this.route$.pipe(\n switchMap((route) => route.data),\n );\n });\n\n readonly actions = computed(() => {\n return isSignal(this.data()?.fabActions)\n ? this.data().fabActions()\n : this.data()?.fabActions || [];\n });\n\n private findLastChild(route: ActivatedRoute): ActivatedRoute {\n let child = route;\n while (child.firstChild) {\n child = child.firstChild;\n }\n return child;\n }\n\n show() {\n this.hidden.set(false);\n }\n\n hide() {\n this.hidden.set(true);\n }\n\n toggle() {\n this.hidden.update(hidden => !hidden);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;MAUa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIW,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACb,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACvC,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC1C,CAAC;AAEO,QAAA,IAAA,CAAA,IAAI,GAAG,aAAa,CAAC,MAAK;AACjC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,CACjC,CAAC;AACJ,SAAC,CAAC,CAAC;AAEM,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC;AACtC,kBAAE,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE;kBACxB,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC;AACpC,SAAC,CAAC,CAAC;AAqBJ,KAAA;AAnBS,IAAA,aAAa,CAAC,KAAqB,EAAA;QACzC,IAAI,KAAK,GAAG,KAAK,CAAC;AAClB,QAAA,OAAO,KAAK,CAAC,UAAU,EAAE;AACvB,YAAA,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;SAC1B;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACxB;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;KACvC;8GAvCU,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;;;ACTD;;AAEG;;;;"}
|
|
@@ -35,7 +35,7 @@ function injectIndexFormBuilder() {
|
|
|
35
35
|
return inject(IndexFormBuilder);
|
|
36
36
|
}
|
|
37
37
|
function injectIndexForm({ columns = undefined, sort = undefined, query = undefined, page = undefined } = {}) {
|
|
38
|
-
return
|
|
38
|
+
return injectIndexFormBuilder().build({
|
|
39
39
|
columns,
|
|
40
40
|
sort,
|
|
41
41
|
query,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form-_index.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/_index/index.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/_index/ng-atomic-common-services-form-_index.ts"],"sourcesContent":["import { Injectable, inject } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { PaginationFormValue, PaginationService } from \"@ng-atomic/common/services/form/pagination\";\nimport { SortFormValue, SortService } from \"@ng-atomic/common/services/form/sort\";\nimport { injectProps } from \"@ng-atomic/common/pipes/domain\";\nimport { ColumnsFormBuilder, buildColumns, ColumnsFormValue } from \"@ng-atomic/common/services/form/columns\";\nimport { omitBy } from \"lodash-es\";\nexport { buildColumns }; \n\n@Injectable({ providedIn: 'root' })\nexport class IndexFormBuilder {\n readonly columns = inject(ColumnsFormBuilder);\n readonly sort = inject(SortService);\n readonly pagination = inject(PaginationService)\n readonly fb = inject(FormBuilder);\n\n build({\n query = undefined,\n sort = {},\n page,\n columns = buildColumns(['__checkbox', ...injectProps()(), '__actions'])\n }: {\n query?: string,\n page?: Partial<PaginationFormValue>,\n sort?: Partial<SortFormValue>,\n columns?: ColumnsFormValue,\n } = {}) {\n const omit = <T extends object>(obj: T) => omitBy(obj, value => value === undefined) as T;\n return this.fb.group(omit({\n query: typeof query !== 'undefined' ? this.fb.control(query) : undefined,\n page: page ? this.pagination.build(page) : undefined,\n sort: this.sort.build(sort),\n columns: this.columns.build(columns),\n }));\n }\n}\n\n\nexport function injectIndexFormBuilder() {\n return inject(IndexFormBuilder);\n}\n\nexport function injectIndexForm({\n columns = undefined,\n sort = undefined,\n query = undefined,\n page = undefined\n}: {\n columns?: ColumnsFormValue,\n sort?: Partial<SortFormValue>,\n query?: string,\n page?: Partial<PaginationFormValue>,\n} = {}) {\n return
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form-_index.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/_index/index.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/_index/ng-atomic-common-services-form-_index.ts"],"sourcesContent":["import { Injectable, inject } from \"@angular/core\";\nimport { FormBuilder } from \"@angular/forms\";\nimport { PaginationFormValue, PaginationService } from \"@ng-atomic/common/services/form/pagination\";\nimport { SortFormValue, SortService } from \"@ng-atomic/common/services/form/sort\";\nimport { injectProps } from \"@ng-atomic/common/pipes/domain\";\nimport { ColumnsFormBuilder, buildColumns, ColumnsFormValue } from \"@ng-atomic/common/services/form/columns\";\nimport { omitBy } from \"lodash-es\";\nexport { buildColumns }; \n\n@Injectable({ providedIn: 'root' })\nexport class IndexFormBuilder {\n readonly columns = inject(ColumnsFormBuilder);\n readonly sort = inject(SortService);\n readonly pagination = inject(PaginationService)\n readonly fb = inject(FormBuilder);\n\n build({\n query = undefined,\n sort = {},\n page,\n columns = buildColumns(['__checkbox', ...injectProps()(), '__actions'])\n }: {\n query?: string,\n page?: Partial<PaginationFormValue>,\n sort?: Partial<SortFormValue>,\n columns?: ColumnsFormValue,\n } = {}) {\n const omit = <T extends object>(obj: T) => omitBy(obj, value => value === undefined) as T;\n return this.fb.group(omit({\n query: typeof query !== 'undefined' ? this.fb.control(query) : undefined,\n page: page ? this.pagination.build(page) : undefined,\n sort: this.sort.build(sort),\n columns: this.columns.build(columns),\n }));\n }\n}\n\n\nexport function injectIndexFormBuilder() {\n return inject(IndexFormBuilder);\n}\n\nexport function injectIndexForm({\n columns = undefined,\n sort = undefined,\n query = undefined,\n page = undefined\n}: {\n columns?: ColumnsFormValue,\n sort?: Partial<SortFormValue>,\n query?: string,\n page?: Partial<PaginationFormValue>,\n} = {}) {\n return injectIndexFormBuilder().build({\n columns,\n sort,\n query,\n page,\n });\n}\n\nexport {\n /** @deprecates use instead `IndexFormBuilder` */\n IndexFormBuilder as IndexTemplateFormBuilder,\n /** @deprecates use instead `injectIndexForm` */\n injectIndexForm as injectIndexTemplateForm,\n /** @deprecates use instead `injectIndexFormBuilder` */\n injectIndexFormBuilder as injectIndexTemplateFormBuilder,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;MAUa,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AACtC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAqBnC,KAAA;AAnBC,IAAA,KAAK,CAAC,EACJ,KAAK,GAAG,SAAS,EACjB,IAAI,GAAG,EAAE,EACT,IAAI,EACJ,OAAO,GAAG,YAAY,CAAC,CAAC,YAAY,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC,EAAA,GAMrE,EAAE,EAAA;AACJ,QAAA,MAAM,IAAI,GAAG,CAAmB,GAAM,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,KAAK,KAAK,SAAS,CAAM,CAAC;AAC1F,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AACxB,YAAA,KAAK,EAAE,OAAO,KAAK,KAAK,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS;AACxE,YAAA,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS;YACpD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;AACrC,SAAA,CAAC,CAAC,CAAC;KACL;8GAxBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAhB,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,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;SA6BlB,sBAAsB,GAAA;AACpC,IAAA,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC;AAEK,SAAU,eAAe,CAAC,EAC9B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,KAAK,GAAG,SAAS,EACjB,IAAI,GAAG,SAAS,KAMd,EAAE,EAAA;AACJ,IAAA,OAAO,sBAAsB,EAAE,CAAC,KAAK,CAAC;QACpC,OAAO;QACP,IAAI;QACJ,KAAK;QACL,IAAI;AACL,KAAA,CAAC,CAAC;AACL;;AC3DA;;AAEG;;;;"}
|