@rjsf/utils 6.0.0-beta.20 → 6.0.0-beta.22
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.cjs +202 -68
- package/dist/index.cjs.map +4 -4
- package/dist/utils.esm.js +202 -68
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +175 -57
- package/lib/ErrorSchemaBuilder.d.ts +2 -2
- package/lib/createSchemaUtils.js +6 -4
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/enums.d.ts +6 -0
- package/lib/enums.js +6 -0
- package/lib/enums.js.map +1 -1
- package/lib/guessType.d.ts +1 -1
- package/lib/idGenerators.d.ts +8 -1
- package/lib/idGenerators.js +10 -1
- package/lib/idGenerators.js.map +1 -1
- package/lib/index.d.ts +9 -4
- package/lib/index.js +9 -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/nameGenerators.d.ts +13 -0
- package/lib/nameGenerators.js +30 -0
- package/lib/nameGenerators.js.map +1 -0
- package/lib/schema/getDefaultFormState.d.ts +8 -3
- package/lib/schema/getDefaultFormState.js +15 -6
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +10 -5
- package/lib/schema/retrieveSchema.js +37 -14
- package/lib/schema/retrieveSchema.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 +4 -2
- package/lib/toFieldPathId.js +10 -3
- package/lib/toFieldPathId.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +87 -43
- package/lib/useDeepCompareMemo.d.ts +8 -0
- package/lib/useDeepCompareMemo.js +17 -0
- package/lib/useDeepCompareMemo.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 +1 -1
- package/src/ErrorSchemaBuilder.ts +2 -2
- package/src/createSchemaUtils.ts +6 -1
- package/src/enums.ts +6 -0
- package/src/idGenerators.ts +11 -1
- package/src/index.ts +15 -2
- package/src/isFormDataAvailable.ts +13 -0
- package/src/isRootSchema.ts +30 -0
- package/src/nameGenerators.ts +43 -0
- package/src/schema/getDefaultFormState.ts +20 -2
- package/src/schema/retrieveSchema.ts +39 -5
- package/src/shouldRenderOptionalField.ts +56 -0
- package/src/toFieldPathId.ts +12 -2
- package/src/types.ts +100 -47
- package/src/useDeepCompareMemo.ts +17 -0
- package/src/validationDataMerge.ts +7 -1
package/dist/index.cjs
CHANGED
|
@@ -71,6 +71,7 @@ __export(index_exports, {
|
|
|
71
71
|
allowAdditionalItems: () => allowAdditionalItems,
|
|
72
72
|
ariaDescribedByIds: () => ariaDescribedByIds,
|
|
73
73
|
asNumber: () => asNumber,
|
|
74
|
+
bracketNameGenerator: () => bracketNameGenerator,
|
|
74
75
|
buttonId: () => buttonId,
|
|
75
76
|
canExpand: () => canExpand,
|
|
76
77
|
createErrorHandler: () => createErrorHandler,
|
|
@@ -79,6 +80,7 @@ __export(index_exports, {
|
|
|
79
80
|
dateRangeOptions: () => dateRangeOptions,
|
|
80
81
|
deepEquals: () => deepEquals,
|
|
81
82
|
descriptionId: () => descriptionId,
|
|
83
|
+
dotNotationNameGenerator: () => dotNotationNameGenerator,
|
|
82
84
|
englishStringTranslator: () => englishStringTranslator,
|
|
83
85
|
enumOptionsDeselectValue: () => enumOptionsDeselectValue,
|
|
84
86
|
enumOptionsIndexForValue: () => enumOptionsIndexForValue,
|
|
@@ -116,8 +118,10 @@ __export(index_exports, {
|
|
|
116
118
|
isCustomWidget: () => isCustomWidget,
|
|
117
119
|
isFilesArray: () => isFilesArray,
|
|
118
120
|
isFixedItems: () => isFixedItems,
|
|
121
|
+
isFormDataAvailable: () => isFormDataAvailable,
|
|
119
122
|
isMultiSelect: () => isMultiSelect,
|
|
120
123
|
isObject: () => isObject,
|
|
124
|
+
isRootSchema: () => isRootSchema,
|
|
121
125
|
isSelect: () => isSelect,
|
|
122
126
|
labelValue: () => labelValue,
|
|
123
127
|
localToUTC: () => localToUTC,
|
|
@@ -126,6 +130,7 @@ __export(index_exports, {
|
|
|
126
130
|
mergeObjects: () => mergeObjects,
|
|
127
131
|
mergeSchemas: () => mergeSchemas,
|
|
128
132
|
optionId: () => optionId,
|
|
133
|
+
optionalControlsId: () => optionalControlsId,
|
|
129
134
|
optionsList: () => optionsList,
|
|
130
135
|
orderProperties: () => orderProperties,
|
|
131
136
|
pad: () => pad,
|
|
@@ -138,6 +143,7 @@ __export(index_exports, {
|
|
|
138
143
|
schemaRequiresTrueValue: () => schemaRequiresTrueValue,
|
|
139
144
|
shallowEquals: () => shallowEquals,
|
|
140
145
|
shouldRender: () => shouldRender,
|
|
146
|
+
shouldRenderOptionalField: () => shouldRenderOptionalField,
|
|
141
147
|
sortedJSONStringify: () => sortedJSONStringify,
|
|
142
148
|
titleId: () => titleId,
|
|
143
149
|
toConstant: () => toConstant,
|
|
@@ -147,6 +153,7 @@ __export(index_exports, {
|
|
|
147
153
|
toFieldPathId: () => toFieldPathId,
|
|
148
154
|
toPathSchema: () => toPathSchema,
|
|
149
155
|
unwrapErrorHandler: () => unwrapErrorHandler,
|
|
156
|
+
useDeepCompareMemo: () => useDeepCompareMemo,
|
|
150
157
|
utcToLocal: () => utcToLocal,
|
|
151
158
|
validationDataMerge: () => validationDataMerge,
|
|
152
159
|
withIdRefPrefix: () => withIdRefPrefix
|
|
@@ -590,7 +597,7 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
590
597
|
|
|
591
598
|
// src/schema/retrieveSchema.ts
|
|
592
599
|
var import_isEmpty2 = __toESM(require("lodash/isEmpty"), 1);
|
|
593
|
-
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
|
|
600
|
+
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
|
|
594
601
|
return retrieveSchemaInternal(
|
|
595
602
|
validator,
|
|
596
603
|
schema,
|
|
@@ -598,7 +605,8 @@ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experim
|
|
|
598
605
|
rawFormData,
|
|
599
606
|
void 0,
|
|
600
607
|
void 0,
|
|
601
|
-
experimental_customMergeAllOf
|
|
608
|
+
experimental_customMergeAllOf,
|
|
609
|
+
resolveAnyOfOrOneOfRefs
|
|
602
610
|
)[0];
|
|
603
611
|
}
|
|
604
612
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
@@ -687,7 +695,7 @@ function getMatchingPatternProperties(schema, key) {
|
|
|
687
695
|
{}
|
|
688
696
|
);
|
|
689
697
|
}
|
|
690
|
-
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
698
|
+
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
691
699
|
const updatedSchemas = resolveReference(
|
|
692
700
|
validator,
|
|
693
701
|
schema,
|
|
@@ -695,7 +703,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
695
703
|
expandAllBranches,
|
|
696
704
|
recurseList,
|
|
697
705
|
formData,
|
|
698
|
-
experimental_customMergeAllOf
|
|
706
|
+
experimental_customMergeAllOf,
|
|
707
|
+
resolveAnyOfOrOneOfRefs
|
|
699
708
|
);
|
|
700
709
|
if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
|
|
701
710
|
return updatedSchemas;
|
|
@@ -722,7 +731,7 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
722
731
|
);
|
|
723
732
|
});
|
|
724
733
|
}
|
|
725
|
-
if (ALL_OF_KEY in schema && Array.isArray(schema
|
|
734
|
+
if (ALL_OF_KEY in schema && Array.isArray(schema[ALL_OF_KEY])) {
|
|
726
735
|
const allOfSchemaElements = schema.allOf.map(
|
|
727
736
|
(allOfSubschema) => retrieveSchemaInternal(
|
|
728
737
|
validator,
|
|
@@ -742,8 +751,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
742
751
|
}
|
|
743
752
|
return [schema];
|
|
744
753
|
}
|
|
745
|
-
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
746
|
-
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
|
|
754
|
+
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
755
|
+
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList, void 0, resolveAnyOfOrOneOfRefs);
|
|
747
756
|
if (updatedSchema !== schema) {
|
|
748
757
|
return retrieveSchemaInternal(
|
|
749
758
|
validator,
|
|
@@ -752,12 +761,13 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
752
761
|
formData,
|
|
753
762
|
expandAllBranches,
|
|
754
763
|
recurseList,
|
|
755
|
-
experimental_customMergeAllOf
|
|
764
|
+
experimental_customMergeAllOf,
|
|
765
|
+
resolveAnyOfOrOneOfRefs
|
|
756
766
|
);
|
|
757
767
|
}
|
|
758
768
|
return [schema];
|
|
759
769
|
}
|
|
760
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
770
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
761
771
|
if (!isObject(schema)) {
|
|
762
772
|
return schema;
|
|
763
773
|
}
|
|
@@ -780,7 +790,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
780
790
|
resolvedSchema[PROPERTIES_KEY],
|
|
781
791
|
(result, value, key) => {
|
|
782
792
|
const childList = [...recurseList];
|
|
783
|
-
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI);
|
|
793
|
+
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI, resolveAnyOfOrOneOfRefs);
|
|
784
794
|
childrenLists.push(childList);
|
|
785
795
|
},
|
|
786
796
|
{}
|
|
@@ -791,9 +801,28 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
791
801
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
792
802
|
resolvedSchema = {
|
|
793
803
|
...resolvedSchema,
|
|
794
|
-
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI)
|
|
804
|
+
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
795
805
|
};
|
|
796
806
|
}
|
|
807
|
+
if (resolveAnyOfOrOneOfRefs) {
|
|
808
|
+
let key;
|
|
809
|
+
let schemas;
|
|
810
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
811
|
+
key = ANY_OF_KEY;
|
|
812
|
+
schemas = resolvedSchema[ANY_OF_KEY];
|
|
813
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
814
|
+
key = ONE_OF_KEY;
|
|
815
|
+
schemas = resolvedSchema[ONE_OF_KEY];
|
|
816
|
+
}
|
|
817
|
+
if (key && schemas) {
|
|
818
|
+
resolvedSchema = {
|
|
819
|
+
...resolvedSchema,
|
|
820
|
+
[key]: schemas.map(
|
|
821
|
+
(s) => resolveAllReferences(s, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
822
|
+
)
|
|
823
|
+
};
|
|
824
|
+
}
|
|
825
|
+
}
|
|
797
826
|
return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;
|
|
798
827
|
}
|
|
799
828
|
function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {
|
|
@@ -821,7 +850,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
821
850
|
}
|
|
822
851
|
}
|
|
823
852
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
|
|
824
|
-
let additionalProperties
|
|
853
|
+
let additionalProperties;
|
|
825
854
|
if (typeof schema.additionalProperties !== "boolean") {
|
|
826
855
|
if (REF_KEY in schema.additionalProperties) {
|
|
827
856
|
additionalProperties = retrieveSchema(
|
|
@@ -853,7 +882,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
853
882
|
});
|
|
854
883
|
return schema;
|
|
855
884
|
}
|
|
856
|
-
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
|
|
885
|
+
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
857
886
|
if (!isObject(schema)) {
|
|
858
887
|
return [{}];
|
|
859
888
|
}
|
|
@@ -864,7 +893,8 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
864
893
|
expandAllBranches,
|
|
865
894
|
recurseList,
|
|
866
895
|
rawFormData,
|
|
867
|
-
experimental_customMergeAllOf
|
|
896
|
+
experimental_customMergeAllOf,
|
|
897
|
+
resolveAnyOfOrOneOfRefs
|
|
868
898
|
);
|
|
869
899
|
return resolvedSchemas.flatMap((s) => {
|
|
870
900
|
let resolvedSchema = s;
|
|
@@ -1635,7 +1665,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1635
1665
|
experimental_defaultFormStateBehavior = void 0,
|
|
1636
1666
|
experimental_customMergeAllOf = void 0,
|
|
1637
1667
|
required,
|
|
1638
|
-
shouldMergeDefaultsIntoFormData = false
|
|
1668
|
+
shouldMergeDefaultsIntoFormData = false,
|
|
1669
|
+
initialDefaultsGenerated
|
|
1639
1670
|
} = computeDefaultsProps;
|
|
1640
1671
|
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1641
1672
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
@@ -1740,7 +1771,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1740
1771
|
parentDefaults: defaults,
|
|
1741
1772
|
rawFormData: rawFormData ?? formData,
|
|
1742
1773
|
required,
|
|
1743
|
-
shouldMergeDefaultsIntoFormData
|
|
1774
|
+
shouldMergeDefaultsIntoFormData,
|
|
1775
|
+
initialDefaultsGenerated
|
|
1744
1776
|
});
|
|
1745
1777
|
}
|
|
1746
1778
|
if (defaults === void 0) {
|
|
@@ -1792,7 +1824,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1792
1824
|
experimental_defaultFormStateBehavior = void 0,
|
|
1793
1825
|
experimental_customMergeAllOf = void 0,
|
|
1794
1826
|
required,
|
|
1795
|
-
shouldMergeDefaultsIntoFormData
|
|
1827
|
+
shouldMergeDefaultsIntoFormData,
|
|
1828
|
+
initialDefaultsGenerated
|
|
1796
1829
|
} = {}, defaults) {
|
|
1797
1830
|
{
|
|
1798
1831
|
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
@@ -1813,7 +1846,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1813
1846
|
parentDefaults: (0, import_get12.default)(defaults, [key]),
|
|
1814
1847
|
rawFormData: (0, import_get12.default)(formData, [key]),
|
|
1815
1848
|
required: retrievedSchema.required?.includes(key),
|
|
1816
|
-
shouldMergeDefaultsIntoFormData
|
|
1849
|
+
shouldMergeDefaultsIntoFormData,
|
|
1850
|
+
initialDefaultsGenerated
|
|
1817
1851
|
});
|
|
1818
1852
|
maybeAddDefaultToObject(
|
|
1819
1853
|
acc,
|
|
@@ -1829,7 +1863,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1829
1863
|
},
|
|
1830
1864
|
{}
|
|
1831
1865
|
);
|
|
1832
|
-
if (retrievedSchema.additionalProperties) {
|
|
1866
|
+
if (retrievedSchema.additionalProperties && !initialDefaultsGenerated) {
|
|
1833
1867
|
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1834
1868
|
const keys2 = /* @__PURE__ */ new Set();
|
|
1835
1869
|
if (isObject(defaults)) {
|
|
@@ -1850,7 +1884,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1850
1884
|
parentDefaults: (0, import_get12.default)(defaults, [key]),
|
|
1851
1885
|
rawFormData: (0, import_get12.default)(formData, [key]),
|
|
1852
1886
|
required: retrievedSchema.required?.includes(key),
|
|
1853
|
-
shouldMergeDefaultsIntoFormData
|
|
1887
|
+
shouldMergeDefaultsIntoFormData,
|
|
1888
|
+
initialDefaultsGenerated
|
|
1854
1889
|
});
|
|
1855
1890
|
maybeAddDefaultToObject(
|
|
1856
1891
|
objectDefaults,
|
|
@@ -1872,7 +1907,9 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1872
1907
|
experimental_defaultFormStateBehavior = void 0,
|
|
1873
1908
|
experimental_customMergeAllOf = void 0,
|
|
1874
1909
|
required,
|
|
1875
|
-
|
|
1910
|
+
requiredAsRoot = false,
|
|
1911
|
+
shouldMergeDefaultsIntoFormData,
|
|
1912
|
+
initialDefaultsGenerated
|
|
1876
1913
|
} = {}, defaults) {
|
|
1877
1914
|
const schema = rawSchema;
|
|
1878
1915
|
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
@@ -1893,7 +1930,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1893
1930
|
experimental_customMergeAllOf,
|
|
1894
1931
|
parentDefaults: item,
|
|
1895
1932
|
required,
|
|
1896
|
-
shouldMergeDefaultsIntoFormData
|
|
1933
|
+
shouldMergeDefaultsIntoFormData,
|
|
1934
|
+
initialDefaultsGenerated
|
|
1897
1935
|
});
|
|
1898
1936
|
});
|
|
1899
1937
|
}
|
|
@@ -1911,7 +1949,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1911
1949
|
rawFormData: item,
|
|
1912
1950
|
parentDefaults: (0, import_get12.default)(defaults, [idx]),
|
|
1913
1951
|
required,
|
|
1914
|
-
shouldMergeDefaultsIntoFormData
|
|
1952
|
+
shouldMergeDefaultsIntoFormData,
|
|
1953
|
+
initialDefaultsGenerated
|
|
1915
1954
|
});
|
|
1916
1955
|
});
|
|
1917
1956
|
const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
|
|
@@ -1930,7 +1969,7 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1930
1969
|
let arrayDefault;
|
|
1931
1970
|
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1932
1971
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1933
|
-
arrayDefault = defaults ? defaults : emptyDefault;
|
|
1972
|
+
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1934
1973
|
} else {
|
|
1935
1974
|
const defaultEntries = defaults || [];
|
|
1936
1975
|
const fillerSchema = getInnerSchemaForArrayItem(schema, 1 /* Invert */);
|
|
@@ -1962,7 +2001,7 @@ function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps
|
|
|
1962
2001
|
}
|
|
1963
2002
|
}
|
|
1964
2003
|
}
|
|
1965
|
-
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2004
|
+
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf, initialDefaultsGenerated) {
|
|
1966
2005
|
if (!isObject(theSchema)) {
|
|
1967
2006
|
throw new Error("Invalid schema: " + theSchema);
|
|
1968
2007
|
}
|
|
@@ -1973,7 +2012,9 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
1973
2012
|
experimental_defaultFormStateBehavior,
|
|
1974
2013
|
experimental_customMergeAllOf,
|
|
1975
2014
|
rawFormData: formData,
|
|
1976
|
-
shouldMergeDefaultsIntoFormData: true
|
|
2015
|
+
shouldMergeDefaultsIntoFormData: true,
|
|
2016
|
+
initialDefaultsGenerated,
|
|
2017
|
+
requiredAsRoot: true
|
|
1977
2018
|
});
|
|
1978
2019
|
if (schema.type !== "object" && isObject(schema.default)) {
|
|
1979
2020
|
return {
|
|
@@ -2392,9 +2433,10 @@ var SchemaUtils = class {
|
|
|
2392
2433
|
* @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
|
|
2393
2434
|
* If "excludeObjectChildren", pass `includeUndefinedValues` as false when computing defaults for any nested
|
|
2394
2435
|
* object properties.
|
|
2436
|
+
* @param initialDefaultsGenerated - Indicates whether or not initial defaults have been generated
|
|
2395
2437
|
* @returns - The resulting `formData` with all the defaults provided
|
|
2396
2438
|
*/
|
|
2397
|
-
getDefaultFormState(schema, formData, includeUndefinedValues = false) {
|
|
2439
|
+
getDefaultFormState(schema, formData, includeUndefinedValues = false, initialDefaultsGenerated) {
|
|
2398
2440
|
return getDefaultFormState(
|
|
2399
2441
|
this.validator,
|
|
2400
2442
|
schema,
|
|
@@ -2402,7 +2444,8 @@ var SchemaUtils = class {
|
|
|
2402
2444
|
this.rootSchema,
|
|
2403
2445
|
includeUndefinedValues,
|
|
2404
2446
|
this.experimental_defaultFormStateBehavior,
|
|
2405
|
-
this.experimental_customMergeAllOf
|
|
2447
|
+
this.experimental_customMergeAllOf,
|
|
2448
|
+
initialDefaultsGenerated
|
|
2406
2449
|
);
|
|
2407
2450
|
}
|
|
2408
2451
|
/** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
|
|
@@ -2501,15 +2544,17 @@ var SchemaUtils = class {
|
|
|
2501
2544
|
*
|
|
2502
2545
|
* @param schema - The schema for which retrieving a schema is desired
|
|
2503
2546
|
* @param [rawFormData] - The current formData, if any, to assist retrieving a schema
|
|
2547
|
+
* @param [resolveAnyOfOrOneOfRefs] - Optional flag indicating whether to resolved refs in anyOf/oneOf lists
|
|
2504
2548
|
* @returns - The schema having its conditions, additional properties, references and dependencies resolved
|
|
2505
2549
|
*/
|
|
2506
|
-
retrieveSchema(schema, rawFormData) {
|
|
2550
|
+
retrieveSchema(schema, rawFormData, resolveAnyOfOrOneOfRefs) {
|
|
2507
2551
|
return retrieveSchema(
|
|
2508
2552
|
this.validator,
|
|
2509
2553
|
schema,
|
|
2510
2554
|
this.rootSchema,
|
|
2511
2555
|
rawFormData,
|
|
2512
|
-
this.experimental_customMergeAllOf
|
|
2556
|
+
this.experimental_customMergeAllOf,
|
|
2557
|
+
resolveAnyOfOrOneOfRefs
|
|
2513
2558
|
);
|
|
2514
2559
|
}
|
|
2515
2560
|
/** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
|
|
@@ -2810,6 +2855,29 @@ var ErrorSchemaBuilder = class {
|
|
|
2810
2855
|
}
|
|
2811
2856
|
};
|
|
2812
2857
|
|
|
2858
|
+
// src/getChangedFields.ts
|
|
2859
|
+
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
2860
|
+
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
2861
|
+
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
2862
|
+
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
2863
|
+
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
2864
|
+
function getChangedFields(a, b) {
|
|
2865
|
+
const aIsPlainObject = (0, import_isPlainObject2.default)(a);
|
|
2866
|
+
const bIsPlainObject = (0, import_isPlainObject2.default)(b);
|
|
2867
|
+
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
2868
|
+
return [];
|
|
2869
|
+
}
|
|
2870
|
+
if (aIsPlainObject && !bIsPlainObject) {
|
|
2871
|
+
return (0, import_keys.default)(a);
|
|
2872
|
+
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
2873
|
+
return (0, import_keys.default)(b);
|
|
2874
|
+
} else {
|
|
2875
|
+
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals(value, (0, import_get17.default)(b, key))));
|
|
2876
|
+
const diffFields = (0, import_difference.default)((0, import_keys.default)(b), (0, import_keys.default)(a));
|
|
2877
|
+
return [...unequalFields, ...diffFields];
|
|
2878
|
+
}
|
|
2879
|
+
}
|
|
2880
|
+
|
|
2813
2881
|
// src/getDateElementProps.ts
|
|
2814
2882
|
function getDateElementProps(date, time, yearRange = [1900, (/* @__PURE__ */ new Date()).getFullYear() + 2], format = "YMD") {
|
|
2815
2883
|
const { day, month, year, hour, minute, second } = date;
|
|
@@ -2918,10 +2986,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2918
2986
|
}
|
|
2919
2987
|
|
|
2920
2988
|
// src/getTestIds.ts
|
|
2921
|
-
var
|
|
2989
|
+
var import_get18 = __toESM(require("lodash/get"), 1);
|
|
2922
2990
|
var import_uniqueId = __toESM(require("lodash/uniqueId"), 1);
|
|
2923
2991
|
function getTestIds() {
|
|
2924
|
-
if (typeof process === "undefined" || (0,
|
|
2992
|
+
if (typeof process === "undefined" || (0, import_get18.default)(process, "env.NODE_ENV") !== "test") {
|
|
2925
2993
|
return {};
|
|
2926
2994
|
}
|
|
2927
2995
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -2941,7 +3009,7 @@ function getTestIds() {
|
|
|
2941
3009
|
// src/getWidget.tsx
|
|
2942
3010
|
var import_react = require("react");
|
|
2943
3011
|
var import_react_is = __toESM(require("react-is"), 1);
|
|
2944
|
-
var
|
|
3012
|
+
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
2945
3013
|
var import_set4 = __toESM(require("lodash/set"), 1);
|
|
2946
3014
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2947
3015
|
var widgetMap = {
|
|
@@ -2997,7 +3065,7 @@ var widgetMap = {
|
|
|
2997
3065
|
}
|
|
2998
3066
|
};
|
|
2999
3067
|
function mergeWidgetOptions(AWidget) {
|
|
3000
|
-
let MergedWidget = (0,
|
|
3068
|
+
let MergedWidget = (0, import_get19.default)(AWidget, "MergedWidget");
|
|
3001
3069
|
if (!MergedWidget) {
|
|
3002
3070
|
const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
|
|
3003
3071
|
MergedWidget = ({ options, ...props }) => {
|
|
@@ -3098,6 +3166,31 @@ function optionId(id, optionIndex) {
|
|
|
3098
3166
|
function buttonId(id, btn) {
|
|
3099
3167
|
return idGenerator(id, btn);
|
|
3100
3168
|
}
|
|
3169
|
+
function optionalControlsId(id, element) {
|
|
3170
|
+
return idGenerator(id, `optional${element}`);
|
|
3171
|
+
}
|
|
3172
|
+
|
|
3173
|
+
// src/isFormDataAvailable.ts
|
|
3174
|
+
var import_isNil3 = __toESM(require("lodash/isNil"), 1);
|
|
3175
|
+
var import_isEmpty5 = __toESM(require("lodash/isEmpty"), 1);
|
|
3176
|
+
var import_isObject11 = __toESM(require("lodash/isObject"), 1);
|
|
3177
|
+
function isFormDataAvailable(formData) {
|
|
3178
|
+
return !(0, import_isNil3.default)(formData) && (!(0, import_isObject11.default)(formData) || Array.isArray(formData) || !(0, import_isEmpty5.default)(formData));
|
|
3179
|
+
}
|
|
3180
|
+
|
|
3181
|
+
// src/isRootSchema.ts
|
|
3182
|
+
var import_isEqual2 = __toESM(require("lodash/isEqual"), 1);
|
|
3183
|
+
function isRootSchema(registry, schemaToCompare) {
|
|
3184
|
+
const { rootSchema, schemaUtils } = registry;
|
|
3185
|
+
if ((0, import_isEqual2.default)(schemaToCompare, rootSchema)) {
|
|
3186
|
+
return true;
|
|
3187
|
+
}
|
|
3188
|
+
if (REF_KEY in rootSchema) {
|
|
3189
|
+
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3190
|
+
return (0, import_isEqual2.default)(schemaToCompare, resolvedSchema);
|
|
3191
|
+
}
|
|
3192
|
+
return false;
|
|
3193
|
+
}
|
|
3101
3194
|
|
|
3102
3195
|
// src/labelValue.ts
|
|
3103
3196
|
function labelValue(label, hideLabel, fallback) {
|
|
@@ -3110,14 +3203,14 @@ function localToUTC(dateString) {
|
|
|
3110
3203
|
}
|
|
3111
3204
|
|
|
3112
3205
|
// src/lookupFromFormContext.ts
|
|
3113
|
-
var
|
|
3206
|
+
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3114
3207
|
var import_has6 = __toESM(require("lodash/has"), 1);
|
|
3115
3208
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3116
3209
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3117
3210
|
if ((0, import_has6.default)(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3118
3211
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3119
3212
|
}
|
|
3120
|
-
return (0,
|
|
3213
|
+
return (0, import_get20.default)(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3121
3214
|
}
|
|
3122
3215
|
|
|
3123
3216
|
// src/orderProperties.ts
|
|
@@ -3210,6 +3303,28 @@ function shouldRender(component, nextProps, nextState, updateStrategy = "customD
|
|
|
3210
3303
|
return !deepEquals(props, nextProps) || !deepEquals(state, nextState);
|
|
3211
3304
|
}
|
|
3212
3305
|
|
|
3306
|
+
// src/shouldRenderOptionalField.ts
|
|
3307
|
+
var import_isObject12 = __toESM(require("lodash/isObject"), 1);
|
|
3308
|
+
var import_uniq2 = __toESM(require("lodash/uniq"), 1);
|
|
3309
|
+
function getSchemaTypesForXxxOf(schemas) {
|
|
3310
|
+
const allTypes = (0, import_uniq2.default)(
|
|
3311
|
+
schemas.map((s) => (0, import_isObject12.default)(s) ? getSchemaType(s) : void 0).flat().filter((t) => t !== void 0)
|
|
3312
|
+
);
|
|
3313
|
+
return allTypes.length === 1 ? allTypes[0] : allTypes;
|
|
3314
|
+
}
|
|
3315
|
+
function shouldRenderOptionalField(registry, schema, required, uiSchema) {
|
|
3316
|
+
const { enableOptionalDataFieldForType = [] } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3317
|
+
let schemaType;
|
|
3318
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
3319
|
+
schemaType = getSchemaTypesForXxxOf(schema[ANY_OF_KEY]);
|
|
3320
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
3321
|
+
schemaType = getSchemaTypesForXxxOf(schema[ONE_OF_KEY]);
|
|
3322
|
+
} else {
|
|
3323
|
+
schemaType = getSchemaType(schema);
|
|
3324
|
+
}
|
|
3325
|
+
return !isRootSchema(registry, schema) && !required && !!schemaType && !Array.isArray(schemaType) && !!enableOptionalDataFieldForType.find((val) => val === schemaType);
|
|
3326
|
+
}
|
|
3327
|
+
|
|
3213
3328
|
// src/toDateString.ts
|
|
3214
3329
|
function toDateString(dateObject, time = true) {
|
|
3215
3330
|
const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;
|
|
@@ -3219,7 +3334,7 @@ function toDateString(dateObject, time = true) {
|
|
|
3219
3334
|
}
|
|
3220
3335
|
|
|
3221
3336
|
// src/toErrorList.ts
|
|
3222
|
-
var
|
|
3337
|
+
var import_isPlainObject3 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3223
3338
|
function toErrorList(errorSchema, fieldPath = []) {
|
|
3224
3339
|
if (!errorSchema) {
|
|
3225
3340
|
return [];
|
|
@@ -3240,7 +3355,7 @@ function toErrorList(errorSchema, fieldPath = []) {
|
|
|
3240
3355
|
return Object.keys(errorSchema).reduce((acc, key) => {
|
|
3241
3356
|
if (key !== ERRORS_KEY) {
|
|
3242
3357
|
const childSchema = errorSchema[key];
|
|
3243
|
-
if ((0,
|
|
3358
|
+
if ((0, import_isPlainObject3.default)(childSchema)) {
|
|
3244
3359
|
acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));
|
|
3245
3360
|
}
|
|
3246
3361
|
}
|
|
@@ -3268,23 +3383,27 @@ function toErrorSchema(errors) {
|
|
|
3268
3383
|
}
|
|
3269
3384
|
|
|
3270
3385
|
// src/toFieldPathId.ts
|
|
3271
|
-
function toFieldPathId(fieldPath, globalFormOptions, parentPath) {
|
|
3386
|
+
function toFieldPathId(fieldPath, globalFormOptions, parentPath, isMultiValue) {
|
|
3272
3387
|
const basePath = Array.isArray(parentPath) ? parentPath : parentPath?.path;
|
|
3273
3388
|
const childPath = fieldPath === "" ? [] : [fieldPath];
|
|
3274
3389
|
const path = basePath ? basePath.concat(...childPath) : childPath;
|
|
3275
3390
|
const id = [globalFormOptions.idPrefix, ...path].join(globalFormOptions.idSeparator);
|
|
3276
|
-
|
|
3391
|
+
let name;
|
|
3392
|
+
if (globalFormOptions.nameGenerator && path.length > 0) {
|
|
3393
|
+
name = globalFormOptions.nameGenerator(path, globalFormOptions.idPrefix, isMultiValue);
|
|
3394
|
+
}
|
|
3395
|
+
return { path, [ID_KEY]: id, ...name !== void 0 && { name } };
|
|
3277
3396
|
}
|
|
3278
3397
|
|
|
3279
3398
|
// src/unwrapErrorHandler.ts
|
|
3280
|
-
var
|
|
3399
|
+
var import_isPlainObject4 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3281
3400
|
function unwrapErrorHandler(errorHandler) {
|
|
3282
3401
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
3283
3402
|
if (key === "addError") {
|
|
3284
3403
|
return acc;
|
|
3285
3404
|
} else {
|
|
3286
3405
|
const childSchema = errorHandler[key];
|
|
3287
|
-
if ((0,
|
|
3406
|
+
if ((0, import_isPlainObject4.default)(childSchema)) {
|
|
3288
3407
|
return {
|
|
3289
3408
|
...acc,
|
|
3290
3409
|
[key]: unwrapErrorHandler(childSchema)
|
|
@@ -3295,6 +3414,17 @@ function unwrapErrorHandler(errorHandler) {
|
|
|
3295
3414
|
}, {});
|
|
3296
3415
|
}
|
|
3297
3416
|
|
|
3417
|
+
// src/useDeepCompareMemo.ts
|
|
3418
|
+
var import_react2 = require("react");
|
|
3419
|
+
var import_isEqual3 = __toESM(require("lodash/isEqual"), 1);
|
|
3420
|
+
function useDeepCompareMemo(newValue) {
|
|
3421
|
+
const valueRef = (0, import_react2.useRef)(newValue);
|
|
3422
|
+
if (!(0, import_isEqual3.default)(newValue, valueRef.current)) {
|
|
3423
|
+
valueRef.current = newValue;
|
|
3424
|
+
}
|
|
3425
|
+
return valueRef.current;
|
|
3426
|
+
}
|
|
3427
|
+
|
|
3298
3428
|
// src/utcToLocal.ts
|
|
3299
3429
|
function utcToLocal(jsonDate) {
|
|
3300
3430
|
if (!jsonDate) {
|
|
@@ -3312,23 +3442,27 @@ function utcToLocal(jsonDate) {
|
|
|
3312
3442
|
}
|
|
3313
3443
|
|
|
3314
3444
|
// src/validationDataMerge.ts
|
|
3315
|
-
var
|
|
3316
|
-
function validationDataMerge(validationData, additionalErrorSchema) {
|
|
3445
|
+
var import_isEmpty6 = __toESM(require("lodash/isEmpty"), 1);
|
|
3446
|
+
function validationDataMerge(validationData, additionalErrorSchema, preventDuplicates = false) {
|
|
3317
3447
|
if (!additionalErrorSchema) {
|
|
3318
3448
|
return validationData;
|
|
3319
3449
|
}
|
|
3320
3450
|
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
3321
3451
|
let errors = toErrorList(additionalErrorSchema);
|
|
3322
3452
|
let errorSchema = additionalErrorSchema;
|
|
3323
|
-
if (!(0,
|
|
3324
|
-
errorSchema = mergeObjects(
|
|
3453
|
+
if (!(0, import_isEmpty6.default)(oldErrorSchema)) {
|
|
3454
|
+
errorSchema = mergeObjects(
|
|
3455
|
+
oldErrorSchema,
|
|
3456
|
+
additionalErrorSchema,
|
|
3457
|
+
preventDuplicates ? "preventDuplicates" : true
|
|
3458
|
+
);
|
|
3325
3459
|
errors = [...oldErrors].concat(errors);
|
|
3326
3460
|
}
|
|
3327
3461
|
return { errorSchema, errors };
|
|
3328
3462
|
}
|
|
3329
3463
|
|
|
3330
3464
|
// src/withIdRefPrefix.ts
|
|
3331
|
-
var
|
|
3465
|
+
var import_isObject13 = __toESM(require("lodash/isObject"), 1);
|
|
3332
3466
|
function withIdRefPrefixObject(node) {
|
|
3333
3467
|
for (const key in node) {
|
|
3334
3468
|
const realObj = node;
|
|
@@ -3351,34 +3485,31 @@ function withIdRefPrefix(schemaNode) {
|
|
|
3351
3485
|
if (Array.isArray(schemaNode)) {
|
|
3352
3486
|
return withIdRefPrefixArray([...schemaNode]);
|
|
3353
3487
|
}
|
|
3354
|
-
if ((0,
|
|
3488
|
+
if ((0, import_isObject13.default)(schemaNode)) {
|
|
3355
3489
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
3356
3490
|
}
|
|
3357
3491
|
return schemaNode;
|
|
3358
3492
|
}
|
|
3359
3493
|
|
|
3360
|
-
// src/
|
|
3361
|
-
var
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3365
|
-
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3366
|
-
function getChangedFields(a, b) {
|
|
3367
|
-
const aIsPlainObject = (0, import_isPlainObject4.default)(a);
|
|
3368
|
-
const bIsPlainObject = (0, import_isPlainObject4.default)(b);
|
|
3369
|
-
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
3370
|
-
return [];
|
|
3494
|
+
// src/nameGenerators.ts
|
|
3495
|
+
var bracketNameGenerator = (path, idPrefix, isMultiValue) => {
|
|
3496
|
+
if (!path || path.length === 0) {
|
|
3497
|
+
return idPrefix;
|
|
3371
3498
|
}
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3499
|
+
const baseName = path.reduce((acc, pathUnit, index) => {
|
|
3500
|
+
if (index === 0) {
|
|
3501
|
+
return `${idPrefix}[${String(pathUnit)}]`;
|
|
3502
|
+
}
|
|
3503
|
+
return `${acc}[${String(pathUnit)}]`;
|
|
3504
|
+
}, "");
|
|
3505
|
+
return isMultiValue ? `${baseName}[]` : baseName;
|
|
3506
|
+
};
|
|
3507
|
+
var dotNotationNameGenerator = (path, idPrefix, _isMultiValue) => {
|
|
3508
|
+
if (!path || path.length === 0) {
|
|
3509
|
+
return idPrefix;
|
|
3380
3510
|
}
|
|
3381
|
-
}
|
|
3511
|
+
return `${idPrefix}.${path.map(String).join(".")}`;
|
|
3512
|
+
};
|
|
3382
3513
|
|
|
3383
3514
|
// src/enums.ts
|
|
3384
3515
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
@@ -3402,6 +3533,9 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3402
3533
|
TranslatableString2["PreviewLabel"] = "Preview";
|
|
3403
3534
|
TranslatableString2["DecrementAriaLabel"] = "Decrease value by 1";
|
|
3404
3535
|
TranslatableString2["IncrementAriaLabel"] = "Increase value by 1";
|
|
3536
|
+
TranslatableString2["OptionalObjectAdd"] = "Add data for optional field";
|
|
3537
|
+
TranslatableString2["OptionalObjectRemove"] = "Remove data for optional field";
|
|
3538
|
+
TranslatableString2["OptionalObjectEmptyMsg"] = "No data for optional field";
|
|
3405
3539
|
TranslatableString2["UnknownFieldType"] = "Unknown field type %1";
|
|
3406
3540
|
TranslatableString2["OptionPrefix"] = "Option %1";
|
|
3407
3541
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|