@rjsf/utils 6.0.0-beta.9 → 6.0.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/dist/{index.js → index.cjs} +563 -200
- package/dist/index.cjs.map +7 -0
- package/dist/utils.esm.js +562 -199
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +533 -193
- package/lib/ErrorSchemaBuilder.d.ts +2 -2
- package/lib/constants.d.ts +3 -0
- package/lib/constants.js +3 -0
- package/lib/constants.js.map +1 -1
- package/lib/createSchemaUtils.js +25 -18
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/enums.d.ts +13 -3
- package/lib/enums.js +13 -3
- package/lib/enums.js.map +1 -1
- package/lib/findSchemaDefinition.d.ts +6 -0
- package/lib/findSchemaDefinition.js +44 -3
- package/lib/findSchemaDefinition.js.map +1 -1
- package/lib/getDateElementProps.d.ts +1 -2
- package/lib/getTestIds.js +2 -2
- package/lib/getTestIds.js.map +1 -1
- package/lib/getUiOptions.js +4 -0
- package/lib/getUiOptions.js.map +1 -1
- package/lib/getWidget.js +3 -3
- package/lib/getWidget.js.map +1 -1
- package/lib/guessType.d.ts +1 -1
- package/lib/idGenerators.d.ts +22 -15
- package/lib/idGenerators.js +17 -8
- package/lib/idGenerators.js.map +1 -1
- package/lib/index.d.ts +16 -6
- package/lib/index.js +13 -4
- package/lib/index.js.map +1 -1
- package/lib/isFormDataAvailable.d.ts +7 -0
- package/lib/isFormDataAvailable.js +13 -0
- package/lib/isFormDataAvailable.js.map +1 -0
- package/lib/isRootSchema.d.ts +13 -0
- package/lib/isRootSchema.js +25 -0
- package/lib/isRootSchema.js.map +1 -0
- package/lib/mergeDefaultsWithFormData.js +14 -2
- package/lib/mergeDefaultsWithFormData.js.map +1 -1
- package/lib/nameGenerators.d.ts +13 -0
- package/lib/nameGenerators.js +30 -0
- package/lib/nameGenerators.js.map +1 -0
- package/lib/schema/getDefaultFormState.d.ts +17 -3
- package/lib/schema/getDefaultFormState.js +66 -26
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.js +2 -2
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/index.d.ts +1 -2
- package/lib/schema/index.js +1 -2
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +10 -5
- package/lib/schema/retrieveSchema.js +40 -17
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/shallowEquals.d.ts +8 -0
- package/lib/shallowEquals.js +36 -0
- package/lib/shallowEquals.js.map +1 -0
- package/lib/shouldRender.d.ts +8 -2
- package/lib/shouldRender.js +17 -2
- package/lib/shouldRender.js.map +1 -1
- package/lib/shouldRenderOptionalField.d.ts +18 -0
- package/lib/shouldRenderOptionalField.js +47 -0
- package/lib/shouldRenderOptionalField.js.map +1 -0
- package/lib/toFieldPathId.d.ts +14 -0
- package/lib/toFieldPathId.js +26 -0
- package/lib/toFieldPathId.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +196 -105
- package/lib/useAltDateWidgetProps.d.ts +39 -0
- package/lib/useAltDateWidgetProps.js +71 -0
- package/lib/useAltDateWidgetProps.js.map +1 -0
- package/lib/useDeepCompareMemo.d.ts +8 -0
- package/lib/useDeepCompareMemo.js +17 -0
- package/lib/useDeepCompareMemo.js.map +1 -0
- package/lib/useFileWidgetProps.d.ts +29 -0
- package/lib/useFileWidgetProps.js +119 -0
- package/lib/useFileWidgetProps.js.map +1 -0
- package/lib/validationDataMerge.d.ts +2 -1
- package/lib/validationDataMerge.js +3 -2
- package/lib/validationDataMerge.js.map +1 -1
- package/package.json +13 -14
- package/src/ErrorSchemaBuilder.ts +2 -2
- package/src/constants.ts +3 -0
- package/src/createSchemaUtils.ts +25 -26
- package/src/enums.ts +13 -3
- package/src/findSchemaDefinition.ts +51 -3
- package/src/getDateElementProps.ts +1 -1
- package/src/getTestIds.ts +2 -2
- package/src/getUiOptions.ts +4 -0
- package/src/getWidget.tsx +3 -3
- package/src/idGenerators.ts +35 -25
- package/src/index.ts +36 -5
- package/src/isFormDataAvailable.ts +13 -0
- package/src/isRootSchema.ts +30 -0
- package/src/mergeDefaultsWithFormData.ts +16 -2
- package/src/nameGenerators.ts +43 -0
- package/src/schema/getDefaultFormState.ts +87 -31
- package/src/schema/getDisplayLabel.ts +2 -2
- package/src/schema/index.ts +0 -2
- package/src/schema/retrieveSchema.ts +43 -7
- package/src/shallowEquals.ts +41 -0
- package/src/shouldRender.ts +27 -2
- package/src/shouldRenderOptionalField.ts +56 -0
- package/src/toFieldPathId.ts +34 -0
- package/src/types.ts +229 -113
- package/src/useAltDateWidgetProps.tsx +163 -0
- package/src/useDeepCompareMemo.ts +17 -0
- package/src/useFileWidgetProps.ts +155 -0
- package/src/validationDataMerge.ts +7 -1
- package/dist/index.js.map +0 -7
- package/lib/schema/toIdSchema.d.ts +0 -14
- package/lib/schema/toIdSchema.js +0 -62
- package/lib/schema/toIdSchema.js.map +0 -1
- package/src/schema/toIdSchema.ts +0 -131
|
@@ -35,10 +35,13 @@ __export(index_exports, {
|
|
|
35
35
|
ALL_OF_KEY: () => ALL_OF_KEY,
|
|
36
36
|
ANY_OF_KEY: () => ANY_OF_KEY,
|
|
37
37
|
CONST_KEY: () => CONST_KEY,
|
|
38
|
+
DEFAULT_ID_PREFIX: () => DEFAULT_ID_PREFIX,
|
|
39
|
+
DEFAULT_ID_SEPARATOR: () => DEFAULT_ID_SEPARATOR,
|
|
38
40
|
DEFAULT_KEY: () => DEFAULT_KEY,
|
|
39
41
|
DEFINITIONS_KEY: () => DEFINITIONS_KEY,
|
|
40
42
|
DEPENDENCIES_KEY: () => DEPENDENCIES_KEY,
|
|
41
43
|
DISCRIMINATOR_PATH: () => DISCRIMINATOR_PATH,
|
|
44
|
+
DateElement: () => DateElement,
|
|
42
45
|
ENUM_KEY: () => ENUM_KEY,
|
|
43
46
|
ERRORS_KEY: () => ERRORS_KEY,
|
|
44
47
|
ErrorSchemaBuilder: () => ErrorSchemaBuilder,
|
|
@@ -46,6 +49,7 @@ __export(index_exports, {
|
|
|
46
49
|
ID_KEY: () => ID_KEY,
|
|
47
50
|
IF_KEY: () => IF_KEY,
|
|
48
51
|
ITEMS_KEY: () => ITEMS_KEY,
|
|
52
|
+
JSON_SCHEMA_DRAFT_2019_09: () => JSON_SCHEMA_DRAFT_2019_09,
|
|
49
53
|
JSON_SCHEMA_DRAFT_2020_12: () => JSON_SCHEMA_DRAFT_2020_12,
|
|
50
54
|
JUNK_OPTION_ID: () => JUNK_OPTION_ID,
|
|
51
55
|
LOOKUP_MAP_NAME: () => LOOKUP_MAP_NAME,
|
|
@@ -68,6 +72,7 @@ __export(index_exports, {
|
|
|
68
72
|
allowAdditionalItems: () => allowAdditionalItems,
|
|
69
73
|
ariaDescribedByIds: () => ariaDescribedByIds,
|
|
70
74
|
asNumber: () => asNumber,
|
|
75
|
+
bracketNameGenerator: () => bracketNameGenerator,
|
|
71
76
|
buttonId: () => buttonId,
|
|
72
77
|
canExpand: () => canExpand,
|
|
73
78
|
createErrorHandler: () => createErrorHandler,
|
|
@@ -76,6 +81,7 @@ __export(index_exports, {
|
|
|
76
81
|
dateRangeOptions: () => dateRangeOptions,
|
|
77
82
|
deepEquals: () => deepEquals,
|
|
78
83
|
descriptionId: () => descriptionId,
|
|
84
|
+
dotNotationNameGenerator: () => dotNotationNameGenerator,
|
|
79
85
|
englishStringTranslator: () => englishStringTranslator,
|
|
80
86
|
enumOptionsDeselectValue: () => enumOptionsDeselectValue,
|
|
81
87
|
enumOptionsIndexForValue: () => enumOptionsIndexForValue,
|
|
@@ -113,8 +119,10 @@ __export(index_exports, {
|
|
|
113
119
|
isCustomWidget: () => isCustomWidget,
|
|
114
120
|
isFilesArray: () => isFilesArray,
|
|
115
121
|
isFixedItems: () => isFixedItems,
|
|
122
|
+
isFormDataAvailable: () => isFormDataAvailable,
|
|
116
123
|
isMultiSelect: () => isMultiSelect,
|
|
117
124
|
isObject: () => isObject,
|
|
125
|
+
isRootSchema: () => isRootSchema,
|
|
118
126
|
isSelect: () => isSelect,
|
|
119
127
|
labelValue: () => labelValue,
|
|
120
128
|
localToUTC: () => localToUTC,
|
|
@@ -123,6 +131,7 @@ __export(index_exports, {
|
|
|
123
131
|
mergeObjects: () => mergeObjects,
|
|
124
132
|
mergeSchemas: () => mergeSchemas,
|
|
125
133
|
optionId: () => optionId,
|
|
134
|
+
optionalControlsId: () => optionalControlsId,
|
|
126
135
|
optionsList: () => optionsList,
|
|
127
136
|
orderProperties: () => orderProperties,
|
|
128
137
|
pad: () => pad,
|
|
@@ -133,16 +142,21 @@ __export(index_exports, {
|
|
|
133
142
|
sanitizeDataForNewSchema: () => sanitizeDataForNewSchema,
|
|
134
143
|
schemaParser: () => schemaParser,
|
|
135
144
|
schemaRequiresTrueValue: () => schemaRequiresTrueValue,
|
|
145
|
+
shallowEquals: () => shallowEquals,
|
|
136
146
|
shouldRender: () => shouldRender,
|
|
147
|
+
shouldRenderOptionalField: () => shouldRenderOptionalField,
|
|
137
148
|
sortedJSONStringify: () => sortedJSONStringify,
|
|
138
149
|
titleId: () => titleId,
|
|
139
150
|
toConstant: () => toConstant,
|
|
140
151
|
toDateString: () => toDateString,
|
|
141
152
|
toErrorList: () => toErrorList,
|
|
142
153
|
toErrorSchema: () => toErrorSchema,
|
|
143
|
-
|
|
154
|
+
toFieldPathId: () => toFieldPathId,
|
|
144
155
|
toPathSchema: () => toPathSchema,
|
|
145
156
|
unwrapErrorHandler: () => unwrapErrorHandler,
|
|
157
|
+
useAltDateWidgetProps: () => useAltDateWidgetProps,
|
|
158
|
+
useDeepCompareMemo: () => useDeepCompareMemo,
|
|
159
|
+
useFileWidgetProps: () => useFileWidgetProps,
|
|
146
160
|
utcToLocal: () => utcToLocal,
|
|
147
161
|
validationDataMerge: () => validationDataMerge,
|
|
148
162
|
withIdRefPrefix: () => withIdRefPrefix
|
|
@@ -217,6 +231,8 @@ var REQUIRED_KEY = "required";
|
|
|
217
231
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
218
232
|
var REF_KEY = "$ref";
|
|
219
233
|
var SCHEMA_KEY = "$schema";
|
|
234
|
+
var DEFAULT_ID_PREFIX = "root";
|
|
235
|
+
var DEFAULT_ID_SEPARATOR = "_";
|
|
220
236
|
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
221
237
|
var FORM_CONTEXT_NAME = "formContext";
|
|
222
238
|
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
@@ -226,10 +242,14 @@ var UI_FIELD_KEY = "ui:field";
|
|
|
226
242
|
var UI_WIDGET_KEY = "ui:widget";
|
|
227
243
|
var UI_OPTIONS_KEY = "ui:options";
|
|
228
244
|
var UI_GLOBAL_OPTIONS_KEY = "ui:globalOptions";
|
|
245
|
+
var JSON_SCHEMA_DRAFT_2019_09 = "https://json-schema.org/draft/2019-09/schema";
|
|
229
246
|
var JSON_SCHEMA_DRAFT_2020_12 = "https://json-schema.org/draft/2020-12/schema";
|
|
230
247
|
|
|
231
248
|
// src/getUiOptions.ts
|
|
232
249
|
function getUiOptions(uiSchema = {}, globalOptions = {}) {
|
|
250
|
+
if (!uiSchema) {
|
|
251
|
+
return { ...globalOptions };
|
|
252
|
+
}
|
|
233
253
|
return Object.keys(uiSchema).filter((key) => key.indexOf("ui:") === 0).reduce(
|
|
234
254
|
(options, key) => {
|
|
235
255
|
const value = uiSchema[key];
|
|
@@ -328,7 +348,16 @@ function findEmbeddedSchemaRecursive(schema, ref) {
|
|
|
328
348
|
return schema;
|
|
329
349
|
}
|
|
330
350
|
for (const subSchema of Object.values(schema)) {
|
|
331
|
-
if (
|
|
351
|
+
if (Array.isArray(subSchema)) {
|
|
352
|
+
for (const item of subSchema) {
|
|
353
|
+
if ((0, import_isObject3.default)(item)) {
|
|
354
|
+
const result = findEmbeddedSchemaRecursive(item, ref);
|
|
355
|
+
if (result !== void 0) {
|
|
356
|
+
return result;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
} else if ((0, import_isObject3.default)(subSchema)) {
|
|
332
361
|
const result = findEmbeddedSchemaRecursive(subSchema, ref);
|
|
333
362
|
if (result !== void 0) {
|
|
334
363
|
return result;
|
|
@@ -337,6 +366,23 @@ function findEmbeddedSchemaRecursive(schema, ref) {
|
|
|
337
366
|
}
|
|
338
367
|
return void 0;
|
|
339
368
|
}
|
|
369
|
+
function makeAllReferencesAbsolute(schema, baseURI) {
|
|
370
|
+
const currentURI = (0, import_get.default)(schema, ID_KEY, baseURI);
|
|
371
|
+
if (REF_KEY in schema) {
|
|
372
|
+
schema = { ...schema, [REF_KEY]: import_fast_uri.default.resolve(currentURI, schema[REF_KEY]) };
|
|
373
|
+
}
|
|
374
|
+
for (const [key, subSchema] of Object.entries(schema)) {
|
|
375
|
+
if (Array.isArray(subSchema)) {
|
|
376
|
+
schema = {
|
|
377
|
+
...schema,
|
|
378
|
+
[key]: subSchema.map((item) => (0, import_isObject3.default)(item) ? makeAllReferencesAbsolute(item, currentURI) : item)
|
|
379
|
+
};
|
|
380
|
+
} else if ((0, import_isObject3.default)(subSchema)) {
|
|
381
|
+
schema = { ...schema, [key]: makeAllReferencesAbsolute(subSchema, currentURI) };
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return schema;
|
|
385
|
+
}
|
|
340
386
|
function splitKeyElementFromObject(key, object) {
|
|
341
387
|
const value = object[key];
|
|
342
388
|
const remaining = (0, import_omit.default)(object, [key]);
|
|
@@ -382,7 +428,11 @@ function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [],
|
|
|
382
428
|
const [remaining, theRef] = splitKeyElementFromObject(REF_KEY, current);
|
|
383
429
|
const subSchema = findSchemaDefinitionRecursive(theRef, rootSchema, [...recurseList, ref], baseURI);
|
|
384
430
|
if (Object.keys(remaining).length > 0) {
|
|
385
|
-
|
|
431
|
+
if (rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2019_09 || rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
432
|
+
return { [ALL_OF_KEY]: [remaining, subSchema] };
|
|
433
|
+
} else {
|
|
434
|
+
return { ...remaining, ...subSchema };
|
|
435
|
+
}
|
|
386
436
|
}
|
|
387
437
|
return subSchema;
|
|
388
438
|
}
|
|
@@ -550,7 +600,7 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
550
600
|
|
|
551
601
|
// src/schema/retrieveSchema.ts
|
|
552
602
|
var import_isEmpty2 = __toESM(require("lodash/isEmpty"), 1);
|
|
553
|
-
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
|
|
603
|
+
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
|
|
554
604
|
return retrieveSchemaInternal(
|
|
555
605
|
validator,
|
|
556
606
|
schema,
|
|
@@ -558,7 +608,8 @@ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experim
|
|
|
558
608
|
rawFormData,
|
|
559
609
|
void 0,
|
|
560
610
|
void 0,
|
|
561
|
-
experimental_customMergeAllOf
|
|
611
|
+
experimental_customMergeAllOf,
|
|
612
|
+
resolveAnyOfOrOneOfRefs
|
|
562
613
|
)[0];
|
|
563
614
|
}
|
|
564
615
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
@@ -647,14 +698,16 @@ function getMatchingPatternProperties(schema, key) {
|
|
|
647
698
|
{}
|
|
648
699
|
);
|
|
649
700
|
}
|
|
650
|
-
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
701
|
+
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
651
702
|
const updatedSchemas = resolveReference(
|
|
652
703
|
validator,
|
|
653
704
|
schema,
|
|
654
705
|
rootSchema,
|
|
655
706
|
expandAllBranches,
|
|
656
707
|
recurseList,
|
|
657
|
-
formData
|
|
708
|
+
formData,
|
|
709
|
+
experimental_customMergeAllOf,
|
|
710
|
+
resolveAnyOfOrOneOfRefs
|
|
658
711
|
);
|
|
659
712
|
if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
|
|
660
713
|
return updatedSchemas;
|
|
@@ -666,7 +719,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
666
719
|
rootSchema,
|
|
667
720
|
expandAllBranches,
|
|
668
721
|
recurseList,
|
|
669
|
-
formData
|
|
722
|
+
formData,
|
|
723
|
+
experimental_customMergeAllOf
|
|
670
724
|
);
|
|
671
725
|
return resolvedSchemas.flatMap((s) => {
|
|
672
726
|
return retrieveSchemaInternal(
|
|
@@ -680,7 +734,7 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
680
734
|
);
|
|
681
735
|
});
|
|
682
736
|
}
|
|
683
|
-
if (ALL_OF_KEY in schema && Array.isArray(schema
|
|
737
|
+
if (ALL_OF_KEY in schema && Array.isArray(schema[ALL_OF_KEY])) {
|
|
684
738
|
const allOfSchemaElements = schema.allOf.map(
|
|
685
739
|
(allOfSubschema) => retrieveSchemaInternal(
|
|
686
740
|
validator,
|
|
@@ -700,8 +754,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
700
754
|
}
|
|
701
755
|
return [schema];
|
|
702
756
|
}
|
|
703
|
-
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
704
|
-
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
|
|
757
|
+
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
758
|
+
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList, void 0, resolveAnyOfOrOneOfRefs);
|
|
705
759
|
if (updatedSchema !== schema) {
|
|
706
760
|
return retrieveSchemaInternal(
|
|
707
761
|
validator,
|
|
@@ -710,12 +764,13 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
710
764
|
formData,
|
|
711
765
|
expandAllBranches,
|
|
712
766
|
recurseList,
|
|
713
|
-
experimental_customMergeAllOf
|
|
767
|
+
experimental_customMergeAllOf,
|
|
768
|
+
resolveAnyOfOrOneOfRefs
|
|
714
769
|
);
|
|
715
770
|
}
|
|
716
771
|
return [schema];
|
|
717
772
|
}
|
|
718
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
773
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
719
774
|
if (!isObject(schema)) {
|
|
720
775
|
return schema;
|
|
721
776
|
}
|
|
@@ -738,7 +793,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
738
793
|
resolvedSchema[PROPERTIES_KEY],
|
|
739
794
|
(result, value, key) => {
|
|
740
795
|
const childList = [...recurseList];
|
|
741
|
-
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI);
|
|
796
|
+
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI, resolveAnyOfOrOneOfRefs);
|
|
742
797
|
childrenLists.push(childList);
|
|
743
798
|
},
|
|
744
799
|
{}
|
|
@@ -749,9 +804,28 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
749
804
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
750
805
|
resolvedSchema = {
|
|
751
806
|
...resolvedSchema,
|
|
752
|
-
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI)
|
|
807
|
+
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
753
808
|
};
|
|
754
809
|
}
|
|
810
|
+
if (resolveAnyOfOrOneOfRefs) {
|
|
811
|
+
let key;
|
|
812
|
+
let schemas;
|
|
813
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
814
|
+
key = ANY_OF_KEY;
|
|
815
|
+
schemas = resolvedSchema[ANY_OF_KEY];
|
|
816
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
817
|
+
key = ONE_OF_KEY;
|
|
818
|
+
schemas = resolvedSchema[ONE_OF_KEY];
|
|
819
|
+
}
|
|
820
|
+
if (key && schemas) {
|
|
821
|
+
resolvedSchema = {
|
|
822
|
+
...resolvedSchema,
|
|
823
|
+
[key]: schemas.map(
|
|
824
|
+
(s) => resolveAllReferences(s, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
825
|
+
)
|
|
826
|
+
};
|
|
827
|
+
}
|
|
828
|
+
}
|
|
755
829
|
return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;
|
|
756
830
|
}
|
|
757
831
|
function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {
|
|
@@ -769,7 +843,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
769
843
|
if (!(0, import_isEmpty2.default)(matchingProperties)) {
|
|
770
844
|
schema.properties[key] = retrieveSchema(
|
|
771
845
|
validator,
|
|
772
|
-
{
|
|
846
|
+
{ [ALL_OF_KEY]: Object.values(matchingProperties) },
|
|
773
847
|
rootSchema,
|
|
774
848
|
(0, import_get5.default)(formData, [key]),
|
|
775
849
|
experimental_customMergeAllOf
|
|
@@ -779,12 +853,12 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
779
853
|
}
|
|
780
854
|
}
|
|
781
855
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
|
|
782
|
-
let additionalProperties
|
|
856
|
+
let additionalProperties;
|
|
783
857
|
if (typeof schema.additionalProperties !== "boolean") {
|
|
784
858
|
if (REF_KEY in schema.additionalProperties) {
|
|
785
859
|
additionalProperties = retrieveSchema(
|
|
786
860
|
validator,
|
|
787
|
-
{
|
|
861
|
+
{ [REF_KEY]: (0, import_get5.default)(schema.additionalProperties, [REF_KEY]) },
|
|
788
862
|
rootSchema,
|
|
789
863
|
formData,
|
|
790
864
|
experimental_customMergeAllOf
|
|
@@ -811,7 +885,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
811
885
|
});
|
|
812
886
|
return schema;
|
|
813
887
|
}
|
|
814
|
-
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
|
|
888
|
+
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
815
889
|
if (!isObject(schema)) {
|
|
816
890
|
return [{}];
|
|
817
891
|
}
|
|
@@ -822,7 +896,8 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
822
896
|
expandAllBranches,
|
|
823
897
|
recurseList,
|
|
824
898
|
rawFormData,
|
|
825
|
-
experimental_customMergeAllOf
|
|
899
|
+
experimental_customMergeAllOf,
|
|
900
|
+
resolveAnyOfOrOneOfRefs
|
|
826
901
|
);
|
|
827
902
|
return resolvedSchemas.flatMap((s) => {
|
|
828
903
|
let resolvedSchema = s;
|
|
@@ -1379,8 +1454,19 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1379
1454
|
const keyValue = (0, import_get10.default)(formData, key);
|
|
1380
1455
|
const keyExistsInDefaults = isObject(defaults) && key in defaults;
|
|
1381
1456
|
const keyExistsInFormData = key in formData;
|
|
1457
|
+
const keyDefault = (0, import_get10.default)(defaults, key) ?? {};
|
|
1458
|
+
const defaultValueIsNestedObject = keyExistsInDefaults && Object.entries(keyDefault).some(([, v]) => isObject(v));
|
|
1459
|
+
const keyDefaultIsObject = keyExistsInDefaults && isObject((0, import_get10.default)(defaults, key));
|
|
1460
|
+
const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
|
|
1461
|
+
if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
|
|
1462
|
+
acc2[key] = {
|
|
1463
|
+
...(0, import_get10.default)(defaults, key),
|
|
1464
|
+
...keyValue
|
|
1465
|
+
};
|
|
1466
|
+
return acc2;
|
|
1467
|
+
}
|
|
1382
1468
|
acc2[key] = mergeDefaultsWithFormData(
|
|
1383
|
-
|
|
1469
|
+
(0, import_get10.default)(defaults, key),
|
|
1384
1470
|
keyValue,
|
|
1385
1471
|
mergeExtraArrayDefaults,
|
|
1386
1472
|
defaultSupercedesUndefined,
|
|
@@ -1391,7 +1477,7 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1391
1477
|
return acc2;
|
|
1392
1478
|
}, acc);
|
|
1393
1479
|
}
|
|
1394
|
-
if (defaultSupercedesUndefined && (!(0
|
|
1480
|
+
if (defaultSupercedesUndefined && (!(defaults === void 0) && (0, import_isNil.default)(formData) || typeof formData === "number" && isNaN(formData)) || overrideFormDataWithDefaults && !(0, import_isNil.default)(formData)) {
|
|
1395
1481
|
return defaults;
|
|
1396
1482
|
}
|
|
1397
1483
|
return formData;
|
|
@@ -1538,10 +1624,19 @@ function getInnerSchemaForArrayItem(schema, additionalItems = 0 /* Ignore */, id
|
|
|
1538
1624
|
}
|
|
1539
1625
|
return {};
|
|
1540
1626
|
}
|
|
1627
|
+
function computeDefaultBasedOnSchemaTypeAndDefaults(schema, computedDefault) {
|
|
1628
|
+
const { default: schemaDefault, type } = schema;
|
|
1629
|
+
const shouldReturnNullAsDefault = Array.isArray(type) && type.includes("null") && (0, import_isEmpty4.default)(computedDefault) && schemaDefault === null;
|
|
1630
|
+
return shouldReturnNullAsDefault ? null : computedDefault;
|
|
1631
|
+
}
|
|
1541
1632
|
function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}, isConst = false) {
|
|
1542
1633
|
const { emptyObjectFields = "populateAllDefaults" } = experimental_defaultFormStateBehavior;
|
|
1543
|
-
if (includeUndefinedValues || isConst) {
|
|
1634
|
+
if (includeUndefinedValues === true || isConst) {
|
|
1544
1635
|
obj[key] = computedDefault;
|
|
1636
|
+
} else if (includeUndefinedValues === "excludeObjectChildren") {
|
|
1637
|
+
if (!isObject(computedDefault) || !(0, import_isEmpty4.default)(computedDefault)) {
|
|
1638
|
+
obj[key] = computedDefault;
|
|
1639
|
+
}
|
|
1545
1640
|
} else if (emptyObjectFields !== "skipDefaults") {
|
|
1546
1641
|
const isSelfOrParentRequired = isParentRequired === void 0 ? requiredFields.includes(key) : isParentRequired;
|
|
1547
1642
|
if (isObject(computedDefault)) {
|
|
@@ -1573,7 +1668,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1573
1668
|
experimental_defaultFormStateBehavior = void 0,
|
|
1574
1669
|
experimental_customMergeAllOf = void 0,
|
|
1575
1670
|
required,
|
|
1576
|
-
shouldMergeDefaultsIntoFormData = false
|
|
1671
|
+
shouldMergeDefaultsIntoFormData = false,
|
|
1672
|
+
initialDefaultsGenerated
|
|
1577
1673
|
} = computeDefaultsProps;
|
|
1578
1674
|
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1579
1675
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
@@ -1581,7 +1677,7 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1581
1677
|
let schemaToCompute = null;
|
|
1582
1678
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
1583
1679
|
let updatedRecurseList = _recurseList;
|
|
1584
|
-
if (schema[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1680
|
+
if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1585
1681
|
defaults = schema[CONST_KEY];
|
|
1586
1682
|
} else if (isObject(defaults) && isObject(schema.default)) {
|
|
1587
1683
|
defaults = mergeObjects(defaults, schema.default);
|
|
@@ -1676,9 +1772,10 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1676
1772
|
experimental_defaultFormStateBehavior: experimental_dfsb_to_compute,
|
|
1677
1773
|
experimental_customMergeAllOf,
|
|
1678
1774
|
parentDefaults: defaults,
|
|
1679
|
-
rawFormData: formData,
|
|
1775
|
+
rawFormData: rawFormData ?? formData,
|
|
1680
1776
|
required,
|
|
1681
|
-
shouldMergeDefaultsIntoFormData
|
|
1777
|
+
shouldMergeDefaultsIntoFormData,
|
|
1778
|
+
initialDefaultsGenerated
|
|
1682
1779
|
});
|
|
1683
1780
|
}
|
|
1684
1781
|
if (defaults === void 0) {
|
|
@@ -1730,7 +1827,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1730
1827
|
experimental_defaultFormStateBehavior = void 0,
|
|
1731
1828
|
experimental_customMergeAllOf = void 0,
|
|
1732
1829
|
required,
|
|
1733
|
-
shouldMergeDefaultsIntoFormData
|
|
1830
|
+
shouldMergeDefaultsIntoFormData,
|
|
1831
|
+
initialDefaultsGenerated
|
|
1734
1832
|
} = {}, defaults) {
|
|
1735
1833
|
{
|
|
1736
1834
|
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
@@ -1751,7 +1849,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1751
1849
|
parentDefaults: (0, import_get12.default)(defaults, [key]),
|
|
1752
1850
|
rawFormData: (0, import_get12.default)(formData, [key]),
|
|
1753
1851
|
required: retrievedSchema.required?.includes(key),
|
|
1754
|
-
shouldMergeDefaultsIntoFormData
|
|
1852
|
+
shouldMergeDefaultsIntoFormData,
|
|
1853
|
+
initialDefaultsGenerated
|
|
1755
1854
|
});
|
|
1756
1855
|
maybeAddDefaultToObject(
|
|
1757
1856
|
acc,
|
|
@@ -1767,7 +1866,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1767
1866
|
},
|
|
1768
1867
|
{}
|
|
1769
1868
|
);
|
|
1770
|
-
if (retrievedSchema.additionalProperties) {
|
|
1869
|
+
if (retrievedSchema.additionalProperties && !initialDefaultsGenerated) {
|
|
1771
1870
|
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1772
1871
|
const keys2 = /* @__PURE__ */ new Set();
|
|
1773
1872
|
if (isObject(defaults)) {
|
|
@@ -1788,7 +1887,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1788
1887
|
parentDefaults: (0, import_get12.default)(defaults, [key]),
|
|
1789
1888
|
rawFormData: (0, import_get12.default)(formData, [key]),
|
|
1790
1889
|
required: retrievedSchema.required?.includes(key),
|
|
1791
|
-
shouldMergeDefaultsIntoFormData
|
|
1890
|
+
shouldMergeDefaultsIntoFormData,
|
|
1891
|
+
initialDefaultsGenerated
|
|
1792
1892
|
});
|
|
1793
1893
|
maybeAddDefaultToObject(
|
|
1794
1894
|
objectDefaults,
|
|
@@ -1800,7 +1900,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1800
1900
|
);
|
|
1801
1901
|
});
|
|
1802
1902
|
}
|
|
1803
|
-
return objectDefaults;
|
|
1903
|
+
return computeDefaultBasedOnSchemaTypeAndDefaults(rawSchema, objectDefaults);
|
|
1804
1904
|
}
|
|
1805
1905
|
}
|
|
1806
1906
|
function getArrayDefaults(validator, rawSchema, {
|
|
@@ -1810,7 +1910,9 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1810
1910
|
experimental_defaultFormStateBehavior = void 0,
|
|
1811
1911
|
experimental_customMergeAllOf = void 0,
|
|
1812
1912
|
required,
|
|
1813
|
-
|
|
1913
|
+
requiredAsRoot = false,
|
|
1914
|
+
shouldMergeDefaultsIntoFormData,
|
|
1915
|
+
initialDefaultsGenerated
|
|
1814
1916
|
} = {}, defaults) {
|
|
1815
1917
|
const schema = rawSchema;
|
|
1816
1918
|
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
@@ -1831,7 +1933,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1831
1933
|
experimental_customMergeAllOf,
|
|
1832
1934
|
parentDefaults: item,
|
|
1833
1935
|
required,
|
|
1834
|
-
shouldMergeDefaultsIntoFormData
|
|
1936
|
+
shouldMergeDefaultsIntoFormData,
|
|
1937
|
+
initialDefaultsGenerated
|
|
1835
1938
|
});
|
|
1836
1939
|
});
|
|
1837
1940
|
}
|
|
@@ -1849,7 +1952,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1849
1952
|
rawFormData: item,
|
|
1850
1953
|
parentDefaults: (0, import_get12.default)(defaults, [idx]),
|
|
1851
1954
|
required,
|
|
1852
|
-
shouldMergeDefaultsIntoFormData
|
|
1955
|
+
shouldMergeDefaultsIntoFormData,
|
|
1956
|
+
initialDefaultsGenerated
|
|
1853
1957
|
});
|
|
1854
1958
|
});
|
|
1855
1959
|
const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
|
|
@@ -1865,25 +1969,29 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1865
1969
|
return defaults ? defaults : void 0;
|
|
1866
1970
|
}
|
|
1867
1971
|
}
|
|
1972
|
+
let arrayDefault;
|
|
1868
1973
|
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1869
1974
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1870
|
-
|
|
1871
|
-
}
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1975
|
+
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1976
|
+
} else {
|
|
1977
|
+
const defaultEntries = defaults || [];
|
|
1978
|
+
const fillerSchema = getInnerSchemaForArrayItem(schema, 1 /* Invert */);
|
|
1979
|
+
const fillerDefault = fillerSchema.default;
|
|
1980
|
+
const fillerEntries = Array.from(
|
|
1981
|
+
{ length: schema.minItems - defaultsLength },
|
|
1982
|
+
() => computeDefaults(validator, fillerSchema, {
|
|
1983
|
+
parentDefaults: fillerDefault,
|
|
1984
|
+
rootSchema,
|
|
1985
|
+
_recurseList,
|
|
1986
|
+
experimental_defaultFormStateBehavior,
|
|
1987
|
+
experimental_customMergeAllOf,
|
|
1988
|
+
required,
|
|
1989
|
+
shouldMergeDefaultsIntoFormData
|
|
1990
|
+
})
|
|
1991
|
+
);
|
|
1992
|
+
arrayDefault = defaultEntries.concat(fillerEntries);
|
|
1993
|
+
}
|
|
1994
|
+
return computeDefaultBasedOnSchemaTypeAndDefaults(rawSchema, arrayDefault);
|
|
1887
1995
|
}
|
|
1888
1996
|
function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps = {}, defaults) {
|
|
1889
1997
|
switch (getSchemaType(rawSchema)) {
|
|
@@ -1896,7 +2004,7 @@ function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps
|
|
|
1896
2004
|
}
|
|
1897
2005
|
}
|
|
1898
2006
|
}
|
|
1899
|
-
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2007
|
+
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf, initialDefaultsGenerated) {
|
|
1900
2008
|
if (!isObject(theSchema)) {
|
|
1901
2009
|
throw new Error("Invalid schema: " + theSchema);
|
|
1902
2010
|
}
|
|
@@ -1907,8 +2015,16 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
1907
2015
|
experimental_defaultFormStateBehavior,
|
|
1908
2016
|
experimental_customMergeAllOf,
|
|
1909
2017
|
rawFormData: formData,
|
|
1910
|
-
shouldMergeDefaultsIntoFormData: true
|
|
2018
|
+
shouldMergeDefaultsIntoFormData: true,
|
|
2019
|
+
initialDefaultsGenerated,
|
|
2020
|
+
requiredAsRoot: true
|
|
1911
2021
|
});
|
|
2022
|
+
if (schema.type !== "object" && isObject(schema.default)) {
|
|
2023
|
+
return {
|
|
2024
|
+
...defaults,
|
|
2025
|
+
...formData
|
|
2026
|
+
};
|
|
2027
|
+
}
|
|
1912
2028
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
1913
2029
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
1914
2030
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
|
|
@@ -1965,10 +2081,10 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
1965
2081
|
if (schemaType === "object") {
|
|
1966
2082
|
displayLabel = false;
|
|
1967
2083
|
}
|
|
1968
|
-
if (schemaType === "boolean" && !uiSchema[UI_WIDGET_KEY]) {
|
|
2084
|
+
if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
|
|
1969
2085
|
displayLabel = false;
|
|
1970
2086
|
}
|
|
1971
|
-
if (uiSchema[UI_FIELD_KEY]) {
|
|
2087
|
+
if (uiSchema && uiSchema[UI_FIELD_KEY]) {
|
|
1972
2088
|
displayLabel = false;
|
|
1973
2089
|
}
|
|
1974
2090
|
return displayLabel;
|
|
@@ -2107,80 +2223,8 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2107
2223
|
return newFormData;
|
|
2108
2224
|
}
|
|
2109
2225
|
|
|
2110
|
-
// src/schema/toIdSchema.ts
|
|
2111
|
-
var import_get14 = __toESM(require("lodash/get"), 1);
|
|
2112
|
-
function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
2113
|
-
const $id = id || idPrefix;
|
|
2114
|
-
const idSchema = { $id };
|
|
2115
|
-
if (typeof schema === "object") {
|
|
2116
|
-
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
|
|
2117
|
-
const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
2118
|
-
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));
|
|
2119
|
-
if (sameSchemaIndex === -1) {
|
|
2120
|
-
return toIdSchemaInternal(
|
|
2121
|
-
validator,
|
|
2122
|
-
_schema,
|
|
2123
|
-
idPrefix,
|
|
2124
|
-
idSeparator,
|
|
2125
|
-
id,
|
|
2126
|
-
rootSchema,
|
|
2127
|
-
formData,
|
|
2128
|
-
_recurseList.concat(_schema),
|
|
2129
|
-
experimental_customMergeAllOf
|
|
2130
|
-
);
|
|
2131
|
-
}
|
|
2132
|
-
}
|
|
2133
|
-
if (ITEMS_KEY in schema && !(0, import_get14.default)(schema, [ITEMS_KEY, REF_KEY])) {
|
|
2134
|
-
return toIdSchemaInternal(
|
|
2135
|
-
validator,
|
|
2136
|
-
(0, import_get14.default)(schema, ITEMS_KEY),
|
|
2137
|
-
idPrefix,
|
|
2138
|
-
idSeparator,
|
|
2139
|
-
id,
|
|
2140
|
-
rootSchema,
|
|
2141
|
-
formData,
|
|
2142
|
-
_recurseList,
|
|
2143
|
-
experimental_customMergeAllOf
|
|
2144
|
-
);
|
|
2145
|
-
}
|
|
2146
|
-
if (getSchemaType(schema) === "object" && PROPERTIES_KEY in schema) {
|
|
2147
|
-
for (const name in schema.properties) {
|
|
2148
|
-
const field = schema[PROPERTIES_KEY][name];
|
|
2149
|
-
const fieldId = idSchema[ID_KEY] + idSeparator + name;
|
|
2150
|
-
idSchema[name] = toIdSchemaInternal(
|
|
2151
|
-
validator,
|
|
2152
|
-
field,
|
|
2153
|
-
idPrefix,
|
|
2154
|
-
idSeparator,
|
|
2155
|
-
fieldId,
|
|
2156
|
-
rootSchema,
|
|
2157
|
-
// It's possible that formData is not an object -- this can happen if an
|
|
2158
|
-
// array item has just been added, but not populated with data yet
|
|
2159
|
-
(0, import_get14.default)(formData, [name]),
|
|
2160
|
-
_recurseList,
|
|
2161
|
-
experimental_customMergeAllOf
|
|
2162
|
-
);
|
|
2163
|
-
}
|
|
2164
|
-
}
|
|
2165
|
-
}
|
|
2166
|
-
return idSchema;
|
|
2167
|
-
}
|
|
2168
|
-
function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = "root", idSeparator = "_", experimental_customMergeAllOf) {
|
|
2169
|
-
return toIdSchemaInternal(
|
|
2170
|
-
validator,
|
|
2171
|
-
schema,
|
|
2172
|
-
idPrefix,
|
|
2173
|
-
idSeparator,
|
|
2174
|
-
id,
|
|
2175
|
-
rootSchema,
|
|
2176
|
-
formData,
|
|
2177
|
-
void 0,
|
|
2178
|
-
experimental_customMergeAllOf
|
|
2179
|
-
);
|
|
2180
|
-
}
|
|
2181
|
-
|
|
2182
2226
|
// src/schema/toPathSchema.ts
|
|
2183
|
-
var
|
|
2227
|
+
var import_get14 = __toESM(require("lodash/get"), 1);
|
|
2184
2228
|
var import_set2 = __toESM(require("lodash/set"), 1);
|
|
2185
2229
|
function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
2186
2230
|
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
|
|
@@ -2273,7 +2317,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2273
2317
|
}
|
|
2274
2318
|
} else if (PROPERTIES_KEY in schema) {
|
|
2275
2319
|
for (const property in schema.properties) {
|
|
2276
|
-
const field = (0,
|
|
2320
|
+
const field = (0, import_get14.default)(schema, [PROPERTIES_KEY, property], {});
|
|
2277
2321
|
pathSchema[property] = toPathSchemaInternal(
|
|
2278
2322
|
validator,
|
|
2279
2323
|
field,
|
|
@@ -2281,7 +2325,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2281
2325
|
rootSchema,
|
|
2282
2326
|
// It's possible that formData is not an object -- this can happen if an
|
|
2283
2327
|
// array item has just been added, but not populated with data yet
|
|
2284
|
-
(0,
|
|
2328
|
+
(0, import_get14.default)(formData, [property]),
|
|
2285
2329
|
_recurseList,
|
|
2286
2330
|
experimental_customMergeAllOf
|
|
2287
2331
|
);
|
|
@@ -2294,6 +2338,7 @@ function toPathSchema(validator, schema, name = "", rootSchema, formData, experi
|
|
|
2294
2338
|
}
|
|
2295
2339
|
|
|
2296
2340
|
// src/createSchemaUtils.ts
|
|
2341
|
+
var import_get15 = __toESM(require("lodash/get"), 1);
|
|
2297
2342
|
var SchemaUtils = class {
|
|
2298
2343
|
/** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables
|
|
2299
2344
|
*
|
|
@@ -2303,11 +2348,22 @@ var SchemaUtils = class {
|
|
|
2303
2348
|
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
|
|
2304
2349
|
*/
|
|
2305
2350
|
constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2306
|
-
|
|
2351
|
+
if (rootSchema && rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
2352
|
+
this.rootSchema = makeAllReferencesAbsolute(rootSchema, (0, import_get15.default)(rootSchema, ID_KEY, "#"));
|
|
2353
|
+
} else {
|
|
2354
|
+
this.rootSchema = rootSchema;
|
|
2355
|
+
}
|
|
2307
2356
|
this.validator = validator;
|
|
2308
2357
|
this.experimental_defaultFormStateBehavior = experimental_defaultFormStateBehavior;
|
|
2309
2358
|
this.experimental_customMergeAllOf = experimental_customMergeAllOf;
|
|
2310
2359
|
}
|
|
2360
|
+
/** Returns the `rootSchema` in the `SchemaUtilsType`
|
|
2361
|
+
*
|
|
2362
|
+
* @returns - The `rootSchema`
|
|
2363
|
+
*/
|
|
2364
|
+
getRootSchema() {
|
|
2365
|
+
return this.rootSchema;
|
|
2366
|
+
}
|
|
2311
2367
|
/** Returns the `ValidatorType` in the `SchemaUtilsType`
|
|
2312
2368
|
*
|
|
2313
2369
|
* @returns - The `ValidatorType`
|
|
@@ -2380,9 +2436,10 @@ var SchemaUtils = class {
|
|
|
2380
2436
|
* @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
|
|
2381
2437
|
* If "excludeObjectChildren", pass `includeUndefinedValues` as false when computing defaults for any nested
|
|
2382
2438
|
* object properties.
|
|
2439
|
+
* @param initialDefaultsGenerated - Indicates whether or not initial defaults have been generated
|
|
2383
2440
|
* @returns - The resulting `formData` with all the defaults provided
|
|
2384
2441
|
*/
|
|
2385
|
-
getDefaultFormState(schema, formData, includeUndefinedValues = false) {
|
|
2442
|
+
getDefaultFormState(schema, formData, includeUndefinedValues = false, initialDefaultsGenerated) {
|
|
2386
2443
|
return getDefaultFormState(
|
|
2387
2444
|
this.validator,
|
|
2388
2445
|
schema,
|
|
@@ -2390,7 +2447,8 @@ var SchemaUtils = class {
|
|
|
2390
2447
|
this.rootSchema,
|
|
2391
2448
|
includeUndefinedValues,
|
|
2392
2449
|
this.experimental_defaultFormStateBehavior,
|
|
2393
|
-
this.experimental_customMergeAllOf
|
|
2450
|
+
this.experimental_customMergeAllOf,
|
|
2451
|
+
initialDefaultsGenerated
|
|
2394
2452
|
);
|
|
2395
2453
|
}
|
|
2396
2454
|
/** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
|
|
@@ -2489,15 +2547,17 @@ var SchemaUtils = class {
|
|
|
2489
2547
|
*
|
|
2490
2548
|
* @param schema - The schema for which retrieving a schema is desired
|
|
2491
2549
|
* @param [rawFormData] - The current formData, if any, to assist retrieving a schema
|
|
2550
|
+
* @param [resolveAnyOfOrOneOfRefs] - Optional flag indicating whether to resolved refs in anyOf/oneOf lists
|
|
2492
2551
|
* @returns - The schema having its conditions, additional properties, references and dependencies resolved
|
|
2493
2552
|
*/
|
|
2494
|
-
retrieveSchema(schema, rawFormData) {
|
|
2553
|
+
retrieveSchema(schema, rawFormData, resolveAnyOfOrOneOfRefs) {
|
|
2495
2554
|
return retrieveSchema(
|
|
2496
2555
|
this.validator,
|
|
2497
2556
|
schema,
|
|
2498
2557
|
this.rootSchema,
|
|
2499
2558
|
rawFormData,
|
|
2500
|
-
this.experimental_customMergeAllOf
|
|
2559
|
+
this.experimental_customMergeAllOf,
|
|
2560
|
+
resolveAnyOfOrOneOfRefs
|
|
2501
2561
|
);
|
|
2502
2562
|
}
|
|
2503
2563
|
/** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
|
|
@@ -2521,27 +2581,6 @@ var SchemaUtils = class {
|
|
|
2521
2581
|
this.experimental_customMergeAllOf
|
|
2522
2582
|
);
|
|
2523
2583
|
}
|
|
2524
|
-
/** Generates an `IdSchema` object for the `schema`, recursively
|
|
2525
|
-
*
|
|
2526
|
-
* @param schema - The schema for which the display label flag is desired
|
|
2527
|
-
* @param [id] - The base id for the schema
|
|
2528
|
-
* @param [formData] - The current formData, if any, onto which to provide any missing defaults
|
|
2529
|
-
* @param [idPrefix='root'] - The prefix to use for the id
|
|
2530
|
-
* @param [idSeparator='_'] - The separator to use for the path segments in the id
|
|
2531
|
-
* @returns - The `IdSchema` object for the `schema`
|
|
2532
|
-
*/
|
|
2533
|
-
toIdSchema(schema, id, formData, idPrefix = "root", idSeparator = "_") {
|
|
2534
|
-
return toIdSchema(
|
|
2535
|
-
this.validator,
|
|
2536
|
-
schema,
|
|
2537
|
-
id,
|
|
2538
|
-
this.rootSchema,
|
|
2539
|
-
formData,
|
|
2540
|
-
idPrefix,
|
|
2541
|
-
idSeparator,
|
|
2542
|
-
this.experimental_customMergeAllOf
|
|
2543
|
-
);
|
|
2544
|
-
}
|
|
2545
2584
|
/** Generates an `PathSchema` object for the `schema`, recursively
|
|
2546
2585
|
*
|
|
2547
2586
|
* @param schema - The schema for which the display label flag is desired
|
|
@@ -2627,6 +2666,31 @@ function dateRangeOptions(start, stop) {
|
|
|
2627
2666
|
return options;
|
|
2628
2667
|
}
|
|
2629
2668
|
|
|
2669
|
+
// src/shallowEquals.ts
|
|
2670
|
+
function shallowEquals(a, b) {
|
|
2671
|
+
if (Object.is(a, b)) {
|
|
2672
|
+
return true;
|
|
2673
|
+
}
|
|
2674
|
+
if (a == null || b == null) {
|
|
2675
|
+
return false;
|
|
2676
|
+
}
|
|
2677
|
+
if (typeof a !== "object" || typeof b !== "object") {
|
|
2678
|
+
return false;
|
|
2679
|
+
}
|
|
2680
|
+
const keysA = Object.keys(a);
|
|
2681
|
+
const keysB = Object.keys(b);
|
|
2682
|
+
if (keysA.length !== keysB.length) {
|
|
2683
|
+
return false;
|
|
2684
|
+
}
|
|
2685
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
2686
|
+
const key = keysA[i];
|
|
2687
|
+
if (!Object.prototype.hasOwnProperty.call(b, key) || !Object.is(a[key], b[key])) {
|
|
2688
|
+
return false;
|
|
2689
|
+
}
|
|
2690
|
+
}
|
|
2691
|
+
return true;
|
|
2692
|
+
}
|
|
2693
|
+
|
|
2630
2694
|
// src/replaceStringParameters.ts
|
|
2631
2695
|
function replaceStringParameters(inputString, params) {
|
|
2632
2696
|
let output = inputString;
|
|
@@ -2794,6 +2858,29 @@ var ErrorSchemaBuilder = class {
|
|
|
2794
2858
|
}
|
|
2795
2859
|
};
|
|
2796
2860
|
|
|
2861
|
+
// src/getChangedFields.ts
|
|
2862
|
+
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
2863
|
+
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
2864
|
+
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
2865
|
+
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
2866
|
+
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
2867
|
+
function getChangedFields(a, b) {
|
|
2868
|
+
const aIsPlainObject = (0, import_isPlainObject2.default)(a);
|
|
2869
|
+
const bIsPlainObject = (0, import_isPlainObject2.default)(b);
|
|
2870
|
+
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
2871
|
+
return [];
|
|
2872
|
+
}
|
|
2873
|
+
if (aIsPlainObject && !bIsPlainObject) {
|
|
2874
|
+
return (0, import_keys.default)(a);
|
|
2875
|
+
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
2876
|
+
return (0, import_keys.default)(b);
|
|
2877
|
+
} else {
|
|
2878
|
+
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals(value, (0, import_get17.default)(b, key))));
|
|
2879
|
+
const diffFields = (0, import_difference.default)((0, import_keys.default)(b), (0, import_keys.default)(a));
|
|
2880
|
+
return [...unequalFields, ...diffFields];
|
|
2881
|
+
}
|
|
2882
|
+
}
|
|
2883
|
+
|
|
2797
2884
|
// src/getDateElementProps.ts
|
|
2798
2885
|
function getDateElementProps(date, time, yearRange = [1900, (/* @__PURE__ */ new Date()).getFullYear() + 2], format = "YMD") {
|
|
2799
2886
|
const { day, month, year, hour, minute, second } = date;
|
|
@@ -2902,10 +2989,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2902
2989
|
}
|
|
2903
2990
|
|
|
2904
2991
|
// src/getTestIds.ts
|
|
2905
|
-
var
|
|
2906
|
-
var
|
|
2992
|
+
var import_get18 = __toESM(require("lodash/get"), 1);
|
|
2993
|
+
var import_uniqueId = __toESM(require("lodash/uniqueId"), 1);
|
|
2907
2994
|
function getTestIds() {
|
|
2908
|
-
if (typeof process === "undefined" || (0,
|
|
2995
|
+
if (typeof process === "undefined" || (0, import_get18.default)(process, "env.NODE_ENV") !== "test") {
|
|
2909
2996
|
return {};
|
|
2910
2997
|
}
|
|
2911
2998
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -2914,7 +3001,7 @@ function getTestIds() {
|
|
|
2914
3001
|
{
|
|
2915
3002
|
get(_obj, prop) {
|
|
2916
3003
|
if (!ids.has(prop)) {
|
|
2917
|
-
ids.set(prop, (0,
|
|
3004
|
+
ids.set(prop, (0, import_uniqueId.default)("test-id-"));
|
|
2918
3005
|
}
|
|
2919
3006
|
return ids.get(prop);
|
|
2920
3007
|
}
|
|
@@ -2925,7 +3012,7 @@ function getTestIds() {
|
|
|
2925
3012
|
// src/getWidget.tsx
|
|
2926
3013
|
var import_react = require("react");
|
|
2927
3014
|
var import_react_is = __toESM(require("react-is"), 1);
|
|
2928
|
-
var
|
|
3015
|
+
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
2929
3016
|
var import_set4 = __toESM(require("lodash/set"), 1);
|
|
2930
3017
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2931
3018
|
var widgetMap = {
|
|
@@ -2981,7 +3068,7 @@ var widgetMap = {
|
|
|
2981
3068
|
}
|
|
2982
3069
|
};
|
|
2983
3070
|
function mergeWidgetOptions(AWidget) {
|
|
2984
|
-
let MergedWidget = (0,
|
|
3071
|
+
let MergedWidget = (0, import_get19.default)(AWidget, "MergedWidget");
|
|
2985
3072
|
if (!MergedWidget) {
|
|
2986
3073
|
const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
|
|
2987
3074
|
MergedWidget = ({ options, ...props }) => {
|
|
@@ -2997,7 +3084,7 @@ function getWidget(schema, widget, registeredWidgets = {}) {
|
|
|
2997
3084
|
return mergeWidgetOptions(widget);
|
|
2998
3085
|
}
|
|
2999
3086
|
if (typeof widget !== "string") {
|
|
3000
|
-
throw new Error(`Unsupported widget definition: ${typeof widget}`);
|
|
3087
|
+
throw new Error(`Unsupported widget definition: ${typeof widget} in schema: ${JSON.stringify(schema)}`);
|
|
3001
3088
|
}
|
|
3002
3089
|
if (widget in registeredWidgets) {
|
|
3003
3090
|
const registeredWidget = registeredWidgets[widget];
|
|
@@ -3005,14 +3092,14 @@ function getWidget(schema, widget, registeredWidgets = {}) {
|
|
|
3005
3092
|
}
|
|
3006
3093
|
if (typeof type === "string") {
|
|
3007
3094
|
if (!(type in widgetMap)) {
|
|
3008
|
-
throw new Error(`No widget for type '${type}'`);
|
|
3095
|
+
throw new Error(`No widget for type '${type}' in schema: ${JSON.stringify(schema)}`);
|
|
3009
3096
|
}
|
|
3010
3097
|
if (widget in widgetMap[type]) {
|
|
3011
3098
|
const registeredWidget = registeredWidgets[widgetMap[type][widget]];
|
|
3012
3099
|
return getWidget(schema, registeredWidget, registeredWidgets);
|
|
3013
3100
|
}
|
|
3014
3101
|
}
|
|
3015
|
-
throw new Error(`No widget '${widget}' for type '${type}'`);
|
|
3102
|
+
throw new Error(`No widget '${widget}' for type '${type}' in schema: ${JSON.stringify(schema)}`);
|
|
3016
3103
|
}
|
|
3017
3104
|
|
|
3018
3105
|
// src/hashForSchema.ts
|
|
@@ -3082,6 +3169,31 @@ function optionId(id, optionIndex) {
|
|
|
3082
3169
|
function buttonId(id, btn) {
|
|
3083
3170
|
return idGenerator(id, btn);
|
|
3084
3171
|
}
|
|
3172
|
+
function optionalControlsId(id, element) {
|
|
3173
|
+
return idGenerator(id, `optional${element}`);
|
|
3174
|
+
}
|
|
3175
|
+
|
|
3176
|
+
// src/isFormDataAvailable.ts
|
|
3177
|
+
var import_isNil3 = __toESM(require("lodash/isNil"), 1);
|
|
3178
|
+
var import_isEmpty5 = __toESM(require("lodash/isEmpty"), 1);
|
|
3179
|
+
var import_isObject11 = __toESM(require("lodash/isObject"), 1);
|
|
3180
|
+
function isFormDataAvailable(formData) {
|
|
3181
|
+
return !(0, import_isNil3.default)(formData) && (!(0, import_isObject11.default)(formData) || Array.isArray(formData) || !(0, import_isEmpty5.default)(formData));
|
|
3182
|
+
}
|
|
3183
|
+
|
|
3184
|
+
// src/isRootSchema.ts
|
|
3185
|
+
var import_isEqual2 = __toESM(require("lodash/isEqual"), 1);
|
|
3186
|
+
function isRootSchema(registry, schemaToCompare) {
|
|
3187
|
+
const { rootSchema, schemaUtils } = registry;
|
|
3188
|
+
if ((0, import_isEqual2.default)(schemaToCompare, rootSchema)) {
|
|
3189
|
+
return true;
|
|
3190
|
+
}
|
|
3191
|
+
if (REF_KEY in rootSchema) {
|
|
3192
|
+
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3193
|
+
return (0, import_isEqual2.default)(schemaToCompare, resolvedSchema);
|
|
3194
|
+
}
|
|
3195
|
+
return false;
|
|
3196
|
+
}
|
|
3085
3197
|
|
|
3086
3198
|
// src/labelValue.ts
|
|
3087
3199
|
function labelValue(label, hideLabel, fallback) {
|
|
@@ -3094,14 +3206,14 @@ function localToUTC(dateString) {
|
|
|
3094
3206
|
}
|
|
3095
3207
|
|
|
3096
3208
|
// src/lookupFromFormContext.ts
|
|
3097
|
-
var
|
|
3209
|
+
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3098
3210
|
var import_has6 = __toESM(require("lodash/has"), 1);
|
|
3099
3211
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3100
3212
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3101
3213
|
if ((0, import_has6.default)(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3102
3214
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3103
3215
|
}
|
|
3104
|
-
return (0,
|
|
3216
|
+
return (0, import_get20.default)(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3105
3217
|
}
|
|
3106
3218
|
|
|
3107
3219
|
// src/orderProperties.ts
|
|
@@ -3182,11 +3294,40 @@ function schemaRequiresTrueValue(schema) {
|
|
|
3182
3294
|
}
|
|
3183
3295
|
|
|
3184
3296
|
// src/shouldRender.ts
|
|
3185
|
-
function shouldRender(component, nextProps, nextState) {
|
|
3297
|
+
function shouldRender(component, nextProps, nextState, updateStrategy = "customDeep") {
|
|
3298
|
+
if (updateStrategy === "always") {
|
|
3299
|
+
return true;
|
|
3300
|
+
}
|
|
3301
|
+
if (updateStrategy === "shallow") {
|
|
3302
|
+
const { props: props2, state: state2 } = component;
|
|
3303
|
+
return !shallowEquals(props2, nextProps) || !shallowEquals(state2, nextState);
|
|
3304
|
+
}
|
|
3186
3305
|
const { props, state } = component;
|
|
3187
3306
|
return !deepEquals(props, nextProps) || !deepEquals(state, nextState);
|
|
3188
3307
|
}
|
|
3189
3308
|
|
|
3309
|
+
// src/shouldRenderOptionalField.ts
|
|
3310
|
+
var import_isObject12 = __toESM(require("lodash/isObject"), 1);
|
|
3311
|
+
var import_uniq2 = __toESM(require("lodash/uniq"), 1);
|
|
3312
|
+
function getSchemaTypesForXxxOf(schemas) {
|
|
3313
|
+
const allTypes = (0, import_uniq2.default)(
|
|
3314
|
+
schemas.map((s) => (0, import_isObject12.default)(s) ? getSchemaType(s) : void 0).flat().filter((t) => t !== void 0)
|
|
3315
|
+
);
|
|
3316
|
+
return allTypes.length === 1 ? allTypes[0] : allTypes;
|
|
3317
|
+
}
|
|
3318
|
+
function shouldRenderOptionalField(registry, schema, required, uiSchema) {
|
|
3319
|
+
const { enableOptionalDataFieldForType = [] } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3320
|
+
let schemaType;
|
|
3321
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
3322
|
+
schemaType = getSchemaTypesForXxxOf(schema[ANY_OF_KEY]);
|
|
3323
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
3324
|
+
schemaType = getSchemaTypesForXxxOf(schema[ONE_OF_KEY]);
|
|
3325
|
+
} else {
|
|
3326
|
+
schemaType = getSchemaType(schema);
|
|
3327
|
+
}
|
|
3328
|
+
return !isRootSchema(registry, schema) && !required && !!schemaType && !Array.isArray(schemaType) && !!enableOptionalDataFieldForType.find((val) => val === schemaType);
|
|
3329
|
+
}
|
|
3330
|
+
|
|
3190
3331
|
// src/toDateString.ts
|
|
3191
3332
|
function toDateString(dateObject, time = true) {
|
|
3192
3333
|
const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;
|
|
@@ -3196,7 +3337,7 @@ function toDateString(dateObject, time = true) {
|
|
|
3196
3337
|
}
|
|
3197
3338
|
|
|
3198
3339
|
// src/toErrorList.ts
|
|
3199
|
-
var
|
|
3340
|
+
var import_isPlainObject3 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3200
3341
|
function toErrorList(errorSchema, fieldPath = []) {
|
|
3201
3342
|
if (!errorSchema) {
|
|
3202
3343
|
return [];
|
|
@@ -3217,7 +3358,7 @@ function toErrorList(errorSchema, fieldPath = []) {
|
|
|
3217
3358
|
return Object.keys(errorSchema).reduce((acc, key) => {
|
|
3218
3359
|
if (key !== ERRORS_KEY) {
|
|
3219
3360
|
const childSchema = errorSchema[key];
|
|
3220
|
-
if ((0,
|
|
3361
|
+
if ((0, import_isPlainObject3.default)(childSchema)) {
|
|
3221
3362
|
acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));
|
|
3222
3363
|
}
|
|
3223
3364
|
}
|
|
@@ -3244,15 +3385,28 @@ function toErrorSchema(errors) {
|
|
|
3244
3385
|
return builder.ErrorSchema;
|
|
3245
3386
|
}
|
|
3246
3387
|
|
|
3388
|
+
// src/toFieldPathId.ts
|
|
3389
|
+
function toFieldPathId(fieldPath, globalFormOptions, parentPath, isMultiValue) {
|
|
3390
|
+
const basePath = Array.isArray(parentPath) ? parentPath : parentPath?.path;
|
|
3391
|
+
const childPath = fieldPath === "" ? [] : [fieldPath];
|
|
3392
|
+
const path = basePath ? basePath.concat(...childPath) : childPath;
|
|
3393
|
+
const id = [globalFormOptions.idPrefix, ...path].join(globalFormOptions.idSeparator);
|
|
3394
|
+
let name;
|
|
3395
|
+
if (globalFormOptions.nameGenerator && path.length > 0) {
|
|
3396
|
+
name = globalFormOptions.nameGenerator(path, globalFormOptions.idPrefix, isMultiValue);
|
|
3397
|
+
}
|
|
3398
|
+
return { path, [ID_KEY]: id, ...name !== void 0 && { name } };
|
|
3399
|
+
}
|
|
3400
|
+
|
|
3247
3401
|
// src/unwrapErrorHandler.ts
|
|
3248
|
-
var
|
|
3402
|
+
var import_isPlainObject4 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3249
3403
|
function unwrapErrorHandler(errorHandler) {
|
|
3250
3404
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
3251
3405
|
if (key === "addError") {
|
|
3252
3406
|
return acc;
|
|
3253
3407
|
} else {
|
|
3254
3408
|
const childSchema = errorHandler[key];
|
|
3255
|
-
if ((0,
|
|
3409
|
+
if ((0, import_isPlainObject4.default)(childSchema)) {
|
|
3256
3410
|
return {
|
|
3257
3411
|
...acc,
|
|
3258
3412
|
[key]: unwrapErrorHandler(childSchema)
|
|
@@ -3263,6 +3417,209 @@ function unwrapErrorHandler(errorHandler) {
|
|
|
3263
3417
|
}, {});
|
|
3264
3418
|
}
|
|
3265
3419
|
|
|
3420
|
+
// src/useAltDateWidgetProps.tsx
|
|
3421
|
+
var import_react2 = require("react");
|
|
3422
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
3423
|
+
function readyForChange(state) {
|
|
3424
|
+
return Object.values(state).every((value) => value !== -1);
|
|
3425
|
+
}
|
|
3426
|
+
function DateElement(props) {
|
|
3427
|
+
const {
|
|
3428
|
+
className = "form-control",
|
|
3429
|
+
type,
|
|
3430
|
+
range,
|
|
3431
|
+
value,
|
|
3432
|
+
select,
|
|
3433
|
+
rootId,
|
|
3434
|
+
name,
|
|
3435
|
+
disabled,
|
|
3436
|
+
readonly,
|
|
3437
|
+
autofocus,
|
|
3438
|
+
registry,
|
|
3439
|
+
onBlur,
|
|
3440
|
+
onFocus
|
|
3441
|
+
} = props;
|
|
3442
|
+
const id = `${rootId}_${type}`;
|
|
3443
|
+
const { SelectWidget } = registry.widgets;
|
|
3444
|
+
const onChange = (0, import_react2.useCallback)((value2) => select(type, value2), [select, type]);
|
|
3445
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
3446
|
+
SelectWidget,
|
|
3447
|
+
{
|
|
3448
|
+
schema: { type: "integer" },
|
|
3449
|
+
id,
|
|
3450
|
+
name,
|
|
3451
|
+
className,
|
|
3452
|
+
options: { enumOptions: dateRangeOptions(range[0], range[1]) },
|
|
3453
|
+
placeholder: type,
|
|
3454
|
+
value,
|
|
3455
|
+
disabled,
|
|
3456
|
+
readonly,
|
|
3457
|
+
autofocus,
|
|
3458
|
+
onChange,
|
|
3459
|
+
onBlur,
|
|
3460
|
+
onFocus,
|
|
3461
|
+
registry,
|
|
3462
|
+
label: "",
|
|
3463
|
+
"aria-describedby": ariaDescribedByIds(rootId)
|
|
3464
|
+
}
|
|
3465
|
+
);
|
|
3466
|
+
}
|
|
3467
|
+
function useAltDateWidgetProps(props) {
|
|
3468
|
+
const { time = false, disabled = false, readonly = false, options, onChange, value } = props;
|
|
3469
|
+
const [state, setState] = (0, import_react2.useState)(parseDateString(value, time));
|
|
3470
|
+
(0, import_react2.useEffect)(() => {
|
|
3471
|
+
setState(parseDateString(value, time));
|
|
3472
|
+
}, [time, value]);
|
|
3473
|
+
const handleChange = (0, import_react2.useCallback)(
|
|
3474
|
+
(property, value2) => {
|
|
3475
|
+
const nextState = {
|
|
3476
|
+
...state,
|
|
3477
|
+
[property]: typeof value2 === "undefined" ? -1 : value2
|
|
3478
|
+
};
|
|
3479
|
+
if (readyForChange(nextState)) {
|
|
3480
|
+
onChange(toDateString(nextState, time));
|
|
3481
|
+
} else {
|
|
3482
|
+
setState(nextState);
|
|
3483
|
+
}
|
|
3484
|
+
},
|
|
3485
|
+
[state, onChange, time]
|
|
3486
|
+
);
|
|
3487
|
+
const handleClear = (0, import_react2.useCallback)(
|
|
3488
|
+
(event) => {
|
|
3489
|
+
event.preventDefault();
|
|
3490
|
+
if (disabled || readonly) {
|
|
3491
|
+
return;
|
|
3492
|
+
}
|
|
3493
|
+
onChange(void 0);
|
|
3494
|
+
},
|
|
3495
|
+
[disabled, readonly, onChange]
|
|
3496
|
+
);
|
|
3497
|
+
const handleSetNow = (0, import_react2.useCallback)(
|
|
3498
|
+
(event) => {
|
|
3499
|
+
event.preventDefault();
|
|
3500
|
+
if (disabled || readonly) {
|
|
3501
|
+
return;
|
|
3502
|
+
}
|
|
3503
|
+
const nextState = parseDateString((/* @__PURE__ */ new Date()).toJSON(), time);
|
|
3504
|
+
onChange(toDateString(nextState, time));
|
|
3505
|
+
},
|
|
3506
|
+
[disabled, readonly, time, onChange]
|
|
3507
|
+
);
|
|
3508
|
+
const elements = (0, import_react2.useMemo)(
|
|
3509
|
+
() => getDateElementProps(
|
|
3510
|
+
state,
|
|
3511
|
+
time,
|
|
3512
|
+
options.yearsRange,
|
|
3513
|
+
options.format
|
|
3514
|
+
),
|
|
3515
|
+
[state, time, options.yearsRange, options.format]
|
|
3516
|
+
);
|
|
3517
|
+
return { elements, handleChange, handleClear, handleSetNow };
|
|
3518
|
+
}
|
|
3519
|
+
|
|
3520
|
+
// src/useDeepCompareMemo.ts
|
|
3521
|
+
var import_react3 = require("react");
|
|
3522
|
+
var import_isEqual3 = __toESM(require("lodash/isEqual"), 1);
|
|
3523
|
+
function useDeepCompareMemo(newValue) {
|
|
3524
|
+
const valueRef = (0, import_react3.useRef)(newValue);
|
|
3525
|
+
if (!(0, import_isEqual3.default)(newValue, valueRef.current)) {
|
|
3526
|
+
valueRef.current = newValue;
|
|
3527
|
+
}
|
|
3528
|
+
return valueRef.current;
|
|
3529
|
+
}
|
|
3530
|
+
|
|
3531
|
+
// src/useFileWidgetProps.ts
|
|
3532
|
+
var import_react4 = require("react");
|
|
3533
|
+
function addNameToDataURL(dataURL, name) {
|
|
3534
|
+
return dataURL.replace(";base64", `;name=${encodeURIComponent(name)};base64`);
|
|
3535
|
+
}
|
|
3536
|
+
function processFile(file) {
|
|
3537
|
+
const { name, size, type } = file;
|
|
3538
|
+
return new Promise((resolve, reject) => {
|
|
3539
|
+
const reader = new window.FileReader();
|
|
3540
|
+
reader.onerror = reject;
|
|
3541
|
+
reader.onload = (event) => {
|
|
3542
|
+
if (typeof event.target?.result === "string") {
|
|
3543
|
+
resolve({
|
|
3544
|
+
dataURL: addNameToDataURL(event.target.result, name),
|
|
3545
|
+
name,
|
|
3546
|
+
size,
|
|
3547
|
+
type
|
|
3548
|
+
});
|
|
3549
|
+
} else {
|
|
3550
|
+
resolve({
|
|
3551
|
+
dataURL: null,
|
|
3552
|
+
name,
|
|
3553
|
+
size,
|
|
3554
|
+
type
|
|
3555
|
+
});
|
|
3556
|
+
}
|
|
3557
|
+
};
|
|
3558
|
+
reader.readAsDataURL(file);
|
|
3559
|
+
});
|
|
3560
|
+
}
|
|
3561
|
+
function processFiles(files) {
|
|
3562
|
+
return Promise.all(Array.from(files).map(processFile));
|
|
3563
|
+
}
|
|
3564
|
+
function extractFileInfo(dataURLs) {
|
|
3565
|
+
return dataURLs.reduce((acc, dataURL) => {
|
|
3566
|
+
if (!dataURL) {
|
|
3567
|
+
return acc;
|
|
3568
|
+
}
|
|
3569
|
+
try {
|
|
3570
|
+
const { blob, name } = dataURItoBlob(dataURL);
|
|
3571
|
+
return [
|
|
3572
|
+
...acc,
|
|
3573
|
+
{
|
|
3574
|
+
dataURL,
|
|
3575
|
+
name,
|
|
3576
|
+
size: blob.size,
|
|
3577
|
+
type: blob.type
|
|
3578
|
+
}
|
|
3579
|
+
];
|
|
3580
|
+
} catch {
|
|
3581
|
+
return acc;
|
|
3582
|
+
}
|
|
3583
|
+
}, []);
|
|
3584
|
+
}
|
|
3585
|
+
function useFileWidgetProps(value, onChange, multiple = false) {
|
|
3586
|
+
const values = (0, import_react4.useMemo)(() => {
|
|
3587
|
+
if (multiple && value) {
|
|
3588
|
+
return Array.isArray(value) ? value : [value];
|
|
3589
|
+
}
|
|
3590
|
+
return [];
|
|
3591
|
+
}, [value, multiple]);
|
|
3592
|
+
const filesInfo = (0, import_react4.useMemo)(
|
|
3593
|
+
() => Array.isArray(value) ? extractFileInfo(value) : extractFileInfo([value || ""]),
|
|
3594
|
+
[value]
|
|
3595
|
+
);
|
|
3596
|
+
const handleChange = (0, import_react4.useCallback)(
|
|
3597
|
+
(files) => {
|
|
3598
|
+
processFiles(files).then((filesInfoEvent) => {
|
|
3599
|
+
const newValue = filesInfoEvent.map((fileInfo) => fileInfo.dataURL || null);
|
|
3600
|
+
if (multiple) {
|
|
3601
|
+
onChange(values.concat(...newValue));
|
|
3602
|
+
} else {
|
|
3603
|
+
onChange(newValue[0]);
|
|
3604
|
+
}
|
|
3605
|
+
});
|
|
3606
|
+
},
|
|
3607
|
+
[values, multiple, onChange]
|
|
3608
|
+
);
|
|
3609
|
+
const handleRemove = (0, import_react4.useCallback)(
|
|
3610
|
+
(index) => {
|
|
3611
|
+
if (multiple) {
|
|
3612
|
+
const newValue = values.filter((_, i) => i !== index);
|
|
3613
|
+
onChange(newValue);
|
|
3614
|
+
} else {
|
|
3615
|
+
onChange(void 0);
|
|
3616
|
+
}
|
|
3617
|
+
},
|
|
3618
|
+
[values, multiple, onChange]
|
|
3619
|
+
);
|
|
3620
|
+
return { filesInfo, handleChange, handleRemove };
|
|
3621
|
+
}
|
|
3622
|
+
|
|
3266
3623
|
// src/utcToLocal.ts
|
|
3267
3624
|
function utcToLocal(jsonDate) {
|
|
3268
3625
|
if (!jsonDate) {
|
|
@@ -3280,23 +3637,27 @@ function utcToLocal(jsonDate) {
|
|
|
3280
3637
|
}
|
|
3281
3638
|
|
|
3282
3639
|
// src/validationDataMerge.ts
|
|
3283
|
-
var
|
|
3284
|
-
function validationDataMerge(validationData, additionalErrorSchema) {
|
|
3640
|
+
var import_isEmpty6 = __toESM(require("lodash/isEmpty"), 1);
|
|
3641
|
+
function validationDataMerge(validationData, additionalErrorSchema, preventDuplicates = false) {
|
|
3285
3642
|
if (!additionalErrorSchema) {
|
|
3286
3643
|
return validationData;
|
|
3287
3644
|
}
|
|
3288
3645
|
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
3289
3646
|
let errors = toErrorList(additionalErrorSchema);
|
|
3290
3647
|
let errorSchema = additionalErrorSchema;
|
|
3291
|
-
if (!(0,
|
|
3292
|
-
errorSchema = mergeObjects(
|
|
3648
|
+
if (!(0, import_isEmpty6.default)(oldErrorSchema)) {
|
|
3649
|
+
errorSchema = mergeObjects(
|
|
3650
|
+
oldErrorSchema,
|
|
3651
|
+
additionalErrorSchema,
|
|
3652
|
+
preventDuplicates ? "preventDuplicates" : true
|
|
3653
|
+
);
|
|
3293
3654
|
errors = [...oldErrors].concat(errors);
|
|
3294
3655
|
}
|
|
3295
3656
|
return { errorSchema, errors };
|
|
3296
3657
|
}
|
|
3297
3658
|
|
|
3298
3659
|
// src/withIdRefPrefix.ts
|
|
3299
|
-
var
|
|
3660
|
+
var import_isObject13 = __toESM(require("lodash/isObject"), 1);
|
|
3300
3661
|
function withIdRefPrefixObject(node) {
|
|
3301
3662
|
for (const key in node) {
|
|
3302
3663
|
const realObj = node;
|
|
@@ -3319,34 +3680,31 @@ function withIdRefPrefix(schemaNode) {
|
|
|
3319
3680
|
if (Array.isArray(schemaNode)) {
|
|
3320
3681
|
return withIdRefPrefixArray([...schemaNode]);
|
|
3321
3682
|
}
|
|
3322
|
-
if ((0,
|
|
3683
|
+
if ((0, import_isObject13.default)(schemaNode)) {
|
|
3323
3684
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
3324
3685
|
}
|
|
3325
3686
|
return schemaNode;
|
|
3326
3687
|
}
|
|
3327
3688
|
|
|
3328
|
-
// src/
|
|
3329
|
-
var
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3333
|
-
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3334
|
-
function getChangedFields(a, b) {
|
|
3335
|
-
const aIsPlainObject = (0, import_isPlainObject4.default)(a);
|
|
3336
|
-
const bIsPlainObject = (0, import_isPlainObject4.default)(b);
|
|
3337
|
-
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
3338
|
-
return [];
|
|
3689
|
+
// src/nameGenerators.ts
|
|
3690
|
+
var bracketNameGenerator = (path, idPrefix, isMultiValue) => {
|
|
3691
|
+
if (!path || path.length === 0) {
|
|
3692
|
+
return idPrefix;
|
|
3339
3693
|
}
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3694
|
+
const baseName = path.reduce((acc, pathUnit, index) => {
|
|
3695
|
+
if (index === 0) {
|
|
3696
|
+
return `${idPrefix}[${String(pathUnit)}]`;
|
|
3697
|
+
}
|
|
3698
|
+
return `${acc}[${String(pathUnit)}]`;
|
|
3699
|
+
}, "");
|
|
3700
|
+
return isMultiValue ? `${baseName}[]` : baseName;
|
|
3701
|
+
};
|
|
3702
|
+
var dotNotationNameGenerator = (path, idPrefix, _isMultiValue) => {
|
|
3703
|
+
if (!path || path.length === 0) {
|
|
3704
|
+
return idPrefix;
|
|
3348
3705
|
}
|
|
3349
|
-
}
|
|
3706
|
+
return `${idPrefix}.${path.map(String).join(".")}`;
|
|
3707
|
+
};
|
|
3350
3708
|
|
|
3351
3709
|
// src/enums.ts
|
|
3352
3710
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
@@ -3370,6 +3728,11 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3370
3728
|
TranslatableString2["PreviewLabel"] = "Preview";
|
|
3371
3729
|
TranslatableString2["DecrementAriaLabel"] = "Decrease value by 1";
|
|
3372
3730
|
TranslatableString2["IncrementAriaLabel"] = "Increase value by 1";
|
|
3731
|
+
TranslatableString2["OptionalObjectAdd"] = "Add data for optional field";
|
|
3732
|
+
TranslatableString2["OptionalObjectRemove"] = "Remove data for optional field";
|
|
3733
|
+
TranslatableString2["OptionalObjectEmptyMsg"] = "No data for optional field";
|
|
3734
|
+
TranslatableString2["Type"] = "Type";
|
|
3735
|
+
TranslatableString2["Value"] = "Value";
|
|
3373
3736
|
TranslatableString2["UnknownFieldType"] = "Unknown field type %1";
|
|
3374
3737
|
TranslatableString2["OptionPrefix"] = "Option %1";
|
|
3375
3738
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
@@ -3503,4 +3866,4 @@ function schemaParser(rootSchema) {
|
|
|
3503
3866
|
parseSchema(validator, recurseList, rootSchema, rootSchema);
|
|
3504
3867
|
return validator.getSchemaMap();
|
|
3505
3868
|
}
|
|
3506
|
-
//# sourceMappingURL=index.
|
|
3869
|
+
//# sourceMappingURL=index.cjs.map
|