@ng-atomic/common 18.10.0 → 18.12.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/directives/molecules/column/column.molecule.d.ts +66 -0
- package/directives/molecules/column/index.d.ts +1 -0
- package/directives/resize-column/index.d.ts +1 -0
- package/directives/resize-column/resize-column.directive.d.ts +21 -0
- package/directives/resize-column/resize-handle.component.d.ts +5 -0
- package/esm2022/directives/molecules/column/column.molecule.mjs +112 -0
- package/esm2022/directives/molecules/column/index.mjs +2 -0
- package/esm2022/directives/molecules/column/ng-atomic-common-directives-molecules-column.mjs +5 -0
- package/esm2022/directives/resize-column/index.mjs +2 -0
- package/esm2022/directives/resize-column/ng-atomic-common-directives-resize-column.mjs +5 -0
- package/esm2022/directives/resize-column/resize-column.directive.mjs +62 -0
- package/esm2022/directives/resize-column/resize-handle.component.mjs +13 -0
- package/esm2022/models/index.mjs +1 -1
- package/esm2022/pipes/actions/actions.pipe.mjs +1 -1
- package/esm2022/pipes/columns/columns.pipe.mjs +3 -2
- package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +16 -3
- package/esm2022/pipes/domain/domain.pipe.mjs +22 -26
- package/esm2022/pipes/error/error.pipe.mjs +1 -2
- package/esm2022/pipes/expression/expression.pipe.mjs +18 -0
- package/esm2022/pipes/expression/index.mjs +2 -0
- package/esm2022/pipes/expression/ng-atomic-common-pipes-expression.mjs +5 -0
- package/esm2022/pipes/smart-field/smart-field.pipe.mjs +15 -4
- package/esm2022/pipes/style/index.mjs +2 -0
- package/esm2022/pipes/style/ng-atomic-common-pipes-style.mjs +5 -0
- package/esm2022/pipes/style/style.pipe.mjs +41 -0
- package/esm2022/services/form/columns/columns.service.mjs +28 -21
- package/esm2022/services/form/json-schema/json-schema.service.mjs +77 -58
- package/esm2022/services/form/pagination/pagination.service.mjs +4 -4
- package/esm2022/services/language/index.mjs +2 -0
- package/esm2022/services/language/language.service.mjs +39 -0
- package/esm2022/services/language/ng-atomic-common-services-language.mjs +5 -0
- package/esm2022/services/loading/loading.service.mjs +2 -2
- package/esm2022/services/query-resolver/query-resolver.service.mjs +4 -5
- package/esm2022/services/snack-bar/snack-bar.service.mjs +29 -11
- package/esm2022/services/spreadsheet/directives/grid-cell.directive.mjs +124 -0
- package/esm2022/services/spreadsheet/directives/index.mjs +2 -0
- package/esm2022/services/spreadsheet/features/clipboard.service.mjs +71 -0
- package/esm2022/services/spreadsheet/features/data.service.mjs +63 -0
- package/esm2022/services/spreadsheet/features/editor.service.mjs +65 -0
- package/esm2022/services/spreadsheet/features/grid.service.mjs +54 -0
- package/esm2022/services/spreadsheet/features/index.mjs +8 -0
- package/esm2022/services/spreadsheet/features/navigation.service.mjs +71 -0
- package/esm2022/services/spreadsheet/features/protection.service.mjs +25 -0
- package/esm2022/services/spreadsheet/features/selection.service.mjs +129 -0
- package/esm2022/services/spreadsheet/index.mjs +5 -0
- package/esm2022/services/spreadsheet/models/cell.model.mjs +2 -0
- package/esm2022/services/spreadsheet/models/index.mjs +2 -0
- package/esm2022/services/spreadsheet/ng-atomic-common-services-spreadsheet.mjs +5 -0
- package/esm2022/services/spreadsheet/spreadsheet.service.mjs +183 -0
- package/esm2022/services/ui/ui.helpers.mjs +15 -8
- package/esm2022/stores/query/query.store.mjs +2 -2
- package/esm2022/utils/expression/expression.transformer.mjs +38 -0
- package/esm2022/utils/expression/index.mjs +2 -0
- package/esm2022/utils/get/get.mjs +2 -2
- package/esm2022/utils/index.mjs +2 -2
- package/esm2022/utils/inject/inject.mjs +1 -1
- package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs +119 -0
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-directives-resize-column.mjs +79 -0
- package/fesm2022/ng-atomic-common-directives-resize-column.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs +2 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +15 -2
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs +22 -26
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-error.mjs +0 -1
- package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-expression.mjs +25 -0
- package/fesm2022/ng-atomic-common-pipes-expression.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-map.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +15 -4
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-style.mjs +48 -0
- package/fesm2022/ng-atomic-common-pipes-style.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-columns.mjs +27 -20
- package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +76 -57
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-pagination.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-language.mjs +46 -0
- package/fesm2022/ng-atomic-common-services-language.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-loading.mjs +1 -1
- package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-snack-bar.mjs +29 -11
- package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +758 -0
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-ui.mjs +14 -7
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entity.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-query.mjs +1 -1
- package/fesm2022/ng-atomic-common-stores-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +34 -15
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/models/index.d.ts +2 -1
- package/package.json +73 -44
- package/pipes/actions/actions.pipe.d.ts +2 -1
- package/pipes/columns/columns.pipe.d.ts +1 -0
- package/pipes/data-accessor/data-accessor.pipe.d.ts +4 -2
- package/pipes/domain/domain.pipe.d.ts +7 -6
- package/pipes/expression/expression.pipe.d.ts +9 -0
- package/pipes/expression/index.d.ts +1 -0
- package/pipes/smart-field/smart-field.pipe.d.ts +2 -2
- package/pipes/style/index.d.ts +1 -0
- package/pipes/style/style.pipe.d.ts +18 -0
- package/services/form/_index/index.service.d.ts +4 -4
- package/services/form/columns/columns.service.d.ts +5 -2
- package/services/form/json-schema/json-schema.service.d.ts +9 -1
- package/services/form/pagination/pagination.service.d.ts +5 -5
- package/services/language/index.d.ts +1 -0
- package/services/language/language.service.d.ts +12 -0
- package/services/query-resolver/query-resolver.service.d.ts +2 -2
- package/services/snack-bar/snack-bar.service.d.ts +5 -3
- package/services/spreadsheet/directives/grid-cell.directive.d.ts +41 -0
- package/services/spreadsheet/directives/index.d.ts +1 -0
- package/services/spreadsheet/features/clipboard.service.d.ts +15 -0
- package/services/spreadsheet/features/data.service.d.ts +16 -0
- package/services/spreadsheet/features/editor.service.d.ts +22 -0
- package/services/spreadsheet/features/grid.service.d.ts +17 -0
- package/services/spreadsheet/features/index.d.ts +7 -0
- package/services/spreadsheet/features/navigation.service.d.ts +17 -0
- package/services/spreadsheet/features/protection.service.d.ts +24 -0
- package/services/spreadsheet/features/selection.service.d.ts +40 -0
- package/services/spreadsheet/index.d.ts +4 -0
- package/services/spreadsheet/models/cell.model.d.ts +17 -0
- package/services/spreadsheet/models/index.d.ts +1 -0
- package/services/spreadsheet/spreadsheet.service.d.ts +29 -0
- package/utils/expression/expression.transformer.d.ts +12 -0
- package/utils/expression/index.d.ts +1 -0
- package/utils/index.d.ts +1 -1
- package/utils/inject/inject.d.ts +2 -2
- package/esm2022/pipes/smart-exp/index.mjs +0 -3
- package/esm2022/pipes/smart-exp/ng-atomic-common-pipes-smart-exp.mjs +0 -5
- package/esm2022/pipes/smart-exp/smart-exp.module.mjs +0 -16
- package/esm2022/pipes/smart-exp/smart-exp.pipe.mjs +0 -27
- package/esm2022/utils/smart-exp-transformer/index.mjs +0 -2
- package/esm2022/utils/smart-exp-transformer/smart-exp-transformer.mjs +0 -18
- package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs +0 -47
- package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs.map +0 -1
- package/pipes/smart-exp/index.d.ts +0 -2
- package/pipes/smart-exp/smart-exp.module.d.ts +0 -7
- package/pipes/smart-exp/smart-exp.pipe.d.ts +0 -11
- package/utils/smart-exp-transformer/index.d.ts +0 -1
- package/utils/smart-exp-transformer/smart-exp-transformer.d.ts +0 -6
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1waXBlcy1leHByZXNzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9waXBlcy9leHByZXNzaW9uL25nLWF0b21pYy1jb21tb24tcGlwZXMtZXhwcmVzc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InjectionToken, Pipe, inject } from '@angular/core';
|
|
2
|
-
import get from 'lodash
|
|
2
|
+
import { get } from 'lodash-es';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/** @deprecated */
|
|
5
5
|
export const FORM_FIELD_MAP = new InjectionToken('[@ng-atomic] Smart Form Field');
|
|
@@ -7,8 +7,10 @@ export const FORM_FIELD_MAP = new InjectionToken('[@ng-atomic] Smart Form Field'
|
|
|
7
7
|
export function provideFormFieldMap(useFactory) {
|
|
8
8
|
return { provide: FORM_FIELD_MAP, useFactory };
|
|
9
9
|
}
|
|
10
|
-
/** @deprecated */
|
|
11
10
|
export function buildOptions(_enum) {
|
|
11
|
+
if (Array.isArray(_enum)) {
|
|
12
|
+
return _enum.map(value => ({ value, name: value }));
|
|
13
|
+
}
|
|
12
14
|
return Object.values(_enum).map(value => ({ value, name: value }));
|
|
13
15
|
}
|
|
14
16
|
/** @deprecated */
|
|
@@ -21,7 +23,7 @@ export class SmartFieldPipe {
|
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
transform(key, map = this.map) {
|
|
24
|
-
return get(map, key) ?? { type: '
|
|
26
|
+
return get(map, key) ?? { type: 'text' };
|
|
25
27
|
}
|
|
26
28
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SmartFieldPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
27
29
|
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: SmartFieldPipe, isStandalone: true, name: "smartField" }); }
|
|
@@ -30,4 +32,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
30
32
|
type: Pipe,
|
|
31
33
|
args: [{ name: 'smartField', standalone: true, pure: true }]
|
|
32
34
|
}] });
|
|
33
|
-
|
|
35
|
+
export function resolveFormField(fieldMap, name) {
|
|
36
|
+
if (get(fieldMap, name))
|
|
37
|
+
return get(fieldMap, name);
|
|
38
|
+
for (const key of Object.keys(fieldMap ?? {})) {
|
|
39
|
+
if (new RegExp(key).test(name))
|
|
40
|
+
return get(fieldMap, key);
|
|
41
|
+
}
|
|
42
|
+
return { type: 'text' };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZmllbGQucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvcGlwZXMvc21hcnQtZmllbGQvc21hcnQtZmllbGQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBeUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3BGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBb0hoQyxrQkFBa0I7QUFDbEIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFlLCtCQUErQixDQUFDLENBQUM7QUFFaEcsb0NBQW9DO0FBQ3BDLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxVQUE4QjtJQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUNqRCxDQUFDO0FBSUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxLQUFzQjtJQUNwRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBYyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUMsQ0FBYyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELGtCQUFrQjtBQUVsQixNQUFNLE9BQU8sY0FBYztJQUQzQjtRQUVZLFFBQUcsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUk7WUFDMUQsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUMzQixTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQzNCLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7U0FDNUIsQ0FBQztLQUtIO0lBSEMsU0FBUyxDQUFDLEdBQVcsRUFBRSxNQUFvQixJQUFJLENBQUMsR0FBRztRQUNqRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFRLENBQUM7SUFDaEQsQ0FBQzs4R0FUVSxjQUFjOzRHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLElBQUk7bUJBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBQzs7QUFheEQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQXNCLEVBQUUsSUFBWTtJQUNuRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM5QyxJQUFJLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFlLENBQUM7QUFDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBTaWduYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IFNpZ25hbE9yVmFsdWUgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9waXBlcy9zaWduYWwnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdGlvbjxUPiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IFQ7XG59XG5cbmludGVyZmFjZSBCYXNlRmllbGQge1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGludD86IFNpZ25hbE9yVmFsdWU8c3RyaW5nPjtcbiAgYWN0aW9ucz86IEFjdGlvbltdIHwgU2lnbmFsPEFjdGlvbltdPjtcbn1cblxuaW50ZXJmYWNlIFRleHRGaWVsZCBleHRlbmRzIEJhc2VGaWVsZCB7XG4gIHR5cGU6ICd0ZXh0JztcbiAgYXV0b0NvbXBsZXRlPzogU2lnbmFsT3JWYWx1ZTxzdHJpbmdbXT47XG59XG5cbmludGVyZmFjZSBQYXNzd29yZEZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ3Bhc3N3b3JkJztcbn1cblxuaW50ZXJmYWNlIE51bWJlckZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ251bWJlcic7XG59XG5cbmludGVyZmFjZSBUZXh0YXJlYUZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ3RleHRhcmVhJztcbiAgcm93cz86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIERhdGVJbnB1dEZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ2RhdGUnO1xufVxuXG5pbnRlcmZhY2UgRGF0ZVJhbmdlSW5wdXRGaWVsZCBleHRlbmRzIEJhc2VGaWVsZCB7XG4gIHR5cGU6ICdkYXRlLXJhbmdlJztcbn1cblxuaW50ZXJmYWNlIFNlbGVjdEZpZWxkPFQ+IGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ3NlbGVjdCc7XG4gIG9wdGlvbnM6IE9wdGlvbjxUPltdIHwgU2lnbmFsPE9wdGlvbjxUPltdPjtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgVGltZVJhbmdlRmllbGQgZXh0ZW5kcyBCYXNlRmllbGQge1xuICB0eXBlOiAndGltZS1yYW5nZSc7XG59XG5cbi8vKiBAZGVwcmVjYXRlZCB1c2UgbXVsdGlwbGUgb3B0aW9uICovXG5pbnRlcmZhY2UgTXVsdGlTZWxlY3RGaWVsZDxUPiBleHRlbmRzIEJhc2VGaWVsZCB7XG4gIHR5cGU6ICdtdWx0aS1zZWxlY3QnO1xuICBvcHRpb25zOiBPcHRpb248VD5bXSB8IFNpZ25hbDxPcHRpb248VD5bXT47XG59XG5cbmludGVyZmFjZSBGaWxlRmllbGQgZXh0ZW5kcyBCYXNlRmllbGQge1xuICB0eXBlOiAnZmlsZSc7XG4gIHByb2dyZXNzPzogU2lnbmFsPG51bWJlciB8IG51bGw+O1xufVxuXG5pbnRlcmZhY2UgQWN0aW9uRmllbGQgZXh0ZW5kcyBCYXNlRmllbGQge1xuICB0eXBlOiAnYWN0aW9uJztcbiAgYWN0aW9uczogQWN0aW9uW10gfCBTaWduYWw8QWN0aW9uW10+O1xuICBidXR0b25UeXBlPzogJ2ZsYXQnIHwgJ3JhaXNlZCcgfCAnc3Ryb2tlZCcgfCAnaWNvbic7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEFncmVlbWVudEZpZWxkIHtcbiAgdHlwZTogJ2FncmVlbWVudCc7XG4gIGxhYmVsVGVtcDogbnVsbCB8IGFueTtcbn1cblxuaW50ZXJmYWNlIFNsaWRlckZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ3NsaWRlcic7XG4gIHNsaWRlcjoge1xuICAgIG1pbj86IG51bWJlcjtcbiAgICBtYXg/OiBudW1iZXI7XG4gICAgc3RlcD86IG51bWJlcjtcbiAgfVxufVxuXG5pbnRlcmZhY2UgSGlkZGVuRmllbGQge1xuICB0eXBlOiAnaGlkZGVuJztcbn1cblxuaW50ZXJmYWNlIFByZXZpZXdGaWVsZCBleHRlbmRzIEJhc2VGaWVsZCB7XG4gIHR5cGU6ICdwcmV2aWV3Jztcbn1cblxuaW50ZXJmYWNlIFByZXZpZXdJbWFnZUZpZWxkIGV4dGVuZHMgQmFzZUZpZWxkIHtcbiAgdHlwZTogJ3ByZXZpZXc6aW1hZ2UnO1xufVxuXG5leHBvcnQgdHlwZSBGb3JtRmllbGQ8ViA9IGFueT4gPSBcbiAgfCBUZXh0RmllbGRcbiAgfCBQYXNzd29yZEZpZWxkXG4gIHwgVGV4dGFyZWFGaWVsZFxuICB8IERhdGVJbnB1dEZpZWxkXG4gIHwgRGF0ZVJhbmdlSW5wdXRGaWVsZFxuICB8IFNlbGVjdEZpZWxkPFY+XG4gIHwgVGltZVJhbmdlRmllbGRcbiAgfCBNdWx0aVNlbGVjdEZpZWxkPFY+XG4gIHwgRmlsZUZpZWxkXG4gIHwgQWN0aW9uRmllbGRcbiAgfCBIaWRkZW5GaWVsZFxuICB8IE51bWJlckZpZWxkXG4gIHwgUHJldmlld0ZpZWxkXG4gIHwgQWdyZWVtZW50RmllbGRcbiAgfCBTbGlkZXJGaWVsZFxuICB8IFByZXZpZXdJbWFnZUZpZWxkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1GaWVsZE1hcCB7XG4gIFtrZXk6IHN0cmluZ106IEZvcm1GaWVsZDxhbnk+IHwgRm9ybUZpZWxkTWFwO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBjb25zdCBGT1JNX0ZJRUxEX01BUCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGb3JtRmllbGRNYXA+KCdbQG5nLWF0b21pY10gU21hcnQgRm9ybSBGaWVsZCcpO1xuXG4vKiogQGRlcHJlY2F0ZWQgdXNlIGZpZWxkTWFwIGlucHV0Ki9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlRm9ybUZpZWxkTWFwKHVzZUZhY3Rvcnk6ICgpID0+IEZvcm1GaWVsZE1hcCkge1xuICByZXR1cm4geyBwcm92aWRlOiBGT1JNX0ZJRUxEX01BUCwgdXNlRmFjdG9yeSB9O1xufVxuXG50eXBlIEVudW08VD4gPSBSZWNvcmQ8c3RyaW5nLCBUPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkT3B0aW9uczxUPihfZW51bTogRW51bTxUPiB8IGFueVtdKTogT3B0aW9uPFQ+W10ge1xuICBpZiAoQXJyYXkuaXNBcnJheShfZW51bSkpIHtcbiAgICByZXR1cm4gX2VudW0ubWFwKHZhbHVlID0+ICh7dmFsdWUsIG5hbWU6IHZhbHVlfSkgYXMgT3B0aW9uPFQ+KTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhfZW51bSkubWFwKHZhbHVlID0+ICh7dmFsdWUsIG5hbWU6IHZhbHVlfSkgYXMgT3B0aW9uPFQ+KTtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5AUGlwZSh7bmFtZTogJ3NtYXJ0RmllbGQnLCBzdGFuZGFsb25lOiB0cnVlLCBwdXJlOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBTbWFydEZpZWxkUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgbWFwID0gaW5qZWN0KEZPUk1fRklFTERfTUFQLCB7b3B0aW9uYWw6IHRydWV9KSA/PyB7XG4gICAgY3JlYXRlZEF0OiB7IHR5cGU6ICdkYXRlJyB9LFxuICAgIHVwZGF0ZWRBdDogeyB0eXBlOiAnZGF0ZScgfSxcbiAgICBkZWxldGVkQXQ6IHsgdHlwZTogJ2RhdGUnIH0sXG4gIH07XG5cbiAgdHJhbnNmb3JtKGtleTogc3RyaW5nLCBtYXA6IEZvcm1GaWVsZE1hcCA9IHRoaXMubWFwKTogRm9ybUZpZWxkPGFueT4ge1xuICAgIHJldHVybiBnZXQobWFwLCBrZXkpID8/IHt0eXBlOiAndGV4dCd9IGFzIGFueTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUZvcm1GaWVsZChmaWVsZE1hcDogRm9ybUZpZWxkTWFwLCBuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGdldChmaWVsZE1hcCwgbmFtZSkpIHJldHVybiBnZXQoZmllbGRNYXAsIG5hbWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhmaWVsZE1hcCA/PyB7fSkpIHtcbiAgICBpZiAobmV3IFJlZ0V4cChrZXkpLnRlc3QobmFtZSkpIHJldHVybiBnZXQoZmllbGRNYXAsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogJ3RleHQnIH0gYXMgRm9ybUZpZWxkO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './style.pipe';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3BpcGVzL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdHlsZS5waXBlJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1waXBlcy1zdHlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvcGlwZXMvc3R5bGUvbmctYXRvbWljLWNvbW1vbi1waXBlcy1zdHlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { inject, InjectionToken, Pipe } from '@angular/core';
|
|
2
|
+
import { isNumber } from 'class-validator';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export function isNumeric(value) {
|
|
5
|
+
return isNumber(value) && !isNaN(value);
|
|
6
|
+
}
|
|
7
|
+
export const defaultStyleTransformer = (value) => {
|
|
8
|
+
if (isNumeric(value)) {
|
|
9
|
+
return {
|
|
10
|
+
'justify-content': 'flex-end',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
'justify-content': 'flex-start',
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export const STYLE_TRANSFORMER = new InjectionToken('[@ng-atomic/common] Style Transformer', {
|
|
18
|
+
providedIn: 'root',
|
|
19
|
+
factory: () => defaultStyleTransformer
|
|
20
|
+
});
|
|
21
|
+
export function provideStyleTransformer(useFactory) {
|
|
22
|
+
return { provide: STYLE_TRANSFORMER, useFactory };
|
|
23
|
+
}
|
|
24
|
+
export function injectParentStyleTransformer() {
|
|
25
|
+
return inject(STYLE_TRANSFORMER, { skipSelf: true, optional: true }) ?? defaultStyleTransformer;
|
|
26
|
+
}
|
|
27
|
+
export class StylePipe {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.transformer = inject(STYLE_TRANSFORMER);
|
|
30
|
+
}
|
|
31
|
+
transform(value, context) {
|
|
32
|
+
return this.transformer(value, context);
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: StylePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
35
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: StylePipe, isStandalone: true, name: "style" }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: StylePipe, decorators: [{
|
|
38
|
+
type: Pipe,
|
|
39
|
+
args: [{ standalone: true, name: 'style', pure: true }]
|
|
40
|
+
}] });
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvcGlwZXMvc3R5bGUvc3R5bGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFM0MsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUFVO0lBQ2xDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFJRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBcUIsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNqRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3JCLE9BQU87WUFDTCxpQkFBaUIsRUFBRSxVQUFVO1NBQ2xCLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU87UUFDTCxpQkFBaUIsRUFBRSxZQUFZO0tBQ3BCLENBQUM7QUFDaEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQW1CLHVDQUF1QyxFQUFFO0lBQzdHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyx1QkFBdUI7Q0FDdkMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLHVCQUF1QixDQUFDLFVBQWtDO0lBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDcEQsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLHVCQUF1QixDQUFDO0FBQ2hHLENBQUM7QUFHRCxNQUFNLE9BQU8sU0FBUztJQUR0QjtRQUVZLGdCQUFXLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7S0FLbkQ7SUFIQyxTQUFTLENBQUMsS0FBVSxFQUFFLE9BQWE7UUFDakMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDOzhHQUxVLFNBQVM7NEdBQVQsU0FBUzs7MkZBQVQsU0FBUztrQkFEckIsSUFBSTttQkFBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICdjbGFzcy12YWxpZGF0b3InO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudW1iZXIge1xuICByZXR1cm4gaXNOdW1iZXIodmFsdWUpICYmICFpc05hTih2YWx1ZSk7XG59XG5cbmV4cG9ydCB0eXBlIFN0eWxlTWFwID0gUmVjb3JkPHN0cmluZywgYW55PjtcbmV4cG9ydCB0eXBlIFN0eWxlVHJhbnNmb3JtZXIgPSAodmFsdWU6IGFueSwgY29udGV4dD86IGFueSkgPT4gU3R5bGVNYXA7XG5leHBvcnQgY29uc3QgZGVmYXVsdFN0eWxlVHJhbnNmb3JtZXI6IFN0eWxlVHJhbnNmb3JtZXIgPSAodmFsdWUpID0+IHtcbiAgaWYgKGlzTnVtZXJpYyh2YWx1ZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ2p1c3RpZnktY29udGVudCc6ICdmbGV4LWVuZCcsXG4gICAgfSBhcyBTdHlsZU1hcDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJ2p1c3RpZnktY29udGVudCc6ICdmbGV4LXN0YXJ0JyxcbiAgfSBhcyBTdHlsZU1hcDtcbn07XG5cbmV4cG9ydCBjb25zdCBTVFlMRV9UUkFOU0ZPUk1FUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdHlsZVRyYW5zZm9ybWVyPignW0BuZy1hdG9taWMvY29tbW9uXSBTdHlsZSBUcmFuc2Zvcm1lcicsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBkZWZhdWx0U3R5bGVUcmFuc2Zvcm1lclxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU3R5bGVUcmFuc2Zvcm1lcih1c2VGYWN0b3J5OiAoKSA9PiBTdHlsZVRyYW5zZm9ybWVyKSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IFNUWUxFX1RSQU5TRk9STUVSLCB1c2VGYWN0b3J5IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQYXJlbnRTdHlsZVRyYW5zZm9ybWVyKCkge1xuICByZXR1cm4gaW5qZWN0KFNUWUxFX1RSQU5TRk9STUVSLCB7c2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlfSkgPz8gZGVmYXVsdFN0eWxlVHJhbnNmb3JtZXI7XG59XG5cbkBQaXBlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgbmFtZTogJ3N0eWxlJywgcHVyZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIFN0eWxlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBwcm90ZWN0ZWQgdHJhbnNmb3JtZXIgPSBpbmplY3QoU1RZTEVfVFJBTlNGT1JNRVIpO1xuXG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBjb250ZXh0PzogYW55KTogU3R5bGVNYXAge1xuICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybWVyKHZhbHVlLCBjb250ZXh0KTtcbiAgfVxufVxuIl19
|
|
@@ -11,13 +11,11 @@ export class ColumnsFormBuilder {
|
|
|
11
11
|
map: {
|
|
12
12
|
user: {
|
|
13
13
|
type: 'text',
|
|
14
|
-
headerText: 'User',
|
|
15
14
|
width: 80,
|
|
16
15
|
visible: true,
|
|
17
16
|
},
|
|
18
17
|
id: {
|
|
19
18
|
type: 'text',
|
|
20
|
-
headerText: 'ID',
|
|
21
19
|
width: 80,
|
|
22
20
|
visible: true,
|
|
23
21
|
},
|
|
@@ -36,10 +34,10 @@ export class ColumnsFormBuilder {
|
|
|
36
34
|
case 'tree':
|
|
37
35
|
return this.fb.group({
|
|
38
36
|
type: this.fb.control({ value: 'tree', disabled: true }),
|
|
39
|
-
headerText: this.fb.control(column.headerText),
|
|
40
37
|
visible: this.fb.control(column.visible),
|
|
41
38
|
width: this.fb.control(column.width),
|
|
42
39
|
sticky: this.fb.control(column.sticky),
|
|
40
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
43
41
|
});
|
|
44
42
|
case 'text':
|
|
45
43
|
return this.fb.group({
|
|
@@ -47,6 +45,7 @@ export class ColumnsFormBuilder {
|
|
|
47
45
|
visible: this.fb.control(column.visible),
|
|
48
46
|
width: this.fb.control(column.width),
|
|
49
47
|
sticky: this.fb.control(column.sticky),
|
|
48
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
50
49
|
});
|
|
51
50
|
case 'checkbox':
|
|
52
51
|
return this.fb.group({
|
|
@@ -54,6 +53,7 @@ export class ColumnsFormBuilder {
|
|
|
54
53
|
visible: this.fb.control(column.visible),
|
|
55
54
|
width: this.fb.control(column.width),
|
|
56
55
|
sticky: this.fb.control(column.sticky),
|
|
56
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
57
57
|
});
|
|
58
58
|
case 'actions':
|
|
59
59
|
return this.fb.group({
|
|
@@ -62,6 +62,7 @@ export class ColumnsFormBuilder {
|
|
|
62
62
|
width: this.fb.control(column.width),
|
|
63
63
|
actions: this.fb.control(column.actions),
|
|
64
64
|
sticky: this.fb.control(column.sticky),
|
|
65
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
65
66
|
});
|
|
66
67
|
default:
|
|
67
68
|
throw new Error(`Unknown column type: ${column.type}`);
|
|
@@ -77,43 +78,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
77
78
|
export function injectColumnsForm() {
|
|
78
79
|
return inject(ColumnsFormBuilder).build();
|
|
79
80
|
}
|
|
80
|
-
function
|
|
81
|
-
if (typeof
|
|
82
|
-
if (
|
|
81
|
+
function buildColumn(nameOrAction, i, sticky, stickyEnd) {
|
|
82
|
+
if (typeof nameOrAction === 'string') {
|
|
83
|
+
if (nameOrAction === '__actions') {
|
|
83
84
|
return {
|
|
84
85
|
type: 'actions',
|
|
85
86
|
name: `actions_${i}`,
|
|
86
87
|
visible: true,
|
|
87
|
-
width:
|
|
88
|
+
width: 40,
|
|
88
89
|
sticky,
|
|
90
|
+
stickyEnd,
|
|
89
91
|
};
|
|
90
92
|
}
|
|
91
|
-
else if (
|
|
93
|
+
else if (nameOrAction === '__checkbox') {
|
|
92
94
|
return {
|
|
93
95
|
type: 'checkbox',
|
|
94
96
|
name: 'checkbox',
|
|
95
97
|
visible: true,
|
|
96
98
|
width: 24,
|
|
97
99
|
sticky,
|
|
100
|
+
stickyEnd,
|
|
98
101
|
};
|
|
99
102
|
}
|
|
100
|
-
else if (
|
|
103
|
+
else if (nameOrAction.startsWith('__tree')) {
|
|
101
104
|
return {
|
|
102
105
|
type: 'tree',
|
|
103
|
-
name:
|
|
104
|
-
headerText: column.split('__tree_')?.[1] ?? '',
|
|
106
|
+
name: nameOrAction.split('__tree_')?.[1] ?? '__tree',
|
|
105
107
|
visible: true,
|
|
106
|
-
width:
|
|
108
|
+
width: 240,
|
|
107
109
|
sticky,
|
|
110
|
+
stickyEnd,
|
|
108
111
|
};
|
|
109
112
|
}
|
|
110
113
|
else {
|
|
111
114
|
return {
|
|
112
115
|
type: 'text',
|
|
113
|
-
name:
|
|
116
|
+
name: nameOrAction,
|
|
114
117
|
visible: true,
|
|
115
|
-
width:
|
|
118
|
+
width: 100,
|
|
116
119
|
sticky,
|
|
120
|
+
stickyEnd,
|
|
117
121
|
};
|
|
118
122
|
}
|
|
119
123
|
}
|
|
@@ -122,17 +126,20 @@ function toColumns(column, i, sticky) {
|
|
|
122
126
|
type: 'actions',
|
|
123
127
|
name: `actions_${i}`,
|
|
124
128
|
visible: true,
|
|
125
|
-
width:
|
|
129
|
+
width: 40,
|
|
126
130
|
sticky,
|
|
127
|
-
|
|
131
|
+
stickyEnd,
|
|
132
|
+
actions: wrapActions(nameOrAction),
|
|
128
133
|
};
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
|
-
export function buildColumns(
|
|
132
|
-
const
|
|
136
|
+
export function buildColumns(columnIdOrActions, { stickyStart = 0, stickyEnd = 0, } = {}) {
|
|
137
|
+
const columns = columnIdOrActions.map((columnIdOrAction, i) => {
|
|
138
|
+
return buildColumn(columnIdOrAction, i, i < stickyStart, i >= columnIdOrActions.length - stickyEnd);
|
|
139
|
+
});
|
|
133
140
|
return {
|
|
134
|
-
ids:
|
|
135
|
-
map:
|
|
141
|
+
ids: columns.map((column) => column.name),
|
|
142
|
+
map: columns.reduce((obj, column) => ({ ...obj, [column.name]: column }), {}),
|
|
136
143
|
};
|
|
137
144
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9mb3JtL2NvbHVtbnMvY29sdW1ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYSxXQUFXLEVBQXNDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBVyxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUF5Q3ZELE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7S0FnRXpEO0lBOURDLEtBQUssQ0FBQyxVQUE0QjtRQUNoQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ25CLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsTUFBZTtnQkFDckIsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJO2FBQ2Q7WUFDRCxFQUFFLEVBQUU7Z0JBQ0YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLEtBQUssRUFBRSxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRjtLQUNGO1FBQ0MsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RELEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FB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QyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1SZWNvcmQsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEFjdGlvbnMsIHdyYXBBY3Rpb25zIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL21vZGVsc1wiO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25zQ29sdW1uRm9ybSA9IEZvcm1Hcm91cDx7XG4gIHR5cGU6IEZvcm1Db250cm9sPCdhY3Rpb25zJz4sXG4gIHZpc2libGU6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxuICB3aWR0aDogRm9ybUNvbnRyb2w8bnVtYmVyPixcbiAgYWN0aW9uczogRm9ybUNvbnRyb2w8YW55PixcbiAgc3RpY2t5OiBGb3JtQ29udHJvbDxib29sZWFuPixcbn0+O1xuXG5leHBvcnQgdHlwZSBDaGVja2JveENvbHVtbkZvcm0gPSBGb3JtR3JvdXA8e1xuICB0eXBlOiBGb3JtQ29udHJvbDwnY2hlY2tib3gnPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIFRleHRDb2x1bW5Gb3JtID0gRm9ybUdyb3VwPHtcbiAgdHlwZTogRm9ybUNvbnRyb2w8J3RleHQnPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIFRyZWVDb2x1bW5Gb3JtID0gRm9ybUdyb3VwPHtcbiAgdHlwZTogRm9ybUNvbnRyb2w8J3RyZWUnPixcbiAgaGVhZGVyVGV4dDogRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIENvbHVtbnNGb3JtID0gRm9ybUFycmF5PEZvcm1SZWNvcmQ8QWN0aW9uc0NvbHVtbkZvcm0gfCBDaGVja2JveENvbHVtbkZvcm0gfCBUZXh0Q29sdW1uRm9ybSB8IFRyZWVDb2x1bW5Gb3JtPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0Zvcm1WYWx1ZSB7XG4gIGlkczogc3RyaW5nW10sXG4gIG1hcDogeyBba2V5OiBzdHJpbmddOiBDb2x1bW4gfSxcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQ29sdW1uc0Zvcm1CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZTtcblxuICBidWlsZChjb2x1bW5zOiBDb2x1bW5zRm9ybVZhbHVlID0ge1xuICAgIGlkczogWydpZCcsICd1c2VyJ10sXG4gICAgbWFwOiB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIHR5cGU6ICd0ZXh0JyBhcyBjb25zdCxcbiAgICAgICAgaGVhZGVyVGV4dDogJ1VzZXInLFxuICAgICAgICB3aWR0aDogODAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBoZWFkZXJUZXh0OiAnSUQnLFxuICAgICAgICB3aWR0aDogODAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZHM6IHRoaXMuZmIuY29udHJvbChjb2x1bW5zLmlkcywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBtYXA6IHRoaXMuZmIuZ3JvdXAoT2JqZWN0LmVudHJpZXMoY29sdW1ucy5tYXApLnJlZHVjZSgob2JqLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIC4uLm9iaixcbiAgICAgICAgW2tleV06IHRoaXMuYnVpbGRDb2x1bW5Gb3JtKHZhbHVlKSxcbiAgICAgIH0pLCB7fSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQ29sdW1uRm9ybShjb2x1bW46IENvbHVtbikge1xuICAgIHN3aXRjaCAoY29sdW1uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RyZWUnOlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ3RyZWUnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIGhlYWRlclRleHQ6IHRoaXMuZmIuY29udHJvbChjb2x1bW4uaGVhZGVyVGV4dCksXG4gICAgICAgICAgdmlzaWJsZTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi52aXNpYmxlKSxcbiAgICAgICAgICB3aWR0aDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi53aWR0aCksXG4gICAgICAgICAgc3RpY2t5OiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnN0aWNreSksXG4gICAgICAgIH0pIGFzIFRyZWVDb2x1bW5Gb3JtO1xuICAgICAgY2FzZSAndGV4dCc6IFxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ3RleHQnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuZmIuY29udHJvbChjb2x1bW4udmlzaWJsZSksXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZmIuY29udHJvbChjb2x1bW4ud2lkdGgpLFxuICAgICAgICAgIHN0aWNreTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3kpLFxuICAgICAgICB9KSBhcyBUZXh0Q29sdW1uRm9ybTtcbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHR5cGU6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6ICdjaGVja2JveCcgYXMgY29uc3QsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgICAgICAgdmlzaWJsZTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi52aXNpYmxlKSxcbiAgICAgICAgICB3aWR0aDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi53aWR0aCksXG4gICAgICAgICAgc3RpY2t5OiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnN0aWNreSksXG4gICAgICAgIH0pIGFzIENoZWNrYm94Q29sdW1uRm9ybTtcbiAgICAgIGNhc2UgJ2FjdGlvbnMnOlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ2FjdGlvbnMnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuZmIuY29udHJvbChjb2x1bW4udmlzaWJsZSksXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZmIuY29udHJvbChjb2x1bW4ud2lkdGgpLFxuICAgICAgICAgIGFjdGlvbnM6IHRoaXMuZmIuY29udHJvbChjb2x1bW4uYWN0aW9ucyksXG4gICAgICAgICAgc3RpY2t5OiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnN0aWNreSksXG4gICAgICAgIH0pIGFzIEFjdGlvbnNDb2x1bW5Gb3JtO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbHVtbiB0eXBlOiAkeyhjb2x1bW4gYXMgYW55KS50eXBlfWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q29sdW1uc0Zvcm0oKSB7XG4gIHJldHVybiBpbmplY3QoQ29sdW1uc0Zvcm1CdWlsZGVyKS5idWlsZCgpO1xufVxuXG5mdW5jdGlvbiB0b0NvbHVtbnMoY29sdW1uOiAoc3RyaW5nIHwgQWN0aW9ucyksIGk6IG51bWJlciwgc3RpY2t5OiBib29sZWFuKTogQ29sdW1uIHtcbiAgaWYgKHR5cGVvZiBjb2x1bW4gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGNvbHVtbiA9PT0gJ19fYWN0aW9ucycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdhY3Rpb25zJyxcbiAgICAgICAgbmFtZTogYGFjdGlvbnNfJHtpfWAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sdW1uID09PSAnX19jaGVja2JveCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIG5hbWU6ICdjaGVja2JveCcsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnN0YXJ0c1dpdGgoJ19fdHJlZScpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndHJlZScsXG4gICAgICAgIG5hbWU6IGNvbHVtbi5zcGxpdCgnX190cmVlXycpPy5bMV0gPz8gJ19fdHJlZScsXG4gICAgICAgIGhlYWRlclRleHQ6IGNvbHVtbi5zcGxpdCgnX190cmVlXycpPy5bMV0gPz8gJycsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiAzMjAsXG4gICAgICAgIHN0aWNreSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBuYW1lOiBjb2x1bW4sXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgfTtcbiAgICB9ICAgICAgXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdhY3Rpb25zJyxcbiAgICAgIG5hbWU6IGBhY3Rpb25zXyR7aX1gLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIHdpZHRoOiA4MCxcbiAgICAgIHN0aWNreSxcbiAgICAgIGFjdGlvbnM6IHdyYXBBY3Rpb25zKGNvbHVtbiksXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb2x1bW5zKGNvbHVtbnM6IChzdHJpbmcgfCBBY3Rpb25zKVtdLCB7XG4gIHN0aWNreVN0YXJ0ID0gMCxcbiAgc3RpY2t5RW5kID0gMCxcbn06IHtcbiAgc3RpY2t5U3RhcnQ/OiBudW1iZXIsXG4gIHN0aWNreUVuZD86IG51bWJlcixcbn0gPSB7fSk6IHtpZHM6IHN0cmluZ1tdLCBtYXA6IHtba2V5OiBzdHJpbmddOiBDb2x1bW59fSB7XG4gIGNvbnN0IF9jb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbiwgaSkgPT4gdG9Db2x1bW5zKGNvbHVtbiwgaSwgaSA8IHN0aWNreVN0YXJ0IHx8IGkgPj0gY29sdW1ucy5sZW5ndGggLSBzdGlja3lFbmQpKTtcbiAgcmV0dXJuIHtcbiAgICBpZHM6IF9jb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4ubmFtZSksXG4gICAgbWFwOiBfY29sdW1ucy5yZWR1Y2UoKG9iaiwgY29sdW1uKSA9PiAoey4uLm9iaiwgW2NvbHVtbi5uYW1lXTogY29sdW1ufSksIHt9KSxcbiAgfTtcbn0iXX0=
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9mb3JtL2NvbHVtbnMvY29sdW1ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYSxXQUFXLEVBQXNDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBVyxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUE0Q3ZELE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7S0FpRXpEO0lBL0RDLEtBQUssQ0FBQyxVQUE0QjtRQUNoQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ25CLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsTUFBZTtnQkFDckIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsT0FBTyxFQUFFLElBQUk7YUFDZDtZQUNELEVBQUUsRUFBRTtnQkFDRixJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsRUFBRTtnQkFDVCxPQUFPLEVBQUUsSUFBSTthQUNkO1NBQ0Y7S0FDRjtRQUNDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDbkIsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUN0RCxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENB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QUFnQixFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDdEcsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0wsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDekMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7S0FDNUUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybVJlY29yZCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgQWN0aW9ucywgd3JhcEFjdGlvbnMgfSBmcm9tIFwiQG5nLWF0b21pYy9jb3JlXCI7XG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vbW9kZWxzXCI7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbnNDb2x1bW5Gb3JtID0gRm9ybUdyb3VwPHtcbiAgdHlwZTogRm9ybUNvbnRyb2w8J2FjdGlvbnMnPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBhY3Rpb25zOiBGb3JtQ29udHJvbDxhbnk+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxuICBzdGlja3lFbmQ6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIENoZWNrYm94Q29sdW1uRm9ybSA9IEZvcm1Hcm91cDx7XG4gIHR5cGU6IEZvcm1Db250cm9sPCdjaGVja2JveCc+LFxuICB2aXNpYmxlOiBGb3JtQ29udHJvbDxib29sZWFuPixcbiAgd2lkdGg6IEZvcm1Db250cm9sPG51bWJlcj4sXG4gIHN0aWNreTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHN0aWNreUVuZDogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG59PjtcblxuZXhwb3J0IHR5cGUgVGV4dENvbHVtbkZvcm0gPSBGb3JtR3JvdXA8e1xuICB0eXBlOiBGb3JtQ29udHJvbDwndGV4dCc+LFxuICB2aXNpYmxlOiBGb3JtQ29udHJvbDxib29sZWFuPixcbiAgd2lkdGg6IEZvcm1Db250cm9sPG51bWJlcj4sXG4gIHN0aWNreTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHN0aWNreUVuZDogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG59PjtcblxuZXhwb3J0IHR5cGUgVHJlZUNvbHVtbkZvcm0gPSBGb3JtR3JvdXA8e1xuICB0eXBlOiBGb3JtQ29udHJvbDwndHJlZSc+LFxuICB2aXNpYmxlOiBGb3JtQ29udHJvbDxib29sZWFuPixcbiAgd2lkdGg6IEZvcm1Db250cm9sPG51bWJlcj4sXG4gIHN0aWNreTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHN0aWNreUVuZDogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG59PjtcblxuZXhwb3J0IHR5cGUgQ29sdW1uc0Zvcm0gPSBGb3JtQXJyYXk8Rm9ybVJlY29yZDxBY3Rpb25zQ29sdW1uRm9ybSB8IENoZWNrYm94Q29sdW1uRm9ybSB8IFRleHRDb2x1bW5Gb3JtIHwgVHJlZUNvbHVtbkZvcm0+PjtcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zRm9ybVZhbHVlIHtcbiAgaWRzOiBzdHJpbmdbXSxcbiAgbWFwOiB7IFtrZXk6IHN0cmluZ106IENvbHVtbiB9LFxufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBDb2x1bW5zRm9ybUJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlO1xuXG4gIGJ1aWxkKGNvbHVtbnM6IENvbHVtbnNGb3JtVmFsdWUgPSB7XG4gICAgaWRzOiBbJ2lkJywgJ3VzZXInXSxcbiAgICBtYXA6IHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgdHlwZTogJ3RleHQnIGFzIGNvbnN0LFxuICAgICAgICB3aWR0aDogODAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICB3aWR0aDogODAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZHM6IHRoaXMuZmIuY29udHJvbChjb2x1bW5zLmlkcywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBtYXA6IHRoaXMuZmIuZ3JvdXAoT2JqZWN0LmVudHJpZXMoY29sdW1ucy5tYXApLnJlZHVjZSgob2JqLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIC4uLm9iaixcbiAgICAgICAgW2tleV06IHRoaXMuYnVpbGRDb2x1bW5Gb3JtKHZhbHVlKSxcbiAgICAgIH0pLCB7fSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQ29sdW1uRm9ybShjb2x1bW46IENvbHVtbikge1xuICAgIHN3aXRjaCAoY29sdW1uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RyZWUnOlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ3RyZWUnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuZmIuY29udHJvbChjb2x1bW4udmlzaWJsZSksXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZmIuY29udHJvbChjb2x1bW4ud2lkdGgpLFxuICAgICAgICAgIHN0aWNreTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3kpLFxuICAgICAgICAgIHN0aWNreUVuZDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3lFbmQpLFxuICAgICAgICB9KSBhcyBUcmVlQ29sdW1uRm9ybTtcbiAgICAgIGNhc2UgJ3RleHQnOiBcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHR5cGU6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6ICd0ZXh0JyBhcyBjb25zdCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICAgICAgICB2aXNpYmxlOiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnZpc2libGUpLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLndpZHRoKSxcbiAgICAgICAgICBzdGlja3k6IHRoaXMuZmIuY29udHJvbChjb2x1bW4uc3RpY2t5KSxcbiAgICAgICAgICBzdGlja3lFbmQ6IHRoaXMuZmIuY29udHJvbChjb2x1bW4uc3RpY2t5RW5kKSxcbiAgICAgICAgfSkgYXMgVGV4dENvbHVtbkZvcm07XG4gICAgICBjYXNlICdjaGVja2JveCc6XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLmZiLmNvbnRyb2woe3ZhbHVlOiAnY2hlY2tib3gnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuZmIuY29udHJvbChjb2x1bW4udmlzaWJsZSksXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZmIuY29udHJvbChjb2x1bW4ud2lkdGgpLFxuICAgICAgICAgIHN0aWNreTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3kpLFxuICAgICAgICAgIHN0aWNreUVuZDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3lFbmQpLFxuICAgICAgICB9KSBhcyBDaGVja2JveENvbHVtbkZvcm07XG4gICAgICBjYXNlICdhY3Rpb25zJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHR5cGU6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6ICdhY3Rpb25zJyBhcyBjb25zdCwgZGlzYWJsZWQ6IHRydWV9KSxcbiAgICAgICAgICB2aXNpYmxlOiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnZpc2libGUpLFxuICAgICAgICAgIHdpZHRoOiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLndpZHRoKSxcbiAgICAgICAgICBhY3Rpb25zOiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLmFjdGlvbnMpLFxuICAgICAgICAgIHN0aWNreTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3kpLFxuICAgICAgICAgIHN0aWNreUVuZDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3lFbmQpLFxuICAgICAgICB9KSBhcyBBY3Rpb25zQ29sdW1uRm9ybTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjb2x1bW4gdHlwZTogJHsoY29sdW1uIGFzIGFueSkudHlwZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENvbHVtbnNGb3JtKCkge1xuICByZXR1cm4gaW5qZWN0KENvbHVtbnNGb3JtQnVpbGRlcikuYnVpbGQoKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRDb2x1bW4obmFtZU9yQWN0aW9uOiAoc3RyaW5nIHwgQWN0aW9ucyksIGk6IG51bWJlciwgc3RpY2t5OiBib29sZWFuLCBzdGlja3lFbmQ6IGJvb2xlYW4pOiBDb2x1bW4ge1xuICBpZiAodHlwZW9mIG5hbWVPckFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAobmFtZU9yQWN0aW9uID09PSAnX19hY3Rpb25zJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ2FjdGlvbnMnLFxuICAgICAgICBuYW1lOiBgYWN0aW9uc18ke2l9YCxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgd2lkdGg6IDQwLFxuICAgICAgICBzdGlja3ksXG4gICAgICAgIHN0aWNreUVuZCxcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5hbWVPckFjdGlvbiA9PT0gJ19fY2hlY2tib3gnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuICAgICAgICBuYW1lOiAnY2hlY2tib3gnLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIHN0aWNreSxcbiAgICAgICAgc3RpY2t5RW5kLFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmFtZU9yQWN0aW9uLnN0YXJ0c1dpdGgoJ19fdHJlZScpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndHJlZScsXG4gICAgICAgIG5hbWU6IG5hbWVPckFjdGlvbi5zcGxpdCgnX190cmVlXycpPy5bMV0gPz8gJ19fdHJlZScsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiAyNDAsXG4gICAgICAgIHN0aWNreSxcbiAgICAgICAgc3RpY2t5RW5kLFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIG5hbWU6IG5hbWVPckFjdGlvbixcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgICBzdGlja3lFbmQsXG4gICAgICB9O1xuICAgIH0gICAgICBcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2FjdGlvbnMnLFxuICAgICAgbmFtZTogYGFjdGlvbnNfJHtpfWAsXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgd2lkdGg6IDQwLFxuICAgICAgc3RpY2t5LFxuICAgICAgc3RpY2t5RW5kLFxuICAgICAgYWN0aW9uczogd3JhcEFjdGlvbnMobmFtZU9yQWN0aW9uKSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZENvbHVtbnMoY29sdW1uSWRPckFjdGlvbnM6IChzdHJpbmcgfCBBY3Rpb25zKVtdLCB7XG4gIHN0aWNreVN0YXJ0ID0gMCxcbiAgc3RpY2t5RW5kID0gMCxcbn06IHtcbiAgc3RpY2t5U3RhcnQ/OiBudW1iZXIsXG4gIHN0aWNreUVuZD86IG51bWJlcixcbn0gPSB7fSk6IHtpZHM6IHN0cmluZ1tdLCBtYXA6IHtba2V5OiBzdHJpbmddOiBDb2x1bW59fSB7XG4gIGNvbnN0IGNvbHVtbnMgPSBjb2x1bW5JZE9yQWN0aW9ucy5tYXAoKGNvbHVtbklkT3JBY3Rpb24sIGkpID0+IHtcbiAgICByZXR1cm4gYnVpbGRDb2x1bW4oY29sdW1uSWRPckFjdGlvbiwgaSwgaSA8IHN0aWNreVN0YXJ0LCBpID49IGNvbHVtbklkT3JBY3Rpb25zLmxlbmd0aCAtIHN0aWNreUVuZCk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGlkczogY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gY29sdW1uLm5hbWUpLFxuICAgIG1hcDogY29sdW1ucy5yZWR1Y2UoKG9iaiwgY29sdW1uKSA9PiAoey4uLm9iaiwgW2NvbHVtbi5uYW1lXTogY29sdW1ufSksIHt9KSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -30,10 +30,14 @@ export class JsonSchemaFormUtils {
|
|
|
30
30
|
for (const key in schema.properties) {
|
|
31
31
|
const property = schema.properties[key];
|
|
32
32
|
const validators = [];
|
|
33
|
-
if (schema.required && schema.required.includes(key)) {
|
|
33
|
+
if (schema.required && schema.required.includes(key) && !property.nullable) {
|
|
34
34
|
validators.push(Validators.required);
|
|
35
35
|
}
|
|
36
36
|
group[key] = this.buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
|
|
37
|
+
// MEMO(@NozomuMiyamoto): Arrayなら追加用のダミーコントロールを追加する
|
|
38
|
+
if (property.type === 'array') {
|
|
39
|
+
group[`${key}__add_action`] = fb.control(property);
|
|
40
|
+
}
|
|
37
41
|
}
|
|
38
42
|
return fb.group(group);
|
|
39
43
|
}
|
|
@@ -42,34 +46,37 @@ export class JsonSchemaFormUtils {
|
|
|
42
46
|
return fb.array([]);
|
|
43
47
|
}
|
|
44
48
|
console.debug('[buildFormArrayByJsonSchema] schema:', schema);
|
|
45
|
-
const
|
|
49
|
+
const formArray = fb.array([
|
|
46
50
|
this.buildFormGroupByJsonSchema(schema.items, { fb }),
|
|
47
51
|
]);
|
|
48
|
-
return
|
|
52
|
+
return formArray;
|
|
49
53
|
}
|
|
50
54
|
static buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
55
|
+
switch (property.type) {
|
|
56
|
+
case 'string': switch (property.format) {
|
|
57
|
+
case 'date':
|
|
58
|
+
case 'date-time':
|
|
59
|
+
return fb.control(value ?? property.default ?? null, { nonNullable: !property.nullable, validators });
|
|
60
|
+
case 'binary':
|
|
61
|
+
return fb.control(value ?? property.default ?? null, { nonNullable: !property.nullable, validators });
|
|
62
|
+
case 'email':
|
|
63
|
+
return fb.control(value ?? property.default ?? '', {
|
|
64
|
+
nonNullable: !property.nullable,
|
|
65
|
+
validators: [...validators, Validators.email],
|
|
66
|
+
});
|
|
67
|
+
default:
|
|
68
|
+
return fb.control(value ?? property.default ?? '', { nonNullable: !property.nullable, validators });
|
|
60
69
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
else if (property.type === 'array') {
|
|
72
|
-
return this.buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
70
|
+
case 'boolean':
|
|
71
|
+
return fb.control(value ?? property.default ?? false, { nonNullable: !property.nullable, validators });
|
|
72
|
+
case 'integer':
|
|
73
|
+
return fb.control(value ?? property.default ?? 0, { nonNullable: !property.nullable, validators });
|
|
74
|
+
case 'number':
|
|
75
|
+
return fb.control(value ?? property.default ?? 0, { nonNullable: !property.nullable, validators });
|
|
76
|
+
case 'object':
|
|
77
|
+
return this.buildFormGroupByJsonSchema(property, { fb, value });
|
|
78
|
+
case 'array':
|
|
79
|
+
return this.buildFormArrayByJsonSchema(property, { fb, value: value });
|
|
73
80
|
}
|
|
74
81
|
}
|
|
75
82
|
static buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
@@ -78,6 +85,28 @@ export class JsonSchemaFormUtils {
|
|
|
78
85
|
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
79
86
|
};
|
|
80
87
|
}
|
|
88
|
+
static buildFormFieldByProperty(property) {
|
|
89
|
+
switch (property.type) {
|
|
90
|
+
case 'string': {
|
|
91
|
+
if (property.enum) {
|
|
92
|
+
return { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
|
|
93
|
+
}
|
|
94
|
+
else if (['date-time', 'date'].includes(property.format)) {
|
|
95
|
+
return { type: 'date' };
|
|
96
|
+
}
|
|
97
|
+
else if (property.format === 'binary') {
|
|
98
|
+
return { type: 'file' };
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return { type: 'text' };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
case 'boolean': return { type: 'select', options: [{ value: true, name: 'はい' }, { value: false, name: 'いいえ' }] };
|
|
105
|
+
case 'integer': return { type: 'number' };
|
|
106
|
+
case 'number': return { type: 'number' };
|
|
107
|
+
default: return { type: property.type };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
81
110
|
static buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
82
111
|
if (!schema || !schema.properties) {
|
|
83
112
|
return {
|
|
@@ -87,61 +116,51 @@ export class JsonSchemaFormUtils {
|
|
|
87
116
|
const fieldMap = {};
|
|
88
117
|
for (const key in schema.properties) {
|
|
89
118
|
const property = schema.properties[key];
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
else if (property.format === 'binary') {
|
|
98
|
-
fieldMap[key] = { type: 'file' };
|
|
119
|
+
switch (property.type) {
|
|
120
|
+
case 'object': {
|
|
121
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
122
|
+
for (const childKey in childFieldMap) {
|
|
123
|
+
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
99
126
|
}
|
|
100
|
-
|
|
101
|
-
|
|
127
|
+
case 'array': {
|
|
128
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);
|
|
129
|
+
for (const childKey in childFieldMap) {
|
|
130
|
+
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
131
|
+
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
102
134
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
106
|
-
for (const childKey in childFieldMap) {
|
|
107
|
-
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
135
|
+
default: {
|
|
136
|
+
fieldMap[key] = this.buildFormFieldByProperty(property);
|
|
108
137
|
}
|
|
109
138
|
}
|
|
110
|
-
else if (property.type === 'array') {
|
|
111
|
-
const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);
|
|
112
|
-
for (const childKey in childFieldMap) {
|
|
113
|
-
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
114
|
-
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
fieldMap[key] = { type: property.type };
|
|
119
|
-
}
|
|
120
|
-
// const type = ? 'date' : property.type;
|
|
121
139
|
}
|
|
122
140
|
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
123
|
-
|
|
141
|
+
console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);
|
|
142
|
+
return { ...fieldMap, ...options.merge };
|
|
124
143
|
}
|
|
125
144
|
}
|
|
126
145
|
export function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
127
146
|
const schema = targetConstructorToSchema(klass);
|
|
128
|
-
return
|
|
147
|
+
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
129
148
|
}
|
|
130
149
|
export function buildFormFieldMap(klass, options) {
|
|
131
150
|
const schema = targetConstructorToSchema(klass);
|
|
132
|
-
const map =
|
|
151
|
+
const map = JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);
|
|
133
152
|
return merge(map, options.merge);
|
|
134
153
|
}
|
|
135
154
|
export function buildForm(klass, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
136
155
|
const schema = targetConstructorToSchema(klass);
|
|
137
156
|
return {
|
|
138
|
-
form:
|
|
139
|
-
fieldMap:
|
|
157
|
+
form: JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
158
|
+
fieldMap: JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
140
159
|
};
|
|
141
160
|
}
|
|
142
161
|
export class JsonSchemaFormService {
|
|
143
162
|
constructor() {
|
|
144
|
-
this.fb = inject(FormBuilder)
|
|
163
|
+
this.fb = inject(FormBuilder);
|
|
145
164
|
}
|
|
146
165
|
build(schema, { fb = this.fb, value = {}, } = {}) {
|
|
147
166
|
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
@@ -156,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
156
175
|
type: Injectable,
|
|
157
176
|
args: [{ providedIn: 'root' }]
|
|
158
177
|
}] });
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBbUIsS0FBUTtRQUNuRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMs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QUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE9BQU87UUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUMxRCxRQUFRLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsQ0FBQztLQUN4RSxDQUFDO0FBQ0osQ0FBQztBQUlELE1BQU0sT0FBTyxxQkFBcUI7SUFEbEM7UUFFVSxPQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQztLQW9COUM7SUFsQkMsS0FBSyxDQUFDLE1BQWtCLEVBQUUsRUFDeEIsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLEVBQ1osS0FBSyxHQUFHLEVBQUUsTUFJUixFQUFFO1FBQ0osT0FBTyxtQkFBbUIsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQsYUFBYSxDQUNYLE1BQWtCLEVBQ2xCLFVBRUksRUFBRTtRQUVOLE9BQU8sbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVFLENBQUM7OEdBcEJVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFIsTUFBTTs7MkZBQ25CLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgTm9uTnVsbGFibGVGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgSnNvblNjaGVtYSB9IGZyb20gXCJqc29uLXNjaGVtYS1saWJyYXJ5XCI7XG5pbXBvcnQgeyB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hIH0gZnJvbSAnLi9qc29uLXNjaGVtYSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtVXRpbHMge1xuICBzdGF0aWMgcmVtb3ZlT2JqZWN0UGVyY2VudDxUIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVCk6IGFueSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCclJykgJiYgdmFsdWUuZW5kc1dpdGgoJyUnKSkge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCclJykpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZS5zbGljZSgxKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWUuc2xpY2UoMCwgLTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hXSBzY2hlbWE6Jywgc2NoZW1hKTtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hPy5wcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4gZmIuZ3JvdXAoe30pO1xuICAgIH1cbiAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgXG4gICAgICBpZiAoc2NoZW1hLnJlcXVpcmVkICYmIHNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgIH1cbiAgICAgIGdyb3VwW2tleV0gPSB0aGlzLmJ1aWxkRm9ybUJ5SnNvblNjaGVtYVByb3BlcnR5KHByb3BlcnR5LCB7ZmIsIHZhbHVlOiB2YWx1ZT8uW2tleV0sIHZhbGlkYXRvcnN9KTtcbiAgICB9XG4gICAgcmV0dXJuIGZiLmdyb3VwKGdyb3VwKTtcbiAgfVxuICBcbiAgc3RhdGljIGJ1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IFtdLFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBhbnlbXSxcbiAgfSA9IHt9KTogYW55IHtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hLml0ZW1zKSB7XG4gICAgICByZXR1cm4gZmIuYXJyYXkoW10pO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICAgIGNvbnN0IGFycmF5ID0gZmIuYXJyYXkoW1xuICAgICAgdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEuaXRlbXMsIHtmYn0pLFxuICAgIF0pXG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG4gIFxuICBzdGF0aWMgYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHk6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gICAgdmFsdWUgPSBudWxsLFxuICAgIHZhbGlkYXRvcnMgPSBbXSxcbiAgfToge1xuICAgIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICAgIHZhbHVlPzogb2JqZWN0IHwgb2JqZWN0W10sXG4gICAgdmFsaWRhdG9ycz86IGFueVtdLFxuICB9ID0ge30pOiBhbnkge1xuICAgIGlmIChwcm9wZXJ0eS50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHByb3BlcnR5LmZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyBudWxsLCB2YWxpZGF0b3JzKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnYmluYXJ5Jykge1xuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IG51bGwsIHZhbGlkYXRvcnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAnJywgdmFsaWRhdG9ycyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnaW50ZWdlcicpIHtcbiAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gMCwgdmFsaWRhdG9ycyk7XG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAwLCB2YWxpZGF0b3JzKTtcbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogKHZhbHVlIHx8IHt9KSBhcyBvYmplY3R9KTtcbiAgICB9XG4gICAgZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWEocHJvcGVydHksIHtmYiwgdmFsdWU6ICh2YWx1ZSB8fCBbXSkgYXMgYW55W119KTtcbiAgICB9XG4gIH1cbiAgXG5cbiAgc3RhdGljIGJ1aWxkRm9ybUJ5SnNvblNjaGVtYShzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gICAgdmFsdWUgPSB7fSxcbiAgICBmaWVsZE1hcCA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gICAgZmllbGRNYXA/OiBvYmplY3QsXG4gIH0gPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvcm06IHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSksXG4gICAgICBmaWVsZE1hcDogdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKFxuICAgIHNjaGVtYTogSnNvblNjaGVtYSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtZXJnZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgfSA9IHt9LFxuICApOiBhbnkge1xuICAgIGlmICghc2NoZW1hIHx8ICFzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHsgdHlwZTogJ2hpZGRlbicgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGZpZWxkTWFwOiBhbnkgPSB7fTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBzY2hlbWEucHJvcGVydGllc1trZXldO1xuICAgICAgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmIChwcm9wZXJ0eS5lbnVtKSB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHsgdHlwZTogJ3NlbGVjdCcsIG9wdGlvbnM6IHByb3BlcnR5LmVudW0ubWFwKCh2OiBzdHJpbmcpID0+ICh7IHZhbHVlOiB2LCBuYW1lOiB2IH0pKSB9O1xuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmZvcm1hdCA9PT0gJ2RhdGUtdGltZScpIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZGF0ZScgfTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdiaW5hcnknKSB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHsgdHlwZTogJ2ZpbGUnIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHsgdHlwZTogJ3RleHQnIH07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgY2hpbGRGaWVsZE1hcCA9IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHksIG9wdGlvbnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgICBmaWVsZE1hcFtgJHtrZXl9LiR7Y2hpbGRLZXl9YF0gPSBjaGlsZEZpZWxkTWFwW2NoaWxkS2V5XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkRmllbGRNYXAgPSB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHByb3BlcnR5Lml0ZW1zLCBvcHRpb25zKTtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZEtleSBpbiBjaGlsZEZpZWxkTWFwKSB7XG4gICAgICAgICAgLy8gVE9ETzog5q2j6KaP6KGo54++44Gn44OR44K544Oe44OD44OB44KS5Yik5a6a44Gn44GN44KL44KI44GG44Gr44GZ44KL44CCXG4gICAgICAgICAgZmllbGRNYXBbYCR7a2V5fS5cXFxcZCsuJHtjaGlsZEtleX1gXSA9IGNoaWxkRmllbGRNYXBbY2hpbGRLZXldO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiBwcm9wZXJ0eS50eXBlIH07XG4gICAgICB9XG4gICAgICAvLyBjb25zdCB0eXBlID0gID8gJ2RhdGUnIDogcHJvcGVydHkudHlwZTtcbiAgICB9XG4gIFxuICAgIGNvbnNvbGUuZGVidWcoJ1tidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYV0gZmllbGRNYXA6JywgZmllbGRNYXApO1xuICBcbiAgICByZXR1cm4gbWVyZ2UoZmllbGRNYXAsIG9wdGlvbnMubWVyZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1Hcm91cChrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUsXG59OiB7XG4gIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICB2YWx1ZT86IG9iamVjdCxcbn0pOiBGb3JtR3JvdXAge1xuICBjb25zdCBzY2hlbWEgPSB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hKGtsYXNzKTtcbiAgcmV0dXJuIHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUZpZWxkTWFwKGtsYXNzOiBuZXcoKSA9PiBhbnksIG9wdGlvbnM6IHtcbiAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxufSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICBjb25zdCBtYXAgPSB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gIHJldHVybiBtZXJnZShtYXAsIG9wdGlvbnMubWVyZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtKGtsYXNzOiBuZXcoKSA9PiBhbnksIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSA9IHt9LFxuICBmaWVsZE1hcCA9IHt9LFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG4gIGZpZWxkTWFwPzogb2JqZWN0LFxufSA9IHt9KTogYW55IHtcbiAgY29uc3Qgc2NoZW1hID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShrbGFzcyk7XG4gIHJldHVybiB7XG4gICAgZm9ybTogdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEsIHtmYiwgdmFsdWV9KSxcbiAgICBmaWVsZE1hcDogdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgfTtcbn1cblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlO1xuXG4gIGJ1aWxkKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gdGhpcy5mYixcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIEpzb25TY2hlbWFGb3JtVXRpbHMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSk7XG4gIH1cblxuICBidWlsZEZpZWxkTWFwKFxuICAgIHNjaGVtYTogSnNvblNjaGVtYSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBtZXJnZT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gICAgfSA9IHt9LFxuICApOiBhbnkge1xuICAgIHJldHVybiBKc29uU2NoZW1hRm9ybVV0aWxzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUdsQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBbUIsS0FBUTtRQUNuRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMs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QyxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFDcEMsS0FBSyxHQUFHLEVBQUUsRUFDVixRQUFRLEdBQUcsRUFBRSxNQUtYLEVBQUU7SUFDSixNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUMsQ0FBQztRQUN6RSxRQUFRLEVBQUUsbUJBQW1CLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDO0tBQ3ZGLENBQUM7QUFDSixDQUFDO0FBSUQsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVVLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FvQmxDO0lBbEJDLEtBQUssQ0FBQyxNQUFrQixFQUFFLEVBQ3hCLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUNaLEtBQUssR0FBRyxFQUFFLE1BSVIsRUFBRTtRQUNKLE9BQU8sbUJBQW1CLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELGFBQWEsQ0FDWCxNQUFrQixFQUNsQixVQUVJLEVBQUU7UUFFTixPQUFPLG1CQUFtQixDQUFDLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDOzhHQXBCVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEpzb25TY2hlbWEgfSBmcm9tIFwianNvbi1zY2hlbWEtbGlicmFyeVwiO1xuaW1wb3J0IHsgdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSB9IGZyb20gJy4vanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBGb3JtRmllbGRNYXAgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vcGlwZXMvc21hcnQtZmllbGRcIjtcblxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtVXRpbHMge1xuICBzdGF0aWMgcmVtb3ZlT2JqZWN0UGVyY2VudDxUIGV4dGVuZHMgb2JqZWN0Pih2YWx1ZTogVCk6IGFueSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCclJykgJiYgdmFsdWUuZW5kc1dpdGgoJyUnKSkge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5zdGFydHNXaXRoKCclJykpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZS5zbGljZSgxKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWUuc2xpY2UoMCwgLTEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hXSBzY2hlbWE6Jywgc2NoZW1hKTtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hPy5wcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4gZmIuZ3JvdXAoe30pO1xuICAgIH1cbiAgICBjb25zdCBncm91cDogYW55ID0ge307XG4gICAgXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBbXTtcbiAgXG4gICAgICBpZiAoc2NoZW1hLnJlcXVpcmVkICYmIHNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhrZXkpICYmICFwcm9wZXJ0eS5udWxsYWJsZSkge1xuICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICB9XG4gICAgICBncm91cFtrZXldID0gdGhpcy5idWlsZEZvcm1CeUpzb25TY2hlbWFQcm9wZXJ0eShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogdmFsdWU/LltrZXldLCB2YWxpZGF0b3JzfSk7XG4gICAgICAvLyBNRU1PKEBOb3pvbXVNaXlhbW90byk6IEFycmF544Gq44KJ6L+95Yqg55So44Gu44OA44Of44O844Kz44Oz44OI44Ot44O844Or44KS6L+95Yqg44GZ44KLXG4gICAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBncm91cFtgJHtrZXl9X19hZGRfYWN0aW9uYF0gPSBmYi5jb250cm9sKHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZiLmdyb3VwKGdyb3VwKTtcbiAgfVxuICBcbiAgc3RhdGljIGJ1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IFtdLFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBhbnlbXSxcbiAgfSA9IHt9KTogYW55IHtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hLml0ZW1zKSB7XG4gICAgICByZXR1cm4gZmIuYXJyYXkoW10pO1xuICAgIH1cbiAgICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICAgIGNvbnN0IGZvcm1BcnJheSA9IGZiLmFycmF5KFtcbiAgICAgIHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLml0ZW1zLCB7ZmJ9KSxcbiAgICBdKTtcbiAgICByZXR1cm4gZm9ybUFycmF5O1xuICB9XG4gIFxuICBzdGF0aWMgYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHk6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gICAgdmFsdWUgPSBudWxsLFxuICAgIHZhbGlkYXRvcnMgPSBbXSxcbiAgfToge1xuICAgIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICAgIHZhbHVlPzogb2JqZWN0IHwgb2JqZWN0W10sXG4gICAgdmFsaWRhdG9ycz86IGFueVtdLFxuICB9ID0ge30pOiBhbnkge1xuICAgIHN3aXRjaCAocHJvcGVydHkudHlwZSkge1xuICAgICAgY2FzZSAnc3RyaW5nJzogc3dpdGNoIChwcm9wZXJ0eS5mb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyBudWxsLCB7IG5vbk51bGxhYmxlOiAhcHJvcGVydHkubnVsbGFibGUsIHZhbGlkYXRvcnMgfSk7XG4gICAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyBudWxsLCB7IG5vbk51bGxhYmxlOiAhcHJvcGVydHkubnVsbGFibGUsIHZhbGlkYXRvcnMgfSk7XG4gICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/ICcnLCB7XG4gICAgICAgICAgICBub25OdWxsYWJsZTogIXByb3BlcnR5Lm51bGxhYmxlLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogWy4uLnZhbGlkYXRvcnMsIFZhbGlkYXRvcnMuZW1haWxdLFxuICAgICAgICAgIH0pO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gJycsIHsgbm9uTnVsbGFibGU6ICFwcm9wZXJ0eS5udWxsYWJsZSwgdmFsaWRhdG9ycyB9KTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IGZhbHNlLCB7bm9uTnVsbGFibGU6ICFwcm9wZXJ0eS5udWxsYWJsZSwgdmFsaWRhdG9yc30pO1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gMCwge25vbk51bGxhYmxlOiAhcHJvcGVydHkubnVsbGFibGUsIHZhbGlkYXRvcnN9KTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gMCwge25vbk51bGxhYmxlOiAhcHJvcGVydHkubnVsbGFibGUsIHZhbGlkYXRvcnN9KTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHByb3BlcnR5LCB7ZmIsIHZhbHVlfSk7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hKHByb3BlcnR5LCB7ZmIsIHZhbHVlOiB2YWx1ZSBhcyBhbnlbXX0pO1xuICAgIH1cbiAgfVxuICBcblxuICBzdGF0aWMgYnVpbGRGb3JtQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IHt9LFxuICAgIGZpZWxkTWFwID0ge30sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IG9iamVjdCxcbiAgICBmaWVsZE1hcD86IG9iamVjdCxcbiAgfSA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEsIHtmYiwgdmFsdWV9KSxcbiAgICAgIGZpZWxkTWFwOiB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwge21lcmdlOiBmaWVsZE1hcH0pLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYnVpbGRGb3JtRmllbGRCeVByb3BlcnR5KHByb3BlcnR5OiBKc29uU2NoZW1hWydwcm9wZXJ0aWVzJ10pIHtcbiAgICBzd2l0Y2ggKHByb3BlcnR5LnR5cGUpIHtcbiAgICAgIGNhc2UgJ3N0cmluZyc6IHtcbiAgICAgICAgaWYgKHByb3BlcnR5LmVudW0pIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogcHJvcGVydHkuZW51bS5tYXAoKHY6IHN0cmluZykgPT4gKHsgdmFsdWU6IHYsIG5hbWU6IHYgfSkpIH07XG4gICAgICAgIH0gZWxzZSBpZiAoWydkYXRlLXRpbWUnLCAnZGF0ZSddLmluY2x1ZGVzKHByb3BlcnR5LmZvcm1hdCkpIHtcbiAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZGF0ZScgfTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdiaW5hcnknKSB7XG4gICAgICAgICAgcmV0dXJuIHsgdHlwZTogJ2ZpbGUnIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHsgdHlwZTogJ3RleHQnIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4geyB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogW3sgdmFsdWU6IHRydWUsIG5hbWU6ICfjga/jgYQnIH0sIHsgdmFsdWU6IGZhbHNlLCBuYW1lOiAn44GE44GE44GIJyB9XSB9O1xuICAgICAgY2FzZSAnaW50ZWdlcic6IHJldHVybiB7IHR5cGU6ICdudW1iZXInIH07XG4gICAgICBjYXNlICdudW1iZXInOiByZXR1cm4geyB0eXBlOiAnbnVtYmVyJyB9O1xuICAgICAgZGVmYXVsdDogcmV0dXJuIHsgdHlwZTogcHJvcGVydHkudHlwZSB9O1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShcbiAgICBzY2hlbWE6IEpzb25TY2hlbWEsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIH0gPSB7fSxcbiAgKTogYW55IHtcbiAgICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiB7IHR5cGU6ICdoaWRkZW4nIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBmaWVsZE1hcDogYW55ID0ge307XG4gICAgXG4gICAgZm9yIChjb25zdCBrZXkgaW4gc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICAgIHN3aXRjaCAocHJvcGVydHkudHlwZSkge1xuICAgICAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAgICAgY29uc3QgY2hpbGRGaWVsZE1hcCA9IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHksIG9wdGlvbnMpO1xuICAgICAgICAgIGZvciAoY29uc3QgY2hpbGRLZXkgaW4gY2hpbGRGaWVsZE1hcCkge1xuICAgICAgICAgICAgZmllbGRNYXBbYCR7a2V5fS4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ2FycmF5Jzoge1xuICAgICAgICAgIGNvbnN0IGNoaWxkRmllbGRNYXAgPSB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHByb3BlcnR5Lml0ZW1zLCBvcHRpb25zKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgICAgIC8vIFRPRE86IOato+imj+ihqOePvuOBp+ODkeOCueODnuODg+ODgeOCkuWIpOWumuOBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi+OAglxuICAgICAgICAgICAgZmllbGRNYXBbYCR7a2V5fS5cXFxcZCsuJHtjaGlsZEtleX1gXSA9IGNoaWxkRmllbGRNYXBbY2hpbGRLZXldO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgZmllbGRNYXBba2V5XSA9IHRoaXMuYnVpbGRGb3JtRmllbGRCeVByb3BlcnR5KHByb3BlcnR5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgXG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hXSBmaWVsZE1hcDonLCBmaWVsZE1hcCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hXSBvcHRpb25zLm1lcmdlOicsIG9wdGlvbnMubWVyZ2UpO1xuICBcbiAgICByZXR1cm4gey4uLmZpZWxkTWFwLCAuLi5vcHRpb25zLm1lcmdlfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtR3JvdXAoa2xhc3M6IG5ldygpID0+IGFueSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlLFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG59KTogRm9ybUdyb3VwIHtcbiAgY29uc3Qgc2NoZW1hID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShrbGFzcyk7XG4gIHJldHVybiBKc29uU2NoZW1hRm9ybVV0aWxzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1GaWVsZE1hcChrbGFzczogbmV3KCkgPT4gYW55LCBvcHRpb25zOiB7XG4gIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbn0pOiBhbnkge1xuICBjb25zdCBzY2hlbWEgPSB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hKGtsYXNzKTtcbiAgY29uc3QgbWFwID0gSnNvblNjaGVtYUZvcm1VdGlscy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICByZXR1cm4gbWVyZ2UobWFwLCBvcHRpb25zLm1lcmdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybShrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUgPSB7fSxcbiAgZmllbGRNYXAgPSB7fSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxuICBmaWVsZE1hcD86IEZvcm1GaWVsZE1hcCxcbn0gPSB7fSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4ge1xuICAgIGZvcm06IEpzb25TY2hlbWFGb3JtVXRpbHMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSksXG4gICAgZmllbGRNYXA6IEpzb25TY2hlbWFGb3JtVXRpbHMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7bWVyZ2U6IGZpZWxkTWFwfSksXG4gIH07XG59XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBKc29uU2NoZW1hRm9ybVNlcnZpY2Uge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcblxuICBidWlsZChzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IHRoaXMuZmIsXG4gICAgdmFsdWUgPSB7fSxcbiAgfToge1xuICAgIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICAgIHZhbHVlPzogb2JqZWN0LFxuICB9ID0ge30pOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiBKc29uU2NoZW1hRm9ybVV0aWxzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xuICB9XG5cbiAgYnVpbGRGaWVsZE1hcChcbiAgICBzY2hlbWE6IEpzb25TY2hlbWEsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIH0gPSB7fSxcbiAgKTogYW55IHtcbiAgICByZXR1cm4gSnNvblNjaGVtYUZvcm1VdGlscy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
|