@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
package/dist/utils.esm.js
CHANGED
|
@@ -66,6 +66,8 @@ var REQUIRED_KEY = "required";
|
|
|
66
66
|
var SUBMIT_BTN_OPTIONS_KEY = "submitButtonOptions";
|
|
67
67
|
var REF_KEY = "$ref";
|
|
68
68
|
var SCHEMA_KEY = "$schema";
|
|
69
|
+
var DEFAULT_ID_PREFIX = "root";
|
|
70
|
+
var DEFAULT_ID_SEPARATOR = "_";
|
|
69
71
|
var DISCRIMINATOR_PATH = ["discriminator", "propertyName"];
|
|
70
72
|
var FORM_CONTEXT_NAME = "formContext";
|
|
71
73
|
var LOOKUP_MAP_NAME = "layoutGridLookupMap";
|
|
@@ -75,10 +77,14 @@ var UI_FIELD_KEY = "ui:field";
|
|
|
75
77
|
var UI_WIDGET_KEY = "ui:widget";
|
|
76
78
|
var UI_OPTIONS_KEY = "ui:options";
|
|
77
79
|
var UI_GLOBAL_OPTIONS_KEY = "ui:globalOptions";
|
|
80
|
+
var JSON_SCHEMA_DRAFT_2019_09 = "https://json-schema.org/draft/2019-09/schema";
|
|
78
81
|
var JSON_SCHEMA_DRAFT_2020_12 = "https://json-schema.org/draft/2020-12/schema";
|
|
79
82
|
|
|
80
83
|
// src/getUiOptions.ts
|
|
81
84
|
function getUiOptions(uiSchema = {}, globalOptions = {}) {
|
|
85
|
+
if (!uiSchema) {
|
|
86
|
+
return { ...globalOptions };
|
|
87
|
+
}
|
|
82
88
|
return Object.keys(uiSchema).filter((key) => key.indexOf("ui:") === 0).reduce(
|
|
83
89
|
(options, key) => {
|
|
84
90
|
const value = uiSchema[key];
|
|
@@ -148,15 +154,15 @@ function deepEquals(a, b) {
|
|
|
148
154
|
}
|
|
149
155
|
|
|
150
156
|
// src/schema/findFieldInSchema.ts
|
|
151
|
-
import
|
|
157
|
+
import get8 from "lodash/get";
|
|
152
158
|
import has3 from "lodash/has";
|
|
153
159
|
|
|
154
160
|
// src/schema/findSelectedOptionInXxxOf.ts
|
|
155
|
-
import
|
|
161
|
+
import get6 from "lodash/get";
|
|
156
162
|
import isEqual from "lodash/isEqual";
|
|
157
163
|
|
|
158
164
|
// src/schema/retrieveSchema.ts
|
|
159
|
-
import
|
|
165
|
+
import get5 from "lodash/get";
|
|
160
166
|
import set from "lodash/set";
|
|
161
167
|
import times from "lodash/times";
|
|
162
168
|
import transform from "lodash/transform";
|
|
@@ -171,12 +177,22 @@ import omit from "lodash/omit";
|
|
|
171
177
|
import isObject2 from "lodash/isObject";
|
|
172
178
|
import isEmpty from "lodash/isEmpty";
|
|
173
179
|
import UriResolver from "fast-uri";
|
|
180
|
+
import get from "lodash/get";
|
|
174
181
|
function findEmbeddedSchemaRecursive(schema, ref) {
|
|
175
182
|
if (ID_KEY in schema && UriResolver.equal(schema[ID_KEY], ref)) {
|
|
176
183
|
return schema;
|
|
177
184
|
}
|
|
178
185
|
for (const subSchema of Object.values(schema)) {
|
|
179
|
-
if (
|
|
186
|
+
if (Array.isArray(subSchema)) {
|
|
187
|
+
for (const item of subSchema) {
|
|
188
|
+
if (isObject2(item)) {
|
|
189
|
+
const result = findEmbeddedSchemaRecursive(item, ref);
|
|
190
|
+
if (result !== void 0) {
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
} else if (isObject2(subSchema)) {
|
|
180
196
|
const result = findEmbeddedSchemaRecursive(subSchema, ref);
|
|
181
197
|
if (result !== void 0) {
|
|
182
198
|
return result;
|
|
@@ -185,12 +201,29 @@ function findEmbeddedSchemaRecursive(schema, ref) {
|
|
|
185
201
|
}
|
|
186
202
|
return void 0;
|
|
187
203
|
}
|
|
204
|
+
function makeAllReferencesAbsolute(schema, baseURI) {
|
|
205
|
+
const currentURI = get(schema, ID_KEY, baseURI);
|
|
206
|
+
if (REF_KEY in schema) {
|
|
207
|
+
schema = { ...schema, [REF_KEY]: UriResolver.resolve(currentURI, schema[REF_KEY]) };
|
|
208
|
+
}
|
|
209
|
+
for (const [key, subSchema] of Object.entries(schema)) {
|
|
210
|
+
if (Array.isArray(subSchema)) {
|
|
211
|
+
schema = {
|
|
212
|
+
...schema,
|
|
213
|
+
[key]: subSchema.map((item) => isObject2(item) ? makeAllReferencesAbsolute(item, currentURI) : item)
|
|
214
|
+
};
|
|
215
|
+
} else if (isObject2(subSchema)) {
|
|
216
|
+
schema = { ...schema, [key]: makeAllReferencesAbsolute(subSchema, currentURI) };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return schema;
|
|
220
|
+
}
|
|
188
221
|
function splitKeyElementFromObject(key, object) {
|
|
189
222
|
const value = object[key];
|
|
190
223
|
const remaining = omit(object, [key]);
|
|
191
224
|
return [remaining, value];
|
|
192
225
|
}
|
|
193
|
-
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI =
|
|
226
|
+
function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [], baseURI = get(rootSchema, [ID_KEY])) {
|
|
194
227
|
const ref = $ref || "";
|
|
195
228
|
let current = void 0;
|
|
196
229
|
if (ref.startsWith("#")) {
|
|
@@ -230,23 +263,27 @@ function findSchemaDefinitionRecursive($ref, rootSchema = {}, recurseList = [],
|
|
|
230
263
|
const [remaining, theRef] = splitKeyElementFromObject(REF_KEY, current);
|
|
231
264
|
const subSchema = findSchemaDefinitionRecursive(theRef, rootSchema, [...recurseList, ref], baseURI);
|
|
232
265
|
if (Object.keys(remaining).length > 0) {
|
|
233
|
-
|
|
266
|
+
if (rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2019_09 || rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
267
|
+
return { [ALL_OF_KEY]: [remaining, subSchema] };
|
|
268
|
+
} else {
|
|
269
|
+
return { ...remaining, ...subSchema };
|
|
270
|
+
}
|
|
234
271
|
}
|
|
235
272
|
return subSchema;
|
|
236
273
|
}
|
|
237
274
|
return current;
|
|
238
275
|
}
|
|
239
|
-
function findSchemaDefinition($ref, rootSchema = {}, baseURI =
|
|
276
|
+
function findSchemaDefinition($ref, rootSchema = {}, baseURI = get(rootSchema, [ID_KEY])) {
|
|
240
277
|
const recurseList = [];
|
|
241
278
|
return findSchemaDefinitionRecursive($ref, rootSchema, recurseList, baseURI);
|
|
242
279
|
}
|
|
243
280
|
|
|
244
281
|
// src/getDiscriminatorFieldFromSchema.ts
|
|
245
|
-
import
|
|
282
|
+
import get2 from "lodash/get";
|
|
246
283
|
import isString from "lodash/isString";
|
|
247
284
|
function getDiscriminatorFieldFromSchema(schema) {
|
|
248
285
|
let discriminator;
|
|
249
|
-
const maybeString =
|
|
286
|
+
const maybeString = get2(schema, DISCRIMINATOR_PATH);
|
|
250
287
|
if (isString(maybeString)) {
|
|
251
288
|
discriminator = maybeString;
|
|
252
289
|
} else if (maybeString !== void 0) {
|
|
@@ -320,21 +357,21 @@ function mergeSchemas(obj1, obj2) {
|
|
|
320
357
|
}
|
|
321
358
|
|
|
322
359
|
// src/schema/getFirstMatchingOption.ts
|
|
323
|
-
import
|
|
360
|
+
import get4 from "lodash/get";
|
|
324
361
|
import has from "lodash/has";
|
|
325
362
|
import isNumber from "lodash/isNumber";
|
|
326
363
|
|
|
327
364
|
// src/getOptionMatchingSimpleDiscriminator.ts
|
|
328
|
-
import
|
|
365
|
+
import get3 from "lodash/get";
|
|
329
366
|
function getOptionMatchingSimpleDiscriminator(formData, options, discriminatorField) {
|
|
330
367
|
if (formData && discriminatorField) {
|
|
331
|
-
const value =
|
|
368
|
+
const value = get3(formData, discriminatorField);
|
|
332
369
|
if (value === void 0) {
|
|
333
370
|
return;
|
|
334
371
|
}
|
|
335
372
|
for (let i = 0; i < options.length; i++) {
|
|
336
373
|
const option = options[i];
|
|
337
|
-
const discriminator =
|
|
374
|
+
const discriminator = get3(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
338
375
|
if (discriminator.type === "object" || discriminator.type === "array") {
|
|
339
376
|
continue;
|
|
340
377
|
}
|
|
@@ -361,8 +398,8 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
361
398
|
for (let i = 0; i < options.length; i++) {
|
|
362
399
|
const option = options[i];
|
|
363
400
|
if (discriminatorField && has(option, [PROPERTIES_KEY, discriminatorField])) {
|
|
364
|
-
const value =
|
|
365
|
-
const discriminator =
|
|
401
|
+
const value = get4(formData, discriminatorField);
|
|
402
|
+
const discriminator = get4(option, [PROPERTIES_KEY, discriminatorField], {});
|
|
366
403
|
if (validator.isValid(discriminator, value, rootSchema)) {
|
|
367
404
|
return i;
|
|
368
405
|
}
|
|
@@ -398,7 +435,7 @@ function getFirstMatchingOption(validator, formData, options, rootSchema, discri
|
|
|
398
435
|
|
|
399
436
|
// src/schema/retrieveSchema.ts
|
|
400
437
|
import isEmpty2 from "lodash/isEmpty";
|
|
401
|
-
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf) {
|
|
438
|
+
function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs = false) {
|
|
402
439
|
return retrieveSchemaInternal(
|
|
403
440
|
validator,
|
|
404
441
|
schema,
|
|
@@ -406,7 +443,8 @@ function retrieveSchema(validator, schema, rootSchema = {}, rawFormData, experim
|
|
|
406
443
|
rawFormData,
|
|
407
444
|
void 0,
|
|
408
445
|
void 0,
|
|
409
|
-
experimental_customMergeAllOf
|
|
446
|
+
experimental_customMergeAllOf,
|
|
447
|
+
resolveAnyOfOrOneOfRefs
|
|
410
448
|
)[0];
|
|
411
449
|
}
|
|
412
450
|
function resolveCondition(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
@@ -495,14 +533,16 @@ function getMatchingPatternProperties(schema, key) {
|
|
|
495
533
|
{}
|
|
496
534
|
);
|
|
497
535
|
}
|
|
498
|
-
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
536
|
+
function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
499
537
|
const updatedSchemas = resolveReference(
|
|
500
538
|
validator,
|
|
501
539
|
schema,
|
|
502
540
|
rootSchema,
|
|
503
541
|
expandAllBranches,
|
|
504
542
|
recurseList,
|
|
505
|
-
formData
|
|
543
|
+
formData,
|
|
544
|
+
experimental_customMergeAllOf,
|
|
545
|
+
resolveAnyOfOrOneOfRefs
|
|
506
546
|
);
|
|
507
547
|
if (updatedSchemas.length > 1 || updatedSchemas[0] !== schema) {
|
|
508
548
|
return updatedSchemas;
|
|
@@ -514,7 +554,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
514
554
|
rootSchema,
|
|
515
555
|
expandAllBranches,
|
|
516
556
|
recurseList,
|
|
517
|
-
formData
|
|
557
|
+
formData,
|
|
558
|
+
experimental_customMergeAllOf
|
|
518
559
|
);
|
|
519
560
|
return resolvedSchemas.flatMap((s) => {
|
|
520
561
|
return retrieveSchemaInternal(
|
|
@@ -528,7 +569,7 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
528
569
|
);
|
|
529
570
|
});
|
|
530
571
|
}
|
|
531
|
-
if (ALL_OF_KEY in schema && Array.isArray(schema
|
|
572
|
+
if (ALL_OF_KEY in schema && Array.isArray(schema[ALL_OF_KEY])) {
|
|
532
573
|
const allOfSchemaElements = schema.allOf.map(
|
|
533
574
|
(allOfSubschema) => retrieveSchemaInternal(
|
|
534
575
|
validator,
|
|
@@ -548,8 +589,8 @@ function resolveSchema(validator, schema, rootSchema, expandAllBranches, recurse
|
|
|
548
589
|
}
|
|
549
590
|
return [schema];
|
|
550
591
|
}
|
|
551
|
-
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
552
|
-
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList);
|
|
592
|
+
function resolveReference(validator, schema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
593
|
+
const updatedSchema = resolveAllReferences(schema, rootSchema, recurseList, void 0, resolveAnyOfOrOneOfRefs);
|
|
553
594
|
if (updatedSchema !== schema) {
|
|
554
595
|
return retrieveSchemaInternal(
|
|
555
596
|
validator,
|
|
@@ -558,12 +599,13 @@ function resolveReference(validator, schema, rootSchema, expandAllBranches, recu
|
|
|
558
599
|
formData,
|
|
559
600
|
expandAllBranches,
|
|
560
601
|
recurseList,
|
|
561
|
-
experimental_customMergeAllOf
|
|
602
|
+
experimental_customMergeAllOf,
|
|
603
|
+
resolveAnyOfOrOneOfRefs
|
|
562
604
|
);
|
|
563
605
|
}
|
|
564
606
|
return [schema];
|
|
565
607
|
}
|
|
566
|
-
function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
608
|
+
function resolveAllReferences(schema, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs) {
|
|
567
609
|
if (!isObject(schema)) {
|
|
568
610
|
return schema;
|
|
569
611
|
}
|
|
@@ -586,7 +628,7 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
586
628
|
resolvedSchema[PROPERTIES_KEY],
|
|
587
629
|
(result, value, key) => {
|
|
588
630
|
const childList = [...recurseList];
|
|
589
|
-
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI);
|
|
631
|
+
result[key] = resolveAllReferences(value, rootSchema, childList, baseURI, resolveAnyOfOrOneOfRefs);
|
|
590
632
|
childrenLists.push(childList);
|
|
591
633
|
},
|
|
592
634
|
{}
|
|
@@ -597,9 +639,28 @@ function resolveAllReferences(schema, rootSchema, recurseList, baseURI) {
|
|
|
597
639
|
if (ITEMS_KEY in resolvedSchema && !Array.isArray(resolvedSchema.items) && typeof resolvedSchema.items !== "boolean") {
|
|
598
640
|
resolvedSchema = {
|
|
599
641
|
...resolvedSchema,
|
|
600
|
-
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI)
|
|
642
|
+
items: resolveAllReferences(resolvedSchema.items, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
601
643
|
};
|
|
602
644
|
}
|
|
645
|
+
if (resolveAnyOfOrOneOfRefs) {
|
|
646
|
+
let key;
|
|
647
|
+
let schemas;
|
|
648
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
649
|
+
key = ANY_OF_KEY;
|
|
650
|
+
schemas = resolvedSchema[ANY_OF_KEY];
|
|
651
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
652
|
+
key = ONE_OF_KEY;
|
|
653
|
+
schemas = resolvedSchema[ONE_OF_KEY];
|
|
654
|
+
}
|
|
655
|
+
if (key && schemas) {
|
|
656
|
+
resolvedSchema = {
|
|
657
|
+
...resolvedSchema,
|
|
658
|
+
[key]: schemas.map(
|
|
659
|
+
(s) => resolveAllReferences(s, rootSchema, recurseList, baseURI, resolveAnyOfOrOneOfRefs)
|
|
660
|
+
)
|
|
661
|
+
};
|
|
662
|
+
}
|
|
663
|
+
}
|
|
603
664
|
return deepEquals(schema, resolvedSchema) ? schema : resolvedSchema;
|
|
604
665
|
}
|
|
605
666
|
function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFormData, experimental_customMergeAllOf) {
|
|
@@ -617,9 +678,9 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
617
678
|
if (!isEmpty2(matchingProperties)) {
|
|
618
679
|
schema.properties[key] = retrieveSchema(
|
|
619
680
|
validator,
|
|
620
|
-
{
|
|
681
|
+
{ [ALL_OF_KEY]: Object.values(matchingProperties) },
|
|
621
682
|
rootSchema,
|
|
622
|
-
formData,
|
|
683
|
+
get5(formData, [key]),
|
|
623
684
|
experimental_customMergeAllOf
|
|
624
685
|
);
|
|
625
686
|
set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
@@ -627,12 +688,12 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
627
688
|
}
|
|
628
689
|
}
|
|
629
690
|
if (ADDITIONAL_PROPERTIES_KEY in schema && schema.additionalProperties !== false) {
|
|
630
|
-
let additionalProperties
|
|
691
|
+
let additionalProperties;
|
|
631
692
|
if (typeof schema.additionalProperties !== "boolean") {
|
|
632
693
|
if (REF_KEY in schema.additionalProperties) {
|
|
633
694
|
additionalProperties = retrieveSchema(
|
|
634
695
|
validator,
|
|
635
|
-
{
|
|
696
|
+
{ [REF_KEY]: get5(schema.additionalProperties, [REF_KEY]) },
|
|
636
697
|
rootSchema,
|
|
637
698
|
formData,
|
|
638
699
|
experimental_customMergeAllOf
|
|
@@ -645,10 +706,10 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
645
706
|
...schema.additionalProperties
|
|
646
707
|
};
|
|
647
708
|
} else {
|
|
648
|
-
additionalProperties = { type: guessType(
|
|
709
|
+
additionalProperties = { type: guessType(get5(formData, [key])) };
|
|
649
710
|
}
|
|
650
711
|
} else {
|
|
651
|
-
additionalProperties = { type: guessType(
|
|
712
|
+
additionalProperties = { type: guessType(get5(formData, [key])) };
|
|
652
713
|
}
|
|
653
714
|
schema.properties[key] = additionalProperties;
|
|
654
715
|
set(schema.properties, [key, ADDITIONAL_PROPERTY_FLAG], true);
|
|
@@ -659,7 +720,7 @@ function stubExistingAdditionalProperties(validator, theSchema, rootSchema, aFor
|
|
|
659
720
|
});
|
|
660
721
|
return schema;
|
|
661
722
|
}
|
|
662
|
-
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf) {
|
|
723
|
+
function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expandAllBranches = false, recurseList = [], experimental_customMergeAllOf, resolveAnyOfOrOneOfRefs) {
|
|
663
724
|
if (!isObject(schema)) {
|
|
664
725
|
return [{}];
|
|
665
726
|
}
|
|
@@ -670,7 +731,8 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
670
731
|
expandAllBranches,
|
|
671
732
|
recurseList,
|
|
672
733
|
rawFormData,
|
|
673
|
-
experimental_customMergeAllOf
|
|
734
|
+
experimental_customMergeAllOf,
|
|
735
|
+
resolveAnyOfOrOneOfRefs
|
|
674
736
|
);
|
|
675
737
|
return resolvedSchemas.flatMap((s) => {
|
|
676
738
|
let resolvedSchema = s;
|
|
@@ -727,7 +789,7 @@ function retrieveSchemaInternal(validator, schema, rootSchema, rawFormData, expa
|
|
|
727
789
|
validator,
|
|
728
790
|
{ allOf: [schema2.properties[key], ...Object.values(matchingProperties)] },
|
|
729
791
|
rootSchema,
|
|
730
|
-
rawFormData,
|
|
792
|
+
get5(rawFormData, [key]),
|
|
731
793
|
experimental_customMergeAllOf
|
|
732
794
|
);
|
|
733
795
|
}
|
|
@@ -799,7 +861,7 @@ function resolveDependencies(validator, schema, rootSchema, expandAllBranches, r
|
|
|
799
861
|
function processDependencies(validator, dependencies, resolvedSchema, rootSchema, expandAllBranches, recurseList, formData, experimental_customMergeAllOf) {
|
|
800
862
|
let schemas = [resolvedSchema];
|
|
801
863
|
for (const dependencyKey in dependencies) {
|
|
802
|
-
if (!expandAllBranches &&
|
|
864
|
+
if (!expandAllBranches && get5(formData, [dependencyKey]) === void 0) {
|
|
803
865
|
continue;
|
|
804
866
|
}
|
|
805
867
|
if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {
|
|
@@ -930,11 +992,11 @@ function findSelectedOptionInXxxOf(validator, rootSchema, schema, fallbackField,
|
|
|
930
992
|
const xxxOfs = schema[xxx].map(
|
|
931
993
|
(xxxOf) => retrieveSchema(validator, xxxOf, rootSchema, formData, experimental_customMergeAllOf)
|
|
932
994
|
);
|
|
933
|
-
const data =
|
|
995
|
+
const data = get6(formData, selectorField);
|
|
934
996
|
if (data !== void 0) {
|
|
935
997
|
return xxxOfs.find((xxx2) => {
|
|
936
998
|
return isEqual(
|
|
937
|
-
|
|
999
|
+
get6(xxx2, [PROPERTIES_KEY, selectorField, DEFAULT_KEY], get6(xxx2, [PROPERTIES_KEY, selectorField, CONST_KEY])),
|
|
938
1000
|
data
|
|
939
1001
|
);
|
|
940
1002
|
});
|
|
@@ -944,7 +1006,7 @@ function findSelectedOptionInXxxOf(validator, rootSchema, schema, fallbackField,
|
|
|
944
1006
|
}
|
|
945
1007
|
|
|
946
1008
|
// src/schema/getFromSchema.ts
|
|
947
|
-
import
|
|
1009
|
+
import get7 from "lodash/get";
|
|
948
1010
|
import has2 from "lodash/has";
|
|
949
1011
|
import isEmpty3 from "lodash/isEmpty";
|
|
950
1012
|
function getFromSchemaInternal(validator, rootSchema, schema, path, experimental_customMergeAllOf) {
|
|
@@ -958,7 +1020,7 @@ function getFromSchemaInternal(validator, rootSchema, schema, path, experimental
|
|
|
958
1020
|
const pathList = Array.isArray(path) ? path : path.split(".");
|
|
959
1021
|
const [part, ...nestedPath] = pathList;
|
|
960
1022
|
if (part && has2(fieldSchema, part)) {
|
|
961
|
-
fieldSchema =
|
|
1023
|
+
fieldSchema = get7(fieldSchema, part);
|
|
962
1024
|
return getFromSchemaInternal(
|
|
963
1025
|
validator,
|
|
964
1026
|
rootSchema,
|
|
@@ -1000,7 +1062,7 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1000
1062
|
parentField,
|
|
1001
1063
|
fieldName,
|
|
1002
1064
|
ONE_OF_KEY,
|
|
1003
|
-
|
|
1065
|
+
get8(formData, subPath),
|
|
1004
1066
|
experimental_customMergeAllOf
|
|
1005
1067
|
);
|
|
1006
1068
|
} else if (has3(parentField, ANY_OF_KEY)) {
|
|
@@ -1010,7 +1072,7 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1010
1072
|
parentField,
|
|
1011
1073
|
fieldName,
|
|
1012
1074
|
ANY_OF_KEY,
|
|
1013
|
-
|
|
1075
|
+
get8(formData, subPath),
|
|
1014
1076
|
experimental_customMergeAllOf
|
|
1015
1077
|
);
|
|
1016
1078
|
}
|
|
@@ -1064,11 +1126,11 @@ function findFieldInSchema(validator, rootSchema, schema, path, formData = {}, e
|
|
|
1064
1126
|
}
|
|
1065
1127
|
|
|
1066
1128
|
// src/schema/getDefaultFormState.ts
|
|
1067
|
-
import
|
|
1129
|
+
import get12 from "lodash/get";
|
|
1068
1130
|
import isEmpty4 from "lodash/isEmpty";
|
|
1069
1131
|
|
|
1070
1132
|
// src/schema/getClosestMatchingOption.ts
|
|
1071
|
-
import
|
|
1133
|
+
import get9 from "lodash/get";
|
|
1072
1134
|
import has4 from "lodash/has";
|
|
1073
1135
|
import isNumber2 from "lodash/isNumber";
|
|
1074
1136
|
import isObject3 from "lodash/isObject";
|
|
@@ -1091,7 +1153,7 @@ function calculateIndexScore(validator, rootSchema, schema, formData, experiment
|
|
|
1091
1153
|
totalScore += reduce(
|
|
1092
1154
|
schema.properties,
|
|
1093
1155
|
(score, value, key) => {
|
|
1094
|
-
const formValue =
|
|
1156
|
+
const formValue = get9(formData, key);
|
|
1095
1157
|
if (typeof value === "boolean") {
|
|
1096
1158
|
return score;
|
|
1097
1159
|
}
|
|
@@ -1118,7 +1180,7 @@ function calculateIndexScore(validator, rootSchema, schema, formData, experiment
|
|
|
1118
1180
|
validator,
|
|
1119
1181
|
rootSchema,
|
|
1120
1182
|
formValue,
|
|
1121
|
-
|
|
1183
|
+
get9(value, key2),
|
|
1122
1184
|
-1,
|
|
1123
1185
|
discriminator,
|
|
1124
1186
|
experimental_customMergeAllOf
|
|
@@ -1197,7 +1259,7 @@ function isFixedItems(schema) {
|
|
|
1197
1259
|
}
|
|
1198
1260
|
|
|
1199
1261
|
// src/mergeDefaultsWithFormData.ts
|
|
1200
|
-
import
|
|
1262
|
+
import get10 from "lodash/get";
|
|
1201
1263
|
import isNil from "lodash/isNil";
|
|
1202
1264
|
function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults = false, defaultSupercedesUndefined = false, overrideFormDataWithDefaults = false) {
|
|
1203
1265
|
if (Array.isArray(formData)) {
|
|
@@ -1224,11 +1286,22 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1224
1286
|
if (isObject(formData)) {
|
|
1225
1287
|
const acc = Object.assign({}, defaults);
|
|
1226
1288
|
return Object.keys(formData).reduce((acc2, key) => {
|
|
1227
|
-
const keyValue =
|
|
1289
|
+
const keyValue = get10(formData, key);
|
|
1228
1290
|
const keyExistsInDefaults = isObject(defaults) && key in defaults;
|
|
1229
1291
|
const keyExistsInFormData = key in formData;
|
|
1292
|
+
const keyDefault = get10(defaults, key) ?? {};
|
|
1293
|
+
const defaultValueIsNestedObject = keyExistsInDefaults && Object.entries(keyDefault).some(([, v]) => isObject(v));
|
|
1294
|
+
const keyDefaultIsObject = keyExistsInDefaults && isObject(get10(defaults, key));
|
|
1295
|
+
const keyHasFormDataObject = keyExistsInFormData && isObject(keyValue);
|
|
1296
|
+
if (keyDefaultIsObject && keyHasFormDataObject && !defaultValueIsNestedObject) {
|
|
1297
|
+
acc2[key] = {
|
|
1298
|
+
...get10(defaults, key),
|
|
1299
|
+
...keyValue
|
|
1300
|
+
};
|
|
1301
|
+
return acc2;
|
|
1302
|
+
}
|
|
1230
1303
|
acc2[key] = mergeDefaultsWithFormData(
|
|
1231
|
-
|
|
1304
|
+
get10(defaults, key),
|
|
1232
1305
|
keyValue,
|
|
1233
1306
|
mergeExtraArrayDefaults,
|
|
1234
1307
|
defaultSupercedesUndefined,
|
|
@@ -1239,7 +1312,7 @@ function mergeDefaultsWithFormData(defaults, formData, mergeExtraArrayDefaults =
|
|
|
1239
1312
|
return acc2;
|
|
1240
1313
|
}, acc);
|
|
1241
1314
|
}
|
|
1242
|
-
if (defaultSupercedesUndefined && (!
|
|
1315
|
+
if (defaultSupercedesUndefined && (!(defaults === void 0) && isNil(formData) || typeof formData === "number" && isNaN(formData)) || overrideFormDataWithDefaults && !isNil(formData)) {
|
|
1243
1316
|
return defaults;
|
|
1244
1317
|
}
|
|
1245
1318
|
return formData;
|
|
@@ -1307,7 +1380,7 @@ function constIsAjvDataReference(schema) {
|
|
|
1307
1380
|
}
|
|
1308
1381
|
|
|
1309
1382
|
// src/optionsList.ts
|
|
1310
|
-
import
|
|
1383
|
+
import get11 from "lodash/get";
|
|
1311
1384
|
|
|
1312
1385
|
// src/toConstant.ts
|
|
1313
1386
|
function toConstant(schema) {
|
|
@@ -1353,8 +1426,8 @@ function optionsList(schema, uiSchema) {
|
|
|
1353
1426
|
let value;
|
|
1354
1427
|
let label = title;
|
|
1355
1428
|
if (selectorField) {
|
|
1356
|
-
const innerSchema =
|
|
1357
|
-
value =
|
|
1429
|
+
const innerSchema = get11(aSchema, [PROPERTIES_KEY, selectorField], {});
|
|
1430
|
+
value = get11(innerSchema, DEFAULT_KEY, get11(innerSchema, CONST_KEY));
|
|
1358
1431
|
label = label || innerSchema?.title || aSchema.title || String(value);
|
|
1359
1432
|
} else {
|
|
1360
1433
|
value = toConstant(aSchema);
|
|
@@ -1386,10 +1459,19 @@ function getInnerSchemaForArrayItem(schema, additionalItems = 0 /* Ignore */, id
|
|
|
1386
1459
|
}
|
|
1387
1460
|
return {};
|
|
1388
1461
|
}
|
|
1462
|
+
function computeDefaultBasedOnSchemaTypeAndDefaults(schema, computedDefault) {
|
|
1463
|
+
const { default: schemaDefault, type } = schema;
|
|
1464
|
+
const shouldReturnNullAsDefault = Array.isArray(type) && type.includes("null") && isEmpty4(computedDefault) && schemaDefault === null;
|
|
1465
|
+
return shouldReturnNullAsDefault ? null : computedDefault;
|
|
1466
|
+
}
|
|
1389
1467
|
function maybeAddDefaultToObject(obj, key, computedDefault, includeUndefinedValues, isParentRequired, requiredFields = [], experimental_defaultFormStateBehavior = {}, isConst = false) {
|
|
1390
1468
|
const { emptyObjectFields = "populateAllDefaults" } = experimental_defaultFormStateBehavior;
|
|
1391
|
-
if (includeUndefinedValues || isConst) {
|
|
1469
|
+
if (includeUndefinedValues === true || isConst) {
|
|
1392
1470
|
obj[key] = computedDefault;
|
|
1471
|
+
} else if (includeUndefinedValues === "excludeObjectChildren") {
|
|
1472
|
+
if (!isObject(computedDefault) || !isEmpty4(computedDefault)) {
|
|
1473
|
+
obj[key] = computedDefault;
|
|
1474
|
+
}
|
|
1393
1475
|
} else if (emptyObjectFields !== "skipDefaults") {
|
|
1394
1476
|
const isSelfOrParentRequired = isParentRequired === void 0 ? requiredFields.includes(key) : isParentRequired;
|
|
1395
1477
|
if (isObject(computedDefault)) {
|
|
@@ -1421,15 +1503,16 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1421
1503
|
experimental_defaultFormStateBehavior = void 0,
|
|
1422
1504
|
experimental_customMergeAllOf = void 0,
|
|
1423
1505
|
required,
|
|
1424
|
-
shouldMergeDefaultsIntoFormData = false
|
|
1506
|
+
shouldMergeDefaultsIntoFormData = false,
|
|
1507
|
+
initialDefaultsGenerated
|
|
1425
1508
|
} = computeDefaultsProps;
|
|
1426
|
-
|
|
1509
|
+
let formData = isObject(rawFormData) ? rawFormData : {};
|
|
1427
1510
|
const schema = isObject(rawSchema) ? rawSchema : {};
|
|
1428
1511
|
let defaults = parentDefaults;
|
|
1429
1512
|
let schemaToCompute = null;
|
|
1430
1513
|
let experimental_dfsb_to_compute = experimental_defaultFormStateBehavior;
|
|
1431
1514
|
let updatedRecurseList = _recurseList;
|
|
1432
|
-
if (schema[CONST_KEY] && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1515
|
+
if (schema[CONST_KEY] !== void 0 && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(schema)) {
|
|
1433
1516
|
defaults = schema[CONST_KEY];
|
|
1434
1517
|
} else if (isObject(defaults) && isObject(schema.default)) {
|
|
1435
1518
|
defaults = mergeObjects(defaults, schema.default);
|
|
@@ -1444,6 +1527,9 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1444
1527
|
if (schemaToCompute && !defaults) {
|
|
1445
1528
|
defaults = schema.default;
|
|
1446
1529
|
}
|
|
1530
|
+
if (shouldMergeDefaultsIntoFormData && schemaToCompute && !isObject(rawFormData)) {
|
|
1531
|
+
formData = rawFormData;
|
|
1532
|
+
}
|
|
1447
1533
|
} else if (DEPENDENCIES_KEY in schema) {
|
|
1448
1534
|
const defaultFormData = {
|
|
1449
1535
|
...getDefaultBasedOnSchemaType(validator, schema, computeDefaultsProps, defaults),
|
|
@@ -1521,9 +1607,10 @@ function computeDefaults(validator, rawSchema, computeDefaultsProps = {}) {
|
|
|
1521
1607
|
experimental_defaultFormStateBehavior: experimental_dfsb_to_compute,
|
|
1522
1608
|
experimental_customMergeAllOf,
|
|
1523
1609
|
parentDefaults: defaults,
|
|
1524
|
-
rawFormData: formData,
|
|
1610
|
+
rawFormData: rawFormData ?? formData,
|
|
1525
1611
|
required,
|
|
1526
|
-
shouldMergeDefaultsIntoFormData
|
|
1612
|
+
shouldMergeDefaultsIntoFormData,
|
|
1613
|
+
initialDefaultsGenerated
|
|
1527
1614
|
});
|
|
1528
1615
|
}
|
|
1529
1616
|
if (defaults === void 0) {
|
|
@@ -1575,7 +1662,8 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1575
1662
|
experimental_defaultFormStateBehavior = void 0,
|
|
1576
1663
|
experimental_customMergeAllOf = void 0,
|
|
1577
1664
|
required,
|
|
1578
|
-
shouldMergeDefaultsIntoFormData
|
|
1665
|
+
shouldMergeDefaultsIntoFormData,
|
|
1666
|
+
initialDefaultsGenerated
|
|
1579
1667
|
} = {}, defaults) {
|
|
1580
1668
|
{
|
|
1581
1669
|
const formData = isObject(rawFormData) ? rawFormData : {};
|
|
@@ -1584,7 +1672,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1584
1672
|
const parentConst = retrievedSchema[CONST_KEY];
|
|
1585
1673
|
const objectDefaults = Object.keys(retrievedSchema.properties || {}).reduce(
|
|
1586
1674
|
(acc, key) => {
|
|
1587
|
-
const propertySchema =
|
|
1675
|
+
const propertySchema = get12(retrievedSchema, [PROPERTIES_KEY, key], {});
|
|
1588
1676
|
const hasParentConst = isObject(parentConst) && parentConst[key] !== void 0;
|
|
1589
1677
|
const hasConst = (isObject(propertySchema) && CONST_KEY in propertySchema || hasParentConst) && experimental_defaultFormStateBehavior?.constAsDefaults !== "never" && !constIsAjvDataReference(propertySchema);
|
|
1590
1678
|
const computedDefault = computeDefaults(validator, propertySchema, {
|
|
@@ -1593,10 +1681,11 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1593
1681
|
experimental_defaultFormStateBehavior,
|
|
1594
1682
|
experimental_customMergeAllOf,
|
|
1595
1683
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1596
|
-
parentDefaults:
|
|
1597
|
-
rawFormData:
|
|
1684
|
+
parentDefaults: get12(defaults, [key]),
|
|
1685
|
+
rawFormData: get12(formData, [key]),
|
|
1598
1686
|
required: retrievedSchema.required?.includes(key),
|
|
1599
|
-
shouldMergeDefaultsIntoFormData
|
|
1687
|
+
shouldMergeDefaultsIntoFormData,
|
|
1688
|
+
initialDefaultsGenerated
|
|
1600
1689
|
});
|
|
1601
1690
|
maybeAddDefaultToObject(
|
|
1602
1691
|
acc,
|
|
@@ -1612,7 +1701,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1612
1701
|
},
|
|
1613
1702
|
{}
|
|
1614
1703
|
);
|
|
1615
|
-
if (retrievedSchema.additionalProperties) {
|
|
1704
|
+
if (retrievedSchema.additionalProperties && !initialDefaultsGenerated) {
|
|
1616
1705
|
const additionalPropertiesSchema = isObject(retrievedSchema.additionalProperties) ? retrievedSchema.additionalProperties : {};
|
|
1617
1706
|
const keys2 = /* @__PURE__ */ new Set();
|
|
1618
1707
|
if (isObject(defaults)) {
|
|
@@ -1630,10 +1719,11 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1630
1719
|
experimental_defaultFormStateBehavior,
|
|
1631
1720
|
experimental_customMergeAllOf,
|
|
1632
1721
|
includeUndefinedValues: includeUndefinedValues === true,
|
|
1633
|
-
parentDefaults:
|
|
1634
|
-
rawFormData:
|
|
1722
|
+
parentDefaults: get12(defaults, [key]),
|
|
1723
|
+
rawFormData: get12(formData, [key]),
|
|
1635
1724
|
required: retrievedSchema.required?.includes(key),
|
|
1636
|
-
shouldMergeDefaultsIntoFormData
|
|
1725
|
+
shouldMergeDefaultsIntoFormData,
|
|
1726
|
+
initialDefaultsGenerated
|
|
1637
1727
|
});
|
|
1638
1728
|
maybeAddDefaultToObject(
|
|
1639
1729
|
objectDefaults,
|
|
@@ -1645,7 +1735,7 @@ function getObjectDefaults(validator, rawSchema, {
|
|
|
1645
1735
|
);
|
|
1646
1736
|
});
|
|
1647
1737
|
}
|
|
1648
|
-
return objectDefaults;
|
|
1738
|
+
return computeDefaultBasedOnSchemaTypeAndDefaults(rawSchema, objectDefaults);
|
|
1649
1739
|
}
|
|
1650
1740
|
}
|
|
1651
1741
|
function getArrayDefaults(validator, rawSchema, {
|
|
@@ -1655,7 +1745,9 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1655
1745
|
experimental_defaultFormStateBehavior = void 0,
|
|
1656
1746
|
experimental_customMergeAllOf = void 0,
|
|
1657
1747
|
required,
|
|
1658
|
-
|
|
1748
|
+
requiredAsRoot = false,
|
|
1749
|
+
shouldMergeDefaultsIntoFormData,
|
|
1750
|
+
initialDefaultsGenerated
|
|
1659
1751
|
} = {}, defaults) {
|
|
1660
1752
|
const schema = rawSchema;
|
|
1661
1753
|
const arrayMinItemsStateBehavior = experimental_defaultFormStateBehavior?.arrayMinItems ?? {};
|
|
@@ -1676,7 +1768,8 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1676
1768
|
experimental_customMergeAllOf,
|
|
1677
1769
|
parentDefaults: item,
|
|
1678
1770
|
required,
|
|
1679
|
-
shouldMergeDefaultsIntoFormData
|
|
1771
|
+
shouldMergeDefaultsIntoFormData,
|
|
1772
|
+
initialDefaultsGenerated
|
|
1680
1773
|
});
|
|
1681
1774
|
});
|
|
1682
1775
|
}
|
|
@@ -1692,9 +1785,10 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1692
1785
|
experimental_defaultFormStateBehavior,
|
|
1693
1786
|
experimental_customMergeAllOf,
|
|
1694
1787
|
rawFormData: item,
|
|
1695
|
-
parentDefaults:
|
|
1788
|
+
parentDefaults: get12(defaults, [idx]),
|
|
1696
1789
|
required,
|
|
1697
|
-
shouldMergeDefaultsIntoFormData
|
|
1790
|
+
shouldMergeDefaultsIntoFormData,
|
|
1791
|
+
initialDefaultsGenerated
|
|
1698
1792
|
});
|
|
1699
1793
|
});
|
|
1700
1794
|
const mergeExtraDefaults = (ignoreMinItemsFlagSet && required || isPopulateAll) && arrayMergeExtraDefaults;
|
|
@@ -1710,25 +1804,29 @@ function getArrayDefaults(validator, rawSchema, {
|
|
|
1710
1804
|
return defaults ? defaults : void 0;
|
|
1711
1805
|
}
|
|
1712
1806
|
}
|
|
1807
|
+
let arrayDefault;
|
|
1713
1808
|
const defaultsLength = Array.isArray(defaults) ? defaults.length : 0;
|
|
1714
1809
|
if (!schema.minItems || isMultiSelect(validator, schema, rootSchema, experimental_customMergeAllOf) || computeSkipPopulate(validator, schema, rootSchema) || schema.minItems <= defaultsLength) {
|
|
1715
|
-
|
|
1716
|
-
}
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1810
|
+
arrayDefault = defaults || !required && !requiredAsRoot ? defaults : emptyDefault;
|
|
1811
|
+
} else {
|
|
1812
|
+
const defaultEntries = defaults || [];
|
|
1813
|
+
const fillerSchema = getInnerSchemaForArrayItem(schema, 1 /* Invert */);
|
|
1814
|
+
const fillerDefault = fillerSchema.default;
|
|
1815
|
+
const fillerEntries = Array.from(
|
|
1816
|
+
{ length: schema.minItems - defaultsLength },
|
|
1817
|
+
() => computeDefaults(validator, fillerSchema, {
|
|
1818
|
+
parentDefaults: fillerDefault,
|
|
1819
|
+
rootSchema,
|
|
1820
|
+
_recurseList,
|
|
1821
|
+
experimental_defaultFormStateBehavior,
|
|
1822
|
+
experimental_customMergeAllOf,
|
|
1823
|
+
required,
|
|
1824
|
+
shouldMergeDefaultsIntoFormData
|
|
1825
|
+
})
|
|
1826
|
+
);
|
|
1827
|
+
arrayDefault = defaultEntries.concat(fillerEntries);
|
|
1828
|
+
}
|
|
1829
|
+
return computeDefaultBasedOnSchemaTypeAndDefaults(rawSchema, arrayDefault);
|
|
1732
1830
|
}
|
|
1733
1831
|
function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps = {}, defaults) {
|
|
1734
1832
|
switch (getSchemaType(rawSchema)) {
|
|
@@ -1741,7 +1839,7 @@ function getDefaultBasedOnSchemaType(validator, rawSchema, computeDefaultsProps
|
|
|
1741
1839
|
}
|
|
1742
1840
|
}
|
|
1743
1841
|
}
|
|
1744
|
-
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
1842
|
+
function getDefaultFormState(validator, theSchema, formData, rootSchema, includeUndefinedValues = false, experimental_defaultFormStateBehavior, experimental_customMergeAllOf, initialDefaultsGenerated) {
|
|
1745
1843
|
if (!isObject(theSchema)) {
|
|
1746
1844
|
throw new Error("Invalid schema: " + theSchema);
|
|
1747
1845
|
}
|
|
@@ -1752,8 +1850,16 @@ function getDefaultFormState(validator, theSchema, formData, rootSchema, include
|
|
|
1752
1850
|
experimental_defaultFormStateBehavior,
|
|
1753
1851
|
experimental_customMergeAllOf,
|
|
1754
1852
|
rawFormData: formData,
|
|
1755
|
-
shouldMergeDefaultsIntoFormData: true
|
|
1853
|
+
shouldMergeDefaultsIntoFormData: true,
|
|
1854
|
+
initialDefaultsGenerated,
|
|
1855
|
+
requiredAsRoot: true
|
|
1756
1856
|
});
|
|
1857
|
+
if (schema.type !== "object" && isObject(schema.default)) {
|
|
1858
|
+
return {
|
|
1859
|
+
...defaults,
|
|
1860
|
+
...formData
|
|
1861
|
+
};
|
|
1862
|
+
}
|
|
1757
1863
|
if (isObject(formData) || Array.isArray(formData)) {
|
|
1758
1864
|
const { mergeDefaultsIntoFormData } = experimental_defaultFormStateBehavior || {};
|
|
1759
1865
|
const defaultSupercedesUndefined = mergeDefaultsIntoFormData === "useDefaultIfFormDataUndefined";
|
|
@@ -1810,17 +1916,17 @@ function getDisplayLabel(validator, schema, uiSchema = {}, rootSchema, globalOpt
|
|
|
1810
1916
|
if (schemaType === "object") {
|
|
1811
1917
|
displayLabel = false;
|
|
1812
1918
|
}
|
|
1813
|
-
if (schemaType === "boolean" && !uiSchema[UI_WIDGET_KEY]) {
|
|
1919
|
+
if (schemaType === "boolean" && uiSchema && !uiSchema[UI_WIDGET_KEY]) {
|
|
1814
1920
|
displayLabel = false;
|
|
1815
1921
|
}
|
|
1816
|
-
if (uiSchema[UI_FIELD_KEY]) {
|
|
1922
|
+
if (uiSchema && uiSchema[UI_FIELD_KEY]) {
|
|
1817
1923
|
displayLabel = false;
|
|
1818
1924
|
}
|
|
1819
1925
|
return displayLabel;
|
|
1820
1926
|
}
|
|
1821
1927
|
|
|
1822
1928
|
// src/schema/sanitizeDataForNewSchema.ts
|
|
1823
|
-
import
|
|
1929
|
+
import get13 from "lodash/get";
|
|
1824
1930
|
import has5 from "lodash/has";
|
|
1825
1931
|
var NO_VALUE = Symbol("no Value");
|
|
1826
1932
|
function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, data = {}, experimental_customMergeAllOf) {
|
|
@@ -1828,19 +1934,19 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1828
1934
|
if (has5(newSchema, PROPERTIES_KEY)) {
|
|
1829
1935
|
const removeOldSchemaData = {};
|
|
1830
1936
|
if (has5(oldSchema, PROPERTIES_KEY)) {
|
|
1831
|
-
const properties =
|
|
1937
|
+
const properties = get13(oldSchema, PROPERTIES_KEY, {});
|
|
1832
1938
|
Object.keys(properties).forEach((key) => {
|
|
1833
1939
|
if (has5(data, key)) {
|
|
1834
1940
|
removeOldSchemaData[key] = void 0;
|
|
1835
1941
|
}
|
|
1836
1942
|
});
|
|
1837
1943
|
}
|
|
1838
|
-
const keys2 = Object.keys(
|
|
1944
|
+
const keys2 = Object.keys(get13(newSchema, PROPERTIES_KEY, {}));
|
|
1839
1945
|
const nestedData = {};
|
|
1840
1946
|
keys2.forEach((key) => {
|
|
1841
|
-
const formValue =
|
|
1842
|
-
let oldKeyedSchema =
|
|
1843
|
-
let newKeyedSchema =
|
|
1947
|
+
const formValue = get13(data, key);
|
|
1948
|
+
let oldKeyedSchema = get13(oldSchema, [PROPERTIES_KEY, key], {});
|
|
1949
|
+
let newKeyedSchema = get13(newSchema, [PROPERTIES_KEY, key], {});
|
|
1844
1950
|
if (has5(oldKeyedSchema, REF_KEY)) {
|
|
1845
1951
|
oldKeyedSchema = retrieveSchema(
|
|
1846
1952
|
validator,
|
|
@@ -1859,8 +1965,8 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1859
1965
|
experimental_customMergeAllOf
|
|
1860
1966
|
);
|
|
1861
1967
|
}
|
|
1862
|
-
const oldSchemaTypeForKey =
|
|
1863
|
-
const newSchemaTypeForKey =
|
|
1968
|
+
const oldSchemaTypeForKey = get13(oldKeyedSchema, "type");
|
|
1969
|
+
const newSchemaTypeForKey = get13(newKeyedSchema, "type");
|
|
1864
1970
|
if (!oldSchemaTypeForKey || oldSchemaTypeForKey === newSchemaTypeForKey) {
|
|
1865
1971
|
if (has5(removeOldSchemaData, key)) {
|
|
1866
1972
|
delete removeOldSchemaData[key];
|
|
@@ -1878,17 +1984,17 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1878
1984
|
nestedData[key] = itemData;
|
|
1879
1985
|
}
|
|
1880
1986
|
} else {
|
|
1881
|
-
const newOptionDefault =
|
|
1882
|
-
const oldOptionDefault =
|
|
1987
|
+
const newOptionDefault = get13(newKeyedSchema, "default", NO_VALUE);
|
|
1988
|
+
const oldOptionDefault = get13(oldKeyedSchema, "default", NO_VALUE);
|
|
1883
1989
|
if (newOptionDefault !== NO_VALUE && newOptionDefault !== formValue) {
|
|
1884
1990
|
if (oldOptionDefault === formValue) {
|
|
1885
1991
|
removeOldSchemaData[key] = newOptionDefault;
|
|
1886
|
-
} else if (
|
|
1992
|
+
} else if (get13(newKeyedSchema, "readOnly") === true) {
|
|
1887
1993
|
removeOldSchemaData[key] = void 0;
|
|
1888
1994
|
}
|
|
1889
1995
|
}
|
|
1890
|
-
const newOptionConst =
|
|
1891
|
-
const oldOptionConst =
|
|
1996
|
+
const newOptionConst = get13(newKeyedSchema, "const", NO_VALUE);
|
|
1997
|
+
const oldOptionConst = get13(oldKeyedSchema, "const", NO_VALUE);
|
|
1892
1998
|
if (newOptionConst !== NO_VALUE && newOptionConst !== formValue) {
|
|
1893
1999
|
removeOldSchemaData[key] = oldOptionConst === formValue ? newOptionConst : void 0;
|
|
1894
2000
|
}
|
|
@@ -1900,9 +2006,9 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1900
2006
|
...removeOldSchemaData,
|
|
1901
2007
|
...nestedData
|
|
1902
2008
|
};
|
|
1903
|
-
} else if (
|
|
1904
|
-
let oldSchemaItems =
|
|
1905
|
-
let newSchemaItems =
|
|
2009
|
+
} else if (get13(oldSchema, "type") === "array" && get13(newSchema, "type") === "array" && Array.isArray(data)) {
|
|
2010
|
+
let oldSchemaItems = get13(oldSchema, "items");
|
|
2011
|
+
let newSchemaItems = get13(newSchema, "items");
|
|
1906
2012
|
if (typeof oldSchemaItems === "object" && typeof newSchemaItems === "object" && !Array.isArray(oldSchemaItems) && !Array.isArray(newSchemaItems)) {
|
|
1907
2013
|
if (has5(oldSchemaItems, REF_KEY)) {
|
|
1908
2014
|
oldSchemaItems = retrieveSchema(
|
|
@@ -1922,10 +2028,10 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1922
2028
|
experimental_customMergeAllOf
|
|
1923
2029
|
);
|
|
1924
2030
|
}
|
|
1925
|
-
const oldSchemaType =
|
|
1926
|
-
const newSchemaType =
|
|
2031
|
+
const oldSchemaType = get13(oldSchemaItems, "type");
|
|
2032
|
+
const newSchemaType = get13(newSchemaItems, "type");
|
|
1927
2033
|
if (!oldSchemaType || oldSchemaType === newSchemaType) {
|
|
1928
|
-
const maxItems =
|
|
2034
|
+
const maxItems = get13(newSchema, "maxItems", -1);
|
|
1929
2035
|
if (newSchemaType === "object") {
|
|
1930
2036
|
newFormData = data.reduce((newValue, aValue) => {
|
|
1931
2037
|
const itemValue = sanitizeDataForNewSchema(
|
|
@@ -1952,78 +2058,6 @@ function sanitizeDataForNewSchema(validator, rootSchema, newSchema, oldSchema, d
|
|
|
1952
2058
|
return newFormData;
|
|
1953
2059
|
}
|
|
1954
2060
|
|
|
1955
|
-
// src/schema/toIdSchema.ts
|
|
1956
|
-
import get13 from "lodash/get";
|
|
1957
|
-
function toIdSchemaInternal(validator, schema, idPrefix, idSeparator, id, rootSchema, formData, _recurseList = [], experimental_customMergeAllOf) {
|
|
1958
|
-
const $id = id || idPrefix;
|
|
1959
|
-
const idSchema = { $id };
|
|
1960
|
-
if (typeof schema === "object") {
|
|
1961
|
-
if (REF_KEY in schema || DEPENDENCIES_KEY in schema || ALL_OF_KEY in schema) {
|
|
1962
|
-
const _schema = retrieveSchema(validator, schema, rootSchema, formData, experimental_customMergeAllOf);
|
|
1963
|
-
const sameSchemaIndex = _recurseList.findIndex((item) => deepEquals(item, _schema));
|
|
1964
|
-
if (sameSchemaIndex === -1) {
|
|
1965
|
-
return toIdSchemaInternal(
|
|
1966
|
-
validator,
|
|
1967
|
-
_schema,
|
|
1968
|
-
idPrefix,
|
|
1969
|
-
idSeparator,
|
|
1970
|
-
id,
|
|
1971
|
-
rootSchema,
|
|
1972
|
-
formData,
|
|
1973
|
-
_recurseList.concat(_schema),
|
|
1974
|
-
experimental_customMergeAllOf
|
|
1975
|
-
);
|
|
1976
|
-
}
|
|
1977
|
-
}
|
|
1978
|
-
if (ITEMS_KEY in schema && !get13(schema, [ITEMS_KEY, REF_KEY])) {
|
|
1979
|
-
return toIdSchemaInternal(
|
|
1980
|
-
validator,
|
|
1981
|
-
get13(schema, ITEMS_KEY),
|
|
1982
|
-
idPrefix,
|
|
1983
|
-
idSeparator,
|
|
1984
|
-
id,
|
|
1985
|
-
rootSchema,
|
|
1986
|
-
formData,
|
|
1987
|
-
_recurseList,
|
|
1988
|
-
experimental_customMergeAllOf
|
|
1989
|
-
);
|
|
1990
|
-
}
|
|
1991
|
-
if (getSchemaType(schema) === "object" && PROPERTIES_KEY in schema) {
|
|
1992
|
-
for (const name in schema.properties) {
|
|
1993
|
-
const field = schema[PROPERTIES_KEY][name];
|
|
1994
|
-
const fieldId = idSchema[ID_KEY] + idSeparator + name;
|
|
1995
|
-
idSchema[name] = toIdSchemaInternal(
|
|
1996
|
-
validator,
|
|
1997
|
-
field,
|
|
1998
|
-
idPrefix,
|
|
1999
|
-
idSeparator,
|
|
2000
|
-
fieldId,
|
|
2001
|
-
rootSchema,
|
|
2002
|
-
// It's possible that formData is not an object -- this can happen if an
|
|
2003
|
-
// array item has just been added, but not populated with data yet
|
|
2004
|
-
get13(formData, [name]),
|
|
2005
|
-
_recurseList,
|
|
2006
|
-
experimental_customMergeAllOf
|
|
2007
|
-
);
|
|
2008
|
-
}
|
|
2009
|
-
}
|
|
2010
|
-
}
|
|
2011
|
-
return idSchema;
|
|
2012
|
-
}
|
|
2013
|
-
function toIdSchema(validator, schema, id, rootSchema, formData, idPrefix = "root", idSeparator = "_", experimental_customMergeAllOf) {
|
|
2014
|
-
return toIdSchemaInternal(
|
|
2015
|
-
validator,
|
|
2016
|
-
schema,
|
|
2017
|
-
idPrefix,
|
|
2018
|
-
idSeparator,
|
|
2019
|
-
id,
|
|
2020
|
-
rootSchema,
|
|
2021
|
-
formData,
|
|
2022
|
-
void 0,
|
|
2023
|
-
experimental_customMergeAllOf
|
|
2024
|
-
);
|
|
2025
|
-
}
|
|
2026
|
-
|
|
2027
2061
|
// src/schema/toPathSchema.ts
|
|
2028
2062
|
import get14 from "lodash/get";
|
|
2029
2063
|
import set2 from "lodash/set";
|
|
@@ -2139,6 +2173,7 @@ function toPathSchema(validator, schema, name = "", rootSchema, formData, experi
|
|
|
2139
2173
|
}
|
|
2140
2174
|
|
|
2141
2175
|
// src/createSchemaUtils.ts
|
|
2176
|
+
import get15 from "lodash/get";
|
|
2142
2177
|
var SchemaUtils = class {
|
|
2143
2178
|
/** Constructs the `SchemaUtils` instance with the given `validator` and `rootSchema` stored as instance variables
|
|
2144
2179
|
*
|
|
@@ -2148,11 +2183,22 @@ var SchemaUtils = class {
|
|
|
2148
2183
|
* @param [experimental_customMergeAllOf] - Optional function that allows for custom merging of `allOf` schemas
|
|
2149
2184
|
*/
|
|
2150
2185
|
constructor(validator, rootSchema, experimental_defaultFormStateBehavior, experimental_customMergeAllOf) {
|
|
2151
|
-
|
|
2186
|
+
if (rootSchema && rootSchema[SCHEMA_KEY] === JSON_SCHEMA_DRAFT_2020_12) {
|
|
2187
|
+
this.rootSchema = makeAllReferencesAbsolute(rootSchema, get15(rootSchema, ID_KEY, "#"));
|
|
2188
|
+
} else {
|
|
2189
|
+
this.rootSchema = rootSchema;
|
|
2190
|
+
}
|
|
2152
2191
|
this.validator = validator;
|
|
2153
2192
|
this.experimental_defaultFormStateBehavior = experimental_defaultFormStateBehavior;
|
|
2154
2193
|
this.experimental_customMergeAllOf = experimental_customMergeAllOf;
|
|
2155
2194
|
}
|
|
2195
|
+
/** Returns the `rootSchema` in the `SchemaUtilsType`
|
|
2196
|
+
*
|
|
2197
|
+
* @returns - The `rootSchema`
|
|
2198
|
+
*/
|
|
2199
|
+
getRootSchema() {
|
|
2200
|
+
return this.rootSchema;
|
|
2201
|
+
}
|
|
2156
2202
|
/** Returns the `ValidatorType` in the `SchemaUtilsType`
|
|
2157
2203
|
*
|
|
2158
2204
|
* @returns - The `ValidatorType`
|
|
@@ -2225,9 +2271,10 @@ var SchemaUtils = class {
|
|
|
2225
2271
|
* @param [includeUndefinedValues=false] - Optional flag, if true, cause undefined values to be added as defaults.
|
|
2226
2272
|
* If "excludeObjectChildren", pass `includeUndefinedValues` as false when computing defaults for any nested
|
|
2227
2273
|
* object properties.
|
|
2274
|
+
* @param initialDefaultsGenerated - Indicates whether or not initial defaults have been generated
|
|
2228
2275
|
* @returns - The resulting `formData` with all the defaults provided
|
|
2229
2276
|
*/
|
|
2230
|
-
getDefaultFormState(schema, formData, includeUndefinedValues = false) {
|
|
2277
|
+
getDefaultFormState(schema, formData, includeUndefinedValues = false, initialDefaultsGenerated) {
|
|
2231
2278
|
return getDefaultFormState(
|
|
2232
2279
|
this.validator,
|
|
2233
2280
|
schema,
|
|
@@ -2235,7 +2282,8 @@ var SchemaUtils = class {
|
|
|
2235
2282
|
this.rootSchema,
|
|
2236
2283
|
includeUndefinedValues,
|
|
2237
2284
|
this.experimental_defaultFormStateBehavior,
|
|
2238
|
-
this.experimental_customMergeAllOf
|
|
2285
|
+
this.experimental_customMergeAllOf,
|
|
2286
|
+
initialDefaultsGenerated
|
|
2239
2287
|
);
|
|
2240
2288
|
}
|
|
2241
2289
|
/** Determines whether the combination of `schema` and `uiSchema` properties indicates that the label for the `schema`
|
|
@@ -2334,15 +2382,17 @@ var SchemaUtils = class {
|
|
|
2334
2382
|
*
|
|
2335
2383
|
* @param schema - The schema for which retrieving a schema is desired
|
|
2336
2384
|
* @param [rawFormData] - The current formData, if any, to assist retrieving a schema
|
|
2385
|
+
* @param [resolveAnyOfOrOneOfRefs] - Optional flag indicating whether to resolved refs in anyOf/oneOf lists
|
|
2337
2386
|
* @returns - The schema having its conditions, additional properties, references and dependencies resolved
|
|
2338
2387
|
*/
|
|
2339
|
-
retrieveSchema(schema, rawFormData) {
|
|
2388
|
+
retrieveSchema(schema, rawFormData, resolveAnyOfOrOneOfRefs) {
|
|
2340
2389
|
return retrieveSchema(
|
|
2341
2390
|
this.validator,
|
|
2342
2391
|
schema,
|
|
2343
2392
|
this.rootSchema,
|
|
2344
2393
|
rawFormData,
|
|
2345
|
-
this.experimental_customMergeAllOf
|
|
2394
|
+
this.experimental_customMergeAllOf,
|
|
2395
|
+
resolveAnyOfOrOneOfRefs
|
|
2346
2396
|
);
|
|
2347
2397
|
}
|
|
2348
2398
|
/** Sanitize the `data` associated with the `oldSchema` so it is considered appropriate for the `newSchema`. If the
|
|
@@ -2366,27 +2416,6 @@ var SchemaUtils = class {
|
|
|
2366
2416
|
this.experimental_customMergeAllOf
|
|
2367
2417
|
);
|
|
2368
2418
|
}
|
|
2369
|
-
/** Generates an `IdSchema` object for the `schema`, recursively
|
|
2370
|
-
*
|
|
2371
|
-
* @param schema - The schema for which the display label flag is desired
|
|
2372
|
-
* @param [id] - The base id for the schema
|
|
2373
|
-
* @param [formData] - The current formData, if any, onto which to provide any missing defaults
|
|
2374
|
-
* @param [idPrefix='root'] - The prefix to use for the id
|
|
2375
|
-
* @param [idSeparator='_'] - The separator to use for the path segments in the id
|
|
2376
|
-
* @returns - The `IdSchema` object for the `schema`
|
|
2377
|
-
*/
|
|
2378
|
-
toIdSchema(schema, id, formData, idPrefix = "root", idSeparator = "_") {
|
|
2379
|
-
return toIdSchema(
|
|
2380
|
-
this.validator,
|
|
2381
|
-
schema,
|
|
2382
|
-
id,
|
|
2383
|
-
this.rootSchema,
|
|
2384
|
-
formData,
|
|
2385
|
-
idPrefix,
|
|
2386
|
-
idSeparator,
|
|
2387
|
-
this.experimental_customMergeAllOf
|
|
2388
|
-
);
|
|
2389
|
-
}
|
|
2390
2419
|
/** Generates an `PathSchema` object for the `schema`, recursively
|
|
2391
2420
|
*
|
|
2392
2421
|
* @param schema - The schema for which the display label flag is desired
|
|
@@ -2472,6 +2501,31 @@ function dateRangeOptions(start, stop) {
|
|
|
2472
2501
|
return options;
|
|
2473
2502
|
}
|
|
2474
2503
|
|
|
2504
|
+
// src/shallowEquals.ts
|
|
2505
|
+
function shallowEquals(a, b) {
|
|
2506
|
+
if (Object.is(a, b)) {
|
|
2507
|
+
return true;
|
|
2508
|
+
}
|
|
2509
|
+
if (a == null || b == null) {
|
|
2510
|
+
return false;
|
|
2511
|
+
}
|
|
2512
|
+
if (typeof a !== "object" || typeof b !== "object") {
|
|
2513
|
+
return false;
|
|
2514
|
+
}
|
|
2515
|
+
const keysA = Object.keys(a);
|
|
2516
|
+
const keysB = Object.keys(b);
|
|
2517
|
+
if (keysA.length !== keysB.length) {
|
|
2518
|
+
return false;
|
|
2519
|
+
}
|
|
2520
|
+
for (let i = 0; i < keysA.length; i++) {
|
|
2521
|
+
const key = keysA[i];
|
|
2522
|
+
if (!Object.prototype.hasOwnProperty.call(b, key) || !Object.is(a[key], b[key])) {
|
|
2523
|
+
return false;
|
|
2524
|
+
}
|
|
2525
|
+
}
|
|
2526
|
+
return true;
|
|
2527
|
+
}
|
|
2528
|
+
|
|
2475
2529
|
// src/replaceStringParameters.ts
|
|
2476
2530
|
function replaceStringParameters(inputString, params) {
|
|
2477
2531
|
let output = inputString;
|
|
@@ -2544,7 +2598,7 @@ function enumOptionsSelectValue(valueIndex, selected, allEnumOptions = []) {
|
|
|
2544
2598
|
|
|
2545
2599
|
// src/ErrorSchemaBuilder.ts
|
|
2546
2600
|
import cloneDeep from "lodash/cloneDeep";
|
|
2547
|
-
import
|
|
2601
|
+
import get16 from "lodash/get";
|
|
2548
2602
|
import set3 from "lodash/set";
|
|
2549
2603
|
import setWith from "lodash/setWith";
|
|
2550
2604
|
var ErrorSchemaBuilder = class {
|
|
@@ -2573,7 +2627,7 @@ var ErrorSchemaBuilder = class {
|
|
|
2573
2627
|
*/
|
|
2574
2628
|
getOrCreateErrorBlock(pathOfError) {
|
|
2575
2629
|
const hasPath = Array.isArray(pathOfError) && pathOfError.length > 0 || typeof pathOfError === "string";
|
|
2576
|
-
let errorBlock = hasPath ?
|
|
2630
|
+
let errorBlock = hasPath ? get16(this.errorSchema, pathOfError) : this.errorSchema;
|
|
2577
2631
|
if (!errorBlock && pathOfError) {
|
|
2578
2632
|
errorBlock = {};
|
|
2579
2633
|
setWith(this.errorSchema, pathOfError, errorBlock, Object);
|
|
@@ -2599,7 +2653,7 @@ var ErrorSchemaBuilder = class {
|
|
|
2599
2653
|
*/
|
|
2600
2654
|
addErrors(errorOrList, pathOfError) {
|
|
2601
2655
|
const errorBlock = this.getOrCreateErrorBlock(pathOfError);
|
|
2602
|
-
let errorsList =
|
|
2656
|
+
let errorsList = get16(errorBlock, ERRORS_KEY);
|
|
2603
2657
|
if (!Array.isArray(errorsList)) {
|
|
2604
2658
|
errorsList = [];
|
|
2605
2659
|
errorBlock[ERRORS_KEY] = errorsList;
|
|
@@ -2639,6 +2693,29 @@ var ErrorSchemaBuilder = class {
|
|
|
2639
2693
|
}
|
|
2640
2694
|
};
|
|
2641
2695
|
|
|
2696
|
+
// src/getChangedFields.ts
|
|
2697
|
+
import keys from "lodash/keys";
|
|
2698
|
+
import pickBy from "lodash/pickBy";
|
|
2699
|
+
import isPlainObject2 from "lodash/isPlainObject";
|
|
2700
|
+
import get17 from "lodash/get";
|
|
2701
|
+
import difference from "lodash/difference";
|
|
2702
|
+
function getChangedFields(a, b) {
|
|
2703
|
+
const aIsPlainObject = isPlainObject2(a);
|
|
2704
|
+
const bIsPlainObject = isPlainObject2(b);
|
|
2705
|
+
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
2706
|
+
return [];
|
|
2707
|
+
}
|
|
2708
|
+
if (aIsPlainObject && !bIsPlainObject) {
|
|
2709
|
+
return keys(a);
|
|
2710
|
+
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
2711
|
+
return keys(b);
|
|
2712
|
+
} else {
|
|
2713
|
+
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals(value, get17(b, key))));
|
|
2714
|
+
const diffFields = difference(keys(b), keys(a));
|
|
2715
|
+
return [...unequalFields, ...diffFields];
|
|
2716
|
+
}
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2642
2719
|
// src/getDateElementProps.ts
|
|
2643
2720
|
function getDateElementProps(date, time, yearRange = [1900, (/* @__PURE__ */ new Date()).getFullYear() + 2], format = "YMD") {
|
|
2644
2721
|
const { day, month, year, hour, minute, second } = date;
|
|
@@ -2747,10 +2824,10 @@ function getTemplate(name, registry, uiOptions = {}) {
|
|
|
2747
2824
|
}
|
|
2748
2825
|
|
|
2749
2826
|
// src/getTestIds.ts
|
|
2750
|
-
import
|
|
2751
|
-
import
|
|
2827
|
+
import get18 from "lodash/get";
|
|
2828
|
+
import uniqueId from "lodash/uniqueId";
|
|
2752
2829
|
function getTestIds() {
|
|
2753
|
-
if (typeof process === "undefined" ||
|
|
2830
|
+
if (typeof process === "undefined" || get18(process, "env.NODE_ENV") !== "test") {
|
|
2754
2831
|
return {};
|
|
2755
2832
|
}
|
|
2756
2833
|
const ids = /* @__PURE__ */ new Map();
|
|
@@ -2759,7 +2836,7 @@ function getTestIds() {
|
|
|
2759
2836
|
{
|
|
2760
2837
|
get(_obj, prop) {
|
|
2761
2838
|
if (!ids.has(prop)) {
|
|
2762
|
-
ids.set(prop,
|
|
2839
|
+
ids.set(prop, uniqueId("test-id-"));
|
|
2763
2840
|
}
|
|
2764
2841
|
return ids.get(prop);
|
|
2765
2842
|
}
|
|
@@ -2770,7 +2847,7 @@ function getTestIds() {
|
|
|
2770
2847
|
// src/getWidget.tsx
|
|
2771
2848
|
import { createElement } from "react";
|
|
2772
2849
|
import ReactIs from "react-is";
|
|
2773
|
-
import
|
|
2850
|
+
import get19 from "lodash/get";
|
|
2774
2851
|
import set4 from "lodash/set";
|
|
2775
2852
|
import { jsx } from "react/jsx-runtime";
|
|
2776
2853
|
var widgetMap = {
|
|
@@ -2826,7 +2903,7 @@ var widgetMap = {
|
|
|
2826
2903
|
}
|
|
2827
2904
|
};
|
|
2828
2905
|
function mergeWidgetOptions(AWidget) {
|
|
2829
|
-
let MergedWidget =
|
|
2906
|
+
let MergedWidget = get19(AWidget, "MergedWidget");
|
|
2830
2907
|
if (!MergedWidget) {
|
|
2831
2908
|
const defaultOptions = AWidget.defaultProps && AWidget.defaultProps.options || {};
|
|
2832
2909
|
MergedWidget = ({ options, ...props }) => {
|
|
@@ -2842,7 +2919,7 @@ function getWidget(schema, widget, registeredWidgets = {}) {
|
|
|
2842
2919
|
return mergeWidgetOptions(widget);
|
|
2843
2920
|
}
|
|
2844
2921
|
if (typeof widget !== "string") {
|
|
2845
|
-
throw new Error(`Unsupported widget definition: ${typeof widget}`);
|
|
2922
|
+
throw new Error(`Unsupported widget definition: ${typeof widget} in schema: ${JSON.stringify(schema)}`);
|
|
2846
2923
|
}
|
|
2847
2924
|
if (widget in registeredWidgets) {
|
|
2848
2925
|
const registeredWidget = registeredWidgets[widget];
|
|
@@ -2850,14 +2927,14 @@ function getWidget(schema, widget, registeredWidgets = {}) {
|
|
|
2850
2927
|
}
|
|
2851
2928
|
if (typeof type === "string") {
|
|
2852
2929
|
if (!(type in widgetMap)) {
|
|
2853
|
-
throw new Error(`No widget for type '${type}'`);
|
|
2930
|
+
throw new Error(`No widget for type '${type}' in schema: ${JSON.stringify(schema)}`);
|
|
2854
2931
|
}
|
|
2855
2932
|
if (widget in widgetMap[type]) {
|
|
2856
2933
|
const registeredWidget = registeredWidgets[widgetMap[type][widget]];
|
|
2857
2934
|
return getWidget(schema, registeredWidget, registeredWidgets);
|
|
2858
2935
|
}
|
|
2859
2936
|
}
|
|
2860
|
-
throw new Error(`No widget '${widget}' for type '${type}'`);
|
|
2937
|
+
throw new Error(`No widget '${widget}' for type '${type}' in schema: ${JSON.stringify(schema)}`);
|
|
2861
2938
|
}
|
|
2862
2939
|
|
|
2863
2940
|
// src/hashForSchema.ts
|
|
@@ -2927,6 +3004,31 @@ function optionId(id, optionIndex) {
|
|
|
2927
3004
|
function buttonId(id, btn) {
|
|
2928
3005
|
return idGenerator(id, btn);
|
|
2929
3006
|
}
|
|
3007
|
+
function optionalControlsId(id, element) {
|
|
3008
|
+
return idGenerator(id, `optional${element}`);
|
|
3009
|
+
}
|
|
3010
|
+
|
|
3011
|
+
// src/isFormDataAvailable.ts
|
|
3012
|
+
import isNil3 from "lodash/isNil";
|
|
3013
|
+
import isEmpty5 from "lodash/isEmpty";
|
|
3014
|
+
import isObject4 from "lodash/isObject";
|
|
3015
|
+
function isFormDataAvailable(formData) {
|
|
3016
|
+
return !isNil3(formData) && (!isObject4(formData) || Array.isArray(formData) || !isEmpty5(formData));
|
|
3017
|
+
}
|
|
3018
|
+
|
|
3019
|
+
// src/isRootSchema.ts
|
|
3020
|
+
import isEqual2 from "lodash/isEqual";
|
|
3021
|
+
function isRootSchema(registry, schemaToCompare) {
|
|
3022
|
+
const { rootSchema, schemaUtils } = registry;
|
|
3023
|
+
if (isEqual2(schemaToCompare, rootSchema)) {
|
|
3024
|
+
return true;
|
|
3025
|
+
}
|
|
3026
|
+
if (REF_KEY in rootSchema) {
|
|
3027
|
+
const resolvedSchema = schemaUtils.retrieveSchema(rootSchema);
|
|
3028
|
+
return isEqual2(schemaToCompare, resolvedSchema);
|
|
3029
|
+
}
|
|
3030
|
+
return false;
|
|
3031
|
+
}
|
|
2930
3032
|
|
|
2931
3033
|
// src/labelValue.ts
|
|
2932
3034
|
function labelValue(label, hideLabel, fallback) {
|
|
@@ -2939,14 +3041,14 @@ function localToUTC(dateString) {
|
|
|
2939
3041
|
}
|
|
2940
3042
|
|
|
2941
3043
|
// src/lookupFromFormContext.ts
|
|
2942
|
-
import
|
|
3044
|
+
import get20 from "lodash/get";
|
|
2943
3045
|
import has6 from "lodash/has";
|
|
2944
3046
|
function lookupFromFormContext(regOrFc, toLookup, fallback) {
|
|
2945
3047
|
const lookupPath = [LOOKUP_MAP_NAME];
|
|
2946
3048
|
if (has6(regOrFc, FORM_CONTEXT_NAME)) {
|
|
2947
3049
|
lookupPath.unshift(FORM_CONTEXT_NAME);
|
|
2948
3050
|
}
|
|
2949
|
-
return
|
|
3051
|
+
return get20(regOrFc, [...lookupPath, toLookup], fallback);
|
|
2950
3052
|
}
|
|
2951
3053
|
|
|
2952
3054
|
// src/orderProperties.ts
|
|
@@ -3027,11 +3129,40 @@ function schemaRequiresTrueValue(schema) {
|
|
|
3027
3129
|
}
|
|
3028
3130
|
|
|
3029
3131
|
// src/shouldRender.ts
|
|
3030
|
-
function shouldRender(component, nextProps, nextState) {
|
|
3132
|
+
function shouldRender(component, nextProps, nextState, updateStrategy = "customDeep") {
|
|
3133
|
+
if (updateStrategy === "always") {
|
|
3134
|
+
return true;
|
|
3135
|
+
}
|
|
3136
|
+
if (updateStrategy === "shallow") {
|
|
3137
|
+
const { props: props2, state: state2 } = component;
|
|
3138
|
+
return !shallowEquals(props2, nextProps) || !shallowEquals(state2, nextState);
|
|
3139
|
+
}
|
|
3031
3140
|
const { props, state } = component;
|
|
3032
3141
|
return !deepEquals(props, nextProps) || !deepEquals(state, nextState);
|
|
3033
3142
|
}
|
|
3034
3143
|
|
|
3144
|
+
// src/shouldRenderOptionalField.ts
|
|
3145
|
+
import isObject5 from "lodash/isObject";
|
|
3146
|
+
import uniq2 from "lodash/uniq";
|
|
3147
|
+
function getSchemaTypesForXxxOf(schemas) {
|
|
3148
|
+
const allTypes = uniq2(
|
|
3149
|
+
schemas.map((s) => isObject5(s) ? getSchemaType(s) : void 0).flat().filter((t) => t !== void 0)
|
|
3150
|
+
);
|
|
3151
|
+
return allTypes.length === 1 ? allTypes[0] : allTypes;
|
|
3152
|
+
}
|
|
3153
|
+
function shouldRenderOptionalField(registry, schema, required, uiSchema) {
|
|
3154
|
+
const { enableOptionalDataFieldForType = [] } = getUiOptions(uiSchema, registry.globalUiOptions);
|
|
3155
|
+
let schemaType;
|
|
3156
|
+
if (ANY_OF_KEY in schema && Array.isArray(schema[ANY_OF_KEY])) {
|
|
3157
|
+
schemaType = getSchemaTypesForXxxOf(schema[ANY_OF_KEY]);
|
|
3158
|
+
} else if (ONE_OF_KEY in schema && Array.isArray(schema[ONE_OF_KEY])) {
|
|
3159
|
+
schemaType = getSchemaTypesForXxxOf(schema[ONE_OF_KEY]);
|
|
3160
|
+
} else {
|
|
3161
|
+
schemaType = getSchemaType(schema);
|
|
3162
|
+
}
|
|
3163
|
+
return !isRootSchema(registry, schema) && !required && !!schemaType && !Array.isArray(schemaType) && !!enableOptionalDataFieldForType.find((val) => val === schemaType);
|
|
3164
|
+
}
|
|
3165
|
+
|
|
3035
3166
|
// src/toDateString.ts
|
|
3036
3167
|
function toDateString(dateObject, time = true) {
|
|
3037
3168
|
const { year, month, day, hour = 0, minute = 0, second = 0 } = dateObject;
|
|
@@ -3041,7 +3172,7 @@ function toDateString(dateObject, time = true) {
|
|
|
3041
3172
|
}
|
|
3042
3173
|
|
|
3043
3174
|
// src/toErrorList.ts
|
|
3044
|
-
import
|
|
3175
|
+
import isPlainObject3 from "lodash/isPlainObject";
|
|
3045
3176
|
function toErrorList(errorSchema, fieldPath = []) {
|
|
3046
3177
|
if (!errorSchema) {
|
|
3047
3178
|
return [];
|
|
@@ -3062,7 +3193,7 @@ function toErrorList(errorSchema, fieldPath = []) {
|
|
|
3062
3193
|
return Object.keys(errorSchema).reduce((acc, key) => {
|
|
3063
3194
|
if (key !== ERRORS_KEY) {
|
|
3064
3195
|
const childSchema = errorSchema[key];
|
|
3065
|
-
if (
|
|
3196
|
+
if (isPlainObject3(childSchema)) {
|
|
3066
3197
|
acc = acc.concat(toErrorList(childSchema, [...fieldPath, key]));
|
|
3067
3198
|
}
|
|
3068
3199
|
}
|
|
@@ -3089,15 +3220,24 @@ function toErrorSchema(errors) {
|
|
|
3089
3220
|
return builder.ErrorSchema;
|
|
3090
3221
|
}
|
|
3091
3222
|
|
|
3223
|
+
// src/toFieldPathId.ts
|
|
3224
|
+
function toFieldPathId(fieldPath, globalFormOptions, parentPath) {
|
|
3225
|
+
const basePath = Array.isArray(parentPath) ? parentPath : parentPath?.path;
|
|
3226
|
+
const childPath = fieldPath === "" ? [] : [fieldPath];
|
|
3227
|
+
const path = basePath ? basePath.concat(...childPath) : childPath;
|
|
3228
|
+
const id = [globalFormOptions.idPrefix, ...path].join(globalFormOptions.idSeparator);
|
|
3229
|
+
return { path, [ID_KEY]: id };
|
|
3230
|
+
}
|
|
3231
|
+
|
|
3092
3232
|
// src/unwrapErrorHandler.ts
|
|
3093
|
-
import
|
|
3233
|
+
import isPlainObject4 from "lodash/isPlainObject";
|
|
3094
3234
|
function unwrapErrorHandler(errorHandler) {
|
|
3095
3235
|
return Object.keys(errorHandler).reduce((acc, key) => {
|
|
3096
3236
|
if (key === "addError") {
|
|
3097
3237
|
return acc;
|
|
3098
3238
|
} else {
|
|
3099
3239
|
const childSchema = errorHandler[key];
|
|
3100
|
-
if (
|
|
3240
|
+
if (isPlainObject4(childSchema)) {
|
|
3101
3241
|
return {
|
|
3102
3242
|
...acc,
|
|
3103
3243
|
[key]: unwrapErrorHandler(childSchema)
|
|
@@ -3125,23 +3265,27 @@ function utcToLocal(jsonDate) {
|
|
|
3125
3265
|
}
|
|
3126
3266
|
|
|
3127
3267
|
// src/validationDataMerge.ts
|
|
3128
|
-
import
|
|
3129
|
-
function validationDataMerge(validationData, additionalErrorSchema) {
|
|
3268
|
+
import isEmpty6 from "lodash/isEmpty";
|
|
3269
|
+
function validationDataMerge(validationData, additionalErrorSchema, preventDuplicates = false) {
|
|
3130
3270
|
if (!additionalErrorSchema) {
|
|
3131
3271
|
return validationData;
|
|
3132
3272
|
}
|
|
3133
3273
|
const { errors: oldErrors, errorSchema: oldErrorSchema } = validationData;
|
|
3134
3274
|
let errors = toErrorList(additionalErrorSchema);
|
|
3135
3275
|
let errorSchema = additionalErrorSchema;
|
|
3136
|
-
if (!
|
|
3137
|
-
errorSchema = mergeObjects(
|
|
3276
|
+
if (!isEmpty6(oldErrorSchema)) {
|
|
3277
|
+
errorSchema = mergeObjects(
|
|
3278
|
+
oldErrorSchema,
|
|
3279
|
+
additionalErrorSchema,
|
|
3280
|
+
preventDuplicates ? "preventDuplicates" : true
|
|
3281
|
+
);
|
|
3138
3282
|
errors = [...oldErrors].concat(errors);
|
|
3139
3283
|
}
|
|
3140
3284
|
return { errorSchema, errors };
|
|
3141
3285
|
}
|
|
3142
3286
|
|
|
3143
3287
|
// src/withIdRefPrefix.ts
|
|
3144
|
-
import
|
|
3288
|
+
import isObject6 from "lodash/isObject";
|
|
3145
3289
|
function withIdRefPrefixObject(node) {
|
|
3146
3290
|
for (const key in node) {
|
|
3147
3291
|
const realObj = node;
|
|
@@ -3164,35 +3308,12 @@ function withIdRefPrefix(schemaNode) {
|
|
|
3164
3308
|
if (Array.isArray(schemaNode)) {
|
|
3165
3309
|
return withIdRefPrefixArray([...schemaNode]);
|
|
3166
3310
|
}
|
|
3167
|
-
if (
|
|
3311
|
+
if (isObject6(schemaNode)) {
|
|
3168
3312
|
return withIdRefPrefixObject({ ...schemaNode });
|
|
3169
3313
|
}
|
|
3170
3314
|
return schemaNode;
|
|
3171
3315
|
}
|
|
3172
3316
|
|
|
3173
|
-
// src/getChangedFields.ts
|
|
3174
|
-
import keys from "lodash/keys";
|
|
3175
|
-
import pickBy from "lodash/pickBy";
|
|
3176
|
-
import isPlainObject4 from "lodash/isPlainObject";
|
|
3177
|
-
import get19 from "lodash/get";
|
|
3178
|
-
import difference from "lodash/difference";
|
|
3179
|
-
function getChangedFields(a, b) {
|
|
3180
|
-
const aIsPlainObject = isPlainObject4(a);
|
|
3181
|
-
const bIsPlainObject = isPlainObject4(b);
|
|
3182
|
-
if (a === b || !aIsPlainObject && !bIsPlainObject) {
|
|
3183
|
-
return [];
|
|
3184
|
-
}
|
|
3185
|
-
if (aIsPlainObject && !bIsPlainObject) {
|
|
3186
|
-
return keys(a);
|
|
3187
|
-
} else if (!aIsPlainObject && bIsPlainObject) {
|
|
3188
|
-
return keys(b);
|
|
3189
|
-
} else {
|
|
3190
|
-
const unequalFields = keys(pickBy(a, (value, key) => !deepEquals(value, get19(b, key))));
|
|
3191
|
-
const diffFields = difference(keys(b), keys(a));
|
|
3192
|
-
return [...unequalFields, ...diffFields];
|
|
3193
|
-
}
|
|
3194
|
-
}
|
|
3195
|
-
|
|
3196
3317
|
// src/enums.ts
|
|
3197
3318
|
var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
3198
3319
|
TranslatableString2["ArrayItemTitle"] = "Item";
|
|
@@ -3215,6 +3336,9 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3215
3336
|
TranslatableString2["PreviewLabel"] = "Preview";
|
|
3216
3337
|
TranslatableString2["DecrementAriaLabel"] = "Decrease value by 1";
|
|
3217
3338
|
TranslatableString2["IncrementAriaLabel"] = "Increase value by 1";
|
|
3339
|
+
TranslatableString2["OptionalObjectAdd"] = "Add data for optional field";
|
|
3340
|
+
TranslatableString2["OptionalObjectRemove"] = "Remove data for optional field";
|
|
3341
|
+
TranslatableString2["OptionalObjectEmptyMsg"] = "No data for optional field";
|
|
3218
3342
|
TranslatableString2["UnknownFieldType"] = "Unknown field type %1";
|
|
3219
3343
|
TranslatableString2["OptionPrefix"] = "Option %1";
|
|
3220
3344
|
TranslatableString2["TitleOptionPrefix"] = "%1 option %2";
|
|
@@ -3232,7 +3356,7 @@ var TranslatableString = /* @__PURE__ */ ((TranslatableString2) => {
|
|
|
3232
3356
|
import forEach from "lodash/forEach";
|
|
3233
3357
|
|
|
3234
3358
|
// src/parser/ParserValidator.ts
|
|
3235
|
-
import
|
|
3359
|
+
import get21 from "lodash/get";
|
|
3236
3360
|
var ParserValidator = class {
|
|
3237
3361
|
/** Construct the ParserValidator for the given `rootSchema`. This `rootSchema` will be stashed in the `schemaMap`
|
|
3238
3362
|
* first.
|
|
@@ -3258,7 +3382,7 @@ var ParserValidator = class {
|
|
|
3258
3382
|
* @param hash - The hash value at which to map the schema
|
|
3259
3383
|
*/
|
|
3260
3384
|
addSchema(schema, hash) {
|
|
3261
|
-
const key =
|
|
3385
|
+
const key = get21(schema, ID_KEY, hash);
|
|
3262
3386
|
const identifiedSchema = { ...schema, [ID_KEY]: key };
|
|
3263
3387
|
const existing = this.schemaMap[key];
|
|
3264
3388
|
if (!existing) {
|
|
@@ -3354,6 +3478,8 @@ export {
|
|
|
3354
3478
|
ALL_OF_KEY,
|
|
3355
3479
|
ANY_OF_KEY,
|
|
3356
3480
|
CONST_KEY,
|
|
3481
|
+
DEFAULT_ID_PREFIX,
|
|
3482
|
+
DEFAULT_ID_SEPARATOR,
|
|
3357
3483
|
DEFAULT_KEY,
|
|
3358
3484
|
DEFINITIONS_KEY,
|
|
3359
3485
|
DEPENDENCIES_KEY,
|
|
@@ -3365,6 +3491,7 @@ export {
|
|
|
3365
3491
|
ID_KEY,
|
|
3366
3492
|
IF_KEY,
|
|
3367
3493
|
ITEMS_KEY,
|
|
3494
|
+
JSON_SCHEMA_DRAFT_2019_09,
|
|
3368
3495
|
JSON_SCHEMA_DRAFT_2020_12,
|
|
3369
3496
|
JUNK_OPTION_ID,
|
|
3370
3497
|
LOOKUP_MAP_NAME,
|
|
@@ -3432,8 +3559,10 @@ export {
|
|
|
3432
3559
|
isCustomWidget,
|
|
3433
3560
|
isFilesArray,
|
|
3434
3561
|
isFixedItems,
|
|
3562
|
+
isFormDataAvailable,
|
|
3435
3563
|
isMultiSelect,
|
|
3436
3564
|
isObject,
|
|
3565
|
+
isRootSchema,
|
|
3437
3566
|
isSelect,
|
|
3438
3567
|
labelValue,
|
|
3439
3568
|
localToUTC,
|
|
@@ -3442,6 +3571,7 @@ export {
|
|
|
3442
3571
|
mergeObjects,
|
|
3443
3572
|
mergeSchemas,
|
|
3444
3573
|
optionId,
|
|
3574
|
+
optionalControlsId,
|
|
3445
3575
|
optionsList,
|
|
3446
3576
|
orderProperties,
|
|
3447
3577
|
pad,
|
|
@@ -3452,14 +3582,16 @@ export {
|
|
|
3452
3582
|
sanitizeDataForNewSchema,
|
|
3453
3583
|
schemaParser,
|
|
3454
3584
|
schemaRequiresTrueValue,
|
|
3585
|
+
shallowEquals,
|
|
3455
3586
|
shouldRender,
|
|
3587
|
+
shouldRenderOptionalField,
|
|
3456
3588
|
sortedJSONStringify,
|
|
3457
3589
|
titleId,
|
|
3458
3590
|
toConstant,
|
|
3459
3591
|
toDateString,
|
|
3460
3592
|
toErrorList,
|
|
3461
3593
|
toErrorSchema,
|
|
3462
|
-
|
|
3594
|
+
toFieldPathId,
|
|
3463
3595
|
toPathSchema,
|
|
3464
3596
|
unwrapErrorHandler,
|
|
3465
3597
|
utcToLocal,
|