@ng-atomic/common 18.9.0 → 18.10.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/esm2022/services/form/json-schema/json-schema.service.mjs +108 -89
- package/esm2022/utils/form/form.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +108 -89
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +2 -2
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/package.json +2 -2
- package/services/form/json-schema/json-schema.service.d.ts +26 -23
|
@@ -3,121 +3,140 @@ import { FormBuilder, Validators } from "@angular/forms";
|
|
|
3
3
|
import { targetConstructorToSchema } from './json-schema';
|
|
4
4
|
import { merge } from "lodash-es";
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (!schema || !schema.items) {
|
|
24
|
-
return fb.array([]);
|
|
6
|
+
export class JsonSchemaFormUtils {
|
|
7
|
+
static removeObjectPercent(value) {
|
|
8
|
+
return Object.entries(value).reduce((acc, [key, value]) => {
|
|
9
|
+
if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {
|
|
10
|
+
acc[key] = value.slice(1, -1);
|
|
11
|
+
}
|
|
12
|
+
else if (typeof value === 'string' && value.startsWith('%')) {
|
|
13
|
+
acc[key] = value.slice(1);
|
|
14
|
+
}
|
|
15
|
+
else if (typeof value === 'string' && value.endsWith('%')) {
|
|
16
|
+
acc[key] = value.slice(0, -1);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
acc[key] = value;
|
|
20
|
+
}
|
|
21
|
+
return acc;
|
|
22
|
+
}, {});
|
|
25
23
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return array;
|
|
31
|
-
}
|
|
32
|
-
export function buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
33
|
-
if (property.type === 'string') {
|
|
34
|
-
if (property.format === 'date-time') {
|
|
35
|
-
return fb.control(value ?? property.default ?? null, validators);
|
|
24
|
+
static buildFormGroupByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, } = {}) {
|
|
25
|
+
console.debug('[buildFormGroupByJsonSchema] schema:', schema);
|
|
26
|
+
if (!schema || !schema?.properties) {
|
|
27
|
+
return fb.group({});
|
|
36
28
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
29
|
+
const group = {};
|
|
30
|
+
for (const key in schema.properties) {
|
|
31
|
+
const property = schema.properties[key];
|
|
32
|
+
const validators = [];
|
|
33
|
+
if (schema.required && schema.required.includes(key)) {
|
|
34
|
+
validators.push(Validators.required);
|
|
35
|
+
}
|
|
36
|
+
group[key] = this.buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
|
|
42
37
|
}
|
|
38
|
+
return fb.group(group);
|
|
43
39
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
else if (property.type === 'array') {
|
|
54
|
-
return buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
export function buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
58
|
-
if (!schema || !schema.properties) {
|
|
59
|
-
return {
|
|
60
|
-
id: { type: 'hidden' },
|
|
61
|
-
};
|
|
40
|
+
static buildFormArrayByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = [], } = {}) {
|
|
41
|
+
if (!schema || !schema.items) {
|
|
42
|
+
return fb.array([]);
|
|
43
|
+
}
|
|
44
|
+
console.debug('[buildFormArrayByJsonSchema] schema:', schema);
|
|
45
|
+
const array = fb.array([
|
|
46
|
+
this.buildFormGroupByJsonSchema(schema.items, { fb }),
|
|
47
|
+
]);
|
|
48
|
+
return array;
|
|
62
49
|
}
|
|
63
|
-
|
|
64
|
-
for (const key in schema.properties) {
|
|
65
|
-
const property = schema.properties[key];
|
|
50
|
+
static buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
66
51
|
if (property.type === 'string') {
|
|
67
|
-
if (property.
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
else if (property.format === 'date-time') {
|
|
71
|
-
fieldMap[key] = { type: 'date' };
|
|
52
|
+
if (property.format === 'date-time') {
|
|
53
|
+
return fb.control(value ?? property.default ?? null, validators);
|
|
72
54
|
}
|
|
73
55
|
else if (property.format === 'binary') {
|
|
74
|
-
|
|
56
|
+
return fb.control(value ?? property.default ?? null, validators);
|
|
75
57
|
}
|
|
76
58
|
else {
|
|
77
|
-
|
|
59
|
+
return fb.control(value ?? property.default ?? '', validators);
|
|
78
60
|
}
|
|
79
61
|
}
|
|
62
|
+
else if (property.type === 'integer') {
|
|
63
|
+
return fb.control(value ?? property.default ?? 0, validators);
|
|
64
|
+
}
|
|
65
|
+
else if (property.type === 'number') {
|
|
66
|
+
return fb.control(value ?? property.default ?? 0, validators);
|
|
67
|
+
}
|
|
80
68
|
else if (property.type === 'object') {
|
|
81
|
-
|
|
82
|
-
for (const childKey in childFieldMap) {
|
|
83
|
-
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
84
|
-
}
|
|
69
|
+
return this.buildFormGroupByJsonSchema(property, { fb, value: (value || {}) });
|
|
85
70
|
}
|
|
86
71
|
else if (property.type === 'array') {
|
|
87
|
-
|
|
88
|
-
for (const childKey in childFieldMap) {
|
|
89
|
-
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
90
|
-
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
91
|
-
}
|
|
72
|
+
return this.buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
92
73
|
}
|
|
93
|
-
|
|
94
|
-
|
|
74
|
+
}
|
|
75
|
+
static buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
76
|
+
return {
|
|
77
|
+
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
78
|
+
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
static buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
82
|
+
if (!schema || !schema.properties) {
|
|
83
|
+
return {
|
|
84
|
+
id: { type: 'hidden' },
|
|
85
|
+
};
|
|
95
86
|
}
|
|
96
|
-
|
|
87
|
+
const fieldMap = {};
|
|
88
|
+
for (const key in schema.properties) {
|
|
89
|
+
const property = schema.properties[key];
|
|
90
|
+
if (property.type === 'string') {
|
|
91
|
+
if (property.enum) {
|
|
92
|
+
fieldMap[key] = { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
|
|
93
|
+
}
|
|
94
|
+
else if (property.format === 'date-time') {
|
|
95
|
+
fieldMap[key] = { type: 'date' };
|
|
96
|
+
}
|
|
97
|
+
else if (property.format === 'binary') {
|
|
98
|
+
fieldMap[key] = { type: 'file' };
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
fieldMap[key] = { type: 'text' };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (property.type === 'object') {
|
|
105
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
106
|
+
for (const childKey in childFieldMap) {
|
|
107
|
+
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
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
|
+
}
|
|
122
|
+
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
123
|
+
return merge(fieldMap, options.merge);
|
|
97
124
|
}
|
|
98
|
-
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
99
|
-
return merge(fieldMap, options.merge);
|
|
100
|
-
}
|
|
101
|
-
export function buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
102
|
-
return {
|
|
103
|
-
form: buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
104
|
-
fieldMap: buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
105
|
-
};
|
|
106
125
|
}
|
|
107
126
|
export function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
108
127
|
const schema = targetConstructorToSchema(klass);
|
|
109
|
-
return buildFormGroupByJsonSchema(schema, { fb, value });
|
|
128
|
+
return this.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
110
129
|
}
|
|
111
130
|
export function buildFormFieldMap(klass, options) {
|
|
112
131
|
const schema = targetConstructorToSchema(klass);
|
|
113
|
-
const map = buildFormFieldMapByJsonSchema(schema, options);
|
|
132
|
+
const map = this.buildFormFieldMapByJsonSchema(schema, options);
|
|
114
133
|
return merge(map, options.merge);
|
|
115
134
|
}
|
|
116
135
|
export function buildForm(klass, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
117
136
|
const schema = targetConstructorToSchema(klass);
|
|
118
137
|
return {
|
|
119
|
-
form: buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
120
|
-
fieldMap: buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
138
|
+
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
139
|
+
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
121
140
|
};
|
|
122
141
|
}
|
|
123
142
|
export class JsonSchemaFormService {
|
|
@@ -125,10 +144,10 @@ export class JsonSchemaFormService {
|
|
|
125
144
|
this.fb = inject(FormBuilder).nonNullable;
|
|
126
145
|
}
|
|
127
146
|
build(schema, { fb = this.fb, value = {}, } = {}) {
|
|
128
|
-
return buildFormGroupByJsonSchema(schema, { fb, value });
|
|
147
|
+
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
129
148
|
}
|
|
130
149
|
buildFieldMap(schema, options = {}) {
|
|
131
|
-
return buildFormFieldMapByJsonSchema(schema, options);
|
|
150
|
+
return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);
|
|
132
151
|
}
|
|
133
152
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
134
153
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, providedIn: 'root' }); }
|
|
@@ -137,4 +156,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
137
156
|
type: Injectable,
|
|
138
157
|
args: [{ providedIn: 'root' }]
|
|
139
158
|
}] });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsQyxNQUFNLFVBQVUsMEJBQTBCLENBQUMsTUFBa0IsRUFBRSxFQUM3RCxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFDcEMsS0FBSyxHQUFHLEVBQUUsTUFJUixFQUFFO0lBQ0osT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQVEsRUFBRSxDQUFDO0lBRXRCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBRXRCLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEs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LEVBQUUsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQ3JELFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFDLENBQUM7S0FDbkUsQ0FBQztBQUNKLENBQUM7QUFJRCxNQUFNLE9BQU8scUJBQXFCO0lBRGxDO1FBRVUsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7S0FvQjlDO0lBbEJDLEtBQUssQ0FBQyxNQUFrQixFQUFFLEVBQ3hCLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxFQUNaLEtBQUssR0FBRyxFQUFFLE1BSVIsRUFBRTtRQUNKLE9BQU8sMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGFBQWEsQ0FDWCxNQUFrQixFQUNsQixVQUVJLEVBQUU7UUFFTixPQUFPLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RCxDQUFDOzhHQXBCVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURSLE1BQU07OzJGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEpzb25TY2hlbWEgfSBmcm9tIFwianNvbi1zY2hlbWEtbGlicmFyeVwiO1xuaW1wb3J0IHsgdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSB9IGZyb20gJy4vanNvbi1zY2hlbWEnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSA9IHt9LFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG59ID0ge30pOiBGb3JtR3JvdXAge1xuICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICBpZiAoIXNjaGVtYSB8fCAhc2NoZW1hPy5wcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIGZiLmdyb3VwKHt9KTtcbiAgfVxuICBjb25zdCBncm91cDogYW55ID0ge307XG4gIFxuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG5cbiAgICBpZiAoc2NoZW1hLnJlcXVpcmVkICYmIHNjaGVtYS5yZXF1aXJlZC5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgfVxuICAgIGdyb3VwW2tleV0gPSBidWlsZEZvcm1CeUpzb25TY2hlbWFQcm9wZXJ0eShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogdmFsdWU/LltrZXldLCB2YWxpZGF0b3JzfSk7XG4gIH1cbiAgcmV0dXJuIGZiLmdyb3VwKGdyb3VwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlID0gW10sXG59OiB7XG4gIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICB2YWx1ZT86IGFueVtdLFxufSA9IHt9KTogYW55IHtcbiAgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYS5pdGVtcykge1xuICAgIHJldHVybiBmYi5hcnJheShbXSk7XG4gIH1cbiAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUFycmF5QnlKc29uU2NoZW1hXSBzY2hlbWE6Jywgc2NoZW1hKTtcbiAgY29uc3QgYXJyYXkgPSBmYi5hcnJheShbXG4gICAgYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLml0ZW1zLCB7ZmJ9KSxcbiAgXSlcbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHk6IEpzb25TY2hlbWEsIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSA9IG51bGwsXG4gIHZhbGlkYXRvcnMgPSBbXSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0IHwgb2JqZWN0W10sXG4gIHZhbGlkYXRvcnM/OiBhbnlbXSxcbn0gPSB7fSk6IGFueSB7XG4gIGlmIChwcm9wZXJ0eS50eXBlID09PSAnc3RyaW5nJykge1xuICAgIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdkYXRlLXRpbWUnKSB7XG4gICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IG51bGwsIHZhbGlkYXRvcnMpO1xuICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnYmluYXJ5Jykge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyBudWxsLCB2YWxpZGF0b3JzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAnJywgdmFsaWRhdG9ycyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gMCwgdmFsaWRhdG9ycyk7XG4gIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IDAsIHZhbGlkYXRvcnMpO1xuICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHByb3BlcnR5LCB7ZmIsIHZhbHVlOiAodmFsdWUgfHwge30pIGFzIG9iamVjdH0pO1xuICB9XG4gIGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdhcnJheScpIHtcbiAgICByZXR1cm4gYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWEocHJvcGVydHksIHtmYiwgdmFsdWU6ICh2YWx1ZSB8fCBbXSkgYXMgYW55W119KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoXG4gIHNjaGVtYTogSnNvblNjaGVtYSxcbiAgb3B0aW9uczoge1xuICAgIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgfSA9IHt9LFxuKTogYW55IHtcbiAgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB7IHR5cGU6ICdoaWRkZW4nIH0sXG4gICAgfTtcbiAgfVxuICBjb25zdCBmaWVsZE1hcDogYW55ID0ge307XG4gIFxuICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gc2NoZW1hLnByb3BlcnRpZXNba2V5XTtcbiAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChwcm9wZXJ0eS5lbnVtKSB7XG4gICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6ICdzZWxlY3QnLCBvcHRpb25zOiBwcm9wZXJ0eS5lbnVtLm1hcCgodjogc3RyaW5nKSA9PiAoeyB2YWx1ZTogdiwgbmFtZTogdiB9KSkgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZGF0ZScgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnYmluYXJ5Jykge1xuICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZmlsZScgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6ICd0ZXh0JyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IGNoaWxkRmllbGRNYXAgPSBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShwcm9wZXJ0eSwgb3B0aW9ucyk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgZmllbGRNYXBbYCR7a2V5fS4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBjb25zdCBjaGlsZEZpZWxkTWFwID0gYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHkuaXRlbXMsIG9wdGlvbnMpO1xuICAgICAgZm9yIChjb25zdCBjaGlsZEtleSBpbiBjaGlsZEZpZWxkTWFwKSB7XG4gICAgICAgIC8vIFRPRE86IOato+imj+ihqOePvuOBp+ODkeOCueODnuODg+ODgeOCkuWIpOWumuOBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi+OAglxuICAgICAgICBmaWVsZE1hcFtgJHtrZXl9LlxcXFxkKy4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6IHByb3BlcnR5LnR5cGUgfTtcbiAgICB9XG4gICAgLy8gY29uc3QgdHlwZSA9ICA/ICdkYXRlJyA6IHByb3BlcnR5LnR5cGU7XG4gIH1cblxuICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWFdIGZpZWxkTWFwOicsIGZpZWxkTWFwKTtcblxuICByZXR1cm4gbWVyZ2UoZmllbGRNYXAsIG9wdGlvbnMubWVyZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlID0ge30sXG4gIGZpZWxkTWFwID0ge30sXG59OiB7XG4gIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICB2YWx1ZT86IG9iamVjdCxcbiAgZmllbGRNYXA/OiBvYmplY3QsXG59ID0ge30pOiBhbnkge1xuICByZXR1cm4ge1xuICAgIGZvcm06IGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pLFxuICAgIGZpZWxkTWFwOiBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUdyb3VwKGtsYXNzOiBuZXcoKSA9PiBhbnksIHtcbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICB2YWx1ZSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxufSk6IEZvcm1Hcm91cCB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4gYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUZpZWxkTWFwKGtsYXNzOiBuZXcoKSA9PiBhbnksIG9wdGlvbnM6IHtcbiAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxufSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICBjb25zdCBtYXAgPSBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICByZXR1cm4gbWVyZ2UobWFwLCBvcHRpb25zLm1lcmdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybShrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUgPSB7fSxcbiAgZmllbGRNYXAgPSB7fSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxuICBmaWVsZE1hcD86IG9iamVjdCxcbn0gPSB7fSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4ge1xuICAgIGZvcm06IGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pLFxuICAgIGZpZWxkTWFwOiBidWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIHttZXJnZTogZmllbGRNYXB9KSxcbiAgfTtcbn1cblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEpzb25TY2hlbWFGb3JtU2VydmljZSB7XG4gIHByaXZhdGUgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlO1xuXG4gIGJ1aWxkKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gdGhpcy5mYixcbiAgICB2YWx1ZSA9IHt9LFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QsXG4gIH0gPSB7fSk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIGJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xuICB9XG5cbiAgYnVpbGRGaWVsZE1hcChcbiAgICBzY2hlbWE6IEpzb25TY2hlbWEsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIH0gPSB7fSxcbiAgKTogYW55IHtcbiAgICByZXR1cm4gYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoc2NoZW1hLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
|
|
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==
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { toSignal } from "@angular/core/rxjs-interop";
|
|
2
|
-
import { map, merge, of, startWith } from "rxjs";
|
|
2
|
+
import { distinctUntilChanged, map, merge, of, startWith } from "rxjs";
|
|
3
3
|
import { computedAsync } from "ngxtension/computed-async";
|
|
4
4
|
import { computeFake } from "@ng-atomic/core";
|
|
5
5
|
export function getValue$(control) {
|
|
6
|
-
return merge(of(control.value), control.valueChanges);
|
|
6
|
+
return merge(of(control.value), control.valueChanges).pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
|
|
7
7
|
}
|
|
8
8
|
export function getValue(control) {
|
|
9
9
|
return toSignal(getValue$(control));
|
|
@@ -23,4 +23,4 @@ export function getInvalid$(control) {
|
|
|
23
23
|
export function getInvalid(form) {
|
|
24
24
|
return toSignal(getInvalid$(form));
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvdXRpbHMvZm9ybS9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RCxPQUFPLEVBQWMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsTUFBTSxVQUFVLFNBQVMsQ0FBSSxPQUEyQjtJQUN0RCxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3hELG9CQUFvQixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2hGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBSSxPQUEyQjtJQUNyRCxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLFlBQVksQ0FBSSxPQUEyQjtJQUN6RCxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBSSxPQUEyQjtJQUN4RCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFJLGNBQXdDO0lBQzFFLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQzNELFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FDMUMsRUFBRSxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUksT0FBMkI7SUFDeEQsT0FBTyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBSSxJQUF3QjtJQUNwRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlLCBvZiwgc3RhcnRXaXRoIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGNvbXB1dGVkQXN5bmMgfSBmcm9tIFwibmd4dGVuc2lvbi9jb21wdXRlZC1hc3luY1wiO1xuaW1wb3J0IHsgY29tcHV0ZUZha2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb3JlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZSQ8VD4oY29udHJvbDogQWJzdHJhY3RDb250cm9sPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBtZXJnZShvZihjb250cm9sLnZhbHVlKSwgY29udHJvbC52YWx1ZUNoYW5nZXMpLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZSwgY3VyKSA9PiBKU09OLnN0cmluZ2lmeShwcmUpID09PSBKU09OLnN0cmluZ2lmeShjdXIpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlPFQ+KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChnZXRWYWx1ZSQoY29udHJvbCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3VmFsdWUkPFQ+KGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxUPik6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gbWVyZ2Uob2YoY29udHJvbC5nZXRSYXdWYWx1ZSgpKSwgY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gY29udHJvbC5nZXRSYXdWYWx1ZSgpKSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmF3VmFsdWU8VD4oY29udHJvbDogQWJzdHJhY3RDb250cm9sPFQ+KTogU2lnbmFsPFQ+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGdldFJhd1ZhbHVlJChjb250cm9sKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlZFJhd1ZhbHVlPFQ+KGNvbnRyb2xGYWN0b3J5OiAoKSA9PiBBYnN0cmFjdENvbnRyb2w8VD4pOiBTaWduYWw8VD4ge1xuICByZXR1cm4gY29tcHV0ZWRBc3luYygoKSA9PiBjb250cm9sRmFjdG9yeSgpLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4gY29udHJvbEZhY3RvcnkoKS5nZXRSYXdWYWx1ZSgpKSxcbiAgKSwgeyBpbml0aWFsVmFsdWU6IGNvbXB1dGVGYWtlKGNvbnRyb2xGYWN0b3J5KCkpLmdldFJhd1ZhbHVlKCkgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnZhbGlkJDxUPihjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8VD4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4gY29udHJvbC5pbnZhbGlkKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEludmFsaWQ8VD4oZm9ybTogQWJzdHJhY3RDb250cm9sPFQ+KTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGdldEludmFsaWQkKGZvcm0pKTtcbn1cblxuIl19
|
|
@@ -51,121 +51,140 @@ function targetConstructorToSchema(target, options = {}) {
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (!schema || !schema.items) {
|
|
72
|
-
return fb.array([]);
|
|
54
|
+
class JsonSchemaFormUtils {
|
|
55
|
+
static removeObjectPercent(value) {
|
|
56
|
+
return Object.entries(value).reduce((acc, [key, value]) => {
|
|
57
|
+
if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {
|
|
58
|
+
acc[key] = value.slice(1, -1);
|
|
59
|
+
}
|
|
60
|
+
else if (typeof value === 'string' && value.startsWith('%')) {
|
|
61
|
+
acc[key] = value.slice(1);
|
|
62
|
+
}
|
|
63
|
+
else if (typeof value === 'string' && value.endsWith('%')) {
|
|
64
|
+
acc[key] = value.slice(0, -1);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
acc[key] = value;
|
|
68
|
+
}
|
|
69
|
+
return acc;
|
|
70
|
+
}, {});
|
|
73
71
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return array;
|
|
79
|
-
}
|
|
80
|
-
function buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
81
|
-
if (property.type === 'string') {
|
|
82
|
-
if (property.format === 'date-time') {
|
|
83
|
-
return fb.control(value ?? property.default ?? null, validators);
|
|
72
|
+
static buildFormGroupByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, } = {}) {
|
|
73
|
+
console.debug('[buildFormGroupByJsonSchema] schema:', schema);
|
|
74
|
+
if (!schema || !schema?.properties) {
|
|
75
|
+
return fb.group({});
|
|
84
76
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
77
|
+
const group = {};
|
|
78
|
+
for (const key in schema.properties) {
|
|
79
|
+
const property = schema.properties[key];
|
|
80
|
+
const validators = [];
|
|
81
|
+
if (schema.required && schema.required.includes(key)) {
|
|
82
|
+
validators.push(Validators.required);
|
|
83
|
+
}
|
|
84
|
+
group[key] = this.buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
|
|
90
85
|
}
|
|
86
|
+
return fb.group(group);
|
|
91
87
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
else if (property.type === 'array') {
|
|
102
|
-
return buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
function buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
106
|
-
if (!schema || !schema.properties) {
|
|
107
|
-
return {
|
|
108
|
-
id: { type: 'hidden' },
|
|
109
|
-
};
|
|
88
|
+
static buildFormArrayByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = [], } = {}) {
|
|
89
|
+
if (!schema || !schema.items) {
|
|
90
|
+
return fb.array([]);
|
|
91
|
+
}
|
|
92
|
+
console.debug('[buildFormArrayByJsonSchema] schema:', schema);
|
|
93
|
+
const array = fb.array([
|
|
94
|
+
this.buildFormGroupByJsonSchema(schema.items, { fb }),
|
|
95
|
+
]);
|
|
96
|
+
return array;
|
|
110
97
|
}
|
|
111
|
-
|
|
112
|
-
for (const key in schema.properties) {
|
|
113
|
-
const property = schema.properties[key];
|
|
98
|
+
static buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
114
99
|
if (property.type === 'string') {
|
|
115
|
-
if (property.
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
else if (property.format === 'date-time') {
|
|
119
|
-
fieldMap[key] = { type: 'date' };
|
|
100
|
+
if (property.format === 'date-time') {
|
|
101
|
+
return fb.control(value ?? property.default ?? null, validators);
|
|
120
102
|
}
|
|
121
103
|
else if (property.format === 'binary') {
|
|
122
|
-
|
|
104
|
+
return fb.control(value ?? property.default ?? null, validators);
|
|
123
105
|
}
|
|
124
106
|
else {
|
|
125
|
-
|
|
107
|
+
return fb.control(value ?? property.default ?? '', validators);
|
|
126
108
|
}
|
|
127
109
|
}
|
|
110
|
+
else if (property.type === 'integer') {
|
|
111
|
+
return fb.control(value ?? property.default ?? 0, validators);
|
|
112
|
+
}
|
|
113
|
+
else if (property.type === 'number') {
|
|
114
|
+
return fb.control(value ?? property.default ?? 0, validators);
|
|
115
|
+
}
|
|
128
116
|
else if (property.type === 'object') {
|
|
129
|
-
|
|
130
|
-
for (const childKey in childFieldMap) {
|
|
131
|
-
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
132
|
-
}
|
|
117
|
+
return this.buildFormGroupByJsonSchema(property, { fb, value: (value || {}) });
|
|
133
118
|
}
|
|
134
119
|
else if (property.type === 'array') {
|
|
135
|
-
|
|
136
|
-
for (const childKey in childFieldMap) {
|
|
137
|
-
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
138
|
-
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
139
|
-
}
|
|
120
|
+
return this.buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
140
121
|
}
|
|
141
|
-
|
|
142
|
-
|
|
122
|
+
}
|
|
123
|
+
static buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
124
|
+
return {
|
|
125
|
+
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
126
|
+
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
static buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
130
|
+
if (!schema || !schema.properties) {
|
|
131
|
+
return {
|
|
132
|
+
id: { type: 'hidden' },
|
|
133
|
+
};
|
|
143
134
|
}
|
|
144
|
-
|
|
135
|
+
const fieldMap = {};
|
|
136
|
+
for (const key in schema.properties) {
|
|
137
|
+
const property = schema.properties[key];
|
|
138
|
+
if (property.type === 'string') {
|
|
139
|
+
if (property.enum) {
|
|
140
|
+
fieldMap[key] = { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
|
|
141
|
+
}
|
|
142
|
+
else if (property.format === 'date-time') {
|
|
143
|
+
fieldMap[key] = { type: 'date' };
|
|
144
|
+
}
|
|
145
|
+
else if (property.format === 'binary') {
|
|
146
|
+
fieldMap[key] = { type: 'file' };
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
fieldMap[key] = { type: 'text' };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
else if (property.type === 'object') {
|
|
153
|
+
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
154
|
+
for (const childKey in childFieldMap) {
|
|
155
|
+
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
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
|
+
}
|
|
170
|
+
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
171
|
+
return merge(fieldMap, options.merge);
|
|
145
172
|
}
|
|
146
|
-
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
147
|
-
return merge(fieldMap, options.merge);
|
|
148
|
-
}
|
|
149
|
-
function buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
150
|
-
return {
|
|
151
|
-
form: buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
152
|
-
fieldMap: buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
153
|
-
};
|
|
154
173
|
}
|
|
155
174
|
function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
156
175
|
const schema = targetConstructorToSchema(klass);
|
|
157
|
-
return buildFormGroupByJsonSchema(schema, { fb, value });
|
|
176
|
+
return this.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
158
177
|
}
|
|
159
178
|
function buildFormFieldMap(klass, options) {
|
|
160
179
|
const schema = targetConstructorToSchema(klass);
|
|
161
|
-
const map = buildFormFieldMapByJsonSchema(schema, options);
|
|
180
|
+
const map = this.buildFormFieldMapByJsonSchema(schema, options);
|
|
162
181
|
return merge(map, options.merge);
|
|
163
182
|
}
|
|
164
183
|
function buildForm(klass, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
165
184
|
const schema = targetConstructorToSchema(klass);
|
|
166
185
|
return {
|
|
167
|
-
form: buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
168
|
-
fieldMap: buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
186
|
+
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
187
|
+
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
169
188
|
};
|
|
170
189
|
}
|
|
171
190
|
class JsonSchemaFormService {
|
|
@@ -173,10 +192,10 @@ class JsonSchemaFormService {
|
|
|
173
192
|
this.fb = inject(FormBuilder).nonNullable;
|
|
174
193
|
}
|
|
175
194
|
build(schema, { fb = this.fb, value = {}, } = {}) {
|
|
176
|
-
return buildFormGroupByJsonSchema(schema, { fb, value });
|
|
195
|
+
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
177
196
|
}
|
|
178
197
|
buildFieldMap(schema, options = {}) {
|
|
179
|
-
return buildFormFieldMapByJsonSchema(schema, options);
|
|
198
|
+
return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);
|
|
180
199
|
}
|
|
181
200
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
182
201
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, providedIn: 'root' }); }
|
|
@@ -190,5 +209,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
|
|
|
190
209
|
* Generated bundle index. Do not edit.
|
|
191
210
|
*/
|
|
192
211
|
|
|
193
|
-
export { JsonSchemaFormService,
|
|
212
|
+
export { JsonSchemaFormService, JsonSchemaFormUtils, buildForm, buildFormFieldMap, buildFormGroup };
|
|
194
213
|
//# sourceMappingURL=ng-atomic-common-services-form-json-schema.mjs.map
|
|
@@ -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 function 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] = buildFormByJsonSchemaProperty(property, {fb, value: value?.[key], validators});\n }\n return fb.group(group);\n}\n\nexport function 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 buildFormGroupByJsonSchema(schema.items, {fb}),\n ])\n return array;\n}\n\nexport function 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 buildFormGroupByJsonSchema(property, {fb, value: (value || {}) as object});\n }\n else if (property.type === 'array') {\n return buildFormArrayByJsonSchema(property, {fb, value: (value || []) as any[]});\n }\n}\n\nexport function 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 = 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 = 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\nexport function 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: buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: buildFormFieldMapByJsonSchema(schema, {merge: fieldMap}),\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 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 = 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: buildFormGroupByJsonSchema(schema, {fb, value}),\n fieldMap: 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 buildFormGroupByJsonSchema(schema, {fb, value});\n }\n\n buildFieldMap(\n schema: JsonSchema,\n options: {\n merge?: { [key: string]: any },\n } = {},\n ): any {\n return 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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"}
|
|
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":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import dayjs from 'dayjs';
|
|
2
2
|
import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
-
import { merge, of, map, startWith, shareReplay, combineLatest, filter, switchMap } from 'rxjs';
|
|
3
|
+
import { merge, of, distinctUntilChanged, map, startWith, shareReplay, combineLatest, filter, switchMap } from 'rxjs';
|
|
4
4
|
import { computedAsync } from 'ngxtension/computed-async';
|
|
5
5
|
import { computeFake } from '@ng-atomic/core';
|
|
6
6
|
import _get from 'lodash.get';
|
|
@@ -46,7 +46,7 @@ function diff(initial, current) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function getValue$(control) {
|
|
49
|
-
return merge(of(control.value), control.valueChanges);
|
|
49
|
+
return merge(of(control.value), control.valueChanges).pipe(distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)));
|
|
50
50
|
}
|
|
51
51
|
function getValue(control) {
|
|
52
52
|
return toSignal(getValue$(control));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-utils.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/utils/comma/comma.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/compare-by-id/compare-by-id.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/date-utils/date-utils.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/diff/diff.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/form/form.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/get/get.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/inject/inject.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-date.adapter.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-date.formats.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-jp-providers.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-date.module.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/page/page.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/router/router.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/smart-exp-transformer/smart-exp-transformer.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/to-object/to-object.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/time.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/index.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/ng-atomic-common-utils.ts"],"sourcesContent":["export const comma = (n: number | null): string => n === null ? '0' : n.toLocaleString();\nexport const commaStr = (n: number, unit = '円') => n < 0 ? `-${comma(abs(n))}${unit}` : `${comma(n)}${unit}`;\nexport const abs = (n: number) => Math.abs(n);","export type HasId = { id: string };\nexport function compareByIdFactory(key: string) {\n return (a: any, b: any) => parseInt(a?.[key], 10) - parseInt(b?.[key], 10);\n}\nexport const compareById = compareByIdFactory('id');\n","import dayjs from 'dayjs';\n\nexport const removeComma = (str: string) => str.replace(/\\,/g, '');\n\nexport const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ss';\nconst DATE_REGEX = /^[0-9]{4}\\/(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])$/;\nconst DATETIME_REGEX = /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\+([+-][0-2]\\d:[0-5]\\d)$/;\nexport const isDateStr = (str: string | null): str is string => str && !!str.match(DATE_REGEX);\nexport const isDateTimeStr = (str: string | null): str is string => str && !!str.match(DATE_REGEX);\n\nconst ISO_REGEX = /\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)/;\nexport const isIsoString = (str: string | null): str is string => str && !!str.match(ISO_REGEX);\n\n\nexport interface Timestamp {\n toDate: () => Date;\n}\n\nexport function timestampToDayjs(timestamp: Timestamp | null): dayjs.Dayjs | null {\n return timestamp ? dayjs(timestamp.toDate()) : null;\n}","import { SelectionModel } from \"@angular/cdk/collections\";\n\nexport function diff<T = any>(initial: SelectionModel<T>, current: SelectionModel<T>): {\n selectedIds: T[],\n unselectedIds: T[],\n} {\n return {\n selectedIds: current.selected.filter((id: T) => !initial.isSelected(id)),\n unselectedIds: initial.selected.filter((id: T) => !current.isSelected(id)),\n }\n}\n","import { Signal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { Observable, map, merge, of, startWith } from \"rxjs\";\nimport { computedAsync } from \"ngxtension/computed-async\";\nimport { computeFake } from \"@ng-atomic/core\";\n\nexport function getValue$<T>(control: AbstractControl<T>): Observable<T> {\n return merge(of(control.value), control.valueChanges);\n}\n\nexport function getValue<T>(control: AbstractControl<T>): Signal<T> {\n return toSignal(getValue$(control));\n}\n\nexport function getRawValue$<T>(control: AbstractControl<T>): Observable<T> {\n return merge(of(control.getRawValue()), control.valueChanges.pipe(map(() => control.getRawValue())));\n}\n\nexport function getRawValue<T>(control: AbstractControl<T>): Signal<T> {\n return toSignal(getRawValue$(control));\n}\n\nexport function computedRawValue<T>(controlFactory: () => AbstractControl<T>): Signal<T> {\n return computedAsync(() => controlFactory().valueChanges.pipe(\n startWith(null),\n map(() => controlFactory().getRawValue()),\n ), { initialValue: computeFake(controlFactory()).getRawValue() });\n}\n\nexport function getInvalid$<T>(control: AbstractControl<T>): Observable<boolean> {\n return control.statusChanges.pipe(\n startWith(null),\n map(() => control.invalid),\n );\n}\n\nexport function getInvalid<T>(form: AbstractControl<T>): Signal<boolean> {\n return toSignal(getInvalid$(form));\n}\n\n","import _get from 'lodash.get';\n\n// ネストされたオブジェクトのキーの組み合わせを生成する型ヘルパー\nexport type PathKeys<T> = T extends object ? {\n [K in keyof T]-?: K extends string | number ?\n T[K] extends object ? [K] | [K, ...PathKeys<T[K]>] : [K]\n : never\n}[keyof T] : [];\n\n// ネストされたパスに対応する型を抽出するための型ヘルパー\nexport type NestedGetType<T, P extends any[]> = \n P extends [infer F, ...infer R]\n ? F extends keyof T\n ? NestedGetType<T[F], R>\n : never\n : T;\n\n/** @deprecated use lodash-es */\nexport function get<T, P extends PathKeys<T>>(obj: T, path: P): NestedGetType<T, P> {\n return _get(obj, path);\n}","import { Injectable, Injector, Signal, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { ActivatedRoute, NavigationEnd, ParamMap, Params, Router } from \"@angular/router\";\nimport { Observable, combineLatest, filter, map, of, shareReplay, startWith, switchMap } from \"rxjs\";\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Type } from \"@nx-ddd/common/domain/models\";\nimport { get } from \"lodash-es\";\nimport { unflatten } from 'flat';\n\nexport function injectRouterParam$(key: string): Observable<string> {\n return inject(ActivatedRoute).paramMap.pipe(\n map((params) => params.get(key)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\n/** @deprecated */\nexport function injectRouterParam(key: string): Signal<string> {\n return toSignal(injectRouterParam$(key));\n}\n\nexport function injectRouteQueryParam$<T extends string = string>(key: string): Observable<T> {\n return inject(ActivatedRoute).queryParamMap.pipe(\n map((params) => params.get(key) as T),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectRouteQueryParam(key: string): Signal<string> {\n return toSignal(injectRouteQueryParam$(key));\n}\n\n// export function injectRouteParamMap$(): Observable<ParamMap> {\n// return inject(ActivatedRoute).paramMap.pipe(\n// shareReplay(1),\n// takeUntilDestroyed(),\n// );\n// }\n\nexport function injectRouteParams$({\n merge = true,\n route = inject(ActivatedRoute),\n}: {\n merge?: boolean,\n route?: ActivatedRoute,\n} = {}): Observable<Params> {\n const parentParams = (merge && route.parent) ? injectRouteParams$({merge, route: route.parent}) : of(new Map<string, string>());\n return combineLatest({\n parentParams,\n params: route.params\n }).pipe(\n map(({parentParams, params}) => ({\n ...parentParams,\n ...params,\n })),\n shareReplay(1),\n takeUntilDestroyed(),\n )\n}\n\nexport function injectUnflattenRouteParams$({\n merge = true,\n route = inject(ActivatedRoute),\n}: {\n merge?: boolean,\n route?: ActivatedRoute,\n} = {}) {\n return injectRouteParams$({merge, route}).pipe(\n map((params) => (unflatten(params) as any)),\n );\n}\n\nexport function injectUnflattenRouteParam$<T = any>(key: string): Observable<T> {\n return injectUnflattenRouteParams$().pipe(\n map((params) => params[key]),\n );\n}\n\nexport function injectUnflattenRouteParam<T = any>(key: string): Signal<T> {\n return toSignal(injectUnflattenRouteParam$(key));\n}\n\nexport function injectUnflattenRouteParams({\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Signal<any> {\n return toSignal(injectUnflattenRouteParams$({merge}));\n}\n\nexport function injectRouteParamMap$({\n merge = true,\n}: {\n merge?: boolean,\n} = {}) {\n return injectRouteParams$({merge}).pipe(\n map((params) => new Map(Object.entries(params)) as never as ParamMap),\n );\n}\n\nexport function injectRouteParamMap({\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Signal<ParamMap> {\n return toSignal(injectRouteParamMap$({merge}));\n}\n\n// export function injectRouteParams$(): Observable<Record<string, string>> {\n// return inject(ActivatedRoute).paramMap.pipe(\n// map((params) => {\n// const result = {};\n// params.keys.forEach(key => result[key] = params.get(key));\n// return result;\n// }),\n// shareReplay(1),\n// takeUntilDestroyed(),\n// );\n// }\n\nexport function injectRouteParams({\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Signal<Record<string, string>> {\n return toSignal(injectRouteParams$({merge}));\n}\n\nexport function injectRouteNavigated$() {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => route),\n );\n}\n\nexport function injectRouteNavigated() {\n return toSignal(injectRouteNavigated$());\n}\n\nexport function injectPrimaryPaths$() {\n return injectRouteNavigated$().pipe(\n map(route => {\n const paths = [];\n let current = route.root;\n while (current) {\n paths.push(current?.routeConfig?.path ?? null);\n current = current.firstChild;\n }\n return paths.filter(Boolean);\n }),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectPrimaryPaths() {\n return toSignal(injectPrimaryPaths$());\n}\n\nexport function injectChildRouteParam$(key: string): Observable<string> {\n return injectRouteNavigated$().pipe(\n switchMap((route) => route?.firstChild ? route.firstChild.paramMap : of(new Map<string, string>())),\n map((params) => params.get(key)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectChildRouteParam(key: string): Signal<string> {\n return toSignal(injectChildRouteParam$(key));\n}\n\nexport function injectChildRoute$() {\n return injectRouteNavigated$().pipe(\n map((route) => route?.firstChild?.firstChild),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectChildRoute(): Signal<ActivatedRoute> {\n return toSignal(injectChildRoute$());\n}\n\nexport function injectHasNext$() {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n startWith(null),\n map(() => !!route?.firstChild?.firstChild),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectHasNext() {\n return toSignal(injectHasNext$());\n}\n\nexport function injectRouterQueryParam$(key: string): Observable<string> {\n return inject(ActivatedRoute).queryParamMap.pipe(\n map((params) => params.get(key)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectRouterQueryParam(key: string): Signal<string> {\n return toSignal(injectRouterQueryParam$(key));\n}\n\nexport function injectRouteData$<T>(path: string): Observable<T> {\n return inject(ActivatedRoute).data.pipe(map(data => get(data, path) as T));\n}\n\nexport function injectRouteData<T>(key: string): Signal<T> {\n return toSignal(injectRouteData$(key));\n}\n\nexport function injectActivatedComponents(injector: Injector = inject(Injector)): any[] {\n const components = [];\n let route = injector.get(ActivatedRoute, {optional: true}) ?? null;\n while(route) {\n if (route.component) components.push(route.component);\n route = route.parent;\n }\n return components;\n}\n\n\n\nexport interface Resolver<T> {\n resolve(entry: T): T;\n resolveMany(entities: T[]): T[];\n}\n\nexport function provideResolver(\n Entity: Type<{id: string}>,\n ResolverType: new (params: Record<string, Observable<any>>) => Resolver<any>,\n) {\n return {\n provide: Entity,\n // useFactory: () => new ResolverType(params),\n deps: [],\n multi: true,\n };\n}\n\n@Injectable({providedIn: 'root'})\nexport class ResolverManager {\n protected map = new Map<string, Resolver<any>>();\n\n get(Entity: Type<{id: string}>) {\n if (!this.map.has(Entity.name)) {\n // return this.map.set()\n }\n return this.map.get(Entity.name);\n }\n}\n\nexport function injectResolver$<T>(\n ResolverType: new (params: Record<string, any>) => Resolver<T>,\n params: Record<string, Observable<any>>,\n): Observable<Resolver<T>> {\n return combineLatest(params).pipe(\n map((params) => new ResolverType(params)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function getResolver<T>(\n ResolverType: new (params: Record<string, any>) => Resolver<T>,\n params: Record<string, any>,\n): Resolver<T> {\n return new ResolverType(params);\n}\n\nexport function injectRouteParam$(key: string, {\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Observable<string> {\n return injectRouteParamMap$({merge}).pipe(\n map((params) => params.get(key)),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectRouteParam(key: string, injector?: Injector): Signal<string> {\n return toSignal(injectRouteParam$(key), {injector});\n}\n\nexport function injectRouteSkip$(): Observable<boolean> {\n return injectRouteParam$('skip', {merge: false}).pipe(\n map((skip) => skip === 'true'),\n shareReplay(1),\n takeUntilDestroyed(),\n )\n}\n\nexport function injectRouteSkip(): Signal<boolean> {\n return toSignal(injectRouteSkip$());\n}\n","\nimport { Optional, Inject, InjectionToken } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport dayjs from 'dayjs';\nimport { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\n\nexport interface DayJsDateAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * {@default false}\n */\n useUtc?: boolean;\n}\n\n/** InjectionToken for Dayjs date adapter to configure options. */\nexport const MAT_DAYJS_DATE_ADAPTER_OPTIONS = new InjectionToken<DayJsDateAdapterOptions>(\n 'MAT_DAYJS_DATE_ADAPTER_OPTIONS', {\n providedIn: 'root',\n factory: MAT_DAYJS_DATE_ADAPTER_OPTIONS_FACTORY\n});\n\nexport function MAT_DAYJS_DATE_ADAPTER_OPTIONS_FACTORY(): DayJsDateAdapterOptions {\n return {\n useUtc: false\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Dayjs Dates for use with Angular Material. */\nexport class DayjsDateAdapter extends DateAdapter<Dayjs> {\n private localeData!: {\n firstDayOfWeek: number,\n longMonths: string[],\n shortMonths: string[],\n dates: string[],\n longDaysOfWeek: string[],\n shortDaysOfWeek: string[],\n narrowDaysOfWeek: string[]\n };\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) public dateLocale: string,\n @Optional() @Inject(MAT_DAYJS_DATE_ADAPTER_OPTIONS) private options?: DayJsDateAdapterOptions\n ) {\n super();\n this.initializeParser(dateLocale);\n }\n\n // TODO: Implement\n override setLocale(locale: string) {\n super.setLocale(locale);\n\n const dayJsLocaleData = this.dayJs().localeData();\n this.localeData = {\n firstDayOfWeek: dayJsLocaleData.firstDayOfWeek(),\n longMonths: dayJsLocaleData.months(),\n shortMonths: dayJsLocaleData.monthsShort(),\n dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D')),\n longDaysOfWeek: range(7, (i) => this.dayJs().set('day', i).format('dddd')),\n shortDaysOfWeek: dayJsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: dayJsLocaleData.weekdaysMin(),\n };\n }\n\n getYear(date: Dayjs): number {\n return this.dayJs(date).year();\n }\n\n getMonth(date: Dayjs): number {\n return this.dayJs(date).month();\n }\n\n getDate(date: Dayjs): number {\n return this.dayJs(date).date();\n }\n\n getDayOfWeek(date: Dayjs): number {\n return this.dayJs(date).day();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return style === 'long' ? this.localeData.longMonths : this.localeData.shortMonths;\n }\n\n getDateNames(): string[] {\n return this.localeData.dates;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (style === 'long') {\n return this.localeData.longDaysOfWeek;\n }\n if (style === 'short') {\n return this.localeData.shortDaysOfWeek;\n }\n return this.localeData.narrowDaysOfWeek;\n }\n\n getYearName(date: Dayjs): string {\n return this.dayJs(date).format('YYYY');\n }\n\n getFirstDayOfWeek(): number {\n return this.localeData.firstDayOfWeek;\n }\n\n getNumDaysInMonth(date: Dayjs): number {\n return this.dayJs(date).daysInMonth();\n }\n\n clone(date: Dayjs): Dayjs {\n return date.clone();\n }\n\n createDate(year: number, month: number, date: number): Dayjs {\n const returnDayjs = this.dayJs()\n .set('year', year)\n .set('month', month)\n .set('date', date);\n return returnDayjs;\n }\n\n today(): Dayjs {\n return this.dayJs();\n }\n\n parse(value: any, parseFormat: string): Dayjs | null {\n if (value && typeof value === 'string') {\n return this.dayJs(value, dayjs().localeData().longDateFormat(parseFormat), this.locale);\n }\n return value ? this.dayJs(value).locale(this.locale) : null;\n }\n\n format(date: Dayjs, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('DayjsDateAdapter: Cannot format invalid date.');\n }\n return date.locale(this.locale).format(displayFormat);\n }\n\n addCalendarYears(date: Dayjs, years: number): Dayjs {\n return date.add(years, 'year');\n }\n\n addCalendarMonths(date: Dayjs, months: number): Dayjs {\n return date.add(months, 'month');\n }\n\n addCalendarDays(date: Dayjs, days: number): Dayjs {\n return date.add(days, 'day');\n }\n\n toIso8601(date: Dayjs): string {\n return date.toISOString();\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n override deserialize(value: any): Dayjs | null {\n let date;\n if (value instanceof Date) {\n date = this.dayJs(value);\n } else if (this.isDateInstance(value)) {\n // NOTE: assumes that cloning also sets the correct locale.\n return this.clone(value);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = this.dayJs(value).toISOString();\n }\n if (date && this.isValid(date as Dayjs)) {\n return this.dayJs(date); // NOTE: Is this necessary since Dayjs is immutable and Moment was not?\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return dayjs.isDayjs(obj);\n }\n\n isValid(date: Dayjs): boolean {\n return this.dayJs(date).isValid();\n }\n\n invalid(): Dayjs {\n return this.dayJs(null);\n }\n\n private dayJs(input?: any, format?: string, locale?: string): Dayjs {\n if (!this.shouldUseUtc) {\n return dayjs(input, { format, locale }, locale);\n }\n return dayjs(input, { format, locale, utc: this.shouldUseUtc }, locale).utc();\n }\n\n private get shouldUseUtc(): boolean {\n const { useUtc }: DayJsDateAdapterOptions = this.options || {};\n return !!useUtc;\n }\n\n private initializeParser(dateLocale: string) {\n if (this.shouldUseUtc) {\n dayjs.extend(utc);\n }\n\n dayjs.extend(LocalizedFormat);\n dayjs.extend(customParseFormat);\n dayjs.extend(localeData);\n\n this.setLocale(dateLocale);\n }\n}","import { MatDateFormats } from '@angular/material/core';\n\n/**\n * Custom Date-Formats and Adapter (using https://github.com/iamkun/dayjs)\n */\nexport const MAT_DAYJS_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MM/DD/YYYY',\n },\n display: {\n dateInput: 'MM/DD/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n }\n};","import { MatDateFormats, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/ja'\ndayjs.locale('ja');\n\nexport const MAT_DAYJS_DATE_FORMATS_FOR_JP: MatDateFormats = {\n parse: {\n dateInput: 'YYYY/MM/DD',\n },\n display: {\n dateInput: 'YYYY/MM/DD',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n }\n};\n\nexport const MAT_DAYJS_JP_PROVIDERS = [\n { provide: MAT_DATE_LOCALE, useValue: 'ja' },\n { provide: MAT_DATE_FORMATS, useValue: MAT_DAYJS_DATE_FORMATS_FOR_JP },\n];\n","import { NgModule, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { DayjsDateAdapter, MAT_DAYJS_DATE_ADAPTER_OPTIONS } from './dayjs-date.adapter';\nimport { MAT_DAYJS_DATE_FORMATS } from './dayjs-date.formats';\n\n@NgModule({\n providers: [\n provideDayjsDateAdapter(),\n ],\n})\nexport class DayjsDateModule { }\n\nexport function provideDayjsDateAdapter(): Provider[] {\n return [\n {\n provide: DateAdapter,\n useClass: DayjsDateAdapter,\n deps: [\n MAT_DATE_LOCALE, \n MAT_DAYJS_DATE_ADAPTER_OPTIONS,\n ]\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: MAT_DAYJS_DATE_FORMATS,\n }, \n ]\n}\n","import { PageEvent } from '@angular/material/paginator';\n\nexport interface Page extends PageEvent {\n sortKey: string;\n sortOrder: 'asc' | 'desc';\n}\n\nexport class Page {\n static from(event: Partial<Page> = {}): Page {\n return Object.assign(new Page(), {\n pageSize: 50,\n pageIndex: 0,\n length: 100,\n ...event\n });\n }\n\n get start(): number {\n return this.pageIndex * this.pageSize;\n }\n\n get end(): number {\n return Math.min((this.pageIndex + 1) * this.pageSize, this.length);\n }\n\n patch(obj: Partial<Page>): Page {\n return Page.from({...this, ...obj});\n }\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot, Routes } from \"@angular/router\";\n\nexport function walkActivatedRouteSnapshot(\n snapshot: ActivatedRouteSnapshot,\n callback: (snapshot: ActivatedRouteSnapshot) => boolean,\n target: 'children' | 'parent' = 'children',\n): void {\n if(callback(snapshot)) return;\n if (target === 'children') {\n snapshot.children.forEach(child => walkActivatedRouteSnapshot(child, callback, target));\n }\n}\n\n\nexport function skippedResolver(outlet = 'primary') {\n\tlet skipped: boolean;\n\n\treturn (route: ActivatedRouteSnapshot, snapshot: RouterStateSnapshot) => {\n\t\tconst routes = [];\n\t\twalkActivatedRouteSnapshot(snapshot.root, snapshot => {\n\t\t\tif (snapshot.outlet === outlet) {\n\t\t\t\troutes.push(snapshot);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tif (route === routes.at(-1)) {\n\t\t\treturn skipped = false;\n\t\t}\n\n\t\treturn skipped ??= route !== routes.at(-1);\n\t}\n}\n\nfunction resolveModule(m: any) {\n if (m.default) {\n return m.default;\n }\n return m;\n}\n\nexport function wrapRoutes(routes: Routes) {\n return (routes ?? []).map(route => {\n if (route.loadChildren) {\n return {\n ...route,\n loadChildren: () => (route.loadChildren() as Promise<Routes>).then(routes => {\n\t\t\t\t\treturn wrapRoutes(resolveModule(routes))\n\t\t\t\t}),\n resolve: {\n ...(route?.resolve || {}),\n skipped: skippedResolver(),\n }\n };\n }\n return {\n ...route,\n resolve: {\n ...(route?.resolve || {}),\n skipped: skippedResolver(),\n },\n };\n });\n}","import { InjectionToken } from '@angular/core';\nimport dayjs from 'dayjs';\nimport { comma } from '../comma';\n\nexport const SMART_EXP_TRANSFORMER = new InjectionToken<SmartExpTransformer>('[@ng-atomic/common] Smart Transformer');\n\nexport type SmartExpTransformer = (input: string | number | dayjs.Dayjs | any, key?: string) => string;\n\n// export const yenTransform = (value: number, _unit?: string): string => {\n// return value < 1 ? `${comma(value * 100)}%` : `${comma(value)}円`;\n// }\n\nexport const yenTransform = (value: number, _unit = ''): string => {\n return `${comma(value)} ${_unit}`;\n}\n\nexport const smartExpTransformer: SmartExpTransformer = input => dayjs.isDayjs(input)\n ? input.format('YY/MM/DD')\n : Array.isArray(input) \n ? `${input.length}個のアイテム`\n : typeof input === 'number'\n ? yenTransform(input)\n : input;","const getAllProps = (obj: object, keys: string[] = Object.keys(obj)): string[] => {\n const proto = Object.getPrototypeOf(obj);\n keys = Object.getOwnPropertyNames(proto)\n .filter(v => v !== '__proto__')\n .filter(v => Object.getOwnPropertyDescriptor(proto, v)!.get instanceof Function)\n .concat(keys);\n\n return proto.constructor.name === 'Object' ? keys : getAllProps(proto, keys);\n}\n\nexport const toObject = (obj: object): object => getAllProps(obj).reduce((p, k) => ({...p, [k]: obj[k]}), {});\n","// 秒数をhh:mm:ssの形にフォーマットする\nexport function formatSeconds(seconds: number): string {\n const h = `${Math.floor(seconds / 3600)}`.padStart(2, '0');\n const m = `${Math.floor(seconds % 3600 / 60)}`.padStart(2, '0');\n const s = `${Math.floor(seconds % 3600 % 60)}`.padStart(2, '0');\n return `${h}:${m}:${s}`;\n}","export * from './comma';\nexport * from './compare-by-id';\nexport * from './date-utils';\nexport * from './diff';\nexport * from './form';\nexport * from './get';\nexport * from './inject';\nexport * from './mat-dayjs-date';\nexport * from './page';\nexport * from './router';\nexport * from './smart-exp-transformer';\nexport * from './to-object';\n\nexport * from './time';\n// export * from './define-element';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["get"],"mappings":";;;;;;;;;;;;;;;;;;;MAAa,KAAK,GAAG,CAAC,CAAgB,KAAa,CAAC,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,cAAc,GAAG;AAC5E,MAAA,QAAQ,GAAG,CAAC,CAAS,EAAE,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,EAAG,IAAI,CAAE,CAAA,GAAG,CAAA,EAAG,KAAK,CAAC,CAAC,CAAC,CAAG,EAAA,IAAI,GAAG;AACtG,MAAM,GAAG,GAAG,CAAC,CAAS,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;;ACDtC,SAAU,kBAAkB,CAAC,GAAW,EAAA;AAC5C,IAAA,OAAO,CAAC,CAAM,EAAE,CAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;MACY,WAAW,GAAG,kBAAkB,CAAC,IAAI;;ACFrC,MAAA,WAAW,GAAG,CAAC,GAAW,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE;AAE5D,MAAM,WAAW,GAAG,sBAAsB;AACjD,MAAM,UAAU,GAAG,uDAAuD,CAAC;AAC3E,MAAM,cAAc,GAAG,uEAAuE,CAAC;AAClF,MAAA,SAAS,GAAG,CAAC,GAAkB,KAAoB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE;AAClF,MAAA,aAAa,GAAG,CAAC,GAAkB,KAAoB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE;AAEnG,MAAM,SAAS,GAAG,0EAA0E,CAAC;AAChF,MAAA,WAAW,GAAG,CAAC,GAAkB,KAAoB,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;AAO1F,SAAU,gBAAgB,CAAC,SAA2B,EAAA;AAC1D,IAAA,OAAO,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;AACtD;;AClBgB,SAAA,IAAI,CAAU,OAA0B,EAAE,OAA0B,EAAA;IAIlF,OAAO;AACL,QAAA,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAK,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACxE,QAAA,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAK,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KAC3E,CAAA;AACH;;ACHM,SAAU,SAAS,CAAI,OAA2B,EAAA;AACtD,IAAA,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACxD,CAAC;AAEK,SAAU,QAAQ,CAAI,OAA2B,EAAA;AACrD,IAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC;AAEK,SAAU,YAAY,CAAI,OAA2B,EAAA;AACzD,IAAA,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACvG,CAAC;AAEK,SAAU,WAAW,CAAI,OAA2B,EAAA;AACxD,IAAA,OAAO,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC;AAEK,SAAU,gBAAgB,CAAI,cAAwC,EAAA;AAC1E,IAAA,OAAO,aAAa,CAAC,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC,IAAI,CAC3D,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC,CAC1C,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAEK,SAAU,WAAW,CAAI,OAA2B,EAAA;IACxD,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAC/B,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAC3B,CAAC;AACJ,CAAC;AAEK,SAAU,UAAU,CAAI,IAAwB,EAAA;AACpD,IAAA,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC;;ACtBA;AACgB,SAAA,GAAG,CAA2B,GAAM,EAAE,IAAO,EAAA;AAC3D,IAAA,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACzB;;ACXM,SAAU,kBAAkB,CAAC,GAAW,EAAA;AAC5C,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CACzC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAChC,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAED;AACM,SAAU,iBAAiB,CAAC,GAAW,EAAA;AAC3C,IAAA,OAAO,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAEK,SAAU,sBAAsB,CAA4B,GAAW,EAAA;AAC3E,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC,EACrC,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEK,SAAU,qBAAqB,CAAC,GAAW,EAAA;AAC/C,IAAA,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AAEgB,SAAA,kBAAkB,CAAC,EACjC,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAI5B,EAAE,EAAA;AACJ,IAAA,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,kBAAkB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC;AAChI,IAAA,OAAO,aAAa,CAAC;QACnB,YAAY;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,KAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,EAAC,YAAY,EAAE,MAAM,EAAC,MAAM;AAC/B,QAAA,GAAG,YAAY;AACf,QAAA,GAAG,MAAM;KACV,CAAC,CAAC,EACH,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAA;AACH,CAAC;AAEe,SAAA,2BAA2B,CAAC,EAC1C,KAAK,GAAG,IAAI,EACZ,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,MAI5B,EAAE,EAAA;IACJ,OAAO,kBAAkB,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,MAAM,KAAM,SAAS,CAAC,MAAM,CAAS,CAAC,CAC5C,CAAC;AACJ,CAAC;AAEK,SAAU,0BAA0B,CAAU,GAAW,EAAA;AAC7D,IAAA,OAAO,2BAA2B,EAAE,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,CAC7B,CAAC;AACJ,CAAC;AAEK,SAAU,yBAAyB,CAAU,GAAW,EAAA;AAC5D,IAAA,OAAO,QAAQ,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AAEK,SAAU,0BAA0B,CAAC,EACzC,KAAK,GAAG,IAAI,MAGV,EAAE,EAAA;IACJ,OAAO,QAAQ,CAAC,2BAA2B,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAEK,SAAU,oBAAoB,CAAC,EACnC,KAAK,GAAG,IAAI,MAGV,EAAE,EAAA;AACJ,IAAA,OAAO,kBAAkB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,IAAI,CACrC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAsB,CAAC,CACtE,CAAC;AACJ,CAAC;AAEK,SAAU,mBAAmB,CAAC,EAClC,KAAK,GAAG,IAAI,MAGV,EAAE,EAAA;IACJ,OAAO,QAAQ,CAAC,oBAAoB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEM,SAAU,iBAAiB,CAAC,EAChC,KAAK,GAAG,IAAI,MAGV,EAAE,EAAA;IACJ,OAAO,QAAQ,CAAC,kBAAkB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;SAEe,qBAAqB,GAAA;AACnC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CACvB,MAAM,CAAC,KAAK,IAAI,KAAK,YAAY,aAAa,CAAC,EAC/C,GAAG,CAAC,MAAM,KAAK,CAAC,CACjB,CAAC;AACJ,CAAC;SAEe,oBAAoB,GAAA;AAClC,IAAA,OAAO,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC3C,CAAC;SAEe,mBAAmB,GAAA;IACjC,OAAO,qBAAqB,EAAE,CAAC,IAAI,CACjC,GAAG,CAAC,KAAK,IAAG;QACV,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,QAAA,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QACzB,OAAO,OAAO,EAAE;YACd,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;AAC/C,YAAA,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;SAC9B;AACD,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC9B,CAAC,EACF,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;SAEe,kBAAkB,GAAA;AAChC,IAAA,OAAO,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACzC,CAAC;AAEK,SAAU,sBAAsB,CAAC,GAAW,EAAA;IAChD,OAAO,qBAAqB,EAAE,CAAC,IAAI,CACjC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC,IAAI,GAAG,EAAkB,CAAC,CAAC,EACnG,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAChC,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEK,SAAU,qBAAqB,CAAC,GAAW,EAAA;AAC/C,IAAA,OAAO,QAAQ,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/C,CAAC;SAEe,iBAAiB,GAAA;IAC/B,OAAO,qBAAqB,EAAE,CAAC,IAAI,CACjC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAC7C,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;SAEe,gBAAgB,GAAA;AAC9B,IAAA,OAAO,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACvC,CAAC;SAEe,cAAc,GAAA;AAC5B,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACrC,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CACvB,SAAS,CAAC,IAAI,CAAC,EACf,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,EAC1C,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;SAEe,aAAa,GAAA;AAC3B,IAAA,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;AACpC,CAAC;AAEK,SAAU,uBAAuB,CAAC,GAAW,EAAA;AACjD,IAAA,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAChC,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEK,SAAU,sBAAsB,CAAC,GAAW,EAAA;AAChD,IAAA,OAAO,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC;AAChD,CAAC;AAEK,SAAU,gBAAgB,CAAI,IAAY,EAAA;IAC9C,OAAO,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAIA,KAAG,CAAC,IAAI,EAAE,IAAI,CAAM,CAAC,CAAC,CAAC;AAC7E,CAAC;AAEK,SAAU,eAAe,CAAI,GAAW,EAAA;AAC5C,IAAA,OAAO,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;SAEe,yBAAyB,CAAC,WAAqB,MAAM,CAAC,QAAQ,CAAC,EAAA;IAC7E,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,IAAA,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,IAAI,IAAI,CAAC;IACnE,OAAM,KAAK,EAAE;QACX,IAAI,KAAK,CAAC,SAAS;AAAE,YAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACtD,QAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KACtB;AACD,IAAA,OAAO,UAAU,CAAC;AACpB,CAAC;AASe,SAAA,eAAe,CAC7B,MAA0B,EAC1B,YAA4E,EAAA;IAE5E,OAAO;AACL,QAAA,OAAO,EAAE,MAAM;;AAEf,QAAA,IAAI,EAAE,EAAE;AACR,QAAA,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;MAGY,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;AAQlD,KAAA;AANC,IAAA,GAAG,CAAC,MAA0B,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;;SAE/B;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAClC;8GARU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;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,cADH,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAClB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC,CAAA;;AAYhB,SAAA,eAAe,CAC7B,YAA8D,EAC9D,MAAuC,EAAA;AAEvC,IAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,EACzC,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEe,SAAA,WAAW,CACzB,YAA8D,EAC9D,MAA2B,EAAA;AAE3B,IAAA,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAEK,SAAU,iBAAiB,CAAC,GAAW,EAAE,EAC7C,KAAK,GAAG,IAAI,GAAA,GAGV,EAAE,EAAA;IACJ,OAAO,oBAAoB,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAChC,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAEe,SAAA,gBAAgB,CAAC,GAAW,EAAE,QAAmB,EAAA;IAC/D,OAAO,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAC;AACtD,CAAC;SAEe,gBAAgB,GAAA;AAC9B,IAAA,OAAO,iBAAiB,CAAC,MAAM,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI,CACnD,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,MAAM,CAAC,EAC9B,WAAW,CAAC,CAAC,CAAC,EACd,kBAAkB,EAAE,CACrB,CAAA;AACH,CAAC;SAEe,eAAe,GAAA;AAC7B,IAAA,OAAO,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtC;;AC/RA;MACa,8BAA8B,GAAG,IAAI,cAAc,CAC9D,gCAAgC,EAAE;AAClC,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,sCAAsC;AAChD,CAAA,EAAE;SAEa,sCAAsC,GAAA;IACpD,OAAO;AACL,QAAA,MAAM,EAAE,KAAK;KACd,CAAC;AACJ,CAAC;AAED;AACA,SAAS,KAAK,CAAI,MAAc,EAAE,aAAmC,EAAA;AACnE,IAAA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAClC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,WAAW,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;KACnC;AACD,IAAA,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;AACA,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,WAAkB,CAAA;IAWtD,WAC8C,CAAA,UAAkB,EACF,OAAiC,EAAA;AAE7F,QAAA,KAAK,EAAE,CAAC;QAHoC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;QACF,IAAO,CAAA,OAAA,GAAP,OAAO,CAA0B;AAG7F,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;KACnC;;AAGQ,IAAA,SAAS,CAAC,MAAc,EAAA;AAC/B,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAExB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG;AAChB,YAAA,cAAc,EAAE,eAAe,CAAC,cAAc,EAAE;AAChD,YAAA,UAAU,EAAE,eAAe,CAAC,MAAM,EAAE;AACpC,YAAA,WAAW,EAAE,eAAe,CAAC,WAAW,EAAE;YAC1C,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1E,YAAA,eAAe,EAAE,eAAe,CAAC,aAAa,EAAE;AAChD,YAAA,gBAAgB,EAAE,eAAe,CAAC,WAAW,EAAE;SAChD,CAAC;KACH;AAED,IAAA,OAAO,CAAC,IAAW,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,QAAQ,CAAC,IAAW,EAAA;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;KACjC;AAED,IAAA,OAAO,CAAC,IAAW,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;KAChC;AAED,IAAA,YAAY,CAAC,IAAW,EAAA;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;KAC/B;AAED,IAAA,aAAa,CAAC,KAAkC,EAAA;AAC9C,QAAA,OAAO,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;KACpF;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;KAC9B;AAED,IAAA,iBAAiB,CAAC,KAAkC,EAAA;AAClD,QAAA,IAAI,KAAK,KAAK,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;SACvC;AACD,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;SACxC;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;KACzC;AAED,IAAA,WAAW,CAAC,IAAW,EAAA;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACxC;IAED,iBAAiB,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;KACvC;AAED,IAAA,iBAAiB,CAAC,IAAW,EAAA;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;KACvC;AAED,IAAA,KAAK,CAAC,IAAW,EAAA;AACf,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;AAED,IAAA,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;AAClD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE;AAC7B,aAAA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AACjB,aAAA,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;AACnB,aAAA,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrB,QAAA,OAAO,WAAW,CAAC;KACpB;IAED,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;KACrB;IAED,KAAK,CAAC,KAAU,EAAE,WAAmB,EAAA;AACnC,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACzF;QACD,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;KAC7D;IAED,MAAM,CAAC,IAAW,EAAE,aAAqB,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,MAAM,KAAK,CAAC,+CAA+C,CAAC,CAAC;SAC9D;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACvD;IAED,gBAAgB,CAAC,IAAW,EAAE,KAAa,EAAA;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAChC;IAED,iBAAiB,CAAC,IAAW,EAAE,MAAc,EAAA;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC;IAED,eAAe,CAAC,IAAW,EAAE,IAAY,EAAA;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,SAAS,CAAC,IAAW,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;KAC3B;AAED;;;;;;;;;;;AAWG;AACO,IAAA,WAAW,CAAC,KAAU,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC;AACT,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;AAAM,aAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;AAErC,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;AACD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,CAAC,KAAK,EAAE;AACV,gBAAA,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;SACxC;QACD,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAa,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SACzB;AACD,QAAA,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,cAAc,CAAC,GAAQ,EAAA;AACrB,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED,IAAA,OAAO,CAAC,IAAW,EAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;KACnC;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACzB;AAEO,IAAA,KAAK,CAAC,KAAW,EAAE,MAAe,EAAE,MAAe,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;SACjD;QACD,OAAO,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;KAC/E;AAED,IAAA,IAAY,YAAY,GAAA;QACtB,MAAM,EAAE,MAAM,EAAE,GAA4B,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QAC/D,OAAO,CAAC,CAAC,MAAM,CAAC;KACjB;AAEO,IAAA,gBAAgB,CAAC,UAAkB,EAAA;AACzC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACnB;AAED,QAAA,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAC9B,QAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,QAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzB,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KAC5B;EACF;AAlMY,gBAAgB,GAAA,UAAA,CAAA;IAYxB,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAAE,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,eAAe,CAAC,CAAA;IACnC,OAAA,CAAA,CAAA,EAAA,QAAQ,EAAE,CAAA;AAAE,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,8BAA8B,CAAC,CAAA;;AAb1C,CAAA,EAAA,gBAAgB,CAkM5B;;AC3OD;;AAEG;AACU,MAAA,sBAAsB,GAAmB;AACpD,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,YAAY;AACxB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;;;ACXH,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAEN,MAAA,6BAA6B,GAAmB;AAC3D,IAAA,KAAK,EAAE;AACL,QAAA,SAAS,EAAE,YAAY;AACxB,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,SAAS,EAAE,YAAY;AACvB,QAAA,cAAc,EAAE,UAAU;AAC1B,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,kBAAkB,EAAE,WAAW;AAChC,KAAA;EACD;AAEW,MAAA,sBAAsB,GAAG;AACpC,IAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC5C,IAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,6BAA6B,EAAE;;;MCT3D,eAAe,CAAA;8GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;+GAAf,eAAe,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJf,SAAA,EAAA;AACT,YAAA,uBAAuB,EAAE;AAC1B,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAEU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA,uBAAuB,EAAE;AAC1B,qBAAA;AACF,iBAAA,CAAA;;SAGe,uBAAuB,GAAA;IACrC,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,IAAI,EAAE;gBACJ,eAAe;gBACf,8BAA8B;AAC/B,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,QAAQ,EAAE,sBAAsB;AACjC,SAAA;KACF,CAAA;AACH;;MCpBa,IAAI,CAAA;AACf,IAAA,OAAO,IAAI,CAAC,KAAA,GAAuB,EAAE,EAAA;AACnC,QAAA,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;AAC/B,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,SAAS,EAAE,CAAC;AACZ,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,GAAG,KAAK;AACT,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;KACvC;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;KACpE;AAED,IAAA,KAAK,CAAC,GAAkB,EAAA;AACtB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,EAAC,GAAG,IAAI,EAAE,GAAG,GAAG,EAAC,CAAC,CAAC;KACrC;AACF;;AC1BK,SAAU,0BAA0B,CACxC,QAAgC,EAChC,QAAuD,EACvD,SAAgC,UAAU,EAAA;IAE1C,IAAG,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO;AAC9B,IAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AACzB,QAAA,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;KACzF;AACH,CAAC;AAGe,SAAA,eAAe,CAAC,MAAM,GAAG,SAAS,EAAA;AACjD,IAAA,IAAI,OAAgB,CAAC;AAErB,IAAA,OAAO,CAAC,KAA6B,EAAE,QAA6B,KAAI;QACvE,MAAM,MAAM,GAAG,EAAE,CAAC;AAClB,QAAA,0BAA0B,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,IAAG;AACpD,YAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;AAC/B,gBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtB,gBAAA,OAAO,KAAK,CAAC;aACb;AACD,YAAA,OAAO,IAAI,CAAC;AACb,SAAC,CAAC,CAAC;QAEH,IAAI,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YAC5B,OAAO,OAAO,GAAG,KAAK,CAAC;SACvB;QAED,OAAO,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,KAAC,CAAA;AACF,CAAC;AAED,SAAS,aAAa,CAAC,CAAM,EAAA;AAC3B,IAAA,IAAI,CAAC,CAAC,OAAO,EAAE;QACb,OAAO,CAAC,CAAC,OAAO,CAAC;KAClB;AACD,IAAA,OAAO,CAAC,CAAC;AACX,CAAC;AAEK,SAAU,UAAU,CAAC,MAAc,EAAA;IACvC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,IAAG;AAChC,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,OAAO;AACL,gBAAA,GAAG,KAAK;AACR,gBAAA,YAAY,EAAE,MAAO,KAAK,CAAC,YAAY,EAAsB,CAAC,IAAI,CAAC,MAAM,IAAG;AAC/E,oBAAA,OAAO,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AACzC,iBAAC,CAAC;AACE,gBAAA,OAAO,EAAE;AACP,oBAAA,IAAI,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;oBACzB,OAAO,EAAE,eAAe,EAAE;AAC3B,iBAAA;aACF,CAAC;SACH;QACD,OAAO;AACL,YAAA,GAAG,KAAK;AACR,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;gBACzB,OAAO,EAAE,eAAe,EAAE;AAC3B,aAAA;SACF,CAAC;AACJ,KAAC,CAAC,CAAC;AACL;;MC5Da,qBAAqB,GAAG,IAAI,cAAc,CAAsB,uCAAuC,EAAE;AAItH;AACA;AACA;AAEa,MAAA,YAAY,GAAG,CAAC,KAAa,EAAE,KAAK,GAAG,EAAE,KAAY;IAChE,OAAO,CAAA,EAAG,KAAK,CAAC,KAAK,CAAC,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;AACpC,EAAC;AAEM,MAAM,mBAAmB,GAAwB,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACnF,MAAE,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;AAC1B,MAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACtB,UAAE,CAAA,EAAG,KAAK,CAAC,MAAM,CAAQ,MAAA,CAAA;AACzB,UAAE,OAAO,KAAK,KAAK,QAAQ;AAC3B,cAAE,YAAY,CAAC,KAAK,CAAC;cACnB;;ACtBJ,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,IAAA,GAAiB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAc;IAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACzC,IAAA,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC;SACrC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,CAAC;AAC9B,SAAA,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAE,CAAC,GAAG,YAAY,QAAQ,CAAC;SAC/E,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/E,CAAC,CAAA;AAEY,MAAA,QAAQ,GAAG,CAAC,GAAW,KAAa,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE;;ACV5G;AACM,SAAU,aAAa,CAAC,OAAe,EAAA;AAC3C,IAAA,MAAM,CAAC,GAAG,CAAA,EAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA,CAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,CAAG,EAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChE,IAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAI,CAAA,EAAA,CAAC,EAAE,CAAC;AAC1B;;ACQA;;ACdA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-utils.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/utils/comma/comma.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/compare-by-id/compare-by-id.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/date-utils/date-utils.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/diff/diff.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/form/form.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/get/get.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/inject/inject.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-date.adapter.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-date.formats.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-jp-providers.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/mat-dayjs-date/dayjs-date.module.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/page/page.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/router/router.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/smart-exp-transformer/smart-exp-transformer.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/to-object/to-object.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/time.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/index.ts","../../../../../packages/@ng-atomic/common/src/lib/utils/ng-atomic-common-utils.ts"],"sourcesContent":["export const comma = (n: number | null): string => n === null ? '0' : n.toLocaleString();\nexport const commaStr = (n: number, unit = '円') => n < 0 ? `-${comma(abs(n))}${unit}` : `${comma(n)}${unit}`;\nexport const abs = (n: number) => Math.abs(n);","export type HasId = { id: string };\nexport function compareByIdFactory(key: string) {\n return (a: any, b: any) => parseInt(a?.[key], 10) - parseInt(b?.[key], 10);\n}\nexport const compareById = compareByIdFactory('id');\n","import dayjs from 'dayjs';\n\nexport const removeComma = (str: string) => str.replace(/\\,/g, '');\n\nexport const DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ss';\nconst DATE_REGEX = /^[0-9]{4}\\/(0[1-9]|1[0-2])\\/(0[1-9]|[12][0-9]|3[01])$/;\nconst DATETIME_REGEX = /^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\+([+-][0-2]\\d:[0-5]\\d)$/;\nexport const isDateStr = (str: string | null): str is string => str && !!str.match(DATE_REGEX);\nexport const isDateTimeStr = (str: string | null): str is string => str && !!str.match(DATE_REGEX);\n\nconst ISO_REGEX = /\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z)/;\nexport const isIsoString = (str: string | null): str is string => str && !!str.match(ISO_REGEX);\n\n\nexport interface Timestamp {\n toDate: () => Date;\n}\n\nexport function timestampToDayjs(timestamp: Timestamp | null): dayjs.Dayjs | null {\n return timestamp ? dayjs(timestamp.toDate()) : null;\n}","import { SelectionModel } from \"@angular/cdk/collections\";\n\nexport function diff<T = any>(initial: SelectionModel<T>, current: SelectionModel<T>): {\n selectedIds: T[],\n unselectedIds: T[],\n} {\n return {\n selectedIds: current.selected.filter((id: T) => !initial.isSelected(id)),\n unselectedIds: initial.selected.filter((id: T) => !current.isSelected(id)),\n }\n}\n","import { Signal } from \"@angular/core\";\nimport { toSignal } from \"@angular/core/rxjs-interop\";\nimport { AbstractControl } from \"@angular/forms\";\nimport { Observable, distinctUntilChanged, map, merge, of, startWith } from \"rxjs\";\nimport { computedAsync } from \"ngxtension/computed-async\";\nimport { computeFake } from \"@ng-atomic/core\";\n\nexport function getValue$<T>(control: AbstractControl<T>): Observable<T> {\n return merge(of(control.value), control.valueChanges).pipe(\n distinctUntilChanged((pre, cur) => JSON.stringify(pre) === JSON.stringify(cur)),\n );\n}\n\nexport function getValue<T>(control: AbstractControl<T>): Signal<T> {\n return toSignal(getValue$(control));\n}\n\nexport function getRawValue$<T>(control: AbstractControl<T>): Observable<T> {\n return merge(of(control.getRawValue()), control.valueChanges.pipe(map(() => control.getRawValue())));\n}\n\nexport function getRawValue<T>(control: AbstractControl<T>): Signal<T> {\n return toSignal(getRawValue$(control));\n}\n\nexport function computedRawValue<T>(controlFactory: () => AbstractControl<T>): Signal<T> {\n return computedAsync(() => controlFactory().valueChanges.pipe(\n startWith(null),\n map(() => controlFactory().getRawValue()),\n ), { initialValue: computeFake(controlFactory()).getRawValue() });\n}\n\nexport function getInvalid$<T>(control: AbstractControl<T>): Observable<boolean> {\n return control.statusChanges.pipe(\n startWith(null),\n map(() => control.invalid),\n );\n}\n\nexport function getInvalid<T>(form: AbstractControl<T>): Signal<boolean> {\n return toSignal(getInvalid$(form));\n}\n\n","import _get from 'lodash.get';\n\n// ネストされたオブジェクトのキーの組み合わせを生成する型ヘルパー\nexport type PathKeys<T> = T extends object ? {\n [K in keyof T]-?: K extends string | number ?\n T[K] extends object ? [K] | [K, ...PathKeys<T[K]>] : [K]\n : never\n}[keyof T] : [];\n\n// ネストされたパスに対応する型を抽出するための型ヘルパー\nexport type NestedGetType<T, P extends any[]> = \n P extends [infer F, ...infer R]\n ? F extends keyof T\n ? NestedGetType<T[F], R>\n : never\n : T;\n\n/** @deprecated use lodash-es */\nexport function get<T, P extends PathKeys<T>>(obj: T, path: P): NestedGetType<T, P> {\n return _get(obj, path);\n}","import { Injectable, Injector, Signal, inject } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { ActivatedRoute, NavigationEnd, ParamMap, Params, Router } from \"@angular/router\";\nimport { Observable, combineLatest, filter, map, of, shareReplay, startWith, switchMap } from \"rxjs\";\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Type } from \"@nx-ddd/common/domain/models\";\nimport { get } from \"lodash-es\";\nimport { unflatten } from 'flat';\n\nexport function injectRouterParam$(key: string): Observable<string> {\n return inject(ActivatedRoute).paramMap.pipe(\n map((params) => params.get(key)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\n/** @deprecated */\nexport function injectRouterParam(key: string): Signal<string> {\n return toSignal(injectRouterParam$(key));\n}\n\nexport function injectRouteQueryParam$<T extends string = string>(key: string): Observable<T> {\n return inject(ActivatedRoute).queryParamMap.pipe(\n map((params) => params.get(key) as T),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectRouteQueryParam(key: string): Signal<string> {\n return toSignal(injectRouteQueryParam$(key));\n}\n\n// export function injectRouteParamMap$(): Observable<ParamMap> {\n// return inject(ActivatedRoute).paramMap.pipe(\n// shareReplay(1),\n// takeUntilDestroyed(),\n// );\n// }\n\nexport function injectRouteParams$({\n merge = true,\n route = inject(ActivatedRoute),\n}: {\n merge?: boolean,\n route?: ActivatedRoute,\n} = {}): Observable<Params> {\n const parentParams = (merge && route.parent) ? injectRouteParams$({merge, route: route.parent}) : of(new Map<string, string>());\n return combineLatest({\n parentParams,\n params: route.params\n }).pipe(\n map(({parentParams, params}) => ({\n ...parentParams,\n ...params,\n })),\n shareReplay(1),\n takeUntilDestroyed(),\n )\n}\n\nexport function injectUnflattenRouteParams$({\n merge = true,\n route = inject(ActivatedRoute),\n}: {\n merge?: boolean,\n route?: ActivatedRoute,\n} = {}) {\n return injectRouteParams$({merge, route}).pipe(\n map((params) => (unflatten(params) as any)),\n );\n}\n\nexport function injectUnflattenRouteParam$<T = any>(key: string): Observable<T> {\n return injectUnflattenRouteParams$().pipe(\n map((params) => params[key]),\n );\n}\n\nexport function injectUnflattenRouteParam<T = any>(key: string): Signal<T> {\n return toSignal(injectUnflattenRouteParam$(key));\n}\n\nexport function injectUnflattenRouteParams({\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Signal<any> {\n return toSignal(injectUnflattenRouteParams$({merge}));\n}\n\nexport function injectRouteParamMap$({\n merge = true,\n}: {\n merge?: boolean,\n} = {}) {\n return injectRouteParams$({merge}).pipe(\n map((params) => new Map(Object.entries(params)) as never as ParamMap),\n );\n}\n\nexport function injectRouteParamMap({\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Signal<ParamMap> {\n return toSignal(injectRouteParamMap$({merge}));\n}\n\n// export function injectRouteParams$(): Observable<Record<string, string>> {\n// return inject(ActivatedRoute).paramMap.pipe(\n// map((params) => {\n// const result = {};\n// params.keys.forEach(key => result[key] = params.get(key));\n// return result;\n// }),\n// shareReplay(1),\n// takeUntilDestroyed(),\n// );\n// }\n\nexport function injectRouteParams({\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Signal<Record<string, string>> {\n return toSignal(injectRouteParams$({merge}));\n}\n\nexport function injectRouteNavigated$() {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => route),\n );\n}\n\nexport function injectRouteNavigated() {\n return toSignal(injectRouteNavigated$());\n}\n\nexport function injectPrimaryPaths$() {\n return injectRouteNavigated$().pipe(\n map(route => {\n const paths = [];\n let current = route.root;\n while (current) {\n paths.push(current?.routeConfig?.path ?? null);\n current = current.firstChild;\n }\n return paths.filter(Boolean);\n }),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectPrimaryPaths() {\n return toSignal(injectPrimaryPaths$());\n}\n\nexport function injectChildRouteParam$(key: string): Observable<string> {\n return injectRouteNavigated$().pipe(\n switchMap((route) => route?.firstChild ? route.firstChild.paramMap : of(new Map<string, string>())),\n map((params) => params.get(key)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectChildRouteParam(key: string): Signal<string> {\n return toSignal(injectChildRouteParam$(key));\n}\n\nexport function injectChildRoute$() {\n return injectRouteNavigated$().pipe(\n map((route) => route?.firstChild?.firstChild),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectChildRoute(): Signal<ActivatedRoute> {\n return toSignal(injectChildRoute$());\n}\n\nexport function injectHasNext$() {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(\n startWith(null),\n map(() => !!route?.firstChild?.firstChild),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectHasNext() {\n return toSignal(injectHasNext$());\n}\n\nexport function injectRouterQueryParam$(key: string): Observable<string> {\n return inject(ActivatedRoute).queryParamMap.pipe(\n map((params) => params.get(key)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectRouterQueryParam(key: string): Signal<string> {\n return toSignal(injectRouterQueryParam$(key));\n}\n\nexport function injectRouteData$<T>(path: string): Observable<T> {\n return inject(ActivatedRoute).data.pipe(map(data => get(data, path) as T));\n}\n\nexport function injectRouteData<T>(key: string): Signal<T> {\n return toSignal(injectRouteData$(key));\n}\n\nexport function injectActivatedComponents(injector: Injector = inject(Injector)): any[] {\n const components = [];\n let route = injector.get(ActivatedRoute, {optional: true}) ?? null;\n while(route) {\n if (route.component) components.push(route.component);\n route = route.parent;\n }\n return components;\n}\n\n\n\nexport interface Resolver<T> {\n resolve(entry: T): T;\n resolveMany(entities: T[]): T[];\n}\n\nexport function provideResolver(\n Entity: Type<{id: string}>,\n ResolverType: new (params: Record<string, Observable<any>>) => Resolver<any>,\n) {\n return {\n provide: Entity,\n // useFactory: () => new ResolverType(params),\n deps: [],\n multi: true,\n };\n}\n\n@Injectable({providedIn: 'root'})\nexport class ResolverManager {\n protected map = new Map<string, Resolver<any>>();\n\n get(Entity: Type<{id: string}>) {\n if (!this.map.has(Entity.name)) {\n // return this.map.set()\n }\n return this.map.get(Entity.name);\n }\n}\n\nexport function injectResolver$<T>(\n ResolverType: new (params: Record<string, any>) => Resolver<T>,\n params: Record<string, Observable<any>>,\n): Observable<Resolver<T>> {\n return combineLatest(params).pipe(\n map((params) => new ResolverType(params)),\n shareReplay(1),\n takeUntilDestroyed(),\n );\n}\n\nexport function getResolver<T>(\n ResolverType: new (params: Record<string, any>) => Resolver<T>,\n params: Record<string, any>,\n): Resolver<T> {\n return new ResolverType(params);\n}\n\nexport function injectRouteParam$(key: string, {\n merge = true,\n}: {\n merge?: boolean,\n} = {}): Observable<string> {\n return injectRouteParamMap$({merge}).pipe(\n map((params) => params.get(key)),\n takeUntilDestroyed(),\n );\n}\n\nexport function injectRouteParam(key: string, injector?: Injector): Signal<string> {\n return toSignal(injectRouteParam$(key), {injector});\n}\n\nexport function injectRouteSkip$(): Observable<boolean> {\n return injectRouteParam$('skip', {merge: false}).pipe(\n map((skip) => skip === 'true'),\n shareReplay(1),\n takeUntilDestroyed(),\n )\n}\n\nexport function injectRouteSkip(): Signal<boolean> {\n return toSignal(injectRouteSkip$());\n}\n","\nimport { Optional, Inject, InjectionToken } from '@angular/core';\nimport { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';\nimport dayjs from 'dayjs';\nimport { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport localeData from 'dayjs/plugin/localeData';\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\n\n\nexport interface DayJsDateAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how Angular Material components like DatePicker output dates.\n * {@default false}\n */\n useUtc?: boolean;\n}\n\n/** InjectionToken for Dayjs date adapter to configure options. */\nexport const MAT_DAYJS_DATE_ADAPTER_OPTIONS = new InjectionToken<DayJsDateAdapterOptions>(\n 'MAT_DAYJS_DATE_ADAPTER_OPTIONS', {\n providedIn: 'root',\n factory: MAT_DAYJS_DATE_ADAPTER_OPTIONS_FACTORY\n});\n\nexport function MAT_DAYJS_DATE_ADAPTER_OPTIONS_FACTORY(): DayJsDateAdapterOptions {\n return {\n useUtc: false\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts Dayjs Dates for use with Angular Material. */\nexport class DayjsDateAdapter extends DateAdapter<Dayjs> {\n private localeData!: {\n firstDayOfWeek: number,\n longMonths: string[],\n shortMonths: string[],\n dates: string[],\n longDaysOfWeek: string[],\n shortDaysOfWeek: string[],\n narrowDaysOfWeek: string[]\n };\n\n constructor(\n @Optional() @Inject(MAT_DATE_LOCALE) public dateLocale: string,\n @Optional() @Inject(MAT_DAYJS_DATE_ADAPTER_OPTIONS) private options?: DayJsDateAdapterOptions\n ) {\n super();\n this.initializeParser(dateLocale);\n }\n\n // TODO: Implement\n override setLocale(locale: string) {\n super.setLocale(locale);\n\n const dayJsLocaleData = this.dayJs().localeData();\n this.localeData = {\n firstDayOfWeek: dayJsLocaleData.firstDayOfWeek(),\n longMonths: dayJsLocaleData.months(),\n shortMonths: dayJsLocaleData.monthsShort(),\n dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D')),\n longDaysOfWeek: range(7, (i) => this.dayJs().set('day', i).format('dddd')),\n shortDaysOfWeek: dayJsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: dayJsLocaleData.weekdaysMin(),\n };\n }\n\n getYear(date: Dayjs): number {\n return this.dayJs(date).year();\n }\n\n getMonth(date: Dayjs): number {\n return this.dayJs(date).month();\n }\n\n getDate(date: Dayjs): number {\n return this.dayJs(date).date();\n }\n\n getDayOfWeek(date: Dayjs): number {\n return this.dayJs(date).day();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n return style === 'long' ? this.localeData.longMonths : this.localeData.shortMonths;\n }\n\n getDateNames(): string[] {\n return this.localeData.dates;\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (style === 'long') {\n return this.localeData.longDaysOfWeek;\n }\n if (style === 'short') {\n return this.localeData.shortDaysOfWeek;\n }\n return this.localeData.narrowDaysOfWeek;\n }\n\n getYearName(date: Dayjs): string {\n return this.dayJs(date).format('YYYY');\n }\n\n getFirstDayOfWeek(): number {\n return this.localeData.firstDayOfWeek;\n }\n\n getNumDaysInMonth(date: Dayjs): number {\n return this.dayJs(date).daysInMonth();\n }\n\n clone(date: Dayjs): Dayjs {\n return date.clone();\n }\n\n createDate(year: number, month: number, date: number): Dayjs {\n const returnDayjs = this.dayJs()\n .set('year', year)\n .set('month', month)\n .set('date', date);\n return returnDayjs;\n }\n\n today(): Dayjs {\n return this.dayJs();\n }\n\n parse(value: any, parseFormat: string): Dayjs | null {\n if (value && typeof value === 'string') {\n return this.dayJs(value, dayjs().localeData().longDateFormat(parseFormat), this.locale);\n }\n return value ? this.dayJs(value).locale(this.locale) : null;\n }\n\n format(date: Dayjs, displayFormat: string): string {\n if (!this.isValid(date)) {\n throw Error('DayjsDateAdapter: Cannot format invalid date.');\n }\n return date.locale(this.locale).format(displayFormat);\n }\n\n addCalendarYears(date: Dayjs, years: number): Dayjs {\n return date.add(years, 'year');\n }\n\n addCalendarMonths(date: Dayjs, months: number): Dayjs {\n return date.add(months, 'month');\n }\n\n addCalendarDays(date: Dayjs, days: number): Dayjs {\n return date.add(days, 'day');\n }\n\n toIso8601(date: Dayjs): string {\n return date.toISOString();\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n override deserialize(value: any): Dayjs | null {\n let date;\n if (value instanceof Date) {\n date = this.dayJs(value);\n } else if (this.isDateInstance(value)) {\n // NOTE: assumes that cloning also sets the correct locale.\n return this.clone(value);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = this.dayJs(value).toISOString();\n }\n if (date && this.isValid(date as Dayjs)) {\n return this.dayJs(date); // NOTE: Is this necessary since Dayjs is immutable and Moment was not?\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any): boolean {\n return dayjs.isDayjs(obj);\n }\n\n isValid(date: Dayjs): boolean {\n return this.dayJs(date).isValid();\n }\n\n invalid(): Dayjs {\n return this.dayJs(null);\n }\n\n private dayJs(input?: any, format?: string, locale?: string): Dayjs {\n if (!this.shouldUseUtc) {\n return dayjs(input, { format, locale }, locale);\n }\n return dayjs(input, { format, locale, utc: this.shouldUseUtc }, locale).utc();\n }\n\n private get shouldUseUtc(): boolean {\n const { useUtc }: DayJsDateAdapterOptions = this.options || {};\n return !!useUtc;\n }\n\n private initializeParser(dateLocale: string) {\n if (this.shouldUseUtc) {\n dayjs.extend(utc);\n }\n\n dayjs.extend(LocalizedFormat);\n dayjs.extend(customParseFormat);\n dayjs.extend(localeData);\n\n this.setLocale(dateLocale);\n }\n}","import { MatDateFormats } from '@angular/material/core';\n\n/**\n * Custom Date-Formats and Adapter (using https://github.com/iamkun/dayjs)\n */\nexport const MAT_DAYJS_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: 'MM/DD/YYYY',\n },\n display: {\n dateInput: 'MM/DD/YYYY',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n }\n};","import { MatDateFormats, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport dayjs from 'dayjs';\nimport 'dayjs/locale/ja'\ndayjs.locale('ja');\n\nexport const MAT_DAYJS_DATE_FORMATS_FOR_JP: MatDateFormats = {\n parse: {\n dateInput: 'YYYY/MM/DD',\n },\n display: {\n dateInput: 'YYYY/MM/DD',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n }\n};\n\nexport const MAT_DAYJS_JP_PROVIDERS = [\n { provide: MAT_DATE_LOCALE, useValue: 'ja' },\n { provide: MAT_DATE_FORMATS, useValue: MAT_DAYJS_DATE_FORMATS_FOR_JP },\n];\n","import { NgModule, Provider } from '@angular/core';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { DayjsDateAdapter, MAT_DAYJS_DATE_ADAPTER_OPTIONS } from './dayjs-date.adapter';\nimport { MAT_DAYJS_DATE_FORMATS } from './dayjs-date.formats';\n\n@NgModule({\n providers: [\n provideDayjsDateAdapter(),\n ],\n})\nexport class DayjsDateModule { }\n\nexport function provideDayjsDateAdapter(): Provider[] {\n return [\n {\n provide: DateAdapter,\n useClass: DayjsDateAdapter,\n deps: [\n MAT_DATE_LOCALE, \n MAT_DAYJS_DATE_ADAPTER_OPTIONS,\n ]\n },\n {\n provide: MAT_DATE_FORMATS,\n useValue: MAT_DAYJS_DATE_FORMATS,\n }, \n ]\n}\n","import { PageEvent } from '@angular/material/paginator';\n\nexport interface Page extends PageEvent {\n sortKey: string;\n sortOrder: 'asc' | 'desc';\n}\n\nexport class Page {\n static from(event: Partial<Page> = {}): Page {\n return Object.assign(new Page(), {\n pageSize: 50,\n pageIndex: 0,\n length: 100,\n ...event\n });\n }\n\n get start(): number {\n return this.pageIndex * this.pageSize;\n }\n\n get end(): number {\n return Math.min((this.pageIndex + 1) * this.pageSize, this.length);\n }\n\n patch(obj: Partial<Page>): Page {\n return Page.from({...this, ...obj});\n }\n}\n","import { ActivatedRouteSnapshot, RouterStateSnapshot, Routes } from \"@angular/router\";\n\nexport function walkActivatedRouteSnapshot(\n snapshot: ActivatedRouteSnapshot,\n callback: (snapshot: ActivatedRouteSnapshot) => boolean,\n target: 'children' | 'parent' = 'children',\n): void {\n if(callback(snapshot)) return;\n if (target === 'children') {\n snapshot.children.forEach(child => walkActivatedRouteSnapshot(child, callback, target));\n }\n}\n\n\nexport function skippedResolver(outlet = 'primary') {\n\tlet skipped: boolean;\n\n\treturn (route: ActivatedRouteSnapshot, snapshot: RouterStateSnapshot) => {\n\t\tconst routes = [];\n\t\twalkActivatedRouteSnapshot(snapshot.root, snapshot => {\n\t\t\tif (snapshot.outlet === outlet) {\n\t\t\t\troutes.push(snapshot);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\n\t\tif (route === routes.at(-1)) {\n\t\t\treturn skipped = false;\n\t\t}\n\n\t\treturn skipped ??= route !== routes.at(-1);\n\t}\n}\n\nfunction resolveModule(m: any) {\n if (m.default) {\n return m.default;\n }\n return m;\n}\n\nexport function wrapRoutes(routes: Routes) {\n return (routes ?? []).map(route => {\n if (route.loadChildren) {\n return {\n ...route,\n loadChildren: () => (route.loadChildren() as Promise<Routes>).then(routes => {\n\t\t\t\t\treturn wrapRoutes(resolveModule(routes))\n\t\t\t\t}),\n resolve: {\n ...(route?.resolve || {}),\n skipped: skippedResolver(),\n }\n };\n }\n return {\n ...route,\n resolve: {\n ...(route?.resolve || {}),\n skipped: skippedResolver(),\n },\n };\n });\n}","import { InjectionToken } from '@angular/core';\nimport dayjs from 'dayjs';\nimport { comma } from '../comma';\n\nexport const SMART_EXP_TRANSFORMER = new InjectionToken<SmartExpTransformer>('[@ng-atomic/common] Smart Transformer');\n\nexport type SmartExpTransformer = (input: string | number | dayjs.Dayjs | any, key?: string) => string;\n\n// export const yenTransform = (value: number, _unit?: string): string => {\n// return value < 1 ? `${comma(value * 100)}%` : `${comma(value)}円`;\n// }\n\nexport const yenTransform = (value: number, _unit = ''): string => {\n return `${comma(value)} ${_unit}`;\n}\n\nexport const smartExpTransformer: SmartExpTransformer = input => dayjs.isDayjs(input)\n ? input.format('YY/MM/DD')\n : Array.isArray(input) \n ? `${input.length}個のアイテム`\n : typeof input === 'number'\n ? yenTransform(input)\n : input;","const getAllProps = (obj: object, keys: string[] = Object.keys(obj)): string[] => {\n const proto = Object.getPrototypeOf(obj);\n keys = Object.getOwnPropertyNames(proto)\n .filter(v => v !== '__proto__')\n .filter(v => Object.getOwnPropertyDescriptor(proto, v)!.get instanceof Function)\n .concat(keys);\n\n return proto.constructor.name === 'Object' ? keys : getAllProps(proto, keys);\n}\n\nexport const toObject = (obj: object): object => getAllProps(obj).reduce((p, k) => ({...p, [k]: obj[k]}), {});\n","// 秒数をhh:mm:ssの形にフォーマットする\nexport function formatSeconds(seconds: number): string {\n const h = `${Math.floor(seconds / 3600)}`.padStart(2, '0');\n const m = `${Math.floor(seconds % 3600 / 60)}`.padStart(2, '0');\n const s = `${Math.floor(seconds % 3600 % 60)}`.padStart(2, '0');\n return `${h}:${m}:${s}`;\n}","export * from './comma';\nexport * from './compare-by-id';\nexport * from './date-utils';\nexport * from './diff';\nexport * from './form';\nexport * from './get';\nexport * from './inject';\nexport * from './mat-dayjs-date';\nexport * from './page';\nexport * from './router';\nexport * from './smart-exp-transformer';\nexport * from './to-object';\n\nexport * from './time';\n// export * from './define-element';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["get"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-atomic/common",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.10.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/cdk": "^18.0.0",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@angular/material": "^18.0.0",
|
|
12
12
|
"@angular/router": "^18.0.0",
|
|
13
13
|
"@ngrx/component-store": "^18.0.0",
|
|
14
|
-
"@nx-ddd/core": "18.
|
|
14
|
+
"@nx-ddd/core": "18.10.0",
|
|
15
15
|
"dayjs": "1.11.12",
|
|
16
16
|
"flat": "^6.0.0",
|
|
17
17
|
"lodash-es": "^4.17.15",
|
|
@@ -1,29 +1,32 @@
|
|
|
1
1
|
import { FormBuilder, FormGroup, NonNullableFormBuilder } from "@angular/forms";
|
|
2
2
|
import { JsonSchema } from "json-schema-library";
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare
|
|
5
|
-
|
|
6
|
-
value?:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
value?:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
value
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
4
|
+
export declare class JsonSchemaFormUtils {
|
|
5
|
+
static removeObjectPercent<T extends object>(value: T): any;
|
|
6
|
+
static buildFormGroupByJsonSchema(schema: JsonSchema, { fb, value, }?: {
|
|
7
|
+
fb?: FormBuilder | NonNullableFormBuilder;
|
|
8
|
+
value?: object;
|
|
9
|
+
}): FormGroup;
|
|
10
|
+
static buildFormArrayByJsonSchema(schema: JsonSchema, { fb, value, }?: {
|
|
11
|
+
fb?: FormBuilder | NonNullableFormBuilder;
|
|
12
|
+
value?: any[];
|
|
13
|
+
}): any;
|
|
14
|
+
static buildFormByJsonSchemaProperty(property: JsonSchema, { fb, value, validators, }?: {
|
|
15
|
+
fb?: FormBuilder | NonNullableFormBuilder;
|
|
16
|
+
value?: object | object[];
|
|
17
|
+
validators?: any[];
|
|
18
|
+
}): any;
|
|
19
|
+
static buildFormByJsonSchema(schema: JsonSchema, { fb, value, fieldMap, }?: {
|
|
20
|
+
fb?: FormBuilder | NonNullableFormBuilder;
|
|
21
|
+
value?: object;
|
|
22
|
+
fieldMap?: object;
|
|
23
|
+
}): any;
|
|
24
|
+
static buildFormFieldMapByJsonSchema(schema: JsonSchema, options?: {
|
|
25
|
+
merge?: {
|
|
26
|
+
[key: string]: any;
|
|
27
|
+
};
|
|
28
|
+
}): any;
|
|
29
|
+
}
|
|
27
30
|
export declare function buildFormGroup(klass: new () => any, { fb, value, }: {
|
|
28
31
|
fb?: FormBuilder | NonNullableFormBuilder;
|
|
29
32
|
value?: object;
|