@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.
Files changed (88) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +0 -4
  3. package/dist/index.cjs +246 -112
  4. package/dist/index.cjs.map +4 -4
  5. package/dist/utils.esm.js +246 -112
  6. package/dist/utils.esm.js.map +4 -4
  7. package/dist/utils.umd.js +277 -140
  8. package/lib/SelectedOptionDescription.d.ts +4 -0
  9. package/lib/SelectedOptionDescription.js +24 -0
  10. package/lib/SelectedOptionDescription.js.map +1 -0
  11. package/lib/asNumber.d.ts +6 -5
  12. package/lib/asNumber.js +14 -9
  13. package/lib/asNumber.js.map +1 -1
  14. package/lib/constants.d.ts +8 -5
  15. package/lib/constants.js +10 -7
  16. package/lib/constants.js.map +1 -1
  17. package/lib/createSchemaUtils.js +1 -1
  18. package/lib/createSchemaUtils.js.map +1 -1
  19. package/lib/enums.d.ts +4 -0
  20. package/lib/enums.js +4 -0
  21. package/lib/enums.js.map +1 -1
  22. package/lib/getDecimalSeparator.d.ts +8 -0
  23. package/lib/getDecimalSeparator.js +23 -0
  24. package/lib/getDecimalSeparator.js.map +1 -0
  25. package/lib/getSubmitButtonOptions.js +1 -1
  26. package/lib/getSubmitButtonOptions.js.map +1 -1
  27. package/lib/getWidget.js +2 -1
  28. package/lib/getWidget.js.map +1 -1
  29. package/lib/hashForSchema.d.ts +2 -0
  30. package/lib/hashForSchema.js +3 -1
  31. package/lib/hashForSchema.js.map +1 -1
  32. package/lib/index.d.ts +6 -2
  33. package/lib/index.js +5 -2
  34. package/lib/index.js.map +1 -1
  35. package/lib/isFixedItems.d.ts +2 -2
  36. package/lib/isFixedItems.js +3 -3
  37. package/lib/isFixedItems.js.map +1 -1
  38. package/lib/isRootSchema.js +2 -3
  39. package/lib/isRootSchema.js.map +1 -1
  40. package/lib/logUnsupportedDefaultForEnum.d.ts +9 -0
  41. package/lib/logUnsupportedDefaultForEnum.js +18 -0
  42. package/lib/logUnsupportedDefaultForEnum.js.map +1 -0
  43. package/lib/mergeSchemas.js +8 -1
  44. package/lib/mergeSchemas.js.map +1 -1
  45. package/lib/optionsList.js +22 -21
  46. package/lib/optionsList.js.map +1 -1
  47. package/lib/resolveUiSchema.js.map +1 -1
  48. package/lib/schema/getDefaultFormState.d.ts +1 -1
  49. package/lib/schema/getDefaultFormState.js +53 -17
  50. package/lib/schema/getDefaultFormState.js.map +1 -1
  51. package/lib/schema/getDisplayLabel.js +2 -3
  52. package/lib/schema/getDisplayLabel.js.map +1 -1
  53. package/lib/schema/omitExtraData.js +11 -0
  54. package/lib/schema/omitExtraData.js.map +1 -1
  55. package/lib/schema/retrieveSchema.d.ts +5 -1
  56. package/lib/schema/retrieveSchema.js +49 -14
  57. package/lib/schema/retrieveSchema.js.map +1 -1
  58. package/lib/schemaRequiresTrueValue.js +4 -3
  59. package/lib/schemaRequiresTrueValue.js.map +1 -1
  60. package/lib/tsconfig.tsbuildinfo +1 -1
  61. package/lib/types.d.ts +24 -0
  62. package/lib/useAltDateWidgetProps.d.ts +1 -1
  63. package/lib/useFileWidgetProps.js +2 -2
  64. package/lib/useFileWidgetProps.js.map +1 -1
  65. package/package.json +19 -19
  66. package/src/SelectedOptionDescription.tsx +48 -0
  67. package/src/asNumber.ts +18 -9
  68. package/src/constants.ts +10 -7
  69. package/src/createSchemaUtils.ts +1 -1
  70. package/src/enums.ts +4 -0
  71. package/src/getDecimalSeparator.ts +20 -0
  72. package/src/getSubmitButtonOptions.ts +1 -1
  73. package/src/getWidget.tsx +1 -1
  74. package/src/hashForSchema.ts +3 -1
  75. package/src/index.ts +8 -0
  76. package/src/isFixedItems.ts +3 -3
  77. package/src/isRootSchema.ts +2 -4
  78. package/src/logUnsupportedDefaultForEnum.ts +28 -0
  79. package/src/mergeSchemas.ts +9 -2
  80. package/src/optionsList.ts +20 -22
  81. package/src/resolveUiSchema.ts +12 -4
  82. package/src/schema/getDefaultFormState.ts +79 -22
  83. package/src/schema/getDisplayLabel.ts +3 -4
  84. package/src/schema/omitExtraData.ts +11 -0
  85. package/src/schema/retrieveSchema.ts +59 -13
  86. package/src/schemaRequiresTrueValue.ts +3 -3
  87. package/src/types.ts +31 -0
  88. package/src/useFileWidgetProps.ts +2 -2
