@rjsf/utils 5.20.1 → 5.21.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +154 -122
- package/dist/index.js.map +2 -2
- package/dist/utils.esm.js +154 -122
- package/dist/utils.esm.js.map +2 -2
- package/dist/utils.umd.js +154 -122
- package/lib/schema/getDefaultFormState.d.ts +39 -11
- package/lib/schema/getDefaultFormState.js +160 -125
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/schema/getDefaultFormState.ts +237 -156
package/dist/utils.esm.js
CHANGED
|
@@ -987,15 +987,16 @@ function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValu
|
|
|
987
987
|
}
|
|
988
988
|
}
|
|
989
989
|
}
|
|
990
|
-
function computeDefaults(validator, rawSchema, {
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
990
|
+
function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
991
|
+
const {
|
|
992
|
+
parentDefaults,
|
|
993
|
+
rawFormData,
|
|
994
|
+
rootSchema = {},
|
|
995
|
+
includeUndefinedValues = false,
|
|
996
|
+
_recurseList = [],
|
|
997
|
+
experimental_defaultFormStateBehavior = void 0,
|
|
998
|
+
required
|
|
999
|
+
} = computeDefaultsProps;
|
|
999
1000
|
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
1000
1001
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
1001
1002
|
let defaults = parentDefaults;
|
|
@@ -1012,7 +1013,11 @@ function computeDefaults(validator, rawSchema, {
|
|
|
1012
1013
|
schemaToCompute = findSchemaDefinition(refName, rootSchema);
|
|
1013
1014
|
}
|
|
1014
1015
|
} else if (DEPENDENCIES_KEY in schema) {
|
|
1015
|
-
const
|
|
1016
|
+
const defaultFormData = {
|
|
1017
|
+
...formData,
|
|
1018
|
+
...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults)
|
|
1019
|
+
};
|
|
1020
|
+
const resolvedSchema = resolveDependencies(validator, schema, rootSchema, false, [], defaultFormData);
|
|
1016
1021
|
schemaToCompute = resolvedSchema[0];
|
|
1017
1022
|
} else if (isFixedItems(schema)) {
|
|
1018
1023
|
defaults = schema.items.map(
|
|
@@ -1071,127 +1076,154 @@ function computeDefaults(validator, rawSchema, {
|
|
|
1071
1076
|
if (defaults === void 0) {
|
|
1072
1077
|
defaults = schema.default;
|
|
1073
1078
|
}
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
)
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
{}
|
|
1100
|
-
);
|
|
1101
|
-
if (retrievedSchema.additionalProperties) {
|
|
1102
|
-
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1103
|
-
const keys = /* @__PURE__ */ new Set();
|
|
1104
|
-
if (isObject(defaults)) {
|
|
1105
|
-
Object.keys(defaults).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => keys.add(key));
|
|
1106
|
-
}
|
|
1107
|
-
const formDataRequired = [];
|
|
1108
|
-
Object.keys(formData).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => {
|
|
1109
|
-
keys.add(key);
|
|
1110
|
-
formDataRequired.push(key);
|
|
1111
|
-
});
|
|
1112
|
-
keys.forEach((key) => {
|
|
1113
|
-
const computedDefault = computeDefaults(validator, additionalPropertiesSchema, {
|
|
1114
|
-
rootSchema,
|
|
1115
|
-
_recurseList,
|
|
1116
|
-
experimental_defaultFormStateBehavior,
|
|
1117
|
-
includeUndefinedValues: includeUndefinedValues === true,
|
|
1118
|
-
parentDefaults: get7(defaults, [key]),
|
|
1119
|
-
rawFormData: get7(formData, [key]),
|
|
1120
|
-
required: retrievedSchema.required?.includes(key)
|
|
1121
|
-
});
|
|
1122
|
-
maybeAddDefaultToObject(
|
|
1123
|
-
objectDefaults,
|
|
1124
|
-
key,
|
|
1125
|
-
computedDefault,
|
|
1126
|
-
includeUndefinedValues,
|
|
1127
|
-
required,
|
|
1128
|
-
formDataRequired
|
|
1129
|
-
);
|
|
1079
|
+
const defaultBasedOnSchemaType = getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults);
|
|
1080
|
+
return defaultBasedOnSchemaType ?? defaults;
|
|
1081
|
+
}
|
|
1082
|
+
function getObjectDefaults(validator, rawSchema, {
|
|
1083
|
+
rawFormData,
|
|
1084
|
+
rootSchema = {},
|
|
1085
|
+
includeUndefinedValues = false,
|
|
1086
|
+
_recurseList = [],
|
|
1087
|
+
experimental_defaultFormStateBehavior = void 0,
|
|
1088
|
+
required
|
|
1089
|
+
} = {}, defaults) {
|
|
1090
|
+
{
|
|
1091
|
+
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
1092
|
+
const schema = rawSchema;
|
|
1093
|
+
const retrievedSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator, schema, rootSchema, formData) : schema;
|
|
1094
|
+
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
|
|
1095
|
+
(acc, key) => {
|
|
1096
|
+
const computedDefault = computeDefaults(validator, get7(retrievedSchema, [PROPERTIES_KEY, key]), {
|
|
1097
|
+
rootSchema,
|
|
1098
|
+
_recurseList,
|
|
1099
|
+
experimental_defaultFormStateBehavior,
|
|
1100
|
+
includeUndefinedValues: includeUndefinedValues === true,
|
|
1101
|
+
parentDefaults: get7(defaults, [key]),
|
|
1102
|
+
rawFormData: get7(formData, [key]),
|
|
1103
|
+
required: retrievedSchema.required?.includes(key)
|
|
1130
1104
|
});
|
|
1105
|
+
maybeAddDefaultToObject(
|
|
1106
|
+
acc,
|
|
1107
|
+
key,
|
|
1108
|
+
computedDefault,
|
|
1109
|
+
includeUndefinedValues,
|
|
1110
|
+
required,
|
|
1111
|
+
retrievedSchema.required,
|
|
1112
|
+
experimental_defaultFormStateBehavior
|
|
1113
|
+
);
|
|
1114
|
+
return acc;
|
|
1115
|
+
},
|
|
1116
|
+
{}
|
|
1117
|
+
);
|
|
1118
|
+
if (retrievedSchema.additionalProperties) {
|
|
1119
|
+
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1120
|
+
const keys = /* @__PURE__ */ new Set();
|
|
1121
|
+
if (isObject(defaults)) {
|
|
1122
|
+
Object.keys(defaults).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => keys.add(key));
|
|
1131
1123
|
}
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
experimental_defaultFormStateBehavior,
|
|
1147
|
-
parentDefaults: item,
|
|
1148
|
-
required
|
|
1149
|
-
});
|
|
1124
|
+
const formDataRequired = [];
|
|
1125
|
+
Object.keys(formData).filter((key) => !retrievedSchema.properties || !retrievedSchema.properties[key]).forEach((key) => {
|
|
1126
|
+
keys.add(key);
|
|
1127
|
+
formDataRequired.push(key);
|
|
1128
|
+
});
|
|
1129
|
+
keys.forEach((key) => {
|
|
1130
|
+
const computedDefault = computeDefaults(validator, additionalPropertiesSchema, {
|
|
1131
|
+
rootSchema,
|
|
1132
|
+
_recurseList,
|
|
1133
|
+
experimental_defaultFormStateBehavior,
|
|
1134
|
+
includeUndefinedValues: includeUndefinedValues === true,
|
|
1135
|
+
parentDefaults: get7(defaults, [key]),
|
|
1136
|
+
rawFormData: get7(formData, [key]),
|
|
1137
|
+
required: retrievedSchema.required?.includes(key)
|
|
1150
1138
|
});
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
const
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1139
|
+
maybeAddDefaultToObject(
|
|
1140
|
+
objectDefaults,
|
|
1141
|
+
key,
|
|
1142
|
+
computedDefault,
|
|
1143
|
+
includeUndefinedValues,
|
|
1144
|
+
required,
|
|
1145
|
+
formDataRequired
|
|
1146
|
+
);
|
|
1147
|
+
});
|
|
1148
|
+
}
|
|
1149
|
+
return objectDefaults;
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
function getArrayDefaults(validator, rawSchema, {
|
|
1153
|
+
rawFormData,
|
|
1154
|
+
rootSchema = {},
|
|
1155
|
+
_recurseList = [],
|
|
1156
|
+
experimental_defaultFormStateBehavior = void 0,
|
|
1157
|
+
required
|
|
1158
|
+
} = {}, defaults) {
|
|
1159
|
+
const schema = rawSchema;
|
|
1160
|
+
const neverPopulate = experimental_defaultFormStateBehavior?.arrayMinItems?.populate === "never";
|
|
1161
|
+
const ignoreMinItemsFlagSet = experimental_defaultFormStateBehavior?.arrayMinItems?.populate === "requiredOnly";
|
|
1162
|
+
const isSkipEmptyDefaults = experimental_defaultFormStateBehavior?.emptyObjectFields === "skipEmptyDefaults";
|
|
1163
|
+
const computeSkipPopulate = experimental_defaultFormStateBehavior?.arrayMinItems?.computeSkipPopulate ?? (() => false);
|
|
1164
|
+
const emptyDefault = isSkipEmptyDefaults ? void 0 : [];
|
|
1165
|
+
if (Array.isArray(defaults)) {
|
|
1166
|
+
defaults = defaults.map((item, idx) => {
|
|
1167
|
+
const schemaItem = getInnerSchemaForArrayItem(schema, 2 /* Fallback */, idx);
|
|
1168
|
+
return computeDefaults(validator, schemaItem, {
|
|
1169
|
+
rootSchema,
|
|
1170
|
+
_recurseList,
|
|
1171
|
+
experimental_defaultFormStateBehavior,
|
|
1172
|
+
parentDefaults: item,
|
|
1173
|
+
required
|
|
1174
|
+
});
|
|
1175
|
+
});
|
|
1176
|
+
}
|
|
1177
|
+
if (Array.isArray(rawFormData)) {
|
|
1178
|
+
const schemaItem = getInnerSchemaForArrayItem(schema);
|
|
1179
|
+
if (neverPopulate) {
|
|
1180
|
+
defaults = rawFormData;
|
|
1181
|
+
} else {
|
|
1182
|
+
defaults = rawFormData.map((item, idx) => {
|
|
1183
|
+
return computeDefaults(validator, schemaItem, {
|
|
1185
1184
|
rootSchema,
|
|
1186
1185
|
_recurseList,
|
|
1187
1186
|
experimental_defaultFormStateBehavior,
|
|
1187
|
+
rawFormData: item,
|
|
1188
|
+
parentDefaults: get7(defaults, [idx]),
|
|
1188
1189
|
required
|
|
1189
|
-
})
|
|
1190
|
-
);
|
|
1191
|
-
|
|
1190
|
+
});
|
|
1191
|
+
});
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
if (neverPopulate) {
|
|
1195
|
+
return defaults ?? emptyDefault;
|
|
1196
|
+
}
|
|
1197
|
+
if (ignoreMinItemsFlagSet && !required) {
|
|
1198
|
+
return defaults ? defaults : void 0;
|
|
1199
|
+
}
|
|
1200
|
+
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1201
|
+
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1202
|
+
return defaults ? defaults : emptyDefault;
|
|
1203
|
+
}
|
|
1204
|
+
const defaultEntries = defaults || [];
|
|
1205
|
+
const fillerSchema = getInnerSchemaForArrayItem(schema, 1 /* Invert */);
|
|
1206
|
+
const fillerDefault = fillerSchema.default;
|
|
1207
|
+
const fillerEntries = new Array(schema.minItems - defaultsLength).fill(
|
|
1208
|
+
computeDefaults(validator, fillerSchema, {
|
|
1209
|
+
parentDefaults: fillerDefault,
|
|
1210
|
+
rootSchema,
|
|
1211
|
+
_recurseList,
|
|
1212
|
+
experimental_defaultFormStateBehavior,
|
|
1213
|
+
required
|
|
1214
|
+
})
|
|
1215
|
+
);
|
|
1216
|
+
return defaultEntries.concat(fillerEntries);
|
|
1217
|
+
}
|
|
1218
|
+
function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps = {}, defaults) {
|
|
1219
|
+
switch (getSchemaType(rawSchema)) {
|
|
1220
|
+
case "object": {
|
|
1221
|
+
return getObjectDefaults(validator, rawSchema, computeDefaultsProps, defaults);
|
|
1222
|
+
}
|
|
1223
|
+
case "array": {
|
|
1224
|
+
return getArrayDefaults(validator, rawSchema, computeDefaultsProps, defaults);
|
|
1192
1225
|
}
|
|
1193
1226
|
}
|
|
1194
|
-
return defaults;
|
|
1195
1227
|
}
|
|
1196
1228
|
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior) {
|
|
1197
1229
|
if (!isObject(theSchema)) {
|