@rjsf/utils 6.5.3 → 6.6.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.cjs +618 -433
- package/dist/index.cjs.map +4 -4
- package/dist/utils.esm.js +614 -429
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +623 -438
- package/lib/ErrorSchemaBuilder.js.map +1 -1
- package/lib/canExpand.js.map +1 -1
- package/lib/constIsAjvDataReference.js +1 -1
- package/lib/constIsAjvDataReference.js.map +1 -1
- package/lib/createSchemaUtils.js +3 -3
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/enumOptionSelectedValue.js.map +1 -1
- package/lib/enumOptionValueDecoder.js.map +1 -1
- package/lib/enumOptionsDeselectValue.js +1 -1
- package/lib/enumOptionsDeselectValue.js.map +1 -1
- package/lib/enumOptionsIndexForValue.js.map +1 -1
- package/lib/enumOptionsIsSelected.js.map +1 -1
- package/lib/enumOptionsSelectValue.js +1 -1
- package/lib/enumOptionsSelectValue.js.map +1 -1
- package/lib/enumOptionsValueForIndex.js +2 -2
- package/lib/enumOptionsValueForIndex.js.map +1 -1
- package/lib/findSchemaDefinition.js +4 -4
- package/lib/findSchemaDefinition.js.map +1 -1
- package/lib/getChangedFields.js +3 -3
- package/lib/getChangedFields.js.map +1 -1
- package/lib/getDiscriminatorFieldFromSchema.js.map +1 -1
- package/lib/getOptionMatchingSimpleDiscriminator.js.map +1 -1
- package/lib/getTestIds.d.ts +1 -1
- package/lib/getTestIds.js +4 -3
- package/lib/getTestIds.js.map +1 -1
- package/lib/getWidget.js +1 -1
- package/lib/getWidget.js.map +1 -1
- package/lib/idGenerators.js.map +1 -1
- package/lib/index.d.ts +6 -6
- package/lib/index.js +6 -6
- package/lib/index.js.map +1 -1
- package/lib/isFormDataAvailable.js +1 -1
- package/lib/isFormDataAvailable.js.map +1 -1
- package/lib/isRootSchema.js +1 -1
- package/lib/isRootSchema.js.map +1 -1
- package/lib/mergeDefaultsWithFormData.js +1 -1
- package/lib/mergeDefaultsWithFormData.js.map +1 -1
- package/lib/parser/ParserValidator.js +1 -1
- package/lib/parser/ParserValidator.js.map +1 -1
- package/lib/parser/index.d.ts +1 -1
- package/lib/parser/index.js.map +1 -1
- package/lib/parser/schemaParser.js +2 -2
- package/lib/parser/schemaParser.js.map +1 -1
- package/lib/removeOptionalEmptyObjects.d.ts +2 -0
- package/lib/removeOptionalEmptyObjects.js +8 -29
- package/lib/removeOptionalEmptyObjects.js.map +1 -1
- package/lib/schema/findFieldInSchema.js +1 -1
- package/lib/schema/findFieldInSchema.js.map +1 -1
- package/lib/schema/findSelectedOptionInXxxOf.js +1 -1
- package/lib/schema/findSelectedOptionInXxxOf.js.map +1 -1
- package/lib/schema/getClosestMatchingOption.js +3 -3
- package/lib/schema/getClosestMatchingOption.js.map +1 -1
- package/lib/schema/getDefaultFormState.d.ts +4 -4
- package/lib/schema/getDefaultFormState.js +17 -22
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getFromSchema.js +1 -1
- package/lib/schema/getFromSchema.js.map +1 -1
- package/lib/schema/index.d.ts +4 -4
- package/lib/schema/index.js +4 -4
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/isMultiSelect.js.map +1 -1
- package/lib/schema/omitExtraData.d.ts +18 -8
- package/lib/schema/omitExtraData.js +352 -16
- package/lib/schema/omitExtraData.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +15 -0
- package/lib/schema/retrieveSchema.js +36 -13
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/schema/sanitizeDataForNewSchema.js.map +1 -1
- package/lib/schema/shallowAllOfMerge.d.ts +11 -0
- package/lib/schema/shallowAllOfMerge.js +18 -0
- package/lib/schema/shallowAllOfMerge.js.map +1 -0
- package/lib/schema/toPathSchema.d.ts +1 -0
- package/lib/schema/toPathSchema.js +2 -1
- package/lib/schema/toPathSchema.js.map +1 -1
- package/lib/shouldRenderOptionalField.js +1 -1
- package/lib/shouldRenderOptionalField.js.map +1 -1
- package/lib/toErrorSchema.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +4 -1
- package/lib/useFileWidgetProps.d.ts +1 -1
- package/lib/useFileWidgetProps.js +9 -10
- package/lib/useFileWidgetProps.js.map +1 -1
- package/lib/withIdRefPrefix.js +1 -1
- package/lib/withIdRefPrefix.js.map +1 -1
- package/package.json +10 -10
- package/src/ErrorSchemaBuilder.ts +1 -1
- package/src/canExpand.ts +1 -1
- package/src/constIsAjvDataReference.ts +3 -2
- package/src/createSchemaUtils.ts +18 -17
- package/src/enumOptionSelectedValue.ts +1 -1
- package/src/enumOptionValueDecoder.ts +1 -1
- package/src/enumOptionsDeselectValue.ts +2 -2
- package/src/enumOptionsIndexForValue.ts +1 -1
- package/src/enumOptionsIsSelected.ts +1 -1
- package/src/enumOptionsSelectValue.ts +3 -2
- package/src/enumOptionsValueForIndex.ts +2 -2
- package/src/findSchemaDefinition.ts +4 -4
- package/src/getChangedFields.ts +4 -3
- package/src/getDiscriminatorFieldFromSchema.ts +1 -1
- package/src/getOptionMatchingSimpleDiscriminator.ts +1 -0
- package/src/getTestIds.ts +4 -3
- package/src/getWidget.tsx +2 -2
- package/src/idGenerators.ts +1 -1
- package/src/index.ts +6 -6
- package/src/isFormDataAvailable.ts +1 -1
- package/src/isRootSchema.ts +1 -1
- package/src/mergeDefaultsWithFormData.ts +2 -2
- package/src/parser/ParserValidator.ts +1 -1
- package/src/parser/index.ts +1 -1
- package/src/parser/schemaParser.ts +3 -3
- package/src/removeOptionalEmptyObjects.ts +8 -30
- package/src/schema/findFieldInSchema.ts +2 -2
- package/src/schema/findSelectedOptionInXxxOf.ts +1 -1
- package/src/schema/getClosestMatchingOption.ts +4 -4
- package/src/schema/getDefaultFormState.ts +18 -24
- package/src/schema/getFromSchema.ts +2 -2
- package/src/schema/index.ts +5 -3
- package/src/schema/isMultiSelect.ts +0 -1
- package/src/schema/omitExtraData.ts +398 -19
- package/src/schema/retrieveSchema.ts +41 -15
- package/src/schema/sanitizeDataForNewSchema.ts +1 -1
- package/src/schema/shallowAllOfMerge.ts +19 -0
- package/src/schema/toPathSchema.ts +2 -1
- package/src/shouldRenderOptionalField.ts +2 -2
- package/src/toErrorSchema.ts +1 -1
- package/src/tsconfig.json +0 -1
- package/src/types.ts +4 -1
- package/src/useFileWidgetProps.ts +9 -10
- package/src/withIdRefPrefix.ts +2 -1
package/dist/index.cjs
CHANGED
|
@@ -132,6 +132,7 @@ __export(index_exports, {
|
|
|
132
132
|
isObject: () => isObject,
|
|
133
133
|
isRootSchema: () => isRootSchema,
|
|
134
134
|
isSelect: () => isSelect,
|
|
135
|
+
isValueEmpty: () => isValueEmpty,
|
|
135
136
|
labelValue: () => labelValue,
|
|
136
137
|
localToUTC: () => localToUTC,
|
|
137
138
|
lookupFromFormContext: () => lookupFromFormContext,
|
|
@@ -146,6 +147,7 @@ __export(index_exports, {
|
|
|
146
147
|
pad: () => pad,
|
|
147
148
|
parseDateString: () => parseDateString,
|
|
148
149
|
rangeSpec: () => rangeSpec,
|
|
150
|
+
relaxOptionsForScoring: () => relaxOptionsForScoring,
|
|
149
151
|
removeOptionalEmptyObjects: () => removeOptionalEmptyObjects,
|
|
150
152
|
replaceStringParameters: () => replaceStringParameters,
|
|
151
153
|
resolveUiSchema: () => resolveUiSchema,
|
|
@@ -320,6 +322,9 @@ function createErrorHandler(formData) {
|
|
|
320
322
|
return handler;
|
|
321
323
|
}
|
|
322
324
|
|
|
325
|
+
// src/createSchemaUtils.ts
|
|
326
|
+
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
327
|
+
|
|
323
328
|
// src/deepEquals.ts
|
|
324
329
|
var import_fast_equals = require("fast-equals");
|
|
325
330
|
var deepEquals = (0, import_fast_equals.createCustomEqual)({
|
|
@@ -332,32 +337,13 @@ var deepEquals = (0, import_fast_equals.createCustomEqual)({
|
|
|
332
337
|
});
|
|
333
338
|
var deepEquals_default = deepEquals;
|
|
334
339
|
|
|
335
|
-
// src/schema/findFieldInSchema.ts
|
|
336
|
-
var import_get8 = __toESM(require("lodash/get"), 1);
|
|
337
|
-
var import_has3 = __toESM(require("lodash/has"), 1);
|
|
338
|
-
|
|
339
|
-
// src/schema/findSelectedOptionInXxxOf.ts
|
|
340
|
-
var import_get6 = __toESM(require("lodash/get"), 1);
|
|
341
|
-
|
|
342
|
-
// src/schema/retrieveSchema.ts
|
|
343
|
-
var import_get5 = __toESM(require("lodash/get"), 1);
|
|
344
|
-
var import_set = __toESM(require("lodash/set"), 1);
|
|
345
|
-
var import_times = __toESM(require("lodash/times"), 1);
|
|
346
|
-
var import_transform = __toESM(require("lodash/transform"), 1);
|
|
347
|
-
var import_merge = __toESM(require("lodash/merge"), 1);
|
|
348
|
-
var import_flattenDeep = __toESM(require("lodash/flattenDeep"), 1);
|
|
349
|
-
var import_uniq = __toESM(require("lodash/uniq"), 1);
|
|
350
|
-
var import_isEmpty2 = __toESM(require("lodash/isEmpty"), 1);
|
|
351
|
-
var import_json_schema_merge = require("@x0k/json-schema-merge");
|
|
352
|
-
var import_array = require("@x0k/json-schema-merge/lib/array");
|
|
353
|
-
|
|
354
340
|
// src/findSchemaDefinition.ts
|
|
355
|
-
var import_jsonpointer = __toESM(require("jsonpointer"), 1);
|
|
356
|
-
var import_omit = __toESM(require("lodash/omit"), 1);
|
|
357
|
-
var import_isObject3 = __toESM(require("lodash/isObject"), 1);
|
|
358
|
-
var import_isEmpty = __toESM(require("lodash/isEmpty"), 1);
|
|
359
341
|
var import_fast_uri = __toESM(require("fast-uri"), 1);
|
|
342
|
+
var import_jsonpointer = __toESM(require("jsonpointer"), 1);
|
|
360
343
|
var import_get = __toESM(require("lodash/get"), 1);
|
|
344
|
+
var import_isEmpty = __toESM(require("lodash/isEmpty"), 1);
|
|
345
|
+
var import_isObject3 = __toESM(require("lodash/isObject"), 1);
|
|
346
|
+
var import_omit = __toESM(require("lodash/omit"), 1);
|
|
361
347
|
function findEmbeddedSchemaRecursive(schema, ref) {
|
|
362
348
|
if (ID_KEY in schema && import_fast_uri.default.equal(schema[ID_KEY], ref)) {
|
|
363
349
|
return schema;
|
|
@@ -458,6 +444,13 @@ function findSchemaDefinition($ref, rootSchema = {}, baseURI = (0, import_get.de
|
|
|
458
444
|
return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
|
|
459
445
|
}
|
|
460
446
|
|
|
447
|
+
// src/schema/findFieldInSchema.ts
|
|
448
|
+
var import_get8 = __toESM(require("lodash/get"), 1);
|
|
449
|
+
var import_has3 = __toESM(require("lodash/has"), 1);
|
|
450
|
+
|
|
451
|
+
// src/schema/findSelectedOptionInXxxOf.ts
|
|
452
|
+
var import_get6 = __toESM(require("lodash/get"), 1);
|
|
453
|
+
|
|
461
454
|
// src/getDiscriminatorFieldFromSchema.ts
|
|
462
455
|
var import_get2 = __toESM(require("lodash/get"), 1);
|
|
463
456
|
var import_isString = __toESM(require("lodash/isString"), 1);
|
|
@@ -472,6 +465,16 @@ function getDiscriminatorFieldFromSchema(schema) {
|
|
|
472
465
|
return discriminator;
|
|
473
466
|
}
|
|
474
467
|
|
|
468
|
+
// src/schema/retrieveSchema.ts
|
|
469
|
+
var import_flattenDeep = __toESM(require("lodash/flattenDeep"), 1);
|
|
470
|
+
var import_get5 = __toESM(require("lodash/get"), 1);
|
|
471
|
+
var import_isEmpty2 = __toESM(require("lodash/isEmpty"), 1);
|
|
472
|
+
var import_merge = __toESM(require("lodash/merge"), 1);
|
|
473
|
+
var import_set = __toESM(require("lodash/set"), 1);
|
|
474
|
+
var import_times = __toESM(require("lodash/times"), 1);
|
|
475
|
+
var import_transform = __toESM(require("lodash/transform"), 1);
|
|
476
|
+
var import_uniq = __toESM(require("lodash/uniq"), 1);
|
|
477
|
+
|
|
475
478
|
// src/guessType.ts
|
|
476
479
|
function guessType(value) {
|
|
477
480
|
if (Array.isArray(value)) {
|
|
@@ -613,6 +616,16 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
613
616
|
return 0;
|
|
614
617
|
}
|
|
615
618
|
|
|
619
|
+
// src/schema/shallowAllOfMerge.ts
|
|
620
|
+
var import_json_schema_merge = require("@x0k/json-schema-merge");
|
|
621
|
+
var import_array = require("@x0k/json-schema-merge/lib/array");
|
|
622
|
+
var { compareSchemaDefinitions, compareSchemaValues } = (0, import_json_schema_merge.createComparator)();
|
|
623
|
+
var { mergeArrayOfSchemaDefinitions } = (0, import_json_schema_merge.createMerger)({
|
|
624
|
+
intersectJson: (0, import_array.createIntersector)(compareSchemaValues),
|
|
625
|
+
deduplicateJsonSchemaDef: (0, import_array.createDeduplicator)(compareSchemaDefinitions)
|
|
626
|
+
});
|
|
627
|
+
var shallowAllOfMerge_default = (0, import_json_schema_merge.createShallowAllOfMerge)(mergeArrayOfSchemaDefinitions);
|
|
628
|
+
|
|
616
629
|
// src/schema/retrieveSchema.ts
|
|
617
630
|
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
|
|
618
631
|
return retrieveSchemaInternal(
|
|
@@ -899,14 +912,8 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
899
912
|
});
|
|
900
913
|
return schema;
|
|
901
914
|
}
|
|
902
|
-
var { compareSchemaDefinitions, compareSchemaValues } = (0, import_json_schema_merge.createComparator)();
|
|
903
|
-
var { mergeArrayOfSchemaDefinitions } = (0, import_json_schema_merge.createMerger)({
|
|
904
|
-
intersectJson: (0, import_array.createIntersector)(compareSchemaValues),
|
|
905
|
-
deduplicateJsonSchemaDef: (0, import_array.createDeduplicator)(compareSchemaDefinitions)
|
|
906
|
-
});
|
|
907
|
-
var shallowAllOfMerge = (0, import_json_schema_merge.createShallowAllOfMerge)(mergeArrayOfSchemaDefinitions);
|
|
908
915
|
function mergeAllOf(schema) {
|
|
909
|
-
return
|
|
916
|
+
return shallowAllOfMerge_default(schema);
|
|
910
917
|
}
|
|
911
918
|
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
912
919
|
if (!isObject(schema)) {
|
|
@@ -1013,12 +1020,23 @@ function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranch
|
|
|
1013
1020
|
});
|
|
1014
1021
|
const option = getFirstMatchingOption(validator, formData, anyOrOneOf, rootSchema, discriminator);
|
|
1015
1022
|
if (expandAllBranches) {
|
|
1023
|
+
const relaxed = relaxOptionsForScoring(anyOrOneOf, false, rootSchema);
|
|
1024
|
+
getFirstMatchingOption(validator, formData, relaxed, rootSchema, discriminator);
|
|
1016
1025
|
return anyOrOneOf.map((item) => mergeSchemas(remaining, item));
|
|
1017
1026
|
}
|
|
1018
1027
|
schema = mergeSchemas(remaining, anyOrOneOf[option]);
|
|
1019
1028
|
}
|
|
1020
1029
|
return [schema];
|
|
1021
1030
|
}
|
|
1031
|
+
function relaxOptionsForScoring(options, resolveRefs = false, rootSchema) {
|
|
1032
|
+
return options.map((d) => {
|
|
1033
|
+
if (!isObject(d)) {
|
|
1034
|
+
return d ? {} : { not: {} };
|
|
1035
|
+
}
|
|
1036
|
+
const schema = resolveRefs && rootSchema ? resolveAllReferences(d, rootSchema, []) : d;
|
|
1037
|
+
return schema.additionalProperties === false ? { ...schema, additionalProperties: true } : schema;
|
|
1038
|
+
});
|
|
1039
|
+
}
|
|
1022
1040
|
function resolveDependencies(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
1023
1041
|
const { dependencies, ...remainingSchema } = schema;
|
|
1024
1042
|
const resolvedSchemas = resolveAnyOrOneOfSchemas(
|
|
@@ -1309,10 +1327,6 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1309
1327
|
return { field, isRequired };
|
|
1310
1328
|
}
|
|
1311
1329
|
|
|
1312
|
-
// src/schema/getDefaultFormState.ts
|
|
1313
|
-
var import_get12 = __toESM(require("lodash/get"), 1);
|
|
1314
|
-
var import_isEmpty4 = __toESM(require("lodash/isEmpty"), 1);
|
|
1315
|
-
|
|
1316
1330
|
// src/schema/getClosestMatchingOption.ts
|
|
1317
1331
|
var import_get9 = __toESM(require("lodash/get"), 1);
|
|
1318
1332
|
var import_has4 = __toESM(require("lodash/has"), 1);
|
|
@@ -1437,6 +1451,23 @@ function getClosestMatchingOption(validator, rootSchema, formData, options, sele
|
|
|
1437
1451
|
return bestIndex;
|
|
1438
1452
|
}
|
|
1439
1453
|
|
|
1454
|
+
// src/schema/getDefaultFormState.ts
|
|
1455
|
+
var import_get12 = __toESM(require("lodash/get"), 1);
|
|
1456
|
+
var import_isEmpty4 = __toESM(require("lodash/isEmpty"), 1);
|
|
1457
|
+
|
|
1458
|
+
// src/constIsAjvDataReference.ts
|
|
1459
|
+
var import_isString3 = __toESM(require("lodash/isString"), 1);
|
|
1460
|
+
function constIsAjvDataReference(schema) {
|
|
1461
|
+
const schemaConst = schema[CONST_KEY];
|
|
1462
|
+
const schemaType = getSchemaType(schema);
|
|
1463
|
+
return isObject(schemaConst) && (0, import_isString3.default)(schemaConst?.$data) && schemaType !== "object" && schemaType !== "array";
|
|
1464
|
+
}
|
|
1465
|
+
|
|
1466
|
+
// src/isConstant.ts
|
|
1467
|
+
function isConstant(schema) {
|
|
1468
|
+
return Array.isArray(schema.enum) && schema.enum.length === 1 || CONST_KEY in schema;
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1440
1471
|
// src/isFixedItems.ts
|
|
1441
1472
|
function isFixedItems(schema) {
|
|
1442
1473
|
return Array.isArray(schema.items) && schema.items.length > 0 && schema.items.every((item) => isObject(item));
|
|
@@ -1529,40 +1560,6 @@ function mergeObjects(obj1, obj2, concatArrays = false) {
|
|
|
1529
1560
|
);
|
|
1530
1561
|
}
|
|
1531
1562
|
|
|
1532
|
-
// src/isConstant.ts
|
|
1533
|
-
function isConstant(schema) {
|
|
1534
|
-
return Array.isArray(schema.enum) && schema.enum.length === 1 || CONST_KEY in schema;
|
|
1535
|
-
}
|
|
1536
|
-
|
|
1537
|
-
// src/schema/isSelect.ts
|
|
1538
|
-
function isSelect(validator, theSchema, rootSchema = {}, experimental_customMergeAllOf) {
|
|
1539
|
-
const schema = retrieveSchema(validator, theSchema, rootSchema, void 0, experimental_customMergeAllOf);
|
|
1540
|
-
const altSchemas = schema.oneOf || schema.anyOf;
|
|
1541
|
-
if (Array.isArray(schema.enum)) {
|
|
1542
|
-
return true;
|
|
1543
|
-
}
|
|
1544
|
-
if (Array.isArray(altSchemas)) {
|
|
1545
|
-
return altSchemas.every((altSchemas2) => typeof altSchemas2 !== "boolean" && isConstant(altSchemas2));
|
|
1546
|
-
}
|
|
1547
|
-
return false;
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
|
-
// src/schema/isMultiSelect.ts
|
|
1551
|
-
function isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) {
|
|
1552
|
-
if (!schema.uniqueItems || !schema.items || typeof schema.items === "boolean") {
|
|
1553
|
-
return false;
|
|
1554
|
-
}
|
|
1555
|
-
return isSelect(validator, schema.items, rootSchema, experimental_customMergeAllOf);
|
|
1556
|
-
}
|
|
1557
|
-
|
|
1558
|
-
// src/constIsAjvDataReference.ts
|
|
1559
|
-
var import_isString3 = __toESM(require("lodash/isString"), 1);
|
|
1560
|
-
function constIsAjvDataReference(schema) {
|
|
1561
|
-
const schemaConst = schema[CONST_KEY];
|
|
1562
|
-
const schemaType = getSchemaType(schema);
|
|
1563
|
-
return isObject(schemaConst) && (0, import_isString3.default)(schemaConst?.$data) && schemaType !== "object" && schemaType !== "array";
|
|
1564
|
-
}
|
|
1565
|
-
|
|
1566
1563
|
// src/optionsList.ts
|
|
1567
1564
|
var import_get11 = __toESM(require("lodash/get"), 1);
|
|
1568
1565
|
|
|
@@ -1643,6 +1640,27 @@ function optionsList(schema, uiSchema) {
|
|
|
1643
1640
|
});
|
|
1644
1641
|
}
|
|
1645
1642
|
|
|
1643
|
+
// src/schema/isSelect.ts
|
|
1644
|
+
function isSelect(validator, theSchema, rootSchema = {}, experimental_customMergeAllOf) {
|
|
1645
|
+
const schema = retrieveSchema(validator, theSchema, rootSchema, void 0, experimental_customMergeAllOf);
|
|
1646
|
+
const altSchemas = schema.oneOf || schema.anyOf;
|
|
1647
|
+
if (Array.isArray(schema.enum)) {
|
|
1648
|
+
return true;
|
|
1649
|
+
}
|
|
1650
|
+
if (Array.isArray(altSchemas)) {
|
|
1651
|
+
return altSchemas.every((altSchemas2) => typeof altSchemas2 !== "boolean" && isConstant(altSchemas2));
|
|
1652
|
+
}
|
|
1653
|
+
return false;
|
|
1654
|
+
}
|
|
1655
|
+
|
|
1656
|
+
// src/schema/isMultiSelect.ts
|
|
1657
|
+
function isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) {
|
|
1658
|
+
if (!schema.uniqueItems || !schema.items || typeof schema.items === "boolean") {
|
|
1659
|
+
return false;
|
|
1660
|
+
}
|
|
1661
|
+
return isSelect(validator, schema.items, rootSchema, experimental_customMergeAllOf);
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1646
1664
|
// src/schema/getDefaultFormState.ts
|
|
1647
1665
|
var PRIMITIVE_TYPES = ["string", "number", "integer", "boolean", "null"];
|
|
1648
1666
|
function getInnerSchemaForArrayItem(schema, additionalItems = 0 /* Ignore */, idx = -1) {
|
|
@@ -2002,14 +2020,11 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
2002
2020
|
defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);
|
|
2003
2021
|
}
|
|
2004
2022
|
}
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
if (ignoreMinItemsFlagSet && !required) {
|
|
2011
|
-
return defaults ? defaults : void 0;
|
|
2012
|
-
}
|
|
2023
|
+
if (neverPopulate) {
|
|
2024
|
+
return defaults ?? emptyDefault;
|
|
2025
|
+
}
|
|
2026
|
+
if (ignoreMinItemsFlagSet && !required) {
|
|
2027
|
+
return defaults ? defaults : void 0;
|
|
2013
2028
|
}
|
|
2014
2029
|
let arrayDefault;
|
|
2015
2030
|
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
@@ -2139,210 +2154,269 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
2139
2154
|
}
|
|
2140
2155
|
|
|
2141
2156
|
// src/schema/omitExtraData.ts
|
|
2142
|
-
var import_pick = __toESM(require("lodash/pick"), 1);
|
|
2143
|
-
var import_isEmpty5 = __toESM(require("lodash/isEmpty"), 1);
|
|
2144
|
-
var import_get15 = __toESM(require("lodash/get"), 1);
|
|
2145
|
-
|
|
2146
|
-
// src/schema/toPathSchema.ts
|
|
2147
2157
|
var import_get14 = __toESM(require("lodash/get"), 1);
|
|
2148
|
-
var
|
|
2149
|
-
var
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
if (sameSchemaIndex === -1) {
|
|
2155
|
-
return toPathSchemaInternal(
|
|
2156
|
-
validator,
|
|
2157
|
-
_schema,
|
|
2158
|
-
name,
|
|
2159
|
-
rootSchema,
|
|
2160
|
-
formData,
|
|
2161
|
-
_recurseList.concat(_schema),
|
|
2162
|
-
experimental_customMergeAllOf
|
|
2163
|
-
);
|
|
2164
|
-
}
|
|
2158
|
+
var import_isEmpty5 = __toESM(require("lodash/isEmpty"), 1);
|
|
2159
|
+
var import_isNil2 = __toESM(require("lodash/isNil"), 1);
|
|
2160
|
+
var import_pick = __toESM(require("lodash/pick"), 1);
|
|
2161
|
+
function getUsedFormData(formData, fields) {
|
|
2162
|
+
if (fields.length === 0 && typeof formData !== "object") {
|
|
2163
|
+
return formData;
|
|
2165
2164
|
}
|
|
2166
|
-
|
|
2167
|
-
|
|
2165
|
+
const data = (0, import_pick.default)(formData, fields);
|
|
2166
|
+
if (Array.isArray(formData)) {
|
|
2167
|
+
return Object.keys(data).map((key) => data[key]);
|
|
2168
|
+
}
|
|
2169
|
+
return data;
|
|
2170
|
+
}
|
|
2171
|
+
function getFieldNames(pathSchema, formData) {
|
|
2172
|
+
const formValueHasData = (value, isLeaf) => typeof value !== "object" || (0, import_isEmpty5.default)(value) || isLeaf && !(0, import_isEmpty5.default)(value);
|
|
2173
|
+
const getAllPaths = (_obj, acc = [], paths = [[]]) => {
|
|
2174
|
+
const objKeys = Object.keys(_obj);
|
|
2175
|
+
objKeys.forEach((key) => {
|
|
2176
|
+
const data = _obj[key];
|
|
2177
|
+
if (typeof data === "object") {
|
|
2178
|
+
const newPaths = paths.map((path) => [...path, key]);
|
|
2179
|
+
if (data[RJSF_ADDITIONAL_PROPERTIES_FLAG] && data[NAME_KEY] !== "") {
|
|
2180
|
+
acc.push(data[NAME_KEY]);
|
|
2181
|
+
} else {
|
|
2182
|
+
getAllPaths(data, acc, newPaths);
|
|
2183
|
+
}
|
|
2184
|
+
} else if (key === NAME_KEY && data !== "") {
|
|
2185
|
+
paths.forEach((path) => {
|
|
2186
|
+
const formValue = (0, import_get14.default)(formData, path);
|
|
2187
|
+
const isLeaf = objKeys.length === 1;
|
|
2188
|
+
if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
|
|
2189
|
+
acc.push(path);
|
|
2190
|
+
}
|
|
2191
|
+
});
|
|
2192
|
+
}
|
|
2193
|
+
});
|
|
2194
|
+
return acc;
|
|
2168
2195
|
};
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2196
|
+
return getAllPaths(pathSchema);
|
|
2197
|
+
}
|
|
2198
|
+
function isValueEmpty(value) {
|
|
2199
|
+
if ((0, import_isNil2.default)(value) || value === "") {
|
|
2200
|
+
return true;
|
|
2201
|
+
}
|
|
2202
|
+
if (Array.isArray(value)) {
|
|
2203
|
+
return value.length === 0;
|
|
2204
|
+
}
|
|
2205
|
+
if (isObject(value)) {
|
|
2206
|
+
return Object.values(value).every(isValueEmpty);
|
|
2207
|
+
}
|
|
2208
|
+
return false;
|
|
2209
|
+
}
|
|
2210
|
+
function doMergeAllOf(schema, experimental_customMergeAllOf) {
|
|
2211
|
+
return experimental_customMergeAllOf ? experimental_customMergeAllOf(schema) : shallowAllOfMerge_default(schema);
|
|
2212
|
+
}
|
|
2213
|
+
function omitExtraData(validator, schema, rootSchema = {}, formData, experimental_customMergeAllOf) {
|
|
2214
|
+
function isObjectValue(value) {
|
|
2215
|
+
return isObject(value);
|
|
2216
|
+
}
|
|
2217
|
+
function isSchemaObj(schemaDef) {
|
|
2218
|
+
return isObject(schemaDef);
|
|
2219
|
+
}
|
|
2220
|
+
function handleObject(schema2, source, target) {
|
|
2221
|
+
const { properties, additionalProperties, patternProperties, propertyNames } = schema2;
|
|
2222
|
+
const requiredSet = new Set(schema2.required ?? []);
|
|
2223
|
+
function setProperty(key, schemaDef, value, required = false) {
|
|
2224
|
+
const v = omit3(schemaDef, value, target[key]);
|
|
2225
|
+
if (!required && isObject(v)) {
|
|
2226
|
+
let sd = isSchemaObj(schemaDef) ? schemaDef : {};
|
|
2227
|
+
if (sd.$ref !== void 0) {
|
|
2228
|
+
sd = findSchemaDefinition(sd.$ref, rootSchema);
|
|
2229
|
+
}
|
|
2230
|
+
const innerRequired = new Set(sd.required ?? []);
|
|
2231
|
+
const shouldDrop = Object.entries(v).every(
|
|
2232
|
+
([k, val]) => !innerRequired.has(k) && isValueEmpty(val)
|
|
2233
|
+
);
|
|
2234
|
+
if (shouldDrop) {
|
|
2235
|
+
return;
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
if (v !== void 0) {
|
|
2239
|
+
target[key] = v;
|
|
2240
|
+
}
|
|
2241
|
+
}
|
|
2242
|
+
if (properties !== void 0) {
|
|
2243
|
+
for (const [key, schemaDef] of Object.entries(properties)) {
|
|
2244
|
+
setProperty(key, schemaDef, source[key], requiredSet.has(key));
|
|
2245
|
+
}
|
|
2246
|
+
}
|
|
2247
|
+
let patternPropertiesRest;
|
|
2248
|
+
if (patternProperties !== void 0) {
|
|
2249
|
+
patternPropertiesRest = [];
|
|
2250
|
+
const patterns = Object.entries(patternProperties).map(([pattern, schemaDef]) => [
|
|
2251
|
+
new RegExp(pattern),
|
|
2252
|
+
schemaDef
|
|
2253
|
+
]);
|
|
2254
|
+
const knownProperties = new Set(Object.keys(properties ?? {}));
|
|
2255
|
+
for (const [key, value] of Object.entries(source)) {
|
|
2256
|
+
if (knownProperties.has(key)) {
|
|
2257
|
+
continue;
|
|
2258
|
+
}
|
|
2259
|
+
const matched = patterns.find(([re]) => re.test(key));
|
|
2260
|
+
if (matched === void 0) {
|
|
2261
|
+
patternPropertiesRest.push(key);
|
|
2262
|
+
continue;
|
|
2263
|
+
}
|
|
2264
|
+
setProperty(key, matched[1], value);
|
|
2265
|
+
}
|
|
2266
|
+
}
|
|
2267
|
+
if (additionalProperties !== void 0 && additionalProperties !== false) {
|
|
2268
|
+
const addlSchema = additionalProperties;
|
|
2269
|
+
if (patternPropertiesRest !== void 0) {
|
|
2270
|
+
for (const key of patternPropertiesRest) {
|
|
2271
|
+
setProperty(key, addlSchema, source[key]);
|
|
2272
|
+
}
|
|
2273
|
+
} else {
|
|
2274
|
+
const knownProperties = new Set(Object.keys(properties ?? {}));
|
|
2275
|
+
for (const [key, value] of Object.entries(source)) {
|
|
2276
|
+
if (knownProperties.has(key)) {
|
|
2277
|
+
continue;
|
|
2278
|
+
}
|
|
2279
|
+
setProperty(key, addlSchema, value);
|
|
2280
|
+
}
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
if (propertyNames !== void 0) {
|
|
2284
|
+
for (const [key, value] of Object.entries(source)) {
|
|
2285
|
+
target[key] = value;
|
|
2286
|
+
}
|
|
2287
|
+
}
|
|
2288
|
+
return target;
|
|
2289
|
+
}
|
|
2290
|
+
function handleArray(schema2, source, target) {
|
|
2291
|
+
const { items, additionalItems } = schema2;
|
|
2292
|
+
if (items !== void 0) {
|
|
2293
|
+
if (Array.isArray(items)) {
|
|
2294
|
+
for (let i = 0; i < items.length; i++) {
|
|
2295
|
+
target.push(omit3(items[i], source[i]));
|
|
2296
|
+
}
|
|
2297
|
+
} else {
|
|
2298
|
+
for (let i = 0; i < source.length; i++) {
|
|
2299
|
+
target.push(omit3(items, source[i]));
|
|
2300
|
+
}
|
|
2301
|
+
}
|
|
2302
|
+
}
|
|
2303
|
+
if (additionalItems) {
|
|
2304
|
+
for (let i = target.length; i < source.length; i++) {
|
|
2305
|
+
target.push(omit3(additionalItems, source[i]));
|
|
2306
|
+
}
|
|
2307
|
+
}
|
|
2308
|
+
return target;
|
|
2309
|
+
}
|
|
2310
|
+
function handleConditions(schema2, source, target) {
|
|
2311
|
+
const { if: condition, then, else: otherwise } = schema2;
|
|
2312
|
+
if (condition === void 0) {
|
|
2313
|
+
return target;
|
|
2314
|
+
}
|
|
2315
|
+
const isThenBranch = isSchemaObj(condition) ? validator.isValid(condition, source, rootSchema) : condition;
|
|
2316
|
+
const branch = isThenBranch ? then : otherwise;
|
|
2317
|
+
return branch === void 0 ? target : omit3(branch, source, target);
|
|
2318
|
+
}
|
|
2319
|
+
function handleOneOf(oneOf, schema2, source, target) {
|
|
2320
|
+
if (!Array.isArray(oneOf) || isSelect(validator, schema2, rootSchema, experimental_customMergeAllOf)) {
|
|
2321
|
+
return target;
|
|
2322
|
+
}
|
|
2323
|
+
const scoringOptions = relaxOptionsForScoring(oneOf, true, rootSchema);
|
|
2324
|
+
const bestIndex = getClosestMatchingOption(
|
|
2173
2325
|
validator,
|
|
2174
2326
|
rootSchema,
|
|
2175
|
-
|
|
2176
|
-
|
|
2327
|
+
source,
|
|
2328
|
+
scoringOptions,
|
|
2177
2329
|
0,
|
|
2178
|
-
|
|
2330
|
+
getDiscriminatorFieldFromSchema(schema2),
|
|
2179
2331
|
experimental_customMergeAllOf
|
|
2180
2332
|
);
|
|
2181
|
-
const
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
};
|
|
2194
|
-
}
|
|
2195
|
-
if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
|
|
2196
|
-
(0, import_set2.default)(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
|
|
2197
|
-
const additionalSchema = (0, import_isObject11.default)(schema[ADDITIONAL_PROPERTIES_KEY]) ? schema[ADDITIONAL_PROPERTIES_KEY] : {};
|
|
2198
|
-
const definedProperties = (0, import_get14.default)(schema, PROPERTIES_KEY, {});
|
|
2199
|
-
for (const key of Object.keys(formData ?? {})) {
|
|
2200
|
-
if (!(key in definedProperties)) {
|
|
2201
|
-
pathSchema[key] = toPathSchemaInternal(
|
|
2202
|
-
validator,
|
|
2203
|
-
additionalSchema,
|
|
2204
|
-
`${name}.${key}`,
|
|
2205
|
-
rootSchema,
|
|
2206
|
-
(0, import_get14.default)(formData, [key]),
|
|
2207
|
-
_recurseList,
|
|
2208
|
-
experimental_customMergeAllOf
|
|
2209
|
-
);
|
|
2333
|
+
const winning = oneOf[bestIndex];
|
|
2334
|
+
const resolved = isObject(winning) ? resolveAllReferences(winning, rootSchema, []) : scoringOptions[bestIndex];
|
|
2335
|
+
return omit3(resolved, source, target);
|
|
2336
|
+
}
|
|
2337
|
+
function handleAnyOf(schema2, source, target) {
|
|
2338
|
+
const { anyOf } = schema2;
|
|
2339
|
+
if (!Array.isArray(anyOf)) {
|
|
2340
|
+
return target;
|
|
2341
|
+
}
|
|
2342
|
+
if (source === void 0 || Array.isArray(source) && source.length === 0 || isObject(source) && Object.keys(source).length === 0) {
|
|
2343
|
+
for (const branch of anyOf) {
|
|
2344
|
+
target = omit3(branch, source, target);
|
|
2210
2345
|
}
|
|
2346
|
+
return target;
|
|
2211
2347
|
}
|
|
2348
|
+
return handleOneOf(anyOf, schema2, source, target);
|
|
2212
2349
|
}
|
|
2213
|
-
|
|
2214
|
-
const {
|
|
2215
|
-
if (
|
|
2216
|
-
|
|
2217
|
-
if (schemaItems[i]) {
|
|
2218
|
-
pathSchema[i] = toPathSchemaInternal(
|
|
2219
|
-
validator,
|
|
2220
|
-
schemaItems[i],
|
|
2221
|
-
`${name}.${i}`,
|
|
2222
|
-
rootSchema,
|
|
2223
|
-
element,
|
|
2224
|
-
_recurseList,
|
|
2225
|
-
experimental_customMergeAllOf
|
|
2226
|
-
);
|
|
2227
|
-
} else if (schemaAdditionalItems) {
|
|
2228
|
-
pathSchema[i] = toPathSchemaInternal(
|
|
2229
|
-
validator,
|
|
2230
|
-
schemaAdditionalItems,
|
|
2231
|
-
`${name}.${i}`,
|
|
2232
|
-
rootSchema,
|
|
2233
|
-
element,
|
|
2234
|
-
_recurseList,
|
|
2235
|
-
experimental_customMergeAllOf
|
|
2236
|
-
);
|
|
2237
|
-
} else {
|
|
2238
|
-
console.warn(`Unable to generate path schema for "${name}.${i}". No schema defined for it`);
|
|
2239
|
-
}
|
|
2240
|
-
});
|
|
2241
|
-
} else {
|
|
2242
|
-
formData.forEach((element, i) => {
|
|
2243
|
-
pathSchema[i] = toPathSchemaInternal(
|
|
2244
|
-
validator,
|
|
2245
|
-
schemaItems,
|
|
2246
|
-
`${name}.${i}`,
|
|
2247
|
-
rootSchema,
|
|
2248
|
-
element,
|
|
2249
|
-
_recurseList,
|
|
2250
|
-
experimental_customMergeAllOf
|
|
2251
|
-
);
|
|
2252
|
-
});
|
|
2350
|
+
function handleDependencies(schema2, source, target) {
|
|
2351
|
+
const { dependencies } = schema2;
|
|
2352
|
+
if (dependencies === void 0 || !isObjectValue(source)) {
|
|
2353
|
+
return target;
|
|
2253
2354
|
}
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
field,
|
|
2260
|
-
`${name}.${property}`,
|
|
2261
|
-
rootSchema,
|
|
2262
|
-
// It's possible that formData is not an object -- this can happen if an
|
|
2263
|
-
// array item has just been added, but not populated with data yet
|
|
2264
|
-
(0, import_get14.default)(formData, [property]),
|
|
2265
|
-
_recurseList,
|
|
2266
|
-
experimental_customMergeAllOf
|
|
2267
|
-
);
|
|
2355
|
+
for (const [key, deps] of Object.entries(dependencies)) {
|
|
2356
|
+
if (!(key in source) || Array.isArray(deps)) {
|
|
2357
|
+
continue;
|
|
2358
|
+
}
|
|
2359
|
+
target = omit3(deps, source, target);
|
|
2268
2360
|
}
|
|
2361
|
+
return target;
|
|
2269
2362
|
}
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
const objKeys = Object.keys(_obj);
|
|
2291
|
-
objKeys.forEach((key) => {
|
|
2292
|
-
const data = _obj[key];
|
|
2293
|
-
if (typeof data === "object") {
|
|
2294
|
-
const newPaths = paths.map((path) => [...path, key]);
|
|
2295
|
-
if (data[RJSF_ADDITIONAL_PROPERTIES_FLAG] && data[NAME_KEY] !== "") {
|
|
2296
|
-
acc.push(data[NAME_KEY]);
|
|
2297
|
-
} else {
|
|
2298
|
-
getAllPaths(data, acc, newPaths);
|
|
2299
|
-
}
|
|
2300
|
-
} else if (key === NAME_KEY && data !== "") {
|
|
2301
|
-
paths.forEach((path) => {
|
|
2302
|
-
const formValue = (0, import_get15.default)(formData, path);
|
|
2303
|
-
const isLeaf = objKeys.length === 1;
|
|
2304
|
-
if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
|
|
2305
|
-
acc.push(path);
|
|
2306
|
-
}
|
|
2307
|
-
});
|
|
2363
|
+
function omit3(schemaDef, source, target) {
|
|
2364
|
+
if (source === void 0 || schemaDef === false) {
|
|
2365
|
+
return void 0;
|
|
2366
|
+
}
|
|
2367
|
+
if (schemaDef === true || (0, import_isEmpty5.default)(schemaDef)) {
|
|
2368
|
+
return source;
|
|
2369
|
+
}
|
|
2370
|
+
let schema2 = schemaDef;
|
|
2371
|
+
const { $ref: ref, allOf } = schema2;
|
|
2372
|
+
if (ref !== void 0) {
|
|
2373
|
+
return omit3(findSchemaDefinition(ref, rootSchema), source, target);
|
|
2374
|
+
}
|
|
2375
|
+
if (allOf) {
|
|
2376
|
+
schema2 = doMergeAllOf(schema2, experimental_customMergeAllOf);
|
|
2377
|
+
}
|
|
2378
|
+
target = handleAnyOf(schema2, source, handleOneOf(schema2.oneOf, schema2, source, target));
|
|
2379
|
+
const type = getSchemaType(schema2);
|
|
2380
|
+
if (type === "object") {
|
|
2381
|
+
if (!isObjectValue(source)) {
|
|
2382
|
+
return void 0;
|
|
2308
2383
|
}
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
}
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
);
|
|
2321
|
-
return getUsedFormData(formData, lodashFieldNames);
|
|
2384
|
+
target = handleObject(schema2, source, isObjectValue(target) ? target : {});
|
|
2385
|
+
} else if (type === "array") {
|
|
2386
|
+
if (!Array.isArray(source)) {
|
|
2387
|
+
return void 0;
|
|
2388
|
+
}
|
|
2389
|
+
target = handleArray(schema2, source, Array.isArray(target) ? target : []);
|
|
2390
|
+
} else if (target === void 0) {
|
|
2391
|
+
target = source;
|
|
2392
|
+
}
|
|
2393
|
+
return handleDependencies(schema2, source, handleConditions(schema2, source, target));
|
|
2394
|
+
}
|
|
2395
|
+
return omit3(schema, formData);
|
|
2322
2396
|
}
|
|
2323
2397
|
|
|
2324
2398
|
// src/schema/sanitizeDataForNewSchema.ts
|
|
2325
|
-
var
|
|
2399
|
+
var import_get15 = __toESM(require("lodash/get"), 1);
|
|
2326
2400
|
var import_has5 = __toESM(require("lodash/has"), 1);
|
|
2327
|
-
var NO_VALUE = Symbol("no Value");
|
|
2401
|
+
var NO_VALUE = /* @__PURE__ */ Symbol("no Value");
|
|
2328
2402
|
function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {
|
|
2329
2403
|
let newFormData;
|
|
2330
2404
|
if ((0, import_has5.default)(newSchema, PROPERTIES_KEY)) {
|
|
2331
2405
|
const removeOldSchemaData = {};
|
|
2332
2406
|
if ((0, import_has5.default)(oldSchema, PROPERTIES_KEY)) {
|
|
2333
|
-
const properties = (0,
|
|
2407
|
+
const properties = (0, import_get15.default)(oldSchema, PROPERTIES_KEY, {});
|
|
2334
2408
|
Object.keys(properties).forEach((key) => {
|
|
2335
2409
|
if ((0, import_has5.default)(data, key)) {
|
|
2336
2410
|
removeOldSchemaData[key] = void 0;
|
|
2337
2411
|
}
|
|
2338
2412
|
});
|
|
2339
2413
|
}
|
|
2340
|
-
const keys2 = Object.keys((0,
|
|
2414
|
+
const keys2 = Object.keys((0, import_get15.default)(newSchema, PROPERTIES_KEY, {}));
|
|
2341
2415
|
const nestedData = {};
|
|
2342
2416
|
keys2.forEach((key) => {
|
|
2343
|
-
const formValue = (0,
|
|
2344
|
-
let oldKeyedSchema = (0,
|
|
2345
|
-
let newKeyedSchema = (0,
|
|
2417
|
+
const formValue = (0, import_get15.default)(data, key);
|
|
2418
|
+
let oldKeyedSchema = (0, import_get15.default)(oldSchema, [PROPERTIES_KEY, key], {});
|
|
2419
|
+
let newKeyedSchema = (0, import_get15.default)(newSchema, [PROPERTIES_KEY, key], {});
|
|
2346
2420
|
if ((0, import_has5.default)(oldKeyedSchema, REF_KEY)) {
|
|
2347
2421
|
oldKeyedSchema = retrieveSchema(
|
|
2348
2422
|
validator,
|
|
@@ -2361,8 +2435,8 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2361
2435
|
experimental_customMergeAllOf
|
|
2362
2436
|
);
|
|
2363
2437
|
}
|
|
2364
|
-
const oldSchemaTypeForKey = (0,
|
|
2365
|
-
const newSchemaTypeForKey = (0,
|
|
2438
|
+
const oldSchemaTypeForKey = (0, import_get15.default)(oldKeyedSchema, "type");
|
|
2439
|
+
const newSchemaTypeForKey = (0, import_get15.default)(newKeyedSchema, "type");
|
|
2366
2440
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
2367
2441
|
if ((0, import_has5.default)(removeOldSchemaData, key)) {
|
|
2368
2442
|
delete removeOldSchemaData[key];
|
|
@@ -2380,17 +2454,17 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2380
2454
|
nestedData[key] = itemData;
|
|
2381
2455
|
}
|
|
2382
2456
|
} else {
|
|
2383
|
-
const newOptionDefault = (0,
|
|
2384
|
-
const oldOptionDefault = (0,
|
|
2457
|
+
const newOptionDefault = (0, import_get15.default)(newKeyedSchema, "default", NO_VALUE);
|
|
2458
|
+
const oldOptionDefault = (0, import_get15.default)(oldKeyedSchema, "default", NO_VALUE);
|
|
2385
2459
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
2386
2460
|
if (oldOptionDefault === formValue) {
|
|
2387
2461
|
removeOldSchemaData[key] = newOptionDefault;
|
|
2388
|
-
} else if ((0,
|
|
2462
|
+
} else if ((0, import_get15.default)(newKeyedSchema, "readOnly") === true) {
|
|
2389
2463
|
removeOldSchemaData[key] = void 0;
|
|
2390
2464
|
}
|
|
2391
2465
|
}
|
|
2392
|
-
const newOptionConst = (0,
|
|
2393
|
-
const oldOptionConst = (0,
|
|
2466
|
+
const newOptionConst = (0, import_get15.default)(newKeyedSchema, "const", NO_VALUE);
|
|
2467
|
+
const oldOptionConst = (0, import_get15.default)(oldKeyedSchema, "const", NO_VALUE);
|
|
2394
2468
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
2395
2469
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
2396
2470
|
}
|
|
@@ -2402,9 +2476,9 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2402
2476
|
...removeOldSchemaData,
|
|
2403
2477
|
...nestedData
|
|
2404
2478
|
};
|
|
2405
|
-
} else if ((0,
|
|
2406
|
-
let oldSchemaItems = (0,
|
|
2407
|
-
let newSchemaItems = (0,
|
|
2479
|
+
} else if ((0, import_get15.default)(oldSchema, "type") === "array" && (0, import_get15.default)(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2480
|
+
let oldSchemaItems = (0, import_get15.default)(oldSchema, "items");
|
|
2481
|
+
let newSchemaItems = (0, import_get15.default)(newSchema, "items");
|
|
2408
2482
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
2409
2483
|
if ((0, import_has5.default)(oldSchemaItems, REF_KEY)) {
|
|
2410
2484
|
oldSchemaItems = retrieveSchema(
|
|
@@ -2424,10 +2498,10 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2424
2498
|
experimental_customMergeAllOf
|
|
2425
2499
|
);
|
|
2426
2500
|
}
|
|
2427
|
-
const oldSchemaType = (0,
|
|
2428
|
-
const newSchemaType = (0,
|
|
2501
|
+
const oldSchemaType = (0, import_get15.default)(oldSchemaItems, "type");
|
|
2502
|
+
const newSchemaType = (0, import_get15.default)(newSchemaItems, "type");
|
|
2429
2503
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
2430
|
-
const maxItems = (0,
|
|
2504
|
+
const maxItems = (0, import_get15.default)(newSchema, "maxItems", -1);
|
|
2431
2505
|
if (newSchemaType === "object") {
|
|
2432
2506
|
newFormData = data.reduce((newValue, aValue) => {
|
|
2433
2507
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -2454,8 +2528,137 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2454
2528
|
return newFormData;
|
|
2455
2529
|
}
|
|
2456
2530
|
|
|
2531
|
+
// src/schema/toPathSchema.ts
|
|
2532
|
+
var import_get16 = __toESM(require("lodash/get"), 1);
|
|
2533
|
+
var import_isObject12 = __toESM(require("lodash/isObject"), 1);
|
|
2534
|
+
var import_set2 = __toESM(require("lodash/set"), 1);
|
|
2535
|
+
function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
2536
|
+
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema || IF_KEY in schema) {
|
|
2537
|
+
const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
2538
|
+
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals_default(item, _schema));
|
|
2539
|
+
if (sameSchemaIndex === -1) {
|
|
2540
|
+
return toPathSchemaInternal(
|
|
2541
|
+
validator,
|
|
2542
|
+
_schema,
|
|
2543
|
+
name,
|
|
2544
|
+
rootSchema,
|
|
2545
|
+
formData,
|
|
2546
|
+
_recurseList.concat(_schema),
|
|
2547
|
+
experimental_customMergeAllOf
|
|
2548
|
+
);
|
|
2549
|
+
}
|
|
2550
|
+
}
|
|
2551
|
+
let pathSchema = {
|
|
2552
|
+
[NAME_KEY]: name.replace(/^\./, "")
|
|
2553
|
+
};
|
|
2554
|
+
if (ONE_OF_KEY in schema || ANY_OF_KEY in schema) {
|
|
2555
|
+
const xxxOf = ONE_OF_KEY in schema ? schema.oneOf : schema.anyOf;
|
|
2556
|
+
const discriminator = getDiscriminatorFieldFromSchema(schema);
|
|
2557
|
+
const index = getClosestMatchingOption(
|
|
2558
|
+
validator,
|
|
2559
|
+
rootSchema,
|
|
2560
|
+
formData,
|
|
2561
|
+
xxxOf,
|
|
2562
|
+
0,
|
|
2563
|
+
discriminator,
|
|
2564
|
+
experimental_customMergeAllOf
|
|
2565
|
+
);
|
|
2566
|
+
const _schema = xxxOf[index];
|
|
2567
|
+
pathSchema = {
|
|
2568
|
+
...pathSchema,
|
|
2569
|
+
...toPathSchemaInternal(
|
|
2570
|
+
validator,
|
|
2571
|
+
_schema,
|
|
2572
|
+
name,
|
|
2573
|
+
rootSchema,
|
|
2574
|
+
formData,
|
|
2575
|
+
_recurseList,
|
|
2576
|
+
experimental_customMergeAllOf
|
|
2577
|
+
)
|
|
2578
|
+
};
|
|
2579
|
+
}
|
|
2580
|
+
if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
|
|
2581
|
+
(0, import_set2.default)(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
|
|
2582
|
+
const additionalSchema = (0, import_isObject12.default)(schema[ADDITIONAL_PROPERTIES_KEY]) ? schema[ADDITIONAL_PROPERTIES_KEY] : {};
|
|
2583
|
+
const definedProperties = (0, import_get16.default)(schema, PROPERTIES_KEY, {});
|
|
2584
|
+
for (const key of Object.keys(formData ?? {})) {
|
|
2585
|
+
if (!(key in definedProperties)) {
|
|
2586
|
+
pathSchema[key] = toPathSchemaInternal(
|
|
2587
|
+
validator,
|
|
2588
|
+
additionalSchema,
|
|
2589
|
+
`${name}.${key}`,
|
|
2590
|
+
rootSchema,
|
|
2591
|
+
(0, import_get16.default)(formData, [key]),
|
|
2592
|
+
_recurseList,
|
|
2593
|
+
experimental_customMergeAllOf
|
|
2594
|
+
);
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
2597
|
+
}
|
|
2598
|
+
if (ITEMS_KEY in schema && Array.isArray(formData)) {
|
|
2599
|
+
const { items: schemaItems, additionalItems: schemaAdditionalItems } = schema;
|
|
2600
|
+
if (Array.isArray(schemaItems)) {
|
|
2601
|
+
formData.forEach((element, i) => {
|
|
2602
|
+
if (schemaItems[i]) {
|
|
2603
|
+
pathSchema[i] = toPathSchemaInternal(
|
|
2604
|
+
validator,
|
|
2605
|
+
schemaItems[i],
|
|
2606
|
+
`${name}.${i}`,
|
|
2607
|
+
rootSchema,
|
|
2608
|
+
element,
|
|
2609
|
+
_recurseList,
|
|
2610
|
+
experimental_customMergeAllOf
|
|
2611
|
+
);
|
|
2612
|
+
} else if (schemaAdditionalItems) {
|
|
2613
|
+
pathSchema[i] = toPathSchemaInternal(
|
|
2614
|
+
validator,
|
|
2615
|
+
schemaAdditionalItems,
|
|
2616
|
+
`${name}.${i}`,
|
|
2617
|
+
rootSchema,
|
|
2618
|
+
element,
|
|
2619
|
+
_recurseList,
|
|
2620
|
+
experimental_customMergeAllOf
|
|
2621
|
+
);
|
|
2622
|
+
} else {
|
|
2623
|
+
console.warn(`Unable to generate path schema for "${name}.${i}". No schema defined for it`);
|
|
2624
|
+
}
|
|
2625
|
+
});
|
|
2626
|
+
} else {
|
|
2627
|
+
formData.forEach((element, i) => {
|
|
2628
|
+
pathSchema[i] = toPathSchemaInternal(
|
|
2629
|
+
validator,
|
|
2630
|
+
schemaItems,
|
|
2631
|
+
`${name}.${i}`,
|
|
2632
|
+
rootSchema,
|
|
2633
|
+
element,
|
|
2634
|
+
_recurseList,
|
|
2635
|
+
experimental_customMergeAllOf
|
|
2636
|
+
);
|
|
2637
|
+
});
|
|
2638
|
+
}
|
|
2639
|
+
} else if (PROPERTIES_KEY in schema) {
|
|
2640
|
+
for (const property in schema.properties) {
|
|
2641
|
+
const field = (0, import_get16.default)(schema, [PROPERTIES_KEY, property], {});
|
|
2642
|
+
pathSchema[property] = toPathSchemaInternal(
|
|
2643
|
+
validator,
|
|
2644
|
+
field,
|
|
2645
|
+
`${name}.${property}`,
|
|
2646
|
+
rootSchema,
|
|
2647
|
+
// It's possible that formData is not an object -- this can happen if an
|
|
2648
|
+
// array item has just been added, but not populated with data yet
|
|
2649
|
+
(0, import_get16.default)(formData, [property]),
|
|
2650
|
+
_recurseList,
|
|
2651
|
+
experimental_customMergeAllOf
|
|
2652
|
+
);
|
|
2653
|
+
}
|
|
2654
|
+
}
|
|
2655
|
+
return pathSchema;
|
|
2656
|
+
}
|
|
2657
|
+
function toPathSchema(validator, schema, name = "", rootSchema, formData, experimental_customMergeAllOf) {
|
|
2658
|
+
return toPathSchemaInternal(validator, schema, name, rootSchema, formData, void 0, experimental_customMergeAllOf);
|
|
2659
|
+
}
|
|
2660
|
+
|
|
2457
2661
|
// src/createSchemaUtils.ts
|
|
2458
|
-
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
2459
2662
|
var SchemaUtils = class {
|
|
2460
2663
|
/** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables
|
|
2461
2664
|
*
|
|
@@ -2795,31 +2998,6 @@ function dateRangeOptions(start, stop) {
|
|
|
2795
2998
|
return options;
|
|
2796
2999
|
}
|
|
2797
3000
|
|
|
2798
|
-
// src/shallowEquals.ts
|
|
2799
|
-
function shallowEquals(a, b) {
|
|
2800
|
-
if (Object.is(a, b)) {
|
|
2801
|
-
return true;
|
|
2802
|
-
}
|
|
2803
|
-
if (a == null || b == null) {
|
|
2804
|
-
return false;
|
|
2805
|
-
}
|
|
2806
|
-
if (typeof a !== "object" || typeof b !== "object") {
|
|
2807
|
-
return false;
|
|
2808
|
-
}
|
|
2809
|
-
const keysA = Object.keys(a);
|
|
2810
|
-
const keysB = Object.keys(b);
|
|
2811
|
-
if (keysA.length !== keysB.length) {
|
|
2812
|
-
return false;
|
|
2813
|
-
}
|
|
2814
|
-
for (let i = 0; i < keysA.length; i++) {
|
|
2815
|
-
const key = keysA[i];
|
|
2816
|
-
if (!Object.prototype.hasOwnProperty.call(b, key) || !Object.is(a[key], b[key])) {
|
|
2817
|
-
return false;
|
|
2818
|
-
}
|
|
2819
|
-
}
|
|
2820
|
-
return true;
|
|
2821
|
-
}
|
|
2822
|
-
|
|
2823
3001
|
// src/replaceStringParameters.ts
|
|
2824
3002
|
function replaceStringParameters(inputString, params) {
|
|
2825
3003
|
let output = inputString;
|
|
@@ -2836,9 +3014,28 @@ function replaceStringParameters(inputString, params) {
|
|
|
2836
3014
|
return output;
|
|
2837
3015
|
}
|
|
2838
3016
|
|
|
2839
|
-
// src/englishStringTranslator.ts
|
|
2840
|
-
function englishStringTranslator(stringToTranslate, params) {
|
|
2841
|
-
return replaceStringParameters(stringToTranslate, params);
|
|
3017
|
+
// src/englishStringTranslator.ts
|
|
3018
|
+
function englishStringTranslator(stringToTranslate, params) {
|
|
3019
|
+
return replaceStringParameters(stringToTranslate, params);
|
|
3020
|
+
}
|
|
3021
|
+
|
|
3022
|
+
// src/enumOptionsValueForIndex.ts
|
|
3023
|
+
function enumOptionsValueForIndex(valueIndex, allEnumOptions = [], emptyValue) {
|
|
3024
|
+
if (Array.isArray(valueIndex)) {
|
|
3025
|
+
return valueIndex.map((index2) => enumOptionsValueForIndex(index2, allEnumOptions)).filter((val) => val !== void 0);
|
|
3026
|
+
}
|
|
3027
|
+
const index = valueIndex === "" || valueIndex === null ? -1 : Number(valueIndex);
|
|
3028
|
+
const option = allEnumOptions[index];
|
|
3029
|
+
return option ? option.value : emptyValue;
|
|
3030
|
+
}
|
|
3031
|
+
|
|
3032
|
+
// src/enumOptionsDeselectValue.ts
|
|
3033
|
+
function enumOptionsDeselectValue(valueIndex, selected, allEnumOptions = []) {
|
|
3034
|
+
const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
|
|
3035
|
+
if (Array.isArray(selected)) {
|
|
3036
|
+
return selected.filter((v) => !deepEquals_default(v, value));
|
|
3037
|
+
}
|
|
3038
|
+
return deepEquals_default(value, selected) ? void 0 : selected;
|
|
2842
3039
|
}
|
|
2843
3040
|
|
|
2844
3041
|
// src/enumOptionsIsSelected.ts
|
|
@@ -2871,14 +3068,17 @@ function enumOptionSelectedValue(value, enumOptions, multiple, format = "indexed
|
|
|
2871
3068
|
return typeof indexes === "undefined" ? emptyValue : indexes;
|
|
2872
3069
|
}
|
|
2873
3070
|
|
|
2874
|
-
// src/
|
|
2875
|
-
|
|
2876
|
-
|
|
2877
|
-
|
|
3071
|
+
// src/enumOptionsSelectValue.ts
|
|
3072
|
+
var import_isNil3 = __toESM(require("lodash/isNil"), 1);
|
|
3073
|
+
function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
|
|
3074
|
+
const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
|
|
3075
|
+
if (!(0, import_isNil3.default)(value)) {
|
|
3076
|
+
const index = allEnumOptions.findIndex((opt) => value === opt.value);
|
|
3077
|
+
const all = allEnumOptions.map(({ value: val }) => val);
|
|
3078
|
+
const updated = selected.slice(0, index).concat(value, selected.slice(index));
|
|
3079
|
+
return updated.sort((a, b) => Number(all.indexOf(a) > all.indexOf(b)));
|
|
2878
3080
|
}
|
|
2879
|
-
|
|
2880
|
-
const option = allEnumOptions[index];
|
|
2881
|
-
return option ? option.value : emptyValue;
|
|
3081
|
+
return selected;
|
|
2882
3082
|
}
|
|
2883
3083
|
|
|
2884
3084
|
// src/enumOptionValueDecoder.ts
|
|
@@ -2907,12 +3107,12 @@ function enumOptionValueDecoder(value, enumOptions, format = "indexed", emptyVal
|
|
|
2907
3107
|
}
|
|
2908
3108
|
|
|
2909
3109
|
// src/enumOptionValueEncoder.ts
|
|
2910
|
-
var
|
|
3110
|
+
var import_isNil4 = __toESM(require("lodash/isNil"), 1);
|
|
2911
3111
|
function enumOptionValueEncoder(value, index, format = "indexed") {
|
|
2912
3112
|
if (format !== "realValue") {
|
|
2913
3113
|
return String(index);
|
|
2914
3114
|
}
|
|
2915
|
-
if ((0,
|
|
3115
|
+
if ((0, import_isNil4.default)(value)) {
|
|
2916
3116
|
return "";
|
|
2917
3117
|
}
|
|
2918
3118
|
if (typeof value === "object") {
|
|
@@ -2921,28 +3121,6 @@ function enumOptionValueEncoder(value, index, format = "indexed") {
|
|
|
2921
3121
|
return String(value);
|
|
2922
3122
|
}
|
|
2923
3123
|
|
|
2924
|
-
// src/enumOptionsDeselectValue.ts
|
|
2925
|
-
function enumOptionsDeselectValue(valueIndex, selected, allEnumOptions = []) {
|
|
2926
|
-
const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
|
|
2927
|
-
if (Array.isArray(selected)) {
|
|
2928
|
-
return selected.filter((v) => !deepEquals_default(v, value));
|
|
2929
|
-
}
|
|
2930
|
-
return deepEquals_default(value, selected) ? void 0 : selected;
|
|
2931
|
-
}
|
|
2932
|
-
|
|
2933
|
-
// src/enumOptionsSelectValue.ts
|
|
2934
|
-
var import_isNil3 = __toESM(require("lodash/isNil"), 1);
|
|
2935
|
-
function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
|
|
2936
|
-
const value = enumOptionsValueForIndex(valueIndex, allEnumOptions);
|
|
2937
|
-
if (!(0, import_isNil3.default)(value)) {
|
|
2938
|
-
const index = allEnumOptions.findIndex((opt) => value === opt.value);
|
|
2939
|
-
const all = allEnumOptions.map(({ value: val }) => val);
|
|
2940
|
-
const updated = selected.slice(0, index).concat(value, selected.slice(index));
|
|
2941
|
-
return updated.sort((a, b) => Number(all.indexOf(a) > all.indexOf(b)));
|
|
2942
|
-
}
|
|
2943
|
-
return selected;
|
|
2944
|
-
}
|
|
2945
|
-
|
|
2946
3124
|
// src/ErrorSchemaBuilder.ts
|
|
2947
3125
|
var import_cloneDeep = __toESM(require("lodash/cloneDeep"), 1);
|
|
2948
3126
|
var import_get18 = __toESM(require("lodash/get"), 1);
|
|
@@ -3041,11 +3219,11 @@ var ErrorSchemaBuilder = class {
|
|
|
3041
3219
|
};
|
|
3042
3220
|
|
|
3043
3221
|
// src/getChangedFields.ts
|
|
3222
|
+
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3223
|
+
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
3224
|
+
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3044
3225
|
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
3045
3226
|
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
3046
|
-
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3047
|
-
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
3048
|
-
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3049
3227
|
function getChangedFields(a, b) {
|
|
3050
3228
|
const aIsPlainObject = (0, import_isPlainObject2.default)(a);
|
|
3051
3229
|
const bIsPlainObject = (0, import_isPlainObject2.default)(b);
|
|
@@ -3187,7 +3365,7 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
3187
3365
|
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3188
3366
|
var import_uniqueId = __toESM(require("lodash/uniqueId"), 1);
|
|
3189
3367
|
function getTestIds() {
|
|
3190
|
-
if (
|
|
3368
|
+
if ((0, import_get20.default)(globalThis, "process.env.NODE_ENV") !== "test") {
|
|
3191
3369
|
return {};
|
|
3192
3370
|
}
|
|
3193
3371
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -3206,9 +3384,9 @@ function getTestIds() {
|
|
|
3206
3384
|
|
|
3207
3385
|
// src/getWidget.tsx
|
|
3208
3386
|
var import_react = require("react");
|
|
3209
|
-
var import_react_is = __toESM(require("react-is"), 1);
|
|
3210
3387
|
var import_get21 = __toESM(require("lodash/get"), 1);
|
|
3211
3388
|
var import_set4 = __toESM(require("lodash/set"), 1);
|
|
3389
|
+
var import_react_is = __toESM(require("react-is"), 1);
|
|
3212
3390
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
3213
3391
|
var widgetMap = {
|
|
3214
3392
|
boolean: {
|
|
@@ -3369,11 +3547,11 @@ function optionalControlsId(id, element) {
|
|
|
3369
3547
|
}
|
|
3370
3548
|
|
|
3371
3549
|
// src/isFormDataAvailable.ts
|
|
3372
|
-
var import_isNil4 = __toESM(require("lodash/isNil"), 1);
|
|
3373
3550
|
var import_isEmpty6 = __toESM(require("lodash/isEmpty"), 1);
|
|
3374
|
-
var
|
|
3551
|
+
var import_isNil5 = __toESM(require("lodash/isNil"), 1);
|
|
3552
|
+
var import_isObject13 = __toESM(require("lodash/isObject"), 1);
|
|
3375
3553
|
function isFormDataAvailable(formData) {
|
|
3376
|
-
return !(0,
|
|
3554
|
+
return !(0, import_isNil5.default)(formData) && (!(0, import_isObject13.default)(formData) || Array.isArray(formData) || !(0, import_isEmpty6.default)(formData));
|
|
3377
3555
|
}
|
|
3378
3556
|
|
|
3379
3557
|
// src/isRootSchema.ts
|
|
@@ -3411,80 +3589,25 @@ function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
|
3411
3589
|
return (0, import_get22.default)(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3412
3590
|
}
|
|
3413
3591
|
|
|
3414
|
-
// src/
|
|
3415
|
-
var
|
|
3416
|
-
|
|
3417
|
-
|
|
3418
|
-
return true;
|
|
3419
|
-
}
|
|
3420
|
-
if (Array.isArray(value)) {
|
|
3421
|
-
return value.length === 0;
|
|
3422
|
-
}
|
|
3423
|
-
if (isObject(value)) {
|
|
3424
|
-
const obj = value;
|
|
3425
|
-
const keys2 = Object.keys(obj);
|
|
3426
|
-
return keys2.every((key) => isValueEmpty(obj[key]));
|
|
3427
|
-
}
|
|
3428
|
-
return false;
|
|
3429
|
-
}
|
|
3430
|
-
function removeOptionalEmptyObjects(validator, schema, rootSchema, formData) {
|
|
3431
|
-
if (!isObject(schema)) {
|
|
3432
|
-
return formData;
|
|
3433
|
-
}
|
|
3434
|
-
const resolvedSchema = retrieveSchema(validator, schema, rootSchema, formData);
|
|
3435
|
-
if (Array.isArray(formData)) {
|
|
3436
|
-
const itemsSchema = resolvedSchema.items;
|
|
3437
|
-
if (!itemsSchema) {
|
|
3438
|
-
return formData;
|
|
3439
|
-
}
|
|
3440
|
-
let hasChanges = false;
|
|
3441
|
-
const mapped = formData.map((item, index) => {
|
|
3442
|
-
let itemSchema = itemsSchema;
|
|
3443
|
-
if (Array.isArray(itemsSchema)) {
|
|
3444
|
-
itemSchema = itemsSchema[index] || resolvedSchema.additionalItems || {};
|
|
3445
|
-
}
|
|
3446
|
-
const cleaned = removeOptionalEmptyObjects(validator, itemSchema, rootSchema, item);
|
|
3447
|
-
if (cleaned !== item) {
|
|
3448
|
-
hasChanges = true;
|
|
3449
|
-
}
|
|
3450
|
-
return cleaned === void 0 ? {} : cleaned;
|
|
3451
|
-
});
|
|
3452
|
-
return hasChanges ? mapped : formData;
|
|
3453
|
-
}
|
|
3454
|
-
const { properties, required: requiredFields = [] } = resolvedSchema;
|
|
3455
|
-
if (!isObject(formData) || !properties) {
|
|
3456
|
-
return formData;
|
|
3592
|
+
// src/nameGenerators.ts
|
|
3593
|
+
var bracketNameGenerator = (path, idPrefix, isMultiValue) => {
|
|
3594
|
+
if (!path || path.length === 0) {
|
|
3595
|
+
return idPrefix;
|
|
3457
3596
|
}
|
|
3458
|
-
const
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
for (const key of Object.keys(data)) {
|
|
3462
|
-
const value = data[key];
|
|
3463
|
-
const propertySchema = properties[key] || {};
|
|
3464
|
-
const isRequired = requiredFields.includes(key);
|
|
3465
|
-
const isObj = isObject(value);
|
|
3466
|
-
const isArr = Array.isArray(value);
|
|
3467
|
-
if ((isObj || isArr) && properties[key]) {
|
|
3468
|
-
const cleaned = removeOptionalEmptyObjects(validator, propertySchema, rootSchema, value);
|
|
3469
|
-
if (!isRequired && isValueEmpty(cleaned)) {
|
|
3470
|
-
continue;
|
|
3471
|
-
}
|
|
3472
|
-
result[key] = cleaned;
|
|
3473
|
-
hasAnyValue = true;
|
|
3474
|
-
} else if (!isRequired && isValueEmpty(value) && properties[key]) {
|
|
3475
|
-
continue;
|
|
3476
|
-
} else {
|
|
3477
|
-
result[key] = value;
|
|
3478
|
-
if (!isValueEmpty(value)) {
|
|
3479
|
-
hasAnyValue = true;
|
|
3480
|
-
}
|
|
3597
|
+
const baseName = path.reduce((acc, pathUnit, index) => {
|
|
3598
|
+
if (index === 0) {
|
|
3599
|
+
return `${idPrefix}[${String(pathUnit)}]`;
|
|
3481
3600
|
}
|
|
3601
|
+
return `${acc}[${String(pathUnit)}]`;
|
|
3602
|
+
}, "");
|
|
3603
|
+
return isMultiValue ? `${baseName}[]` : baseName;
|
|
3604
|
+
};
|
|
3605
|
+
var dotNotationNameGenerator = (path, idPrefix, _isMultiValue) => {
|
|
3606
|
+
if (!path || path.length === 0) {
|
|
3607
|
+
return idPrefix;
|
|
3482
3608
|
}
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
}
|
|
3486
|
-
return result;
|
|
3487
|
-
}
|
|
3609
|
+
return `${idPrefix}.${path.map(String).join(".")}`;
|
|
3610
|
+
};
|
|
3488
3611
|
|
|
3489
3612
|
// src/orderProperties.ts
|
|
3490
3613
|
function orderProperties(properties, order) {
|
|
@@ -3542,6 +3665,64 @@ function parseDateString(dateString, includeTime = true) {
|
|
|
3542
3665
|
};
|
|
3543
3666
|
}
|
|
3544
3667
|
|
|
3668
|
+
// src/removeOptionalEmptyObjects.ts
|
|
3669
|
+
function removeOptionalEmptyObjects(validator, schema, rootSchema, formData) {
|
|
3670
|
+
if (!isObject(schema)) {
|
|
3671
|
+
return formData;
|
|
3672
|
+
}
|
|
3673
|
+
const resolvedSchema = retrieveSchema(validator, schema, rootSchema, formData);
|
|
3674
|
+
if (Array.isArray(formData)) {
|
|
3675
|
+
const itemsSchema = resolvedSchema.items;
|
|
3676
|
+
if (!itemsSchema) {
|
|
3677
|
+
return formData;
|
|
3678
|
+
}
|
|
3679
|
+
let hasChanges = false;
|
|
3680
|
+
const mapped = formData.map((item, index) => {
|
|
3681
|
+
let itemSchema = itemsSchema;
|
|
3682
|
+
if (Array.isArray(itemsSchema)) {
|
|
3683
|
+
itemSchema = itemsSchema[index] || resolvedSchema.additionalItems || {};
|
|
3684
|
+
}
|
|
3685
|
+
const cleaned = removeOptionalEmptyObjects(validator, itemSchema, rootSchema, item);
|
|
3686
|
+
if (cleaned !== item) {
|
|
3687
|
+
hasChanges = true;
|
|
3688
|
+
}
|
|
3689
|
+
return cleaned === void 0 ? {} : cleaned;
|
|
3690
|
+
});
|
|
3691
|
+
return hasChanges ? mapped : formData;
|
|
3692
|
+
}
|
|
3693
|
+
const { properties, required: requiredFields = [] } = resolvedSchema;
|
|
3694
|
+
if (!isObject(formData) || !properties) {
|
|
3695
|
+
return formData;
|
|
3696
|
+
}
|
|
3697
|
+
const result = {};
|
|
3698
|
+
const data = formData;
|
|
3699
|
+
let hasAnyValue = false;
|
|
3700
|
+
for (const key of Object.keys(data)) {
|
|
3701
|
+
const value = data[key];
|
|
3702
|
+
const propertySchema = properties[key] || {};
|
|
3703
|
+
const isRequired = requiredFields.includes(key);
|
|
3704
|
+
const isObj = isObject(value);
|
|
3705
|
+
const isArr = Array.isArray(value);
|
|
3706
|
+
if ((isObj || isArr) && properties[key]) {
|
|
3707
|
+
const cleaned = removeOptionalEmptyObjects(validator, propertySchema, rootSchema, value);
|
|
3708
|
+
if (!isRequired && isValueEmpty(cleaned)) {
|
|
3709
|
+
continue;
|
|
3710
|
+
}
|
|
3711
|
+
result[key] = cleaned;
|
|
3712
|
+
hasAnyValue = true;
|
|
3713
|
+
} else if (isRequired || !isValueEmpty(value) || !properties[key]) {
|
|
3714
|
+
result[key] = value;
|
|
3715
|
+
if (!isValueEmpty(value)) {
|
|
3716
|
+
hasAnyValue = true;
|
|
3717
|
+
}
|
|
3718
|
+
}
|
|
3719
|
+
}
|
|
3720
|
+
if (!hasAnyValue && Object.keys(result).length === 0) {
|
|
3721
|
+
return void 0;
|
|
3722
|
+
}
|
|
3723
|
+
return result;
|
|
3724
|
+
}
|
|
3725
|
+
|
|
3545
3726
|
// src/resolveUiSchema.ts
|
|
3546
3727
|
var import_isEmpty7 = __toESM(require("lodash/isEmpty"), 1);
|
|
3547
3728
|
function resolveUiSchema(schema, localUiSchema, registry) {
|
|
@@ -3612,6 +3793,31 @@ function schemaRequiresTrueValue(schema) {
|
|
|
3612
3793
|
return false;
|
|
3613
3794
|
}
|
|
3614
3795
|
|
|
3796
|
+
// src/shallowEquals.ts
|
|
3797
|
+
function shallowEquals(a, b) {
|
|
3798
|
+
if (Object.is(a, b)) {
|
|
3799
|
+
return true;
|
|
3800
|
+
}
|
|
3801
|
+
if (a == null || b == null) {
|
|
3802
|
+
return false;
|
|
3803
|
+
}
|
|
3804
|
+
if (typeof a !== "object" || typeof b !== "object") {
|
|
3805
|
+
return false;
|
|
3806
|
+
}
|
|
3807
|
+
const keysA = Object.keys(a);
|
|
3808
|
+
const keysB = Object.keys(b);
|
|
3809
|
+
if (keysA.length !== keysB.length) {
|
|
3810
|
+
return false;
|
|
3811
|
+
}
|
|
3812
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
3813
|
+
const key = keysA[i];
|
|
3814
|
+
if (!Object.prototype.hasOwnProperty.call(b, key) || !Object.is(a[key], b[key])) {
|
|
3815
|
+
return false;
|
|
3816
|
+
}
|
|
3817
|
+
}
|
|
3818
|
+
return true;
|
|
3819
|
+
}
|
|
3820
|
+
|
|
3615
3821
|
// src/shouldRender.ts
|
|
3616
3822
|
function shouldRender(component, nextProps, nextState, updateStrategy = "customDeep") {
|
|
3617
3823
|
if (updateStrategy === "always") {
|
|
@@ -3626,11 +3832,11 @@ function shouldRender(component, nextProps, nextState, updateStrategy = "customD
|
|
|
3626
3832
|
}
|
|
3627
3833
|
|
|
3628
3834
|
// src/shouldRenderOptionalField.ts
|
|
3629
|
-
var
|
|
3835
|
+
var import_isObject15 = __toESM(require("lodash/isObject"), 1);
|
|
3630
3836
|
var import_uniq2 = __toESM(require("lodash/uniq"), 1);
|
|
3631
3837
|
function getSchemaTypesForXxxOf(schemas) {
|
|
3632
3838
|
const allTypes = (0, import_uniq2.default)(
|
|
3633
|
-
schemas.map((s) => (0,
|
|
3839
|
+
schemas.map((s) => (0, import_isObject15.default)(s) ? getSchemaType(s) : void 0).flat().filter((t) => t !== void 0)
|
|
3634
3840
|
);
|
|
3635
3841
|
return allTypes.length === 1 ? allTypes[0] : allTypes;
|
|
3636
3842
|
}
|
|
@@ -3912,15 +4118,14 @@ function useFileWidgetProps(value, onChange, multiple = false) {
|
|
|
3912
4118
|
[value]
|
|
3913
4119
|
);
|
|
3914
4120
|
const handleChange = (0, import_react4.useCallback)(
|
|
3915
|
-
(files) => {
|
|
3916
|
-
processFiles(files)
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
});
|
|
4121
|
+
async (files) => {
|
|
4122
|
+
const filesInfoEvent = await processFiles(files);
|
|
4123
|
+
const newValue = filesInfoEvent.map((fileInfo) => fileInfo.dataURL || null);
|
|
4124
|
+
if (multiple) {
|
|
4125
|
+
onChange(values.concat(...newValue));
|
|
4126
|
+
} else {
|
|
4127
|
+
onChange(newValue[0]);
|
|
4128
|
+
}
|
|
3924
4129
|
},
|
|
3925
4130
|
[values, multiple, onChange]
|
|
3926
4131
|
);
|
|
@@ -3975,7 +4180,7 @@ function validationDataMerge(validationData, additionalErrorSchema, preventDupli
|
|
|
3975
4180
|
}
|
|
3976
4181
|
|
|
3977
4182
|
// src/withIdRefPrefix.ts
|
|
3978
|
-
var
|
|
4183
|
+
var import_isObject16 = __toESM(require("lodash/isObject"), 1);
|
|
3979
4184
|
function withIdRefPrefixObject(node) {
|
|
3980
4185
|
for (const key in node) {
|
|
3981
4186
|
const realObj = node;
|
|
@@ -3998,32 +4203,12 @@ function withIdRefPrefix(schemaNode) {
|
|
|
3998
4203
|
if (Array.isArray(schemaNode)) {
|
|
3999
4204
|
return withIdRefPrefixArray([...schemaNode]);
|
|
4000
4205
|
}
|
|
4001
|
-
if ((0,
|
|
4206
|
+
if ((0, import_isObject16.default)(schemaNode)) {
|
|
4002
4207
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
4003
4208
|
}
|
|
4004
4209
|
return schemaNode;
|
|
4005
4210
|
}
|
|
4006
4211
|
|
|
4007
|
-
// src/nameGenerators.ts
|
|
4008
|
-
var bracketNameGenerator = (path, idPrefix, isMultiValue) => {
|
|
4009
|
-
if (!path || path.length === 0) {
|
|
4010
|
-
return idPrefix;
|
|
4011
|
-
}
|
|
4012
|
-
const baseName = path.reduce((acc, pathUnit, index) => {
|
|
4013
|
-
if (index === 0) {
|
|
4014
|
-
return `${idPrefix}[${String(pathUnit)}]`;
|
|
4015
|
-
}
|
|
4016
|
-
return `${acc}[${String(pathUnit)}]`;
|
|
4017
|
-
}, "");
|
|
4018
|
-
return isMultiValue ? `${baseName}[]` : baseName;
|
|
4019
|
-
};
|
|
4020
|
-
var dotNotationNameGenerator = (path, idPrefix, _isMultiValue) => {
|
|
4021
|
-
if (!path || path.length === 0) {
|
|
4022
|
-
return idPrefix;
|
|
4023
|
-
}
|
|
4024
|
-
return `${idPrefix}.${path.map(String).join(".")}`;
|
|
4025
|
-
};
|
|
4026
|
-
|
|
4027
4212
|
// src/enums.ts
|
|
4028
4213
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
4029
4214
|
TranslatableString2["ArrayItemTitle"] = "Item";
|