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