@rjsf/utils 6.1.1 → 6.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/utils.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lodash/isPlainObject'), require('lodash/isEqualWith'), require('lodash/get'), require('lodash/has'), require('lodash/isEqual'), require('lodash/set'), require('lodash/times'), require('lodash/transform'), require('lodash/merge'), require('lodash/flattenDeep'), require('lodash/uniq'), require('json-schema-merge-allof'), require('jsonpointer'), require('lodash/omit'), require('lodash/isObject'), require('lodash/isEmpty'), require('fast-uri'), require('lodash/isString'), require('lodash/union'), require('lodash/isNumber'), require('lodash/reduce'), require('lodash/isNil'), require('lodash/cloneDeep'), require('lodash/setWith'), require('lodash/keys'), require('lodash/pickBy'), require('lodash/difference'), require('lodash/uniqueId'), require('react'), require('react-is'), require('react/jsx-runtime'), require('lodash/toPath'), require('lodash/forEach')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'lodash/isPlainObject', 'lodash/isEqualWith', 'lodash/get', 'lodash/has', 'lodash/isEqual', 'lodash/set', 'lodash/times', 'lodash/transform', 'lodash/merge', 'lodash/flattenDeep', 'lodash/uniq', 'json-schema-merge-allof', 'jsonpointer', 'lodash/omit', 'lodash/isObject', 'lodash/isEmpty', 'fast-uri', 'lodash/isString', 'lodash/union', 'lodash/isNumber', 'lodash/reduce', 'lodash/isNil', 'lodash/cloneDeep', 'lodash/setWith', 'lodash/keys', 'lodash/pickBy', 'lodash/difference', '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.isEqualWith, global.get14, global.has5, global.isEqual2, global.set, global.times, global.transform, global.merge, global.flattenDeep, global.uniq, global.mergeAllOf, global.jsonpointer, global.omit, global.isObject2, global.isEmpty4, global.UriResolver, global.isString, global.union, global.isNumber, global.reduce, global.isNil, global.cloneDeep, global.setWith, global.keys, global.pickBy, global.difference, global.uniqueId, global.react, global.ReactIs, global.jsxRuntime, global.toPath, global.forEach));
5
- })(this, (function (exports, isPlainObject2, isEqualWith, get14, has5, isEqual2, set, times, transform, merge, flattenDeep, uniq, mergeAllOf, jsonpointer, omit, isObject2, isEmpty4, UriResolver, isString, union, isNumber, reduce, isNil, cloneDeep, setWith, keys, pickBy, difference, uniqueId, react, ReactIs, jsxRuntime, toPath, forEach) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('lodash/isPlainObject'), require('lodash/isEqualWith'), require('lodash/get'), require('lodash/has'), require('lodash/isEqual'), require('lodash/set'), require('lodash/times'), require('lodash/transform'), require('lodash/merge'), require('lodash/flattenDeep'), require('lodash/uniq'), require('lodash/isEmpty'), require('@x0k/json-schema-merge'), require('@x0k/json-schema-merge/lib/array'), require('jsonpointer'), require('lodash/omit'), require('lodash/isObject'), require('fast-uri'), require('lodash/isString'), require('lodash/union'), require('lodash/isNumber'), require('lodash/reduce'), require('lodash/isNil'), require('lodash/pick'), require('lodash/cloneDeep'), require('lodash/setWith'), require('lodash/keys'), require('lodash/pickBy'), require('lodash/difference'), require('lodash/uniqueId'), require('react'), require('react-is'), require('react/jsx-runtime'), require('lodash/toPath'), require('lodash/forEach')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'lodash/isPlainObject', 'lodash/isEqualWith', 'lodash/get', 'lodash/has', 'lodash/isEqual', 'lodash/set', 'lodash/times', 'lodash/transform', 'lodash/merge', 'lodash/flattenDeep', 'lodash/uniq', 'lodash/isEmpty', '@x0k/json-schema-merge', '@x0k/json-schema-merge/lib/array', 'jsonpointer', 'lodash/omit', 'lodash/isObject', 'fast-uri', 'lodash/isString', 'lodash/union', 'lodash/isNumber', 'lodash/reduce', 'lodash/isNil', 'lodash/pick', 'lodash/cloneDeep', 'lodash/setWith', 'lodash/keys', 'lodash/pickBy', 'lodash/difference', '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.isEqualWith, global.get16, global.has5, global.isEqual2, global.set, global.times, global.transform, global.merge, global.flattenDeep, global.uniq, global.isEmpty4, global.jsonSchemaMerge, global.array, global.jsonpointer, global.omit, global.isObject2, global.UriResolver, global.isString, global.union, global.isNumber, global.reduce, global.isNil, global.pick, global.cloneDeep, global.setWith, global.keys, global.pickBy, global.difference, global.uniqueId, global.react, global.ReactIs, global.jsxRuntime, global.toPath, global.forEach));
5
+ })(this, (function (exports, isPlainObject2, isEqualWith, get16, has5, isEqual2, set, times, transform, merge, flattenDeep, uniq, isEmpty4, jsonSchemaMerge, array, jsonpointer, omit, isObject2, UriResolver, isString, union, isNumber, reduce, isNil, pick, cloneDeep, setWith, keys, pickBy, difference, uniqueId, react, ReactIs, jsxRuntime, toPath, forEach) { 'use strict';
6
6
 
7
7
  // src/isObject.ts
8
8
  function isObject(thing) {
@@ -176,7 +176,7 @@
176
176
  return void 0;
177
177
  }
178
178
  function makeAllReferencesAbsolute(schema, baseURI) {
179
- const currentURI = get14(schema, ID_KEY, baseURI);
179
+ const currentURI = get16(schema, ID_KEY, baseURI);
180
180
  if (REF_KEY in schema) {
181
181
  schema = { ...schema, [REF_KEY]: UriResolver.resolve(currentURI, schema[REF_KEY]) };
182
182
  }
@@ -197,7 +197,7 @@
197
197
  const remaining = omit(object, [key]);
198
198
  return [remaining, value];
199
199
  }
200
- function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get14(rootSchema, [ID_KEY])) {
200
+ function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get16(rootSchema, [ID_KEY])) {
201
201
  const ref = $ref || "";
202
202
  let current = void 0;
203
203
  if (ref.startsWith("#")) {
@@ -247,13 +247,13 @@
247
247
  }
248
248
  return current;
249
249
  }
250
- function findSchemaDefinition($ref, rootSchema = {}, baseURI = get14(rootSchema, [ID_KEY])) {
250
+ function findSchemaDefinition($ref, rootSchema = {}, baseURI = get16(rootSchema, [ID_KEY])) {
251
251
  const recurseList = [];
252
252
  return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
253
253
  }
254
254
  function getDiscriminatorFieldFromSchema(schema) {
255
255
  let discriminator;
256
- const maybeString = get14(schema, DISCRIMINATOR_PATH);
256
+ const maybeString = get16(schema, DISCRIMINATOR_PATH);
257
257
  if (isString(maybeString)) {
258
258
  discriminator = maybeString;
259
259
  } else if (maybeString !== void 0) {
@@ -324,13 +324,13 @@
324
324
  }
325
325
  function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
326
326
  if (formData && discriminatorField) {
327
- const value = get14(formData, discriminatorField);
327
+ const value = get16(formData, discriminatorField);
328
328
  if (value === void 0) {
329
329
  return;
330
330
  }
331
331
  for (let i = 0; i < options.length; i++) {
332
332
  const option = options[i];
333
- const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
333
+ const discriminator = get16(option, [PROPERTIES_KEY, discriminatorField], {});
334
334
  if (discriminator.type === "object" || discriminator.type === "array") {
335
335
  continue;
336
336
  }
@@ -357,8 +357,8 @@
357
357
  for (let i = 0; i < options.length; i++) {
358
358
  const option = options[i];
359
359
  if (discriminatorField && has5(option, [PROPERTIES_KEY, discriminatorField])) {
360
- const value = get14(formData, discriminatorField);
361
- const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
360
+ const value = get16(formData, discriminatorField);
361
+ const discriminator = get16(option, [PROPERTIES_KEY, discriminatorField], {});
362
362
  if (validator.isValid(discriminator, value, rootSchema)) {
363
363
  return i;
364
364
  }
@@ -391,6 +391,8 @@
391
391
  }
392
392
  return 0;
393
393
  }
394
+
395
+ // src/schema/retrieveSchema.ts
394
396
  function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
395
397
  return retrieveSchemaInternal(
396
398
  validator,
@@ -636,7 +638,7 @@
636
638
  validator,
637
639
  { [ALL_OF_KEY]: Object.values(matchingProperties) },
638
640
  rootSchema,
639
- get14(formData, [key]),
641
+ get16(formData, [key]),
640
642
  experimental_customMergeAllOf
641
643
  );
642
644
  set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
@@ -649,7 +651,7 @@
649
651
  if (REF_KEY in schema.additionalProperties) {
650
652
  additionalProperties = retrieveSchema(
651
653
  validator,
652
- { [REF_KEY]: get14(schema.additionalProperties, [REF_KEY]) },
654
+ { [REF_KEY]: get16(schema.additionalProperties, [REF_KEY]) },
653
655
  rootSchema,
654
656
  formData,
655
657
  experimental_customMergeAllOf
@@ -662,10 +664,10 @@
662
664
  ...schema.additionalProperties
663
665
  };
664
666
  } else {
665
- additionalProperties = { type: guessType(get14(formData, [key])) };
667
+ additionalProperties = { type: guessType(get16(formData, [key])) };
666
668
  }
667
669
  } else {
668
- additionalProperties = { type: guessType(get14(formData, [key])) };
670
+ additionalProperties = { type: guessType(get16(formData, [key])) };
669
671
  }
670
672
  schema.properties[key] = additionalProperties;
671
673
  set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
@@ -676,6 +678,15 @@
676
678
  });
677
679
  return schema;
678
680
  }
681
+ var { compareSchemaDefinitions, compareSchemaValues } = jsonSchemaMerge.createComparator();
682
+ var { mergeArrayOfSchemaDefinitions } = jsonSchemaMerge.createMerger({
683
+ intersectJson: array.createIntersector(compareSchemaValues),
684
+ deduplicateJsonSchemaDef: array.createDeduplicator(compareSchemaDefinitions)
685
+ });
686
+ var shallowAllOfMerge = jsonSchemaMerge.createShallowAllOfMerge(mergeArrayOfSchemaDefinitions);
687
+ function mergeAllOf(schema) {
688
+ return shallowAllOfMerge(schema);
689
+ }
679
690
  function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
680
691
  if (!isObject(schema)) {
681
692
  return [{}];
@@ -721,12 +732,7 @@
721
732
  if (withContainsSchemas.length) {
722
733
  resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
723
734
  }
724
- resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema, {
725
- deep: false,
726
- resolvers: {
727
- $defs: mergeAllOf.options.resolvers.definitions
728
- }
729
- });
735
+ resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema);
730
736
  if (withContainsSchemas.length) {
731
737
  resolvedSchema.allOf = withContainsSchemas;
732
738
  }
@@ -745,7 +751,7 @@
745
751
  validator,
746
752
  { allOf: [schema2.properties[key], ...Object.values(matchingProperties)] },
747
753
  rootSchema,
748
- get14(rawFormData, [key]),
754
+ get16(rawFormData, [key]),
749
755
  experimental_customMergeAllOf
750
756
  );