package/dist/utils.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lodash/isPlainObject'), require('lodash/get'), require('fast-equals'), require('fast-uri'), require('jsonpointer'), require('lodash/isEmpty'), require('lodash/isObject'), require('lodash/omit'), require('lodash/has'), require('lodash/isString'), require('lodash/flattenDeep'), require('lodash/merge'), require('lodash/set'), require('lodash/times'), require('lodash/transform'), require('lodash/uniq'), require('lodash/union'), require('lodash/isNumber'), require('@x0k/json-schema-merge'), require('@x0k/json-schema-merge/lib/array'), require('lodash/reduce'), require('lodash/isNil'), require('lodash/pick'), require('lodash/cloneDeep'), require('lodash/setWith'), require('lodash/difference'), require('lodash/keys'), require('lodash/pickBy'), require('lodash/uniqueId'), require('react'), require('react-is'), require('react/jsx-runtime'), require('lodash/toPath'), require('lodash/forEach')) :
3
3
  typeof define === 'function' && define.amd ? define(['exports', 'lodash/isPlainObject', 'lodash/get', 'fast-equals', 'fast-uri', 'jsonpointer', 'lodash/isEmpty', 'lodash/isObject', 'lodash/omit', 'lodash/has', 'lodash/isString', 'lodash/flattenDeep', 'lodash/merge', 'lodash/set', 'lodash/times', 'lodash/transform', 'lodash/uniq', 'lodash/union', 'lodash/isNumber', '@x0k/json-schema-merge', '@x0k/json-schema-merge/lib/array', 'lodash/reduce', 'lodash/isNil', 'lodash/pick', 'lodash/cloneDeep', 'lodash/setWith', 'lodash/difference', 'lodash/keys', 'lodash/pickBy', 'lodash/uniqueId', 'react', 'react-is', 'react/jsx-runtime', 'lodash/toPath', 'lodash/forEach'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@rjsf/utils"] = {}, global.isPlainObject2, global.get15, global.fastEquals, global.UriResolver, global.jsonpointer, global.isEmpty4, global.isObject2, global.omit, global.has5, global.isString, global.flattenDeep, global.merge, global.set, global.times, global.transform, global.uniq, global.union, global.isNumber, global.jsonSchemaMerge, global.array, global.reduce, global.isNil, global.pick, global.cloneDeep, global.setWith, global.difference, global.keys, global.pickBy, global.uniqueId, global.react, global.ReactIs, global.jsxRuntime, global.toPath, global.forEach));
5
- })(this, (function (exports, isPlainObject2, get15, fastEquals, UriResolver, jsonpointer, isEmpty4, isObject2, omit, has5, isString, flattenDeep, merge, set, times, transform, uniq, union, isNumber, jsonSchemaMerge, array, reduce, isNil, pick, cloneDeep, setWith, difference, keys, pickBy, uniqueId, react, ReactIs, jsxRuntime, toPath, forEach) { 'use strict';
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@rjsf/utils"] = {}, global.isPlainObject2, global.get14, global.fastEquals, global.UriResolver, global.jsonpointer, global.isEmpty4, global.isObject2, global.omit, global.has5, global.isString, global.flattenDeep, global.merge, global.set3, global.times, global.transform, global.uniq, global.union, global.isNumber, global.jsonSchemaMerge, global.array, global.reduce, global.isNil, global.pick, global.cloneDeep, global.setWith, global.difference, global.keys, global.pickBy, global.uniqueId, global.react, global.ReactIs, global.jsxRuntime, global.toPath, global.forEach));
5
+ })(this, (function (exports, isPlainObject2, get14, fastEquals, UriResolver, jsonpointer, isEmpty4, isObject2, omit, has5, isString, flattenDeep, merge, set3, times, transform, uniq, union, isNumber, jsonSchemaMerge, array, reduce, isNil, pick, cloneDeep, setWith, difference, keys, pickBy, uniqueId, react, ReactIs, jsxRuntime, toPath, forEach) { 'use strict';
6
6
 
7
7
  // src/isObject.ts
8
8
  function isObject(thing) {
@@ -26,6 +26,20 @@
26
26
  return isObject(schema.additionalItems);
27
27
  }
28
28
 
29
+ // src/getDecimalSeparator.ts
30
+ function getDecimalSeparator(languages) {
31
+ const locales = languages || (typeof navigator !== "undefined" ? navigator.languages : void 0);
32
+ if (locales) {
33
+ try {
34
+ const formatter = new Intl.NumberFormat(locales);
35
+ const parts = formatter.formatToParts(1.1);
36
+ return parts.find((part) => part.type === "decimal")?.value || ".";
37
+ } catch (e) {
38
+ }
39
+ }
40
+ return ".";
41
+ }
42
+
29
43
  // src/asNumber.ts
30
44
  function asNumber(value) {
31
45
  if (value === "") {
@@ -34,22 +48,24 @@
34
48
  if (value === null) {
35
49
  return null;
36
50
  }
37
- if (/\.$/.test(value)) {
51
+ const separator = getDecimalSeparator();
52
+ const standardValue = typeof value === "string" && separator !== "." ? value.replace(separator, ".") : value;
53
+ if (/\.$/.test(standardValue)) {
38
54
  return value;
39
55
  }
40
- if (/\.0$/.test(value)) {
56
+ if (/\.0$/.test(standardValue)) {
41
57
  return value;
42
58
  }
43
- if (/\.\d*0$/.test(value)) {
59
+ if (/\.\d*0$/.test(standardValue)) {
44
60
  return value;
45
61
  }
46
- const n = Number(value);
62
+ const n = Number(standardValue);
47
63
  const valid = typeof n === "number" && !Number.isNaN(n);
48
64
  return valid ? n : value;
49
65
  }
50
66
 
51
67
  // src/constants.ts
52
- var ADDITIONAL_PROPERTY_FLAG = "__additional_property";
68
+ var ADDITIONAL_PROPERTY_FLAG = /* @__PURE__ */ Symbol("__additional_property");
53
69
  var ADDITIONAL_PROPERTIES_KEY = "additionalProperties";
54
70
  var ALL_OF_KEY = "allOf";
55
71
  var ANY_OF_KEY = "anyOf";
@@ -71,15 +87,17 @@
71
87
  var REQUIRED_KEY = "required";
72
88
  var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
73
89
  var REF_KEY = "$ref";
74
- var RJSF_REF_KEY = "__rjsf_ref";
90
+ var RJSF_REF_KEY = /* @__PURE__ */ Symbol("__rjsf_ref");
91
+ var RJSF_REF_CYCLE_KEY = /* @__PURE__ */ Symbol("__rjsf_ref_cycle");
75
92
  var SCHEMA_KEY = "$schema";
76
93
  var DEFAULT_ID_PREFIX = "root";
77
94
  var DEFAULT_ID_SEPARATOR = "_";
78
95
  var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
79
96
  var FORM_CONTEXT_NAME = "formContext";
80
97
  var LOOKUP_MAP_NAME = "layoutGridLookupMap";
81
- var RJSF_ADDITIONAL_PROPERTIES_FLAG = "__rjsf_additionalProperties";
82
- var ROOT_SCHEMA_PREFIX = "__rjsf_rootSchema";
98
+ var RJSF_PREFIX_KEY = "__rjsf";
99
+ var RJSF_ADDITIONAL_PROPERTIES_FLAG = `${RJSF_PREFIX_KEY}_additionalProperties`;
100
+ var ROOT_SCHEMA_PREFIX = `${RJSF_PREFIX_KEY}_rootSchema`;
83
101
  var UI_FIELD_KEY = "ui:field";
84
102
  var UI_WIDGET_KEY = "ui:widget";
85
103
  var UI_OPTIONS_KEY = "ui:options";
@@ -178,7 +196,7 @@
178
196
  return void 0;
179
197
  }
180
198
  function makeAllReferencesAbsolute(schema, baseURI) {
181
- const currentURI = get15(schema, ID_KEY, baseURI);
199
+ const currentURI = get14(schema, ID_KEY, baseURI);
182
200
  let result = schema;
183
201
  if (REF_KEY in result) {
184
202
  result = { ...result, [REF_KEY]: UriResolver.resolve(currentURI, result[REF_KEY]) };
@@ -200,7 +218,7 @@
200
218
  const remaining = omit(object, [key]);
201
219
  return [remaining, value];
202
220
  }
203
- function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get15(rootSchema, [ID_KEY])) {
221
+ function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get14(rootSchema, [ID_KEY])) {
204
222
  const ref = $ref || "";
205
223
  let current = void 0;
206
224
  let currentBaseURI = baseURI;
@@ -250,13 +268,13 @@
250
268
  }
251
269
  return current;
252
270
  }
253
- function findSchemaDefinition($ref, rootSchema = {}, baseURI = get15(rootSchema, [ID_KEY])) {
271
+ function findSchemaDefinition($ref, rootSchema = {}, baseURI = get14(rootSchema, [ID_KEY])) {
254
272
  const recurseList = [];
255
273
  return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
256
274
  }
257
275
  function getDiscriminatorFieldFromSchema(schema) {
258
276
  let discriminator;
259
- const maybeString = get15(schema, DISCRIMINATOR_PATH);
277
+ const maybeString = get14(schema, DISCRIMINATOR_PATH);
260
278
  if (isString(maybeString)) {
261
279
  discriminator = maybeString;
262
280
  } else if (maybeString !== void 0) {
@@ -313,7 +331,7 @@
313
331
  // src/mergeSchemas.ts
314
332
  function mergeSchemas(obj1, obj2) {
315
333
  const acc = { ...obj1 };
316
- return Object.keys(obj2).reduce((accumulator, key) => {
334
+ const result = Object.keys(obj2).reduce((accumulator, key) => {
317
335
  const left = obj1 ? obj1[key] : {}, right = obj2[key];
318
336
  if (obj1 && key in obj1 && isObject(right)) {
319
337
  accumulator[key] = mergeSchemas(left, right);
@@ -324,16 +342,20 @@
324
342
  }
325
343
  return accumulator;
326
344
  }, acc);
345
+ for (const sym of Object.getOwnPropertySymbols(obj2)) {
346
+ result[sym] = obj2[sym];
347
+ }
348
+ return result;
327
349
  }
328
350
  function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
329
351
  if (formData && discriminatorField) {
330
- const value = get15(formData, discriminatorField);
352
+ const value = get14(formData, discriminatorField);
331
353
  if (value === void 0) {
332
354
  return void 0;
333
355
  }
334
356
  for (let i = 0; i < options.length; i += 1) {
335
357
  const option = options[i];
336
- const discriminator = get15(option, [PROPERTIES_KEY, discriminatorField], {});
358
+ const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
337
359
  if (discriminator.type !== "object" && discriminator.type !== "array") {
338
360
  if (discriminator.const === value) {
339
361
  return i;
@@ -359,8 +381,8 @@
359
381
  for (let i = 0; i < options.length; i += 1) {
360
382
  const option = options[i];
361
383
  if (discriminatorField && has5(option, [PROPERTIES_KEY, discriminatorField])) {
362
- const value = get15(formData, discriminatorField);
363
- const discriminator = get15(option, [PROPERTIES_KEY, discriminatorField], {});
384
+ const value = get14(formData, discriminatorField);
385
+ const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
364
386
  if (validator.isValid(discriminator, value, rootSchema)) {
365
387
  return i;
366
388
  }
@@ -413,6 +435,12 @@
413
435
  resolveAnyOfOrOneOfRefs
414
436
  )[0];
415
437
  }
438
+ function normalizeBooleanSchema(schema) {
439
+ if (typeof schema !== "boolean") {
440
+ return schema;
441
+ }
442
+ return schema ? {} : { not: {} };
443
+ }
416
444
  function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
417
445
  const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
418
446
  const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
@@ -420,10 +448,11 @@
420
448
  let schemas = [];
421
449
  if (expandAllBranches) {
422
450
  if (then && typeof then !== "boolean") {
451
+ const thenSchema = then;
423
452
  schemas = schemas.concat(
424
453
  retrieveSchemaInternal(
425
454
  validator,
426
- then,
455
+ thenSchema,
427
456
  rootSchema,
428
457
  formData,
429
458
  expandAllBranches,
@@ -433,10 +462,11 @@
433
462
  );
434
463
  }
435
464
  if (otherwise && typeof otherwise !== "boolean") {
465
+ const otherwiseSchema = otherwise;
436
466
  schemas = schemas.concat(
437
467
  retrieveSchemaInternal(
438
468
  validator,
439
- otherwise,
469
+ otherwiseSchema,
440
470
  rootSchema,
441
471
  formData,
442
472
  expandAllBranches,
@@ -446,8 +476,9 @@
446
476
  );
447
477
  }
448
478
  } else {
449
- const conditionalSchema = conditionValue ? then : otherwise;
450
- if (conditionalSchema && typeof conditionalSchema !== "boolean") {
479
+ const conditionalBranch = conditionValue ? then : otherwise;
480
+ if (conditionalBranch !== void 0) {
481
+ const conditionalSchema = normalizeBooleanSchema(conditionalBranch);
451
482
  schemas = schemas.concat(
452
483
  retrieveSchemaInternal(
453
484
  validator,
@@ -493,7 +524,7 @@
493
524
  function getMatchingPatternProperties(schema, key) {
494
525
  return Object.keys(schema.patternProperties).filter((pattern) => RegExp(pattern).test(key)).reduce(
495
526
  (obj, pattern) => {
496
- set(obj, [pattern], schema.patternProperties[pattern]);
527
+ set3(obj, [pattern], schema.patternProperties[pattern]);
497
528
  return obj;
498
529
  },
499
530
  {}
@@ -571,7 +602,7 @@
571
602
  }
572
603
  return [schema];
573
604
  }
574
- function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
605
+ function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs, markCycleOnDetection = false) {
575
606
  if (!isObject(schema)) {
576
607
  return schema;
577
608
  }
@@ -580,7 +611,7 @@
580
611
  if (REF_KEY in resolvedSchema) {
581
612
  const { $ref, ...localSchema } = resolvedSchema;
582
613
  if (recurseList.includes($ref)) {
583
- return resolvedSchema;
614
+ return markCycleOnDetection ? { ...resolvedSchema, [RJSF_REF_CYCLE_KEY]: true } : resolvedSchema;
584
615
  }
585
616
  recurseList.push($ref);
586
617
  const refSchema = findSchemaDefinition($ref, rootSchema, currentBaseURI);
@@ -595,7 +626,14 @@
595
626
  resolvedSchema[PROPERTIES_KEY],
596
627
  (acc, value, key) => {
597
628
  const childList = [...recurseList];
598
- acc[key] = resolveAllReferences(value, rootSchema, childList, currentBaseURI, resolveAnyOfOrOneOfRefs);
629
+ acc[key] = resolveAllReferences(
630
+ value,
631
+ rootSchema,
632
+ childList,
633
+ currentBaseURI,
634
+ resolveAnyOfOrOneOfRefs,
635
+ !resolveAnyOfOrOneOfRefs
636
+ );
599
637
  childrenLists.push(childList);
600
638
  },
601
639
  {}
@@ -606,6 +644,7 @@
606
644
  if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
607
645
  resolvedSchema = {
608
646
  ...resolvedSchema,
647
+ // Array items are only rendered when data exists, so a $ref cycle here does NOT cause an infinite render.
609
648
  items: resolveAllReferences(
610
649
  resolvedSchema.items,
611
650
  rootSchema,
@@ -653,10 +692,10 @@
653
692
  validator,
654
693
  { [ALL_OF_KEY]: Object.values(matchingProperties) },
655
694
  rootSchema,
656
- get15(formData, [key]),
695
+ get14(formData, [key]),
657
696
  experimental_customMergeAllOf
658
697
  );
659
- set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
698
+ schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
660
699
  return;
661
700
  }
662
701
  }
@@ -666,9 +705,9 @@
666
705
  if (REF_KEY in schema.additionalProperties) {
667
706
  additionalProperties = retrieveSchema(
668
707
  validator,
669
- { [REF_KEY]: get15(schema.additionalProperties, [REF_KEY]) },
708
+ { [REF_KEY]: get14(schema.additionalProperties, [REF_KEY]) },
670
709
  rootSchema,
671
- formData,
710
+ get14(formData, [key]),
672
711
  experimental_customMergeAllOf
673
712
  );
674
713
  } else if ("type" in schema.additionalProperties) {
@@ -679,16 +718,16 @@
679
718
  ...schema.additionalProperties
680
719
  };
681
720
  } else {
682
- additionalProperties = { type: guessType(get15(formData, [key])) };
721
+ additionalProperties = { type: guessType(get14(formData, [key])) };
683
722
  }
684
723
  } else {
685
- additionalProperties = { type: guessType(get15(formData, [key])) };
724
+ additionalProperties = { type: guessType(get14(formData, [key])) };
686
725
  }
687
726
  schema.properties[key] = additionalProperties;
688
- set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
727
+ schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
689
728
  } else {
690
729
  schema.properties[key] = { type: "null" };
691
- set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
730
+ schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
692
731
  }
693
732
  });
694
733
  return schema;
@@ -731,17 +770,26 @@
731
770
  try {
732
771
  const withContainsSchemas = [];
733
772
  const withoutContainsSchemas = [];
773
+ const allOfSymbols = {};
734
774
  resolvedSchema.allOf?.forEach((allOfItem) => {
735
775
  if (typeof allOfItem === "object" && allOfItem.contains) {
736
776
  withContainsSchemas.push(allOfItem);
737
777
  } else {
738
778
  withoutContainsSchemas.push(allOfItem);
779
+ for (const sym of Object.getOwnPropertySymbols(allOfItem)) {
780
+ if (!(sym in allOfSymbols)) {
781
+ allOfSymbols[sym] = allOfItem[sym];
782
+ }
783
+ }
739
784
  }
740
785
  });
741
786
  if (withContainsSchemas.length) {
742
787
  resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
743
788
  }
744
789
  resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema);
790
+ for (const sym of Object.getOwnPropertySymbols(allOfSymbols)) {
791
+ resolvedSchema[sym] = allOfSymbols[sym];
792
+ }
745
793
  if (withContainsSchemas.length) {
746
794
  resolvedSchema.allOf = withContainsSchemas;
747
795
  }
@@ -760,7 +808,7 @@
760
808
  validator,
761
809
  { allOf: [acc.properties[key], ...Object.values(matchingProperties)] },
762
810
  rootSchema,
763
- get15(rawFormData, [key]),
811
+ get14(rawFormData, [key]),
764
812
  experimental_customMergeAllOf
765
813
  );
766
814
  }
@@ -810,7 +858,7 @@
810
858
  function relaxOptionsForScoring(options, resolveRefs = false, rootSchema) {
811
859
  return options.map((d) => {
812
860
  if (!isObject(d)) {
813
- return d ? {} : { not: {} };
861
+ return normalizeBooleanSchema(d);
814
862
  }
815
863
  const schema = resolveRefs && rootSchema ? resolveAllReferences(d, rootSchema, []) : d;
816
864
  return schema.additionalProperties === false ? { ...schema, additionalProperties: true } : schema;
@@ -841,7 +889,7 @@
841
889
  function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
842
890
  let schemas = [resolvedSchema];
843
891
  for (const dependencyKey in dependencies) {
844
- if ((expandAllBranches || get15(formData, [dependencyKey]) !== void 0) && (!resolvedSchema.properties || dependencyKey in resolvedSchema.properties)) {
892
+ if ((expandAllBranches || get14(formData, [dependencyKey]) !== void 0) && (!resolvedSchema.properties || dependencyKey in resolvedSchema.properties)) {
845
893
  const [remainingDependencies, dependencyValue] = splitKeyElementFromObject(
846
894
  dependencyKey,
847
895
  dependencies
@@ -924,7 +972,7 @@
924
972
  }
925
973
  function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
926
974
  const validSubschemas = oneOf.filter((subschema) => {
927
- if (typeof subschema === "boolean" || !subschema || !subschema.properties) {
975
+ if (typeof subschema === "boolean" || !subschema?.properties) {
928
976
  return false;
929
977
  }
930
978
  const { [dependencyKey]: conditionPropertySchema } = subschema.properties;
@@ -968,14 +1016,14 @@
968
1016
  const xxxOfs = schema[xxx].map(
969
1017
  (xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
970
1018
  );
971
- const data = get15(formData, selectorField);
1019
+ const data = get14(formData, selectorField);
972
1020
  if (data !== void 0) {
973
1021
  return xxxOfs.find(
974
1022
  (xxxOfOption) => deepEquals_default(
975
- get15(
1023
+ get14(
976
1024
  xxxOfOption,
977
1025
  [PROPERTIES_KEY, selectorField, DEFAULT_KEY],
978
- get15(xxxOfOption, [PROPERTIES_KEY, selectorField, CONST_KEY])
1026
+ get14(xxxOfOption, [PROPERTIES_KEY, selectorField, CONST_KEY])
979
1027
  ),
980
1028
  data
981
1029
  )
@@ -995,7 +1043,7 @@
995
1043
  const pathList = Array.isArray(path) ? [...path] : path.split(".");
996
1044
  const [part, ...nestedPath] = pathList;
997
1045
  if (part !== void 0 && part !== "" && has5(fieldSchema, part)) {
998
- fieldSchema = get15(fieldSchema, part);
1046
+ fieldSchema = get14(fieldSchema, part);
999
1047
  return getFromSchemaInternal(
1000
1048
  validator,
1001
1049
  rootSchema,
@@ -1038,7 +1086,7 @@
1038
1086
  parentField,
1039
1087
  fieldNameKey,
1040
1088
  ONE_OF_KEY,
1041
- get15(formData, subPath),
1089
+ get14(formData, subPath),
1042
1090
  experimental_customMergeAllOf
1043
1091
  );
1044
1092
  } else if (has5(parentField, ANY_OF_KEY)) {
@@ -1048,7 +1096,7 @@
1048
1096
  parentField,
1049
1097
  fieldNameKey,
1050
1098
  ANY_OF_KEY,
1051
- get15(formData, subPath),
1099
+ get14(formData, subPath),
1052
1100
  experimental_customMergeAllOf
1053
1101
  );
1054
1102
  }
@@ -1116,7 +1164,7 @@
1116
1164
  totalScore += reduce(
1117
1165
  schema.properties,
1118
1166
  (score, value, key) => {
1119
- const formValue = get15(formData, key);
1167
+ const formValue = get14(formData, key);
1120
1168
  if (typeof value === "boolean") {
1121
1169
  return score;
1122
1170
  }
@@ -1143,7 +1191,7 @@
1143
1191
  validator,
1144
1192
  rootSchema,
1145
1193
  formValue,
1146
- get15(value, xxxOfKey),
1194
+ get14(value, xxxOfKey),
1147
1195
  -1,
1148
1196
  discriminator,
1149
1197
  experimental_customMergeAllOf
@@ -1224,7 +1272,7 @@
1224
1272
 
1225
1273
  // src/isFixedItems.ts
1226
1274
  function isFixedItems(schema) {
1227
- return Array.isArray(schema.items) && schema.items.length > 0 && schema.items.every((item) => isObject(item));
1275
+ return Array.isArray(schema.items) && schema.items.every((item) => isObject(item));
1228
1276
  }
1229
1277
  function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {
1230
1278
  if (Array.isArray(formData)) {
@@ -1251,22 +1299,22 @@
1251
1299
  if (isObject(formData)) {
1252
1300
  const acc = Object.assign({}, defaults);
1253
1301
  return Object.keys(formData).reduce((accumulator, key) => {
1254
- const keyValue = get15(formData, key);
1302
+ const keyValue = get14(formData, key);
1255
1303
  const keyExistsInDefaults = isObject(defaults) && key in defaults;
1256
1304
  const keyExistsInFormData = key in formData;
1257
- const keyDefault = get15(defaults, key) ?? {};
1305
+ const keyDefault = get14(defaults, key) ?? {};
1258
1306
  const defaultValueIsNestedObject = keyExistsInDefaults && isObject(keyDefault) && Object.values(keyDefault).some((v) => isObject(v));
1259
- const keyDefaultIsObject = keyExistsInDefaults && isObject(get15(defaults, key));
1307
+ const keyDefaultIsObject = keyExistsInDefaults && isObject(get14(defaults, key));
1260
1308
  const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
1261
1309
  if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
1262
1310
  accumulator[key] = {
1263
- ...get15(defaults, key),
1311
+ ...get14(defaults, key),
1264
1312
  ...keyValue
1265
1313
  };
1266
1314
  return accumulator;
1267
1315
  }
1268
1316
  accumulator[key] = mergeDefaultsWithFormData(
1269
- get15(defaults, key),
1317
+ get14(defaults, key),
1270
1318
  keyValue,
1271
1319
  mergeExtraArrayDefaults,
1272
1320
  defaultSupercedesUndefined,
@@ -1366,18 +1414,18 @@
1366
1414
  const { optionsSchemaSelector = selectorField } = getUiOptions(uiSchema);
1367
1415
  selectorField = optionsSchemaSelector;
1368
1416
  }
1369
- return altSchemas && altSchemas.map((aSchemaDef, index) => {
1417
+ return altSchemas?.map((aSchemaDef, index) => {
1370
1418
  const { title } = getUiOptions(altUiSchemas?.[index]);
1371
1419
  const aSchema = aSchemaDef;
1372
1420
  let value;
1373
1421
  let label = title;
1374
1422
  if (selectorField) {
1375
- const innerSchema = get15(aSchema, [PROPERTIES_KEY, selectorField], {});
1376
- value = get15(innerSchema, DEFAULT_KEY, get15(innerSchema, CONST_KEY));
1377
- label = label || innerSchema?.title || aSchema.title || String(value);
1423
+ const innerSchema = get14(aSchema, [PROPERTIES_KEY, selectorField], {});
1424
+ value = get14(innerSchema, DEFAULT_KEY, get14(innerSchema, CONST_KEY));
1425
+ label = label ?? innerSchema?.title ?? aSchema.title ?? String(value);
1378
1426
  } else {
1379
1427
  value = toConstant(aSchema);
1380
- label = label || aSchema.title || String(value);
1428
+ label = label ?? aSchema.title ?? String(value);
1381
1429
  }
1382
1430
  return {
1383
1431
  schema: aSchema,
@@ -1467,8 +1515,8 @@
1467
1515
  rootSchema = {},
1468
1516
  includeUndefinedValues = false,
1469
1517
  _recurseList = [],
1470
- experimental_defaultFormStateBehavior = void 0,
1471
- experimental_customMergeAllOf = void 0,
1518
+ experimental_defaultFormStateBehavior,
1519
+ experimental_customMergeAllOf,
1472
1520
  required,
1473
1521
  shouldMergeDefaultsIntoFormData = false,
1474
1522
  initialDefaultsGenerated
@@ -1476,14 +1524,19 @@
1476
1524
  let formData = isObject(rawFormData) ? rawFormData : {};
1477
1525
  const schema = isObject(rawSchema) ? rawSchema : {};
1478
1526
  let defaults = parentDefaults;
1527
+ const preferParentDefaults = defaults && experimental_defaultFormStateBehavior?.nestedDefaultsPrecedence === "ancestorWins";
1479
1528
  let schemaToCompute = null;
1480
1529
  let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
1481
1530
  let updatedRecurseList = _recurseList;
1482
1531
  if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
1483
1532
  defaults = schema[CONST_KEY];
1484
1533
  } else if (isObject(defaults) && isObject(schema.default) && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
1485
- defaults = mergeObjects(defaults, schema.default);
1486
- } else if (DEFAULT_KEY in schema && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
1534
+ if (preferParentDefaults) {
1535
+ defaults = mergeObjects(schema.default, defaults);
1536
+ } else {
1537
+ defaults = mergeObjects(defaults, schema.default);
1538
+ }
1539
+ } else if (DEFAULT_KEY in schema && !preferParentDefaults && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
1487
1540
  defaults = schema.default;
1488
1541
  } else if (REF_KEY in schema) {
1489
1542
  const refName = schema[REF_KEY];
@@ -1513,7 +1566,7 @@
1513
1566
  experimental_customMergeAllOf
1514
1567
  );
1515
1568
  [schemaToCompute] = resolvedSchema;
1516
- } else if (isFixedItems(schema)) {
1569
+ } else if (isFixedItems(schema) && !preferParentDefaults) {
1517
1570
  defaults = schema.items.map(
1518
1571
  (itemSchema, idx) => computeDefaults(validator, itemSchema, {
1519
1572
  rootSchema,
@@ -1609,16 +1662,36 @@
1609
1662
  return defaultsWithFormData;
1610
1663
  }
1611
1664
  function ensureFormDataMatchingSchema(validator, schema, rootSchema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
1612
- const isSelectField = !isConstant(schema) && isSelect(validator, schema, rootSchema, experimental_customMergeAllOf);
1665
+ const shouldRetrieveAllOf = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema;
1666
+ const schemaToMatch = shouldRetrieveAllOf ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
1667
+ const isSelectField = !isConstant(schemaToMatch) && isSelect(validator, schemaToMatch, rootSchema, experimental_customMergeAllOf);
1613
1668
  let validFormData = formData;
1614
1669
  if (isSelectField) {
1615
- const getOptionsList = optionsList(schema);
1670
+ const getOptionsList = optionsList(schemaToMatch);
1616
1671
  const isValid = getOptionsList?.some((option) => deepEquals_default(option.value, formData));
1617
1672
  validFormData = isValid ? formData : void 0;
1618
1673
  }
1619
- const constTakesPrecedence = schema[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults === "always";
1674
+ const constTakesPrecedence = schemaToMatch[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults === "always";
1620
1675
  if (constTakesPrecedence) {
1621
- validFormData = schema.const;
1676
+ validFormData = schemaToMatch.const;
1677
+ } else if (isObject(validFormData) && isObject(schemaToMatch.properties)) {
1678
+ validFormData = Object.keys(schemaToMatch.properties).reduce(
1679
+ (acc, key) => {
1680
+ const propertySchema = get14(schemaToMatch, [PROPERTIES_KEY, key], {});
1681
+ if (key in acc && (shouldRetrieveAllOf || isObject(propertySchema) && ALL_OF_KEY in propertySchema)) {
1682
+ acc[key] = ensureFormDataMatchingSchema(
1683
+ validator,
1684
+ propertySchema,
1685
+ rootSchema,
1686
+ get14(acc, key),
1687
+ experimental_defaultFormStateBehavior,
1688
+ experimental_customMergeAllOf
1689
+ );
1690
+ }
1691
+ return acc;
1692
+ },
1693
+ { ...validFormData }
1694
+ );
1622
1695
  }
1623
1696
  return validFormData;
1624
1697
  }
@@ -1627,8 +1700,8 @@
1627
1700
  rootSchema = {},
1628
1701
  includeUndefinedValues = false,
1629
1702
  _recurseList = [],
1630
- experimental_defaultFormStateBehavior = void 0,
1631
- experimental_customMergeAllOf = void 0,
1703
+ experimental_defaultFormStateBehavior,
1704
+ experimental_customMergeAllOf,
1632
1705
  required,
1633
1706
  shouldMergeDefaultsIntoFormData,
1634
1707
  initialDefaultsGenerated
@@ -1641,7 +1714,7 @@
1641
1714
  const parentConst = retrievedSchema[CONST_KEY];
1642
1715
  const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
1643
1716
  (acc, key) => {
1644
- const propertySchema = get15(retrievedSchema, [PROPERTIES_KEY, key], {});
1717
+ const propertySchema = get14(retrievedSchema, [PROPERTIES_KEY, key], {});
1645
1718
  const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
1646
1719
  const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
1647
1720
  const computedDefault = computeDefaults(validator, propertySchema, {
@@ -1650,8 +1723,8 @@
1650
1723
  experimental_defaultFormStateBehavior,
1651
1724
  experimental_customMergeAllOf,
1652
1725
  includeUndefinedValues: includeUndefinedValues === true,
1653
- parentDefaults: get15(defaults, [key]),
1654
- rawFormData: get15(formData, [key]),
1726
+ parentDefaults: get14(defaults, [key]),
1727
+ rawFormData: get14(formData, [key]),
1655
1728
  required: retrievedSchema.required?.includes(key),
1656
1729
  shouldMergeDefaultsIntoFormData,
1657
1730
  initialDefaultsGenerated
@@ -1689,8 +1762,8 @@
1689
1762
  experimental_defaultFormStateBehavior,
1690
1763
  experimental_customMergeAllOf,
1691
1764
  includeUndefinedValues: includeUndefinedValues === true,
1692
- parentDefaults: get15(defaults, [key]),
1693
- rawFormData: get15(formData, [key]),
1765
+ parentDefaults: get14(defaults, [key]),
1766
+ rawFormData: get14(formData, [key]),
1694
1767
  required: retrievedSchema.required?.includes(key),
1695
1768
  shouldMergeDefaultsIntoFormData,
1696
1769
  initialDefaultsGenerated
@@ -1712,8 +1785,8 @@
1712
1785
  rawFormData,
1713
1786
  rootSchema = {},
1714
1787
  _recurseList = [],
1715
- experimental_defaultFormStateBehavior = void 0,
1716
- experimental_customMergeAllOf = void 0,
1788
+ experimental_defaultFormStateBehavior,
1789
+ experimental_customMergeAllOf,
1717
1790
  required,
1718
1791
  requiredAsRoot = false,
1719
1792
  shouldMergeDefaultsIntoFormData,
@@ -1758,7 +1831,7 @@
1758
1831
  experimental_defaultFormStateBehavior,
1759
1832
  experimental_customMergeAllOf,
1760
1833
  rawFormData: item,
1761
- parentDefaults: get15(defaults, [idx]),
1834
+ parentDefaults: get14(defaults, [idx]),
1762
1835
  required,
1763
1836
  shouldMergeDefaultsIntoFormData,
1764
1837
  initialDefaultsGenerated
@@ -1768,14 +1841,17 @@
1768
1841
  defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);
1769
1842
  }
1770
1843
  }
1844
+ const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
1771
1845
  if (neverPopulate) {
1846
+ if (shouldMergeDefaultsIntoFormData && !required) {
1847
+ return defaults;
1848
+ }
1772
1849
  return defaults ?? emptyDefault;
1773
1850
  }
1774
1851
  if (ignoreMinItemsFlagSet && !required) {
1775
1852
  return defaults || void 0;
1776
1853
  }
1777
1854
  let arrayDefault;
1778
- const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
1779
1855
  if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
1780
1856
  arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
1781
1857
  } else {
@@ -1835,9 +1911,17 @@
1835
1911
  if (isObject(formData) || Array.isArray(formData)) {
1836
1912
  const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
1837
1913
  const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
1914
+ const matchingFormData = ensureFormDataMatchingSchema(
1915
+ validator,
1916
+ schema,
1917
+ rootSchema ?? schema,
1918
+ formData,
1919
+ experimental_defaultFormStateBehavior,
1920
+ experimental_customMergeAllOf
1921
+ );
1838
1922
  const result = mergeDefaultsWithFormData(
1839
1923
  defaults,
1840
- formData,
1924
+ matchingFormData,
1841
1925
  true,
1842
1926
  // set to true to add any additional default array entries.
1843
1927
  defaultSupercedesUndefined,
@@ -1883,7 +1967,7 @@
1883
1967
  let displayLabel = Boolean(label);
1884
1968
  if (displayLabel) {
1885
1969
  const schemaType = getSchemaType(schema);
1886
- const addedByAdditionalProperty = get15(schema, ADDITIONAL_PROPERTY_FLAG, false);
1970
+ const addedByAdditionalProperty = Boolean(schema[ADDITIONAL_PROPERTY_FLAG]);
1887
1971
  if (schemaType === "array") {
1888
1972
  displayLabel = addedByAdditionalProperty || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || isFilesArray(validator, schema, uiSchema, rootSchema, experimental_customMergeAllOf) || isCustomWidget(uiSchema);
1889
1973
  }
@@ -1893,7 +1977,7 @@
1893
1977
  if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
1894
1978
  displayLabel = false;
1895
1979
  }
1896
- if (uiSchema && uiSchema[UI_FIELD_KEY]) {
1980
+ if (uiSchema?.[UI_FIELD_KEY]) {
1897
1981
  displayLabel = false;
1898
1982
  }
1899
1983
  }
@@ -1924,7 +2008,7 @@
1924
2008
  }
1925
2009
  } else if (key === NAME_KEY && data !== "") {
1926
2010
  paths.forEach((path) => {
1927
- const formValue = get15(formData, path);
2011
+ const formValue = get14(formData, path);
1928
2012
  const isLeaf = objKeys.length === 1;
1929
2013
  if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
1930
2014
  acc.push(path);
@@ -1962,7 +2046,7 @@
1962
2046
  const { properties, additionalProperties, patternProperties, propertyNames } = childSchema;
1963
2047
  const requiredSet = new Set(childSchema.required ?? []);
1964
2048
  function setProperty(key, schemaDef, value, required = false) {
1965
- const v = omit3(schemaDef, value, target[key]);
2049
+ const v = omit2(schemaDef, value, target[key]);
1966
2050
  if (!required && isObject(v)) {
1967
2051
  let sd = isSchemaObj(schemaDef) ? schemaDef : {};
1968
2052
  if (sd.$ref !== void 0) {
@@ -2031,17 +2115,17 @@
2031
2115
  if (items !== void 0) {
2032
2116
  if (Array.isArray(items)) {
2033
2117
  for (let i = 0; i < items.length; i += 1) {
2034
- target.push(omit3(items[i], source[i]));
2118
+ target.push(omit2(items[i], source[i]));
2035
2119
  }
2036
2120
  } else {
2037
2121
  for (let i = 0; i < source.length; i += 1) {
2038
- target.push(omit3(items, source[i]));
2122
+ target.push(omit2(items, source[i]));
2039
2123
  }
2040
2124
  }
2041
2125
  }
2042
2126
  if (additionalItems) {
2043
2127
  for (let i = target.length; i < source.length; i += 1) {
2044
- target.push(omit3(additionalItems, source[i]));
2128
+ target.push(omit2(additionalItems, source[i]));
2045
2129
  }
2046
2130
  }
2047
2131
  return target;
@@ -2053,7 +2137,7 @@
2053
2137
  }
2054
2138
  const isThenBranch = isSchemaObj(condition) ? validator.isValid(condition, source, rootSchema) : condition;
2055
2139
  const branch = isThenBranch ? then : otherwise;
2056
- return branch === void 0 ? target : omit3(branch, source, target);
2140
+ return branch === void 0 ? target : omit2(branch, source, target);
2057
2141
  }
2058
2142
  function handleOneOf(oneOf, childSchema, source, target) {
2059
2143
  if (!Array.isArray(oneOf) || isSelect(validator, childSchema, rootSchema, experimental_customMergeAllOf)) {
@@ -2071,7 +2155,7 @@
2071
2155
  );
2072
2156
  const winning = oneOf[bestIndex];
2073
2157
  const resolved = isObject(winning) ? resolveAllReferences(winning, rootSchema, []) : scoringOptions[bestIndex];
2074
- return omit3(resolved, source, target);
2158
+ return omit2(resolved, source, target);
2075
2159
  }
2076
2160
  function handleAnyOf(childSchema, source, target) {
2077
2161
  const { anyOf } = childSchema;
@@ -2081,7 +2165,7 @@
2081
2165
  if (source === void 0 || Array.isArray(source) && source.length === 0 || isObject(source) && Object.keys(source).length === 0) {
2082
2166
  let result = target;
2083
2167
  for (const branch of anyOf) {
2084
- result = omit3(branch, source, result);
2168
+ result = omit2(branch, source, result);
2085
2169
  }
2086
2170
  return result;
2087
2171
  }
@@ -2095,12 +2179,12 @@
2095
2179
  let result = target;
2096
2180
  for (const [key, deps] of Object.entries(dependencies)) {
2097
2181
  if (key in source && !Array.isArray(deps)) {
2098
- result = omit3(deps, source, result);
2182
+ result = omit2(deps, source, result);
2099
2183
  }
2100
2184
  }
2101
2185
  return result;
2102
2186
  }
2103
- function omit3(schemaDef, source, target) {
2187
+ function omit2(schemaDef, source, target) {
2104
2188
  if (source === void 0 || schemaDef === false) {
2105
2189
  return void 0;
2106
2190
  }
@@ -2110,10 +2194,16 @@
2110
2194
  let localSchema = schemaDef;
2111
2195
  const { $ref: ref, allOf } = localSchema;
2112
2196
  if (ref !== void 0) {
2113
- return omit3(findSchemaDefinition(ref, rootSchema), source, target);
2197
+ return omit2(findSchemaDefinition(ref, rootSchema), source, target);
2114
2198
  }
2115
2199
  if (allOf) {
2116
2200
  localSchema = doMergeAllOf(localSchema, experimental_customMergeAllOf);
2201
+ const remainingAllOf = localSchema.allOf;
2202
+ if (remainingAllOf) {
2203
+ for (let i = 0; i < remainingAllOf.length; i++) {
2204
+ target = omit2(remainingAllOf[i], source, target);
2205
+ }
2206
+ }
2117
2207
  }
2118
2208
  let filtered = handleAnyOf(localSchema, source, handleOneOf(localSchema.oneOf, localSchema, source, target));
2119
2209
  const type = getSchemaType(localSchema);
@@ -2132,7 +2222,7 @@
2132
2222
  }
2133
2223
  return handleDependencies(localSchema, source, handleConditions(localSchema, source, filtered));
2134
2224
  }
2135
- return omit3(schema, formData);
2225
+ return omit2(schema, formData);
2136
2226
  }
2137
2227
  var NO_VALUE = /* @__PURE__ */ Symbol("no Value");
2138
2228
  function enumValuesForSchema(schema) {
@@ -2156,7 +2246,7 @@
2156
2246
  if (!enumValues || enumValues.some((value) => deepEquals_default(value, formValue))) {
2157
2247
  return NO_VALUE;
2158
2248
  }
2159
- const defaultValue = get15(schema, DEFAULT_KEY, NO_VALUE);
2249
+ const defaultValue = get14(schema, DEFAULT_KEY, NO_VALUE);
2160
2250
  if (defaultValue !== NO_VALUE && enumValues.some((value) => deepEquals_default(value, defaultValue))) {
2161
2251
  return defaultValue;
2162
2252
  }
@@ -2167,19 +2257,19 @@
2167
2257
  if (has5(newSchema, PROPERTIES_KEY)) {
2168
2258
  const removeOldSchemaData = {};
2169
2259
  if (has5(oldSchema, PROPERTIES_KEY)) {
2170
- const properties = get15(oldSchema, PROPERTIES_KEY, {});
2260
+ const properties = get14(oldSchema, PROPERTIES_KEY, {});
2171
2261
  Object.keys(properties).forEach((key) => {
2172
2262
  if (has5(data, key)) {
2173
2263
  removeOldSchemaData[key] = void 0;
2174
2264
  }
2175
2265
  });
2176
2266
  }
2177
- const keys2 = Object.keys(get15(newSchema, PROPERTIES_KEY, {}));
2267
+ const keys2 = Object.keys(get14(newSchema, PROPERTIES_KEY, {}));
2178
2268
  const nestedData = {};
2179
2269
  keys2.forEach((key) => {
2180
- const formValue = get15(data, key);
2181
- let oldKeyedSchema = get15(oldSchema, [PROPERTIES_KEY, key], {});
2182
- let newKeyedSchema = get15(newSchema, [PROPERTIES_KEY, key], {});
2270
+ const formValue = get14(data, key);
2271
+ let oldKeyedSchema = get14(oldSchema, [PROPERTIES_KEY, key], {});
2272
+ let newKeyedSchema = get14(newSchema, [PROPERTIES_KEY, key], {});
2183
2273
  if (has5(oldKeyedSchema, REF_KEY)) {
2184
2274
  oldKeyedSchema = retrieveSchema(
2185
2275
  validator,
@@ -2198,8 +2288,8 @@
2198
2288
  experimental_customMergeAllOf
2199
2289
  );
2200
2290
  }
2201
- const oldSchemaTypeForKey = get15(oldKeyedSchema, "type");
2202
- const newSchemaTypeForKey = get15(newKeyedSchema, "type");
2291
+ const oldSchemaTypeForKey = get14(oldKeyedSchema, "type");
2292
+ const newSchemaTypeForKey = get14(newKeyedSchema, "type");
2203
2293
  if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
2204
2294
  if (has5(removeOldSchemaData, key)) {
2205
2295
  delete removeOldSchemaData[key];
@@ -2217,17 +2307,17 @@
2217
2307
  nestedData[key] = itemData;
2218
2308
  }
2219
2309
  } else {
2220
- const newOptionDefault = get15(newKeyedSchema, DEFAULT_KEY, NO_VALUE);
2221
- const oldOptionDefault = get15(oldKeyedSchema, DEFAULT_KEY, NO_VALUE);
2310
+ const newOptionDefault = get14(newKeyedSchema, DEFAULT_KEY, NO_VALUE);
2311
+ const oldOptionDefault = get14(oldKeyedSchema, DEFAULT_KEY, NO_VALUE);
2222
2312
  if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
2223
2313
  if (oldOptionDefault === formValue) {
2224
2314
  removeOldSchemaData[key] = newOptionDefault;
2225
- } else if (get15(newKeyedSchema, "readOnly") === true) {
2315
+ } else if (get14(newKeyedSchema, "readOnly") === true) {
2226
2316
  removeOldSchemaData[key] = void 0;
2227
2317
  }
2228
2318
  }
2229
- const newOptionConst = get15(newKeyedSchema, CONST_KEY, NO_VALUE);
2230
- const oldOptionConst = get15(oldKeyedSchema, CONST_KEY, NO_VALUE);
2319
+ const newOptionConst = get14(newKeyedSchema, CONST_KEY, NO_VALUE);
2320
+ const oldOptionConst = get14(oldKeyedSchema, CONST_KEY, NO_VALUE);
2231
2321
  if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
2232
2322
  removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
2233
2323
  }
@@ -2245,9 +2335,9 @@
2245
2335
  ...removeOldSchemaData,
2246
2336
  ...nestedData
2247
2337
  };
2248
- } else if (get15(oldSchema, "type") === "array" && get15(newSchema, "type") === "array" && Array.isArray(data)) {
2249
- let oldSchemaItems = get15(oldSchema, "items");
2250
- let newSchemaItems = get15(newSchema, "items");
2338
+ } else if (get14(oldSchema, "type") === "array" && get14(newSchema, "type") === "array" && Array.isArray(data)) {
2339
+ let oldSchemaItems = get14(oldSchema, "items");
2340
+ let newSchemaItems = get14(newSchema, "items");
2251
2341
  if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
2252
2342
  if (has5(oldSchemaItems, REF_KEY)) {
2253
2343
  oldSchemaItems = retrieveSchema(
@@ -2267,10 +2357,10 @@
2267
2357
  experimental_customMergeAllOf
2268
2358
  );
2269
2359
  }
2270
- const oldSchemaType = get15(oldSchemaItems, "type");
2271
- const newSchemaType = get15(newSchemaItems, "type");
2360
+ const oldSchemaType = get14(oldSchemaItems, "type");
2361
+ const newSchemaType = get14(newSchemaItems, "type");
2272
2362
  if (!oldSchemaType || oldSchemaType === newSchemaType) {
2273
- const maxItems = get15(newSchema, "maxItems", -1);
2363
+ const maxItems = get14(newSchema, "maxItems", -1);
2274
2364
  if (newSchemaType === "object") {
2275
2365
  newFormData = data.reduce((newValue, aValue) => {
2276
2366
  const itemValue = sanitizeDataForNewSchema(
@@ -2344,9 +2434,9 @@
2344
2434
  };
2345
2435
  }
2346
2436
  if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
2347
- set(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
2437
+ set3(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
2348
2438
  const additionalSchema = isObject2(schema[ADDITIONAL_PROPERTIES_KEY]) ? schema[ADDITIONAL_PROPERTIES_KEY] : {};
2349
- const definedProperties = get15(schema, PROPERTIES_KEY, {});
2439
+ const definedProperties = get14(schema, PROPERTIES_KEY, {});
2350
2440
  for (const key of Object.keys(formData ?? {})) {
2351
2441
  if (!(key in definedProperties)) {
2352
2442
  pathSchema[key] = toPathSchemaInternal(
@@ -2354,7 +2444,7 @@
2354
2444
  additionalSchema,
2355
2445
  `${name}.${key}`,
2356
2446
  rootSchema,
2357
- get15(formData, [key]),
2447
+ get14(formData, [key]),
2358
2448
  _recurseList,
2359
2449
  experimental_customMergeAllOf
2360
2450
  );
@@ -2404,7 +2494,7 @@
2404
2494
  }
2405
2495
  } else if (PROPERTIES_KEY in schema) {
2406
2496
  for (const property in schema.properties) {
2407
- const field = get15(schema, [PROPERTIES_KEY, property], {});
2497
+ const field = get14(schema, [PROPERTIES_KEY, property], {});
2408
2498
  pathSchema[property] = toPathSchemaInternal(
2409
2499
  validator,
2410
2500
  field,
@@ -2412,7 +2502,7 @@
2412
2502
  rootSchema,
2413
2503
  // It's possible that formData is not an object -- this can happen if an
2414
2504
  // array item has just been added, but not populated with data yet
2415
- get15(formData, [property]),
2505
+ get14(formData, [property]),
2416
2506
  _recurseList,
2417
2507
  experimental_customMergeAllOf
2418
2508
  );
@@ -2434,8 +2524,8 @@
2434
2524
  * @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
2435
2525
  */
2436
2526
  constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
2437
- if (rootSchema && rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
2438
- this.rootSchema = makeAllReferencesAbsolute(rootSchema, get15(rootSchema, ID_KEY, "#"));
2527
+ if (rootSchema?.[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
2528
+ this.rootSchema = makeAllReferencesAbsolute(rootSchema, get14(rootSchema, ID_KEY, "#"));
2439
2529
  } else {
2440
2530
  this.rootSchema = rootSchema;
2441
2531
  }
@@ -2909,7 +2999,7 @@
2909
2999
  */
2910
3000
  getOrCreateErrorBlock(pathOfError) {
2911
3001
  const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
2912
- let errorBlock = hasPath ? get15(this.errorSchema, pathOfError) : this.errorSchema;
3002
+ let errorBlock = hasPath ? get14(this.errorSchema, pathOfError) : this.errorSchema;
2913
3003
  if (!errorBlock && pathOfError) {
2914
3004
  errorBlock = {};
2915
3005
  setWith(this.errorSchema, pathOfError, errorBlock, Object);
@@ -2935,15 +3025,15 @@
2935
3025
  */
2936
3026
  addErrors(errorOrList, pathOfError) {
2937
3027
  const errorBlock = this.getOrCreateErrorBlock(pathOfError);
2938
- let errorsList = get15(errorBlock, ERRORS_KEY);
3028
+ let errorsList = get14(errorBlock, ERRORS_KEY);
2939
3029
  if (!Array.isArray(errorsList)) {
2940
3030
  errorsList = [];
2941
3031
  errorBlock[ERRORS_KEY] = errorsList;
2942
3032
  }
2943
3033
  if (Array.isArray(errorOrList)) {
2944
- set(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, ...errorOrList])]);
3034
+ set3(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, ...errorOrList])]);
2945
3035
  } else {
2946
- set(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, errorOrList])]);
3036
+ set3(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, errorOrList])]);
2947
3037
  }
2948
3038
  return this;
2949
3039
  }
@@ -2958,7 +3048,7 @@
2958
3048
  setErrors(errorOrList, pathOfError) {
2959
3049
  const errorBlock = this.getOrCreateErrorBlock(pathOfError);
2960
3050
  const listToAdd = Array.isArray(errorOrList) ? [.../* @__PURE__ */ new Set([...errorOrList])] : [errorOrList];
2961
- set(errorBlock, ERRORS_KEY, listToAdd);
3051
+ set3(errorBlock, ERRORS_KEY, listToAdd);
2962
3052
  return this;
2963
3053
  }
2964
3054
  /** Clears the error(s) in the `ErrorSchema` at either the root level or the location within the schema described by
@@ -2970,7 +3060,7 @@
2970
3060
  */
2971
3061
  clearErrors(pathOfError) {
2972
3062
  const errorBlock = this.getOrCreateErrorBlock(pathOfError);
2973
- set(errorBlock, ERRORS_KEY, []);
3063
+ set3(errorBlock, ERRORS_KEY, []);
2974
3064
  return this;
2975
3065
  }
2976
3066
  };
@@ -2986,7 +3076,7 @@
2986
3076
  if (!aIsPlainObject && bIsPlainObject) {
2987
3077
  return keys(b);
2988
3078
  }
2989
- const unequalFields = keys(pickBy(a, (value, key) => !deepEquals_default(value, get15(b, key))));
3079
+ const unequalFields = keys(pickBy(a, (value, key) => !deepEquals_default(value, get14(b, key))));
2990
3080
  const diffFields = difference(keys(b), keys(a));
2991
3081
  return [...unequalFields, ...diffFields];
2992
3082
  }
@@ -3087,7 +3177,7 @@
3087
3177
  };
3088
3178
  function getSubmitButtonOptions(uiSchema = {}) {
3089
3179
  const uiOptions = getUiOptions(uiSchema);
3090
- if (uiOptions && uiOptions[SUBMIT_BTN_OPTIONS_KEY]) {
3180
+ if (uiOptions?.[SUBMIT_BTN_OPTIONS_KEY]) {
3091
3181
  const options = uiOptions[SUBMIT_BTN_OPTIONS_KEY];
3092
3182
  return { ...DEFAULT_OPTIONS, ...options };
3093
3183
  }
@@ -3111,7 +3201,7 @@
3111
3201
  );
3112
3202
  }
3113
3203
  function getTestIds() {
3114
- if (get15(globalThis, "process.env.NODE_ENV") !== "test") {
3204
+ if (get14(globalThis, "process.env.NODE_ENV") !== "test") {
3115
3205
  return {};
3116
3206
  }
3117
3207
  const ids = /* @__PURE__ */ new Map();
@@ -3180,11 +3270,11 @@
3180
3270
  }
3181
3271
  };
3182
3272
  function mergeWidgetOptions(AWidget) {
3183
- let MergedWidget = get15(AWidget, "MergedWidget");
3273
+ let MergedWidget = get14(AWidget, "MergedWidget");
3184
3274
  if (!MergedWidget) {
3185
- const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
3275
+ const defaultOptions = AWidget.defaultProps?.options || {};
3186
3276
  MergedWidget = ({ options, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(AWidget, { options: { ...defaultOptions, ...options }, ...props });
3187
- set(AWidget, "MergedWidget", MergedWidget);
3277
+ set3(AWidget, "MergedWidget", MergedWidget);
3188
3278
  }
3189
3279
  return MergedWidget;
3190
3280
  }
@@ -3234,7 +3324,7 @@
3234
3324
  return hashString(sortedJSONStringify(object));
3235
3325
  }
3236
3326
  function hashForSchema(schema) {
3237
- return hashObject(schema);
3327
+ return hashString(sortedJSONStringify(schema));
3238
3328
  }
3239
3329
 
3240
3330
  // src/hasWidget.ts
@@ -3285,6 +3375,8 @@
3285
3375
  function isFormDataAvailable(formData) {
3286
3376
  return !isNil(formData) && (!isObject2(formData) || Array.isArray(formData) || !isEmpty4(formData));
3287
3377
  }
3378
+
3379
+ // src/isRootSchema.ts
3288
3380
  function isRootSchema(registry, schemaToCompare) {
3289
3381
  const { rootSchema, schemaUtils } = registry;
3290
3382
  if (deepEquals_default(schemaToCompare, rootSchema)) {
@@ -3292,7 +3384,7 @@
3292
3384
  }
3293
3385
  if (REF_KEY in rootSchema) {
3294
3386
  const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
3295
- return deepEquals_default(schemaToCompare, omit(resolvedSchema, RJSF_REF_KEY));
3387
+ return deepEquals_default(schemaToCompare, resolvedSchema);
3296
3388
  }
3297
3389
  return false;
3298
3390
  }
@@ -3306,12 +3398,21 @@
3306
3398
  function localToUTC(dateString) {
3307
3399
  return dateString ? new Date(dateString).toJSON() : void 0;
3308
3400
  }
3401
+
3402
+ // src/logUnsupportedDefaultForEnum.ts
3403
+ function logUnsupportedDefaultForEnum(id, schema, enumOptions, multiple = false) {
3404
+ if (!multiple && Array.isArray(enumOptions) && schema.default !== void 0 && enumOptionsIndexForValue(schema.default, enumOptions, multiple) === void 0) {
3405
+ console.error(
3406
+ `The schema default value "${schema.default}" is not one of the values in the enum options for "${id}"`
3407
+ );
3408
+ }
3409
+ }
3309
3410
  function lookupFromFormContext(regOrFc, toLookup, fallback) {
3310
3411
  const lookupPath = [LOOKUP_MAP_NAME];
3311
3412
  if (has5(regOrFc, FORM_CONTEXT_NAME)) {
3312
3413
  lookupPath.unshift(FORM_CONTEXT_NAME);
3313
3414
  }
3314
- return get15(regOrFc, [...lookupPath, toLookup], fallback);
3415
+ return get14(regOrFc, [...lookupPath, toLookup], fallback);
3315
3416
  }
3316
3417
 
3317
3418
  // src/nameGenerators.ts
@@ -3497,13 +3598,13 @@
3497
3598
  if (schema.const) {
3498
3599
  return true;
3499
3600
  }
3500
- if (schema.enum && schema.enum.length === 1 && schema.enum[0] === true) {
3601
+ if (schema.enum?.length === 1 && schema.enum[0] === true) {
3501
3602
  return true;
3502
3603
  }
3503
- if (schema.anyOf && schema.anyOf.length === 1) {
3604
+ if (schema.anyOf?.length === 1) {
3504
3605
  return schemaRequiresTrueValue(schema.anyOf[0]);
3505
3606
  }
3506
- if (schema.oneOf && schema.oneOf.length === 1) {
3607
+ if (schema.oneOf?.length === 1) {
3507
3608
  return schemaRequiresTrueValue(schema.oneOf[0]);
3508
3609
  }
3509
3610
  if (schema.allOf) {
@@ -3512,6 +3613,35 @@
3512
3613
  }
3513
3614
  return false;
3514
3615
  }
3616
+ function SelectedOptionDescription({ hideLabel, id, multiple, options, registry, uiSchema, value }) {
3617
+ if (multiple || hideLabel) {
3618
+ return null;
3619
+ }
3620
+ const { label = true } = getUiOptions(uiSchema, registry.globalUiOptions);
3621
+ if (!label) {
3622
+ return null;
3623
+ }
3624
+ const option = options.enumOptions?.find(({ value: enumValue }) => enumOptionsIsSelected(enumValue, value));
3625
+ const description = option?.schema?.description;
3626
+ if (!description) {
3627
+ return null;
3628
+ }
3629
+ const DescriptionFieldTemplate = getTemplate(
3630
+ "DescriptionFieldTemplate",
3631
+ registry,
3632
+ options
3633
+ );
3634
+ return /* @__PURE__ */ jsxRuntime.jsx(
3635
+ DescriptionFieldTemplate,
3636
+ {
3637
+ id: descriptionId(id),
3638
+ description,
3639
+ schema: option.schema,
3640
+ uiSchema,
3641
+ registry
3642
+ }
3643
+ );
3644
+ }
3515
3645
 
3516
3646
  // src/shallowEquals.ts
3517
3647
  function shallowEquals(a, b) {
@@ -3753,7 +3883,7 @@
3753
3883
  function addNameToDataURL(dataURL, name) {
3754
3884
  return dataURL.replace(";base64", `;name=${encodeURIComponent(name)};base64`);
3755
3885
  }
3756
- function processFile(file) {
3886
+ async function processFile(file) {
3757
3887
  const { name, size, type } = file;
3758
3888
  return new Promise((resolve, reject) => {
3759
3889
  const reader = new window.FileReader();
@@ -3778,7 +3908,7 @@
3778
3908
  reader.readAsDataURL(file);
3779
3909
  });
3780
3910
  }
3781
- function processFiles(files) {
3911
+ async function processFiles(files) {
3782
3912
  return Promise.all(Array.from(files).map(processFile));
3783
3913
  }
3784
3914
  function extractFileInfo(dataURLs) {
@@ -3911,6 +4041,7 @@
3911
4041
  TranslatableString2["AddButton"] = "Add";
3912
4042
  TranslatableString2["AddItemButton"] = "Add Item";
3913
4043
  TranslatableString2["CopyButton"] = "Copy";
4044
+ TranslatableString2["ExpandButton"] = "Expand Cycle";
3914
4045
  TranslatableString2["MoveDownButton"] = "Move down";
3915
4046
  TranslatableString2["MoveUpButton"] = "Move up";
3916
4047
  TranslatableString2["RemoveButton"] = "Remove";
@@ -3931,6 +4062,7 @@
3931
4062
  TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
3932
4063
  TranslatableString2["KeyLabel"] = "%1 Key";
3933
4064
  TranslatableString2["DeprecatedLabel"] = "%1 (deprecated)";
4065
+ TranslatableString2["CycleDetected"] = 'Circular reference ($ref cycle) detected for field "%1". You may choose to expand to the next cycle break';
3934
4066
  TranslatableString2["InvalidObjectField"] = 'Invalid "%1" object field configuration: _%2_.';
3935
4067
  TranslatableString2["UnsupportedField"] = "Unsupported field schema.";
3936
4068
  TranslatableString2["UnsupportedFieldWithId"] = "Unsupported field schema for field `%1`.";
@@ -3964,7 +4096,7 @@
3964
4096
  * @param hash - The hash value at which to map the schema
3965
4097
  */
3966
4098
  addSchema(schema, hash) {
3967
- const key = get15(schema, ID_KEY, hash);
4099
+ const key = get14(schema, ID_KEY, hash);
3968
4100
  const identifiedSchema = { ...schema, [ID_KEY]: key };
3969
4101
  const existing = this.schemaMap[key];
3970
4102
  if (!existing) {
@@ -4086,10 +4218,13 @@
4086
4218
  exports.REF_KEY = REF_KEY;
4087
4219
  exports.REQUIRED_KEY = REQUIRED_KEY;
4088
4220
  exports.RJSF_ADDITIONAL_PROPERTIES_FLAG = RJSF_ADDITIONAL_PROPERTIES_FLAG;
4221
+ exports.RJSF_PREFIX_KEY = RJSF_PREFIX_KEY;
4222
+ exports.RJSF_REF_CYCLE_KEY = RJSF_REF_CYCLE_KEY;
4089
4223
  exports.RJSF_REF_KEY = RJSF_REF_KEY;
4090
4224
  exports.ROOT_SCHEMA_PREFIX = ROOT_SCHEMA_PREFIX;
4091
4225
  exports.SCHEMA_KEY = SCHEMA_KEY;
4092
4226
  exports.SUBMIT_BTN_OPTIONS_KEY = SUBMIT_BTN_OPTIONS_KEY;
4227
+ exports.SelectedOptionDescription = SelectedOptionDescription;
4093
4228
  exports.TranslatableString = TranslatableString;
4094
4229
  exports.UI_DEFINITIONS_KEY = UI_DEFINITIONS_KEY;
4095
4230
  exports.UI_FIELD_KEY = UI_FIELD_KEY;
@@ -4126,6 +4261,7 @@
4126
4261
  exports.getChangedFields = getChangedFields;
4127
4262
  exports.getClosestMatchingOption = getClosestMatchingOption;
4128
4263
  exports.getDateElementProps = getDateElementProps;
4264
+ exports.getDecimalSeparator = getDecimalSeparator;
4129
4265
  exports.getDefaultFormState = getDefaultFormState;
4130
4266
  exports.getDiscriminatorFieldFromSchema = getDiscriminatorFieldFromSchema;
4131
4267
  exports.getDisplayLabel = getDisplayLabel;
@@ -4160,6 +4296,7 @@
4160
4296
  exports.isValueEmpty = isValueEmpty;
4161
4297
  exports.labelValue = labelValue;
4162
4298
  exports.localToUTC = localToUTC;
4299
+ exports.logUnsupportedDefaultForEnum = logUnsupportedDefaultForEnum;
4163
4300
  exports.lookupFromFormContext = lookupFromFormContext;
4164
4301
  exports.mergeDefaultsWithFormData = mergeDefaultsWithFormData;
4165
4302
  exports.mergeObjects = mergeObjects;