@rjsf/utils 6.0.0-beta.2 → 6.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index.js → index.cjs} +396 -264
- package/dist/index.cjs.map +7 -0
- package/dist/utils.esm.js +395 -263
- package/dist/utils.esm.js.map +4 -4
- package/dist/utils.umd.js +368 -249
- package/lib/ErrorSchemaBuilder.d.ts +2 -2
- package/lib/canExpand.d.ts +1 -1
- package/lib/constants.d.ts +3 -0
- package/lib/constants.js +3 -0
- package/lib/constants.js.map +1 -1
- package/lib/createSchemaUtils.js +25 -18
- package/lib/createSchemaUtils.js.map +1 -1
- package/lib/enums.d.ts +9 -3
- package/lib/enums.js +9 -3
- package/lib/enums.js.map +1 -1
- package/lib/findSchemaDefinition.d.ts +7 -1
- package/lib/findSchemaDefinition.js +48 -6
- package/lib/findSchemaDefinition.js.map +1 -1
- package/lib/getTestIds.js +2 -2
- package/lib/getTestIds.js.map +1 -1
- package/lib/getUiOptions.js +4 -0
- package/lib/getUiOptions.js.map +1 -1
- package/lib/getWidget.js +3 -3
- package/lib/getWidget.js.map +1 -1
- package/lib/guessType.d.ts +1 -1
- package/lib/idGenerators.d.ts +22 -15
- package/lib/idGenerators.js +17 -8
- package/lib/idGenerators.js.map +1 -1
- package/lib/index.d.ts +10 -4
- package/lib/index.js +9 -4
- package/lib/index.js.map +1 -1
- package/lib/isFormDataAvailable.d.ts +7 -0
- package/lib/isFormDataAvailable.js +13 -0
- package/lib/isFormDataAvailable.js.map +1 -0
- package/lib/isRootSchema.d.ts +13 -0
- package/lib/isRootSchema.js +25 -0
- package/lib/isRootSchema.js.map +1 -0
- package/lib/mergeDefaultsWithFormData.js +14 -2
- package/lib/mergeDefaultsWithFormData.js.map +1 -1
- package/lib/schema/findFieldInSchema.d.ts +1 -1
- package/lib/schema/findFieldInSchema.js +1 -1
- package/lib/schema/getDefaultFormState.d.ts +17 -3
- package/lib/schema/getDefaultFormState.js +73 -27
- package/lib/schema/getDefaultFormState.js.map +1 -1
- package/lib/schema/getDisplayLabel.js +2 -2
- package/lib/schema/getDisplayLabel.js.map +1 -1
- package/lib/schema/index.d.ts +1 -2
- package/lib/schema/index.js +1 -2
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/retrieveSchema.d.ts +11 -6
- package/lib/schema/retrieveSchema.js +42 -19
- package/lib/schema/retrieveSchema.js.map +1 -1
- package/lib/shallowEquals.d.ts +8 -0
- package/lib/shallowEquals.js +36 -0
- package/lib/shallowEquals.js.map +1 -0
- package/lib/shouldRender.d.ts +8 -2
- package/lib/shouldRender.js +17 -2
- package/lib/shouldRender.js.map +1 -1
- package/lib/shouldRenderOptionalField.d.ts +18 -0
- package/lib/shouldRenderOptionalField.js +47 -0
- package/lib/shouldRenderOptionalField.js.map +1 -0
- package/lib/toFieldPathId.d.ts +12 -0
- package/lib/toFieldPathId.js +19 -0
- package/lib/toFieldPathId.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types.d.ts +136 -81
- package/lib/validationDataMerge.d.ts +2 -1
- package/lib/validationDataMerge.js +3 -2
- package/lib/validationDataMerge.js.map +1 -1
- package/package.json +13 -14
- package/src/ErrorSchemaBuilder.ts +2 -2
- package/src/constants.ts +3 -0
- package/src/createSchemaUtils.ts +25 -26
- package/src/enums.ts +9 -3
- package/src/findSchemaDefinition.ts +55 -6
- package/src/getTestIds.ts +2 -2
- package/src/getUiOptions.ts +4 -0
- package/src/getWidget.tsx +3 -3
- package/src/idGenerators.ts +35 -25
- package/src/index.ts +16 -2
- package/src/isFormDataAvailable.ts +13 -0
- package/src/isRootSchema.ts +30 -0
- package/src/mergeDefaultsWithFormData.ts +16 -2
- package/src/schema/findFieldInSchema.ts +1 -1
- package/src/schema/getDefaultFormState.ts +95 -33
- package/src/schema/getDisplayLabel.ts +2 -2
- package/src/schema/index.ts +0 -2
- package/src/schema/retrieveSchema.ts +46 -10
- package/src/shallowEquals.ts +41 -0
- package/src/shouldRender.ts +27 -2
- package/src/shouldRenderOptionalField.ts +56 -0
- package/src/toFieldPathId.ts +24 -0
- package/src/types.ts +156 -84
- package/src/validationDataMerge.ts +7 -1
- package/dist/index.js.map +0 -7
- package/lib/schema/toIdSchema.d.ts +0 -14
- package/lib/schema/toIdSchema.js +0 -62
- package/lib/schema/toIdSchema.js.map +0 -1
- package/src/schema/toIdSchema.ts +0 -131
|
@@ -35,6 +35,8 @@ __export(index_exports, {
|
|
|
35
35
|
ALL_OF_KEY: () => ALL_OF_KEY,
|
|
36
36
|
ANY_OF_KEY: () => ANY_OF_KEY,
|
|
37
37
|
CONST_KEY: () => CONST_KEY,
|
|
38
|
+
DEFAULT_ID_PREFIX: () => DEFAULT_ID_PREFIX,
|
|
39
|
+
DEFAULT_ID_SEPARATOR: () => DEFAULT_ID_SEPARATOR,
|
|
38
40
|
DEFAULT_KEY: () => DEFAULT_KEY,
|
|
39
41
|
DEFINITIONS_KEY: () => DEFINITIONS_KEY,
|
|
40
42
|
DEPENDENCIES_KEY: () => DEPENDENCIES_KEY,
|
|
@@ -46,6 +48,7 @@ __export(index_exports, {
|
|
|
46
48
|
ID_KEY: () => ID_KEY,
|
|
47
49
|
IF_KEY: () => IF_KEY,
|
|
48
50
|
ITEMS_KEY: () => ITEMS_KEY,
|
|
51
|
+
JSON_SCHEMA_DRAFT_2019_09: () => JSON_SCHEMA_DRAFT_2019_09,
|
|
49
52
|
JSON_SCHEMA_DRAFT_2020_12: () => JSON_SCHEMA_DRAFT_2020_12,
|
|
50
53
|
JUNK_OPTION_ID: () => JUNK_OPTION_ID,
|
|
51
54
|
LOOKUP_MAP_NAME: () => LOOKUP_MAP_NAME,
|
|
@@ -113,8 +116,10 @@ __export(index_exports, {
|
|
|
113
116
|
isCustomWidget: () => isCustomWidget,
|
|
114
117
|
isFilesArray: () => isFilesArray,
|
|
115
118
|
isFixedItems: () => isFixedItems,
|
|
119
|
+
isFormDataAvailable: () => isFormDataAvailable,
|
|
116
120
|
isMultiSelect: () => isMultiSelect,
|
|
117
121
|
isObject: () => isObject,
|
|
122
|
+
isRootSchema: () => isRootSchema,
|
|
118
123
|
isSelect: () => isSelect,
|
|
119
124
|
labelValue: () => labelValue,
|
|
120
125
|
localToUTC: () => localToUTC,
|
|
@@ -123,6 +128,7 @@ __export(index_exports, {
|
|
|
123
128
|
mergeObjects: () => mergeObjects,
|
|
124
129
|
mergeSchemas: () => mergeSchemas,
|
|
125
130
|
optionId: () => optionId,
|
|
131
|
+
optionalControlsId: () => optionalControlsId,
|
|
126
132
|
optionsList: () => optionsList,
|
|
127
133
|
orderProperties: () => orderProperties,
|
|
128
134
|
pad: () => pad,
|
|
@@ -133,14 +139,16 @@ __export(index_exports, {
|
|
|
133
139
|
sanitizeDataForNewSchema: () => sanitizeDataForNewSchema,
|
|
134
140
|
schemaParser: () => schemaParser,
|
|
135
141
|
schemaRequiresTrueValue: () => schemaRequiresTrueValue,
|
|
142
|
+
shallowEquals: () => shallowEquals,
|
|
136
143
|
shouldRender: () => shouldRender,
|
|
144
|
+
shouldRenderOptionalField: () => shouldRenderOptionalField,
|
|
137
145
|
sortedJSONStringify: () => sortedJSONStringify,
|
|
138
146
|
titleId: () => titleId,
|
|
139
147
|
toConstant: () => toConstant,
|
|
140
148
|
toDateString: () => toDateString,
|
|
141
149
|
toErrorList: () => toErrorList,
|
|
142
150
|
toErrorSchema: () => toErrorSchema,
|
|
143
|
-
|
|
151
|
+
toFieldPathId: () => toFieldPathId,
|
|
144
152
|
toPathSchema: () => toPathSchema,
|
|
145
153
|
unwrapErrorHandler: () => unwrapErrorHandler,
|
|
146
154
|
utcToLocal: () => utcToLocal,
|
|
@@ -217,6 +225,8 @@ var REQUIRED_KEY = "required";
|
|
|
217
225
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
218
226
|
var REF_KEY = "$ref";
|
|
219
227
|
var SCHEMA_KEY = "$schema";
|
|
228
|
+
var DEFAULT_ID_PREFIX = "root";
|
|
229
|
+
var DEFAULT_ID_SEPARATOR = "_";
|
|
220
230
|
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
221
231
|
var FORM_CONTEXT_NAME = "formContext";
|
|
222
232
|
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
@@ -226,10 +236,14 @@ var UI_FIELD_KEY = "ui:field";
|
|
|
226
236
|
var UI_WIDGET_KEY = "ui:widget";
|
|
227
237
|
var UI_OPTIONS_KEY = "ui:options";
|
|
228
238
|
var UI_GLOBAL_OPTIONS_KEY = "ui:globalOptions";
|
|
239
|
+
var JSON_SCHEMA_DRAFT_2019_09 = "https://json-schema.org/draft/2019-09/schema";
|
|
229
240
|
var JSON_SCHEMA_DRAFT_2020_12 = "https://json-schema.org/draft/2020-12/schema";
|
|
230
241
|
|
|
231
242
|
// src/getUiOptions.ts
|
|
232
243
|
function getUiOptions(uiSchema = {}, globalOptions = {}) {
|
|
244
|
+
if (!uiSchema) {
|
|
245
|
+
return { ...globalOptions };
|
|
246
|
+
}
|
|
233
247
|
return Object.keys(uiSchema).filter((key) => key.indexOf("ui:") === 0).reduce(
|
|
234
248
|
(options, key) => {
|
|
235
249
|
const value = uiSchema[key];
|
|
@@ -299,15 +313,15 @@ function deepEquals(a, b) {
|
|
|
299
313
|
}
|
|
300
314
|
|
|
301
315
|
// src/schema/findFieldInSchema.ts
|
|
302
|
-
var
|
|
316
|
+
var import_get8 = __toESM(require("lodash/get"), 1);
|
|
303
317
|
var import_has3 = __toESM(require("lodash/has"), 1);
|
|
304
318
|
|
|
305
319
|
// src/schema/findSelectedOptionInXxxOf.ts
|
|
306
|
-
var
|
|
320
|
+
var import_get6 = __toESM(require("lodash/get"), 1);
|
|
307
321
|
var import_isEqual = __toESM(require("lodash/isEqual"), 1);
|
|
308
322
|
|
|
309
323
|
// src/schema/retrieveSchema.ts
|
|
310
|
-
var
|
|
324
|
+
var import_get5 = __toESM(require("lodash/get"), 1);
|
|
311
325
|
var import_set = __toESM(require("lodash/set"), 1);
|
|
312
326
|
var import_times = __toESM(require("lodash/times"), 1);
|
|
313
327
|
var import_transform = __toESM(require("lodash/transform"), 1);
|
|
@@ -322,12 +336,22 @@ var import_omit = __toESM(require("lodash/omit"), 1);
|
|
|
322
336
|
var import_isObject3 = __toESM(require("lodash/isObject"), 1);
|
|
323
337
|
var import_isEmpty = __toESM(require("lodash/isEmpty"), 1);
|
|
324
338
|
var import_fast_uri = __toESM(require("fast-uri"), 1);
|
|
339
|
+
var import_get = __toESM(require("lodash/get"), 1);
|
|
325
340
|
function findEmbeddedSchemaRecursive(schema, ref) {
|
|
326
341
|
if (ID_KEY in schema && import_fast_uri.default.equal(schema[ID_KEY], ref)) {
|
|
327
342
|
return schema;
|
|
328
343
|
}
|
|
329
344
|
for (const subSchema of Object.values(schema)) {
|
|
330
|
-
if (
|
|
345
|
+
if (Array.isArray(subSchema)) {
|
|
346
|
+
for (const item of subSchema) {
|
|
347
|
+
if ((0, import_isObject3.default)(item)) {
|
|
348
|
+
const result = findEmbeddedSchemaRecursive(item, ref);
|
|
349
|
+
if (result !== void 0) {
|
|
350
|
+
return result;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
} else if ((0, import_isObject3.default)(subSchema)) {
|
|
331
355
|
const result = findEmbeddedSchemaRecursive(subSchema, ref);
|
|
332
356
|
if (result !== void 0) {
|
|
333
357
|
return result;
|
|
@@ -336,12 +360,29 @@ function findEmbeddedSchemaRecursive(schema, ref) {
|
|
|
336
360
|
}
|
|
337
361
|
return void 0;
|
|
338
362
|
}
|
|
363
|
+
function makeAllReferencesAbsolute(schema, baseURI) {
|
|
364
|
+
const currentURI = (0, import_get.default)(schema, ID_KEY, baseURI);
|
|
365
|
+
if (REF_KEY in schema) {
|
|
366
|
+
schema = { ...schema, [REF_KEY]: import_fast_uri.default.resolve(currentURI, schema[REF_KEY]) };
|
|
367
|
+
}
|
|
368
|
+
for (const [key, subSchema] of Object.entries(schema)) {
|
|
369
|
+
if (Array.isArray(subSchema)) {
|
|
370
|
+
schema = {
|
|
371
|
+
...schema,
|
|
372
|
+
[key]: subSchema.map((item) => (0, import_isObject3.default)(item) ? makeAllReferencesAbsolute(item, currentURI) : item)
|
|
373
|
+
};
|
|
374
|
+
} else if ((0, import_isObject3.default)(subSchema)) {
|
|
375
|
+
schema = { ...schema, [key]: makeAllReferencesAbsolute(subSchema, currentURI) };
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return schema;
|
|
379
|
+
}
|
|
339
380
|
function splitKeyElementFromObject(key, object) {
|
|
340
381
|
const value = object[key];
|
|
341
382
|
const remaining = (0, import_omit.default)(object, [key]);
|
|
342
383
|
return [remaining, value];
|
|
343
384
|
}
|
|
344
|
-
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI =
|
|
385
|
+
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = (0, import_get.default)(rootSchema, [ID_KEY])) {
|
|
345
386
|
const ref = $ref || "";
|
|
346
387
|
let current = void 0;
|
|
347
388
|
if (ref.startsWith("#")) {
|
|
@@ -381,23 +422,27 @@ function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [],
|
|
|
381
422
|
const [remaining, theRef] = splitKeyElementFromObject(REF_KEY, current);
|
|
382
423
|
const subSchema = findSchemaDefinitionRecursive(theRef, rootSchema, [...recurseList, ref], baseURI);
|
|
383
424
|
if (Object.keys(remaining).length > 0) {
|
|
384
|
-
|
|
425
|
+
if (rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2019_09 || rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
426
|
+
return { [ALL_OF_KEY]: [remaining, subSchema] };
|
|
427
|
+
} else {
|
|
428
|
+
return { ...remaining, ...subSchema };
|
|
429
|
+
}
|
|
385
430
|
}
|
|
386
431
|
return subSchema;
|
|
387
432
|
}
|
|
388
433
|
return current;
|
|
389
434
|
}
|
|
390
|
-
function findSchemaDefinition($ref, rootSchema = {}, baseURI =
|
|
435
|
+
function findSchemaDefinition($ref, rootSchema = {}, baseURI = (0, import_get.default)(rootSchema, [ID_KEY])) {
|
|
391
436
|
const recurseList = [];
|
|
392
437
|
return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
|
|
393
438
|
}
|
|
394
439
|
|
|
395
440
|
// src/getDiscriminatorFieldFromSchema.ts
|
|
396
|
-
var
|
|
441
|
+
var import_get2 = __toESM(require("lodash/get"), 1);
|
|
397
442
|
var import_isString = __toESM(require("lodash/isString"), 1);
|
|
398
443
|
function getDiscriminatorFieldFromSchema(schema) {
|
|
399
444
|
let discriminator;
|
|
400
|
-
const maybeString = (0,
|
|
445
|
+
const maybeString = (0, import_get2.default)(schema, DISCRIMINATOR_PATH);
|
|
401
446
|
if ((0, import_isString.default)(maybeString)) {
|
|
402
447
|
discriminator = maybeString;
|
|
403
448
|
} else if (maybeString !== void 0) {
|
|
@@ -471,21 +516,21 @@ function mergeSchemas(obj1, obj2) {
|
|
|
471
516
|
}
|
|
472
517
|
|
|
473
518
|
// src/schema/getFirstMatchingOption.ts
|
|
474
|
-
var
|
|
519
|
+
var import_get4 = __toESM(require("lodash/get"), 1);
|
|
475
520
|
var import_has = __toESM(require("lodash/has"), 1);
|
|
476
521
|
var import_isNumber = __toESM(require("lodash/isNumber"), 1);
|
|
477
522
|
|
|
478
523
|
// src/getOptionMatchingSimpleDiscriminator.ts
|
|
479
|
-
var
|
|
524
|
+
var import_get3 = __toESM(require("lodash/get"), 1);
|
|
480
525
|
function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
|
|
481
526
|
if (formData && discriminatorField) {
|
|
482
|
-
const value = (0,
|
|
527
|
+
const value = (0, import_get3.default)(formData, discriminatorField);
|
|
483
528
|
if (value === void 0) {
|
|
484
529
|
return;
|
|
485
530
|
}
|
|
486
531
|
for (let i = 0; i < options.length; i++) {
|
|
487
532
|
const option = options[i];
|
|
488
|
-
const discriminator = (0,
|
|
533
|
+
const discriminator = (0, import_get3.default)(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
489
534
|
if (discriminator.type === "object" || discriminator.type === "array") {
|
|
490
535
|
continue;
|
|
491
536
|
}
|
|
@@ -512,8 +557,8 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
512
557
|
for (let i = 0; i < options.length; i++) {
|
|
513
558
|
const option = options[i];
|
|
514
559
|
if (discriminatorField && (0, import_has.default)(option, [PROPERTIES_KEY, discriminatorField])) {
|
|
515
|
-
const value = (0,
|
|
516
|
-
const discriminator = (0,
|
|
560
|
+
const value = (0, import_get4.default)(formData, discriminatorField);
|
|
561
|
+
const discriminator = (0, import_get4.default)(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
517
562
|
if (validator.isValid(discriminator, value, rootSchema)) {
|
|
518
563
|
return i;
|
|
519
564
|
}
|
|
@@ -549,7 +594,7 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
549
594
|
|
|
550
595
|
// src/schema/retrieveSchema.ts
|
|
551
596
|
var import_isEmpty2 = __toESM(require("lodash/isEmpty"), 1);
|
|
552
|
-
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
|
|
597
|
+
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
|
|
553
598
|
return retrieveSchemaInternal(
|
|
554
599
|
validator,
|
|
555
600
|
schema,
|
|
@@ -557,7 +602,8 @@ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experim
|
|
|
557
602
|
rawFormData,
|
|
558
603
|
void 0,
|
|
559
604
|
void 0,
|
|
560
|
-
experimental_customMergeAllOf
|
|
605
|
+
experimental_customMergeAllOf,
|
|
606
|
+
resolveAnyOfOrOneOfRefs
|
|
561
607
|
)[0];
|
|
562
608
|
}
|
|
563
609
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
@@ -646,14 +692,16 @@ function getMatchingPatternProperties(schema, key) {
|
|
|
646
692
|
{}
|
|
647
693
|
);
|
|
648
694
|
}
|
|
649
|
-
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
695
|
+
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
650
696
|
const updatedSchemas = resolveReference(
|
|
651
697
|
validator,
|
|
652
698
|
schema,
|
|
653
699
|
rootSchema,
|
|
654
700
|
expandAllBranches,
|
|
655
701
|
recurseList,
|
|
656
|
-
formData
|
|
702
|
+
formData,
|
|
703
|
+
experimental_customMergeAllOf,
|
|
704
|
+
resolveAnyOfOrOneOfRefs
|
|
657
705
|
);
|
|
658
706
|
if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
|
|
659
707
|
return updatedSchemas;
|
|
@@ -665,7 +713,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
665
713
|
rootSchema,
|
|
666
714
|
expandAllBranches,
|
|
667
715
|
recurseList,
|
|
668
|
-
formData
|
|
716
|
+
formData,
|
|
717
|
+
experimental_customMergeAllOf
|
|
669
718
|
);
|
|
670
719
|
return resolvedSchemas.flatMap((s) => {
|
|
671
720
|
return retrieveSchemaInternal(
|
|
@@ -679,7 +728,7 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
679
728
|
);
|
|
680
729
|
});
|
|
681
730
|
}
|
|
682
|
-
if (ALL_OF_KEY in schema && Array.isArray(schema
|
|
731
|
+
if (ALL_OF_KEY in schema && Array.isArray(schema[ALL_OF_KEY])) {
|
|
683
732
|
const allOfSchemaElements = schema.allOf.map(
|
|
684
733
|
(allOfSubschema) => retrieveSchemaInternal(
|
|
685
734
|
validator,
|
|
@@ -699,8 +748,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
699
748
|
}
|
|
700
749
|
return [schema];
|
|
701
750
|
}
|
|
702
|
-
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
703
|
-
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
|
|
751
|
+
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
752
|
+
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList, void 0, resolveAnyOfOrOneOfRefs);
|
|
704
753
|
if (updatedSchema !== schema) {
|
|
705
754
|
return retrieveSchemaInternal(
|
|
706
755
|
validator,
|
|
@@ -709,12 +758,13 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
709
758
|
formData,
|
|
710
759
|
expandAllBranches,
|
|
711
760
|
recurseList,
|
|
712
|
-
experimental_customMergeAllOf
|
|
761
|
+
experimental_customMergeAllOf,
|
|
762
|
+
resolveAnyOfOrOneOfRefs
|
|
713
763
|
);
|
|
714
764
|
}
|
|
715
765
|
return [schema];
|
|
716
766
|
}
|
|
717
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
767
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
718
768
|
if (!isObject(schema)) {
|
|
719
769
|
return schema;
|
|
720
770
|
}
|
|
@@ -737,7 +787,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
737
787
|
resolvedSchema[PROPERTIES_KEY],
|
|
738
788
|
(result, value, key) => {
|
|
739
789
|
const childList = [...recurseList];
|
|
740
|
-
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI);
|
|
790
|
+
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI, resolveAnyOfOrOneOfRefs);
|
|
741
791
|
childrenLists.push(childList);
|
|
742
792
|
},
|
|
743
793
|
{}
|
|
@@ -748,9 +798,28 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
748
798
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
749
799
|
resolvedSchema = {
|
|
750
800
|
...resolvedSchema,
|
|
751
|
-
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI)
|
|
801
|
+
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
752
802
|
};
|
|
753
803
|
}
|
|
804
|
+
if (resolveAnyOfOrOneOfRefs) {
|
|
805
|
+
let key;
|
|
806
|
+
let schemas;
|
|
807
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
808
|
+
key = ANY_OF_KEY;
|
|
809
|
+
schemas = resolvedSchema[ANY_OF_KEY];
|
|
810
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
811
|
+
key = ONE_OF_KEY;
|
|
812
|
+
schemas = resolvedSchema[ONE_OF_KEY];
|
|
813
|
+
}
|
|
814
|
+
if (key && schemas) {
|
|
815
|
+
resolvedSchema = {
|
|
816
|
+
...resolvedSchema,
|
|
817
|
+
[key]: schemas.map(
|
|
818
|
+
(s) => resolveAllReferences(s, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
819
|
+
)
|
|
820
|
+
};
|
|
821
|
+
}
|
|
822
|
+
}
|
|
754
823
|
return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;
|
|
755
824
|
}
|
|
756
825
|
function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {
|
|
@@ -768,9 +837,9 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
768
837
|
if (!(0, import_isEmpty2.default)(matchingProperties)) {
|
|
769
838
|
schema.properties[key] = retrieveSchema(
|
|
770
839
|
validator,
|
|
771
|
-
{
|
|
840
|
+
{ [ALL_OF_KEY]: Object.values(matchingProperties) },
|
|
772
841
|
rootSchema,
|
|
773
|
-
formData,
|
|
842
|
+
(0, import_get5.default)(formData, [key]),
|
|
774
843
|
experimental_customMergeAllOf
|
|
775
844
|
);
|
|
776
845
|
(0, import_set.default)(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
@@ -778,12 +847,12 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
778
847
|
}
|
|
779
848
|
}
|
|
780
849
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
|
|
781
|
-
let additionalProperties
|
|
850
|
+
let additionalProperties;
|
|
782
851
|
if (typeof schema.additionalProperties !== "boolean") {
|
|
783
852
|
if (REF_KEY in schema.additionalProperties) {
|
|
784
853
|
additionalProperties = retrieveSchema(
|
|
785
854
|
validator,
|
|
786
|
-
{
|
|
855
|
+
{ [REF_KEY]: (0, import_get5.default)(schema.additionalProperties, [REF_KEY]) },
|
|
787
856
|
rootSchema,
|
|
788
857
|
formData,
|
|
789
858
|
experimental_customMergeAllOf
|
|
@@ -796,10 +865,10 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
796
865
|
...schema.additionalProperties
|
|
797
866
|
};
|
|
798
867
|
} else {
|
|
799
|
-
additionalProperties = { type: guessType((0,
|
|
868
|
+
additionalProperties = { type: guessType((0, import_get5.default)(formData, [key])) };
|
|
800
869
|
}
|
|
801
870
|
} else {
|
|
802
|
-
additionalProperties = { type: guessType((0,
|
|
871
|
+
additionalProperties = { type: guessType((0, import_get5.default)(formData, [key])) };
|
|
803
872
|
}
|
|
804
873
|
schema.properties[key] = additionalProperties;
|
|
805
874
|
(0, import_set.default)(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
@@ -810,7 +879,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
810
879
|
});
|
|
811
880
|
return schema;
|
|
812
881
|
}
|
|
813
|
-
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
|
|
882
|
+
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
814
883
|
if (!isObject(schema)) {
|
|
815
884
|
return [{}];
|
|
816
885
|
}
|
|
@@ -821,7 +890,8 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
821
890
|
expandAllBranches,
|
|
822
891
|
recurseList,
|
|
823
892
|
rawFormData,
|
|
824
|
-
experimental_customMergeAllOf
|
|
893
|
+
experimental_customMergeAllOf,
|
|
894
|
+
resolveAnyOfOrOneOfRefs
|
|
825
895
|
);
|
|
826
896
|
return resolvedSchemas.flatMap((s) => {
|
|
827
897
|
let resolvedSchema = s;
|
|
@@ -878,7 +948,7 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
878
948
|
validator,
|
|
879
949
|
{ allOf: [schema2.properties[key], ...Object.values(matchingProperties)] },
|
|
880
950
|
rootSchema,
|
|
881
|
-
rawFormData,
|
|
951
|
+
(0, import_get5.default)(rawFormData, [key]),
|
|
882
952
|
experimental_customMergeAllOf
|
|
883
953
|
);
|
|
884
954
|
}
|
|
@@ -950,7 +1020,7 @@ function resolveDependencies(validator, schema, rootSchema, expandAllBranches, r
|
|
|
950
1020
|
function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
951
1021
|
let schemas = [resolvedSchema];
|
|
952
1022
|
for (const dependencyKey in dependencies) {
|
|
953
|
-
if (!expandAllBranches && (0,
|
|
1023
|
+
if (!expandAllBranches && (0, import_get5.default)(formData, [dependencyKey]) === void 0) {
|
|
954
1024
|
continue;
|
|
955
1025
|
}
|
|
956
1026
|
if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {
|
|
@@ -1081,11 +1151,11 @@ function findSelectedOptionInXxxOf(validator, rootSchema, schema, fallbackField,
|
|
|
1081
1151
|
const xxxOfs = schema[xxx].map(
|
|
1082
1152
|
(xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
|
|
1083
1153
|
);
|
|
1084
|
-
const data = (0,
|
|
1154
|
+
const data = (0, import_get6.default)(formData, selectorField);
|
|
1085
1155
|
if (data !== void 0) {
|
|
1086
1156
|
return xxxOfs.find((xxx2) => {
|
|
1087
1157
|
return (0, import_isEqual.default)(
|
|
1088
|
-
(0,
|
|
1158
|
+
(0, import_get6.default)(xxx2, [PROPERTIES_KEY, selectorField, DEFAULT_KEY], (0, import_get6.default)(xxx2, [PROPERTIES_KEY, selectorField, CONST_KEY])),
|
|
1089
1159
|
data
|
|
1090
1160
|
);
|
|
1091
1161
|
});
|
|
@@ -1095,7 +1165,7 @@ function findSelectedOptionInXxxOf(validator, rootSchema, schema, fallbackField,
|
|
|
1095
1165
|
}
|
|
1096
1166
|
|
|
1097
1167
|
// src/schema/getFromSchema.ts
|
|
1098
|
-
var
|
|
1168
|
+
var import_get7 = __toESM(require("lodash/get"), 1);
|
|
1099
1169
|
var import_has2 = __toESM(require("lodash/has"), 1);
|
|
1100
1170
|
var import_isEmpty3 = __toESM(require("lodash/isEmpty"), 1);
|
|
1101
1171
|
function getFromSchemaInternal(validator, rootSchema, schema, path, experimental_customMergeAllOf) {
|
|
@@ -1109,7 +1179,7 @@ function getFromSchemaInternal(validator, rootSchema, schema, path, experimental
|
|
|
1109
1179
|
const pathList = Array.isArray(path) ? path : path.split(".");
|
|
1110
1180
|
const [part, ...nestedPath] = pathList;
|
|
1111
1181
|
if (part && (0, import_has2.default)(fieldSchema, part)) {
|
|
1112
|
-
fieldSchema = (0,
|
|
1182
|
+
fieldSchema = (0, import_get7.default)(fieldSchema, part);
|
|
1113
1183
|
return getFromSchemaInternal(
|
|
1114
1184
|
validator,
|
|
1115
1185
|
rootSchema,
|
|
@@ -1151,7 +1221,7 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1151
1221
|
parentField,
|
|
1152
1222
|
fieldName,
|
|
1153
1223
|
ONE_OF_KEY,
|
|
1154
|
-
(0,
|
|
1224
|
+
(0, import_get8.default)(formData, subPath),
|
|
1155
1225
|
experimental_customMergeAllOf
|
|
1156
1226
|
);
|
|
1157
1227
|
} else if ((0, import_has3.default)(parentField, ANY_OF_KEY)) {
|
|
@@ -1161,7 +1231,7 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1161
1231
|
parentField,
|
|
1162
1232
|
fieldName,
|
|
1163
1233
|
ANY_OF_KEY,
|
|
1164
|
-
(0,
|
|
1234
|
+
(0, import_get8.default)(formData, subPath),
|
|
1165
1235
|
experimental_customMergeAllOf
|
|
1166
1236
|
);
|
|
1167
1237
|
}
|
|
@@ -1215,11 +1285,11 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1215
1285
|
}
|
|
1216
1286
|
|
|
1217
1287
|
// src/schema/getDefaultFormState.ts
|
|
1218
|
-
var
|
|
1288
|
+
var import_get12 = __toESM(require("lodash/get"), 1);
|
|
1219
1289
|
var import_isEmpty4 = __toESM(require("lodash/isEmpty"), 1);
|
|
1220
1290
|
|
|
1221
1291
|
// src/schema/getClosestMatchingOption.ts
|
|
1222
|
-
var
|
|
1292
|
+
var import_get9 = __toESM(require("lodash/get"), 1);
|
|
1223
1293
|
var import_has4 = __toESM(require("lodash/has"), 1);
|
|
1224
1294
|
var import_isNumber2 = __toESM(require("lodash/isNumber"), 1);
|
|
1225
1295
|
var import_isObject6 = __toESM(require("lodash/isObject"), 1);
|
|
@@ -1242,7 +1312,7 @@ function calculateIndexScore(validator, rootSchema, schema, formData, experiment
|
|
|
1242
1312
|
totalScore += (0, import_reduce.default)(
|
|
1243
1313
|
schema.properties,
|
|
1244
1314
|
(score, value, key) => {
|
|
1245
|
-
const formValue = (0,
|
|
1315
|
+
const formValue = (0, import_get9.default)(formData, key);
|
|
1246
1316
|
if (typeof value === "boolean") {
|
|
1247
1317
|
return score;
|
|
1248
1318
|
}
|
|
@@ -1269,7 +1339,7 @@ function calculateIndexScore(validator, rootSchema, schema, formData, experiment
|
|
|
1269
1339
|
validator,
|
|
1270
1340
|
rootSchema,
|
|
1271
1341
|
formValue,
|
|
1272
|
-
(0,
|
|
1342
|
+
(0, import_get9.default)(value, key2),
|
|
1273
1343
|
-1,
|
|
1274
1344
|
discriminator,
|
|
1275
1345
|
experimental_customMergeAllOf
|
|
@@ -1348,7 +1418,7 @@ function isFixedItems(schema) {
|
|
|
1348
1418
|
}
|
|
1349
1419
|
|
|
1350
1420
|
// src/mergeDefaultsWithFormData.ts
|
|
1351
|
-
var
|
|
1421
|
+
var import_get10 = __toESM(require("lodash/get"), 1);
|
|
1352
1422
|
var import_isNil = __toESM(require("lodash/isNil"), 1);
|
|
1353
1423
|
function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {
|
|
1354
1424
|
if (Array.isArray(formData)) {
|
|
@@ -1375,11 +1445,22 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1375
1445
|
if (isObject(formData)) {
|
|
1376
1446
|
const acc = Object.assign({}, defaults);
|
|
1377
1447
|
return Object.keys(formData).reduce((acc2, key) => {
|
|
1378
|
-
const keyValue = (0,
|
|
1448
|
+
const keyValue = (0, import_get10.default)(formData, key);
|
|
1379
1449
|
const keyExistsInDefaults = isObject(defaults) && key in defaults;
|
|
1380
1450
|
const keyExistsInFormData = key in formData;
|
|
1451
|
+
const keyDefault = (0, import_get10.default)(defaults, key) ?? {};
|
|
1452
|
+
const defaultValueIsNestedObject = keyExistsInDefaults && Object.entries(keyDefault).some(([, v]) => isObject(v));
|
|
1453
|
+
const keyDefaultIsObject = keyExistsInDefaults && isObject((0, import_get10.default)(defaults, key));
|
|
1454
|
+
const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
|
|
1455
|
+
if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
|
|
1456
|
+
acc2[key] = {
|
|
1457
|
+
...(0, import_get10.default)(defaults, key),
|
|
1458
|
+
...keyValue
|
|
1459
|
+
};
|
|
1460
|
+
return acc2;
|
|
1461
|
+
}
|
|
1381
1462
|
acc2[key] = mergeDefaultsWithFormData(
|
|
1382
|
-
|
|
1463
|
+
(0, import_get10.default)(defaults, key),
|
|
1383
1464
|
keyValue,
|
|
1384
1465
|
mergeExtraArrayDefaults,
|
|
1385
1466
|
defaultSupercedesUndefined,
|
|
@@ -1390,7 +1471,7 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1390
1471
|
return acc2;
|
|
1391
1472
|
}, acc);
|
|
1392
1473
|
}
|
|
1393
|
-
if (defaultSupercedesUndefined && (!(0
|
|
1474
|
+
if (defaultSupercedesUndefined && (!(defaults === void 0) && (0, import_isNil.default)(formData) || typeof formData === "number" && isNaN(formData)) || overrideFormDataWithDefaults && !(0, import_isNil.default)(formData)) {
|
|
1394
1475
|
return defaults;
|
|
1395
1476
|
}
|
|
1396
1477
|
return formData;
|
|
@@ -1458,7 +1539,7 @@ function constIsAjvDataReference(schema) {
|
|
|
1458
1539
|
}
|
|
1459
1540
|
|
|
1460
1541
|
// src/optionsList.ts
|
|
1461
|
-
var
|
|
1542
|
+
var import_get11 = __toESM(require("lodash/get"), 1);
|
|
1462
1543
|
|
|
1463
1544
|
// src/toConstant.ts
|
|
1464
1545
|
function toConstant(schema) {
|
|
@@ -1504,8 +1585,8 @@ function optionsList(schema, uiSchema) {
|
|
|
1504
1585
|
let value;
|
|
1505
1586
|
let label = title;
|
|
1506
1587
|
if (selectorField) {
|
|
1507
|
-
const innerSchema = (0,
|
|
1508
|
-
value = (0,
|
|
1588
|
+
const innerSchema = (0, import_get11.default)(aSchema, [PROPERTIES_KEY, selectorField], {});
|
|
1589
|
+
value = (0, import_get11.default)(innerSchema, DEFAULT_KEY, (0, import_get11.default)(innerSchema, CONST_KEY));
|
|
1509
1590
|
label = label || innerSchema?.title || aSchema.title || String(value);
|
|
1510
1591
|
} else {
|
|
1511
1592
|
value = toConstant(aSchema);
|
|
@@ -1537,10 +1618,19 @@ function getInnerSchemaForArrayItem(schema, additionalItems = 0 /* Ignore */, id
|
|
|
1537
1618
|
}
|
|
1538
1619
|
return {};
|
|
1539
1620
|
}
|
|
1621
|
+
function computeDefaultBasedOnSchemaTypeAndDefaults(schema, computedDefault) {
|
|
1622
|
+
const { default: schemaDefault, type } = schema;
|
|
1623
|
+
const shouldReturnNullAsDefault = Array.isArray(type) && type.includes("null") && (0, import_isEmpty4.default)(computedDefault) && schemaDefault === null;
|
|
1624
|
+
return shouldReturnNullAsDefault ? null : computedDefault;
|
|
1625
|
+
}
|
|
1540
1626
|
function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}, isConst = false) {
|
|
1541
1627
|
const { emptyObjectFields = "populateAllDefaults" } = experimental_defaultFormStateBehavior;
|
|
1542
|
-
if (includeUndefinedValues || isConst) {
|
|
1628
|
+
if (includeUndefinedValues === true || isConst) {
|
|
1543
1629
|
obj[key] = computedDefault;
|
|
1630
|
+
} else if (includeUndefinedValues === "excludeObjectChildren") {
|
|
1631
|
+
if (!isObject(computedDefault) || !(0, import_isEmpty4.default)(computedDefault)) {
|
|
1632
|
+
obj[key] = computedDefault;
|
|
1633
|
+
}
|
|
1544
1634
|
} else if (emptyObjectFields !== "skipDefaults") {
|
|
1545
1635
|
const isSelfOrParentRequired = isParentRequired === void 0 ? requiredFields.includes(key) : isParentRequired;
|
|
1546
1636
|
if (isObject(computedDefault)) {
|
|
@@ -1572,15 +1662,16 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1572
1662
|
experimental_defaultFormStateBehavior = void 0,
|
|
1573
1663
|
experimental_customMergeAllOf = void 0,
|
|
1574
1664
|
required,
|
|
1575
|
-
shouldMergeDefaultsIntoFormData = false
|
|
1665
|
+
shouldMergeDefaultsIntoFormData = false,
|
|
1666
|
+
initialDefaultsGenerated
|
|
1576
1667
|
} = computeDefaultsProps;
|
|
1577
|
-
|
|
1668
|
+
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1578
1669
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
1579
1670
|
let defaults = parentDefaults;
|
|
1580
1671
|
let schemaToCompute = null;
|
|
1581
1672
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
1582
1673
|
let updatedRecurseList = _recurseList;
|
|
1583
|
-
if (schema[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1674
|
+
if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1584
1675
|
defaults = schema[CONST_KEY];
|
|
1585
1676
|
} else if (isObject(defaults) && isObject(schema.default)) {
|
|
1586
1677
|
defaults = mergeObjects(defaults, schema.default);
|
|
@@ -1595,6 +1686,9 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1595
1686
|
if (schemaToCompute && !defaults) {
|
|
1596
1687
|
defaults = schema.default;
|
|
1597
1688
|
}
|
|
1689
|
+
if (shouldMergeDefaultsIntoFormData && schemaToCompute && !isObject(rawFormData)) {
|
|
1690
|
+
formData = rawFormData;
|
|
1691
|
+
}
|
|
1598
1692
|
} else if (DEPENDENCIES_KEY in schema) {
|
|
1599
1693
|
const defaultFormData = {
|
|
1600
1694
|
...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults),
|
|
@@ -1672,9 +1766,10 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1672
1766
|
experimental_defaultFormStateBehavior: experimental_dfsb_to_compute,
|
|
1673
1767
|
experimental_customMergeAllOf,
|
|
1674
1768
|
parentDefaults: defaults,
|
|
1675
|
-
rawFormData: formData,
|
|
1769
|
+
rawFormData: rawFormData ?? formData,
|
|
1676
1770
|
required,
|
|
1677
|
-
shouldMergeDefaultsIntoFormData
|
|
1771
|
+
shouldMergeDefaultsIntoFormData,
|
|
1772
|
+
initialDefaultsGenerated
|
|
1678
1773
|
});
|
|
1679
1774
|
}
|
|
1680
1775
|
if (defaults === void 0) {
|
|
@@ -1726,7 +1821,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1726
1821
|
experimental_defaultFormStateBehavior = void 0,
|
|
1727
1822
|
experimental_customMergeAllOf = void 0,
|
|
1728
1823
|
required,
|
|
1729
|
-
shouldMergeDefaultsIntoFormData
|
|
1824
|
+
shouldMergeDefaultsIntoFormData,
|
|
1825
|
+
initialDefaultsGenerated
|
|
1730
1826
|
} = {}, defaults) {
|
|
1731
1827
|
{
|
|
1732
1828
|
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
@@ -1735,7 +1831,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1735
1831
|
const parentConst = retrievedSchema[CONST_KEY];
|
|
1736
1832
|
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
|
|
1737
1833
|
(acc, key) => {
|
|
1738
|
-
const propertySchema = (0,
|
|
1834
|
+
const propertySchema = (0, import_get12.default)(retrievedSchema, [PROPERTIES_KEY, key], {});
|
|
1739
1835
|
const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
|
|
1740
1836
|
const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
|
|
1741
1837
|
const computedDefault = computeDefaults(validator, propertySchema, {
|
|
@@ -1744,10 +1840,11 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1744
1840
|
experimental_defaultFormStateBehavior,
|
|
1745
1841
|
experimental_customMergeAllOf,
|
|
1746
1842
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1747
|
-
parentDefaults: (0,
|
|
1748
|
-
rawFormData: (0,
|
|
1843
|
+
parentDefaults: (0, import_get12.default)(defaults, [key]),
|
|
1844
|
+
rawFormData: (0, import_get12.default)(formData, [key]),
|
|
1749
1845
|
required: retrievedSchema.required?.includes(key),
|
|
1750
|
-
shouldMergeDefaultsIntoFormData
|
|
1846
|
+
shouldMergeDefaultsIntoFormData,
|
|
1847
|
+
initialDefaultsGenerated
|
|
1751
1848
|
});
|
|
1752
1849
|
maybeAddDefaultToObject(
|
|
1753
1850
|
acc,
|
|
@@ -1763,7 +1860,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1763
1860
|
},
|
|
1764
1861
|
{}
|
|
1765
1862
|
);
|
|
1766
|
-
if (retrievedSchema.additionalProperties) {
|
|
1863
|
+
if (retrievedSchema.additionalProperties && !initialDefaultsGenerated) {
|
|
1767
1864
|
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1768
1865
|
const keys2 = /* @__PURE__ */ new Set();
|
|
1769
1866
|
if (isObject(defaults)) {
|
|
@@ -1781,10 +1878,11 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1781
1878
|
experimental_defaultFormStateBehavior,
|
|
1782
1879
|
experimental_customMergeAllOf,
|
|
1783
1880
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1784
|
-
parentDefaults: (0,
|
|
1785
|
-
rawFormData: (0,
|
|
1881
|
+
parentDefaults: (0, import_get12.default)(defaults, [key]),
|
|
1882
|
+
rawFormData: (0, import_get12.default)(formData, [key]),
|
|
1786
1883
|
required: retrievedSchema.required?.includes(key),
|
|
1787
|
-
shouldMergeDefaultsIntoFormData
|
|
1884
|
+
shouldMergeDefaultsIntoFormData,
|
|
1885
|
+
initialDefaultsGenerated
|
|
1788
1886
|
});
|
|
1789
1887
|
maybeAddDefaultToObject(
|
|
1790
1888
|
objectDefaults,
|
|
@@ -1796,7 +1894,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1796
1894
|
);
|
|
1797
1895
|
});
|
|
1798
1896
|
}
|
|
1799
|
-
return objectDefaults;
|
|
1897
|
+
return computeDefaultBasedOnSchemaTypeAndDefaults(rawSchema, objectDefaults);
|
|
1800
1898
|
}
|
|
1801
1899
|
}
|
|
1802
1900
|
function getArrayDefaults(validator, rawSchema, {
|
|
@@ -1806,7 +1904,9 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1806
1904
|
experimental_defaultFormStateBehavior = void 0,
|
|
1807
1905
|
experimental_customMergeAllOf = void 0,
|
|
1808
1906
|
required,
|
|
1809
|
-
|
|
1907
|
+
requiredAsRoot = false,
|
|
1908
|
+
shouldMergeDefaultsIntoFormData,
|
|
1909
|
+
initialDefaultsGenerated
|
|
1810
1910
|
} = {}, defaults) {
|
|
1811
1911
|
const schema = rawSchema;
|
|
1812
1912
|
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
@@ -1827,7 +1927,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1827
1927
|
experimental_customMergeAllOf,
|
|
1828
1928
|
parentDefaults: item,
|
|
1829
1929
|
required,
|
|
1830
|
-
shouldMergeDefaultsIntoFormData
|
|
1930
|
+
shouldMergeDefaultsIntoFormData,
|
|
1931
|
+
initialDefaultsGenerated
|
|
1831
1932
|
});
|
|
1832
1933
|
});
|
|
1833
1934
|
}
|
|
@@ -1843,9 +1944,10 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1843
1944
|
experimental_defaultFormStateBehavior,
|
|
1844
1945
|
experimental_customMergeAllOf,
|
|
1845
1946
|
rawFormData: item,
|
|
1846
|
-
parentDefaults: (0,
|
|
1947
|
+
parentDefaults: (0, import_get12.default)(defaults, [idx]),
|
|
1847
1948
|
required,
|
|
1848
|
-
shouldMergeDefaultsIntoFormData
|
|
1949
|
+
shouldMergeDefaultsIntoFormData,
|
|
1950
|
+
initialDefaultsGenerated
|
|
1849
1951
|
});
|
|
1850
1952
|
});
|
|
1851
1953
|
const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
|
|
@@ -1861,25 +1963,29 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1861
1963
|
return defaults ? defaults : void 0;
|
|
1862
1964
|
}
|
|
1863
1965
|
}
|
|
1966
|
+
let arrayDefault;
|
|
1864
1967
|
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1865
1968
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1866
|
-
|
|
1867
|
-
}
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1969
|
+
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1970
|
+
} else {
|
|
1971
|
+
const defaultEntries = defaults || [];
|
|
1972
|
+
const fillerSchema = getInnerSchemaForArrayItem(schema, 1 /* Invert */);
|
|
1973
|
+
const fillerDefault = fillerSchema.default;
|
|
1974
|
+
const fillerEntries = Array.from(
|
|
1975
|
+
{ length: schema.minItems - defaultsLength },
|
|
1976
|
+
() => computeDefaults(validator, fillerSchema, {
|
|
1977
|
+
parentDefaults: fillerDefault,
|
|
1978
|
+
rootSchema,
|
|
1979
|
+
_recurseList,
|
|
1980
|
+
experimental_defaultFormStateBehavior,
|
|
1981
|
+
experimental_customMergeAllOf,
|
|
1982
|
+
required,
|
|
1983
|
+
shouldMergeDefaultsIntoFormData
|
|
1984
|
+
})
|
|
1985
|
+
);
|
|
1986
|
+
arrayDefault = defaultEntries.concat(fillerEntries);
|
|
1987
|
+
}
|
|
1988
|
+
return computeDefaultBasedOnSchemaTypeAndDefaults(rawSchema, arrayDefault);
|
|
1883
1989
|
}
|
|
1884
1990
|
function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps = {}, defaults) {
|
|
1885
1991
|
switch (getSchemaType(rawSchema)) {
|
|
@@ -1892,7 +1998,7 @@ function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps
|
|
|
1892
1998
|
}
|
|
1893
1999
|
}
|
|
1894
2000
|
}
|
|
1895
|
-
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2001
|
+
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf, initialDefaultsGenerated) {
|
|
1896
2002
|
if (!isObject(theSchema)) {
|
|
1897
2003
|
throw new Error("Invalid schema: " + theSchema);
|
|
1898
2004
|
}
|
|
@@ -1903,8 +2009,16 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
1903
2009
|
experimental_defaultFormStateBehavior,
|
|
1904
2010
|
experimental_customMergeAllOf,
|
|
1905
2011
|
rawFormData: formData,
|
|
1906
|
-
shouldMergeDefaultsIntoFormData: true
|
|
2012
|
+
shouldMergeDefaultsIntoFormData: true,
|
|
2013
|
+
initialDefaultsGenerated,
|
|
2014
|
+
requiredAsRoot: true
|
|
1907
2015
|
});
|
|
2016
|
+
if (schema.type !== "object" && isObject(schema.default)) {
|
|
2017
|
+
return {
|
|
2018
|
+
...defaults,
|
|
2019
|
+
...formData
|
|
2020
|
+
};
|
|
2021
|
+
}
|
|
1908
2022
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
1909
2023
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
1910
2024
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
|
|
@@ -1961,17 +2075,17 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
1961
2075
|
if (schemaType === "object") {
|
|
1962
2076
|
displayLabel = false;
|
|
1963
2077
|
}
|
|
1964
|
-
if (schemaType === "boolean" && !uiSchema[UI_WIDGET_KEY]) {
|
|
2078
|
+
if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
|
|
1965
2079
|
displayLabel = false;
|
|
1966
2080
|
}
|
|
1967
|
-
if (uiSchema[UI_FIELD_KEY]) {
|
|
2081
|
+
if (uiSchema && uiSchema[UI_FIELD_KEY]) {
|
|
1968
2082
|
displayLabel = false;
|
|
1969
2083
|
}
|
|
1970
2084
|
return displayLabel;
|
|
1971
2085
|
}
|
|
1972
2086
|
|
|
1973
2087
|
// src/schema/sanitizeDataForNewSchema.ts
|
|
1974
|
-
var
|
|
2088
|
+
var import_get13 = __toESM(require("lodash/get"), 1);
|
|
1975
2089
|
var import_has5 = __toESM(require("lodash/has"), 1);
|
|
1976
2090
|
var NO_VALUE = Symbol("no Value");
|
|
1977
2091
|
function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {
|
|
@@ -1979,19 +2093,19 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1979
2093
|
if ((0, import_has5.default)(newSchema, PROPERTIES_KEY)) {
|
|
1980
2094
|
const removeOldSchemaData = {};
|
|
1981
2095
|
if ((0, import_has5.default)(oldSchema, PROPERTIES_KEY)) {
|
|
1982
|
-
const properties = (0,
|
|
2096
|
+
const properties = (0, import_get13.default)(oldSchema, PROPERTIES_KEY, {});
|
|
1983
2097
|
Object.keys(properties).forEach((key) => {
|
|
1984
2098
|
if ((0, import_has5.default)(data, key)) {
|
|
1985
2099
|
removeOldSchemaData[key] = void 0;
|
|
1986
2100
|
}
|
|
1987
2101
|
});
|
|
1988
2102
|
}
|
|
1989
|
-
const keys2 = Object.keys((0,
|
|
2103
|
+
const keys2 = Object.keys((0, import_get13.default)(newSchema, PROPERTIES_KEY, {}));
|
|
1990
2104
|
const nestedData = {};
|
|
1991
2105
|
keys2.forEach((key) => {
|
|
1992
|
-
const formValue = (0,
|
|
1993
|
-
let oldKeyedSchema = (0,
|
|
1994
|
-
let newKeyedSchema = (0,
|
|
2106
|
+
const formValue = (0, import_get13.default)(data, key);
|
|
2107
|
+
let oldKeyedSchema = (0, import_get13.default)(oldSchema, [PROPERTIES_KEY, key], {});
|
|
2108
|
+
let newKeyedSchema = (0, import_get13.default)(newSchema, [PROPERTIES_KEY, key], {});
|
|
1995
2109
|
if ((0, import_has5.default)(oldKeyedSchema, REF_KEY)) {
|
|
1996
2110
|
oldKeyedSchema = retrieveSchema(
|
|
1997
2111
|
validator,
|
|
@@ -2010,8 +2124,8 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2010
2124
|
experimental_customMergeAllOf
|
|
2011
2125
|
);
|
|
2012
2126
|
}
|
|
2013
|
-
const oldSchemaTypeForKey = (0,
|
|
2014
|
-
const newSchemaTypeForKey = (0,
|
|
2127
|
+
const oldSchemaTypeForKey = (0, import_get13.default)(oldKeyedSchema, "type");
|
|
2128
|
+
const newSchemaTypeForKey = (0, import_get13.default)(newKeyedSchema, "type");
|
|
2015
2129
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
2016
2130
|
if ((0, import_has5.default)(removeOldSchemaData, key)) {
|
|
2017
2131
|
delete removeOldSchemaData[key];
|
|
@@ -2029,17 +2143,17 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2029
2143
|
nestedData[key] = itemData;
|
|
2030
2144
|
}
|
|
2031
2145
|
} else {
|
|
2032
|
-
const newOptionDefault = (0,
|
|
2033
|
-
const oldOptionDefault = (0,
|
|
2146
|
+
const newOptionDefault = (0, import_get13.default)(newKeyedSchema, "default", NO_VALUE);
|
|
2147
|
+
const oldOptionDefault = (0, import_get13.default)(oldKeyedSchema, "default", NO_VALUE);
|
|
2034
2148
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
2035
2149
|
if (oldOptionDefault === formValue) {
|
|
2036
2150
|
removeOldSchemaData[key] = newOptionDefault;
|
|
2037
|
-
} else if ((0,
|
|
2151
|
+
} else if ((0, import_get13.default)(newKeyedSchema, "readOnly") === true) {
|
|
2038
2152
|
removeOldSchemaData[key] = void 0;
|
|
2039
2153
|
}
|
|
2040
2154
|
}
|
|
2041
|
-
const newOptionConst = (0,
|
|
2042
|
-
const oldOptionConst = (0,
|
|
2155
|
+
const newOptionConst = (0, import_get13.default)(newKeyedSchema, "const", NO_VALUE);
|
|
2156
|
+
const oldOptionConst = (0, import_get13.default)(oldKeyedSchema, "const", NO_VALUE);
|
|
2043
2157
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
2044
2158
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
2045
2159
|
}
|
|
@@ -2051,9 +2165,9 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2051
2165
|
...removeOldSchemaData,
|
|
2052
2166
|
...nestedData
|
|
2053
2167
|
};
|
|
2054
|
-
} else if ((0,
|
|
2055
|
-
let oldSchemaItems = (0,
|
|
2056
|
-
let newSchemaItems = (0,
|
|
2168
|
+
} else if ((0, import_get13.default)(oldSchema, "type") === "array" && (0, import_get13.default)(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2169
|
+
let oldSchemaItems = (0, import_get13.default)(oldSchema, "items");
|
|
2170
|
+
let newSchemaItems = (0, import_get13.default)(newSchema, "items");
|
|
2057
2171
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
2058
2172
|
if ((0, import_has5.default)(oldSchemaItems, REF_KEY)) {
|
|
2059
2173
|
oldSchemaItems = retrieveSchema(
|
|
@@ -2073,10 +2187,10 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2073
2187
|
experimental_customMergeAllOf
|
|
2074
2188
|
);
|
|
2075
2189
|
}
|
|
2076
|
-
const oldSchemaType = (0,
|
|
2077
|
-
const newSchemaType = (0,
|
|
2190
|
+
const oldSchemaType = (0, import_get13.default)(oldSchemaItems, "type");
|
|
2191
|
+
const newSchemaType = (0, import_get13.default)(newSchemaItems, "type");
|
|
2078
2192
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
2079
|
-
const maxItems = (0,
|
|
2193
|
+
const maxItems = (0, import_get13.default)(newSchema, "maxItems", -1);
|
|
2080
2194
|
if (newSchemaType === "object") {
|
|
2081
2195
|
newFormData = data.reduce((newValue, aValue) => {
|
|
2082
2196
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -2103,78 +2217,6 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
2103
2217
|
return newFormData;
|
|
2104
2218
|
}
|
|
2105
2219
|
|
|
2106
|
-
// src/schema/toIdSchema.ts
|
|
2107
|
-
var import_get13 = __toESM(require("lodash/get"), 1);
|
|
2108
|
-
function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
2109
|
-
const $id = id || idPrefix;
|
|
2110
|
-
const idSchema = { $id };
|
|
2111
|
-
if (typeof schema === "object") {
|
|
2112
|
-
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
|
|
2113
|
-
const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
2114
|
-
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));
|
|
2115
|
-
if (sameSchemaIndex === -1) {
|
|
2116
|
-
return toIdSchemaInternal(
|
|
2117
|
-
validator,
|
|
2118
|
-
_schema,
|
|
2119
|
-
idPrefix,
|
|
2120
|
-
idSeparator,
|
|
2121
|
-
id,
|
|
2122
|
-
rootSchema,
|
|
2123
|
-
formData,
|
|
2124
|
-
_recurseList.concat(_schema),
|
|
2125
|
-
experimental_customMergeAllOf
|
|
2126
|
-
);
|
|
2127
|
-
}
|
|
2128
|
-
}
|
|
2129
|
-
if (ITEMS_KEY in schema && !(0, import_get13.default)(schema, [ITEMS_KEY, REF_KEY])) {
|
|
2130
|
-
return toIdSchemaInternal(
|
|
2131
|
-
validator,
|
|
2132
|
-
(0, import_get13.default)(schema, ITEMS_KEY),
|
|
2133
|
-
idPrefix,
|
|
2134
|
-
idSeparator,
|
|
2135
|
-
id,
|
|
2136
|
-
rootSchema,
|
|
2137
|
-
formData,
|
|
2138
|
-
_recurseList,
|
|
2139
|
-
experimental_customMergeAllOf
|
|
2140
|
-
);
|
|
2141
|
-
}
|
|
2142
|
-
if (getSchemaType(schema) === "object" && PROPERTIES_KEY in schema) {
|
|
2143
|
-
for (const name in schema.properties) {
|
|
2144
|
-
const field = schema[PROPERTIES_KEY][name];
|
|
2145
|
-
const fieldId = idSchema[ID_KEY] + idSeparator + name;
|
|
2146
|
-
idSchema[name] = toIdSchemaInternal(
|
|
2147
|
-
validator,
|
|
2148
|
-
field,
|
|
2149
|
-
idPrefix,
|
|
2150
|
-
idSeparator,
|
|
2151
|
-
fieldId,
|
|
2152
|
-
rootSchema,
|
|
2153
|
-
// It's possible that formData is not an object -- this can happen if an
|
|
2154
|
-
// array item has just been added, but not populated with data yet
|
|
2155
|
-
(0, import_get13.default)(formData, [name]),
|
|
2156
|
-
_recurseList,
|
|
2157
|
-
experimental_customMergeAllOf
|
|
2158
|
-
);
|
|
2159
|
-
}
|
|
2160
|
-
}
|
|
2161
|
-
}
|
|
2162
|
-
return idSchema;
|
|
2163
|
-
}
|
|
2164
|
-
function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = "root", idSeparator = "_", experimental_customMergeAllOf) {
|
|
2165
|
-
return toIdSchemaInternal(
|
|
2166
|
-
validator,
|
|
2167
|
-
schema,
|
|
2168
|
-
idPrefix,
|
|
2169
|
-
idSeparator,
|
|
2170
|
-
id,
|
|
2171
|
-
rootSchema,
|
|
2172
|
-
formData,
|
|
2173
|
-
void 0,
|
|
2174
|
-
experimental_customMergeAllOf
|
|
2175
|
-
);
|
|
2176
|
-
}
|
|
2177
|
-
|
|
2178
2220
|
// src/schema/toPathSchema.ts
|
|
2179
2221
|
var import_get14 = __toESM(require("lodash/get"), 1);
|
|
2180
2222
|
var import_set2 = __toESM(require("lodash/set"), 1);
|
|
@@ -2290,6 +2332,7 @@ function toPathSchema(validator, schema, name = "", rootSchema, formData, experi
|
|
|
2290
2332
|
}
|
|
2291
2333
|
|
|
2292
2334
|
// src/createSchemaUtils.ts
|
|
2335
|
+
var import_get15 = __toESM(require("lodash/get"), 1);
|
|
2293
2336
|
var SchemaUtils = class {
|
|
2294
2337
|
/** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables
|
|
2295
2338
|
*
|
|
@@ -2299,11 +2342,22 @@ var SchemaUtils = class {
|
|
|
2299
2342
|
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
|
|
2300
2343
|
*/
|
|
2301
2344
|
constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2302
|
-
|
|
2345
|
+
if (rootSchema && rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
2346
|
+
this.rootSchema = makeAllReferencesAbsolute(rootSchema, (0, import_get15.default)(rootSchema, ID_KEY, "#"));
|
|
2347
|
+
} else {
|
|
2348
|
+
this.rootSchema = rootSchema;
|
|
2349
|
+
}
|
|
2303
2350
|
this.validator = validator;
|
|
2304
2351
|
this.experimental_defaultFormStateBehavior = experimental_defaultFormStateBehavior;
|
|
2305
2352
|
this.experimental_customMergeAllOf = experimental_customMergeAllOf;
|
|
2306
2353
|
}
|
|
2354
|
+
/** Returns the `rootSchema` in the `SchemaUtilsType`
|
|
2355
|
+
*
|
|
2356
|
+
* @returns - The `rootSchema`
|
|
2357
|
+
*/
|
|
2358
|
+
getRootSchema() {
|
|
2359
|
+
return this.rootSchema;
|
|
2360
|
+
}
|
|
2307
2361
|
/** Returns the `ValidatorType` in the `SchemaUtilsType`
|
|
2308
2362
|
*
|
|
2309
2363
|
* @returns - The `ValidatorType`
|
|
@@ -2376,9 +2430,10 @@ var SchemaUtils = class {
|
|
|
2376
2430
|
* @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
|
|
2377
2431
|
* If "excludeObjectChildren", pass `includeUndefinedValues` as false when computing defaults for any nested
|
|
2378
2432
|
* object properties.
|
|
2433
|
+
* @param initialDefaultsGenerated - Indicates whether or not initial defaults have been generated
|
|
2379
2434
|
* @returns - The resulting `formData` with all the defaults provided
|
|
2380
2435
|
*/
|
|
2381
|
-
getDefaultFormState(schema, formData, includeUndefinedValues = false) {
|
|
2436
|
+
getDefaultFormState(schema, formData, includeUndefinedValues = false, initialDefaultsGenerated) {
|
|
2382
2437
|
return getDefaultFormState(
|
|
2383
2438
|
this.validator,
|
|
2384
2439
|
schema,
|
|
@@ -2386,7 +2441,8 @@ var SchemaUtils = class {
|
|
|
2386
2441
|
this.rootSchema,
|
|
2387
2442
|
includeUndefinedValues,
|
|
2388
2443
|
this.experimental_defaultFormStateBehavior,
|
|
2389
|
-
this.experimental_customMergeAllOf
|
|
2444
|
+
this.experimental_customMergeAllOf,
|
|
2445
|
+
initialDefaultsGenerated
|
|
2390
2446
|
);
|
|
2391
2447
|
}
|
|
2392
2448
|
/** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
|
|
@@ -2485,15 +2541,17 @@ var SchemaUtils = class {
|
|
|
2485
2541
|
*
|
|
2486
2542
|
* @param schema - The schema for which retrieving a schema is desired
|
|
2487
2543
|
* @param [rawFormData] - The current formData, if any, to assist retrieving a schema
|
|
2544
|
+
* @param [resolveAnyOfOrOneOfRefs] - Optional flag indicating whether to resolved refs in anyOf/oneOf lists
|
|
2488
2545
|
* @returns - The schema having its conditions, additional properties, references and dependencies resolved
|
|
2489
2546
|
*/
|
|
2490
|
-
retrieveSchema(schema, rawFormData) {
|
|
2547
|
+
retrieveSchema(schema, rawFormData, resolveAnyOfOrOneOfRefs) {
|
|
2491
2548
|
return retrieveSchema(
|
|
2492
2549
|
this.validator,
|
|
2493
2550
|
schema,
|
|
2494
2551
|
this.rootSchema,
|
|
2495
2552
|
rawFormData,
|
|
2496
|
-
this.experimental_customMergeAllOf
|
|
2553
|
+
this.experimental_customMergeAllOf,
|
|
2554
|
+
resolveAnyOfOrOneOfRefs
|
|
2497
2555
|
);
|
|
2498
2556
|
}
|
|
2499
2557
|
/** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
|
|
@@ -2517,27 +2575,6 @@ var SchemaUtils = class {
|
|
|
2517
2575
|
this.experimental_customMergeAllOf
|
|
2518
2576
|
);
|
|
2519
2577
|
}
|
|
2520
|
-
/** Generates an `IdSchema` object for the `schema`, recursively
|
|
2521
|
-
*
|
|
2522
|
-
* @param schema - The schema for which the display label flag is desired
|
|
2523
|
-
* @param [id] - The base id for the schema
|
|
2524
|
-
* @param [formData] - The current formData, if any, onto which to provide any missing defaults
|
|
2525
|
-
* @param [idPrefix='root'] - The prefix to use for the id
|
|
2526
|
-
* @param [idSeparator='_'] - The separator to use for the path segments in the id
|
|
2527
|
-
* @returns - The `IdSchema` object for the `schema`
|
|
2528
|
-
*/
|
|
2529
|
-
toIdSchema(schema, id, formData, idPrefix = "root", idSeparator = "_") {
|
|
2530
|
-
return toIdSchema(
|
|
2531
|
-
this.validator,
|
|
2532
|
-
schema,
|
|
2533
|
-
id,
|
|
2534
|
-
this.rootSchema,
|
|
2535
|
-
formData,
|
|
2536
|
-
idPrefix,
|
|
2537
|
-
idSeparator,
|
|
2538
|
-
this.experimental_customMergeAllOf
|
|
2539
|
-
);
|
|
2540
|
-
}
|
|
2541
2578
|
/** Generates an `PathSchema` object for the `schema`, recursively
|
|
2542
2579
|
*
|
|
2543
2580
|
* @param schema - The schema for which the display label flag is desired
|
|
@@ -2623,6 +2660,31 @@ function dateRangeOptions(start, stop) {
|
|
|
2623
2660
|
return options;
|
|
2624
2661
|
}
|
|
2625
2662
|
|
|
2663
|
+
// src/shallowEquals.ts
|
|
2664
|
+
function shallowEquals(a, b) {
|
|
2665
|
+
if (Object.is(a, b)) {
|
|
2666
|
+
return true;
|
|
2667
|
+
}
|
|
2668
|
+
if (a == null || b == null) {
|
|
2669
|
+
return false;
|
|
2670
|
+
}
|
|
2671
|
+
if (typeof a !== "object" || typeof b !== "object") {
|
|
2672
|
+
return false;
|
|
2673
|
+
}
|
|
2674
|
+
const keysA = Object.keys(a);
|
|
2675
|
+
const keysB = Object.keys(b);
|
|
2676
|
+
if (keysA.length !== keysB.length) {
|
|
2677
|
+
return false;
|
|
2678
|
+
}
|
|
2679
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
2680
|
+
const key = keysA[i];
|
|
2681
|
+
if (!Object.prototype.hasOwnProperty.call(b, key) || !Object.is(a[key], b[key])) {
|
|
2682
|
+
return false;
|
|
2683
|
+
}
|
|
2684
|
+
}
|
|
2685
|
+
return true;
|
|
2686
|
+
}
|
|
2687
|
+
|
|
2626
2688
|
// src/replaceStringParameters.ts
|
|
2627
2689
|
function replaceStringParameters(inputString, params) {
|
|
2628
2690
|
let output = inputString;
|
|
@@ -2695,7 +2757,7 @@ function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
|
|
|
2695
2757
|
|
|
2696
2758
|
// src/ErrorSchemaBuilder.ts
|
|
2697
2759
|
var import_cloneDeep = __toESM(require("lodash/cloneDeep"), 1);
|
|
2698
|
-
var
|
|
2760
|
+
var import_get16 = __toESM(require("lodash/get"), 1);
|
|
2699
2761
|
var import_set3 = __toESM(require("lodash/set"), 1);
|
|
2700
2762
|
var import_setWith = __toESM(require("lodash/setWith"), 1);
|
|
2701
2763
|
var ErrorSchemaBuilder = class {
|
|
@@ -2724,7 +2786,7 @@ var ErrorSchemaBuilder = class {
|
|
|
2724
2786
|
*/
|
|
2725
2787
|
getOrCreateErrorBlock(pathOfError) {
|
|
2726
2788
|
const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
|
|
2727
|
-
let errorBlock = hasPath ? (0,
|
|
2789
|
+
let errorBlock = hasPath ? (0, import_get16.default)(this.errorSchema, pathOfError) : this.errorSchema;
|
|
2728
2790
|
if (!errorBlock && pathOfError) {
|
|
2729
2791
|
errorBlock = {};
|
|
2730
2792
|
(0, import_setWith.default)(this.errorSchema, pathOfError, errorBlock, Object);
|
|
@@ -2750,7 +2812,7 @@ var ErrorSchemaBuilder = class {
|
|
|
2750
2812
|
*/
|
|
2751
2813
|
addErrors(errorOrList, pathOfError) {
|
|
2752
2814
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2753
|
-
let errorsList = (0,
|
|
2815
|
+
let errorsList = (0, import_get16.default)(errorBlock, ERRORS_KEY);
|
|
2754
2816
|
if (!Array.isArray(errorsList)) {
|
|
2755
2817
|
errorsList = [];
|
|
2756
2818
|
errorBlock[ERRORS_KEY] = errorsList;
|
|
@@ -2790,6 +2852,29 @@ var ErrorSchemaBuilder = class {
|
|
|
2790
2852
|
}
|
|
2791
2853
|
};
|
|
2792
2854
|
|
|
2855
|
+
// src/getChangedFields.ts
|
|
2856
|
+
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
2857
|
+
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
2858
|
+
var import_isPlainObject2 = __toESM(require("lodash/isPlainObject"), 1);
|
|
2859
|
+
var import_get17 = __toESM(require("lodash/get"), 1);
|
|
2860
|
+
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
2861
|
+
function getChangedFields(a, b) {
|
|
2862
|
+
const aIsPlainObject = (0, import_isPlainObject2.default)(a);
|
|
2863
|
+
const bIsPlainObject = (0, import_isPlainObject2.default)(b);
|
|
2864
|
+
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
2865
|
+
return [];
|
|
2866
|
+
}
|
|
2867
|
+
if (aIsPlainObject && !bIsPlainObject) {
|
|
2868
|
+
return (0, import_keys.default)(a);
|
|
2869
|
+
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
2870
|
+
return (0, import_keys.default)(b);
|
|
2871
|
+
} else {
|
|
2872
|
+
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals(value, (0, import_get17.default)(b, key))));
|
|
2873
|
+
const diffFields = (0, import_difference.default)((0, import_keys.default)(b), (0, import_keys.default)(a));
|
|
2874
|
+
return [...unequalFields, ...diffFields];
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
|
|
2793
2878
|
// src/getDateElementProps.ts
|
|
2794
2879
|
function getDateElementProps(date, time, yearRange = [1900, (/* @__PURE__ */ new Date()).getFullYear() + 2], format = "YMD") {
|
|
2795
2880
|
const { day, month, year, hour, minute, second } = date;
|
|
@@ -2898,10 +2983,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2898
2983
|
}
|
|
2899
2984
|
|
|
2900
2985
|
// src/getTestIds.ts
|
|
2901
|
-
var
|
|
2902
|
-
var
|
|
2986
|
+
var import_get18 = __toESM(require("lodash/get"), 1);
|
|
2987
|
+
var import_uniqueId = __toESM(require("lodash/uniqueId"), 1);
|
|
2903
2988
|
function getTestIds() {
|
|
2904
|
-
if (typeof process === "undefined" || (0,
|
|
2989
|
+
if (typeof process === "undefined" || (0, import_get18.default)(process, "env.NODE_ENV") !== "test") {
|
|
2905
2990
|
return {};
|
|
2906
2991
|
}
|
|
2907
2992
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -2910,7 +2995,7 @@ function getTestIds() {
|
|
|
2910
2995
|
{
|
|
2911
2996
|
get(_obj, prop) {
|
|
2912
2997
|
if (!ids.has(prop)) {
|
|
2913
|
-
ids.set(prop, (0,
|
|
2998
|
+
ids.set(prop, (0, import_uniqueId.default)("test-id-"));
|
|
2914
2999
|
}
|
|
2915
3000
|
return ids.get(prop);
|
|
2916
3001
|
}
|
|
@@ -2921,7 +3006,7 @@ function getTestIds() {
|
|
|
2921
3006
|
// src/getWidget.tsx
|
|
2922
3007
|
var import_react = require("react");
|
|
2923
3008
|
var import_react_is = __toESM(require("react-is"), 1);
|
|
2924
|
-
var
|
|
3009
|
+
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
2925
3010
|
var import_set4 = __toESM(require("lodash/set"), 1);
|
|
2926
3011
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
2927
3012
|
var widgetMap = {
|
|
@@ -2977,7 +3062,7 @@ var widgetMap = {
|
|
|
2977
3062
|
}
|
|
2978
3063
|
};
|
|
2979
3064
|
function mergeWidgetOptions(AWidget) {
|
|
2980
|
-
let MergedWidget = (0,
|
|
3065
|
+
let MergedWidget = (0, import_get19.default)(AWidget, "MergedWidget");
|
|
2981
3066
|
if (!MergedWidget) {
|
|
2982
3067
|
const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
|
|
2983
3068
|
MergedWidget = ({ options, ...props }) => {
|
|
@@ -2993,7 +3078,7 @@ function getWidget(schema, widget, registeredWidgets = {}) {
|
|
|
2993
3078
|
return mergeWidgetOptions(widget);
|
|
2994
3079
|
}
|
|
2995
3080
|
if (typeof widget !== "string") {
|
|
2996
|
-
throw new Error(`Unsupported widget definition: ${typeof widget}`);
|
|
3081
|
+
throw new Error(`Unsupported widget definition: ${typeof widget} in schema: ${JSON.stringify(schema)}`);
|
|
2997
3082
|
}
|
|
2998
3083
|
if (widget in registeredWidgets) {
|
|
2999
3084
|
const registeredWidget = registeredWidgets[widget];
|
|
@@ -3001,14 +3086,14 @@ function getWidget(schema, widget, registeredWidgets = {}) {
|
|
|
3001
3086
|
}
|
|
3002
3087
|
if (typeof type === "string") {
|
|
3003
3088
|
if (!(type in widgetMap)) {
|
|
3004
|
-
throw new Error(`No widget for type '${type}'`);
|
|
3089
|
+
throw new Error(`No widget for type '${type}' in schema: ${JSON.stringify(schema)}`);
|
|
3005
3090
|
}
|
|
3006
3091
|
if (widget in widgetMap[type]) {
|
|
3007
3092
|
const registeredWidget = registeredWidgets[widgetMap[type][widget]];
|
|
3008
3093
|
return getWidget(schema, registeredWidget, registeredWidgets);
|
|
3009
3094
|
}
|
|
3010
3095
|
}
|
|
3011
|
-
throw new Error(`No widget '${widget}' for type '${type}'`);
|
|
3096
|
+
throw new Error(`No widget '${widget}' for type '${type}' in schema: ${JSON.stringify(schema)}`);
|
|
3012
3097
|
}
|
|
3013
3098
|
|
|
3014
3099
|
// src/hashForSchema.ts
|
|
@@ -3078,6 +3163,31 @@ function optionId(id, optionIndex) {
|
|
|
3078
3163
|
function buttonId(id, btn) {
|
|
3079
3164
|
return idGenerator(id, btn);
|
|
3080
3165
|
}
|
|
3166
|
+
function optionalControlsId(id, element) {
|
|
3167
|
+
return idGenerator(id, `optional${element}`);
|
|
3168
|
+
}
|
|
3169
|
+
|
|
3170
|
+
// src/isFormDataAvailable.ts
|
|
3171
|
+
var import_isNil3 = __toESM(require("lodash/isNil"), 1);
|
|
3172
|
+
var import_isEmpty5 = __toESM(require("lodash/isEmpty"), 1);
|
|
3173
|
+
var import_isObject11 = __toESM(require("lodash/isObject"), 1);
|
|
3174
|
+
function isFormDataAvailable(formData) {
|
|
3175
|
+
return !(0, import_isNil3.default)(formData) && (!(0, import_isObject11.default)(formData) || Array.isArray(formData) || !(0, import_isEmpty5.default)(formData));
|
|
3176
|
+
}
|
|
3177
|
+
|
|
3178
|
+
// src/isRootSchema.ts
|
|
3179
|
+
var import_isEqual2 = __toESM(require("lodash/isEqual"), 1);
|
|
3180
|
+
function isRootSchema(registry, schemaToCompare) {
|
|
3181
|
+
const { rootSchema, schemaUtils } = registry;
|
|
3182
|
+
if ((0, import_isEqual2.default)(schemaToCompare, rootSchema)) {
|
|
3183
|
+
return true;
|
|
3184
|
+
}
|
|
3185
|
+
if (REF_KEY in rootSchema) {
|
|
3186
|
+
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3187
|
+
return (0, import_isEqual2.default)(schemaToCompare, resolvedSchema);
|
|
3188
|
+
}
|
|
3189
|
+
return false;
|
|
3190
|
+
}
|
|
3081
3191
|
|
|
3082
3192
|
// src/labelValue.ts
|
|
3083
3193
|
function labelValue(label, hideLabel, fallback) {
|
|
@@ -3090,14 +3200,14 @@ function localToUTC(dateString) {
|
|
|
3090
3200
|
}
|
|
3091
3201
|
|
|
3092
3202
|
// src/lookupFromFormContext.ts
|
|
3093
|
-
var
|
|
3203
|
+
var import_get20 = __toESM(require("lodash/get"), 1);
|
|
3094
3204
|
var import_has6 = __toESM(require("lodash/has"), 1);
|
|
3095
3205
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
3096
3206
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
3097
3207
|
if ((0, import_has6.default)(regOrFc, FORM_CONTEXT_NAME)) {
|
|
3098
3208
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
3099
3209
|
}
|
|
3100
|
-
return (0,
|
|
3210
|
+
return (0, import_get20.default)(regOrFc, [...lookupPath, toLookup], fallback);
|
|
3101
3211
|
}
|
|
3102
3212
|
|
|
3103
3213
|
// src/orderProperties.ts
|
|
@@ -3178,11 +3288,40 @@ function schemaRequiresTrueValue(schema) {
|
|
|
3178
3288
|
}
|
|
3179
3289
|
|
|
3180
3290
|
// src/shouldRender.ts
|
|
3181
|
-
function shouldRender(component, nextProps, nextState) {
|
|
3291
|
+
function shouldRender(component, nextProps, nextState, updateStrategy = "customDeep") {
|
|
3292
|
+
if (updateStrategy === "always") {
|
|
3293
|
+
return true;
|
|
3294
|
+
}
|
|
3295
|
+
if (updateStrategy === "shallow") {
|
|
3296
|
+
const { props: props2, state: state2 } = component;
|
|
3297
|
+
return !shallowEquals(props2, nextProps) || !shallowEquals(state2, nextState);
|
|
3298
|
+
}
|
|
3182
3299
|
const { props, state } = component;
|
|
3183
3300
|
return !deepEquals(props, nextProps) || !deepEquals(state, nextState);
|
|
3184
3301
|
}
|
|
3185
3302
|
|
|
3303
|
+
// src/shouldRenderOptionalField.ts
|
|
3304
|
+
var import_isObject12 = __toESM(require("lodash/isObject"), 1);
|
|
3305
|
+
var import_uniq2 = __toESM(require("lodash/uniq"), 1);
|
|
3306
|
+
function getSchemaTypesForXxxOf(schemas) {
|
|
3307
|
+
const allTypes = (0, import_uniq2.default)(
|
|
3308
|
+
schemas.map((s) => (0, import_isObject12.default)(s) ? getSchemaType(s) : void 0).flat().filter((t) => t !== void 0)
|
|
3309
|
+
);
|
|
3310
|
+
return allTypes.length === 1 ? allTypes[0] : allTypes;
|
|
3311
|
+
}
|
|
3312
|
+
function shouldRenderOptionalField(registry, schema, required, uiSchema) {
|
|
3313
|
+
const { enableOptionalDataFieldForType = [] } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3314
|
+
let schemaType;
|
|
3315
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
3316
|
+
schemaType = getSchemaTypesForXxxOf(schema[ANY_OF_KEY]);
|
|
3317
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
3318
|
+
schemaType = getSchemaTypesForXxxOf(schema[ONE_OF_KEY]);
|
|
3319
|
+
} else {
|
|
3320
|
+
schemaType = getSchemaType(schema);
|
|
3321
|
+
}
|
|
3322
|
+
return !isRootSchema(registry, schema) && !required && !!schemaType && !Array.isArray(schemaType) && !!enableOptionalDataFieldForType.find((val) => val === schemaType);
|
|
3323
|
+
}
|
|
3324
|
+
|
|
3186
3325
|
// src/toDateString.ts
|
|
3187
3326
|
function toDateString(dateObject, time = true) {
|
|
3188
3327
|
const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;
|
|
@@ -3192,7 +3331,7 @@ function toDateString(dateObject, time = true) {
|
|
|
3192
3331
|
}
|
|
3193
3332
|
|
|
3194
3333
|
// src/toErrorList.ts
|
|
3195
|
-
var
|
|
3334
|
+
var import_isPlainObject3 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3196
3335
|
function toErrorList(errorSchema, fieldPath = []) {
|
|
3197
3336
|
if (!errorSchema) {
|
|
3198
3337
|
return [];
|
|
@@ -3213,7 +3352,7 @@ function toErrorList(errorSchema, fieldPath = []) {
|
|
|
3213
3352
|
return Object.keys(errorSchema).reduce((acc, key) => {
|
|
3214
3353
|
if (key !== ERRORS_KEY) {
|
|
3215
3354
|
const childSchema = errorSchema[key];
|
|
3216
|
-
if ((0,
|
|
3355
|
+
if ((0, import_isPlainObject3.default)(childSchema)) {
|
|
3217
3356
|
acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));
|
|
3218
3357
|
}
|
|
3219
3358
|
}
|
|
@@ -3240,15 +3379,24 @@ function toErrorSchema(errors) {
|
|
|
3240
3379
|
return builder.ErrorSchema;
|
|
3241
3380
|
}
|
|
3242
3381
|
|
|
3382
|
+
// src/toFieldPathId.ts
|
|
3383
|
+
function toFieldPathId(fieldPath, globalFormOptions, parentPath) {
|
|
3384
|
+
const basePath = Array.isArray(parentPath) ? parentPath : parentPath?.path;
|
|
3385
|
+
const childPath = fieldPath === "" ? [] : [fieldPath];
|
|
3386
|
+
const path = basePath ? basePath.concat(...childPath) : childPath;
|
|
3387
|
+
const id = [globalFormOptions.idPrefix, ...path].join(globalFormOptions.idSeparator);
|
|
3388
|
+
return { path, [ID_KEY]: id };
|
|
3389
|
+
}
|
|
3390
|
+
|
|
3243
3391
|
// src/unwrapErrorHandler.ts
|
|
3244
|
-
var
|
|
3392
|
+
var import_isPlainObject4 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3245
3393
|
function unwrapErrorHandler(errorHandler) {
|
|
3246
3394
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
3247
3395
|
if (key === "addError") {
|
|
3248
3396
|
return acc;
|
|
3249
3397
|
} else {
|
|
3250
3398
|
const childSchema = errorHandler[key];
|
|
3251
|
-
if ((0,
|
|
3399
|
+
if ((0, import_isPlainObject4.default)(childSchema)) {
|
|
3252
3400
|
return {
|
|
3253
3401
|
...acc,
|
|
3254
3402
|
[key]: unwrapErrorHandler(childSchema)
|
|
@@ -3276,23 +3424,27 @@ function utcToLocal(jsonDate) {
|
|
|
3276
3424
|
}
|
|
3277
3425
|
|
|
3278
3426
|
// src/validationDataMerge.ts
|
|
3279
|
-
var
|
|
3280
|
-
function validationDataMerge(validationData, additionalErrorSchema) {
|
|
3427
|
+
var import_isEmpty6 = __toESM(require("lodash/isEmpty"), 1);
|
|
3428
|
+
function validationDataMerge(validationData, additionalErrorSchema, preventDuplicates = false) {
|
|
3281
3429
|
if (!additionalErrorSchema) {
|
|
3282
3430
|
return validationData;
|
|
3283
3431
|
}
|
|
3284
3432
|
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
3285
3433
|
let errors = toErrorList(additionalErrorSchema);
|
|
3286
3434
|
let errorSchema = additionalErrorSchema;
|
|
3287
|
-
if (!(0,
|
|
3288
|
-
errorSchema = mergeObjects(
|
|
3435
|
+
if (!(0, import_isEmpty6.default)(oldErrorSchema)) {
|
|
3436
|
+
errorSchema = mergeObjects(
|
|
3437
|
+
oldErrorSchema,
|
|
3438
|
+
additionalErrorSchema,
|
|
3439
|
+
preventDuplicates ? "preventDuplicates" : true
|
|
3440
|
+
);
|
|
3289
3441
|
errors = [...oldErrors].concat(errors);
|
|
3290
3442
|
}
|
|
3291
3443
|
return { errorSchema, errors };
|
|
3292
3444
|
}
|
|
3293
3445
|
|
|
3294
3446
|
// src/withIdRefPrefix.ts
|
|
3295
|
-
var
|
|
3447
|
+
var import_isObject13 = __toESM(require("lodash/isObject"), 1);
|
|
3296
3448
|
function withIdRefPrefixObject(node) {
|
|
3297
3449
|
for (const key in node) {
|
|
3298
3450
|
const realObj = node;
|
|
@@ -3315,35 +3467,12 @@ function withIdRefPrefix(schemaNode) {
|
|
|
3315
3467
|
if (Array.isArray(schemaNode)) {
|
|
3316
3468
|
return withIdRefPrefixArray([...schemaNode]);
|
|
3317
3469
|
}
|
|
3318
|
-
if ((0,
|
|
3470
|
+
if ((0, import_isObject13.default)(schemaNode)) {
|
|
3319
3471
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
3320
3472
|
}
|
|
3321
3473
|
return schemaNode;
|
|
3322
3474
|
}
|
|
3323
3475
|
|
|
3324
|
-
// src/getChangedFields.ts
|
|
3325
|
-
var import_keys = __toESM(require("lodash/keys"), 1);
|
|
3326
|
-
var import_pickBy = __toESM(require("lodash/pickBy"), 1);
|
|
3327
|
-
var import_isPlainObject4 = __toESM(require("lodash/isPlainObject"), 1);
|
|
3328
|
-
var import_get19 = __toESM(require("lodash/get"), 1);
|
|
3329
|
-
var import_difference = __toESM(require("lodash/difference"), 1);
|
|
3330
|
-
function getChangedFields(a, b) {
|
|
3331
|
-
const aIsPlainObject = (0, import_isPlainObject4.default)(a);
|
|
3332
|
-
const bIsPlainObject = (0, import_isPlainObject4.default)(b);
|
|
3333
|
-
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
3334
|
-
return [];
|
|
3335
|
-
}
|
|
3336
|
-
if (aIsPlainObject && !bIsPlainObject) {
|
|
3337
|
-
return (0, import_keys.default)(a);
|
|
3338
|
-
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
3339
|
-
return (0, import_keys.default)(b);
|
|
3340
|
-
} else {
|
|
3341
|
-
const unequalFields = (0, import_keys.default)((0, import_pickBy.default)(a, (value, key) => !deepEquals(value, (0, import_get19.default)(b, key))));
|
|
3342
|
-
const diffFields = (0, import_difference.default)((0, import_keys.default)(b), (0, import_keys.default)(a));
|
|
3343
|
-
return [...unequalFields, ...diffFields];
|
|
3344
|
-
}
|
|
3345
|
-
}
|
|
3346
|
-
|
|
3347
3476
|
// src/enums.ts
|
|
3348
3477
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
3349
3478
|
TranslatableString2["ArrayItemTitle"] = "Item";
|
|
@@ -3366,6 +3495,9 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3366
3495
|
TranslatableString2["PreviewLabel"] = "Preview";
|
|
3367
3496
|
TranslatableString2["DecrementAriaLabel"] = "Decrease value by 1";
|
|
3368
3497
|
TranslatableString2["IncrementAriaLabel"] = "Increase value by 1";
|
|
3498
|
+
TranslatableString2["OptionalObjectAdd"] = "Add data for optional field";
|
|
3499
|
+
TranslatableString2["OptionalObjectRemove"] = "Remove data for optional field";
|
|
3500
|
+
TranslatableString2["OptionalObjectEmptyMsg"] = "No data for optional field";
|
|
3369
3501
|
TranslatableString2["UnknownFieldType"] = "Unknown field type %1";
|
|
3370
3502
|
TranslatableString2["OptionPrefix"] = "Option %1";
|
|
3371
3503
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
@@ -3383,7 +3515,7 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3383
3515
|
var import_forEach = __toESM(require("lodash/forEach"), 1);
|
|
3384
3516
|
|
|
3385
3517
|
// src/parser/ParserValidator.ts
|
|
3386
|
-
var
|
|
3518
|
+
var import_get21 = __toESM(require("lodash/get"), 1);
|
|
3387
3519
|
var ParserValidator = class {
|
|
3388
3520
|
/** Construct the ParserValidator for the given `rootSchema`. This `rootSchema` will be stashed in the `schemaMap`
|
|
3389
3521
|
* first.
|
|
@@ -3409,7 +3541,7 @@ var ParserValidator = class {
|
|
|
3409
3541
|
* @param hash - The hash value at which to map the schema
|
|
3410
3542
|
*/
|
|
3411
3543
|
addSchema(schema, hash) {
|
|
3412
|
-
const key = (0,
|
|
3544
|
+
const key = (0, import_get21.default)(schema, ID_KEY, hash);
|
|
3413
3545
|
const identifiedSchema = { ...schema, [ID_KEY]: key };
|
|
3414
3546
|
const existing = this.schemaMap[key];
|
|
3415
3547
|
if (!existing) {
|
|
@@ -3499,4 +3631,4 @@ function schemaParser(rootSchema) {
|
|
|
3499
3631
|
parseSchema(validator, recurseList, rootSchema, rootSchema);
|
|
3500
3632
|
return validator.getSchemaMap();
|
|
3501
3633
|
}
|
|
3502
|
-
//# sourceMappingURL=index.
|
|
3634
|
+
//# sourceMappingURL=index.cjs.map
|