@rjsf/utils 6.6.2 → 6.7.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/LICENSE.md +201 -0
- package/README.md +0 -4
- package/dist/index.cjs +246 -112
- package/dist/index.cjs.map +4 -4
- package/dist/utils.esm.js +246 -112
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +277 -140
- package/lib/SelectedOptionDescription.d.ts +4 -0
- package/lib/SelectedOptionDescription.js +24 -0
- package/lib/SelectedOptionDescription.js.map +1 -0
- package/lib/asNumber.d.ts +6 -5
- package/lib/asNumber.js +14 -9
- package/lib/asNumber.js.map +1 -1
- package/lib/constants.d.ts +8 -5
- package/lib/constants.js +10 -7
- package/lib/constants.js.map +1 -1
- package/lib/createSchemaUtils.js +1 -1
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/enums.d.ts +4 -0
- package/lib/enums.js +4 -0
- package/lib/enums.js.map +1 -1
- package/lib/getDecimalSeparator.d.ts +8 -0
- package/lib/getDecimalSeparator.js +23 -0
- package/lib/getDecimalSeparator.js.map +1 -0
- package/lib/getSubmitButtonOptions.js +1 -1
- package/lib/getSubmitButtonOptions.js.map +1 -1
- package/lib/getWidget.js +2 -1
- package/lib/getWidget.js.map +1 -1
- package/lib/hashForSchema.d.ts +2 -0
- package/lib/hashForSchema.js +3 -1
- package/lib/hashForSchema.js.map +1 -1
- package/lib/index.d.ts +6 -2
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/isFixedItems.d.ts +2 -2
- package/lib/isFixedItems.js +3 -3
- package/lib/isFixedItems.js.map +1 -1
- package/lib/isRootSchema.js +2 -3
- package/lib/isRootSchema.js.map +1 -1
- package/lib/logUnsupportedDefaultForEnum.d.ts +9 -0
- package/lib/logUnsupportedDefaultForEnum.js +18 -0
- package/lib/logUnsupportedDefaultForEnum.js.map +1 -0
- package/lib/mergeSchemas.js +8 -1
- package/lib/mergeSchemas.js.map +1 -1
- package/lib/optionsList.js +22 -21
- package/lib/optionsList.js.map +1 -1
- package/lib/resolveUiSchema.js.map +1 -1
- package/lib/schema/getDefaultFormState.d.ts +1 -1
- package/lib/schema/getDefaultFormState.js +53 -17
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.js +2 -3
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/omitExtraData.js +11 -0
- package/lib/schema/omitExtraData.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +5 -1
- package/lib/schema/retrieveSchema.js +49 -14
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/schemaRequiresTrueValue.js +4 -3
- package/lib/schemaRequiresTrueValue.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +24 -0
- package/lib/useAltDateWidgetProps.d.ts +1 -1
- package/lib/useFileWidgetProps.js +2 -2
- package/lib/useFileWidgetProps.js.map +1 -1
- package/package.json +19 -19
- package/src/SelectedOptionDescription.tsx +48 -0
- package/src/asNumber.ts +18 -9
- package/src/constants.ts +10 -7
- package/src/createSchemaUtils.ts +1 -1
- package/src/enums.ts +4 -0
- package/src/getDecimalSeparator.ts +20 -0
- package/src/getSubmitButtonOptions.ts +1 -1
- package/src/getWidget.tsx +1 -1
- package/src/hashForSchema.ts +3 -1
- package/src/index.ts +8 -0
- package/src/isFixedItems.ts +3 -3
- package/src/isRootSchema.ts +2 -4
- package/src/logUnsupportedDefaultForEnum.ts +28 -0
- package/src/mergeSchemas.ts +9 -2
- package/src/optionsList.ts +20 -22
- package/src/resolveUiSchema.ts +12 -4
- package/src/schema/getDefaultFormState.ts +79 -22
- package/src/schema/getDisplayLabel.ts +3 -4
- package/src/schema/omitExtraData.ts +11 -0
- package/src/schema/retrieveSchema.ts +59 -13
- package/src/schemaRequiresTrueValue.ts +3 -3
- package/src/types.ts +31 -0
- package/src/useFileWidgetProps.ts +2 -2
package/dist/index.cjs
CHANGED
|
@@ -61,10 +61,13 @@ __export(index_exports, {
|
|
|
61
61
|
REF_KEY: () => REF_KEY,
|
|
62
62
|
REQUIRED_KEY: () => REQUIRED_KEY,
|
|
63
63
|
RJSF_ADDITIONAL_PROPERTIES_FLAG: () => RJSF_ADDITIONAL_PROPERTIES_FLAG,
|
|
64
|
+
RJSF_PREFIX_KEY: () => RJSF_PREFIX_KEY,
|
|
65
|
+
RJSF_REF_CYCLE_KEY: () => RJSF_REF_CYCLE_KEY,
|
|
64
66
|
RJSF_REF_KEY: () => RJSF_REF_KEY,
|
|
65
67
|
ROOT_SCHEMA_PREFIX: () => ROOT_SCHEMA_PREFIX,
|
|
66
68
|
SCHEMA_KEY: () => SCHEMA_KEY,
|
|
67
69
|
SUBMIT_BTN_OPTIONS_KEY: () => SUBMIT_BTN_OPTIONS_KEY,
|
|
70
|
+
SelectedOptionDescription: () => SelectedOptionDescription,
|
|
68
71
|
TranslatableString: () => TranslatableString,
|
|
69
72
|
UI_DEFINITIONS_KEY: () => UI_DEFINITIONS_KEY,
|
|
70
73
|
UI_FIELD_KEY: () => UI_FIELD_KEY,
|
|
@@ -101,6 +104,7 @@ __export(index_exports, {
|
|
|
101
104
|
getChangedFields: () => getChangedFields,
|
|
102
105
|
getClosestMatchingOption: () => getClosestMatchingOption,
|
|
103
106
|
getDateElementProps: () => getDateElementProps,
|
|
107
|
+
getDecimalSeparator: () => getDecimalSeparator,
|
|
104
108
|
getDefaultFormState: () => getDefaultFormState,
|
|
105
109
|
getDiscriminatorFieldFromSchema: () => getDiscriminatorFieldFromSchema,
|
|
106
110
|
getDisplayLabel: () => getDisplayLabel,
|
|
@@ -135,6 +139,7 @@ __export(index_exports, {
|
|
|
135
139
|
isValueEmpty: () => isValueEmpty,
|
|
136
140
|
labelValue: () => labelValue,
|
|
137
141
|
localToUTC: () => localToUTC,
|
|
142
|
+
logUnsupportedDefaultForEnum: () => logUnsupportedDefaultForEnum,
|
|
138
143
|
lookupFromFormContext: () => lookupFromFormContext,
|
|
139
144
|
mergeDefaultsWithFormData: () => mergeDefaultsWithFormData,
|
|
140
145
|
mergeObjects: () => mergeObjects,
|
|
@@ -198,6 +203,20 @@ function allowAdditionalItems(schema) {
|
|
|
198
203
|
return isObject(schema.additionalItems);
|
|
199
204
|
}
|
|
200
205
|
|
|
206
|
+
// src/getDecimalSeparator.ts
|
|
207
|
+
function getDecimalSeparator(languages) {
|
|
208
|
+
const locales = languages || (typeof navigator !== "undefined" ? navigator.languages : void 0);
|
|
209
|
+
if (locales) {
|
|
210
|
+
try {
|
|
211
|
+
const formatter = new Intl.NumberFormat(locales);
|
|
212
|
+
const parts = formatter.formatToParts(1.1);
|
|
213
|
+
return parts.find((part) => part.type === "decimal")?.value || ".";
|
|
214
|
+
} catch (e) {
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
return ".";
|
|
218
|
+
}
|
|
219
|
+
|
|
201
220
|
// src/asNumber.ts
|
|
202
221
|
function asNumber(value) {
|
|
203
222
|
if (value === "") {
|
|
@@ -206,22 +225,24 @@ function asNumber(value) {
|
|
|
206
225
|
if (value === null) {
|
|
207
226
|
return null;
|
|
208
227
|
}
|
|
209
|
-
|
|
228
|
+
const separator = getDecimalSeparator();
|
|
229
|
+
const standardValue = typeof value === "string" && separator !== "." ? value.replace(separator, ".") : value;
|
|
230
|
+
if (/\.$/.test(standardValue)) {
|
|
210
231
|
return value;
|
|
211
232
|
}
|
|
212
|
-
if (/\.0$/.test(
|
|
233
|
+
if (/\.0$/.test(standardValue)) {
|
|
213
234
|
return value;
|
|
214
235
|
}
|
|
215
|
-
if (/\.\d*0$/.test(
|
|
236
|
+
if (/\.\d*0$/.test(standardValue)) {
|
|
216
237
|
return value;
|
|
217
238
|
}
|
|
218
|
-
const n = Number(
|
|
239
|
+
const n = Number(standardValue);
|
|
219
240
|
const valid = typeof n === "number" && !Number.isNaN(n);
|
|
220
241
|
return valid ? n : value;
|
|
221
242
|
}
|
|
222
243
|
|
|
223
244
|
// src/constants.ts
|
|
224
|
-
var ADDITIONAL_PROPERTY_FLAG = "__additional_property";
|
|
245
|
+
var ADDITIONAL_PROPERTY_FLAG = /* @__PURE__ */ Symbol("__additional_property");
|
|
225
246
|
var ADDITIONAL_PROPERTIES_KEY = "additionalProperties";
|
|
226
247
|
var ALL_OF_KEY = "allOf";
|
|
227
248
|
var ANY_OF_KEY = "anyOf";
|
|
@@ -243,15 +264,17 @@ var READONLY_KEY = "readonly";
|
|
|
243
264
|
var REQUIRED_KEY = "required";
|
|
244
265
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
245
266
|
var REF_KEY = "$ref";
|
|
246
|
-
var RJSF_REF_KEY = "__rjsf_ref";
|
|
267
|
+
var RJSF_REF_KEY = /* @__PURE__ */ Symbol("__rjsf_ref");
|
|
268
|
+
var RJSF_REF_CYCLE_KEY = /* @__PURE__ */ Symbol("__rjsf_ref_cycle");
|
|
247
269
|
var SCHEMA_KEY = "$schema";
|
|
248
270
|
var DEFAULT_ID_PREFIX = "root";
|
|
249
271
|
var DEFAULT_ID_SEPARATOR = "_";
|
|
250
272
|
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
251
273
|
var FORM_CONTEXT_NAME = "formContext";
|
|
252
274
|
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
253
|
-
var
|
|
254
|
-
var
|
|
275
|
+
var RJSF_PREFIX_KEY = "__rjsf";
|
|
276
|
+
var RJSF_ADDITIONAL_PROPERTIES_FLAG = `${RJSF_PREFIX_KEY}_additionalProperties`;
|
|
277
|
+
var ROOT_SCHEMA_PREFIX = `${RJSF_PREFIX_KEY}_rootSchema`;
|
|
255
278
|
var UI_FIELD_KEY = "ui:field";
|
|
256
279
|
var UI_WIDGET_KEY = "ui:widget";
|
|
257
280
|
var UI_OPTIONS_KEY = "ui:options";
|
|
@@ -322,7 +345,7 @@ function createErrorHandler(formData) {
|
|
|
322
345
|
}
|
|
323
346
|
|
|
324
347
|
// src/createSchemaUtils.ts
|
|
325
|
-
var
|
|
348
|
+
var import_get16 = __toESM(require("lodash/get"), 1);
|
|
326
349
|
|
|
327
350
|
// src/deepEquals.ts
|
|
328
351
|
var import_fast_equals = require("fast-equals");
|
|
@@ -526,7 +549,7 @@ function getSchemaType(schema) {
|
|
|
526
549
|
// src/mergeSchemas.ts
|
|
527
550
|
function mergeSchemas(obj1, obj2) {
|
|
528
551
|
const acc = { ...obj1 };
|
|
529
|
-
|
|
552
|
+
const result = Object.keys(obj2).reduce((accumulator, key) => {
|
|
530
553
|
const left = obj1 ? obj1[key] : {}, right = obj2[key];
|
|
531
554
|
if (obj1 && key in obj1 && isObject(right)) {
|
|
532
555
|
accumulator[key] = mergeSchemas(left, right);
|
|
@@ -537,6 +560,10 @@ function mergeSchemas(obj1, obj2) {
|
|
|
537
560
|
}
|
|
538
561
|
return accumulator;
|
|
539
562
|
}, acc);
|
|
563
|
+
for (const sym of Object.getOwnPropertySymbols(obj2)) {
|
|
564
|
+
result[sym] = obj2[sym];
|
|
565
|
+
}
|
|
566
|
+
return result;
|
|
540
567
|
}
|
|
541
568
|
|
|
542
569
|
// src/schema/getFirstMatchingOption.ts
|
|
@@ -638,6 +665,12 @@ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experim
|
|
|
638
665
|
resolveAnyOfOrOneOfRefs
|
|
639
666
|
)[0];
|
|
640
667
|
}
|
|
668
|
+
function normalizeBooleanSchema(schema) {
|
|
669
|
+
if (typeof schema !== "boolean") {
|
|
670
|
+
return schema;
|
|
671
|
+
}
|
|
672
|
+
return schema ? {} : { not: {} };
|
|
673
|
+
}
|
|
641
674
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
642
675
|
const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
|
|
643
676
|
const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
|
|
@@ -645,10 +678,11 @@ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
645
678
|
let schemas = [];
|
|
646
679
|
if (expandAllBranches) {
|
|
647
680
|
if (then && typeof then !== "boolean") {
|
|
681
|
+
const thenSchema = then;
|
|
648
682
|
schemas = schemas.concat(
|
|
649
683
|
retrieveSchemaInternal(
|
|
650
684
|
validator,
|
|
651
|
-
|
|
685
|
+
thenSchema,
|
|
652
686
|
rootSchema,
|
|
653
687
|
formData,
|
|
654
688
|
expandAllBranches,
|
|
@@ -658,10 +692,11 @@ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
658
692
|
);
|
|
659
693
|
}
|
|
660
694
|
if (otherwise && typeof otherwise !== "boolean") {
|
|
695
|
+
const otherwiseSchema = otherwise;
|
|
661
696
|
schemas = schemas.concat(
|
|
662
697
|
retrieveSchemaInternal(
|
|
663
698
|
validator,
|
|
664
|
-
|
|
699
|
+
otherwiseSchema,
|
|
665
700
|
rootSchema,
|
|
666
701
|
formData,
|
|
667
702
|
expandAllBranches,
|
|
@@ -671,8 +706,9 @@ function resolveCondition(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
671
706
|
);
|
|
672
707
|
}
|
|
673
708
|
} else {
|
|
674
|
-
const
|
|
675
|
-
if (
|
|
709
|
+
const conditionalBranch = conditionValue ? then : otherwise;
|
|
710
|
+
if (conditionalBranch !== void 0) {
|
|
711
|
+
const conditionalSchema = normalizeBooleanSchema(conditionalBranch);
|
|
676
712
|
schemas = schemas.concat(
|
|
677
713
|
retrieveSchemaInternal(
|
|
678
714
|
validator,
|
|
@@ -796,7 +832,7 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
796
832
|
}
|
|
797
833
|
return [schema];
|
|
798
834
|
}
|
|
799
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
835
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs, markCycleOnDetection = false) {
|
|
800
836
|
if (!isObject(schema)) {
|
|
801
837
|
return schema;
|
|
802
838
|
}
|
|
@@ -805,7 +841,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveA
|
|
|
805
841
|
if (REF_KEY in resolvedSchema) {
|
|
806
842
|
const { $ref, ...localSchema } = resolvedSchema;
|
|
807
843
|
if (recurseList.includes($ref)) {
|
|
808
|
-
return resolvedSchema;
|
|
844
|
+
return markCycleOnDetection ? { ...resolvedSchema, [RJSF_REF_CYCLE_KEY]: true } : resolvedSchema;
|
|
809
845
|
}
|
|
810
846
|
recurseList.push($ref);
|
|
811
847
|
const refSchema = findSchemaDefinition($ref, rootSchema, currentBaseURI);
|
|
@@ -820,7 +856,14 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveA
|
|
|
820
856
|
resolvedSchema[PROPERTIES_KEY],
|
|
821
857
|
(acc, value, key) => {
|
|
822
858
|
const childList = [...recurseList];
|
|
823
|
-
acc[key] = resolveAllReferences(
|
|
859
|
+
acc[key] = resolveAllReferences(
|
|
860
|
+
value,
|
|
861
|
+
rootSchema,
|
|
862
|
+
childList,
|
|
863
|
+
currentBaseURI,
|
|
864
|
+
resolveAnyOfOrOneOfRefs,
|
|
865
|
+
!resolveAnyOfOrOneOfRefs
|
|
866
|
+
);
|
|
824
867
|
childrenLists.push(childList);
|
|
825
868
|
},
|
|
826
869
|
{}
|
|
@@ -831,6 +874,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveA
|
|
|
831
874
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
832
875
|
resolvedSchema = {
|
|
833
876
|
...resolvedSchema,
|
|
877
|
+
// Array items are only rendered when data exists, so a $ref cycle here does NOT cause an infinite render.
|
|
834
878
|
items: resolveAllReferences(
|
|
835
879
|
resolvedSchema.items,
|
|
836
880
|
rootSchema,
|
|
@@ -881,7 +925,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
881
925
|
(0, import_get5.default)(formData, [key]),
|
|
882
926
|
experimental_customMergeAllOf
|
|
883
927
|
);
|
|
884
|
-
|
|
928
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
885
929
|
return;
|
|
886
930
|
}
|
|
887
931
|
}
|
|
@@ -893,7 +937,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
893
937
|
validator,
|
|
894
938
|
{ [REF_KEY]: (0, import_get5.default)(schema.additionalProperties, [REF_KEY]) },
|
|
895
939
|
rootSchema,
|
|
896
|
-
formData,
|
|
940
|
+
(0, import_get5.default)(formData, [key]),
|
|
897
941
|
experimental_customMergeAllOf
|
|
898
942
|
);
|
|
899
943
|
} else if ("type" in schema.additionalProperties) {
|
|
@@ -910,10 +954,10 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
910
954
|
additionalProperties = { type: guessType((0, import_get5.default)(formData, [key])) };
|
|
911
955
|
}
|
|
912
956
|
schema.properties[key] = additionalProperties;
|
|
913
|
-
|
|
957
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
914
958
|
} else {
|
|
915
959
|
schema.properties[key] = { type: "null" };
|
|
916
|
-
|
|
960
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
917
961
|
}
|
|
918
962
|
});
|
|
919
963
|
return schema;
|
|
@@ -956,17 +1000,26 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
956
1000
|
try {
|
|
957
1001
|
const withContainsSchemas = [];
|
|
958
1002
|
const withoutContainsSchemas = [];
|
|
1003
|
+
const allOfSymbols = {};
|
|
959
1004
|
resolvedSchema.allOf?.forEach((allOfItem) => {
|
|
960
1005
|
if (typeof allOfItem === "object" && allOfItem.contains) {
|
|
961
1006
|
withContainsSchemas.push(allOfItem);
|
|
962
1007
|
} else {
|
|
963
1008
|
withoutContainsSchemas.push(allOfItem);
|
|
1009
|
+
for (const sym of Object.getOwnPropertySymbols(allOfItem)) {
|
|
1010
|
+
if (!(sym in allOfSymbols)) {
|
|
1011
|
+
allOfSymbols[sym] = allOfItem[sym];
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
964
1014
|
}
|
|
965
1015
|
});
|
|
966
1016
|
if (withContainsSchemas.length) {
|
|
967
1017
|
resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
|
|
968
1018
|
}
|
|
969
1019
|
resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema);
|
|
1020
|
+
for (const sym of Object.getOwnPropertySymbols(allOfSymbols)) {
|
|
1021
|
+
resolvedSchema[sym] = allOfSymbols[sym];
|
|
1022
|
+
}
|
|
970
1023
|
if (withContainsSchemas.length) {
|
|
971
1024
|
resolvedSchema.allOf = withContainsSchemas;
|
|
972
1025
|
}
|
|
@@ -1035,7 +1088,7 @@ function resolveAnyOrOneOfSchemas(validator, schema, rootSchema, expandAllBranch
|
|
|
1035
1088
|
function relaxOptionsForScoring(options, resolveRefs = false, rootSchema) {
|
|
1036
1089
|
return options.map((d) => {
|
|
1037
1090
|
if (!isObject(d)) {
|
|
1038
|
-
return d
|
|
1091
|
+
return normalizeBooleanSchema(d);
|
|
1039
1092
|
}
|
|
1040
1093
|
const schema = resolveRefs && rootSchema ? resolveAllReferences(d, rootSchema, []) : d;
|
|
1041
1094
|
return schema.additionalProperties === false ? { ...schema, additionalProperties: true } : schema;
|
|
@@ -1149,7 +1202,7 @@ function withDependentSchema(validator, schema, rootSchema, dependencyKey, depen
|
|
|
1149
1202
|
}
|
|
1150
1203
|
function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
1151
1204
|
const validSubschemas = oneOf.filter((subschema) => {
|
|
1152
|
-
if (typeof subschema === "boolean" || !subschema
|
|
1205
|
+
if (typeof subschema === "boolean" || !subschema?.properties) {
|
|
1153
1206
|
return false;
|
|
1154
1207
|
}
|
|
1155
1208
|
const { [dependencyKey]: conditionPropertySchema } = subschema.properties;
|
|
@@ -1470,7 +1523,7 @@ function isConstant(schema) {
|
|
|
1470
1523
|
|
|
1471
1524
|
// src/isFixedItems.ts
|
|
1472
1525
|
function isFixedItems(schema) {
|
|
1473
|
-
return Array.isArray(schema.items) && schema.items.
|
|
1526
|
+
return Array.isArray(schema.items) && schema.items.every((item) => isObject(item));
|
|
1474
1527
|
}
|
|
1475
1528
|
|
|
1476
1529
|
// src/mergeDefaultsWithFormData.ts
|
|
@@ -1619,7 +1672,7 @@ function optionsList(schema, uiSchema) {
|
|
|
1619
1672
|
const { optionsSchemaSelector = selectorField } = getUiOptions(uiSchema);
|
|
1620
1673
|
selectorField = optionsSchemaSelector;
|
|
1621
1674
|
}
|
|
1622
|
-
return altSchemas
|
|
1675
|
+
return altSchemas?.map((aSchemaDef, index) => {
|
|
1623
1676
|
const { title } = getUiOptions(altUiSchemas?.[index]);
|
|
1624
1677
|
const aSchema = aSchemaDef;
|
|
1625
1678
|
let value;
|
|
@@ -1627,10 +1680,10 @@ function optionsList(schema, uiSchema) {
|
|
|
1627
1680
|
if (selectorField) {
|
|
1628
1681
|
const innerSchema = (0, import_get11.default)(aSchema, [PROPERTIES_KEY, selectorField], {});
|
|
1629
1682
|
value = (0, import_get11.default)(innerSchema, DEFAULT_KEY, (0, import_get11.default)(innerSchema, CONST_KEY));
|
|
1630
|
-
label = label
|
|
1683
|
+
label = label ?? innerSchema?.title ?? aSchema.title ?? String(value);
|
|
1631
1684
|
} else {
|
|
1632
1685
|
value = toConstant(aSchema);
|
|
1633
|
-
label = label
|
|
1686
|
+
label = label ?? aSchema.title ?? String(value);
|
|
1634
1687
|
}
|
|
1635
1688
|
return {
|
|
1636
1689
|
schema: aSchema,
|
|
@@ -1720,8 +1773,8 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1720
1773
|
rootSchema = {},
|
|
1721
1774
|
includeUndefinedValues = false,
|
|
1722
1775
|
_recurseList = [],
|
|
1723
|
-
experimental_defaultFormStateBehavior
|
|
1724
|
-
experimental_customMergeAllOf
|
|
1776
|
+
experimental_defaultFormStateBehavior,
|
|
1777
|
+
experimental_customMergeAllOf,
|
|
1725
1778
|
required,
|
|
1726
1779
|
shouldMergeDefaultsIntoFormData = false,
|
|
1727
1780
|
initialDefaultsGenerated
|
|
@@ -1729,14 +1782,19 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1729
1782
|
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1730
1783
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
1731
1784
|
let defaults = parentDefaults;
|
|
1785
|
+
const preferParentDefaults = defaults && experimental_defaultFormStateBehavior?.nestedDefaultsPrecedence === "ancestorWins";
|
|
1732
1786
|
let schemaToCompute = null;
|
|
1733
1787
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
1734
1788
|
let updatedRecurseList = _recurseList;
|
|
1735
1789
|
if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1736
1790
|
defaults = schema[CONST_KEY];
|
|
1737
1791
|
} else if (isObject(defaults) && isObject(schema.default) && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
|
|
1738
|
-
|
|
1739
|
-
|
|
1792
|
+
if (preferParentDefaults) {
|
|
1793
|
+
defaults = mergeObjects(schema.default, defaults);
|
|
1794
|
+
} else {
|
|
1795
|
+
defaults = mergeObjects(defaults, schema.default);
|
|
1796
|
+
}
|
|
1797
|
+
} else if (DEFAULT_KEY in schema && !preferParentDefaults && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
|
|
1740
1798
|
defaults = schema.default;
|
|
1741
1799
|
} else if (REF_KEY in schema) {
|
|
1742
1800
|
const refName = schema[REF_KEY];
|
|
@@ -1766,7 +1824,7 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1766
1824
|
experimental_customMergeAllOf
|
|
1767
1825
|
);
|
|
1768
1826
|
[schemaToCompute] = resolvedSchema;
|
|
1769
|
-
} else if (isFixedItems(schema)) {
|
|
1827
|
+
} else if (isFixedItems(schema) && !preferParentDefaults) {
|
|
1770
1828
|
defaults = schema.items.map(
|
|
1771
1829
|
(itemSchema, idx) => computeDefaults(validator, itemSchema, {
|
|
1772
1830
|
rootSchema,
|
|
@@ -1862,16 +1920,36 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1862
1920
|
return defaultsWithFormData;
|
|
1863
1921
|
}
|
|
1864
1922
|
function ensureFormDataMatchingSchema(validator, schema, rootSchema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
1865
|
-
const
|
|
1923
|
+
const shouldRetrieveAllOf = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema;
|
|
1924
|
+
const schemaToMatch = shouldRetrieveAllOf ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
|
|
1925
|
+
const isSelectField = !isConstant(schemaToMatch) && isSelect(validator, schemaToMatch, rootSchema, experimental_customMergeAllOf);
|
|
1866
1926
|
let validFormData = formData;
|
|
1867
1927
|
if (isSelectField) {
|
|
1868
|
-
const getOptionsList = optionsList(
|
|
1928
|
+
const getOptionsList = optionsList(schemaToMatch);
|
|
1869
1929
|
const isValid = getOptionsList?.some((option) => deepEquals_default(option.value, formData));
|
|
1870
1930
|
validFormData = isValid ? formData : void 0;
|
|
1871
1931
|
}
|
|
1872
|
-
const constTakesPrecedence =
|
|
1932
|
+
const constTakesPrecedence = schemaToMatch[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults === "always";
|
|
1873
1933
|
if (constTakesPrecedence) {
|
|
1874
|
-
validFormData =
|
|
1934
|
+
validFormData = schemaToMatch.const;
|
|
1935
|
+
} else if (isObject(validFormData) && isObject(schemaToMatch.properties)) {
|
|
1936
|
+
validFormData = Object.keys(schemaToMatch.properties).reduce(
|
|
1937
|
+
(acc, key) => {
|
|
1938
|
+
const propertySchema = (0, import_get12.default)(schemaToMatch, [PROPERTIES_KEY, key], {});
|
|
1939
|
+
if (key in acc && (shouldRetrieveAllOf || isObject(propertySchema) && ALL_OF_KEY in propertySchema)) {
|
|
1940
|
+
acc[key] = ensureFormDataMatchingSchema(
|
|
1941
|
+
validator,
|
|
1942
|
+
propertySchema,
|
|
1943
|
+
rootSchema,
|
|
1944
|
+
(0, import_get12.default)(acc, key),
|
|
1945
|
+
experimental_defaultFormStateBehavior,
|
|
1946
|
+
experimental_customMergeAllOf
|
|
1947
|
+
);
|
|
1948
|
+
}
|
|
1949
|
+
return acc;
|
|
1950
|
+
},
|
|
1951
|
+
{ ...validFormData }
|
|
1952
|
+
);
|
|
1875
1953
|
}
|
|
1876
1954
|
return validFormData;
|
|
1877
1955
|
}
|
|
@@ -1880,8 +1958,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1880
1958
|
rootSchema = {},
|
|
1881
1959
|
includeUndefinedValues = false,
|
|
1882
1960
|
_recurseList = [],
|
|
1883
|
-
experimental_defaultFormStateBehavior
|
|
1884
|
-
experimental_customMergeAllOf
|
|
1961
|
+
experimental_defaultFormStateBehavior,
|
|
1962
|
+
experimental_customMergeAllOf,
|
|
1885
1963
|
required,
|
|
1886
1964
|
shouldMergeDefaultsIntoFormData,
|
|
1887
1965
|
initialDefaultsGenerated
|
|
@@ -1965,8 +2043,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1965
2043
|
rawFormData,
|
|
1966
2044
|
rootSchema = {},
|
|
1967
2045
|
_recurseList = [],
|
|
1968
|
-
experimental_defaultFormStateBehavior
|
|
1969
|
-
experimental_customMergeAllOf
|
|
2046
|
+
experimental_defaultFormStateBehavior,
|
|
2047
|
+
experimental_customMergeAllOf,
|
|
1970
2048
|
required,
|
|
1971
2049
|
requiredAsRoot = false,
|
|
1972
2050
|
shouldMergeDefaultsIntoFormData,
|
|
@@ -2021,14 +2099,17 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
2021
2099
|
defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);
|
|
2022
2100
|
}
|
|
2023
2101
|
}
|
|
2102
|
+
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
2024
2103
|
if (neverPopulate) {
|
|
2104
|
+
if (shouldMergeDefaultsIntoFormData && !required) {
|
|
2105
|
+
return defaults;
|
|
2106
|
+
}
|
|
2025
2107
|
return defaults ?? emptyDefault;
|
|
2026
2108
|
}
|
|
2027
2109
|
if (ignoreMinItemsFlagSet && !required) {
|
|
2028
2110
|
return defaults || void 0;
|
|
2029
2111
|
}
|
|
2030
2112
|
let arrayDefault;
|
|
2031
|
-
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
2032
2113
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
2033
2114
|
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
2034
2115
|
} else {
|
|
@@ -2088,9 +2169,17 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
2088
2169
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
2089
2170
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
2090
2171
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
|
|
2172
|
+
const matchingFormData = ensureFormDataMatchingSchema(
|
|
2173
|
+
validator,
|
|
2174
|
+
schema,
|
|
2175
|
+
rootSchema ?? schema,
|
|
2176
|
+
formData,
|
|
2177
|
+
experimental_defaultFormStateBehavior,
|
|
2178
|
+
experimental_customMergeAllOf
|
|
2179
|
+
);
|
|
2091
2180
|
const result = mergeDefaultsWithFormData(
|
|
2092
2181
|
defaults,
|
|
2093
|
-
|
|
2182
|
+
matchingFormData,
|
|
2094
2183
|
true,
|
|
2095
2184
|
// set to true to add any additional default array entries.
|
|
2096
2185
|
defaultSupercedesUndefined,
|
|
@@ -2102,9 +2191,6 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
2102
2191
|
return defaults;
|
|
2103
2192
|
}
|
|
2104
2193
|
|
|
2105
|
-
// src/schema/getDisplayLabel.ts
|
|
2106
|
-
var import_get13 = __toESM(require("lodash/get"), 1);
|
|
2107
|
-
|
|
2108
2194
|
// src/isCustomWidget.ts
|
|
2109
2195
|
function isCustomWidget(uiSchema = {}) {
|
|
2110
2196
|
return (
|
|
@@ -2139,7 +2225,7 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
2139
2225
|
let displayLabel = Boolean(label);
|
|
2140
2226
|
if (displayLabel) {
|
|
2141
2227
|
const schemaType = getSchemaType(schema);
|
|
2142
|
-
const addedByAdditionalProperty = (
|
|
2228
|
+
const addedByAdditionalProperty = Boolean(schema[ADDITIONAL_PROPERTY_FLAG]);
|
|
2143
2229
|
if (schemaType === "array") {
|
|
2144
2230
|
displayLabel = addedByAdditionalProperty || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || isFilesArray(validator, schema, uiSchema, rootSchema, experimental_customMergeAllOf) || isCustomWidget(uiSchema);
|
|
2145
2231
|
}
|
|
@@ -2149,7 +2235,7 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
2149
2235
|
if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
|
|
2150
2236
|
displayLabel = false;
|
|
2151
2237
|
}
|
|
2152
|
-
if (uiSchema
|
|
2238
|
+
if (uiSchema?.[UI_FIELD_KEY]) {
|
|
2153
2239
|
displayLabel = false;
|
|
2154
2240
|
}
|
|
2155
2241
|
}
|
|
@@ -2157,7 +2243,7 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
2157
2243
|
}
|
|
2158
2244
|
|
|
2159
2245
|
// src/schema/omitExtraData.ts
|
|
2160
|
-
var
|
|
2246
|
+
var import_get13 = __toESM(require("lodash/get"), 1);
|
|
2161
2247
|
var import_isEmpty5 = __toESM(require("lodash/isEmpty"), 1);
|
|
2162
2248
|
var import_isNil2 = __toESM(require("lodash/isNil"), 1);
|
|
2163
2249
|
var import_pick = __toESM(require("lodash/pick"), 1);
|
|
@@ -2186,7 +2272,7 @@ function getFieldNames(pathSchema, formData) {
|
|
|
2186
2272
|
}
|
|
2187
2273
|
} else if (key === NAME_KEY && data !== "") {
|
|
2188
2274
|
paths.forEach((path) => {
|
|
2189
|
-
const formValue = (0,
|
|
2275
|
+
const formValue = (0, import_get13.default)(formData, path);
|
|
2190
2276
|
const isLeaf = objKeys.length === 1;
|
|
2191
2277
|
if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
|
|
2192
2278
|
acc.push(path);
|
|
@@ -2224,7 +2310,7 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2224
2310
|
const { properties, additionalProperties, patternProperties, propertyNames } = childSchema;
|
|
2225
2311
|
const requiredSet = new Set(childSchema.required ?? []);
|
|
2226
2312
|
function setProperty(key, schemaDef, value, required = false) {
|
|
2227
|
-
const v =
|
|
2313
|
+
const v = omit2(schemaDef, value, target[key]);
|
|
2228
2314
|
if (!required && isObject(v)) {
|
|
2229
2315
|
let sd = isSchemaObj(schemaDef) ? schemaDef : {};
|
|
2230
2316
|
if (sd.$ref !== void 0) {
|
|
@@ -2293,17 +2379,17 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2293
2379
|
if (items !== void 0) {
|
|
2294
2380
|
if (Array.isArray(items)) {
|
|
2295
2381
|
for (let i = 0; i < items.length; i += 1) {
|
|
2296
|
-
target.push(
|
|
2382
|
+
target.push(omit2(items[i], source[i]));
|
|
2297
2383
|
}
|
|
2298
2384
|
} else {
|
|
2299
2385
|
for (let i = 0; i < source.length; i += 1) {
|
|
2300
|
-
target.push(
|
|
2386
|
+
target.push(omit2(items, source[i]));
|
|
2301
2387
|
}
|
|
2302
2388
|
}
|
|
2303
2389
|
}
|
|
2304
2390
|
if (additionalItems) {
|
|
2305
2391
|
for (let i = target.length; i < source.length; i += 1) {
|
|
2306
|
-
target.push(
|
|
2392
|
+
target.push(omit2(additionalItems, source[i]));
|
|
2307
2393
|
}
|
|
2308
2394
|
}
|
|
2309
2395
|
return target;
|
|
@@ -2315,7 +2401,7 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2315
2401
|
}
|
|
2316
2402
|
const isThenBranch = isSchemaObj(condition) ? validator.isValid(condition, source, rootSchema) : condition;
|
|
2317
2403
|
const branch = isThenBranch ? then : otherwise;
|
|
2318
|
-
return branch === void 0 ? target :
|
|
2404
|
+
return branch === void 0 ? target : omit2(branch, source, target);
|
|
2319
2405
|
}
|
|
2320
2406
|
function handleOneOf(oneOf, childSchema, source, target) {
|
|
2321
2407
|
if (!Array.isArray(oneOf) || isSelect(validator, childSchema, rootSchema, experimental_customMergeAllOf)) {
|
|
@@ -2333,7 +2419,7 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2333
2419
|
);
|
|
2334
2420
|
const winning = oneOf[bestIndex];
|
|
2335
2421
|
const resolved = isObject(winning) ? resolveAllReferences(winning, rootSchema, []) : scoringOptions[bestIndex];
|
|
2336
|
-
return
|
|
2422
|
+
return omit2(resolved, source, target);
|
|
2337
2423
|
}
|
|
2338
2424
|
function handleAnyOf(childSchema, source, target) {
|
|
2339
2425
|
const { anyOf } = childSchema;
|
|
@@ -2343,7 +2429,7 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2343
2429
|
if (source === void 0 || Array.isArray(source) && source.length === 0 || isObject(source) && Object.keys(source).length === 0) {
|
|
2344
2430
|
let result = target;
|
|
2345
2431
|
for (const branch of anyOf) {
|
|
2346
|
-
result =
|
|
2432
|
+
result = omit2(branch, source, result);
|
|
2347
2433
|
}
|
|
2348
2434
|
return result;
|
|
2349
2435
|
}
|
|
@@ -2357,12 +2443,12 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2357
2443
|
let result = target;
|
|
2358
2444
|
for (const [key, deps] of Object.entries(dependencies)) {
|
|
2359
2445
|
if (key in source && !Array.isArray(deps)) {
|
|
2360
|
-
result =
|
|
2446
|
+
result = omit2(deps, source, result);
|
|
2361
2447
|
}
|
|
2362
2448
|
}
|
|
2363
2449
|
return result;
|
|
2364
2450
|
}
|
|
2365
|
-
function
|
|
2451
|
+
function omit2(schemaDef, source, target) {
|
|
2366
2452
|
if (source === void 0 || schemaDef === false) {
|
|
2367
2453
|
return void 0;
|
|
2368
2454
|
}
|
|
@@ -2372,10 +2458,16 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2372
2458
|
let localSchema = schemaDef;
|
|
2373
2459
|
const { $ref: ref, allOf } = localSchema;
|
|
2374
2460
|
if (ref !== void 0) {
|
|
2375
|
-
return
|
|
2461
|
+
return omit2(findSchemaDefinition(ref, rootSchema), source, target);
|
|
2376
2462
|
}
|
|
2377
2463
|
if (allOf) {
|
|
2378
2464
|
localSchema = doMergeAllOf(localSchema, experimental_customMergeAllOf);
|
|
2465
|
+
const remainingAllOf = localSchema.allOf;
|
|
2466
|
+
if (remainingAllOf) {
|
|
2467
|
+
for (let i = 0; i < remainingAllOf.length; i++) {
|
|
2468
|
+
target = omit2(remainingAllOf[i], source, target);
|
|
2469
|
+
}
|
|
2470
|
+
}
|
|
2379
2471
|
}
|
|
2380
2472
|
let filtered = handleAnyOf(localSchema, source, handleOneOf(localSchema.oneOf, localSchema, source, target));
|
|
2381
2473
|
const type = getSchemaType(localSchema);
|
|
@@ -2394,11 +2486,11 @@ function omitExtraData(validator, schema, rootSchema = {}, formData, experimenta
|
|
|
2394
2486
|
}
|
|
2395
2487
|
return handleDependencies(localSchema, source, handleConditions(localSchema, source, filtered));
|
|
2396
2488
|
}
|
|
2397
|
-
return
|
|
2489
|
+
return omit2(schema, formData);
|
|
2398
2490
|
}
|
|
2399
2491
|
|
|
2400
2492
|
// src/schema/sanitizeDataForNewSchema.ts
|
|
2401
|
-
var
|
|
2493
|
+
var import_get14 = __toESM(require("lodash/get"), 1);
|
|
2402
2494
|
var import_has5 = __toESM(require("lodash/has"), 1);
|
|
2403
2495
|
var NO_VALUE = /* @__PURE__ */ Symbol("no Value");
|
|
2404
2496
|
function enumValuesForSchema(schema) {
|
|
@@ -2422,7 +2514,7 @@ function replacementForInvalidEnumValue(schema, formValue) {
|
|
|
2422
2514
|
if (!enumValues || enumValues.some((value) => deepEquals_default(value, formValue))) {
|
|
2423
2515
|
return NO_VALUE;
|
|
2424
2516
|
}
|
|
2425
|
-
const defaultValue = (0,
|
|
2517
|
+
const defaultValue = (0, import_get14.default)(schema, DEFAULT_KEY, NO_VALUE);
|
|
2426
2518
|
if (defaultValue !== NO_VALUE && enumValues.some((value) => deepEquals_default(value, defaultValue))) {
|
|
2427
2519
|
return defaultValue;
|
|
2428
2520
|
}
|
|
@@ -2433,19 +2525,19 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2433
2525
|
if ((0, import_has5.default)(newSchema, PROPERTIES_KEY)) {
|
|
2434
2526
|
const removeOldSchemaData = {};
|
|
2435
2527
|
if ((0, import_has5.default)(oldSchema, PROPERTIES_KEY)) {
|
|
2436
|
-
const properties = (0,
|
|
2528
|
+
const properties = (0, import_get14.default)(oldSchema, PROPERTIES_KEY, {});
|
|
2437
2529
|
Object.keys(properties).forEach((key) => {
|
|
2438
2530
|
if ((0, import_has5.default)(data, key)) {
|
|
2439
2531
|
removeOldSchemaData[key] = void 0;
|
|
2440
2532
|
}
|
|
2441
2533
|
});
|
|
2442
2534
|
}
|
|
2443
|
-
const keys2 = Object.keys((0,
|
|
2535
|
+
const keys2 = Object.keys((0, import_get14.default)(newSchema, PROPERTIES_KEY, {}));
|
|
2444
2536
|
const nestedData = {};
|
|
2445
2537
|
keys2.forEach((key) => {
|
|
2446
|
-
const formValue = (0,
|
|
2447
|
-
let oldKeyedSchema = (0,
|
|
2448
|
-
let newKeyedSchema = (0,
|
|
2538
|
+
const formValue = (0, import_get14.default)(data, key);
|
|
2539
|
+
let oldKeyedSchema = (0, import_get14.default)(oldSchema, [PROPERTIES_KEY, key], {});
|
|
2540
|
+
let newKeyedSchema = (0, import_get14.default)(newSchema, [PROPERTIES_KEY, key], {});
|
|
2449
2541
|
if ((0, import_has5.default)(oldKeyedSchema, REF_KEY)) {
|
|
2450
2542
|
oldKeyedSchema = retrieveSchema(
|
|
2451
2543
|
validator,
|
|
@@ -2464,8 +2556,8 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2464
2556
|
experimental_customMergeAllOf
|
|
2465
2557
|
);
|
|
2466
2558
|
}
|
|
2467
|
-
const oldSchemaTypeForKey = (0,
|
|
2468
|
-
const newSchemaTypeForKey = (0,
|
|
2559
|
+
const oldSchemaTypeForKey = (0, import_get14.default)(oldKeyedSchema, "type");
|
|
2560
|
+
const newSchemaTypeForKey = (0, import_get14.default)(newKeyedSchema, "type");
|
|
2469
2561
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
2470
2562
|
if ((0, import_has5.default)(removeOldSchemaData, key)) {
|
|
2471
2563
|
delete removeOldSchemaData[key];
|
|
@@ -2483,17 +2575,17 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2483
2575
|
nestedData[key] = itemData;
|
|
2484
2576
|
}
|
|
2485
2577
|
} else {
|
|
2486
|
-
const newOptionDefault = (0,
|
|
2487
|
-
const oldOptionDefault = (0,
|
|
2578
|
+
const newOptionDefault = (0, import_get14.default)(newKeyedSchema, DEFAULT_KEY, NO_VALUE);
|
|
2579
|
+
const oldOptionDefault = (0, import_get14.default)(oldKeyedSchema, DEFAULT_KEY, NO_VALUE);
|
|
2488
2580
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
2489
2581
|
if (oldOptionDefault === formValue) {
|
|
2490
2582
|
removeOldSchemaData[key] = newOptionDefault;
|
|
2491
|
-
} else if ((0,
|
|
2583
|
+
} else if ((0, import_get14.default)(newKeyedSchema, "readOnly") === true) {
|
|
2492
2584
|
removeOldSchemaData[key] = void 0;
|
|
2493
2585
|
}
|
|
2494
2586
|
}
|
|
2495
|
-
const newOptionConst = (0,
|
|
2496
|
-
const oldOptionConst = (0,
|
|
2587
|
+
const newOptionConst = (0, import_get14.default)(newKeyedSchema, CONST_KEY, NO_VALUE);
|
|
2588
|
+
const oldOptionConst = (0, import_get14.default)(oldKeyedSchema, CONST_KEY, NO_VALUE);
|
|
2497
2589
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
2498
2590
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
2499
2591
|
}
|
|
@@ -2511,9 +2603,9 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2511
2603
|
...removeOldSchemaData,
|
|
2512
2604
|
...nestedData
|
|
2513
2605
|
};
|
|
2514
|
-
} else if ((0,
|
|
2515
|
-
let oldSchemaItems = (0,
|
|
2516
|
-
let newSchemaItems = (0,
|
|
2606
|
+
} else if ((0, import_get14.default)(oldSchema, "type") === "array" && (0, import_get14.default)(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2607
|
+
let oldSchemaItems = (0, import_get14.default)(oldSchema, "items");
|
|
2608
|
+
let newSchemaItems = (0, import_get14.default)(newSchema, "items");
|
|
2517
2609
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
2518
2610
|
if ((0, import_has5.default)(oldSchemaItems, REF_KEY)) {
|
|
2519
2611
|
oldSchemaItems = retrieveSchema(
|
|
@@ -2533,10 +2625,10 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2533
2625
|
experimental_customMergeAllOf
|
|
2534
2626
|
);
|
|
2535
2627
|
}
|
|
2536
|
-
const oldSchemaType = (0,
|
|
2537
|
-
const newSchemaType = (0,
|
|
2628
|
+
const oldSchemaType = (0, import_get14.default)(oldSchemaItems, "type");
|
|
2629
|
+
const newSchemaType = (0, import_get14.default)(newSchemaItems, "type");
|
|
2538
2630
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
2539
|
-
const maxItems = (0,
|
|
2631
|
+
const maxItems = (0, import_get14.default)(newSchema, "maxItems", -1);
|
|
2540
2632
|
if (newSchemaType === "object") {
|
|
2541
2633
|
newFormData = data.reduce((newValue, aValue) => {
|
|
2542
2634
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -2566,7 +2658,7 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2566
2658
|
}
|
|
2567
2659
|
|
|
2568
2660
|
// src/schema/toPathSchema.ts
|
|
2569
|
-
var
|
|
2661
|
+
var import_get15 = __toESM(require("lodash/get"), 1);
|
|
2570
2662
|
var import_isObject12 = __toESM(require("lodash/isObject"), 1);
|
|
2571
2663
|
var import_set2 = __toESM(require("lodash/set"), 1);
|
|
2572
2664
|
function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
@@ -2617,7 +2709,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2617
2709
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
|
|
2618
2710
|
(0, import_set2.default)(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
|
|
2619
2711
|
const additionalSchema = (0, import_isObject12.default)(schema[ADDITIONAL_PROPERTIES_KEY]) ? schema[ADDITIONAL_PROPERTIES_KEY] : {};
|
|
2620
|
-
const definedProperties = (0,
|
|
2712
|
+
const definedProperties = (0, import_get15.default)(schema, PROPERTIES_KEY, {});
|
|
2621
2713
|
for (const key of Object.keys(formData ?? {})) {
|
|
2622
2714
|
if (!(key in definedProperties)) {
|
|
2623
2715
|
pathSchema[key] = toPathSchemaInternal(
|
|
@@ -2625,7 +2717,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2625
2717
|
additionalSchema,
|
|
2626
2718
|
`${name}.${key}`,
|
|
2627
2719
|
rootSchema,
|
|
2628
|
-
(0,
|
|
2720
|
+
(0, import_get15.default)(formData, [key]),
|
|
2629
2721
|
_recurseList,
|
|
2630
2722
|
experimental_customMergeAllOf
|
|
2631
2723
|
);
|
|
@@ -2675,7 +2767,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2675
2767
|
}
|
|
2676
2768
|
} else if (PROPERTIES_KEY in schema) {
|
|
2677
2769
|
for (const property in schema.properties) {
|
|
2678
|
-
const field = (0,
|
|
2770
|
+
const field = (0, import_get15.default)(schema, [PROPERTIES_KEY, property], {});
|
|
2679
2771
|
pathSchema[property] = toPathSchemaInternal(
|
|
2680
2772
|
validator,
|
|
2681
2773
|
field,
|
|
@@ -2683,7 +2775,7 @@ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _re
|
|
|
2683
2775
|
rootSchema,
|
|
2684
2776
|
// It's possible that formData is not an object -- this can happen if an
|
|
2685
2777
|
// array item has just been added, but not populated with data yet
|
|
2686
|
-
(0,
|
|
2778
|
+
(0, import_get15.default)(formData, [property]),
|
|
2687
2779
|
_recurseList,
|
|
2688
2780
|
experimental_customMergeAllOf
|
|
2689
2781
|
);
|
|
@@ -2705,8 +2797,8 @@ var SchemaUtils = class {
|
|
|
2705
2797
|
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
|
|
2706
2798
|
*/
|
|
2707
2799
|
constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2708
|
-
if (rootSchema
|
|
2709
|
-
this.rootSchema = makeAllReferencesAbsolute(rootSchema, (0,
|
|
2800
|
+
if (rootSchema?.[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
2801
|
+
this.rootSchema = makeAllReferencesAbsolute(rootSchema, (0, import_get16.default)(rootSchema, ID_KEY, "#"));
|
|
2710
2802
|
} else {
|
|
2711
2803
|
this.rootSchema = rootSchema;
|
|
2712
2804
|
}
|
|
@@ -3163,7 +3255,7 @@ function enumOptionValueEncoder(value, index, format = "indexed") {
|
|
|
3163
3255
|
|
|
3164
3256
|
// src/ErrorSchemaBuilder.ts
|
|
3165
3257
|
var import_cloneDeep = __toESM(require("lodash/cloneDeep"), 1);
|
|
3166
|
-
var
|
|
3258
|
+
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
3167
3259
|
var import_set3 = __toESM(require("lodash/set"), 1);
|
|
3168
3260
|
var import_setWith = __toESM(require("lodash/setWith"), 1);
|
|
3169
3261
|
var ErrorSchemaBuilder = class {
|
|
@@ -3192,7 +3284,7 @@ var ErrorSchemaBuilder = class {
|
|
|
3192
3284
|
*/
|
|
3193
3285
|
getOrCreateErrorBlock(pathOfError) {
|
|
3194
3286
|
const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
|
|
3195
|
-
let errorBlock = hasPath ? (0,
|
|
3287
|
+
let errorBlock = hasPath ? (0, import_get17.default)(this.errorSchema, pathOfError) : this.errorSchema;
|
|
3196
3288
|
if (!errorBlock && pathOfError) {
|
|
3197
3289
|
errorBlock = {};
|
|
3198
3290
|
(0, import_setWith.default)(this.errorSchema, pathOfError, errorBlock, Object);
|
|
@@ -3218,7 +3310,7 @@ var ErrorSchemaBuilder = class {
|
|
|
3218
3310
|
*/
|
|
3219
3311
|
addErrors(errorOrList, pathOfError) {
|
|
3220
3312
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
3221
|
-
let errorsList = (0,
|
|
3313
|
+
let errorsList = (0, import_get17.default)(errorBlock, ERRORS_KEY);
|
|
3222
3314
|
if (!Array.isArray(errorsList)) {
|
|
3223
3315
|
errorsList = [];
|
|
3224
3316
|
errorBlock[ERRORS_KEY] = errorsList;
|
|
@@ -3260,7 +3352,7 @@ var ErrorSchemaBuilder = class {
|
|
|
3260
3352
|
|
|
3261
3353
|
// src/getChangedFields.ts
|
|
3262
3354
|
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3263
|
-
var
|
|
3355
|
+
var import_get18 = __toESM(require("lodash/get"), 1);
|
|
3264
3356
|
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3265
3357
|
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
3266
3358
|
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
@@ -3276,7 +3368,7 @@ function getChangedFields(a, b) {
|
|
|
3276
3368
|
if (!aIsPlainObject && bIsPlainObject) {
|
|
3277
3369
|
return (0, import_keys.default)(b);
|
|
3278
3370
|
}
|
|
3279
|
-
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals_default(value, (0,
|
|
3371
|
+
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals_default(value, (0, import_get18.default)(b, key))));
|
|
3280
3372
|
const diffFields = (0, import_difference.default)((0, import_keys.default)(b), (0, import_keys.default)(a));
|
|
3281
3373
|
return [...unequalFields, ...diffFields];
|
|
3282
3374
|
}
|
|
@@ -3377,7 +3469,7 @@ var DEFAULT_OPTIONS = {
|
|
|
3377
3469
|
};
|
|
3378
3470
|
function getSubmitButtonOptions(uiSchema = {}) {
|
|
3379
3471
|
const uiOptions = getUiOptions(uiSchema);
|
|
3380
|
-
if (uiOptions
|
|
3472
|
+
if (uiOptions?.[SUBMIT_BTN_OPTIONS_KEY]) {
|
|
3381
3473
|
const options = uiOptions[SUBMIT_BTN_OPTIONS_KEY];
|
|
3382
3474
|
return { ...DEFAULT_OPTIONS, ...options };
|
|
3383
3475
|
}
|
|
@@ -3402,10 +3494,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
3402
3494
|
}
|
|
3403
3495
|
|
|
3404
3496
|
// src/getTestIds.ts
|
|
3405
|
-
var
|
|
3497
|
+
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
3406
3498
|
var import_uniqueId = __toESM(require("lodash/uniqueId"), 1);
|
|
3407
3499
|
function getTestIds() {
|
|
3408
|
-
if ((0,
|
|
3500
|
+
if ((0, import_get19.default)(globalThis, "process.env.NODE_ENV") !== "test") {
|
|
3409
3501
|
return {};
|
|
3410
3502
|
}
|
|
3411
3503
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -3424,7 +3516,7 @@ function getTestIds() {
|
|
|
3424
3516
|
|
|
3425
3517
|
// src/getWidget.tsx
|
|
3426
3518
|
var import_react = require("react");
|
|
3427
|
-
var
|
|
3519
|
+
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3428
3520
|
var import_set4 = __toESM(require("lodash/set"), 1);
|
|
3429
3521
|
var import_react_is = __toESM(require("react-is"), 1);
|
|
3430
3522
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -3481,9 +3573,9 @@ var widgetMap = {
|
|
|
3481
3573
|
}
|
|
3482
3574
|
};
|
|
3483
3575
|
function mergeWidgetOptions(AWidget) {
|
|
3484
|
-
let MergedWidget = (0,
|
|
3576
|
+
let MergedWidget = (0, import_get20.default)(AWidget, "MergedWidget");
|
|
3485
3577
|
if (!MergedWidget) {
|
|
3486
|
-
const defaultOptions = AWidget.defaultProps
|
|
3578
|
+
const defaultOptions = AWidget.defaultProps?.options || {};
|
|
3487
3579
|
MergedWidget = ({ options, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AWidget, { options: { ...defaultOptions, ...options }, ...props });
|
|
3488
3580
|
(0, import_set4.default)(AWidget, "MergedWidget", MergedWidget);
|
|
3489
3581
|
}
|
|
@@ -3535,7 +3627,7 @@ function hashObject(object) {
|
|
|
3535
3627
|
return hashString(sortedJSONStringify(object));
|
|
3536
3628
|
}
|
|
3537
3629
|
function hashForSchema(schema) {
|
|
3538
|
-
return
|
|
3630
|
+
return hashString(sortedJSONStringify(schema));
|
|
3539
3631
|
}
|
|
3540
3632
|
|
|
3541
3633
|
// src/hasWidget.ts
|
|
@@ -3596,7 +3688,6 @@ function isFormDataAvailable(formData) {
|
|
|
3596
3688
|
}
|
|
3597
3689
|
|
|
3598
3690
|
// src/isRootSchema.ts
|
|
3599
|
-
var import_omit2 = __toESM(require("lodash/omit"), 1);
|
|
3600
3691
|
function isRootSchema(registry, schemaToCompare) {
|
|
3601
3692
|
const { rootSchema, schemaUtils } = registry;
|
|
3602
3693
|
if (deepEquals_default(schemaToCompare, rootSchema)) {
|
|
@@ -3604,7 +3695,7 @@ function isRootSchema(registry, schemaToCompare) {
|
|
|
3604
3695
|
}
|
|
3605
3696
|
if (REF_KEY in rootSchema) {
|
|
3606
3697
|
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3607
|
-
return deepEquals_default(schemaToCompare,
|
|
3698
|
+
return deepEquals_default(schemaToCompare, resolvedSchema);
|
|
3608
3699
|
}
|
|
3609
3700
|
return false;
|
|
3610
3701
|
}
|
|
@@ -3619,15 +3710,24 @@ function localToUTC(dateString) {
|
|
|
3619
3710
|
return dateString ? new Date(dateString).toJSON() : void 0;
|
|
3620
3711
|
}
|
|
3621
3712
|
|
|
3713
|
+
// src/logUnsupportedDefaultForEnum.ts
|
|
3714
|
+
function logUnsupportedDefaultForEnum(id, schema, enumOptions, multiple = false) {
|
|
3715
|
+
if (!multiple && Array.isArray(enumOptions) && schema.default !== void 0 && enumOptionsIndexForValue(schema.default, enumOptions, multiple) === void 0) {
|
|
3716
|
+
console.error(
|
|
3717
|
+
`The schema default value "${schema.default}" is not one of the values in the enum options for "${id}"`
|
|
3718
|
+
);
|
|
3719
|
+
}
|
|
3720
|
+
}
|
|
3721
|
+
|
|
3622
3722
|
// src/lookupFromFormContext.ts
|
|
3623
|
-
var
|
|
3723
|
+
var import_get21 = __toESM(require("lodash/get"), 1);
|
|
3624
3724
|
var import_has6 = __toESM(require("lodash/has"), 1);
|
|
3625
3725
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3626
3726
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3627
3727
|
if ((0, import_has6.default)(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3628
3728
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3629
3729
|
}
|
|
3630
|
-
return (0,
|
|
3730
|
+
return (0, import_get21.default)(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3631
3731
|
}
|
|
3632
3732
|
|
|
3633
3733
|
// src/nameGenerators.ts
|
|
@@ -3816,13 +3916,13 @@ function schemaRequiresTrueValue(schema) {
|
|
|
3816
3916
|
if (schema.const) {
|
|
3817
3917
|
return true;
|
|
3818
3918
|
}
|
|
3819
|
-
if (schema.enum
|
|
3919
|
+
if (schema.enum?.length === 1 && schema.enum[0] === true) {
|
|
3820
3920
|
return true;
|
|
3821
3921
|
}
|
|
3822
|
-
if (schema.anyOf
|
|
3922
|
+
if (schema.anyOf?.length === 1) {
|
|
3823
3923
|
return schemaRequiresTrueValue(schema.anyOf[0]);
|
|
3824
3924
|
}
|
|
3825
|
-
if (schema.oneOf
|
|
3925
|
+
if (schema.oneOf?.length === 1) {
|
|
3826
3926
|
return schemaRequiresTrueValue(schema.oneOf[0]);
|
|
3827
3927
|
}
|
|
3828
3928
|
if (schema.allOf) {
|
|
@@ -3832,6 +3932,38 @@ function schemaRequiresTrueValue(schema) {
|
|
|
3832
3932
|
return false;
|
|
3833
3933
|
}
|
|
3834
3934
|
|
|
3935
|
+
// src/SelectedOptionDescription.tsx
|
|
3936
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
3937
|
+
function SelectedOptionDescription({ hideLabel, id, multiple, options, registry, uiSchema, value }) {
|
|
3938
|
+
if (multiple || hideLabel) {
|
|
3939
|
+
return null;
|
|
3940
|
+
}
|
|
3941
|
+
const { label = true } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3942
|
+
if (!label) {
|
|
3943
|
+
return null;
|
|
3944
|
+
}
|
|
3945
|
+
const option = options.enumOptions?.find(({ value: enumValue }) => enumOptionsIsSelected(enumValue, value));
|
|
3946
|
+
const description = option?.schema?.description;
|
|
3947
|
+
if (!description) {
|
|
3948
|
+
return null;
|
|
3949
|
+
}
|
|
3950
|
+
const DescriptionFieldTemplate = getTemplate(
|
|
3951
|
+
"DescriptionFieldTemplate",
|
|
3952
|
+
registry,
|
|
3953
|
+
options
|
|
3954
|
+
);
|
|
3955
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
3956
|
+
DescriptionFieldTemplate,
|
|
3957
|
+
{
|
|
3958
|
+
id: descriptionId(id),
|
|
3959
|
+
description,
|
|
3960
|
+
schema: option.schema,
|
|
3961
|
+
uiSchema,
|
|
3962
|
+
registry
|
|
3963
|
+
}
|
|
3964
|
+
);
|
|
3965
|
+
}
|
|
3966
|
+
|
|
3835
3967
|
// src/shallowEquals.ts
|
|
3836
3968
|
function shallowEquals(a, b) {
|
|
3837
3969
|
if (Object.is(a, b)) {
|
|
@@ -3982,7 +4114,7 @@ function unwrapErrorHandler(errorHandler) {
|
|
|
3982
4114
|
|
|
3983
4115
|
// src/useAltDateWidgetProps.tsx
|
|
3984
4116
|
var import_react2 = require("react");
|
|
3985
|
-
var
|
|
4117
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
3986
4118
|
function readyForChange(state) {
|
|
3987
4119
|
return Object.values(state).every((value) => value !== -1);
|
|
3988
4120
|
}
|
|
@@ -4005,7 +4137,7 @@ function DateElement(props) {
|
|
|
4005
4137
|
const id = `${rootId}_${type}`;
|
|
4006
4138
|
const { SelectWidget } = registry.widgets;
|
|
4007
4139
|
const onChange = (0, import_react2.useCallback)((newValue) => select(type, newValue), [select, type]);
|
|
4008
|
-
return /* @__PURE__ */ (0,
|
|
4140
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
4009
4141
|
SelectWidget,
|
|
4010
4142
|
{
|
|
4011
4143
|
schema: { type: "integer" },
|
|
@@ -4095,7 +4227,7 @@ var import_react4 = require("react");
|
|
|
4095
4227
|
function addNameToDataURL(dataURL, name) {
|
|
4096
4228
|
return dataURL.replace(";base64", `;name=${encodeURIComponent(name)};base64`);
|
|
4097
4229
|
}
|
|
4098
|
-
function processFile(file) {
|
|
4230
|
+
async function processFile(file) {
|
|
4099
4231
|
const { name, size, type } = file;
|
|
4100
4232
|
return new Promise((resolve, reject) => {
|
|
4101
4233
|
const reader = new window.FileReader();
|
|
@@ -4120,7 +4252,7 @@ function processFile(file) {
|
|
|
4120
4252
|
reader.readAsDataURL(file);
|
|
4121
4253
|
});
|
|
4122
4254
|
}
|
|
4123
|
-
function processFiles(files) {
|
|
4255
|
+
async function processFiles(files) {
|
|
4124
4256
|
return Promise.all(Array.from(files).map(processFile));
|
|
4125
4257
|
}
|
|
4126
4258
|
function extractFileInfo(dataURLs) {
|
|
@@ -4259,6 +4391,7 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
4259
4391
|
TranslatableString2["AddButton"] = "Add";
|
|
4260
4392
|
TranslatableString2["AddItemButton"] = "Add Item";
|
|
4261
4393
|
TranslatableString2["CopyButton"] = "Copy";
|
|
4394
|
+
TranslatableString2["ExpandButton"] = "Expand Cycle";
|
|
4262
4395
|
TranslatableString2["MoveDownButton"] = "Move down";
|
|
4263
4396
|
TranslatableString2["MoveUpButton"] = "Move up";
|
|
4264
4397
|
TranslatableString2["RemoveButton"] = "Remove";
|
|
@@ -4279,6 +4412,7 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
4279
4412
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
4280
4413
|
TranslatableString2["KeyLabel"] = "%1 Key";
|
|
4281
4414
|
TranslatableString2["DeprecatedLabel"] = "%1 (deprecated)";
|
|
4415
|
+
TranslatableString2["CycleDetected"] = 'Circular reference ($ref cycle) detected for field "%1". You may choose to expand to the next cycle break';
|
|
4282
4416
|
TranslatableString2["InvalidObjectField"] = 'Invalid "%1" object field configuration: _%2_.';
|
|
4283
4417
|
TranslatableString2["UnsupportedField"] = "Unsupported field schema.";
|
|
4284
4418
|
TranslatableString2["UnsupportedFieldWithId"] = "Unsupported field schema for field `%1`.";
|
|
@@ -4292,7 +4426,7 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
4292
4426
|
var import_forEach = __toESM(require("lodash/forEach"), 1);
|
|
4293
4427
|
|
|
4294
4428
|
// src/parser/ParserValidator.ts
|
|
4295
|
-
var
|
|
4429
|
+
var import_get22 = __toESM(require("lodash/get"), 1);
|
|
4296
4430
|
var ParserValidator = class {
|
|
4297
4431
|
/** Construct the ParserValidator for the given `rootSchema`. This `rootSchema` will be stashed in the `schemaMap`
|
|
4298
4432
|
* first.
|
|
@@ -4318,7 +4452,7 @@ var ParserValidator = class {
|
|
|
4318
4452
|
* @param hash - The hash value at which to map the schema
|
|
4319
4453
|
*/
|
|
4320
4454
|
addSchema(schema, hash) {
|
|
4321
|
-
const key = (0,
|
|
4455
|
+
const key = (0, import_get22.default)(schema, ID_KEY, hash);
|
|
4322
4456
|
const identifiedSchema = { ...schema, [ID_KEY]: key };
|
|
4323
4457
|
const existing = this.schemaMap[key];
|
|
4324
4458
|
if (!existing) {
|