751
757
  }
@@ -817,7 +823,7 @@
817
823
  function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
818
824
  let schemas = [resolvedSchema];
819
825
  for (const dependencyKey in dependencies) {
820
- if (!expandAllBranches && get14(formData, [dependencyKey]) === void 0) {
826
+ if (!expandAllBranches && get16(formData, [dependencyKey]) === void 0) {
821
827
  continue;
822
828
  }
823
829
  if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {
@@ -948,11 +954,11 @@
948
954
  const xxxOfs = schema[xxx].map(
949
955
  (xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
950
956
  );
951
- const data = get14(formData, selectorField);
957
+ const data = get16(formData, selectorField);
952
958
  if (data !== void 0) {
953
959
  return xxxOfs.find((xxx2) => {
954
960
  return isEqual2(
955
- get14(xxx2, [PROPERTIES_KEY, selectorField, DEFAULT_KEY], get14(xxx2, [PROPERTIES_KEY, selectorField, CONST_KEY])),
961
+ get16(xxx2, [PROPERTIES_KEY, selectorField, DEFAULT_KEY], get16(xxx2, [PROPERTIES_KEY, selectorField, CONST_KEY])),
956
962
  data
957
963
  );
958
964
  });
@@ -971,7 +977,7 @@
971
977
  const pathList = Array.isArray(path) ? path : path.split(".");
972
978
  const [part, ...nestedPath] = pathList;
973
979
  if (part && has5(fieldSchema, part)) {
974
- fieldSchema = get14(fieldSchema, part);
980
+ fieldSchema = get16(fieldSchema, part);
975
981
  return getFromSchemaInternal(
976
982
  validator,
977
983
  rootSchema,
@@ -1013,7 +1019,7 @@
1013
1019
  parentField,
1014
1020
  fieldName,
1015
1021
  ONE_OF_KEY,
1016
- get14(formData, subPath),
1022
+ get16(formData, subPath),
1017
1023
  experimental_customMergeAllOf
1018
1024
  );
1019
1025
  } else if (has5(parentField, ANY_OF_KEY)) {
@@ -1023,7 +1029,7 @@
1023
1029
  parentField,
1024
1030
  fieldName,
1025
1031
  ANY_OF_KEY,
1026
- get14(formData, subPath),
1032
+ get16(formData, subPath),
1027
1033
  experimental_customMergeAllOf
1028
1034
  );
1029
1035
  }
@@ -1091,7 +1097,7 @@
1091
1097
  totalScore += reduce(
1092
1098
  schema.properties,
1093
1099
  (score, value, key) => {
1094
- const formValue = get14(formData, key);
1100
+ const formValue = get16(formData, key);
1095
1101
  if (typeof value === "boolean") {
1096
1102
  return score;
1097
1103
  }
@@ -1118,7 +1124,7 @@
1118
1124
  validator,
1119
1125
  rootSchema,
1120
1126
  formValue,
1121
- get14(value, key2),
1127
+ get16(value, key2),
1122
1128
  -1,
1123
1129
  discriminator,
1124
1130
  experimental_customMergeAllOf
@@ -1220,22 +1226,22 @@
1220
1226
  if (isObject(formData)) {
1221
1227
  const acc = Object.assign({}, defaults);
1222
1228
  return Object.keys(formData).reduce((acc2, key) => {
1223
- const keyValue = get14(formData, key);
1229
+ const keyValue = get16(formData, key);
1224
1230
  const keyExistsInDefaults = isObject(defaults) && key in defaults;
1225
1231
  const keyExistsInFormData = key in formData;
1226
- const keyDefault = get14(defaults, key) ?? {};
1232
+ const keyDefault = get16(defaults, key) ?? {};
1227
1233
  const defaultValueIsNestedObject = keyExistsInDefaults && Object.entries(keyDefault).some(([, v]) => isObject(v));
1228
- const keyDefaultIsObject = keyExistsInDefaults && isObject(get14(defaults, key));
1234
+ const keyDefaultIsObject = keyExistsInDefaults && isObject(get16(defaults, key));
1229
1235
  const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
1230
1236
  if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
1231
1237
  acc2[key] = {
1232
- ...get14(defaults, key),
1238
+ ...get16(defaults, key),
1233
1239
  ...keyValue
1234
1240
  };
1235
1241
  return acc2;
1236
1242
  }
1237
1243
  acc2[key] = mergeDefaultsWithFormData(
1238
- get14(defaults, key),
1244
+ get16(defaults, key),
1239
1245
  keyValue,
1240
1246
  mergeExtraArrayDefaults,
1241
1247
  defaultSupercedesUndefined,
@@ -1354,8 +1360,8 @@
1354
1360
  let value;
1355
1361
  let label = title;
1356
1362
  if (selectorField) {
1357
- const innerSchema = get14(aSchema, [PROPERTIES_KEY, selectorField], {});
1358
- value = get14(innerSchema, DEFAULT_KEY, get14(innerSchema, CONST_KEY));
1363
+ const innerSchema = get16(aSchema, [PROPERTIES_KEY, selectorField], {});
1364
+ value = get16(innerSchema, DEFAULT_KEY, get16(innerSchema, CONST_KEY));
1359
1365
  label = label || innerSchema?.title || aSchema.title || String(value);
1360
1366
  } else {
1361
1367
  value = toConstant(aSchema);
@@ -1442,7 +1448,7 @@
1442
1448
  let updatedRecurseList = _recurseList;
1443
1449
  if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
1444
1450
  defaults = schema[CONST_KEY];
1445
- } else if (isObject(defaults) && isObject(schema.default)) {
1451
+ } else if (isObject(defaults) && isObject(schema.default) && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
1446
1452
  defaults = mergeObjects(defaults, schema.default);
1447
1453
  } else if (DEFAULT_KEY in schema && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
1448
1454
  defaults = schema.default;
@@ -1452,7 +1458,8 @@
1452
1458
  updatedRecurseList = _recurseList.concat(refName);
1453
1459
  schemaToCompute = findSchemaDefinition(refName, rootSchema);
1454
1460
  }
1455
- if (schemaToCompute && !defaults) {
1461
+ const hasNoExistingData = rawFormData === void 0 || isObject(rawFormData) && isEmpty4(rawFormData);
1462
+ if (schemaToCompute && !defaults && hasNoExistingData) {
1456
1463
  defaults = schema.default;
1457
1464
  }
1458
1465
  if (shouldMergeDefaultsIntoFormData && schemaToCompute && !isObject(rawFormData)) {
@@ -1596,11 +1603,12 @@
1596
1603
  {
1597
1604
  const formData = isObject(rawFormData) ? rawFormData : {};
1598
1605
  const schema = rawSchema;
1599
- const retrievedSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
1606
+ const shouldRetrieveSchema = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema || experimental_defaultFormStateBehavior?.emptyObjectFields !== "skipEmptyDefaults" && IF_KEY in schema;
1607
+ const retrievedSchema = shouldRetrieveSchema ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
1600
1608
  const parentConst = retrievedSchema[CONST_KEY];
1601
1609
  const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
1602
1610
  (acc, key) => {
1603
- const propertySchema = get14(retrievedSchema, [PROPERTIES_KEY, key], {});
1611
+ const propertySchema = get16(retrievedSchema, [PROPERTIES_KEY, key], {});
1604
1612
  const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
1605
1613
  const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
1606
1614
  const computedDefault = computeDefaults(validator, propertySchema, {
@@ -1609,8 +1617,8 @@
1609
1617
  experimental_defaultFormStateBehavior,
1610
1618
  experimental_customMergeAllOf,
1611
1619
  includeUndefinedValues: includeUndefinedValues === true,
1612
- parentDefaults: get14(defaults, [key]),
1613
- rawFormData: get14(formData, [key]),
1620
+ parentDefaults: get16(defaults, [key]),
1621
+ rawFormData: get16(formData, [key]),
1614
1622
  required: retrievedSchema.required?.includes(key),
1615
1623
  shouldMergeDefaultsIntoFormData,
1616
1624
  initialDefaultsGenerated
@@ -1648,8 +1656,8 @@
1648
1656
  experimental_defaultFormStateBehavior,
1649
1657
  experimental_customMergeAllOf,
1650
1658
  includeUndefinedValues: includeUndefinedValues === true,
1651
- parentDefaults: get14(defaults, [key]),
1652
- rawFormData: get14(formData, [key]),
1659
+ parentDefaults: get16(defaults, [key]),
1660
+ rawFormData: get16(formData, [key]),
1653
1661
  required: retrievedSchema.required?.includes(key),
1654
1662
  shouldMergeDefaultsIntoFormData,
1655
1663
  initialDefaultsGenerated
@@ -1690,12 +1698,14 @@
1690
1698
  if (Array.isArray(defaults)) {
1691
1699
  defaults = defaults.map((item, idx) => {
1692
1700
  const schemaItem = getInnerSchemaForArrayItem(schema, 2 /* Fallback */, idx);
1701
+ const itemFormData = Array.isArray(rawFormData) ? rawFormData[idx] : void 0;
1693
1702
  return computeDefaults(validator, schemaItem, {
1694
1703
  rootSchema,
1695
1704
  _recurseList,
1696
1705
  experimental_defaultFormStateBehavior,
1697
1706
  experimental_customMergeAllOf,
1698
1707
  parentDefaults: item,
1708
+ rawFormData: itemFormData,
1699
1709
  required,
1700
1710
  shouldMergeDefaultsIntoFormData,
1701
1711
  initialDefaultsGenerated
@@ -1714,7 +1724,7 @@
1714
1724
  experimental_defaultFormStateBehavior,
1715
1725
  experimental_customMergeAllOf,
1716
1726
  rawFormData: item,
1717
- parentDefaults: get14(defaults, [idx]),
1727
+ parentDefaults: get16(defaults, [idx]),
1718
1728
  required,
1719
1729
  shouldMergeDefaultsIntoFormData,
1720
1730
  initialDefaultsGenerated
@@ -1840,7 +1850,7 @@
1840
1850
  let displayLabel = Boolean(label);
1841
1851
  if (displayLabel) {
1842
1852
  const schemaType = getSchemaType(schema);
1843
- const addedByAdditionalProperty = get14(schema, ADDITIONAL_PROPERTY_FLAG, false);
1853
+ const addedByAdditionalProperty = get16(schema, ADDITIONAL_PROPERTY_FLAG, false);
1844
1854
  if (schemaType === "array") {
1845
1855
  displayLabel = addedByAdditionalProperty || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || isFilesArray(validator, schema, uiSchema, rootSchema, experimental_customMergeAllOf) || isCustomWidget(uiSchema);
1846
1856
  }
@@ -1856,25 +1866,183 @@
1856
1866
  }
1857
1867
  return displayLabel;
1858
1868
  }
1869
+ function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
1870
+ if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema || IF_KEY in schema) {
1871
+ const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
1872
+ const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));
1873
+ if (sameSchemaIndex === -1) {
1874
+ return toPathSchemaInternal(
1875
+ validator,
1876
+ _schema,
1877
+ name,
1878
+ rootSchema,
1879
+ formData,
1880
+ _recurseList.concat(_schema),
1881
+ experimental_customMergeAllOf
1882
+ );
1883
+ }
1884
+ }
1885
+ let pathSchema = {
1886
+ [NAME_KEY]: name.replace(/^\./, "")
1887
+ };
1888
+ if (ONE_OF_KEY in schema || ANY_OF_KEY in schema) {
1889
+ const xxxOf = ONE_OF_KEY in schema ? schema.oneOf : schema.anyOf;
1890
+ const discriminator = getDiscriminatorFieldFromSchema(schema);
1891
+ const index = getClosestMatchingOption(
1892
+ validator,
1893
+ rootSchema,
1894
+ formData,
1895
+ xxxOf,
1896
+ 0,
1897
+ discriminator,
1898
+ experimental_customMergeAllOf
1899
+ );
1900
+ const _schema = xxxOf[index];
1901
+ pathSchema = {
1902
+ ...pathSchema,
1903
+ ...toPathSchemaInternal(
1904
+ validator,
1905
+ _schema,
1906
+ name,
1907
+ rootSchema,
1908
+ formData,
1909
+ _recurseList,
1910
+ experimental_customMergeAllOf
1911
+ )
1912
+ };
1913
+ }
1914
+ if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
1915
+ set(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
1916
+ }
1917
+ if (ITEMS_KEY in schema && Array.isArray(formData)) {
1918
+ const { items: schemaItems, additionalItems: schemaAdditionalItems } = schema;
1919
+ if (Array.isArray(schemaItems)) {
1920
+ formData.forEach((element, i) => {
1921
+ if (schemaItems[i]) {
1922
+ pathSchema[i] = toPathSchemaInternal(
1923
+ validator,
1924
+ schemaItems[i],
1925
+ `${name}.${i}`,
1926
+ rootSchema,
1927
+ element,
1928
+ _recurseList,
1929
+ experimental_customMergeAllOf
1930
+ );
1931
+ } else if (schemaAdditionalItems) {
1932
+ pathSchema[i] = toPathSchemaInternal(
1933
+ validator,
1934
+ schemaAdditionalItems,
1935
+ `${name}.${i}`,
1936
+ rootSchema,
1937
+ element,
1938
+ _recurseList,
1939
+ experimental_customMergeAllOf
1940
+ );
1941
+ } else {
1942
+ console.warn(`Unable to generate path schema for "${name}.${i}". No schema defined for it`);
1943
+ }
1944
+ });
1945
+ } else {
1946
+ formData.forEach((element, i) => {
1947
+ pathSchema[i] = toPathSchemaInternal(
1948
+ validator,
1949
+ schemaItems,
1950
+ `${name}.${i}`,
1951
+ rootSchema,
1952
+ element,
1953
+ _recurseList,
1954
+ experimental_customMergeAllOf
1955
+ );
1956
+ });
1957
+ }
1958
+ } else if (PROPERTIES_KEY in schema) {
1959
+ for (const property in schema.properties) {
1960
+ const field = get16(schema, [PROPERTIES_KEY, property], {});
1961
+ pathSchema[property] = toPathSchemaInternal(
1962
+ validator,
1963
+ field,
1964
+ `${name}.${property}`,
1965
+ rootSchema,
1966
+ // It's possible that formData is not an object -- this can happen if an
1967
+ // array item has just been added, but not populated with data yet
1968
+ get16(formData, [property]),
1969
+ _recurseList,
1970
+ experimental_customMergeAllOf
1971
+ );
1972
+ }
1973
+ }
1974
+ return pathSchema;
1975
+ }
1976
+ function toPathSchema(validator, schema, name = "", rootSchema, formData, experimental_customMergeAllOf) {
1977
+ return toPathSchemaInternal(validator, schema, name, rootSchema, formData, void 0, experimental_customMergeAllOf);
1978
+ }
1979
+
1980
+ // src/schema/omitExtraData.ts
1981
+ function getUsedFormData(formData, fields) {
1982
+ if (fields.length === 0 && typeof formData !== "object") {
1983
+ return formData;
1984
+ }
1985
+ const data = pick(formData, fields);
1986
+ if (Array.isArray(formData)) {
1987
+ return Object.keys(data).map((key) => data[key]);
1988
+ }
1989
+ return data;
1990
+ }
1991
+ function getFieldNames(pathSchema, formData) {
1992
+ const formValueHasData = (value, isLeaf) => typeof value !== "object" || isEmpty4(value) || isLeaf && !isEmpty4(value);
1993
+ const getAllPaths = (_obj, acc = [], paths = [[]]) => {
1994
+ const objKeys = Object.keys(_obj);
1995
+ objKeys.forEach((key) => {
1996
+ const data = _obj[key];
1997
+ if (typeof data === "object") {
1998
+ const newPaths = paths.map((path) => [...path, key]);
1999
+ if (data[RJSF_ADDITIONAL_PROPERTIES_FLAG] && data[NAME_KEY] !== "") {
2000
+ acc.push(data[NAME_KEY]);
2001
+ } else {
2002
+ getAllPaths(data, acc, newPaths);
2003
+ }
2004
+ } else if (key === NAME_KEY && data !== "") {
2005
+ paths.forEach((path) => {
2006
+ const formValue = get16(formData, path);
2007
+ const isLeaf = objKeys.length === 1;
2008
+ if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
2009
+ acc.push(path);
2010
+ }
2011
+ });
2012
+ }
2013
+ });
2014
+ return acc;
2015
+ };
2016
+ return getAllPaths(pathSchema);
2017
+ }
2018
+ function omitExtraData(validator, schema, rootSchema = {}, formData) {
2019
+ const retrievedSchema = retrieveSchema(validator, schema, rootSchema, formData);
2020
+ const pathSchema = toPathSchema(validator, retrievedSchema, "", rootSchema, formData);
2021
+ const fieldNames = getFieldNames(pathSchema, formData);
2022
+ const lodashFieldNames = fieldNames.map(
2023
+ (fieldPaths) => Array.isArray(fieldPaths) ? fieldPaths.join(".") : fieldPaths
2024
+ );
2025
+ return getUsedFormData(formData, lodashFieldNames);
2026
+ }
1859
2027
  var NO_VALUE = Symbol("no Value");
1860
2028
  function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {
1861
2029
  let newFormData;
1862
2030
  if (has5(newSchema, PROPERTIES_KEY)) {
1863
2031
  const removeOldSchemaData = {};
1864
2032
  if (has5(oldSchema, PROPERTIES_KEY)) {
1865
- const properties = get14(oldSchema, PROPERTIES_KEY, {});
2033
+ const properties = get16(oldSchema, PROPERTIES_KEY, {});
1866
2034
  Object.keys(properties).forEach((key) => {
1867
2035
  if (has5(data, key)) {
1868
2036
  removeOldSchemaData[key] = void 0;
1869
2037
  }
1870
2038
  });
1871
2039
  }
1872
- const keys2 = Object.keys(get14(newSchema, PROPERTIES_KEY, {}));
2040
+ const keys2 = Object.keys(get16(newSchema, PROPERTIES_KEY, {}));
1873
2041
  const nestedData = {};
1874
2042
  keys2.forEach((key) => {
1875
- const formValue = get14(data, key);
1876
- let oldKeyedSchema = get14(oldSchema, [PROPERTIES_KEY, key], {});
1877
- let newKeyedSchema = get14(newSchema, [PROPERTIES_KEY, key], {});
2043
+ const formValue = get16(data, key);
2044
+ let oldKeyedSchema = get16(oldSchema, [PROPERTIES_KEY, key], {});
2045
+ let newKeyedSchema = get16(newSchema, [PROPERTIES_KEY, key], {});
1878
2046
  if (has5(oldKeyedSchema, REF_KEY)) {
1879
2047
  oldKeyedSchema = retrieveSchema(
1880
2048
  validator,
@@ -1893,8 +2061,8 @@
1893
2061
  experimental_customMergeAllOf
1894
2062
  );
1895
2063
  }
1896
- const oldSchemaTypeForKey = get14(oldKeyedSchema, "type");
1897
- const newSchemaTypeForKey = get14(newKeyedSchema, "type");
2064
+ const oldSchemaTypeForKey = get16(oldKeyedSchema, "type");
2065
+ const newSchemaTypeForKey = get16(newKeyedSchema, "type");
1898
2066
  if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
1899
2067
  if (has5(removeOldSchemaData, key)) {
1900
2068
  delete removeOldSchemaData[key];
@@ -1912,17 +2080,17 @@
1912
2080
  nestedData[key] = itemData;
1913
2081
  }
1914
2082
  } else {
1915
- const newOptionDefault = get14(newKeyedSchema, "default", NO_VALUE);
1916
- const oldOptionDefault = get14(oldKeyedSchema, "default", NO_VALUE);
2083
+ const newOptionDefault = get16(newKeyedSchema, "default", NO_VALUE);
2084
+ const oldOptionDefault = get16(oldKeyedSchema, "default", NO_VALUE);
1917
2085
  if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
1918
2086
  if (oldOptionDefault === formValue) {
1919
2087
  removeOldSchemaData[key] = newOptionDefault;
1920
- } else if (get14(newKeyedSchema, "readOnly") === true) {
2088
+ } else if (get16(newKeyedSchema, "readOnly") === true) {
1921
2089
  removeOldSchemaData[key] = void 0;
1922
2090
  }
1923
2091
  }
1924
- const newOptionConst = get14(newKeyedSchema, "const", NO_VALUE);
1925
- const oldOptionConst = get14(oldKeyedSchema, "const", NO_VALUE);
2092
+ const newOptionConst = get16(newKeyedSchema, "const", NO_VALUE);
2093
+ const oldOptionConst = get16(oldKeyedSchema, "const", NO_VALUE);
1926
2094
  if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
1927
2095
  removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
1928
2096
  }
@@ -1934,9 +2102,9 @@
1934
2102
  ...removeOldSchemaData,
1935
2103
  ...nestedData
1936
2104
  };
1937
- } else if (get14(oldSchema, "type") === "array" && get14(newSchema, "type") === "array" && Array.isArray(data)) {
1938
- let oldSchemaItems = get14(oldSchema, "items");
1939
- let newSchemaItems = get14(newSchema, "items");
2105
+ } else if (get16(oldSchema, "type") === "array" && get16(newSchema, "type") === "array" && Array.isArray(data)) {
2106
+ let oldSchemaItems = get16(oldSchema, "items");
2107
+ let newSchemaItems = get16(newSchema, "items");
1940
2108
  if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
1941
2109
  if (has5(oldSchemaItems, REF_KEY)) {
1942
2110
  oldSchemaItems = retrieveSchema(
@@ -1956,10 +2124,10 @@
1956
2124
  experimental_customMergeAllOf
1957
2125
  );
1958
2126
  }
1959
- const oldSchemaType = get14(oldSchemaItems, "type");
1960
- const newSchemaType = get14(newSchemaItems, "type");
2127
+ const oldSchemaType = get16(oldSchemaItems, "type");
2128
+ const newSchemaType = get16(newSchemaItems, "type");
1961
2129
  if (!oldSchemaType || oldSchemaType === newSchemaType) {
1962
- const maxItems = get14(newSchema, "maxItems", -1);
2130
+ const maxItems = get16(newSchema, "maxItems", -1);
1963
2131
  if (newSchemaType === "object") {
1964
2132
  newFormData = data.reduce((newValue, aValue) => {
1965
2133
  const itemValue = sanitizeDataForNewSchema(
@@ -1985,116 +2153,6 @@
1985
2153
  }
1986
2154
  return newFormData;
1987
2155
  }
1988
- function toPathSchemaInternal(validator, schema, name, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
1989
- if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
1990
- const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
1991
- const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));
1992
- if (sameSchemaIndex === -1) {
1993
- return toPathSchemaInternal(
1994
- validator,
1995
- _schema,
1996
- name,
1997
- rootSchema,
1998
- formData,
1999
- _recurseList.concat(_schema),
2000
- experimental_customMergeAllOf
2001
- );
2002
- }
2003
- }
2004
- let pathSchema = {
2005
- [NAME_KEY]: name.replace(/^\./, "")
2006
- };
2007
- if (ONE_OF_KEY in schema || ANY_OF_KEY in schema) {
2008
- const xxxOf = ONE_OF_KEY in schema ? schema.oneOf : schema.anyOf;
2009
- const discriminator = getDiscriminatorFieldFromSchema(schema);
2010
- const index = getClosestMatchingOption(
2011
- validator,
2012
- rootSchema,
2013
- formData,
2014
- xxxOf,
2015
- 0,
2016
- discriminator,
2017
- experimental_customMergeAllOf
2018
- );
2019
- const _schema = xxxOf[index];
2020
- pathSchema = {
2021
- ...pathSchema,
2022
- ...toPathSchemaInternal(
2023
- validator,
2024
- _schema,
2025
- name,
2026
- rootSchema,
2027
- formData,
2028
- _recurseList,
2029
- experimental_customMergeAllOf
2030
- )
2031
- };
2032
- }
2033
- if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
2034
- set(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
2035
- }
2036
- if (ITEMS_KEY in schema && Array.isArray(formData)) {
2037
- const { items: schemaItems, additionalItems: schemaAdditionalItems } = schema;
2038
- if (Array.isArray(schemaItems)) {
2039
- formData.forEach((element, i) => {
2040
- if (schemaItems[i]) {
2041
- pathSchema[i] = toPathSchemaInternal(
2042
- validator,
2043
- schemaItems[i],
2044
- `${name}.${i}`,
2045
- rootSchema,
2046
- element,
2047
- _recurseList,
2048
- experimental_customMergeAllOf
2049
- );
2050
- } else if (schemaAdditionalItems) {
2051
- pathSchema[i] = toPathSchemaInternal(
2052
- validator,
2053
- schemaAdditionalItems,
2054
- `${name}.${i}`,
2055
- rootSchema,
2056
- element,
2057
- _recurseList,
2058
- experimental_customMergeAllOf
2059
- );
2060
- } else {
2061
- console.warn(`Unable to generate path schema for "${name}.${i}". No schema defined for it`);
2062
- }
2063
- });
2064
- } else {
2065
- formData.forEach((element, i) => {
2066
- pathSchema[i] = toPathSchemaInternal(
2067
- validator,
2068
- schemaItems,
2069
- `${name}.${i}`,
2070
- rootSchema,
2071
- element,
2072
- _recurseList,
2073
- experimental_customMergeAllOf
2074
- );
2075
- });
2076
- }
2077
- } else if (PROPERTIES_KEY in schema) {
2078
- for (const property in schema.properties) {
2079
- const field = get14(schema, [PROPERTIES_KEY, property], {});
2080
- pathSchema[property] = toPathSchemaInternal(
2081
- validator,
2082
- field,
2083
- `${name}.${property}`,
2084
- rootSchema,
2085
- // It's possible that formData is not an object -- this can happen if an
2086
- // array item has just been added, but not populated with data yet
2087
- get14(formData, [property]),
2088
- _recurseList,
2089
- experimental_customMergeAllOf
2090
- );
2091
- }
2092
- }
2093
- return pathSchema;
2094
- }
2095
- function toPathSchema(validator, schema, name = "", rootSchema, formData, experimental_customMergeAllOf) {
2096
- return toPathSchemaInternal(validator, schema, name, rootSchema, formData, void 0, experimental_customMergeAllOf);
2097
- }
2098
2156
  var SchemaUtils = class {
2099
2157
  /** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables
2100
2158
  *
@@ -2105,7 +2163,7 @@
2105
2163
  */
2106
2164
  constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
2107
2165
  if (rootSchema && rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
2108
- this.rootSchema = makeAllReferencesAbsolute(rootSchema, get14(rootSchema, ID_KEY, "#"));
2166
+ this.rootSchema = makeAllReferencesAbsolute(rootSchema, get16(rootSchema, ID_KEY, "#"));
2109
2167
  } else {
2110
2168
  this.rootSchema = rootSchema;
2111
2169
  }
@@ -2297,6 +2355,18 @@
2297
2355
  isSelect(schema) {
2298
2356
  return isSelect(this.validator, schema, this.rootSchema, this.experimental_customMergeAllOf);
2299
2357
  }
2358
+ /**
2359
+ * The function takes a `schema` and `formData` and returns a copy of the formData with any fields not defined in the schema removed.
2360
+ * This is useful for ensuring that only data that is relevant to the schema is preserved. Objects with `additionalProperties`
2361
+ * keyword set to `true` will not have their extra fields removed.
2362
+ *
2363
+ * @param schema - The schema to use for filtering the `formData`
2364
+ * @param [formData] - The formData to filter
2365
+ * @returns The new form data, with any fields not defined in the schema removed
2366
+ */
2367
+ omitExtraData(schema, formData) {
2368
+ return omitExtraData(this.validator, schema, this.rootSchema, formData);
2369
+ }
2300
2370
  /** Retrieves an expanded schema that has had all of its conditions, additional properties, references and
2301
2371
  * dependencies resolved and merged into the `schema` given a `rawFormData` that is used to do the potentially
2302
2372
  * recursive resolution.
@@ -2539,7 +2609,7 @@
2539
2609
  */
2540
2610
  getOrCreateErrorBlock(pathOfError) {
2541
2611
  const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
2542
- let errorBlock = hasPath ? get14(this.errorSchema, pathOfError) : this.errorSchema;
2612
+ let errorBlock = hasPath ? get16(this.errorSchema, pathOfError) : this.errorSchema;
2543
2613
  if (!errorBlock && pathOfError) {
2544
2614
  errorBlock = {};
2545
2615
  setWith(this.errorSchema, pathOfError, errorBlock, Object);
@@ -2565,7 +2635,7 @@
2565
2635
  */
2566
2636
  addErrors(errorOrList, pathOfError) {
2567
2637
  const errorBlock = this.getOrCreateErrorBlock(pathOfError);
2568
- let errorsList = get14(errorBlock, ERRORS_KEY);
2638
+ let errorsList = get16(errorBlock, ERRORS_KEY);
2569
2639
  if (!Array.isArray(errorsList)) {
2570
2640
  errorsList = [];
2571
2641
  errorBlock[ERRORS_KEY] = errorsList;
@@ -2615,7 +2685,7 @@
2615
2685
  } else if (!aIsPlainObject && bIsPlainObject) {
2616
2686
  return keys(b);
2617
2687
  } else {
2618
- const unequalFields = keys(pickBy(a, (value, key) => !deepEquals(value, get14(b, key))));
2688
+ const unequalFields = keys(pickBy(a, (value, key) => !deepEquals(value, get16(b, key))));
2619
2689
  const diffFields = difference(keys(b), keys(a));
2620
2690
  return [...unequalFields, ...diffFields];
2621
2691
  }
@@ -2728,7 +2798,7 @@
2728
2798
  );
2729
2799
  }
2730
2800
  function getTestIds() {
2731
- if (typeof process === "undefined" || get14(process, "env.NODE_ENV") !== "test") {
2801
+ if (typeof process === "undefined" || get16(process, "env.NODE_ENV") !== "test") {
2732
2802
  return {};
2733
2803
  }
2734
2804
  const ids = /* @__PURE__ */ new Map();
@@ -2797,7 +2867,7 @@
2797
2867
  }
2798
2868
  };
2799
2869
  function mergeWidgetOptions(AWidget) {
2800
- let MergedWidget = get14(AWidget, "MergedWidget");
2870
+ let MergedWidget = get16(AWidget, "MergedWidget");
2801
2871
  if (!MergedWidget) {
2802
2872
  const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
2803
2873
  MergedWidget = ({ options, ...props }) => {
@@ -2927,7 +2997,7 @@
2927
2997
  if (has5(regOrFc, FORM_CONTEXT_NAME)) {
2928
2998
  lookupPath.unshift(FORM_CONTEXT_NAME);
2929
2999
  }
2930
- return get14(regOrFc, [...lookupPath, toLookup], fallback);
3000
+ return get16(regOrFc, [...lookupPath, toLookup], fallback);
2931
3001
  }
2932
3002
 
2933
3003
  // src/orderProperties.ts
@@ -3417,6 +3487,7 @@
3417
3487
  TranslatableString2["OptionalObjectEmptyMsg"] = "No data for optional field";
3418
3488
  TranslatableString2["Type"] = "Type";
3419
3489
  TranslatableString2["Value"] = "Value";
3490
+ TranslatableString2["ClearButton"] = "clear input";
3420
3491
  TranslatableString2["UnknownFieldType"] = "Unknown field type %1";
3421
3492
  TranslatableString2["OptionPrefix"] = "Option %1";
3422
3493
  TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
@@ -3454,7 +3525,7 @@
3454
3525
  * @param hash - The hash value at which to map the schema
3455
3526
  */
3456
3527
  addSchema(schema, hash) {
3457
- const key = get14(schema, ID_KEY, hash);
3528
+ const key = get16(schema, ID_KEY, hash);
3458
3529
  const identifiedSchema = { ...schema, [ID_KEY]: key };
3459
3530
  const existing = this.schemaMap[key];
3460
3531
  if (!existing) {
@@ -3614,6 +3685,7 @@
3614
3685
  exports.getDefaultFormState = getDefaultFormState;
3615
3686
  exports.getDiscriminatorFieldFromSchema = getDiscriminatorFieldFromSchema;
3616
3687
  exports.getDisplayLabel = getDisplayLabel;
3688
+ exports.getFieldNames = getFieldNames;
3617
3689
  exports.getFirstMatchingOption = getFirstMatchingOption;
3618
3690
  exports.getFromSchema = getFromSchema;
3619
3691
  exports.getInputProps = getInputProps;
@@ -3623,6 +3695,7 @@
3623
3695
  exports.getTemplate = getTemplate;
3624
3696
  exports.getTestIds = getTestIds;
3625
3697
  exports.getUiOptions = getUiOptions;
3698
+ exports.getUsedFormData = getUsedFormData;
3626
3699
  exports.getWidget = getWidget;
3627
3700
  exports.guessType = guessType;
3628
3701
  exports.hasWidget = hasWidget;
@@ -3645,6 +3718,7 @@
3645
3718
  exports.mergeDefaultsWithFormData = mergeDefaultsWithFormData;
3646
3719
  exports.mergeObjects = mergeObjects;
3647
3720
  exports.mergeSchemas = mergeSchemas;
3721
+ exports.omitExtraData = omitExtraData;
3648
3722
  exports.optionId = optionId;
3649
3723
  exports.optionalControlsId = optionalControlsId;
3650
3724
  exports.optionsList = optionsList;