@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
|
@@ -12,13 +12,11 @@ class ColumnsFormBuilder {
|
|
|
12
12
|
map: {
|
|
13
13
|
user: {
|
|
14
14
|
type: 'text',
|
|
15
|
-
headerText: 'User',
|
|
16
15
|
width: 80,
|
|
17
16
|
visible: true,
|
|
18
17
|
},
|
|
19
18
|
id: {
|
|
20
19
|
type: 'text',
|
|
21
|
-
headerText: 'ID',
|
|
22
20
|
width: 80,
|
|
23
21
|
visible: true,
|
|
24
22
|
},
|
|
@@ -37,10 +35,10 @@ class ColumnsFormBuilder {
|
|
|
37
35
|
case 'tree':
|
|
38
36
|
return this.fb.group({
|
|
39
37
|
type: this.fb.control({ value: 'tree', disabled: true }),
|
|
40
|
-
headerText: this.fb.control(column.headerText),
|
|
41
38
|
visible: this.fb.control(column.visible),
|
|
42
39
|
width: this.fb.control(column.width),
|
|
43
40
|
sticky: this.fb.control(column.sticky),
|
|
41
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
44
42
|
});
|
|
45
43
|
case 'text':
|
|
46
44
|
return this.fb.group({
|
|
@@ -48,6 +46,7 @@ class ColumnsFormBuilder {
|
|
|
48
46
|
visible: this.fb.control(column.visible),
|
|
49
47
|
width: this.fb.control(column.width),
|
|
50
48
|
sticky: this.fb.control(column.sticky),
|
|
49
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
51
50
|
});
|
|
52
51
|
case 'checkbox':
|
|
53
52
|
return this.fb.group({
|
|
@@ -55,6 +54,7 @@ class ColumnsFormBuilder {
|
|
|
55
54
|
visible: this.fb.control(column.visible),
|
|
56
55
|
width: this.fb.control(column.width),
|
|
57
56
|
sticky: this.fb.control(column.sticky),
|
|
57
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
58
58
|
});
|
|
59
59
|
case 'actions':
|
|
60
60
|
return this.fb.group({
|
|
@@ -63,6 +63,7 @@ class ColumnsFormBuilder {
|
|
|
63
63
|
width: this.fb.control(column.width),
|
|
64
64
|
actions: this.fb.control(column.actions),
|
|
65
65
|
sticky: this.fb.control(column.sticky),
|
|
66
|
+
stickyEnd: this.fb.control(column.stickyEnd),
|
|
66
67
|
});
|
|
67
68
|
default:
|
|
68
69
|
throw new Error(`Unknown column type: ${column.type}`);
|
|
@@ -78,43 +79,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
78
79
|
function injectColumnsForm() {
|
|
79
80
|
return inject(ColumnsFormBuilder).build();
|
|
80
81
|
}
|
|
81
|
-
function
|
|
82
|
-
if (typeof
|
|
83
|
-
if (
|
|
82
|
+
function buildColumn(nameOrAction, i, sticky, stickyEnd) {
|
|
83
|
+
if (typeof nameOrAction === 'string') {
|
|
84
|
+
if (nameOrAction === '__actions') {
|
|
84
85
|
return {
|
|
85
86
|
type: 'actions',
|
|
86
87
|
name: `actions_${i}`,
|
|
87
88
|
visible: true,
|
|
88
|
-
width:
|
|
89
|
+
width: 40,
|
|
89
90
|
sticky,
|
|
91
|
+
stickyEnd,
|
|
90
92
|
};
|
|
91
93
|
}
|
|
92
|
-
else if (
|
|
94
|
+
else if (nameOrAction === '__checkbox') {
|
|
93
95
|
return {
|
|
94
96
|
type: 'checkbox',
|
|
95
97
|
name: 'checkbox',
|
|
96
98
|
visible: true,
|
|
97
99
|
width: 24,
|
|
98
100
|
sticky,
|
|
101
|
+
stickyEnd,
|
|
99
102
|
};
|
|
100
103
|
}
|
|
101
|
-
else if (
|
|
104
|
+
else if (nameOrAction.startsWith('__tree')) {
|
|
102
105
|
return {
|
|
103
106
|
type: 'tree',
|
|
104
|
-
name:
|
|
105
|
-
headerText: column.split('__tree_')?.[1] ?? '',
|
|
107
|
+
name: nameOrAction.split('__tree_')?.[1] ?? '__tree',
|
|
106
108
|
visible: true,
|
|
107
|
-
width:
|
|
109
|
+
width: 240,
|
|
108
110
|
sticky,
|
|
111
|
+
stickyEnd,
|
|
109
112
|
};
|
|
110
113
|
}
|
|
111
114
|
else {
|
|
112
115
|
return {
|
|
113
116
|
type: 'text',
|
|
114
|
-
name:
|
|
117
|
+
name: nameOrAction,
|
|
115
118
|
visible: true,
|
|
116
|
-
width:
|
|
119
|
+
width: 100,
|
|
117
120
|
sticky,
|
|
121
|
+
stickyEnd,
|
|
118
122
|
};
|
|
119
123
|
}
|
|
120
124
|
}
|
|
@@ -123,17 +127,20 @@ function toColumns(column, i, sticky) {
|
|
|
123
127
|
type: 'actions',
|
|
124
128
|
name: `actions_${i}`,
|
|
125
129
|
visible: true,
|
|
126
|
-
width:
|
|
130
|
+
width: 40,
|
|
127
131
|
sticky,
|
|
128
|
-
|
|
132
|
+
stickyEnd,
|
|
133
|
+
actions: wrapActions(nameOrAction),
|
|
129
134
|
};
|
|
130
135
|
}
|
|
131
136
|
}
|
|
132
|
-
function buildColumns(
|
|
133
|
-
const
|
|
137
|
+
function buildColumns(columnIdOrActions, { stickyStart = 0, stickyEnd = 0, } = {}) {
|
|
138
|
+
const columns = columnIdOrActions.map((columnIdOrAction, i) => {
|
|
139
|
+
return buildColumn(columnIdOrAction, i, i < stickyStart, i >= columnIdOrActions.length - stickyEnd);
|
|
140
|
+
});
|
|
134
141
|
return {
|
|
135
|
-
ids:
|
|
136
|
-
map:
|
|
142
|
+
ids: columns.map((column) => column.name),
|
|
143
|
+
map: columns.reduce((obj, column) => ({ ...obj, [column.name]: column }), {}),
|
|
137
144
|
};
|
|
138
145
|
}
|
|
139
146
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form-columns.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/columns.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/ng-atomic-common-services-form-columns.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { FormArray, FormBuilder, FormControl, FormGroup, FormRecord, Validators } from \"@angular/forms\";\nimport { Actions, wrapActions } from \"@ng-atomic/core\";\nimport { Column } from \"@ng-atomic/common/models\";\n\nexport type ActionsColumnForm = FormGroup<{\n type: FormControl<'actions'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n actions: FormControl<any>,\n sticky: FormControl<boolean>,\n}>;\n\nexport type CheckboxColumnForm = FormGroup<{\n type: FormControl<'checkbox'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n}>;\n\nexport type TextColumnForm = FormGroup<{\n type: FormControl<'text'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n}>;\n\nexport type TreeColumnForm = FormGroup<{\n type: FormControl<'tree'>,\n headerText: FormControl<string>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n}>;\n\nexport type ColumnsForm = FormArray<FormRecord<ActionsColumnForm | CheckboxColumnForm | TextColumnForm | TreeColumnForm>>;\n\nexport interface ColumnsFormValue {\n ids: string[],\n map: { [key: string]: Column },\n}\n\n@Injectable({providedIn: 'root'})\nexport class ColumnsFormBuilder {\n protected readonly fb = inject(FormBuilder).nonNullable;\n\n build(columns: ColumnsFormValue = {\n ids: ['id', 'user'],\n map: {\n user: {\n type: 'text' as const,\n headerText: 'User',\n width: 80,\n visible: true,\n },\n id: {\n type: 'text',\n headerText: 'ID',\n width: 80,\n visible: true,\n },\n },\n }) {\n return this.fb.group({\n ids: this.fb.control(columns.ids, Validators.required),\n map: this.fb.group(Object.entries(columns.map).reduce((obj, [key, value]) => ({\n ...obj,\n [key]: this.buildColumnForm(value),\n }), {})),\n });\n }\n\n protected buildColumnForm(column: Column) {\n switch (column.type) {\n case 'tree':\n return this.fb.group({\n type: this.fb.control({value: 'tree' as const, disabled: true}),\n headerText: this.fb.control(column.headerText),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n }) as TreeColumnForm;\n case 'text': \n return this.fb.group({\n type: this.fb.control({value: 'text' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n }) as TextColumnForm;\n case 'checkbox':\n return this.fb.group({\n type: this.fb.control({value: 'checkbox' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n }) as CheckboxColumnForm;\n case 'actions':\n return this.fb.group({\n type: this.fb.control({value: 'actions' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n actions: this.fb.control(column.actions),\n sticky: this.fb.control(column.sticky),\n }) as ActionsColumnForm;\n default:\n throw new Error(`Unknown column type: ${(column as any).type}`);\n }\n }\n}\n\nexport function injectColumnsForm() {\n return inject(ColumnsFormBuilder).build();\n}\n\nfunction toColumns(column: (string | Actions), i: number, sticky: boolean): Column {\n if (typeof column === 'string') {\n if (column === '__actions') {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 80,\n sticky,\n }\n } else if (column === '__checkbox') {\n return {\n type: 'checkbox',\n name: 'checkbox',\n visible: true,\n width: 24,\n sticky,\n }\n } else if (column.startsWith('__tree')) {\n return {\n type: 'tree',\n name: column.split('__tree_')?.[1] ?? '__tree',\n headerText: column.split('__tree_')?.[1] ?? '',\n visible: true,\n width: 320,\n sticky,\n }\n } else {\n return {\n type: 'text',\n name: column,\n visible: true,\n width: 80,\n sticky,\n };\n } \n } else {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 80,\n sticky,\n actions: wrapActions(column),\n };\n }\n}\n\nexport function buildColumns(columns: (string | Actions)[], {\n stickyStart = 0,\n stickyEnd = 0,\n}: {\n stickyStart?: number,\n stickyEnd?: number,\n} = {}): {ids: string[], map: {[key: string]: Column}} {\n const _columns = columns.map((column, i) => toColumns(column, i, i < stickyStart || i >= columns.length - stickyEnd));\n return {\n ids: _columns.map((column) => column.name),\n map: _columns.reduce((obj, column) => ({...obj, [column.name]: column}), {}),\n };\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form-columns.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/columns.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/columns/ng-atomic-common-services-form-columns.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { FormArray, FormBuilder, FormControl, FormGroup, FormRecord, Validators } from \"@angular/forms\";\nimport { Actions, wrapActions } from \"@ng-atomic/core\";\nimport { Column } from \"@ng-atomic/common/models\";\n\nexport type ActionsColumnForm = FormGroup<{\n type: FormControl<'actions'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n actions: FormControl<any>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type CheckboxColumnForm = FormGroup<{\n type: FormControl<'checkbox'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type TextColumnForm = FormGroup<{\n type: FormControl<'text'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type TreeColumnForm = FormGroup<{\n type: FormControl<'tree'>,\n visible: FormControl<boolean>,\n width: FormControl<number>,\n sticky: FormControl<boolean>,\n stickyEnd: FormControl<boolean>,\n}>;\n\nexport type ColumnsForm = FormArray<FormRecord<ActionsColumnForm | CheckboxColumnForm | TextColumnForm | TreeColumnForm>>;\n\nexport interface ColumnsFormValue {\n ids: string[],\n map: { [key: string]: Column },\n}\n\n@Injectable({providedIn: 'root'})\nexport class ColumnsFormBuilder {\n protected readonly fb = inject(FormBuilder).nonNullable;\n\n build(columns: ColumnsFormValue = {\n ids: ['id', 'user'],\n map: {\n user: {\n type: 'text' as const,\n width: 80,\n visible: true,\n },\n id: {\n type: 'text',\n width: 80,\n visible: true,\n },\n },\n }) {\n return this.fb.group({\n ids: this.fb.control(columns.ids, Validators.required),\n map: this.fb.group(Object.entries(columns.map).reduce((obj, [key, value]) => ({\n ...obj,\n [key]: this.buildColumnForm(value),\n }), {})),\n });\n }\n\n protected buildColumnForm(column: Column) {\n switch (column.type) {\n case 'tree':\n return this.fb.group({\n type: this.fb.control({value: 'tree' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as TreeColumnForm;\n case 'text': \n return this.fb.group({\n type: this.fb.control({value: 'text' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as TextColumnForm;\n case 'checkbox':\n return this.fb.group({\n type: this.fb.control({value: 'checkbox' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as CheckboxColumnForm;\n case 'actions':\n return this.fb.group({\n type: this.fb.control({value: 'actions' as const, disabled: true}),\n visible: this.fb.control(column.visible),\n width: this.fb.control(column.width),\n actions: this.fb.control(column.actions),\n sticky: this.fb.control(column.sticky),\n stickyEnd: this.fb.control(column.stickyEnd),\n }) as ActionsColumnForm;\n default:\n throw new Error(`Unknown column type: ${(column as any).type}`);\n }\n }\n}\n\nexport function injectColumnsForm() {\n return inject(ColumnsFormBuilder).build();\n}\n\nfunction buildColumn(nameOrAction: (string | Actions), i: number, sticky: boolean, stickyEnd: boolean): Column {\n if (typeof nameOrAction === 'string') {\n if (nameOrAction === '__actions') {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 40,\n sticky,\n stickyEnd,\n }\n } else if (nameOrAction === '__checkbox') {\n return {\n type: 'checkbox',\n name: 'checkbox',\n visible: true,\n width: 24,\n sticky,\n stickyEnd,\n }\n } else if (nameOrAction.startsWith('__tree')) {\n return {\n type: 'tree',\n name: nameOrAction.split('__tree_')?.[1] ?? '__tree',\n visible: true,\n width: 240,\n sticky,\n stickyEnd,\n }\n } else {\n return {\n type: 'text',\n name: nameOrAction,\n visible: true,\n width: 100,\n sticky,\n stickyEnd,\n };\n } \n } else {\n return {\n type: 'actions',\n name: `actions_${i}`,\n visible: true,\n width: 40,\n sticky,\n stickyEnd,\n actions: wrapActions(nameOrAction),\n };\n }\n}\n\nexport function buildColumns(columnIdOrActions: (string | Actions)[], {\n stickyStart = 0,\n stickyEnd = 0,\n}: {\n stickyStart?: number,\n stickyEnd?: number,\n} = {}): {ids: string[], map: {[key: string]: Column}} {\n const columns = columnIdOrActions.map((columnIdOrAction, i) => {\n return buildColumn(columnIdOrAction, i, i < stickyStart, i >= columnIdOrActions.length - stickyEnd);\n });\n return {\n ids: columns.map((column) => column.name),\n map: columns.reduce((obj, column) => ({...obj, [column.name]: column}), {}),\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -78,10 +78,14 @@ class JsonSchemaFormUtils {
|
|
|
78
78
|
for (const key in schema.properties) {
|
|
79
79
|
const property = schema.properties[key];
|
|
80
80
|
const validators = [];
|
|
81
|
-
if (schema.required && schema.required.includes(key)) {
|
|
81
|
+
if (schema.required && schema.required.includes(key) && !property.nullable) {
|
|
82
82
|
validators.push(Validators.required);
|
|
83
83
|
}
|
|
84
84
|
group[key] = this.buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
|
|
85
|
+
// MEMO(@NozomuMiyamoto): Arrayなら追加用のダミーコントロールを追加する
|
|
86
|
+
if (property.type === 'array') {
|
|
87
|
+
group[`${key}__add_action`] = fb.control(property);
|
|
88
|
+
}
|
|
85
89
|
}
|
|
86
90
|
return fb.group(group);
|
|
87
91
|
}
|
|
@@ -90,34 +94,37 @@ class JsonSchemaFormUtils {
|
|
|
90
94
|
return fb.array([]);
|
|
91
95
|
}
|
|
92
96
|
console.debug('[buildFormArrayByJsonSchema] schema:', schema);
|
|
93
|
-
const
|
|
97
|
+
const formArray = fb.array([
|
|
94
98
|
this.buildFormGroupByJsonSchema(schema.items, { fb }),
|
|
95
99
|
]);
|
|
96
|
-
return
|
|
100
|
+
return formArray;
|
|
97
101
|
}
|
|
98
102
|
static buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
103
|
+
switch (property.type) {
|
|
104
|
+
case 'string': switch (property.format) {
|
|
105
|
+
case 'date':
|
|
106
|
+
case 'date-time':
|
|
107
|
+
return fb.control(value ?? property.default ?? null, { nonNullable: !property.nullable, validators });
|
|
108
|
+
case 'binary':
|
|
109
|
+
return fb.control(value ?? property.default ?? null, { nonNullable: !property.nullable, validators });
|
|
110
|
+
case 'email':
|
|
111
|
+
return fb.control(value ?? property.default ?? '', {
|
|
112
|
+
nonNullable: !property.nullable,
|
|
113
|
+
validators: [...validators, Validators.email],
|
|
114
|
+
});
|
|
115
|
+
default:
|
|
116
|
+
return fb.control(value ?? property.default ?? '', { nonNullable: !property.nullable, validators });
|
|
108
117
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
else if (property.type === 'array') {
|
|
120
|
-
return this.buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
118
|
+
case 'boolean':
|
|
119
|
+
return fb.control(value ?? property.default ?? false, { nonNullable: !property.nullable, validators });
|
|
120
|
+
case 'integer':
|
|
121
|
+
return fb.control(value ?? property.default ?? 0, { nonNullable: !property.nullable, validators });
|
|
122
|
+
case 'number':
|
|
123
|
+
return fb.control(value ?? property.default ?? 0, { nonNullable: !property.nullable, validators });
|
|
124
|
+
case 'object':
|
|
125
|
+
return this.buildFormGroupByJsonSchema(property, { fb, value });
|
|
126
|
+
case 'array':
|
|
127
|
+
return this.buildFormArrayByJsonSchema(property, { fb, value: value });
|
|
121
128
|
}
|
|
122
129
|
}
|
|
123
130
|
static buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
@@ -126,6 +133,28 @@ class JsonSchemaFormUtils {
|
|
|
126
133
|
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
127
134
|
};
|
|
128
135
|
}
|
|
136
|
+
static buildFormFieldByProperty(property) {
|
|
137
|
+
switch (property.type) {
|
|
138
|
+
case 'string': {
|
|
139
|
+
if (property.enum) {
|
|
140
|
+
return { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
|
|
141
|
+
}
|
|
142
|
+
else if (['date-time', 'date'].includes(property.format)) {
|
|
143
|
+
return { type: 'date' };
|
|
144
|
+
}
|
|
145
|
+
else if (property.format === 'binary') {
|
|
146
|
+
return { type: 'file' };
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
return { type: 'text' };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
case 'boolean': return { type: 'select', options: [{ value: true, name: 'はい' }, { value: false, name: 'いいえ' }] };
|
|
153
|
+
case 'integer': return { type: 'number' };
|
|
154
|
+
case 'number': return { type: 'number' };
|
|
155
|
+
default: return { type: property.type };
|
|
156
|
+
}
|
|
157
|
+
}
|
|
129
158
|
static buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
130
159
|
if (!schema || !schema.properties) {
|
|
131
160
|
return {
|
|
@@ -135,61 +164,51 @@ class JsonSchemaFormUtils {
|
|
|
135
164
|
const fieldMap = {};
|
|
136
165
|
for (const key in schema.properties) {
|
|
137
166
|
const property = schema.properties[key];
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
else if (property.format === 'binary') {
|
|
146
|
-
fieldMap[key] = { type: 'file' };
|
|
167
|
+
switch (property.type) {
|
|
168
|
+
case 'object': {
|
|
169
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
170
|
+
for (const childKey in childFieldMap) {
|
|
171
|
+
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
147
174
|
}
|
|
148
|
-
|
|
149
|
-
|
|
175
|
+
case 'array': {
|
|
176
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);
|
|
177
|
+
for (const childKey in childFieldMap) {
|
|
178
|
+
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
179
|
+
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
180
|
+
}
|
|
181
|
+
break;
|
|
150
182
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
154
|
-
for (const childKey in childFieldMap) {
|
|
155
|
-
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
183
|
+
default: {
|
|
184
|
+
fieldMap[key] = this.buildFormFieldByProperty(property);
|
|
156
185
|
}
|
|
157
186
|
}
|
|
158
|
-
else if (property.type === 'array') {
|
|
159
|
-
const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);
|
|
160
|
-
for (const childKey in childFieldMap) {
|
|
161
|
-
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
162
|
-
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
fieldMap[key] = { type: property.type };
|
|
167
|
-
}
|
|
168
|
-
// const type = ? 'date' : property.type;
|
|
169
187
|
}
|
|
170
188
|
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
171
|
-
|
|
189
|
+
console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);
|
|
190
|
+
return { ...fieldMap, ...options.merge };
|
|
172
191
|
}
|
|
173
192
|
}
|
|
174
193
|
function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
175
194
|
const schema = targetConstructorToSchema(klass);
|
|
176
|
-
return
|
|
195
|
+
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
177
196
|
}
|
|
178
197
|
function buildFormFieldMap(klass, options) {
|
|
179
198
|
const schema = targetConstructorToSchema(klass);
|
|
180
|
-
const map =
|
|
199
|
+
const map = JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);
|
|
181
200
|
return merge(map, options.merge);
|
|
182
201
|
}
|
|
183
202
|
function buildForm(klass, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
184
203
|
const schema = targetConstructorToSchema(klass);
|
|
185
204
|
return {
|
|
186
|
-
form:
|
|
187
|
-
fieldMap:
|
|
205
|
+
form: JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
206
|
+
fieldMap: JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
188
207
|
};
|
|
189
208
|
}
|
|
190
209
|
class JsonSchemaFormService {
|
|
191
210
|
constructor() {
|
|
192
|
-
this.fb = inject(FormBuilder)
|
|
211
|
+
this.fb = inject(FormBuilder);
|
|
193
212
|
}
|
|
194
213
|
build(schema, { fb = this.fb, value = {}, } = {}) {
|
|
195
214
|
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form-json-schema.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/ng-atomic-common-services-form-json-schema.ts"],"sourcesContent":["import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\n// TODO(@NozomuMiyamoto): fix\n// @ts-ignore\n// const { defaultMetadataStorage } = require('class-transformer/cjs/storage');\nimport { defaultMetadataStorage } from 'class-transformer/esm5/storage';\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\n : null\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName)\n return targetToSchema(childType, options)\n }\n },\n isDayjs: (meta: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}) {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: defaultMetadataStorage,\n });\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { FormBuilder, FormGroup, NonNullableFormBuilder, Validators } from \"@angular/forms\";\nimport { JsonSchema } from \"json-schema-library\";\nimport { targetConstructorToSchema } from './json-schema';\nimport { merge } from \"lodash-es\";\n\nexport class JsonSchemaFormUtils {\n static removeObjectPercent<T extends object>(value: T): any {\n return Object.entries(value).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {\n acc[key] = value.slice(1, -1);\n } else if (typeof value === 'string' && value.startsWith('%')) {\n acc[key] = value.slice(1);\n } else if (typeof value === 'string' && value.endsWith('%')) {\n acc[key] = value.slice(0, -1);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n }\n\n static buildFormGroupByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n console.debug('[buildFormGroupByJsonSchema] schema:', schema);\n if (!schema || !schema?.properties) {\n return fb.group({});\n }\n const group: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n const validators = [];\n \n if (schema.required && schema.required.includes(key)) {\n validators.push(Validators.required);\n }\n group[key] = this.buildFormByJsonSchemaProperty(property, {fb, value: value?.[key], validators});\n }\n return fb.group(group);\n }\n \n static buildFormArrayByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: any[],\n } = {}): any {\n if (!schema || !schema.items) {\n return fb.array([]);\n }\n console.debug('[buildFormArrayByJsonSchema] schema:', schema);\n const array = fb.array([\n this.buildFormGroupByJsonSchema(schema.items, {fb}),\n ])\n return array;\n }\n \n static buildFormByJsonSchemaProperty(property: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = null,\n validators = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object | object[],\n validators?: any[],\n } = {}): any {\n if (property.type === 'string') {\n if (property.format === 'date-time') {\n return fb.control(value ?? property.default ?? null, validators);\n } else if (property.format === 'binary') {\n return fb.control(value ?? property.default ?? null, validators);\n } else {\n return fb.control(value ?? property.default ?? '', validators);\n }\n } else if (property.type === 'integer') {\n return fb.control(value ?? property.default ?? 0, validators);\n } else if (property.type === 'number') {\n return fb.control(value ?? property.default ?? 0, validators);\n } else if (property.type === 'object') {\n return this.buildFormGroupByJsonSchema(property, {fb, value: (value || {}) as object});\n }\n else if (property.type === 'array') {\n return this.buildFormArrayByJsonSchema(property, {fb, value: (value || []) as any[]});\n }\n }\n \n\n static buildFormByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n } = {}): any {\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n }\n\n static buildFormFieldMapByJsonSchema(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n if (!schema || !schema.properties) {\n return {\n id: { type: 'hidden' },\n };\n }\n const fieldMap: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n if (property.type === 'string') {\n if (property.enum) {\n fieldMap[key] = { type: 'select', options: property.enum.map((v: string) => ({ value: v, name: v })) };\n } else if (property.format === 'date-time') {\n fieldMap[key] = { type: 'date' };\n } else if (property.format === 'binary') {\n fieldMap[key] = { type: 'file' };\n } else {\n fieldMap[key] = { type: 'text' };\n }\n } else if (property.type === 'object') {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);\n for (const childKey in childFieldMap) {\n fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];\n }\n } else if (property.type === 'array') {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);\n for (const childKey in childFieldMap) {\n // TODO: 正規表現でパスマッチを判定できるようにする。\n fieldMap[`${key}.\\\\d+.${childKey}`] = childFieldMap[childKey];\n }\n } else {\n fieldMap[key] = { type: property.type };\n }\n // const type = ? 'date' : property.type;\n }\n \n console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);\n \n return merge(fieldMap, options.merge);\n }\n}\n\nexport function buildFormGroup(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value,\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n}): FormGroup {\n const schema = targetConstructorToSchema(klass);\n return this.buildFormGroupByJsonSchema(schema, {fb, value});\n}\n\n\nexport function buildFormFieldMap(klass: new() => any, options: {\n merge?: { [key: string]: any },\n}): any {\n const schema = targetConstructorToSchema(klass);\n const map = this.buildFormFieldMapByJsonSchema(schema, options);\n return merge(map, options.merge);\n}\n\nexport function buildForm(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n} = {}): any {\n const schema = targetConstructorToSchema(klass);\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n}\n\n\n@Injectable({ providedIn: 'root' })\nexport class JsonSchemaFormService {\n private fb = inject(FormBuilder).nonNullable;\n\n build(schema: JsonSchema, {\n fb = this.fb,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, {fb, value});\n }\n\n buildFieldMap(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":";;;;;;;;AASA,SAAS,WAAW,CAAC,MAAc,EAAE,QAAgB,EAAA;IACnD,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC7D,CAAC;AAED,SAAS,cAAc,CACrB,IAAS,EACT,OAAY,EAAA;AAEZ,IAAA,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC9B,QAAA,IACE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;AACnC,YAAA,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EACnC;AACA,YAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;SAC1B;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,EAAE;AAC9C,YAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;SAC1B;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,EAAE;AAC/C,YAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;SAC3B;AAED,QAAA,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;KAChD;AACH,CAAC;AAED,MAAM,oBAAoB,GAAE;IAC1B,CAAC,eAAe,CAAC,iBAAiB,GAAG,CAAC,IAAS,EAAE,OAAY,KAAI;AAC/D,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;AACrC,YAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,+BAA+B;AACtD,kBAAE,OAAO,CAAC,+BAA+B,CAAC,gBAAgB,CACtD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,CAClB;kBACD,IAAI,CAAA;YACR,MAAM,SAAS,GAAG,QAAQ;AACxB,kBAAE,QAAQ,CAAC,YAAY,EAAE;AACzB,kBAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;AACzD,YAAA,OAAO,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;SAC1C;KACF;AACD,IAAA,OAAO,EAAE,CAAC,IAAS,KAAiB;QAClC,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,WAAW;SACpB,CAAC;KACH;CACF,CAAC;SAEc,yBAAyB,CAAC,MAAgB,EAAE,UAA6B,EAAE,EAAA;IACzF,OAAOA,2BAA0B,CAAC,MAAM,EAAE;AACxC,QAAA,GAAG,OAAO;QACV,oBAAoB;AACpB,QAAA,+BAA+B,EAAE,sBAAsB;AACxD,KAAA,CAAC,CAAC;AACL;;MCxDa,mBAAmB,CAAA;IAC9B,OAAO,mBAAmB,CAAmB,KAAQ,EAAA;AACnD,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACxD,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7E,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC/B;AAAM,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC7D,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC3B;AAAM,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC3D,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC/B;iBAAM;AACL,gBAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aAClB;AACD,YAAA,OAAO,GAAG,CAAC;SACZ,EAAE,EAAE,CAAC,CAAC;KACR;AAED,IAAA,OAAO,0BAA0B,CAAC,MAAkB,EAAE,EACpD,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EACpC,KAAK,GAAG,EAAE,MAIR,EAAE,EAAA;AACJ,QAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;AAClC,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACrB;QACD,MAAM,KAAK,GAAQ,EAAE,CAAC;AAEtB,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,YAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpD,gBAAA,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aACtC;YACD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,EAAC,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,EAAE,UAAU,EAAC,CAAC,CAAC;SAClG;AACD,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACxB;AAED,IAAA,OAAO,0BAA0B,CAAC,MAAkB,EAAE,EACpD,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EACpC,KAAK,GAAG,EAAE,MAIR,EAAE,EAAA;QACJ,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC5B,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;SACrB;AACD,QAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,CAAC;AAC9D,QAAA,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,EAAE,EAAC,EAAE,EAAC,CAAC;AACpD,SAAA,CAAC,CAAA;AACF,QAAA,OAAO,KAAK,CAAC;KACd;IAED,OAAO,6BAA6B,CAAC,QAAoB,EAAE,EACzD,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EACpC,KAAK,GAAG,IAAI,EACZ,UAAU,GAAG,EAAE,GAAA,GAKb,EAAE,EAAA;AACJ,QAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;AACnC,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;aAClE;AAAM,iBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;AACvC,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;aAClE;iBAAM;AACL,gBAAA,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;aAChE;SACF;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AACtC,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;SAC/D;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;SAC/D;AAAM,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,EAAC,EAAE,EAAE,KAAK,GAAG,KAAK,IAAI,EAAE,CAAW,EAAC,CAAC,CAAC;SACxF;AACI,aAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,EAAC,EAAE,EAAE,KAAK,GAAG,KAAK,IAAI,EAAE,CAAU,EAAC,CAAC,CAAC;SACvF;KACF;IAGD,OAAO,qBAAqB,CAAC,MAAkB,EAAE,EAC/C,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EACpC,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,EAAE,GAAA,GAKX,EAAE,EAAA;QACJ,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;AAC1D,YAAA,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;SACxE,CAAC;KACH;AAED,IAAA,OAAO,6BAA6B,CAClC,MAAkB,EAClB,UAEI,EAAE,EAAA;QAEN,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACjC,OAAO;AACL,gBAAA,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACvB,CAAC;SACH;QACD,MAAM,QAAQ,GAAQ,EAAE,CAAC;AAEzB,QAAA,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE;YACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxC,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9B,gBAAA,IAAI,QAAQ,CAAC,IAAI,EAAE;AACjB,oBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;iBACxG;AAAM,qBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;oBAC1C,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBAClC;AAAM,qBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;oBACvC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBAClC;qBAAM;oBACL,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iBAClC;aACF;AAAM,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACrC,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5E,gBAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;AACpC,oBAAA,QAAQ,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;iBAC1D;aACF;AAAM,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AACpC,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClF,gBAAA,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;;AAEpC,oBAAA,QAAQ,CAAC,CAAA,EAAG,GAAG,CAAA,MAAA,EAAS,QAAQ,CAAA,CAAE,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;iBAC/D;aACF;iBAAM;gBACL,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;aACzC;;SAEF;AAED,QAAA,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,QAAQ,CAAC,CAAC;QAErE,OAAO,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;KACvC;AACF,CAAA;SAEe,cAAc,CAAC,KAAmB,EAAE,EAClD,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EACpC,KAAK,GAIN,EAAA;AACC,IAAA,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC;AAC9D,CAAC;AAGe,SAAA,iBAAiB,CAAC,KAAmB,EAAE,OAEtD,EAAA;AACC,IAAA,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAEK,SAAU,SAAS,CAAC,KAAmB,EAAE,EAC7C,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,EACpC,KAAK,GAAG,EAAE,EACV,QAAQ,GAAG,EAAE,GAAA,GAKX,EAAE,EAAA;AACJ,IAAA,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO;AACL,QAAA,IAAI,EAAE,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;AAC1D,QAAA,QAAQ,EAAE,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;KACxE,CAAC;AACJ,CAAC;MAIY,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC;AAoB9C,KAAA;AAlBC,IAAA,KAAK,CAAC,MAAkB,EAAE,EACxB,EAAE,GAAG,IAAI,CAAC,EAAE,EACZ,KAAK,GAAG,EAAE,MAIR,EAAE,EAAA;AACJ,QAAA,OAAO,mBAAmB,CAAC,0BAA0B,CAAC,MAAM,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC,CAAC;KAC5E;AAED,IAAA,aAAa,CACX,MAAkB,EAClB,OAAA,GAEI,EAAE,EAAA;QAEN,OAAO,mBAAmB,CAAC,6BAA6B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC3E;8GApBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAArB,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,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;AClMlC;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form-json-schema.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/json-schema.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/json-schema/ng-atomic-common-services-form-json-schema.ts"],"sourcesContent":["import { ValidationTypes } from \"class-validator\"\nimport { targetConstructorToSchema as _targetConstructorToSchema } from \"class-validator-jsonschema\"\nimport { IOptions } from \"class-validator-jsonschema/build/options\";\nimport { JSONSchema7 } from 'json-schema';\n// TODO(@NozomuMiyamoto): fix\n// @ts-ignore\n// const { defaultMetadataStorage } = require('class-transformer/cjs/storage');\nimport { defaultMetadataStorage } from 'class-transformer/esm5/storage';\n\nfunction getPropType(target: object, property: string) {\n return Reflect.getMetadata('design:type', target, property)\n}\n\nfunction targetToSchema(\n type: any,\n options: any\n): any {\n if (typeof type === 'function') {\n if (\n type.prototype === String.prototype ||\n type.prototype === Symbol.prototype\n ) {\n return { type: 'string' }\n } else if (type.prototype === Number.prototype) {\n return { type: 'number' }\n } else if (type.prototype === Boolean.prototype) {\n return { type: 'boolean' }\n }\n\n return targetConstructorToSchema(type, options)\n }\n}\n\nconst additionalConverters= {\n [ValidationTypes.NESTED_VALIDATION]: (meta: any, options: any) => {\n if (typeof meta.target === 'function') {\n const typeMeta = options.classTransformerMetadataStorage\n ? options.classTransformerMetadataStorage.findTypeMetadata(\n meta.target,\n meta.propertyName\n )\n : null\n const childType = typeMeta\n ? typeMeta.typeFunction()\n : getPropType(meta.target.prototype, meta.propertyName)\n return targetToSchema(childType, options)\n }\n },\n isDayjs: (meta: any): JSONSchema7 => {\n return {\n type: 'string',\n format: 'date-time', // JSON Schemaで日付型を指定\n };\n },\n};\n\nexport function targetConstructorToSchema(target: Function, options: Partial<IOptions> = {}) {\n return _targetConstructorToSchema(target, {\n ...options,\n additionalConverters,\n classTransformerMetadataStorage: defaultMetadataStorage,\n });\n}\n","import { Injectable, inject } from \"@angular/core\";\nimport { FormBuilder, FormGroup, NonNullableFormBuilder, Validators } from \"@angular/forms\";\nimport { JsonSchema } from \"json-schema-library\";\nimport { targetConstructorToSchema } from './json-schema';\nimport { merge } from \"lodash-es\";\nimport { FormFieldMap } from \"@ng-atomic/common/pipes/smart-field\";\n\nexport class JsonSchemaFormUtils {\n static removeObjectPercent<T extends object>(value: T): any {\n return Object.entries(value).reduce((acc, [key, value]) => {\n if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {\n acc[key] = value.slice(1, -1);\n } else if (typeof value === 'string' && value.startsWith('%')) {\n acc[key] = value.slice(1);\n } else if (typeof value === 'string' && value.endsWith('%')) {\n acc[key] = value.slice(0, -1);\n } else {\n acc[key] = value;\n }\n return acc;\n }, {});\n }\n\n static buildFormGroupByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n console.debug('[buildFormGroupByJsonSchema] schema:', schema);\n if (!schema || !schema?.properties) {\n return fb.group({});\n }\n const group: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n const validators = [];\n \n if (schema.required && schema.required.includes(key) && !property.nullable) {\n validators.push(Validators.required);\n }\n group[key] = this.buildFormByJsonSchemaProperty(property, {fb, value: value?.[key], validators});\n // MEMO(@NozomuMiyamoto): Arrayなら追加用のダミーコントロールを追加する\n if (property.type === 'array') {\n group[`${key}__add_action`] = fb.control(property);\n }\n }\n return fb.group(group);\n }\n \n static buildFormArrayByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: any[],\n } = {}): any {\n if (!schema || !schema.items) {\n return fb.array([]);\n }\n console.debug('[buildFormArrayByJsonSchema] schema:', schema);\n const formArray = fb.array([\n this.buildFormGroupByJsonSchema(schema.items, {fb}),\n ]);\n return formArray;\n }\n \n static buildFormByJsonSchemaProperty(property: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = null,\n validators = [],\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object | object[],\n validators?: any[],\n } = {}): any {\n switch (property.type) {\n case 'string': switch (property.format) {\n case 'date':\n case 'date-time':\n return fb.control(value ?? property.default ?? null, { nonNullable: !property.nullable, validators });\n case 'binary':\n return fb.control(value ?? property.default ?? null, { nonNullable: !property.nullable, validators });\n case 'email':\n return fb.control(value ?? property.default ?? '', {\n nonNullable: !property.nullable,\n validators: [...validators, Validators.email],\n });\n default:\n return fb.control(value ?? property.default ?? '', { nonNullable: !property.nullable, validators });\n }\n case 'boolean':\n return fb.control(value ?? property.default ?? false, {nonNullable: !property.nullable, validators});\n case 'integer':\n return fb.control(value ?? property.default ?? 0, {nonNullable: !property.nullable, validators});\n case 'number':\n return fb.control(value ?? property.default ?? 0, {nonNullable: !property.nullable, validators});\n case 'object':\n return this.buildFormGroupByJsonSchema(property, {fb, value});\n case 'array':\n return this.buildFormArrayByJsonSchema(property, {fb, value: value as any[]});\n }\n }\n \n\n static buildFormByJsonSchema(schema: JsonSchema, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: object,\n } = {}): any {\n return {\n form: this.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: this.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n }\n\n static buildFormFieldByProperty(property: JsonSchema['properties']) {\n switch (property.type) {\n case 'string': {\n if (property.enum) {\n return { type: 'select', options: property.enum.map((v: string) => ({ value: v, name: v })) };\n } else if (['date-time', 'date'].includes(property.format)) {\n return { type: 'date' };\n } else if (property.format === 'binary') {\n return { type: 'file' };\n } else {\n return { type: 'text' };\n }\n }\n case 'boolean': return { type: 'select', options: [{ value: true, name: 'はい' }, { value: false, name: 'いいえ' }] };\n case 'integer': return { type: 'number' };\n case 'number': return { type: 'number' };\n default: return { type: property.type };\n }\n }\n\n static buildFormFieldMapByJsonSchema(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n if (!schema || !schema.properties) {\n return {\n id: { type: 'hidden' },\n };\n }\n const fieldMap: any = {};\n \n for (const key in schema.properties) {\n const property = schema.properties[key];\n switch (property.type) {\n case 'object': {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);\n for (const childKey in childFieldMap) {\n fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];\n }\n break;\n }\n case 'array': {\n const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);\n for (const childKey in childFieldMap) {\n // TODO: 正規表現でパスマッチを判定できるようにする。\n fieldMap[`${key}.\\\\d+.${childKey}`] = childFieldMap[childKey];\n }\n break;\n }\n default: {\n fieldMap[key] = this.buildFormFieldByProperty(property);\n }\n }\n }\n \n console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);\n console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);\n \n return {...fieldMap, ...options.merge};\n }\n}\n\nexport function buildFormGroup(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value,\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n}): FormGroup {\n const schema = targetConstructorToSchema(klass);\n return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, {fb, value});\n}\n\n\nexport function buildFormFieldMap(klass: new() => any, options: {\n merge?: { [key: string]: any },\n}): any {\n const schema = targetConstructorToSchema(klass);\n const map = JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);\n return merge(map, options.merge);\n}\n\nexport function buildForm(klass: new() => any, {\n fb = inject(FormBuilder).nonNullable,\n value = {},\n fieldMap = {},\n}: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n fieldMap?: FormFieldMap,\n} = {}): any {\n const schema = targetConstructorToSchema(klass);\n return {\n form: JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\n };\n}\n\n\n@Injectable({ providedIn: 'root' })\nexport class JsonSchemaFormService {\n private fb = inject(FormBuilder);\n\n build(schema: JsonSchema, {\n fb = this.fb,\n value = {},\n }: {\n fb?: FormBuilder | NonNullableFormBuilder,\n value?: object,\n } = {}): FormGroup {\n return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, {fb, value});\n }\n\n buildFieldMap(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_targetConstructorToSchema"],"mappings":"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"}
|
|
@@ -6,10 +6,10 @@ class PaginationService {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.fb = inject(FormBuilder);
|
|
8
8
|
}
|
|
9
|
-
build({
|
|
9
|
+
build({ size = 50, index = 0, length = 0, } = {}) {
|
|
10
10
|
return this.fb.group({
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
size: [size],
|
|
12
|
+
index: [index],
|
|
13
13
|
length: [length],
|
|
14
14
|
});
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form-pagination.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/pagination/pagination.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/pagination/ng-atomic-common-services-form-pagination.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nexport interface PaginationFormValue {\n
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form-pagination.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/pagination/pagination.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/pagination/ng-atomic-common-services-form-pagination.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nexport interface PaginationFormValue {\n size: number,\n index: number,\n length: number,\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginationService {\n private fb = inject(FormBuilder);\n\n build({\n size = 50,\n index = 0,\n length = 0,\n }: Partial<PaginationFormValue> = {}) {\n return this.fb.group({\n size: [size],\n index: [index],\n length: [length],\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;AAajC;AAXC,IAAA,KAAK,CAAC,EACJ,IAAI,GAAG,EAAE,EACT,KAAK,GAAG,CAAC,EACT,MAAM,GAAG,CAAC,MACsB,EAAE,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnB,IAAI,EAAE,CAAC,IAAI,CAAC;YACZ,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,MAAM,EAAE,CAAC,MAAM,CAAC;AACjB,SAAA,CAAC;;8GAZO,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,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,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACXD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form-sort.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/sort/sort.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/sort/ng-atomic-common-services-form-sort.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nexport interface SortFormValue {\n key?: string,\n order?: 'asc' | 'desc',\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SortService {\n\n constructor(private fb: FormBuilder) { }\n\n build({key= null, order = 'asc'}: Partial<SortFormValue> = {}) {\n return this.fb.group({\n key: [key],\n order: [order as 'asc' | 'desc'],\n });\n }\n\n toggle(form: ReturnType<typeof this.build>, name: string) {\n if (form.get('key').value === name) {\n form.get('order').setValue(form.get('order').value === 'asc' ? 'desc' : 'asc');\n } else {\n form.get('order').setValue('asc');\n form.get('key').setValue(name);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAWa,WAAW,CAAA;AAEtB,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE,
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form-sort.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/sort/sort.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/sort/ng-atomic-common-services-form-sort.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\n\nexport interface SortFormValue {\n key?: string,\n order?: 'asc' | 'desc',\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SortService {\n\n constructor(private fb: FormBuilder) { }\n\n build({key= null, order = 'asc'}: Partial<SortFormValue> = {}) {\n return this.fb.group({\n key: [key],\n order: [order as 'asc' | 'desc'],\n });\n }\n\n toggle(form: ReturnType<typeof this.build>, name: string) {\n if (form.get('key').value === name) {\n form.get('order').setValue(form.get('order').value === 'asc' ? 'desc' : 'asc');\n } else {\n form.get('order').setValue('asc');\n form.get('key').setValue(name);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAWa,WAAW,CAAA;AAEtB,IAAA,WAAA,CAAoB,EAAe,EAAA;QAAf,IAAE,CAAA,EAAA,GAAF,EAAE;;IAEtB,KAAK,CAAC,EAAC,GAAG,GAAE,IAAI,EAAE,KAAK,GAAG,KAAK,EAAA,GAA4B,EAAE,EAAA;AAC3D,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;YACnB,GAAG,EAAE,CAAC,GAAG,CAAC;YACV,KAAK,EAAE,CAAC,KAAuB,CAAC;AACjC,SAAA,CAAC;;IAGJ,MAAM,CAAC,IAAmC,EAAE,IAAY,EAAA;QACtD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;;aACzE;YACL,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;;;8GAhBvB,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;2FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACVD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-form.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/form.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/ng-atomic-common-services-form.ts"],"sourcesContent":["import { toObject, isIsoString } from '@ng-atomic/common/utils';\nimport dayjs from 'dayjs';\nimport { unflatten, flatten } from 'flat';\nimport { omit, pick } from 'lodash-es';\n\nconst isNumeric = (v: string): boolean => !isNaN(Number(v));\n\nconst parseQueryString = (v: string, key: string): any => key.match(/id$/i) \n ? v\n : typeof v === 'string' && isIsoString(v) \n ? dayjs(v) \n : v === ''\n ? v\n : isNumeric(v)\n ? Number(v)\n : v;\n\nexport class BaseFormService {\n static fromQueryParams<T>(obj: T): object {\n return Object.entries((unflatten(obj) as any)?.form ?? {}).reduce((m, [k, v]: [string, string]) => ({\n ...m, [k]: parseQueryString(v, k),\n }), {});\n }\n\n static toQueryParams<T>(obj: object): T { \n return flatten({form: Object.entries(obj).reduce((m, [k, v]) => ({\n ...m, [k]: dayjs.isDayjs(v) ? v.isValid() ? v.toISOString() : null : v,\n }), {})});\n }\n\n static dayjsKeys(object: object): string[] {\n return Object.entries(object).filter(([_, v]) => dayjs.isDayjs(v)).map(([k]) => k);\n }\n\n static toValue(object: object): object {\n const keys = this.dayjsKeys(object);\n return {...flatten(omit(toObject(object), keys)), ...pick(toObject(object), keys)};\n }\n\n static fromValue(value: object): object {\n const keys = this.dayjsKeys(value);\n return {...unflatten(omit(value, keys)), ...pick(value, keys)};\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAKA,MAAM,SAAS,GAAG,CAAC,CAAS,KAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-form.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/form/form.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/form/ng-atomic-common-services-form.ts"],"sourcesContent":["import { toObject, isIsoString } from '@ng-atomic/common/utils';\nimport dayjs from 'dayjs';\nimport { unflatten, flatten } from 'flat';\nimport { omit, pick } from 'lodash-es';\n\nconst isNumeric = (v: string): boolean => !isNaN(Number(v));\n\nconst parseQueryString = (v: string, key: string): any => key.match(/id$/i) \n ? v\n : typeof v === 'string' && isIsoString(v) \n ? dayjs(v) \n : v === ''\n ? v\n : isNumeric(v)\n ? Number(v)\n : v;\n\nexport class BaseFormService {\n static fromQueryParams<T>(obj: T): object {\n return Object.entries((unflatten(obj) as any)?.form ?? {}).reduce((m, [k, v]: [string, string]) => ({\n ...m, [k]: parseQueryString(v, k),\n }), {});\n }\n\n static toQueryParams<T>(obj: object): T { \n return flatten({form: Object.entries(obj).reduce((m, [k, v]) => ({\n ...m, [k]: dayjs.isDayjs(v) ? v.isValid() ? v.toISOString() : null : v,\n }), {})});\n }\n\n static dayjsKeys(object: object): string[] {\n return Object.entries(object).filter(([_, v]) => dayjs.isDayjs(v)).map(([k]) => k);\n }\n\n static toValue(object: object): object {\n const keys = this.dayjsKeys(object);\n return {...flatten(omit(toObject(object), keys)), ...pick(toObject(object), keys)};\n }\n\n static fromValue(value: object): object {\n const keys = this.dayjsKeys(value);\n return {...unflatten(omit(value, keys)), ...pick(value, keys)};\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAKA,MAAM,SAAS,GAAG,CAAC,CAAS,KAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAE,GAAW,KAAU,GAAG,CAAC,KAAK,CAAC,MAAM;AACxE,MAAE;MACA,OAAO,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,CAAC;AACxC,UAAE,KAAK,CAAC,CAAC;UACP,CAAC,KAAK;AACR,cAAE;AACF,cAAE,SAAS,CAAC,CAAC;AACb,kBAAE,MAAM,CAAC,CAAC;kBACR,CAAC;MAEQ,eAAe,CAAA;IAC1B,OAAO,eAAe,CAAI,GAAM,EAAA;QAC9B,OAAO,MAAM,CAAC,OAAO,CAAE,SAAS,CAAC,GAAG,CAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAmB,MAAM;YAClG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC;SAClC,CAAC,EAAE,EAAE,CAAC;;IAGT,OAAO,aAAa,CAAI,GAAW,EAAA;QACjC,OAAO,OAAO,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;AAC/D,gBAAA,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC;AACvE,aAAA,CAAC,EAAE,EAAE,CAAC,EAAC,CAAC;;IAGX,OAAO,SAAS,CAAC,MAAc,EAAA;AAC7B,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;IAGpF,OAAO,OAAO,CAAC,MAAc,EAAA;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACnC,OAAO,EAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAC;;IAGpF,OAAO,SAAS,CAAC,KAAa,EAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAClC,OAAO,EAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAC;;AAEjE;;AC3CD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-initializer.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/initializer/initializer.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/initializer/ng-atomic-common-services-initializer.ts"],"sourcesContent":["import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { InjectionToken } from \"@angular/core\";\n\ntype StoreInitializer<S> = (store: S) => Promise<void> | void;\n\ninterface StoreInitializerEntry<S> {\n key: { new(): S };\n initializer: StoreInitializer<S>;\n}\n\nconst STORE_INITIALIZER = new InjectionToken<StoreInitializer<any>>('[@ng-atomic/common/pages/form] StoreInitializer');\n\nfunction provideStoreInitializer<S>(key: {new(): S}, initializer: StoreInitializer<S>) {\n return [\n { provide: STORE_INITIALIZER, useValue: { key, initializer}, multi: true },\n ];\n}\n\nfunction injectInitializerEntries<S>(): StoreInitializerEntry<S>[] {\n return inject<StoreInitializerEntry<S>[]>(STORE_INITIALIZER, {optional: true}) ?? [];\n}\n\nfunction injectStoreInitializers<S>(key: {new(): S}): StoreInitializer<S>[] {\n const entries = injectInitializerEntries<S>();\n return entries.filter(entry => entry.key === key).map(entry => entry.initializer);\n}\n\nexport function makeInitializerConfig<S>(klass: {new(): S}) {\n return {\n provide<SI extends StoreInitializer<S>>(initializer: SI) {\n return provideStoreInitializer(klass, initializer);\n },\n inject(): StoreInitializer<S>[] {\n return injectStoreInitializers(klass);\n },\n async initializeStore(store: S) {\n const injector = inject(Injector);\n const initializers = injectStoreInitializers(klass);\n for (const initializer of initializers) {\n await runInInjectionContext(injector, () => initializer(store));\n }\n },\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InitializerService {\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAUA,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAwB,iDAAiD,CAAC
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-initializer.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/initializer/initializer.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/initializer/ng-atomic-common-services-initializer.ts"],"sourcesContent":["import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';\nimport { InjectionToken } from \"@angular/core\";\n\ntype StoreInitializer<S> = (store: S) => Promise<void> | void;\n\ninterface StoreInitializerEntry<S> {\n key: { new(): S };\n initializer: StoreInitializer<S>;\n}\n\nconst STORE_INITIALIZER = new InjectionToken<StoreInitializer<any>>('[@ng-atomic/common/pages/form] StoreInitializer');\n\nfunction provideStoreInitializer<S>(key: {new(): S}, initializer: StoreInitializer<S>) {\n return [\n { provide: STORE_INITIALIZER, useValue: { key, initializer}, multi: true },\n ];\n}\n\nfunction injectInitializerEntries<S>(): StoreInitializerEntry<S>[] {\n return inject<StoreInitializerEntry<S>[]>(STORE_INITIALIZER, {optional: true}) ?? [];\n}\n\nfunction injectStoreInitializers<S>(key: {new(): S}): StoreInitializer<S>[] {\n const entries = injectInitializerEntries<S>();\n return entries.filter(entry => entry.key === key).map(entry => entry.initializer);\n}\n\nexport function makeInitializerConfig<S>(klass: {new(): S}) {\n return {\n provide<SI extends StoreInitializer<S>>(initializer: SI) {\n return provideStoreInitializer(klass, initializer);\n },\n inject(): StoreInitializer<S>[] {\n return injectStoreInitializers(klass);\n },\n async initializeStore(store: S) {\n const injector = inject(Injector);\n const initializers = injectStoreInitializers(klass);\n for (const initializer of initializers) {\n await runInInjectionContext(injector, () => initializer(store));\n }\n },\n }\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InitializerService {\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAUA,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAwB,iDAAiD,CAAC;AAEtH,SAAS,uBAAuB,CAAI,GAAe,EAAE,WAAgC,EAAA;IACnF,OAAO;AACL,QAAA,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,WAAW,EAAC,EAAE,KAAK,EAAE,IAAI,EAAE;KAC3E;AACH;AAEA,SAAS,wBAAwB,GAAA;AAC/B,IAAA,OAAO,MAAM,CAA6B,iBAAiB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE;AACtF;AAEA,SAAS,uBAAuB,CAAI,GAAe,EAAA;AACjD,IAAA,MAAM,OAAO,GAAG,wBAAwB,EAAK;IAC7C,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC;AACnF;AAEM,SAAU,qBAAqB,CAAI,KAAiB,EAAA;IACxD,OAAO;AACL,QAAA,OAAO,CAAiC,WAAe,EAAA;AACrD,YAAA,OAAO,uBAAuB,CAAC,KAAK,EAAE,WAAW,CAAC;SACnD;QACD,MAAM,GAAA;AACJ,YAAA,OAAO,uBAAuB,CAAC,KAAK,CAAC;SACtC;QACD,MAAM,eAAe,CAAC,KAAQ,EAAA;AAC5B,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,YAAA,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC;AACnD,YAAA,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;AACtC,gBAAA,MAAM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;;SAElE;KACF;AACH;MAKa,kBAAkB,CAAA;8GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/CD;;AAEG;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Injectable } from '@angular/core';
|
|
3
|
+
import { has, get } from 'lodash-es';
|
|
4
|
+
|
|
5
|
+
const DOMAIN_LANG_MAP = new InjectionToken('domain lang map');
|
|
6
|
+
class LanguageService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.map = inject(DOMAIN_LANG_MAP, { optional: true }) ?? {};
|
|
9
|
+
this.regexResolvers = Object.entries(this.map).map(([regexKey, value]) => {
|
|
10
|
+
const regexIndicators = /[.*+?^${}()|[\]\\]/;
|
|
11
|
+
if (regexIndicators.test(regexKey)) {
|
|
12
|
+
return (key) => {
|
|
13
|
+
const regex = new RegExp(regexKey);
|
|
14
|
+
return regex.test(key) ? value : null;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return () => null;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
translate(text, src, dest, context) {
|
|
21
|
+
return text;
|
|
22
|
+
}
|
|
23
|
+
transform(input, map = this.map) {
|
|
24
|
+
if (has(map, input))
|
|
25
|
+
return get(map, input);
|
|
26
|
+
for (const resolver of this.regexResolvers) {
|
|
27
|
+
const result = resolver(input);
|
|
28
|
+
if (result)
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
return map[input] ?? input;
|
|
32
|
+
}
|
|
33
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: LanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
34
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: LanguageService, providedIn: 'any' }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: LanguageService, decorators: [{
|
|
37
|
+
type: Injectable,
|
|
38
|
+
args: [{ providedIn: 'any' }]
|
|
39
|
+
}] });
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Generated bundle index. Do not edit.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
export { DOMAIN_LANG_MAP, LanguageService };
|
|
46
|
+
//# sourceMappingURL=ng-atomic-common-services-language.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-language.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/services/language/language.service.ts","../../../../../packages/@ng-atomic/common/src/lib/services/language/ng-atomic-common-services-language.ts"],"sourcesContent":["import { InjectionToken, inject, Injectable } from '@angular/core';\nimport { get, has } from 'lodash-es';\n\nexport type DomainLangMap = Record<string, string>;\nexport const DOMAIN_LANG_MAP = new InjectionToken<DomainLangMap>('domain lang map');\n\n@Injectable({ providedIn: 'any' })\nexport class LanguageService {\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 translate(text: string, src: string, dest: string, context?: any): string {\n return text;\n }\n\n transform(input: string, map: DomainLangMap = this.map): string {\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAIa,eAAe,GAAG,IAAI,cAAc,CAAgB,iBAAiB;MAGrE,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,EAAE;AACrD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAI;YAC5E,MAAM,eAAe,GAAG,oBAAoB;AAC5C,YAAA,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAClC,OAAO,CAAC,GAAW,KAAI;AACrB,oBAAA,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC;AAClC,oBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI;AACvC,iBAAC;;AAEH,YAAA,OAAO,MAAM,IAAI;AACnB,SAAC,CAAC;AAcH;AAZC,IAAA,SAAS,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY,EAAE,OAAa,EAAA;AAC9D,QAAA,OAAO,IAAI;;AAGb,IAAA,SAAS,CAAC,KAAa,EAAE,GAAqB,GAAA,IAAI,CAAC,GAAG,EAAA;AACpD,QAAA,IAAI,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC3C,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;AAC1C,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC9B,YAAA,IAAI,MAAM;AAAE,gBAAA,OAAO,MAAM;;AAE3B,QAAA,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK;;8GAvBjB,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,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,eAAe,cADF,KAAK,EAAA,CAAA,CAAA;;2FAClB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,KAAK,EAAE;;;ACNjC;;AAEG;;;;"}
|