@rjsf/utils 6.6.2 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -0
- package/dist/index.cjs +229 -108
- package/dist/index.cjs.map +4 -4
- package/dist/utils.esm.js +229 -108
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +260 -136
- package/lib/SelectedOptionDescription.d.ts +4 -0
- package/lib/SelectedOptionDescription.js +24 -0
- package/lib/SelectedOptionDescription.js.map +1 -0
- package/lib/constants.d.ts +8 -5
- package/lib/constants.js +10 -7
- package/lib/constants.js.map +1 -1
- package/lib/createSchemaUtils.js +1 -1
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/enums.d.ts +4 -0
- package/lib/enums.js +4 -0
- package/lib/enums.js.map +1 -1
- package/lib/getSubmitButtonOptions.js +1 -1
- package/lib/getSubmitButtonOptions.js.map +1 -1
- package/lib/getWidget.js +2 -1
- package/lib/getWidget.js.map +1 -1
- package/lib/hashForSchema.d.ts +2 -0
- package/lib/hashForSchema.js +3 -1
- package/lib/hashForSchema.js.map +1 -1
- package/lib/index.d.ts +5 -2
- package/lib/index.js +4 -2
- package/lib/index.js.map +1 -1
- package/lib/isFixedItems.d.ts +2 -2
- package/lib/isFixedItems.js +3 -3
- package/lib/isFixedItems.js.map +1 -1
- package/lib/isRootSchema.js +2 -3
- package/lib/isRootSchema.js.map +1 -1
- package/lib/logUnsupportedDefaultForEnum.d.ts +9 -0
- package/lib/logUnsupportedDefaultForEnum.js +18 -0
- package/lib/logUnsupportedDefaultForEnum.js.map +1 -0
- package/lib/mergeSchemas.js +8 -1
- package/lib/mergeSchemas.js.map +1 -1
- package/lib/optionsList.js +22 -21
- package/lib/optionsList.js.map +1 -1
- package/lib/resolveUiSchema.js.map +1 -1
- package/lib/schema/getDefaultFormState.d.ts +1 -1
- package/lib/schema/getDefaultFormState.js +54 -17
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.js +2 -3
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/omitExtraData.js +11 -0
- package/lib/schema/omitExtraData.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +5 -1
- package/lib/schema/retrieveSchema.js +49 -14
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/schemaRequiresTrueValue.js +4 -3
- package/lib/schemaRequiresTrueValue.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +24 -0
- package/lib/useAltDateWidgetProps.d.ts +1 -1
- package/lib/useFileWidgetProps.js +2 -2
- package/lib/useFileWidgetProps.js.map +1 -1
- package/package.json +19 -19
- package/src/SelectedOptionDescription.tsx +48 -0
- package/src/constants.ts +10 -7
- package/src/createSchemaUtils.ts +1 -1
- package/src/enums.ts +4 -0
- package/src/getSubmitButtonOptions.ts +1 -1
- package/src/getWidget.tsx +1 -1
- package/src/hashForSchema.ts +3 -1
- package/src/index.ts +6 -0
- package/src/isFixedItems.ts +3 -3
- package/src/isRootSchema.ts +2 -4
- package/src/logUnsupportedDefaultForEnum.ts +28 -0
- package/src/mergeSchemas.ts +9 -2
- package/src/optionsList.ts +20 -22
- package/src/resolveUiSchema.ts +12 -4
- package/src/schema/getDefaultFormState.ts +80 -22
- package/src/schema/getDisplayLabel.ts +3 -4
- package/src/schema/omitExtraData.ts +11 -0
- package/src/schema/retrieveSchema.ts +59 -13
- package/src/schemaRequiresTrueValue.ts +3 -3
- package/src/types.ts +31 -0
- package/src/useFileWidgetProps.ts +2 -2
package/dist/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.
|
|
5
|
-
})(this, (function (exports, isPlainObject2,
|
|
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) {
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
// src/constants.ts
|
|
52
|
-
var ADDITIONAL_PROPERTY_FLAG = "__additional_property";
|
|
52
|
+
var ADDITIONAL_PROPERTY_FLAG = /* @__PURE__ */ Symbol("__additional_property");
|
|
53
53
|
var ADDITIONAL_PROPERTIES_KEY = "additionalProperties";
|
|
54
54
|
var ALL_OF_KEY = "allOf";
|
|
55
55
|
var ANY_OF_KEY = "anyOf";
|
|
@@ -71,15 +71,17 @@
|
|
|
71
71
|
var REQUIRED_KEY = "required";
|
|
72
72
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
73
73
|
var REF_KEY = "$ref";
|
|
74
|
-
var RJSF_REF_KEY = "__rjsf_ref";
|
|
74
|
+
var RJSF_REF_KEY = /* @__PURE__ */ Symbol("__rjsf_ref");
|
|
75
|
+
var RJSF_REF_CYCLE_KEY = /* @__PURE__ */ Symbol("__rjsf_ref_cycle");
|
|
75
76
|
var SCHEMA_KEY = "$schema";
|
|
76
77
|
var DEFAULT_ID_PREFIX = "root";
|
|
77
78
|
var DEFAULT_ID_SEPARATOR = "_";
|
|
78
79
|
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
79
80
|
var FORM_CONTEXT_NAME = "formContext";
|
|
80
81
|
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
81
|
-
var
|
|
82
|
-
var
|
|
82
|
+
var RJSF_PREFIX_KEY = "__rjsf";
|
|
83
|
+
var RJSF_ADDITIONAL_PROPERTIES_FLAG = `${RJSF_PREFIX_KEY}_additionalProperties`;
|
|
84
|
+
var ROOT_SCHEMA_PREFIX = `${RJSF_PREFIX_KEY}_rootSchema`;
|
|
83
85
|
var UI_FIELD_KEY = "ui:field";
|
|
84
86
|
var UI_WIDGET_KEY = "ui:widget";
|
|
85
87
|
var UI_OPTIONS_KEY = "ui:options";
|
|
@@ -178,7 +180,7 @@
|
|
|
178
180
|
return void 0;
|
|
179
181
|
}
|
|
180
182
|
function makeAllReferencesAbsolute(schema, baseURI) {
|
|
181
|
-
const currentURI =
|
|
183
|
+
const currentURI = get14(schema, ID_KEY, baseURI);
|
|
182
184
|
let result = schema;
|
|
183
185
|
if (REF_KEY in result) {
|
|
184
186
|
result = { ...result, [REF_KEY]: UriResolver.resolve(currentURI, result[REF_KEY]) };
|
|
@@ -200,7 +202,7 @@
|
|
|
200
202
|
const remaining = omit(object, [key]);
|
|
201
203
|
return [remaining, value];
|
|
202
204
|
}
|
|
203
|
-
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI =
|
|
205
|
+
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get14(rootSchema, [ID_KEY])) {
|
|
204
206
|
const ref = $ref || "";
|
|
205
207
|
let current = void 0;
|
|
206
208
|
let currentBaseURI = baseURI;
|
|
@@ -250,13 +252,13 @@
|
|
|
250
252
|
}
|
|
251
253
|
return current;
|
|
252
254
|
}
|
|
253
|
-
function findSchemaDefinition($ref, rootSchema = {}, baseURI =
|
|
255
|
+
function findSchemaDefinition($ref, rootSchema = {}, baseURI = get14(rootSchema, [ID_KEY])) {
|
|
254
256
|
const recurseList = [];
|
|
255
257
|
return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
|
|
256
258
|
}
|
|
257
259
|
function getDiscriminatorFieldFromSchema(schema) {
|
|
258
260
|
let discriminator;
|
|
259
|
-
const maybeString =
|
|
261
|
+
const maybeString = get14(schema, DISCRIMINATOR_PATH);
|
|
260
262
|
if (isString(maybeString)) {
|
|
261
263
|
discriminator = maybeString;
|
|
262
264
|
} else if (maybeString !== void 0) {
|
|
@@ -313,7 +315,7 @@
|
|
|
313
315
|
// src/mergeSchemas.ts
|
|
314
316
|
function mergeSchemas(obj1, obj2) {
|
|
315
317
|
const acc = { ...obj1 };
|
|
316
|
-
|
|
318
|
+
const result = Object.keys(obj2).reduce((accumulator, key) => {
|
|
317
319
|
const left = obj1 ? obj1[key] : {}, right = obj2[key];
|
|
318
320
|
if (obj1 && key in obj1 && isObject(right)) {
|
|
319
321
|
accumulator[key] = mergeSchemas(left, right);
|
|
@@ -324,16 +326,20 @@
|
|
|
324
326
|
}
|
|
325
327
|
return accumulator;
|
|
326
328
|
}, acc);
|
|
329
|
+
for (const sym of Object.getOwnPropertySymbols(obj2)) {
|
|
330
|
+
result[sym] = obj2[sym];
|
|
331
|
+
}
|
|
332
|
+
return result;
|
|
327
333
|
}
|
|
328
334
|
function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
|
|
329
335
|
if (formData && discriminatorField) {
|
|
330
|
-
const value =
|
|
336
|
+
const value = get14(formData, discriminatorField);
|
|
331
337
|
if (value === void 0) {
|
|
332
338
|
return void 0;
|
|
333
339
|
}
|
|
334
340
|
for (let i = 0; i < options.length; i += 1) {
|
|
335
341
|
const option = options[i];
|
|
336
|
-
const discriminator =
|
|
342
|
+
const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
337
343
|
if (discriminator.type !== "object" && discriminator.type !== "array") {
|
|
338
344
|
if (discriminator.const === value) {
|
|
339
345
|
return i;
|
|
@@ -359,8 +365,8 @@
|
|
|
359
365
|
for (let i = 0; i < options.length; i += 1) {
|
|
360
366
|
const option = options[i];
|
|
361
367
|
if (discriminatorField && has5(option, [PROPERTIES_KEY, discriminatorField])) {
|
|
362
|
-
const value =
|
|
363
|
-
const discriminator =
|
|
368
|
+
const value = get14(formData, discriminatorField);
|
|
369
|
+
const discriminator = get14(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
364
370
|
if (validator.isValid(discriminator, value, rootSchema)) {
|
|
365
371
|
return i;
|
|
366
372
|
}
|
|
@@ -413,6 +419,12 @@
|
|
|
413
419
|
resolveAnyOfOrOneOfRefs
|
|
414
420
|
)[0];
|
|
415
421
|
}
|
|
422
|
+
function normalizeBooleanSchema(schema) {
|
|
423
|
+
if (typeof schema !== "boolean") {
|
|
424
|
+
return schema;
|
|
425
|
+
}
|
|
426
|
+
return schema ? {} : { not: {} };
|
|
427
|
+
}
|
|
416
428
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
417
429
|
const { if: expression, then, else: otherwise, ...resolvedSchemaLessConditional } = schema;
|
|
418
430
|
const conditionValue = validator.isValid(expression, formData || {}, rootSchema);
|
|
@@ -420,10 +432,11 @@
|
|
|
420
432
|
let schemas = [];
|
|
421
433
|
if (expandAllBranches) {
|
|
422
434
|
if (then && typeof then !== "boolean") {
|
|
435
|
+
const thenSchema = then;
|
|
423
436
|
schemas = schemas.concat(
|
|
424
437
|
retrieveSchemaInternal(
|
|
425
438
|
validator,
|
|
426
|
-
|
|
439
|
+
thenSchema,
|
|
427
440
|
rootSchema,
|
|
428
441
|
formData,
|
|
429
442
|
expandAllBranches,
|
|
@@ -433,10 +446,11 @@
|
|
|
433
446
|
);
|
|
434
447
|
}
|
|
435
448
|
if (otherwise && typeof otherwise !== "boolean") {
|
|
449
|
+
const otherwiseSchema = otherwise;
|
|
436
450
|
schemas = schemas.concat(
|
|
437
451
|
retrieveSchemaInternal(
|
|
438
452
|
validator,
|
|
439
|
-
|
|
453
|
+
otherwiseSchema,
|
|
440
454
|
rootSchema,
|
|
441
455
|
formData,
|
|
442
456
|
expandAllBranches,
|
|
@@ -446,8 +460,9 @@
|
|
|
446
460
|
);
|
|
447
461
|
}
|
|
448
462
|
} else {
|
|
449
|
-
const
|
|
450
|
-
if (
|
|
463
|
+
const conditionalBranch = conditionValue ? then : otherwise;
|
|
464
|
+
if (conditionalBranch !== void 0) {
|
|
465
|
+
const conditionalSchema = normalizeBooleanSchema(conditionalBranch);
|
|
451
466
|
schemas = schemas.concat(
|
|
452
467
|
retrieveSchemaInternal(
|
|
453
468
|
validator,
|
|
@@ -493,7 +508,7 @@
|
|
|
493
508
|
function getMatchingPatternProperties(schema, key) {
|
|
494
509
|
return Object.keys(schema.patternProperties).filter((pattern) => RegExp(pattern).test(key)).reduce(
|
|
495
510
|
(obj, pattern) => {
|
|
496
|
-
|
|
511
|
+
set3(obj, [pattern], schema.patternProperties[pattern]);
|
|
497
512
|
return obj;
|
|
498
513
|
},
|
|
499
514
|
{}
|
|
@@ -571,7 +586,7 @@
|
|
|
571
586
|
}
|
|
572
587
|
return [schema];
|
|
573
588
|
}
|
|
574
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
589
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs, markCycleOnDetection = false) {
|
|
575
590
|
if (!isObject(schema)) {
|
|
576
591
|
return schema;
|
|
577
592
|
}
|
|
@@ -580,7 +595,7 @@
|
|
|
580
595
|
if (REF_KEY in resolvedSchema) {
|
|
581
596
|
const { $ref, ...localSchema } = resolvedSchema;
|
|
582
597
|
if (recurseList.includes($ref)) {
|
|
583
|
-
return resolvedSchema;
|
|
598
|
+
return markCycleOnDetection ? { ...resolvedSchema, [RJSF_REF_CYCLE_KEY]: true } : resolvedSchema;
|
|
584
599
|
}
|
|
585
600
|
recurseList.push($ref);
|
|
586
601
|
const refSchema = findSchemaDefinition($ref, rootSchema, currentBaseURI);
|
|
@@ -595,7 +610,14 @@
|
|
|
595
610
|
resolvedSchema[PROPERTIES_KEY],
|
|
596
611
|
(acc, value, key) => {
|
|
597
612
|
const childList = [...recurseList];
|
|
598
|
-
acc[key] = resolveAllReferences(
|
|
613
|
+
acc[key] = resolveAllReferences(
|
|
614
|
+
value,
|
|
615
|
+
rootSchema,
|
|
616
|
+
childList,
|
|
617
|
+
currentBaseURI,
|
|
618
|
+
resolveAnyOfOrOneOfRefs,
|
|
619
|
+
!resolveAnyOfOrOneOfRefs
|
|
620
|
+
);
|
|
599
621
|
childrenLists.push(childList);
|
|
600
622
|
},
|
|
601
623
|
{}
|
|
@@ -606,6 +628,7 @@
|
|
|
606
628
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
607
629
|
resolvedSchema = {
|
|
608
630
|
...resolvedSchema,
|
|
631
|
+
// Array items are only rendered when data exists, so a $ref cycle here does NOT cause an infinite render.
|
|
609
632
|
items: resolveAllReferences(
|
|
610
633
|
resolvedSchema.items,
|
|
611
634
|
rootSchema,
|
|
@@ -653,10 +676,10 @@
|
|
|
653
676
|
validator,
|
|
654
677
|
{ [ALL_OF_KEY]: Object.values(matchingProperties) },
|
|
655
678
|
rootSchema,
|
|
656
|
-
|
|
679
|
+
get14(formData, [key]),
|
|
657
680
|
experimental_customMergeAllOf
|
|
658
681
|
);
|
|
659
|
-
|
|
682
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
660
683
|
return;
|
|
661
684
|
}
|
|
662
685
|
}
|
|
@@ -666,9 +689,9 @@
|
|
|
666
689
|
if (REF_KEY in schema.additionalProperties) {
|
|
667
690
|
additionalProperties = retrieveSchema(
|
|
668
691
|
validator,
|
|
669
|
-
{ [REF_KEY]:
|
|
692
|
+
{ [REF_KEY]: get14(schema.additionalProperties, [REF_KEY]) },
|
|
670
693
|
rootSchema,
|
|
671
|
-
formData,
|
|
694
|
+
get14(formData, [key]),
|
|
672
695
|
experimental_customMergeAllOf
|
|
673
696
|
);
|
|
674
697
|
} else if ("type" in schema.additionalProperties) {
|
|
@@ -679,16 +702,16 @@
|
|
|
679
702
|
...schema.additionalProperties
|
|
680
703
|
};
|
|
681
704
|
} else {
|
|
682
|
-
additionalProperties = { type: guessType(
|
|
705
|
+
additionalProperties = { type: guessType(get14(formData, [key])) };
|
|
683
706
|
}
|
|
684
707
|
} else {
|
|
685
|
-
additionalProperties = { type: guessType(
|
|
708
|
+
additionalProperties = { type: guessType(get14(formData, [key])) };
|
|
686
709
|
}
|
|
687
710
|
schema.properties[key] = additionalProperties;
|
|
688
|
-
|
|
711
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
689
712
|
} else {
|
|
690
713
|
schema.properties[key] = { type: "null" };
|
|
691
|
-
|
|
714
|
+
schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;
|
|
692
715
|
}
|
|
693
716
|
});
|
|
694
717
|
return schema;
|
|
@@ -731,17 +754,26 @@
|
|
|
731
754
|
try {
|
|
732
755
|
const withContainsSchemas = [];
|
|
733
756
|
const withoutContainsSchemas = [];
|
|
757
|
+
const allOfSymbols = {};
|
|
734
758
|
resolvedSchema.allOf?.forEach((allOfItem) => {
|
|
735
759
|
if (typeof allOfItem === "object" && allOfItem.contains) {
|
|
736
760
|
withContainsSchemas.push(allOfItem);
|
|
737
761
|
} else {
|
|
738
762
|
withoutContainsSchemas.push(allOfItem);
|
|
763
|
+
for (const sym of Object.getOwnPropertySymbols(allOfItem)) {
|
|
764
|
+
if (!(sym in allOfSymbols)) {
|
|
765
|
+
allOfSymbols[sym] = allOfItem[sym];
|
|
766
|
+
}
|
|
767
|
+
}
|
|
739
768
|
}
|
|
740
769
|
});
|
|
741
770
|
if (withContainsSchemas.length) {
|
|
742
771
|
resolvedSchema = { ...resolvedSchema, allOf: withoutContainsSchemas };
|
|
743
772
|
}
|
|
744
773
|
resolvedSchema = experimental_customMergeAllOf ? experimental_customMergeAllOf(resolvedSchema) : mergeAllOf(resolvedSchema);
|
|
774
|
+
for (const sym of Object.getOwnPropertySymbols(allOfSymbols)) {
|
|
775
|
+
resolvedSchema[sym] = allOfSymbols[sym];
|
|
776
|
+
}
|
|
745
777
|
if (withContainsSchemas.length) {
|
|
746
778
|
resolvedSchema.allOf = withContainsSchemas;
|
|
747
779
|
}
|
|
@@ -760,7 +792,7 @@
|
|
|
760
792
|
validator,
|
|
761
793
|
{ allOf: [acc.properties[key], ...Object.values(matchingProperties)] },
|
|
762
794
|
rootSchema,
|
|
763
|
-
|
|
795
|
+
get14(rawFormData, [key]),
|
|
764
796
|
experimental_customMergeAllOf
|
|
765
797
|
);
|
|
766
798
|
}
|
|
@@ -810,7 +842,7 @@
|
|
|
810
842
|
function relaxOptionsForScoring(options, resolveRefs = false, rootSchema) {
|
|
811
843
|
return options.map((d) => {
|
|
812
844
|
if (!isObject(d)) {
|
|
813
|
-
return d
|
|
845
|
+
return normalizeBooleanSchema(d);
|
|
814
846
|
}
|
|
815
847
|
const schema = resolveRefs && rootSchema ? resolveAllReferences(d, rootSchema, []) : d;
|
|
816
848
|
return schema.additionalProperties === false ? { ...schema, additionalProperties: true } : schema;
|
|
@@ -841,7 +873,7 @@
|
|
|
841
873
|
function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
842
874
|
let schemas = [resolvedSchema];
|
|
843
875
|
for (const dependencyKey in dependencies) {
|
|
844
|
-
if ((expandAllBranches ||
|
|
876
|
+
if ((expandAllBranches || get14(formData, [dependencyKey]) !== void 0) && (!resolvedSchema.properties || dependencyKey in resolvedSchema.properties)) {
|
|
845
877
|
const [remainingDependencies, dependencyValue] = splitKeyElementFromObject(
|
|
846
878
|
dependencyKey,
|
|
847
879
|
dependencies
|
|
@@ -924,7 +956,7 @@
|
|
|
924
956
|
}
|
|
925
957
|
function withExactlyOneSubschema(validator, schema, rootSchema, dependencyKey, oneOf, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
926
958
|
const validSubschemas = oneOf.filter((subschema) => {
|
|
927
|
-
if (typeof subschema === "boolean" || !subschema
|
|
959
|
+
if (typeof subschema === "boolean" || !subschema?.properties) {
|
|
928
960
|
return false;
|
|
929
961
|
}
|
|
930
962
|
const { [dependencyKey]: conditionPropertySchema } = subschema.properties;
|
|
@@ -968,14 +1000,14 @@
|
|
|
968
1000
|
const xxxOfs = schema[xxx].map(
|
|
969
1001
|
(xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
|
|
970
1002
|
);
|
|
971
|
-
const data =
|
|
1003
|
+
const data = get14(formData, selectorField);
|
|
972
1004
|
if (data !== void 0) {
|
|
973
1005
|
return xxxOfs.find(
|
|
974
1006
|
(xxxOfOption) => deepEquals_default(
|
|
975
|
-
|
|
1007
|
+
get14(
|
|
976
1008
|
xxxOfOption,
|
|
977
1009
|
[PROPERTIES_KEY, selectorField, DEFAULT_KEY],
|
|
978
|
-
|
|
1010
|
+
get14(xxxOfOption, [PROPERTIES_KEY, selectorField, CONST_KEY])
|
|
979
1011
|
),
|
|
980
1012
|
data
|
|
981
1013
|
)
|
|
@@ -995,7 +1027,7 @@
|
|
|
995
1027
|
const pathList = Array.isArray(path) ? [...path] : path.split(".");
|
|
996
1028
|
const [part, ...nestedPath] = pathList;
|
|
997
1029
|
if (part !== void 0 && part !== "" && has5(fieldSchema, part)) {
|
|
998
|
-
fieldSchema =
|
|
1030
|
+
fieldSchema = get14(fieldSchema, part);
|
|
999
1031
|
return getFromSchemaInternal(
|
|
1000
1032
|
validator,
|
|
1001
1033
|
rootSchema,
|
|
@@ -1038,7 +1070,7 @@
|
|
|
1038
1070
|
parentField,
|
|
1039
1071
|
fieldNameKey,
|
|
1040
1072
|
ONE_OF_KEY,
|
|
1041
|
-
|
|
1073
|
+
get14(formData, subPath),
|
|
1042
1074
|
experimental_customMergeAllOf
|
|
1043
1075
|
);
|
|
1044
1076
|
} else if (has5(parentField, ANY_OF_KEY)) {
|
|
@@ -1048,7 +1080,7 @@
|
|
|
1048
1080
|
parentField,
|
|
1049
1081
|
fieldNameKey,
|
|
1050
1082
|
ANY_OF_KEY,
|
|
1051
|
-
|
|
1083
|
+
get14(formData, subPath),
|
|
1052
1084
|
experimental_customMergeAllOf
|
|
1053
1085
|
);
|
|
1054
1086
|
}
|
|
@@ -1116,7 +1148,7 @@
|
|
|
1116
1148
|
totalScore += reduce(
|
|
1117
1149
|
schema.properties,
|
|
1118
1150
|
(score, value, key) => {
|
|
1119
|
-
const formValue =
|
|
1151
|
+
const formValue = get14(formData, key);
|
|
1120
1152
|
if (typeof value === "boolean") {
|
|
1121
1153
|
return score;
|
|
1122
1154
|
}
|
|
@@ -1143,7 +1175,7 @@
|
|
|
1143
1175
|
validator,
|
|
1144
1176
|
rootSchema,
|
|
1145
1177
|
formValue,
|
|
1146
|
-
|
|
1178
|
+
get14(value, xxxOfKey),
|
|
1147
1179
|
-1,
|
|
1148
1180
|
discriminator,
|
|
1149
1181
|
experimental_customMergeAllOf
|
|
@@ -1224,7 +1256,7 @@
|
|
|
1224
1256
|
|
|
1225
1257
|
// src/isFixedItems.ts
|
|
1226
1258
|
function isFixedItems(schema) {
|
|
1227
|
-
return Array.isArray(schema.items) && schema.items.
|
|
1259
|
+
return Array.isArray(schema.items) && schema.items.every((item) => isObject(item));
|
|
1228
1260
|
}
|
|
1229
1261
|
function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {
|
|
1230
1262
|
if (Array.isArray(formData)) {
|
|
@@ -1251,22 +1283,22 @@
|
|
|
1251
1283
|
if (isObject(formData)) {
|
|
1252
1284
|
const acc = Object.assign({}, defaults);
|
|
1253
1285
|
return Object.keys(formData).reduce((accumulator, key) => {
|
|
1254
|
-
const keyValue =
|
|
1286
|
+
const keyValue = get14(formData, key);
|
|
1255
1287
|
const keyExistsInDefaults = isObject(defaults) && key in defaults;
|
|
1256
1288
|
const keyExistsInFormData = key in formData;
|
|
1257
|
-
const keyDefault =
|
|
1289
|
+
const keyDefault = get14(defaults, key) ?? {};
|
|
1258
1290
|
const defaultValueIsNestedObject = keyExistsInDefaults && isObject(keyDefault) && Object.values(keyDefault).some((v) => isObject(v));
|
|
1259
|
-
const keyDefaultIsObject = keyExistsInDefaults && isObject(
|
|
1291
|
+
const keyDefaultIsObject = keyExistsInDefaults && isObject(get14(defaults, key));
|
|
1260
1292
|
const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
|
|
1261
1293
|
if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
|
|
1262
1294
|
accumulator[key] = {
|
|
1263
|
-
...
|
|
1295
|
+
...get14(defaults, key),
|
|
1264
1296
|
...keyValue
|
|
1265
1297
|
};
|
|
1266
1298
|
return accumulator;
|
|
1267
1299
|
}
|
|
1268
1300
|
accumulator[key] = mergeDefaultsWithFormData(
|
|
1269
|
-
|
|
1301
|
+
get14(defaults, key),
|
|
1270
1302
|
keyValue,
|
|
1271
1303
|
mergeExtraArrayDefaults,
|
|
1272
1304
|
defaultSupercedesUndefined,
|
|
@@ -1366,18 +1398,18 @@
|
|
|
1366
1398
|
const { optionsSchemaSelector = selectorField } = getUiOptions(uiSchema);
|
|
1367
1399
|
selectorField = optionsSchemaSelector;
|
|
1368
1400
|
}
|
|
1369
|
-
return altSchemas
|
|
1401
|
+
return altSchemas?.map((aSchemaDef, index) => {
|
|
1370
1402
|
const { title } = getUiOptions(altUiSchemas?.[index]);
|
|
1371
1403
|
const aSchema = aSchemaDef;
|
|
1372
1404
|
let value;
|
|
1373
1405
|
let label = title;
|
|
1374
1406
|
if (selectorField) {
|
|
1375
|
-
const innerSchema =
|
|
1376
|
-
value =
|
|
1377
|
-
label = label
|
|
1407
|
+
const innerSchema = get14(aSchema, [PROPERTIES_KEY, selectorField], {});
|
|
1408
|
+
value = get14(innerSchema, DEFAULT_KEY, get14(innerSchema, CONST_KEY));
|
|
1409
|
+
label = label ?? innerSchema?.title ?? aSchema.title ?? String(value);
|
|
1378
1410
|
} else {
|
|
1379
1411
|
value = toConstant(aSchema);
|
|
1380
|
-
label = label
|
|
1412
|
+
label = label ?? aSchema.title ?? String(value);
|
|
1381
1413
|
}
|
|
1382
1414
|
return {
|
|
1383
1415
|
schema: aSchema,
|
|
@@ -1467,8 +1499,8 @@
|
|
|
1467
1499
|
rootSchema = {},
|
|
1468
1500
|
includeUndefinedValues = false,
|
|
1469
1501
|
_recurseList = [],
|
|
1470
|
-
experimental_defaultFormStateBehavior
|
|
1471
|
-
experimental_customMergeAllOf
|
|
1502
|
+
experimental_defaultFormStateBehavior,
|
|
1503
|
+
experimental_customMergeAllOf,
|
|
1472
1504
|
required,
|
|
1473
1505
|
shouldMergeDefaultsIntoFormData = false,
|
|
1474
1506
|
initialDefaultsGenerated
|
|
@@ -1476,14 +1508,19 @@
|
|
|
1476
1508
|
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1477
1509
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
1478
1510
|
let defaults = parentDefaults;
|
|
1511
|
+
const preferParentDefaults = defaults && experimental_defaultFormStateBehavior?.nestedDefaultsPrecedence === "ancestorWins";
|
|
1479
1512
|
let schemaToCompute = null;
|
|
1480
1513
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
1481
1514
|
let updatedRecurseList = _recurseList;
|
|
1482
1515
|
if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1483
1516
|
defaults = schema[CONST_KEY];
|
|
1484
1517
|
} else if (isObject(defaults) && isObject(schema.default) && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
|
|
1485
|
-
|
|
1486
|
-
|
|
1518
|
+
if (preferParentDefaults) {
|
|
1519
|
+
defaults = mergeObjects(schema.default, defaults);
|
|
1520
|
+
} else {
|
|
1521
|
+
defaults = mergeObjects(defaults, schema.default);
|
|
1522
|
+
}
|
|
1523
|
+
} else if (DEFAULT_KEY in schema && !preferParentDefaults && !schema[ANY_OF_KEY] && !schema[ONE_OF_KEY] && !schema[REF_KEY]) {
|
|
1487
1524
|
defaults = schema.default;
|
|
1488
1525
|
} else if (REF_KEY in schema) {
|
|
1489
1526
|
const refName = schema[REF_KEY];
|
|
@@ -1513,7 +1550,7 @@
|
|
|
1513
1550
|
experimental_customMergeAllOf
|
|
1514
1551
|
);
|
|
1515
1552
|
[schemaToCompute] = resolvedSchema;
|
|
1516
|
-
} else if (isFixedItems(schema)) {
|
|
1553
|
+
} else if (isFixedItems(schema) && !preferParentDefaults) {
|
|
1517
1554
|
defaults = schema.items.map(
|
|
1518
1555
|
(itemSchema, idx) => computeDefaults(validator, itemSchema, {
|
|
1519
1556
|
rootSchema,
|
|
@@ -1609,16 +1646,36 @@
|
|
|
1609
1646
|
return defaultsWithFormData;
|
|
1610
1647
|
}
|
|
1611
1648
|
function ensureFormDataMatchingSchema(validator, schema, rootSchema, formData, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
1612
|
-
const
|
|
1649
|
+
const shouldRetrieveAllOf = experimental_defaultFormStateBehavior?.allOf === "populateDefaults" && ALL_OF_KEY in schema;
|
|
1650
|
+
const schemaToMatch = shouldRetrieveAllOf ? retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf) : schema;
|
|
1651
|
+
const isSelectField = !isConstant(schemaToMatch) && isSelect(validator, schemaToMatch, rootSchema, experimental_customMergeAllOf);
|
|
1613
1652
|
let validFormData = formData;
|
|
1614
1653
|
if (isSelectField) {
|
|
1615
|
-
const getOptionsList = optionsList(
|
|
1654
|
+
const getOptionsList = optionsList(schemaToMatch);
|
|
1616
1655
|
const isValid = getOptionsList?.some((option) => deepEquals_default(option.value, formData));
|
|
1617
1656
|
validFormData = isValid ? formData : void 0;
|
|
1618
1657
|
}
|
|
1619
|
-
const constTakesPrecedence =
|
|
1658
|
+
const constTakesPrecedence = schemaToMatch[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults === "always";
|
|
1620
1659
|
if (constTakesPrecedence) {
|
|
1621
|
-
validFormData =
|
|
1660
|
+
validFormData = schemaToMatch.const;
|
|
1661
|
+
} else if (isObject(validFormData) && isObject(schemaToMatch.properties)) {
|
|
1662
|
+
validFormData = Object.keys(schemaToMatch.properties).reduce(
|
|
1663
|
+
(acc, key) => {
|
|
1664
|
+
const propertySchema = get14(schemaToMatch, [PROPERTIES_KEY, key], {});
|
|
1665
|
+
if (key in acc && (shouldRetrieveAllOf || isObject(propertySchema) && ALL_OF_KEY in propertySchema)) {
|
|
1666
|
+
acc[key] = ensureFormDataMatchingSchema(
|
|
1667
|
+
validator,
|
|
1668
|
+
propertySchema,
|
|
1669
|
+
rootSchema,
|
|
1670
|
+
get14(acc, key),
|
|
1671
|
+
experimental_defaultFormStateBehavior,
|
|
1672
|
+
experimental_customMergeAllOf
|
|
1673
|
+
);
|
|
1674
|
+
}
|
|
1675
|
+
return acc;
|
|
1676
|
+
},
|
|
1677
|
+
{ ...validFormData }
|
|
1678
|
+
);
|
|
1622
1679
|
}
|
|
1623
1680
|
return validFormData;
|
|
1624
1681
|
}
|
|
@@ -1627,8 +1684,8 @@
|
|
|
1627
1684
|
rootSchema = {},
|
|
1628
1685
|
includeUndefinedValues = false,
|
|
1629
1686
|
_recurseList = [],
|
|
1630
|
-
experimental_defaultFormStateBehavior
|
|
1631
|
-
experimental_customMergeAllOf
|
|
1687
|
+
experimental_defaultFormStateBehavior,
|
|
1688
|
+
experimental_customMergeAllOf,
|
|
1632
1689
|
required,
|
|
1633
1690
|
shouldMergeDefaultsIntoFormData,
|
|
1634
1691
|
initialDefaultsGenerated
|
|
@@ -1641,7 +1698,7 @@
|
|
|
1641
1698
|
const parentConst = retrievedSchema[CONST_KEY];
|
|
1642
1699
|
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
|
|
1643
1700
|
(acc, key) => {
|
|
1644
|
-
const propertySchema =
|
|
1701
|
+
const propertySchema = get14(retrievedSchema, [PROPERTIES_KEY, key], {});
|
|
1645
1702
|
const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
|
|
1646
1703
|
const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
|
|
1647
1704
|
const computedDefault = computeDefaults(validator, propertySchema, {
|
|
@@ -1650,8 +1707,8 @@
|
|
|
1650
1707
|
experimental_defaultFormStateBehavior,
|
|
1651
1708
|
experimental_customMergeAllOf,
|
|
1652
1709
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1653
|
-
parentDefaults:
|
|
1654
|
-
rawFormData:
|
|
1710
|
+
parentDefaults: get14(defaults, [key]),
|
|
1711
|
+
rawFormData: get14(formData, [key]),
|
|
1655
1712
|
required: retrievedSchema.required?.includes(key),
|
|
1656
1713
|
shouldMergeDefaultsIntoFormData,
|
|
1657
1714
|
initialDefaultsGenerated
|
|
@@ -1689,8 +1746,8 @@
|
|
|
1689
1746
|
experimental_defaultFormStateBehavior,
|
|
1690
1747
|
experimental_customMergeAllOf,
|
|
1691
1748
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1692
|
-
parentDefaults:
|
|
1693
|
-
rawFormData:
|
|
1749
|
+
parentDefaults: get14(defaults, [key]),
|
|
1750
|
+
rawFormData: get14(formData, [key]),
|
|
1694
1751
|
required: retrievedSchema.required?.includes(key),
|
|
1695
1752
|
shouldMergeDefaultsIntoFormData,
|
|
1696
1753
|
initialDefaultsGenerated
|
|
@@ -1712,8 +1769,8 @@
|
|
|
1712
1769
|
rawFormData,
|
|
1713
1770
|
rootSchema = {},
|
|
1714
1771
|
_recurseList = [],
|
|
1715
|
-
experimental_defaultFormStateBehavior
|
|
1716
|
-
experimental_customMergeAllOf
|
|
1772
|
+
experimental_defaultFormStateBehavior,
|
|
1773
|
+
experimental_customMergeAllOf,
|
|
1717
1774
|
required,
|
|
1718
1775
|
requiredAsRoot = false,
|
|
1719
1776
|
shouldMergeDefaultsIntoFormData,
|
|
@@ -1758,7 +1815,7 @@
|
|
|
1758
1815
|
experimental_defaultFormStateBehavior,
|
|
1759
1816
|
experimental_customMergeAllOf,
|
|
1760
1817
|
rawFormData: item,
|
|
1761
|
-
parentDefaults:
|
|
1818
|
+
parentDefaults: get14(defaults, [idx]),
|
|
1762
1819
|
required,
|
|
1763
1820
|
shouldMergeDefaultsIntoFormData,
|
|
1764
1821
|
initialDefaultsGenerated
|
|
@@ -1768,14 +1825,21 @@
|
|
|
1768
1825
|
defaults = mergeDefaultsWithFormData(defaults, itemDefaults, mergeExtraDefaults);
|
|
1769
1826
|
}
|
|
1770
1827
|
}
|
|
1828
|
+
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1771
1829
|
if (neverPopulate) {
|
|
1830
|
+
if (shouldMergeDefaultsIntoFormData) {
|
|
1831
|
+
if (schema.minItems && schema.minItems > defaultsLength) {
|
|
1832
|
+
const fillerEntries = Array.from({ length: schema.minItems - defaultsLength }, () => null);
|
|
1833
|
+
return (defaults ?? []).concat(fillerEntries);
|
|
1834
|
+
}
|
|
1835
|
+
return defaults;
|
|
1836
|
+
}
|
|
1772
1837
|
return defaults ?? emptyDefault;
|
|
1773
1838
|
}
|
|
1774
1839
|
if (ignoreMinItemsFlagSet && !required) {
|
|
1775
1840
|
return defaults || void 0;
|
|
1776
1841
|
}
|
|
1777
1842
|
let arrayDefault;
|
|
1778
|
-
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1779
1843
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1780
1844
|
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1781
1845
|
} else {
|
|
@@ -1835,9 +1899,17 @@
|
|
|
1835
1899
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
1836
1900
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
1837
1901
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
|
|
1902
|
+
const matchingFormData = ensureFormDataMatchingSchema(
|
|
1903
|
+
validator,
|
|
1904
|
+
schema,
|
|
1905
|
+
rootSchema ?? schema,
|
|
1906
|
+
formData,
|
|
1907
|
+
experimental_defaultFormStateBehavior,
|
|
1908
|
+
experimental_customMergeAllOf
|
|
1909
|
+
);
|
|
1838
1910
|
const result = mergeDefaultsWithFormData(
|
|
1839
1911
|
defaults,
|
|
1840
|
-
|
|
1912
|
+
matchingFormData,
|
|
1841
1913
|
true,
|
|
1842
1914
|
// set to true to add any additional default array entries.
|
|
1843
1915
|
defaultSupercedesUndefined,
|
|
@@ -1883,7 +1955,7 @@
|
|
|
1883
1955
|
let displayLabel = Boolean(label);
|
|
1884
1956
|
if (displayLabel) {
|
|
1885
1957
|
const schemaType = getSchemaType(schema);
|
|
1886
|
-
const addedByAdditionalProperty =
|
|
1958
|
+
const addedByAdditionalProperty = Boolean(schema[ADDITIONAL_PROPERTY_FLAG]);
|
|
1887
1959
|
if (schemaType === "array") {
|
|
1888
1960
|
displayLabel = addedByAdditionalProperty || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || isFilesArray(validator, schema, uiSchema, rootSchema, experimental_customMergeAllOf) || isCustomWidget(uiSchema);
|
|
1889
1961
|
}
|
|
@@ -1893,7 +1965,7 @@
|
|
|
1893
1965
|
if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
|
|
1894
1966
|
displayLabel = false;
|
|
1895
1967
|
}
|
|
1896
|
-
if (uiSchema
|
|
1968
|
+
if (uiSchema?.[UI_FIELD_KEY]) {
|
|
1897
1969
|
displayLabel = false;
|
|
1898
1970
|
}
|
|
1899
1971
|
}
|
|
@@ -1924,7 +1996,7 @@
|
|
|
1924
1996
|
}
|
|
1925
1997
|
} else if (key === NAME_KEY && data !== "") {
|
|
1926
1998
|
paths.forEach((path) => {
|
|
1927
|
-
const formValue =
|
|
1999
|
+
const formValue = get14(formData, path);
|
|
1928
2000
|
const isLeaf = objKeys.length === 1;
|
|
1929
2001
|
if (formValueHasData(formValue, isLeaf) || Array.isArray(formValue) && formValue.every((val) => formValueHasData(val, isLeaf))) {
|
|
1930
2002
|
acc.push(path);
|
|
@@ -1962,7 +2034,7 @@
|
|
|
1962
2034
|
const { properties, additionalProperties, patternProperties, propertyNames } = childSchema;
|
|
1963
2035
|
const requiredSet = new Set(childSchema.required ?? []);
|
|
1964
2036
|
function setProperty(key, schemaDef, value, required = false) {
|
|
1965
|
-
const v =
|
|
2037
|
+
const v = omit2(schemaDef, value, target[key]);
|
|
1966
2038
|
if (!required && isObject(v)) {
|
|
1967
2039
|
let sd = isSchemaObj(schemaDef) ? schemaDef : {};
|
|
1968
2040
|
if (sd.$ref !== void 0) {
|
|
@@ -2031,17 +2103,17 @@
|
|
|
2031
2103
|
if (items !== void 0) {
|
|
2032
2104
|
if (Array.isArray(items)) {
|
|
2033
2105
|
for (let i = 0; i < items.length; i += 1) {
|
|
2034
|
-
target.push(
|
|
2106
|
+
target.push(omit2(items[i], source[i]));
|
|
2035
2107
|
}
|
|
2036
2108
|
} else {
|
|
2037
2109
|
for (let i = 0; i < source.length; i += 1) {
|
|
2038
|
-
target.push(
|
|
2110
|
+
target.push(omit2(items, source[i]));
|
|
2039
2111
|
}
|
|
2040
2112
|
}
|
|
2041
2113
|
}
|
|
2042
2114
|
if (additionalItems) {
|
|
2043
2115
|
for (let i = target.length; i < source.length; i += 1) {
|
|
2044
|
-
target.push(
|
|
2116
|
+
target.push(omit2(additionalItems, source[i]));
|
|
2045
2117
|
}
|
|
2046
2118
|
}
|
|
2047
2119
|
return target;
|
|
@@ -2053,7 +2125,7 @@
|
|
|
2053
2125
|
}
|
|
2054
2126
|
const isThenBranch = isSchemaObj(condition) ? validator.isValid(condition, source, rootSchema) : condition;
|
|
2055
2127
|
const branch = isThenBranch ? then : otherwise;
|
|
2056
|
-
return branch === void 0 ? target :
|
|
2128
|
+
return branch === void 0 ? target : omit2(branch, source, target);
|
|
2057
2129
|
}
|
|
2058
2130
|
function handleOneOf(oneOf, childSchema, source, target) {
|
|
2059
2131
|
if (!Array.isArray(oneOf) || isSelect(validator, childSchema, rootSchema, experimental_customMergeAllOf)) {
|
|
@@ -2071,7 +2143,7 @@
|
|
|
2071
2143
|
);
|
|
2072
2144
|
const winning = oneOf[bestIndex];
|
|
2073
2145
|
const resolved = isObject(winning) ? resolveAllReferences(winning, rootSchema, []) : scoringOptions[bestIndex];
|
|
2074
|
-
return
|
|
2146
|
+
return omit2(resolved, source, target);
|
|
2075
2147
|
}
|
|
2076
2148
|
function handleAnyOf(childSchema, source, target) {
|
|
2077
2149
|
const { anyOf } = childSchema;
|
|
@@ -2081,7 +2153,7 @@
|
|
|
2081
2153
|
if (source === void 0 || Array.isArray(source) && source.length === 0 || isObject(source) && Object.keys(source).length === 0) {
|
|
2082
2154
|
let result = target;
|
|
2083
2155
|
for (const branch of anyOf) {
|
|
2084
|
-
result =
|
|
2156
|
+
result = omit2(branch, source, result);
|
|
2085
2157
|
}
|
|
2086
2158
|
return result;
|
|
2087
2159
|
}
|
|
@@ -2095,12 +2167,12 @@
|
|
|
2095
2167
|
let result = target;
|
|
2096
2168
|
for (const [key, deps] of Object.entries(dependencies)) {
|
|
2097
2169
|
if (key in source && !Array.isArray(deps)) {
|
|
2098
|
-
result =
|
|
2170
|
+
result = omit2(deps, source, result);
|
|
2099
2171
|
}
|
|
2100
2172
|
}
|
|
2101
2173
|
return result;
|
|
2102
2174
|
}
|
|
2103
|
-
function
|
|
2175
|
+
function omit2(schemaDef, source, target) {
|
|
2104
2176
|
if (source === void 0 || schemaDef === false) {
|
|
2105
2177
|
return void 0;
|
|
2106
2178
|
}
|
|
@@ -2110,10 +2182,16 @@
|
|
|
2110
2182
|
let localSchema = schemaDef;
|
|
2111
2183
|
const { $ref: ref, allOf } = localSchema;
|
|
2112
2184
|
if (ref !== void 0) {
|
|
2113
|
-
return
|
|
2185
|
+
return omit2(findSchemaDefinition(ref, rootSchema), source, target);
|
|
2114
2186
|
}
|
|
2115
2187
|
if (allOf) {
|
|
2116
2188
|
localSchema = doMergeAllOf(localSchema, experimental_customMergeAllOf);
|
|
2189
|
+
const remainingAllOf = localSchema.allOf;
|
|
2190
|
+
if (remainingAllOf) {
|
|
2191
|
+
for (let i = 0; i < remainingAllOf.length; i++) {
|
|
2192
|
+
target = omit2(remainingAllOf[i], source, target);
|
|
2193
|
+
}
|
|
2194
|
+
}
|
|
2117
2195
|
}
|
|
2118
2196
|
let filtered = handleAnyOf(localSchema, source, handleOneOf(localSchema.oneOf, localSchema, source, target));
|
|
2119
2197
|
const type = getSchemaType(localSchema);
|
|
@@ -2132,7 +2210,7 @@
|
|
|
2132
2210
|
}
|
|
2133
2211
|
return handleDependencies(localSchema, source, handleConditions(localSchema, source, filtered));
|
|
2134
2212
|
}
|
|
2135
|
-
return
|
|
2213
|
+
return omit2(schema, formData);
|
|
2136
2214
|
}
|
|
2137
2215
|
var NO_VALUE = /* @__PURE__ */ Symbol("no Value");
|
|
2138
2216
|
function enumValuesForSchema(schema) {
|
|
@@ -2156,7 +2234,7 @@
|
|
|
2156
2234
|
if (!enumValues || enumValues.some((value) => deepEquals_default(value, formValue))) {
|
|
2157
2235
|
return NO_VALUE;
|
|
2158
2236
|
}
|
|
2159
|
-
const defaultValue =
|
|
2237
|
+
const defaultValue = get14(schema, DEFAULT_KEY, NO_VALUE);
|
|
2160
2238
|
if (defaultValue !== NO_VALUE && enumValues.some((value) => deepEquals_default(value, defaultValue))) {
|
|
2161
2239
|
return defaultValue;
|
|
2162
2240
|
}
|
|
@@ -2167,19 +2245,19 @@
|
|
|
2167
2245
|
if (has5(newSchema, PROPERTIES_KEY)) {
|
|
2168
2246
|
const removeOldSchemaData = {};
|
|
2169
2247
|
if (has5(oldSchema, PROPERTIES_KEY)) {
|
|
2170
|
-
const properties =
|
|
2248
|
+
const properties = get14(oldSchema, PROPERTIES_KEY, {});
|
|
2171
2249
|
Object.keys(properties).forEach((key) => {
|
|
2172
2250
|
if (has5(data, key)) {
|
|
2173
2251
|
removeOldSchemaData[key] = void 0;
|
|
2174
2252
|
}
|
|
2175
2253
|
});
|
|
2176
2254
|
}
|
|
2177
|
-
const keys2 = Object.keys(
|
|
2255
|
+
const keys2 = Object.keys(get14(newSchema, PROPERTIES_KEY, {}));
|
|
2178
2256
|
const nestedData = {};
|
|
2179
2257
|
keys2.forEach((key) => {
|
|
2180
|
-
const formValue =
|
|
2181
|
-
let oldKeyedSchema =
|
|
2182
|
-
let newKeyedSchema =
|
|
2258
|
+
const formValue = get14(data, key);
|
|
2259
|
+
let oldKeyedSchema = get14(oldSchema, [PROPERTIES_KEY, key], {});
|
|
2260
|
+
let newKeyedSchema = get14(newSchema, [PROPERTIES_KEY, key], {});
|
|
2183
2261
|
if (has5(oldKeyedSchema, REF_KEY)) {
|
|
2184
2262
|
oldKeyedSchema = retrieveSchema(
|
|
2185
2263
|
validator,
|
|
@@ -2198,8 +2276,8 @@
|
|
|
2198
2276
|
experimental_customMergeAllOf
|
|
2199
2277
|
);
|
|
2200
2278
|
}
|
|
2201
|
-
const oldSchemaTypeForKey =
|
|
2202
|
-
const newSchemaTypeForKey =
|
|
2279
|
+
const oldSchemaTypeForKey = get14(oldKeyedSchema, "type");
|
|
2280
|
+
const newSchemaTypeForKey = get14(newKeyedSchema, "type");
|
|
2203
2281
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
2204
2282
|
if (has5(removeOldSchemaData, key)) {
|
|
2205
2283
|
delete removeOldSchemaData[key];
|
|
@@ -2217,17 +2295,17 @@
|
|
|
2217
2295
|
nestedData[key] = itemData;
|
|
2218
2296
|
}
|
|
2219
2297
|
} else {
|
|
2220
|
-
const newOptionDefault =
|
|
2221
|
-
const oldOptionDefault =
|
|
2298
|
+
const newOptionDefault = get14(newKeyedSchema, DEFAULT_KEY, NO_VALUE);
|
|
2299
|
+
const oldOptionDefault = get14(oldKeyedSchema, DEFAULT_KEY, NO_VALUE);
|
|
2222
2300
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
2223
2301
|
if (oldOptionDefault === formValue) {
|
|
2224
2302
|
removeOldSchemaData[key] = newOptionDefault;
|
|
2225
|
-
} else if (
|
|
2303
|
+
} else if (get14(newKeyedSchema, "readOnly") === true) {
|
|
2226
2304
|
removeOldSchemaData[key] = void 0;
|
|
2227
2305
|
}
|
|
2228
2306
|
}
|
|
2229
|
-
const newOptionConst =
|
|
2230
|
-
const oldOptionConst =
|
|
2307
|
+
const newOptionConst = get14(newKeyedSchema, CONST_KEY, NO_VALUE);
|
|
2308
|
+
const oldOptionConst = get14(oldKeyedSchema, CONST_KEY, NO_VALUE);
|
|
2231
2309
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
2232
2310
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
2233
2311
|
}
|
|
@@ -2245,9 +2323,9 @@
|
|
|
2245
2323
|
...removeOldSchemaData,
|
|
2246
2324
|
...nestedData
|
|
2247
2325
|
};
|
|
2248
|
-
} else if (
|
|
2249
|
-
let oldSchemaItems =
|
|
2250
|
-
let newSchemaItems =
|
|
2326
|
+
} else if (get14(oldSchema, "type") === "array" && get14(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2327
|
+
let oldSchemaItems = get14(oldSchema, "items");
|
|
2328
|
+
let newSchemaItems = get14(newSchema, "items");
|
|
2251
2329
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
2252
2330
|
if (has5(oldSchemaItems, REF_KEY)) {
|
|
2253
2331
|
oldSchemaItems = retrieveSchema(
|
|
@@ -2267,10 +2345,10 @@
|
|
|
2267
2345
|
experimental_customMergeAllOf
|
|
2268
2346
|
);
|
|
2269
2347
|
}
|
|
2270
|
-
const oldSchemaType =
|
|
2271
|
-
const newSchemaType =
|
|
2348
|
+
const oldSchemaType = get14(oldSchemaItems, "type");
|
|
2349
|
+
const newSchemaType = get14(newSchemaItems, "type");
|
|
2272
2350
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
2273
|
-
const maxItems =
|
|
2351
|
+
const maxItems = get14(newSchema, "maxItems", -1);
|
|
2274
2352
|
if (newSchemaType === "object") {
|
|
2275
2353
|
newFormData = data.reduce((newValue, aValue) => {
|
|
2276
2354
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -2344,9 +2422,9 @@
|
|
|
2344
2422
|
};
|
|
2345
2423
|
}
|
|
2346
2424
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema[ADDITIONAL_PROPERTIES_KEY] !== false) {
|
|
2347
|
-
|
|
2425
|
+
set3(pathSchema, RJSF_ADDITIONAL_PROPERTIES_FLAG, true);
|
|
2348
2426
|
const additionalSchema = isObject2(schema[ADDITIONAL_PROPERTIES_KEY]) ? schema[ADDITIONAL_PROPERTIES_KEY] : {};
|
|
2349
|
-
const definedProperties =
|
|
2427
|
+
const definedProperties = get14(schema, PROPERTIES_KEY, {});
|
|
2350
2428
|
for (const key of Object.keys(formData ?? {})) {
|
|
2351
2429
|
if (!(key in definedProperties)) {
|
|
2352
2430
|
pathSchema[key] = toPathSchemaInternal(
|
|
@@ -2354,7 +2432,7 @@
|
|
|
2354
2432
|
additionalSchema,
|
|
2355
2433
|
`${name}.${key}`,
|
|
2356
2434
|
rootSchema,
|
|
2357
|
-
|
|
2435
|
+
get14(formData, [key]),
|
|
2358
2436
|
_recurseList,
|
|
2359
2437
|
experimental_customMergeAllOf
|
|
2360
2438
|
);
|
|
@@ -2404,7 +2482,7 @@
|
|
|
2404
2482
|
}
|
|
2405
2483
|
} else if (PROPERTIES_KEY in schema) {
|
|
2406
2484
|
for (const property in schema.properties) {
|
|
2407
|
-
const field =
|
|
2485
|
+
const field = get14(schema, [PROPERTIES_KEY, property], {});
|
|
2408
2486
|
pathSchema[property] = toPathSchemaInternal(
|
|
2409
2487
|
validator,
|
|
2410
2488
|
field,
|
|
@@ -2412,7 +2490,7 @@
|
|
|
2412
2490
|
rootSchema,
|
|
2413
2491
|
// It's possible that formData is not an object -- this can happen if an
|
|
2414
2492
|
// array item has just been added, but not populated with data yet
|
|
2415
|
-
|
|
2493
|
+
get14(formData, [property]),
|
|
2416
2494
|
_recurseList,
|
|
2417
2495
|
experimental_customMergeAllOf
|
|
2418
2496
|
);
|
|
@@ -2434,8 +2512,8 @@
|
|
|
2434
2512
|
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
|
|
2435
2513
|
*/
|
|
2436
2514
|
constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2437
|
-
if (rootSchema
|
|
2438
|
-
this.rootSchema = makeAllReferencesAbsolute(rootSchema,
|
|
2515
|
+
if (rootSchema?.[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
2516
|
+
this.rootSchema = makeAllReferencesAbsolute(rootSchema, get14(rootSchema, ID_KEY, "#"));
|
|
2439
2517
|
} else {
|
|
2440
2518
|
this.rootSchema = rootSchema;
|
|
2441
2519
|
}
|
|
@@ -2909,7 +2987,7 @@
|
|
|
2909
2987
|
*/
|
|
2910
2988
|
getOrCreateErrorBlock(pathOfError) {
|
|
2911
2989
|
const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
|
|
2912
|
-
let errorBlock = hasPath ?
|
|
2990
|
+
let errorBlock = hasPath ? get14(this.errorSchema, pathOfError) : this.errorSchema;
|
|
2913
2991
|
if (!errorBlock && pathOfError) {
|
|
2914
2992
|
errorBlock = {};
|
|
2915
2993
|
setWith(this.errorSchema, pathOfError, errorBlock, Object);
|
|
@@ -2935,15 +3013,15 @@
|
|
|
2935
3013
|
*/
|
|
2936
3014
|
addErrors(errorOrList, pathOfError) {
|
|
2937
3015
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2938
|
-
let errorsList =
|
|
3016
|
+
let errorsList = get14(errorBlock, ERRORS_KEY);
|
|
2939
3017
|
if (!Array.isArray(errorsList)) {
|
|
2940
3018
|
errorsList = [];
|
|
2941
3019
|
errorBlock[ERRORS_KEY] = errorsList;
|
|
2942
3020
|
}
|
|
2943
3021
|
if (Array.isArray(errorOrList)) {
|
|
2944
|
-
|
|
3022
|
+
set3(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, ...errorOrList])]);
|
|
2945
3023
|
} else {
|
|
2946
|
-
|
|
3024
|
+
set3(errorBlock, ERRORS_KEY, [.../* @__PURE__ */ new Set([...errorsList, errorOrList])]);
|
|
2947
3025
|
}
|
|
2948
3026
|
return this;
|
|
2949
3027
|
}
|
|
@@ -2958,7 +3036,7 @@
|
|
|
2958
3036
|
setErrors(errorOrList, pathOfError) {
|
|
2959
3037
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2960
3038
|
const listToAdd = Array.isArray(errorOrList) ? [.../* @__PURE__ */ new Set([...errorOrList])] : [errorOrList];
|
|
2961
|
-
|
|
3039
|
+
set3(errorBlock, ERRORS_KEY, listToAdd);
|
|
2962
3040
|
return this;
|
|
2963
3041
|
}
|
|
2964
3042
|
/** Clears the error(s) in the `ErrorSchema` at either the root level or the location within the schema described by
|
|
@@ -2970,7 +3048,7 @@
|
|
|
2970
3048
|
*/
|
|
2971
3049
|
clearErrors(pathOfError) {
|
|
2972
3050
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2973
|
-
|
|
3051
|
+
set3(errorBlock, ERRORS_KEY, []);
|
|
2974
3052
|
return this;
|
|
2975
3053
|
}
|
|
2976
3054
|
};
|
|
@@ -2986,7 +3064,7 @@
|
|
|
2986
3064
|
if (!aIsPlainObject && bIsPlainObject) {
|
|
2987
3065
|
return keys(b);
|
|
2988
3066
|
}
|
|
2989
|
-
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals_default(value,
|
|
3067
|
+
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals_default(value, get14(b, key))));
|
|
2990
3068
|
const diffFields = difference(keys(b), keys(a));
|
|
2991
3069
|
return [...unequalFields, ...diffFields];
|
|
2992
3070
|
}
|
|
@@ -3087,7 +3165,7 @@
|
|
|
3087
3165
|
};
|
|
3088
3166
|
function getSubmitButtonOptions(uiSchema = {}) {
|
|
3089
3167
|
const uiOptions = getUiOptions(uiSchema);
|
|
3090
|
-
if (uiOptions
|
|
3168
|
+
if (uiOptions?.[SUBMIT_BTN_OPTIONS_KEY]) {
|
|
3091
3169
|
const options = uiOptions[SUBMIT_BTN_OPTIONS_KEY];
|
|
3092
3170
|
return { ...DEFAULT_OPTIONS, ...options };
|
|
3093
3171
|
}
|
|
@@ -3111,7 +3189,7 @@
|
|
|
3111
3189
|
);
|
|
3112
3190
|
}
|
|
3113
3191
|
function getTestIds() {
|
|
3114
|
-
if (
|
|
3192
|
+
if (get14(globalThis, "process.env.NODE_ENV") !== "test") {
|
|
3115
3193
|
return {};
|
|
3116
3194
|
}
|
|
3117
3195
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -3180,11 +3258,11 @@
|
|
|
3180
3258
|
}
|
|
3181
3259
|
};
|
|
3182
3260
|
function mergeWidgetOptions(AWidget) {
|
|
3183
|
-
let MergedWidget =
|
|
3261
|
+
let MergedWidget = get14(AWidget, "MergedWidget");
|
|
3184
3262
|
if (!MergedWidget) {
|
|
3185
|
-
const defaultOptions = AWidget.defaultProps
|
|
3263
|
+
const defaultOptions = AWidget.defaultProps?.options || {};
|
|
3186
3264
|
MergedWidget = ({ options, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(AWidget, { options: { ...defaultOptions, ...options }, ...props });
|
|
3187
|
-
|
|
3265
|
+
set3(AWidget, "MergedWidget", MergedWidget);
|
|
3188
3266
|
}
|
|
3189
3267
|
return MergedWidget;
|
|
3190
3268
|
}
|
|
@@ -3234,7 +3312,7 @@
|
|
|
3234
3312
|
return hashString(sortedJSONStringify(object));
|
|
3235
3313
|
}
|
|
3236
3314
|
function hashForSchema(schema) {
|
|
3237
|
-
return
|
|
3315
|
+
return hashString(sortedJSONStringify(schema));
|
|
3238
3316
|
}
|
|
3239
3317
|
|
|
3240
3318
|
// src/hasWidget.ts
|
|
@@ -3285,6 +3363,8 @@
|
|
|
3285
3363
|
function isFormDataAvailable(formData) {
|
|
3286
3364
|
return !isNil(formData) && (!isObject2(formData) || Array.isArray(formData) || !isEmpty4(formData));
|
|
3287
3365
|
}
|
|
3366
|
+
|
|
3367
|
+
// src/isRootSchema.ts
|
|
3288
3368
|
function isRootSchema(registry, schemaToCompare) {
|
|
3289
3369
|
const { rootSchema, schemaUtils } = registry;
|
|
3290
3370
|
if (deepEquals_default(schemaToCompare, rootSchema)) {
|
|
@@ -3292,7 +3372,7 @@
|
|
|
3292
3372
|
}
|
|
3293
3373
|
if (REF_KEY in rootSchema) {
|
|
3294
3374
|
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3295
|
-
return deepEquals_default(schemaToCompare,
|
|
3375
|
+
return deepEquals_default(schemaToCompare, resolvedSchema);
|
|
3296
3376
|
}
|
|
3297
3377
|
return false;
|
|
3298
3378
|
}
|
|
@@ -3306,12 +3386,21 @@
|
|
|
3306
3386
|
function localToUTC(dateString) {
|
|
3307
3387
|
return dateString ? new Date(dateString).toJSON() : void 0;
|
|
3308
3388
|
}
|
|
3389
|
+
|
|
3390
|
+
// src/logUnsupportedDefaultForEnum.ts
|
|
3391
|
+
function logUnsupportedDefaultForEnum(id, schema, enumOptions, multiple = false) {
|
|
3392
|
+
if (!multiple && Array.isArray(enumOptions) && schema.default !== void 0 && enumOptionsIndexForValue(schema.default, enumOptions, multiple) === void 0) {
|
|
3393
|
+
console.error(
|
|
3394
|
+
`The schema default value "${schema.default}" is not one of the values in the enum options for "${id}"`
|
|
3395
|
+
);
|
|
3396
|
+
}
|
|
3397
|
+
}
|
|
3309
3398
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3310
3399
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3311
3400
|
if (has5(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3312
3401
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3313
3402
|
}
|
|
3314
|
-
return
|
|
3403
|
+
return get14(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3315
3404
|
}
|
|
3316
3405
|
|
|
3317
3406
|
// src/nameGenerators.ts
|
|
@@ -3497,13 +3586,13 @@
|
|
|
3497
3586
|
if (schema.const) {
|
|
3498
3587
|
return true;
|
|
3499
3588
|
}
|
|
3500
|
-
if (schema.enum
|
|
3589
|
+
if (schema.enum?.length === 1 && schema.enum[0] === true) {
|
|
3501
3590
|
return true;
|
|
3502
3591
|
}
|
|
3503
|
-
if (schema.anyOf
|
|
3592
|
+
if (schema.anyOf?.length === 1) {
|
|
3504
3593
|
return schemaRequiresTrueValue(schema.anyOf[0]);
|
|
3505
3594
|
}
|
|
3506
|
-
if (schema.oneOf
|
|
3595
|
+
if (schema.oneOf?.length === 1) {
|
|
3507
3596
|
return schemaRequiresTrueValue(schema.oneOf[0]);
|
|
3508
3597
|
}
|
|
3509
3598
|
if (schema.allOf) {
|
|
@@ -3512,6 +3601,35 @@
|
|
|
3512
3601
|
}
|
|
3513
3602
|
return false;
|
|
3514
3603
|
}
|
|
3604
|
+
function SelectedOptionDescription({ hideLabel, id, multiple, options, registry, uiSchema, value }) {
|
|
3605
|
+
if (multiple || hideLabel) {
|
|
3606
|
+
return null;
|
|
3607
|
+
}
|
|
3608
|
+
const { label = true } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3609
|
+
if (!label) {
|
|
3610
|
+
return null;
|
|
3611
|
+
}
|
|
3612
|
+
const option = options.enumOptions?.find(({ value: enumValue }) => enumOptionsIsSelected(enumValue, value));
|
|
3613
|
+
const description = option?.schema?.description;
|
|
3614
|
+
if (!description) {
|
|
3615
|
+
return null;
|
|
3616
|
+
}
|
|
3617
|
+
const DescriptionFieldTemplate = getTemplate(
|
|
3618
|
+
"DescriptionFieldTemplate",
|
|
3619
|
+
registry,
|
|
3620
|
+
options
|
|
3621
|
+
);
|
|
3622
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3623
|
+
DescriptionFieldTemplate,
|
|
3624
|
+
{
|
|
3625
|
+
id: descriptionId(id),
|
|
3626
|
+
description,
|
|
3627
|
+
schema: option.schema,
|
|
3628
|
+
uiSchema,
|
|
3629
|
+
registry
|
|
3630
|
+
}
|
|
3631
|
+
);
|
|
3632
|
+
}
|
|
3515
3633
|
|
|
3516
3634
|
// src/shallowEquals.ts
|
|
3517
3635
|
function shallowEquals(a, b) {
|
|
@@ -3753,7 +3871,7 @@
|
|
|
3753
3871
|
function addNameToDataURL(dataURL, name) {
|
|
3754
3872
|
return dataURL.replace(";base64", `;name=${encodeURIComponent(name)};base64`);
|
|
3755
3873
|
}
|
|
3756
|
-
function processFile(file) {
|
|
3874
|
+
async function processFile(file) {
|
|
3757
3875
|
const { name, size, type } = file;
|
|
3758
3876
|
return new Promise((resolve, reject) => {
|
|
3759
3877
|
const reader = new window.FileReader();
|
|
@@ -3778,7 +3896,7 @@
|
|
|
3778
3896
|
reader.readAsDataURL(file);
|
|
3779
3897
|
});
|
|
3780
3898
|
}
|
|
3781
|
-
function processFiles(files) {
|
|
3899
|
+
async function processFiles(files) {
|
|
3782
3900
|
return Promise.all(Array.from(files).map(processFile));
|
|
3783
3901
|
}
|
|
3784
3902
|
function extractFileInfo(dataURLs) {
|
|
@@ -3911,6 +4029,7 @@
|
|
|
3911
4029
|
TranslatableString2["AddButton"] = "Add";
|
|
3912
4030
|
TranslatableString2["AddItemButton"] = "Add Item";
|
|
3913
4031
|
TranslatableString2["CopyButton"] = "Copy";
|
|
4032
|
+
TranslatableString2["ExpandButton"] = "Expand Cycle";
|
|
3914
4033
|
TranslatableString2["MoveDownButton"] = "Move down";
|
|
3915
4034
|
TranslatableString2["MoveUpButton"] = "Move up";
|
|
3916
4035
|
TranslatableString2["RemoveButton"] = "Remove";
|
|
@@ -3931,6 +4050,7 @@
|
|
|
3931
4050
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
3932
4051
|
TranslatableString2["KeyLabel"] = "%1 Key";
|
|
3933
4052
|
TranslatableString2["DeprecatedLabel"] = "%1 (deprecated)";
|
|
4053
|
+
TranslatableString2["CycleDetected"] = 'Circular reference ($ref cycle) detected for field "%1". You may choose to expand to the next cycle break';
|
|
3934
4054
|
TranslatableString2["InvalidObjectField"] = 'Invalid "%1" object field configuration: _%2_.';
|
|
3935
4055
|
TranslatableString2["UnsupportedField"] = "Unsupported field schema.";
|
|
3936
4056
|
TranslatableString2["UnsupportedFieldWithId"] = "Unsupported field schema for field `%1`.";
|
|
@@ -3964,7 +4084,7 @@
|
|
|
3964
4084
|
* @param hash - The hash value at which to map the schema
|
|
3965
4085
|
*/
|
|
3966
4086
|
addSchema(schema, hash) {
|
|
3967
|
-
const key =
|
|
4087
|
+
const key = get14(schema, ID_KEY, hash);
|
|
3968
4088
|
const identifiedSchema = { ...schema, [ID_KEY]: key };
|
|
3969
4089
|
const existing = this.schemaMap[key];
|
|
3970
4090
|
if (!existing) {
|
|
@@ -4086,10 +4206,13 @@
|
|
|
4086
4206
|
exports.REF_KEY = REF_KEY;
|
|
4087
4207
|
exports.REQUIRED_KEY = REQUIRED_KEY;
|
|
4088
4208
|
exports.RJSF_ADDITIONAL_PROPERTIES_FLAG = RJSF_ADDITIONAL_PROPERTIES_FLAG;
|
|
4209
|
+
exports.RJSF_PREFIX_KEY = RJSF_PREFIX_KEY;
|
|
4210
|
+
exports.RJSF_REF_CYCLE_KEY = RJSF_REF_CYCLE_KEY;
|
|
4089
4211
|
exports.RJSF_REF_KEY = RJSF_REF_KEY;
|
|
4090
4212
|
exports.ROOT_SCHEMA_PREFIX = ROOT_SCHEMA_PREFIX;
|
|
4091
4213
|
exports.SCHEMA_KEY = SCHEMA_KEY;
|
|
4092
4214
|
exports.SUBMIT_BTN_OPTIONS_KEY = SUBMIT_BTN_OPTIONS_KEY;
|
|
4215
|
+
exports.SelectedOptionDescription = SelectedOptionDescription;
|
|
4093
4216
|
exports.TranslatableString = TranslatableString;
|
|
4094
4217
|
exports.UI_DEFINITIONS_KEY = UI_DEFINITIONS_KEY;
|
|
4095
4218
|
exports.UI_FIELD_KEY = UI_FIELD_KEY;
|
|
@@ -4160,6 +4283,7 @@
|
|
|
4160
4283
|
exports.isValueEmpty = isValueEmpty;
|
|
4161
4284
|
exports.labelValue = labelValue;
|
|
4162
4285
|
exports.localToUTC = localToUTC;
|
|
4286
|
+
exports.logUnsupportedDefaultForEnum = logUnsupportedDefaultForEnum;
|
|
4163
4287
|
exports.lookupFromFormContext = lookupFromFormContext;
|
|
4164
4288
|
exports.mergeDefaultsWithFormData = mergeDefaultsWithFormData;
|
|
4165
4289
|
exports.mergeObjects = mergeObjects;
|