@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/utils.esm.js
CHANGED
|
@@ -435,7 +435,7 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
435
435
|
|
|
436
436
|
// src/schema/retrieveSchema.ts
|
|
437
437
|
import isEmpty2 from "lodash/isEmpty";
|
|
438
|
-
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
|
|
438
|
+
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
|
|
439
439
|
return retrieveSchemaInternal(
|
|
440
440
|
validator,
|
|
441
441
|
schema,
|
|
@@ -443,7 +443,8 @@ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experim
|
|
|
443
443
|
rawFormData,
|
|
444
444
|
void 0,
|
|
445
445
|
void 0,
|
|
446
|
-
experimental_customMergeAllOf
|
|
446
|
+
experimental_customMergeAllOf,
|
|
447
|
+
resolveAnyOfOrOneOfRefs
|
|
447
448
|
)[0];
|
|
448
449
|
}
|
|
449
450
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
@@ -532,7 +533,7 @@ function getMatchingPatternProperties(schema, key) {
|
|
|
532
533
|
{}
|
|
533
534
|
);
|
|
534
535
|
}
|
|
535
|
-
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
536
|
+
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
536
537
|
const updatedSchemas = resolveReference(
|
|
537
538
|
validator,
|
|
538
539
|
schema,
|
|
@@ -540,7 +541,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
540
541
|
expandAllBranches,
|
|
541
542
|
recurseList,
|
|
542
543
|
formData,
|
|
543
|
-
experimental_customMergeAllOf
|
|
544
|
+
experimental_customMergeAllOf,
|
|
545
|
+
resolveAnyOfOrOneOfRefs
|
|
544
546
|
);
|
|
545
547
|
if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
|
|
546
548
|
return updatedSchemas;
|
|
@@ -567,7 +569,7 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
567
569
|
);
|
|
568
570
|
});
|
|
569
571
|
}
|
|
570
|
-
if (ALL_OF_KEY in schema && Array.isArray(schema
|
|
572
|
+
if (ALL_OF_KEY in schema && Array.isArray(schema[ALL_OF_KEY])) {
|
|
571
573
|
const allOfSchemaElements = schema.allOf.map(
|
|
572
574
|
(allOfSubschema) => retrieveSchemaInternal(
|
|
573
575
|
validator,
|
|
@@ -587,8 +589,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
587
589
|
}
|
|
588
590
|
return [schema];
|
|
589
591
|
}
|
|
590
|
-
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
591
|
-
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
|
|
592
|
+
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
593
|
+
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList, void 0, resolveAnyOfOrOneOfRefs);
|
|
592
594
|
if (updatedSchema !== schema) {
|
|
593
595
|
return retrieveSchemaInternal(
|
|
594
596
|
validator,
|
|
@@ -597,12 +599,13 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
597
599
|
formData,
|
|
598
600
|
expandAllBranches,
|
|
599
601
|
recurseList,
|
|
600
|
-
experimental_customMergeAllOf
|
|
602
|
+
experimental_customMergeAllOf,
|
|
603
|
+
resolveAnyOfOrOneOfRefs
|
|
601
604
|
);
|
|
602
605
|
}
|
|
603
606
|
return [schema];
|
|
604
607
|
}
|
|
605
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
608
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
606
609
|
if (!isObject(schema)) {
|
|
607
610
|
return schema;
|
|
608
611
|
}
|
|
@@ -625,7 +628,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
625
628
|
resolvedSchema[PROPERTIES_KEY],
|
|
626
629
|
(result, value, key) => {
|
|
627
630
|
const childList = [...recurseList];
|
|
628
|
-
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI);
|
|
631
|
+
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI, resolveAnyOfOrOneOfRefs);
|
|
629
632
|
childrenLists.push(childList);
|
|
630
633
|
},
|
|
631
634
|
{}
|
|
@@ -636,9 +639,28 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
636
639
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
637
640
|
resolvedSchema = {
|
|
638
641
|
...resolvedSchema,
|
|
639
|
-
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI)
|
|
642
|
+
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
640
643
|
};
|
|
641
644
|
}
|
|
645
|
+
if (resolveAnyOfOrOneOfRefs) {
|
|
646
|
+
let key;
|
|
647
|
+
let schemas;
|
|
648
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
649
|
+
key = ANY_OF_KEY;
|
|
650
|
+
schemas = resolvedSchema[ANY_OF_KEY];
|
|
651
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
652
|
+
key = ONE_OF_KEY;
|
|
653
|
+
schemas = resolvedSchema[ONE_OF_KEY];
|
|
654
|
+
}
|
|
655
|
+
if (key && schemas) {
|
|
656
|
+
resolvedSchema = {
|
|
657
|
+
...resolvedSchema,
|
|
658
|
+
[key]: schemas.map(
|
|
659
|
+
(s) => resolveAllReferences(s, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
660
|
+
)
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
}
|
|
642
664
|
return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;
|
|
643
665
|
}
|
|
644
666
|
function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {
|
|
@@ -666,7 +688,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
666
688
|
}
|
|
667
689
|
}
|
|
668
690
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
|
|
669
|
-
let additionalProperties
|
|
691
|
+
let additionalProperties;
|
|
670
692
|
if (typeof schema.additionalProperties !== "boolean") {
|
|
671
693
|
if (REF_KEY in schema.additionalProperties) {
|
|
672
694
|
additionalProperties = retrieveSchema(
|
|
@@ -698,7 +720,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
698
720
|
});
|
|
699
721
|
return schema;
|
|
700
722
|
}
|
|
701
|
-
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
|
|
723
|
+
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
702
724
|
if (!isObject(schema)) {
|
|
703
725
|
return [{}];
|
|
704
726
|
}
|
|
@@ -709,7 +731,8 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
709
731
|
expandAllBranches,
|
|
710
732
|
recurseList,
|
|
711
733
|
rawFormData,
|
|
712
|
-
experimental_customMergeAllOf
|
|
734
|
+
experimental_customMergeAllOf,
|
|
735
|
+
resolveAnyOfOrOneOfRefs
|
|
713
736
|
);
|
|
714
737
|
return resolvedSchemas.flatMap((s) => {
|
|
715
738
|
let resolvedSchema = s;
|
|
@@ -1480,7 +1503,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1480
1503
|
experimental_defaultFormStateBehavior = void 0,
|
|
1481
1504
|
experimental_customMergeAllOf = void 0,
|
|
1482
1505
|
required,
|
|
1483
|
-
shouldMergeDefaultsIntoFormData = false
|
|
1506
|
+
shouldMergeDefaultsIntoFormData = false,
|
|
1507
|
+
initialDefaultsGenerated
|
|
1484
1508
|
} = computeDefaultsProps;
|
|
1485
1509
|
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1486
1510
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
@@ -1585,7 +1609,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1585
1609
|
parentDefaults: defaults,
|
|
1586
1610
|
rawFormData: rawFormData ?? formData,
|
|
1587
1611
|
required,
|
|
1588
|
-
shouldMergeDefaultsIntoFormData
|
|
1612
|
+
shouldMergeDefaultsIntoFormData,
|
|
1613
|
+
initialDefaultsGenerated
|
|
1589
1614
|
});
|
|
1590
1615
|
}
|
|
1591
1616
|
if (defaults === void 0) {
|
|
@@ -1637,7 +1662,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1637
1662
|
experimental_defaultFormStateBehavior = void 0,
|
|
1638
1663
|
experimental_customMergeAllOf = void 0,
|
|
1639
1664
|
required,
|
|
1640
|
-
shouldMergeDefaultsIntoFormData
|
|
1665
|
+
shouldMergeDefaultsIntoFormData,
|
|
1666
|
+
initialDefaultsGenerated
|
|
1641
1667
|
} = {}, defaults) {
|
|
1642
1668
|
{
|
|
1643
1669
|
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
@@ -1658,7 +1684,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1658
1684
|
parentDefaults: get12(defaults, [key]),
|
|
1659
1685
|
rawFormData: get12(formData, [key]),
|
|
1660
1686
|
required: retrievedSchema.required?.includes(key),
|
|
1661
|
-
shouldMergeDefaultsIntoFormData
|
|
1687
|
+
shouldMergeDefaultsIntoFormData,
|
|
1688
|
+
initialDefaultsGenerated
|
|
1662
1689
|
});
|
|
1663
1690
|
maybeAddDefaultToObject(
|
|
1664
1691
|
acc,
|
|
@@ -1674,7 +1701,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1674
1701
|
},
|
|
1675
1702
|
{}
|
|
1676
1703
|
);
|
|
1677
|
-
if (retrievedSchema.additionalProperties) {
|
|
1704
|
+
if (retrievedSchema.additionalProperties && !initialDefaultsGenerated) {
|
|
1678
1705
|
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1679
1706
|
const keys2 = /* @__PURE__ */ new Set();
|
|
1680
1707
|
if (isObject(defaults)) {
|
|
@@ -1695,7 +1722,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1695
1722
|
parentDefaults: get12(defaults, [key]),
|
|
1696
1723
|
rawFormData: get12(formData, [key]),
|
|
1697
1724
|
required: retrievedSchema.required?.includes(key),
|
|
1698
|
-
shouldMergeDefaultsIntoFormData
|
|
1725
|
+
shouldMergeDefaultsIntoFormData,
|
|
1726
|
+
initialDefaultsGenerated
|
|
1699
1727
|
});
|
|
1700
1728
|
maybeAddDefaultToObject(
|
|
1701
1729
|
objectDefaults,
|
|
@@ -1717,7 +1745,9 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1717
1745
|
experimental_defaultFormStateBehavior = void 0,
|
|
1718
1746
|
experimental_customMergeAllOf = void 0,
|
|
1719
1747
|
required,
|
|
1720
|
-
|
|
1748
|
+
requiredAsRoot = false,
|
|
1749
|
+
shouldMergeDefaultsIntoFormData,
|
|
1750
|
+
initialDefaultsGenerated
|
|
1721
1751
|
} = {}, defaults) {
|
|
1722
1752
|
const schema = rawSchema;
|
|
1723
1753
|
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
@@ -1738,7 +1768,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1738
1768
|
experimental_customMergeAllOf,
|
|
1739
1769
|
parentDefaults: item,
|
|
1740
1770
|
required,
|
|
1741
|
-
shouldMergeDefaultsIntoFormData
|
|
1771
|
+
shouldMergeDefaultsIntoFormData,
|
|
1772
|
+
initialDefaultsGenerated
|
|
1742
1773
|
});
|
|
1743
1774
|
});
|
|
1744
1775
|
}
|
|
@@ -1756,7 +1787,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1756
1787
|
rawFormData: item,
|
|
1757
1788
|
parentDefaults: get12(defaults, [idx]),
|
|
1758
1789
|
required,
|
|
1759
|
-
shouldMergeDefaultsIntoFormData
|
|
1790
|
+
shouldMergeDefaultsIntoFormData,
|
|
1791
|
+
initialDefaultsGenerated
|
|
1760
1792
|
});
|
|
1761
1793
|
});
|
|
1762
1794
|
const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
|
|
@@ -1775,7 +1807,7 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1775
1807
|
let arrayDefault;
|
|
1776
1808
|
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1777
1809
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1778
|
-
arrayDefault = defaults ? defaults : emptyDefault;
|
|
1810
|
+
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1779
1811
|
} else {
|
|
1780
1812
|
const defaultEntries = defaults || [];
|
|
1781
1813
|
const fillerSchema = getInnerSchemaForArrayItem(schema, 1 /* Invert */);
|
|
@@ -1807,7 +1839,7 @@ function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps
|
|
|
1807
1839
|
}
|
|
1808
1840
|
}
|
|
1809
1841
|
}
|
|
1810
|
-
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
1842
|
+
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf, initialDefaultsGenerated) {
|
|
1811
1843
|
if (!isObject(theSchema)) {
|
|
1812
1844
|
throw new Error("Invalid schema: " + theSchema);
|
|
1813
1845
|
}
|
|
@@ -1818,7 +1850,9 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
1818
1850
|
experimental_defaultFormStateBehavior,
|
|
1819
1851
|
experimental_customMergeAllOf,
|
|
1820
1852
|
rawFormData: formData,
|
|
1821
|
-
shouldMergeDefaultsIntoFormData: true
|
|
1853
|
+
shouldMergeDefaultsIntoFormData: true,
|
|
1854
|
+
initialDefaultsGenerated,
|
|
1855
|
+
requiredAsRoot: true
|
|
1822
1856
|
});
|
|
1823
1857
|
if (schema.type !== "object" && isObject(schema.default)) {
|
|
1824
1858
|
return {
|
|
@@ -2237,9 +2271,10 @@ var SchemaUtils = class {
|
|
|
2237
2271
|
* @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
|
|
2238
2272
|
* If "excludeObjectChildren", pass `includeUndefinedValues` as false when computing defaults for any nested
|
|
2239
2273
|
* object properties.
|
|
2274
|
+
* @param initialDefaultsGenerated - Indicates whether or not initial defaults have been generated
|
|
2240
2275
|
* @returns - The resulting `formData` with all the defaults provided
|
|
2241
2276
|
*/
|
|
2242
|
-
getDefaultFormState(schema, formData, includeUndefinedValues = false) {
|
|
2277
|
+
getDefaultFormState(schema, formData, includeUndefinedValues = false, initialDefaultsGenerated) {
|
|
2243
2278
|
return getDefaultFormState(
|
|
2244
2279
|
this.validator,
|
|
2245
2280
|
schema,
|
|
@@ -2247,7 +2282,8 @@ var SchemaUtils = class {
|
|
|
2247
2282
|
this.rootSchema,
|
|
2248
2283
|
includeUndefinedValues,
|
|
2249
2284
|
this.experimental_defaultFormStateBehavior,
|
|
2250
|
-
this.experimental_customMergeAllOf
|
|
2285
|
+
this.experimental_customMergeAllOf,
|
|
2286
|
+
initialDefaultsGenerated
|
|
2251
2287
|
);
|
|
2252
2288
|
}
|
|
2253
2289
|
/** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
|
|
@@ -2346,15 +2382,17 @@ var SchemaUtils = class {
|
|
|
2346
2382
|
*
|
|
2347
2383
|
* @param schema - The schema for which retrieving a schema is desired
|
|
2348
2384
|
* @param [rawFormData] - The current formData, if any, to assist retrieving a schema
|
|
2385
|
+
* @param [resolveAnyOfOrOneOfRefs] - Optional flag indicating whether to resolved refs in anyOf/oneOf lists
|
|
2349
2386
|
* @returns - The schema having its conditions, additional properties, references and dependencies resolved
|
|
2350
2387
|
*/
|
|
2351
|
-
retrieveSchema(schema, rawFormData) {
|
|
2388
|
+
retrieveSchema(schema, rawFormData, resolveAnyOfOrOneOfRefs) {
|
|
2352
2389
|
return retrieveSchema(
|
|
2353
2390
|
this.validator,
|
|
2354
2391
|
schema,
|
|
2355
2392
|
this.rootSchema,
|
|
2356
2393
|
rawFormData,
|
|
2357
|
-
this.experimental_customMergeAllOf
|
|
2394
|
+
this.experimental_customMergeAllOf,
|
|
2395
|
+
resolveAnyOfOrOneOfRefs
|
|
2358
2396
|
);
|
|
2359
2397
|
}
|
|
2360
2398
|
/** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
|
|
@@ -2655,6 +2693,29 @@ var ErrorSchemaBuilder = class {
|
|
|
2655
2693
|
}
|
|
2656
2694
|
};
|
|
2657
2695
|
|
|
2696
|
+
// src/getChangedFields.ts
|
|
2697
|
+
import keys from "lodash/keys";
|
|
2698
|
+
import pickBy from "lodash/pickBy";
|
|
2699
|
+
import isPlainObject2 from "lodash/isPlainObject";
|
|
2700
|
+
import get17 from "lodash/get";
|
|
2701
|
+
import difference from "lodash/difference";
|
|
2702
|
+
function getChangedFields(a, b) {
|
|
2703
|
+
const aIsPlainObject = isPlainObject2(a);
|
|
2704
|
+
const bIsPlainObject = isPlainObject2(b);
|
|
2705
|
+
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
2706
|
+
return [];
|
|
2707
|
+
}
|
|
2708
|
+
if (aIsPlainObject && !bIsPlainObject) {
|
|
2709
|
+
return keys(a);
|
|
2710
|
+
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
2711
|
+
return keys(b);
|
|
2712
|
+
} else {
|
|
2713
|
+
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals(value, get17(b, key))));
|
|
2714
|
+
const diffFields = difference(keys(b), keys(a));
|
|
2715
|
+
return [...unequalFields, ...diffFields];
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2658
2719
|
// src/getDateElementProps.ts
|
|
2659
2720
|
function getDateElementProps(date, time, yearRange = [1900, (/* @__PURE__ */ new Date()).getFullYear() + 2], format = "YMD") {
|
|
2660
2721
|
const { day, month, year, hour, minute, second } = date;
|
|
@@ -2763,10 +2824,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2763
2824
|
}
|
|
2764
2825
|
|
|
2765
2826
|
// src/getTestIds.ts
|
|
2766
|
-
import
|
|
2827
|
+
import get18 from "lodash/get";
|
|
2767
2828
|
import uniqueId from "lodash/uniqueId";
|
|
2768
2829
|
function getTestIds() {
|
|
2769
|
-
if (typeof process === "undefined" ||
|
|
2830
|
+
if (typeof process === "undefined" || get18(process, "env.NODE_ENV") !== "test") {
|
|
2770
2831
|
return {};
|
|
2771
2832
|
}
|
|
2772
2833
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -2786,7 +2847,7 @@ function getTestIds() {
|
|
|
2786
2847
|
// src/getWidget.tsx
|
|
2787
2848
|
import { createElement } from "react";
|
|
2788
2849
|
import ReactIs from "react-is";
|
|
2789
|
-
import
|
|
2850
|
+
import get19 from "lodash/get";
|
|
2790
2851
|
import set4 from "lodash/set";
|
|
2791
2852
|
import { jsx } from "react/jsx-runtime";
|
|
2792
2853
|
var widgetMap = {
|
|
@@ -2842,7 +2903,7 @@ var widgetMap = {
|
|
|
2842
2903
|
}
|
|
2843
2904
|
};
|
|
2844
2905
|
function mergeWidgetOptions(AWidget) {
|
|
2845
|
-
let MergedWidget =
|
|
2906
|
+
let MergedWidget = get19(AWidget, "MergedWidget");
|
|
2846
2907
|
if (!MergedWidget) {
|
|
2847
2908
|
const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
|
|
2848
2909
|
MergedWidget = ({ options, ...props }) => {
|
|
@@ -2943,6 +3004,31 @@ function optionId(id, optionIndex) {
|
|
|
2943
3004
|
function buttonId(id, btn) {
|
|
2944
3005
|
return idGenerator(id, btn);
|
|
2945
3006
|
}
|
|
3007
|
+
function optionalControlsId(id, element) {
|
|
3008
|
+
return idGenerator(id, `optional${element}`);
|
|
3009
|
+
}
|
|
3010
|
+
|
|
3011
|
+
// src/isFormDataAvailable.ts
|
|
3012
|
+
import isNil3 from "lodash/isNil";
|
|
3013
|
+
import isEmpty5 from "lodash/isEmpty";
|
|
3014
|
+
import isObject4 from "lodash/isObject";
|
|
3015
|
+
function isFormDataAvailable(formData) {
|
|
3016
|
+
return !isNil3(formData) && (!isObject4(formData) || Array.isArray(formData) || !isEmpty5(formData));
|
|
3017
|
+
}
|
|
3018
|
+
|
|
3019
|
+
// src/isRootSchema.ts
|
|
3020
|
+
import isEqual2 from "lodash/isEqual";
|
|
3021
|
+
function isRootSchema(registry, schemaToCompare) {
|
|
3022
|
+
const { rootSchema, schemaUtils } = registry;
|
|
3023
|
+
if (isEqual2(schemaToCompare, rootSchema)) {
|
|
3024
|
+
return true;
|
|
3025
|
+
}
|
|
3026
|
+
if (REF_KEY in rootSchema) {
|
|
3027
|
+
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3028
|
+
return isEqual2(schemaToCompare, resolvedSchema);
|
|
3029
|
+
}
|
|
3030
|
+
return false;
|
|
3031
|
+
}
|
|
2946
3032
|
|
|
2947
3033
|
// src/labelValue.ts
|
|
2948
3034
|
function labelValue(label, hideLabel, fallback) {
|
|
@@ -2955,14 +3041,14 @@ function localToUTC(dateString) {
|
|
|
2955
3041
|
}
|
|
2956
3042
|
|
|
2957
3043
|
// src/lookupFromFormContext.ts
|
|
2958
|
-
import
|
|
3044
|
+
import get20 from "lodash/get";
|
|
2959
3045
|
import has6 from "lodash/has";
|
|
2960
3046
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
2961
3047
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
2962
3048
|
if (has6(regOrFc, FORM_CONTEXT_NAME)) {
|
|
2963
3049
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
2964
3050
|
}
|
|
2965
|
-
return
|
|
3051
|
+
return get20(regOrFc, [...lookupPath, toLookup], fallback);
|
|
2966
3052
|
}
|
|
2967
3053
|
|
|
2968
3054
|
// src/orderProperties.ts
|
|
@@ -3055,6 +3141,28 @@ function shouldRender(component, nextProps, nextState, updateStrategy = "customD
|
|
|
3055
3141
|
return !deepEquals(props, nextProps) || !deepEquals(state, nextState);
|
|
3056
3142
|
}
|
|
3057
3143
|
|
|
3144
|
+
// src/shouldRenderOptionalField.ts
|
|
3145
|
+
import isObject5 from "lodash/isObject";
|
|
3146
|
+
import uniq2 from "lodash/uniq";
|
|
3147
|
+
function getSchemaTypesForXxxOf(schemas) {
|
|
3148
|
+
const allTypes = uniq2(
|
|
3149
|
+
schemas.map((s) => isObject5(s) ? getSchemaType(s) : void 0).flat().filter((t) => t !== void 0)
|
|
3150
|
+
);
|
|
3151
|
+
return allTypes.length === 1 ? allTypes[0] : allTypes;
|
|
3152
|
+
}
|
|
3153
|
+
function shouldRenderOptionalField(registry, schema, required, uiSchema) {
|
|
3154
|
+
const { enableOptionalDataFieldForType = [] } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3155
|
+
let schemaType;
|
|
3156
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
3157
|
+
schemaType = getSchemaTypesForXxxOf(schema[ANY_OF_KEY]);
|
|
3158
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
3159
|
+
schemaType = getSchemaTypesForXxxOf(schema[ONE_OF_KEY]);
|
|
3160
|
+
} else {
|
|
3161
|
+
schemaType = getSchemaType(schema);
|
|
3162
|
+
}
|
|
3163
|
+
return !isRootSchema(registry, schema) && !required && !!schemaType && !Array.isArray(schemaType) && !!enableOptionalDataFieldForType.find((val) => val === schemaType);
|
|
3164
|
+
}
|
|
3165
|
+
|
|
3058
3166
|
// src/toDateString.ts
|
|
3059
3167
|
function toDateString(dateObject, time = true) {
|
|
3060
3168
|
const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;
|
|
@@ -3064,7 +3172,7 @@ function toDateString(dateObject, time = true) {
|
|
|
3064
3172
|
}
|
|
3065
3173
|
|
|
3066
3174
|
// src/toErrorList.ts
|
|
3067
|
-
import
|
|
3175
|
+
import isPlainObject3 from "lodash/isPlainObject";
|
|
3068
3176
|
function toErrorList(errorSchema, fieldPath = []) {
|
|
3069
3177
|
if (!errorSchema) {
|
|
3070
3178
|
return [];
|
|
@@ -3085,7 +3193,7 @@ function toErrorList(errorSchema, fieldPath = []) {
|
|
|
3085
3193
|
return Object.keys(errorSchema).reduce((acc, key) => {
|
|
3086
3194
|
if (key !== ERRORS_KEY) {
|
|
3087
3195
|
const childSchema = errorSchema[key];
|
|
3088
|
-
if (
|
|
3196
|
+
if (isPlainObject3(childSchema)) {
|
|
3089
3197
|
acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));
|
|
3090
3198
|
}
|
|
3091
3199
|
}
|
|
@@ -3113,23 +3221,27 @@ function toErrorSchema(errors) {
|
|
|
3113
3221
|
}
|
|
3114
3222
|
|
|
3115
3223
|
// src/toFieldPathId.ts
|
|
3116
|
-
function toFieldPathId(fieldPath, globalFormOptions, parentPath) {
|
|
3224
|
+
function toFieldPathId(fieldPath, globalFormOptions, parentPath, isMultiValue) {
|
|
3117
3225
|
const basePath = Array.isArray(parentPath) ? parentPath : parentPath?.path;
|
|
3118
3226
|
const childPath = fieldPath === "" ? [] : [fieldPath];
|
|
3119
3227
|
const path = basePath ? basePath.concat(...childPath) : childPath;
|
|
3120
3228
|
const id = [globalFormOptions.idPrefix, ...path].join(globalFormOptions.idSeparator);
|
|
3121
|
-
|
|
3229
|
+
let name;
|
|
3230
|
+
if (globalFormOptions.nameGenerator && path.length > 0) {
|
|
3231
|
+
name = globalFormOptions.nameGenerator(path, globalFormOptions.idPrefix, isMultiValue);
|
|
3232
|
+
}
|
|
3233
|
+
return { path, [ID_KEY]: id, ...name !== void 0 && { name } };
|
|
3122
3234
|
}
|
|
3123
3235
|
|
|
3124
3236
|
// src/unwrapErrorHandler.ts
|
|
3125
|
-
import
|
|
3237
|
+
import isPlainObject4 from "lodash/isPlainObject";
|
|
3126
3238
|
function unwrapErrorHandler(errorHandler) {
|
|
3127
3239
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
3128
3240
|
if (key === "addError") {
|
|
3129
3241
|
return acc;
|
|
3130
3242
|
} else {
|
|
3131
3243
|
const childSchema = errorHandler[key];
|
|
3132
|
-
if (
|
|
3244
|
+
if (isPlainObject4(childSchema)) {
|
|
3133
3245
|
return {
|
|
3134
3246
|
...acc,
|
|
3135
3247
|
[key]: unwrapErrorHandler(childSchema)
|
|
@@ -3140,6 +3252,17 @@ function unwrapErrorHandler(errorHandler) {
|
|
|
3140
3252
|
}, {});
|
|
3141
3253
|
}
|
|
3142
3254
|
|
|
3255
|
+
// src/useDeepCompareMemo.ts
|
|
3256
|
+
import { useRef } from "react";
|
|
3257
|
+
import isEqual3 from "lodash/isEqual";
|
|
3258
|
+
function useDeepCompareMemo(newValue) {
|
|
3259
|
+
const valueRef = useRef(newValue);
|
|
3260
|
+
if (!isEqual3(newValue, valueRef.current)) {
|
|
3261
|
+
valueRef.current = newValue;
|
|
3262
|
+
}
|
|
3263
|
+
return valueRef.current;
|
|
3264
|
+
}
|
|
3265
|
+
|
|
3143
3266
|
// src/utcToLocal.ts
|
|
3144
3267
|
function utcToLocal(jsonDate) {
|
|
3145
3268
|
if (!jsonDate) {
|
|
@@ -3157,23 +3280,27 @@ function utcToLocal(jsonDate) {
|
|
|
3157
3280
|
}
|
|
3158
3281
|
|
|
3159
3282
|
// src/validationDataMerge.ts
|
|
3160
|
-
import
|
|
3161
|
-
function validationDataMerge(validationData, additionalErrorSchema) {
|
|
3283
|
+
import isEmpty6 from "lodash/isEmpty";
|
|
3284
|
+
function validationDataMerge(validationData, additionalErrorSchema, preventDuplicates = false) {
|
|
3162
3285
|
if (!additionalErrorSchema) {
|
|
3163
3286
|
return validationData;
|
|
3164
3287
|
}
|
|
3165
3288
|
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
3166
3289
|
let errors = toErrorList(additionalErrorSchema);
|
|
3167
3290
|
let errorSchema = additionalErrorSchema;
|
|
3168
|
-
if (!
|
|
3169
|
-
errorSchema = mergeObjects(
|
|
3291
|
+
if (!isEmpty6(oldErrorSchema)) {
|
|
3292
|
+
errorSchema = mergeObjects(
|
|
3293
|
+
oldErrorSchema,
|
|
3294
|
+
additionalErrorSchema,
|
|
3295
|
+
preventDuplicates ? "preventDuplicates" : true
|
|
3296
|
+
);
|
|
3170
3297
|
errors = [...oldErrors].concat(errors);
|
|
3171
3298
|
}
|
|
3172
3299
|
return { errorSchema, errors };
|
|
3173
3300
|
}
|
|
3174
3301
|
|
|
3175
3302
|
// src/withIdRefPrefix.ts
|
|
3176
|
-
import
|
|
3303
|
+
import isObject6 from "lodash/isObject";
|
|
3177
3304
|
function withIdRefPrefixObject(node) {
|
|
3178
3305
|
for (const key in node) {
|
|
3179
3306
|
const realObj = node;
|
|
@@ -3196,34 +3323,31 @@ function withIdRefPrefix(schemaNode) {
|
|
|
3196
3323
|
if (Array.isArray(schemaNode)) {
|
|
3197
3324
|
return withIdRefPrefixArray([...schemaNode]);
|
|
3198
3325
|
}
|
|
3199
|
-
if (
|
|
3326
|
+
if (isObject6(schemaNode)) {
|
|
3200
3327
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
3201
3328
|
}
|
|
3202
3329
|
return schemaNode;
|
|
3203
3330
|
}
|
|
3204
3331
|
|
|
3205
|
-
// src/
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
import get20 from "lodash/get";
|
|
3210
|
-
import difference from "lodash/difference";
|
|
3211
|
-
function getChangedFields(a, b) {
|
|
3212
|
-
const aIsPlainObject = isPlainObject4(a);
|
|
3213
|
-
const bIsPlainObject = isPlainObject4(b);
|
|
3214
|
-
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
3215
|
-
return [];
|
|
3332
|
+
// src/nameGenerators.ts
|
|
3333
|
+
var bracketNameGenerator = (path, idPrefix, isMultiValue) => {
|
|
3334
|
+
if (!path || path.length === 0) {
|
|
3335
|
+
return idPrefix;
|
|
3216
3336
|
}
|
|
3217
|
-
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3223
|
-
|
|
3224
|
-
|
|
3337
|
+
const baseName = path.reduce((acc, pathUnit, index) => {
|
|
3338
|
+
if (index === 0) {
|
|
3339
|
+
return `${idPrefix}[${String(pathUnit)}]`;
|
|
3340
|
+
}
|
|
3341
|
+
return `${acc}[${String(pathUnit)}]`;
|
|
3342
|
+
}, "");
|
|
3343
|
+
return isMultiValue ? `${baseName}[]` : baseName;
|
|
3344
|
+
};
|
|
3345
|
+
var dotNotationNameGenerator = (path, idPrefix, _isMultiValue) => {
|
|
3346
|
+
if (!path || path.length === 0) {
|
|
3347
|
+
return idPrefix;
|
|
3225
3348
|
}
|
|
3226
|
-
}
|
|
3349
|
+
return `${idPrefix}.${path.map(String).join(".")}`;
|
|
3350
|
+
};
|
|
3227
3351
|
|
|
3228
3352
|
// src/enums.ts
|
|
3229
3353
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
@@ -3247,6 +3371,9 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3247
3371
|
TranslatableString2["PreviewLabel"] = "Preview";
|
|
3248
3372
|
TranslatableString2["DecrementAriaLabel"] = "Decrease value by 1";
|
|
3249
3373
|
TranslatableString2["IncrementAriaLabel"] = "Increase value by 1";
|
|
3374
|
+
TranslatableString2["OptionalObjectAdd"] = "Add data for optional field";
|
|
3375
|
+
TranslatableString2["OptionalObjectRemove"] = "Remove data for optional field";
|
|
3376
|
+
TranslatableString2["OptionalObjectEmptyMsg"] = "No data for optional field";
|
|
3250
3377
|
TranslatableString2["UnknownFieldType"] = "Unknown field type %1";
|
|
3251
3378
|
TranslatableString2["OptionPrefix"] = "Option %1";
|
|
3252
3379
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
@@ -3422,6 +3549,7 @@ export {
|
|
|
3422
3549
|
allowAdditionalItems,
|
|
3423
3550
|
ariaDescribedByIds,
|
|
3424
3551
|
asNumber,
|
|
3552
|
+
bracketNameGenerator,
|
|
3425
3553
|
buttonId,
|
|
3426
3554
|
canExpand,
|
|
3427
3555
|
createErrorHandler,
|
|
@@ -3430,6 +3558,7 @@ export {
|
|
|
3430
3558
|
dateRangeOptions,
|
|
3431
3559
|
deepEquals,
|
|
3432
3560
|
descriptionId,
|
|
3561
|
+
dotNotationNameGenerator,
|
|
3433
3562
|
englishStringTranslator,
|
|
3434
3563
|
enumOptionsDeselectValue,
|
|
3435
3564
|
enumOptionsIndexForValue,
|
|
@@ -3467,8 +3596,10 @@ export {
|
|
|
3467
3596
|
isCustomWidget,
|
|
3468
3597
|
isFilesArray,
|
|
3469
3598
|
isFixedItems,
|
|
3599
|
+
isFormDataAvailable,
|
|
3470
3600
|
isMultiSelect,
|
|
3471
3601
|
isObject,
|
|
3602
|
+
isRootSchema,
|
|
3472
3603
|
isSelect,
|
|
3473
3604
|
labelValue,
|
|
3474
3605
|
localToUTC,
|
|
@@ -3477,6 +3608,7 @@ export {
|
|
|
3477
3608
|
mergeObjects,
|
|
3478
3609
|
mergeSchemas,
|
|
3479
3610
|
optionId,
|
|
3611
|
+
optionalControlsId,
|
|
3480
3612
|
optionsList,
|
|
3481
3613
|
orderProperties,
|
|
3482
3614
|
pad,
|
|
@@ -3489,6 +3621,7 @@ export {
|
|
|
3489
3621
|
schemaRequiresTrueValue,
|
|
3490
3622
|
shallowEquals,
|
|
3491
3623
|
shouldRender,
|
|
3624
|
+
shouldRenderOptionalField,
|
|
3492
3625
|
sortedJSONStringify,
|
|
3493
3626
|
titleId,
|
|
3494
3627
|
toConstant,
|
|
@@ -3498,6 +3631,7 @@ export {
|
|
|
3498
3631
|
toFieldPathId,
|
|
3499
3632
|
toPathSchema,
|
|
3500
3633
|
unwrapErrorHandler,
|
|
3634
|
+
useDeepCompareMemo,
|
|
3501
3635
|
utcToLocal,
|
|
3502
3636
|
validationDataMerge,
|
|
3503
3637
|
withIdRefPrefix
|