@jsonforms/core 3.0.0-beta.1 → 3.0.0-beta.4

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.
Files changed (115) hide show
  1. package/README.md +11 -0
  2. package/docs/assets/js/search.json +1 -1
  3. package/docs/enums/ruleeffect.html +4 -4
  4. package/docs/globals.html +357 -217
  5. package/docs/index.html +29 -4
  6. package/docs/interfaces/addcellrendereraction.html +3 -3
  7. package/docs/interfaces/addrendereraction.html +3 -3
  8. package/docs/interfaces/adduischemaaction.html +3 -3
  9. package/docs/interfaces/andcondition.html +2 -2
  10. package/docs/interfaces/arraycontrolprops.html +21 -21
  11. package/docs/interfaces/arraylayoutprops.html +21 -21
  12. package/docs/interfaces/categorization.html +5 -5
  13. package/docs/interfaces/category.html +5 -5
  14. package/docs/interfaces/cellprops.html +12 -12
  15. package/docs/interfaces/combinatorrendererprops.html +143 -36
  16. package/docs/interfaces/composablecondition.html +2 -2
  17. package/docs/interfaces/condition.html +1 -1
  18. package/docs/interfaces/controlelement.html +22 -4
  19. package/docs/interfaces/controlprops.html +16 -16
  20. package/docs/interfaces/controlstate.html +2 -2
  21. package/docs/interfaces/controlwithdetailprops.html +17 -17
  22. package/docs/interfaces/dispatchcellprops.html +10 -10
  23. package/docs/interfaces/dispatchcellstateprops.html +10 -10
  24. package/docs/interfaces/dispatchpropsofarraycontrol.html +4 -4
  25. package/docs/interfaces/dispatchpropsofcontrol.html +1 -1
  26. package/docs/interfaces/dispatchpropsofmultienumcontrol.html +2 -2
  27. package/docs/interfaces/enumcellprops.html +13 -13
  28. package/docs/interfaces/enumoption.html +2 -2
  29. package/docs/interfaces/grouplayout.html +5 -5
  30. package/docs/interfaces/horizontallayout.html +4 -4
  31. package/docs/interfaces/initactionoptions.html +14 -0
  32. package/docs/interfaces/internationalizable.html +167 -0
  33. package/docs/interfaces/jsonformscore.html +17 -3
  34. package/docs/interfaces/jsonformsprops.html +9 -9
  35. package/docs/interfaces/labeldescription.html +2 -2
  36. package/docs/interfaces/labelelement.html +4 -4
  37. package/docs/interfaces/layout.html +4 -4
  38. package/docs/interfaces/layoutprops.html +10 -10
  39. package/docs/interfaces/leafcondition.html +2 -2
  40. package/docs/interfaces/orcondition.html +2 -2
  41. package/docs/interfaces/ownpropsofcell.html +9 -9
  42. package/docs/interfaces/ownpropsofcontrol.html +9 -12
  43. package/docs/interfaces/ownpropsofenum.html +1 -1
  44. package/docs/interfaces/ownpropsofenumcell.html +10 -10
  45. package/docs/interfaces/ownpropsofjsonformsrenderer.html +8 -8
  46. package/docs/interfaces/ownpropsoflayout.html +9 -9
  47. package/docs/interfaces/ownpropsofmasterlistitem.html +6 -6
  48. package/docs/interfaces/ownpropsofrenderer.html +8 -8
  49. package/docs/interfaces/registerdefaultdataaction.html +3 -3
  50. package/docs/interfaces/removecellrendereraction.html +3 -3
  51. package/docs/interfaces/removerendereraction.html +3 -3
  52. package/docs/interfaces/removeuischemaaction.html +2 -2
  53. package/docs/interfaces/rendererprops.html +9 -9
  54. package/docs/interfaces/rule.html +2 -2
  55. package/docs/interfaces/schemabasedcondition.html +2 -2
  56. package/docs/interfaces/setajvaction.html +2 -2
  57. package/docs/interfaces/setconfigaction.html +2 -2
  58. package/docs/interfaces/setlocaleaction.html +2 -2
  59. package/docs/interfaces/setschemaaction.html +2 -2
  60. package/docs/interfaces/settranslatoraction.html +3 -3
  61. package/docs/interfaces/setuischemaaction.html +2 -2
  62. package/docs/interfaces/setvalidationmodeaction.html +2 -2
  63. package/docs/interfaces/statepropsofarraycontrol.html +17 -17
  64. package/docs/interfaces/statepropsofarraylayout.html +17 -17
  65. package/docs/interfaces/statepropsofcell.html +11 -11
  66. package/docs/interfaces/statepropsofcombinator.html +147 -40
  67. package/docs/interfaces/statepropsofcontrol.html +18 -15
  68. package/docs/interfaces/statepropsofcontrolwithdetail.html +16 -16
  69. package/docs/interfaces/statepropsofenumcell.html +12 -12
  70. package/docs/interfaces/statepropsofjsonformsrenderer.html +9 -9
  71. package/docs/interfaces/statepropsoflayout.html +10 -10
  72. package/docs/interfaces/statepropsofmasteritem.html +7 -7
  73. package/docs/interfaces/statepropsofrenderer.html +9 -9
  74. package/docs/interfaces/statepropsofscopedrenderer.html +12 -12
  75. package/docs/interfaces/uischemaelement.html +3 -3
  76. package/docs/interfaces/unregisterdefaultdataaction.html +2 -2
  77. package/docs/interfaces/updatei18naction.html +4 -4
  78. package/docs/interfaces/verticallayout.html +4 -4
  79. package/docs/interfaces/withclassname.html +1 -1
  80. package/lib/actions/actions.d.ts +1 -0
  81. package/lib/jsonforms-core.cjs.js +201 -179
  82. package/lib/jsonforms-core.cjs.js.map +1 -1
  83. package/lib/jsonforms-core.esm.js +182 -166
  84. package/lib/jsonforms-core.esm.js.map +1 -1
  85. package/lib/models/uischema.d.ts +10 -1
  86. package/lib/reducers/core.d.ts +1 -0
  87. package/lib/reducers/reducers.d.ts +2 -2
  88. package/lib/testers/testers.d.ts +8 -7
  89. package/lib/util/combinators.d.ts +0 -1
  90. package/lib/util/path.d.ts +10 -0
  91. package/lib/util/renderer.d.ts +2 -2
  92. package/lib/util/resolvers.d.ts +1 -1
  93. package/lib/util/util.d.ts +1 -1
  94. package/package.json +2 -2
  95. package/src/actions/actions.ts +1 -0
  96. package/src/generators/uischema.ts +4 -4
  97. package/src/i18n/i18nUtil.ts +10 -7
  98. package/src/models/uischema.ts +14 -1
  99. package/src/reducers/core.ts +30 -3
  100. package/src/reducers/reducers.ts +12 -4
  101. package/src/testers/testers.ts +61 -34
  102. package/src/util/combinators.ts +17 -32
  103. package/src/util/label.ts +2 -2
  104. package/src/util/path.ts +18 -6
  105. package/src/util/renderer.ts +20 -32
  106. package/src/util/resolvers.ts +57 -68
  107. package/src/util/util.ts +1 -1
  108. package/stats.html +1 -1
  109. package/test/generators/uischema.test.ts +18 -0
  110. package/test/i18n/i18nUtil.test.ts +41 -1
  111. package/test/reducers/core.test.ts +203 -1
  112. package/test/testers.test.ts +208 -120
  113. package/test/util/path.test.ts +37 -20
  114. package/test/util/renderer.test.ts +1 -1
  115. package/test/util/resolvers.test.ts +99 -8
@@ -292,6 +292,9 @@ var RuleEffect;
292
292
  RuleEffect["ENABLE"] = "ENABLE";
293
293
  RuleEffect["DISABLE"] = "DISABLE";
294
294
  })(RuleEffect || (RuleEffect = {}));
295
+ const isInternationalized = (element) => {
296
+ return typeof element === 'object' && element !== null && typeof element.i18n === 'string';
297
+ };
295
298
  const isGroup = (layout) => layout.type === 'Group';
296
299
  const isLayout = (uischema) => uischema.elements !== undefined;
297
300
 
@@ -356,6 +359,7 @@ const initState = {
356
359
  validator: undefined,
357
360
  ajv: undefined,
358
361
  validationMode: 'ValidateAndShow',
362
+ additionalErrors: []
359
363
  };
360
364
  const reuseAjvForSchema = (ajv, schema) => {
361
365
  if (schema.hasOwnProperty('id') || schema.hasOwnProperty('$id')) {
@@ -399,6 +403,18 @@ const hasValidationModeOption = (option) => {
399
403
  }
400
404
  return false;
401
405
  };
406
+ const hasAdditionalErrorsOption = (option) => {
407
+ if (option) {
408
+ return option.additionalErrors !== undefined;
409
+ }
410
+ return false;
411
+ };
412
+ const getAdditionalErrors = (state, action) => {
413
+ if (action && hasAdditionalErrorsOption(action.options)) {
414
+ return action.options.additionalErrors;
415
+ }
416
+ return state.additionalErrors;
417
+ };
402
418
  const coreReducer = (state = initState, action) => {
403
419
  switch (action.type) {
404
420
  case INIT: {
@@ -406,11 +422,13 @@ const coreReducer = (state = initState, action) => {
406
422
  const validationMode = getValidationMode(state, action);
407
423
  const v = validationMode === 'NoValidation' ? undefined : thisAjv.compile(action.schema);
408
424
  const e = validate(v, action.data);
425
+ const additionalErrors = getAdditionalErrors(state, action);
409
426
  return {
410
427
  ...state,
411
428
  data: action.data,
412
429
  schema: action.schema,
413
430
  uischema: action.uischema,
431
+ additionalErrors,
414
432
  errors: e,
415
433
  validator: v,
416
434
  ajv: thisAjv,
@@ -434,13 +452,15 @@ const coreReducer = (state = initState, action) => {
434
452
  else if (state.data !== action.data) {
435
453
  errors = validate(validator, action.data);
436
454
  }
455
+ const additionalErrors = getAdditionalErrors(state, action);
437
456
  const stateChanged = state.data !== action.data ||
438
457
  state.schema !== action.schema ||
439
458
  state.uischema !== action.uischema ||
440
459
  state.ajv !== thisAjv ||
441
460
  state.errors !== errors ||
442
461
  state.validator !== validator ||
443
- state.validationMode !== validationMode;
462
+ state.validationMode !== validationMode ||
463
+ state.additionalErrors !== additionalErrors;
444
464
  return stateChanged
445
465
  ? {
446
466
  ...state,
@@ -451,6 +471,7 @@ const coreReducer = (state = initState, action) => {
451
471
  errors: isEqual(errors, state.errors) ? state.errors : errors,
452
472
  validator: validator,
453
473
  validationMode: validationMode,
474
+ additionalErrors
454
475
  }
455
476
  : state;
456
477
  }
@@ -594,7 +615,11 @@ const isObjectSchema$1 = (schema) => {
594
615
  return schema?.type === 'object' || !!schema?.properties;
595
616
  };
596
617
  const filteredErrorKeywords = ['additionalProperties', 'allOf', 'anyOf', 'oneOf'];
597
- const getErrorsAt = (instancePath, schema, matchPath) => (state) => errorsAt(instancePath, schema, matchPath)(state.validationMode === 'ValidateAndHide' ? [] : state.errors);
618
+ const getErrorsAt = (instancePath, schema, matchPath) => (state) => {
619
+ const errors = state.errors ?? [];
620
+ const additionalErrors = state.additionalErrors ?? [];
621
+ return errorsAt(instancePath, schema, matchPath)(state.validationMode === 'ValidateAndHide' ? additionalErrors : [...errors, ...additionalErrors]);
622
+ };
598
623
  const errorAt = (instancePath, schema) => getErrorsAt(instancePath, schema, path => path === instancePath);
599
624
  const subErrorsAt = (instancePath, schema) => getErrorsAt(instancePath, schema, path => path.startsWith(instancePath));
600
625
 
@@ -613,7 +638,10 @@ const defaultDataReducer = (state = [], action) => {
613
638
  const extractDefaultData = (state) => state;
614
639
 
615
640
  const getI18nKeyPrefixBySchema = (schema, uischema) => {
616
- return uischema?.options?.i18n ?? schema?.i18n ?? undefined;
641
+ if (isInternationalized(uischema)) {
642
+ return uischema.i18n;
643
+ }
644
+ return schema?.i18n ?? undefined;
617
645
  };
618
646
  const transformPathToI18nPrefix = (path) => {
619
647
  return (path
@@ -631,27 +659,27 @@ const getI18nKey = (schema, uischema, path, key) => {
631
659
  const defaultTranslator = (_id, defaultMessage) => defaultMessage;
632
660
  const defaultErrorTranslator = (error, t, uischema) => {
633
661
  const i18nKey = getI18nKey(error.parentSchema, uischema, getControlPath(error), `error.${error.keyword}`);
634
- const specializedKeywordMessage = t(i18nKey, undefined);
662
+ const specializedKeywordMessage = t(i18nKey, undefined, { error });
635
663
  if (specializedKeywordMessage !== undefined) {
636
664
  return specializedKeywordMessage;
637
665
  }
638
- const genericKeywordMessage = t(`error.${error.keyword}`, undefined);
666
+ const genericKeywordMessage = t(`error.${error.keyword}`, undefined, { error });
639
667
  if (genericKeywordMessage !== undefined) {
640
668
  return genericKeywordMessage;
641
669
  }
642
- const messageCustomization = t(error.message, undefined);
670
+ const messageCustomization = t(error.message, undefined, { error });
643
671
  if (messageCustomization !== undefined) {
644
672
  return messageCustomization;
645
673
  }
646
674
  if (error.keyword === 'required' && error.message?.startsWith('must have required property')) {
647
- return t('is a required property', 'is a required property');
675
+ return t('is a required property', 'is a required property', { error });
648
676
  }
649
677
  return error.message;
650
678
  };
651
679
  const getCombinedErrorMessage = (errors, et, t, schema, uischema, path) => {
652
680
  if (errors.length > 0 && t) {
653
681
  const customErrorKey = getI18nKey(schema, uischema, path, 'error.custom');
654
- const specializedErrorMessage = t(customErrorKey, undefined);
682
+ const specializedErrorMessage = t(customErrorKey, undefined, { schema, uischema, path, errors });
655
683
  if (specializedErrorMessage !== undefined) {
656
684
  return specializedErrorMessage;
657
685
  }
@@ -731,7 +759,7 @@ const rendererReducer = (state = [], action) => {
731
759
 
732
760
  const NOT_APPLICABLE = -1;
733
761
  const isControl = (uischema) => !isEmpty(uischema) && uischema.scope !== undefined;
734
- const schemaMatches = (predicate) => (uischema, schema) => {
762
+ const schemaMatches = (predicate) => (uischema, schema, rootSchema) => {
735
763
  if (isEmpty(uischema) || !isControl(uischema)) {
736
764
  return false;
737
765
  }
@@ -744,32 +772,32 @@ const schemaMatches = (predicate) => (uischema, schema) => {
744
772
  }
745
773
  let currentDataSchema = schema;
746
774
  if (hasType(schema, 'object')) {
747
- currentDataSchema = resolveSchema(schema, schemaPath);
775
+ currentDataSchema = resolveSchema(schema, schemaPath, rootSchema);
748
776
  }
749
777
  if (currentDataSchema === undefined) {
750
778
  return false;
751
779
  }
752
- return predicate(currentDataSchema);
780
+ return predicate(currentDataSchema, rootSchema);
753
781
  };
754
- const schemaSubPathMatches = (subPath, predicate) => (uischema, schema) => {
782
+ const schemaSubPathMatches = (subPath, predicate) => (uischema, schema, rootSchema) => {
755
783
  if (isEmpty(uischema) || !isControl(uischema)) {
756
784
  return false;
757
785
  }
758
786
  const schemaPath = uischema.scope;
759
787
  let currentDataSchema = schema;
760
788
  if (hasType(schema, 'object')) {
761
- currentDataSchema = resolveSchema(schema, schemaPath);
789
+ currentDataSchema = resolveSchema(schema, schemaPath, rootSchema);
762
790
  }
763
791
  currentDataSchema = get(currentDataSchema, subPath);
764
792
  if (currentDataSchema === undefined) {
765
793
  return false;
766
794
  }
767
- return predicate(currentDataSchema);
795
+ return predicate(currentDataSchema, rootSchema);
768
796
  };
769
797
  const schemaTypeIs = (expectedType) => schemaMatches(schema => !isEmpty(schema) && hasType(schema, expectedType));
770
798
  const formatIs = (expectedFormat) => schemaMatches(schema => !isEmpty(schema) &&
771
799
  schema.format === expectedFormat &&
772
- schema.type === 'string');
800
+ hasType(schema, 'string'));
773
801
  const uiTypeIs = (expected) => (uischema) => !isEmpty(uischema) && uischema.type === expected;
774
802
  const optionIs = (optionName, optionValue) => (uischema) => {
775
803
  if (isEmpty(uischema)) {
@@ -791,16 +819,16 @@ const scopeEndIs = (expected) => (uischema) => {
791
819
  const schemaPath = uischema.scope;
792
820
  return !isEmpty(schemaPath) && last(schemaPath.split('/')) === expected;
793
821
  };
794
- const and = (...testers) => (uischema, schema) => testers.reduce((acc, tester) => acc && tester(uischema, schema), true);
795
- const or = (...testers) => (uischema, schema) => testers.reduce((acc, tester) => acc || tester(uischema, schema), false);
796
- const rankWith = (rank, tester) => (uischema, schema) => {
797
- if (tester(uischema, schema)) {
822
+ const and = (...testers) => (uischema, schema, rootSchema) => testers.reduce((acc, tester) => acc && tester(uischema, schema, rootSchema), true);
823
+ const or = (...testers) => (uischema, schema, rootSchema) => testers.reduce((acc, tester) => acc || tester(uischema, schema, rootSchema), false);
824
+ const rankWith = (rank, tester) => (uischema, schema, rootSchema) => {
825
+ if (tester(uischema, schema, rootSchema)) {
798
826
  return rank;
799
827
  }
800
828
  return NOT_APPLICABLE;
801
829
  };
802
- const withIncreasedRank = (by, rankedTester) => (uischema, schema) => {
803
- const rank = rankedTester(uischema, schema);
830
+ const withIncreasedRank = (by, rankedTester) => (uischema, schema, rootSchema) => {
831
+ const rank = rankedTester(uischema, schema, rootSchema);
804
832
  if (rank === NOT_APPLICABLE) {
805
833
  return NOT_APPLICABLE;
806
834
  }
@@ -821,30 +849,39 @@ const isMultiLineControl = and(uiTypeIs('Control'), optionIs('multi', true));
821
849
  const isDateControl = and(uiTypeIs('Control'), or(formatIs('date'), optionIs('format', 'date')));
822
850
  const isTimeControl = and(uiTypeIs('Control'), or(formatIs('time'), optionIs('format', 'time')));
823
851
  const isDateTimeControl = and(uiTypeIs('Control'), or(formatIs('date-time'), optionIs('format', 'date-time')));
824
- const isObjectArray = and(schemaMatches(schema => hasType(schema, 'array') && !Array.isArray(schema.items)
825
- ), schemaSubPathMatches('items', schema => hasType(schema, 'object')));
852
+ const isObjectArray = and(schemaMatches((schema, rootSchema) => hasType(schema, 'array') && !Array.isArray(resolveSchema(schema, 'items', rootSchema))
853
+ ), schemaSubPathMatches('items', (schema, rootSchema) => {
854
+ const resolvedSchema = schema.$ref ? resolveSchema(rootSchema, schema.$ref, rootSchema) : schema;
855
+ return hasType(resolvedSchema, 'object');
856
+ }));
826
857
  const isObjectArrayControl = and(uiTypeIs('Control'), isObjectArray);
827
- const traverse = (any, pred) => {
858
+ const traverse = (any, pred, rootSchema) => {
828
859
  if (isArray(any)) {
829
- return reduce(any, (acc, el) => acc || traverse(el, pred), false);
860
+ return reduce(any, (acc, el) => acc || traverse(el, pred, rootSchema), false);
830
861
  }
831
862
  if (pred(any)) {
832
863
  return true;
833
864
  }
865
+ if (any.$ref) {
866
+ const toTraverse = resolveSchema(rootSchema, any.$ref, rootSchema);
867
+ if (toTraverse && !toTraverse.$ref) {
868
+ return traverse(toTraverse, pred, rootSchema);
869
+ }
870
+ }
834
871
  if (any.items) {
835
- return traverse(any.items, pred);
872
+ return traverse(any.items, pred, rootSchema);
836
873
  }
837
874
  if (any.properties) {
838
- return reduce(toPairs(any.properties), (acc, [_key, val]) => acc || traverse(val, pred), false);
875
+ return reduce(toPairs(any.properties), (acc, [_key, val]) => acc || traverse(val, pred, rootSchema), false);
839
876
  }
840
877
  return false;
841
878
  };
842
- const isObjectArrayWithNesting = (uischema, schema) => {
843
- if (!uiTypeIs('Control')(uischema, schema)) {
879
+ const isObjectArrayWithNesting = (uischema, schema, rootSchema) => {
880
+ if (!uiTypeIs('Control')(uischema, schema, rootSchema)) {
844
881
  return false;
845
882
  }
846
883
  const schemaPath = uischema.scope;
847
- const resolvedSchema = resolveSchema(schema, schemaPath);
884
+ const resolvedSchema = resolveSchema(schema, schemaPath, rootSchema ?? schema);
848
885
  const wantedNestingByType = {
849
886
  object: 2,
850
887
  array: 1
@@ -854,6 +891,9 @@ const isObjectArrayWithNesting = (uischema, schema) => {
854
891
  if (val === schema) {
855
892
  return false;
856
893
  }
894
+ if (val.$ref !== undefined) {
895
+ return false;
896
+ }
857
897
  if (typeof val.type !== 'string') {
858
898
  return true;
859
899
  }
@@ -863,7 +903,7 @@ const isObjectArrayWithNesting = (uischema, schema) => {
863
903
  }
864
904
  wantedNestingByType[val.type] = typeCount - 1;
865
905
  return wantedNestingByType[val.type] === 0;
866
- })) {
906
+ }, rootSchema)) {
867
907
  return true;
868
908
  }
869
909
  if (uischema.options && uischema.options.detail) {
@@ -879,9 +919,11 @@ const isObjectArrayWithNesting = (uischema, schema) => {
879
919
  return false;
880
920
  };
881
921
  const isArrayObjectControl = isObjectArrayControl;
882
- const isPrimitiveArrayControl = and(uiTypeIs('Control'), schemaMatches(schema => deriveTypes(schema).length !== 0 && !Array.isArray(schema.items)
883
- ), schemaSubPathMatches('items', schema => {
884
- const types = deriveTypes(schema);
922
+ const isPrimitiveArrayControl = and(uiTypeIs('Control'), schemaMatches((schema, rootSchema) => deriveTypes(schema).length !== 0 &&
923
+ !Array.isArray(resolveSchema(schema, 'items', rootSchema))
924
+ ), schemaSubPathMatches('items', (schema, rootSchema) => {
925
+ const resolvedSchema = schema.$ref ? resolveSchema(rootSchema, schema.$ref, rootSchema) : schema;
926
+ const types = deriveTypes(resolvedSchema);
885
927
  return (types.length === 1 &&
886
928
  includes(['integer', 'number', 'boolean', 'string'], types[0]));
887
929
  }));
@@ -900,7 +942,7 @@ const hasCategory = (categorization) => {
900
942
  .reduce((prev, curr) => prev && curr, true);
901
943
  };
902
944
  const categorizationHasCategory = (uischema) => hasCategory(uischema);
903
- const not = (tester) => (uischema, schema) => !tester(uischema, schema);
945
+ const not = (tester) => (uischema, schema, rootSchema) => !tester(uischema, schema, rootSchema);
904
946
 
905
947
  var index$1 = /*#__PURE__*/Object.freeze({
906
948
  __proto__: null,
@@ -978,11 +1020,14 @@ const jsonFormsReducerConfig = {
978
1020
  defaultData: defaultDataReducer,
979
1021
  i18n: i18nReducer,
980
1022
  };
981
- const findUISchema = (uischemas, schema, schemaPath, path, fallbackLayoutType = 'VerticalLayout', control, rootSchema) => {
1023
+ const findUISchema = (uischemas, schema, schemaPath, path, fallback = 'VerticalLayout', control, rootSchema) => {
982
1024
  if (control && control.options && control.options.detail) {
983
1025
  if (typeof control.options.detail === 'string') {
984
1026
  if (control.options.detail.toUpperCase() === 'GENERATE') {
985
- return Generate.uiSchema(schema, fallbackLayoutType);
1027
+ if (typeof fallback === "function") {
1028
+ return fallback();
1029
+ }
1030
+ return Generate.uiSchema(schema, fallback);
986
1031
  }
987
1032
  }
988
1033
  else if (typeof control.options.detail === 'object') {
@@ -994,7 +1039,10 @@ const findUISchema = (uischemas, schema, schemaPath, path, fallbackLayoutType =
994
1039
  }
995
1040
  const uiSchema = findMatchingUISchema(uischemas)(schema, schemaPath, path);
996
1041
  if (uiSchema === undefined) {
997
- return Generate.uiSchema(schema, fallbackLayoutType, '#', rootSchema);
1042
+ if (typeof fallback === 'function') {
1043
+ return fallback();
1044
+ }
1045
+ return Generate.uiSchema(schema, fallback, '#', rootSchema);
998
1046
  }
999
1047
  return uiSchema;
1000
1048
  };
@@ -1016,6 +1064,44 @@ const getRenderers = (state) => get(state, 'jsonforms.renderers');
1016
1064
  const getCells = (state) => get(state, 'jsonforms.cells');
1017
1065
  const getUISchemas = (state) => get(state, 'jsonforms.uischemas');
1018
1066
 
1067
+ const compose = (path1, path2) => {
1068
+ let p1 = path1;
1069
+ if (!isEmpty(path1) && !isEmpty(path2) && !path2.startsWith('[')) {
1070
+ p1 = path1 + '.';
1071
+ }
1072
+ if (isEmpty(p1)) {
1073
+ return path2;
1074
+ }
1075
+ else if (isEmpty(path2)) {
1076
+ return p1;
1077
+ }
1078
+ else {
1079
+ return `${p1}${path2}`;
1080
+ }
1081
+ };
1082
+ const toDataPathSegments = (schemaPath) => {
1083
+ const s = schemaPath
1084
+ .replace(/(anyOf|allOf|oneOf)\/[\d]\//g, '')
1085
+ .replace(/(then|else)\//g, '');
1086
+ const segments = s.split('/');
1087
+ const decodedSegments = segments.map(decode);
1088
+ const startFromRoot = decodedSegments[0] === '#' || decodedSegments[0] === '';
1089
+ const startIndex = startFromRoot ? 2 : 1;
1090
+ return range(startIndex, decodedSegments.length, 2).map(idx => decodedSegments[idx]);
1091
+ };
1092
+ const toDataPath = (schemaPath) => {
1093
+ return toDataPathSegments(schemaPath).join('.');
1094
+ };
1095
+ const composeWithUi = (scopableUi, path) => {
1096
+ const segments = toDataPathSegments(scopableUi.scope);
1097
+ if (isEmpty(segments) && path === undefined) {
1098
+ return '';
1099
+ }
1100
+ return isEmpty(segments) ? path : compose(path, segments.join('.'));
1101
+ };
1102
+ const encode = (segment) => segment?.replace(/~/g, '~0').replace(/\//g, '~1');
1103
+ const decode = (pointerSegment) => pointerSegment?.replace(/~1/g, '/').replace(/~0/, '~');
1104
+
1019
1105
  const isObjectSchema = (schema) => {
1020
1106
  return schema.properties !== undefined;
1021
1107
  };
@@ -1062,90 +1148,40 @@ const findAllRefs = (schema, result = {}, resolveTuples = false) => {
1062
1148
  };
1063
1149
  const invalidSegment = (pathSegment) => pathSegment === '#' || pathSegment === undefined || pathSegment === '';
1064
1150
  const resolveSchema = (schema, schemaPath, rootSchema) => {
1151
+ const segments = schemaPath?.split('/').map(decode);
1152
+ return resolveSchemaWithSegments(schema, segments, rootSchema);
1153
+ };
1154
+ const resolveSchemaWithSegments = (schema, pathSegments, rootSchema) => {
1065
1155
  if (isEmpty(schema)) {
1066
1156
  return undefined;
1067
1157
  }
1068
- const validPathSegments = schemaPath.split('/');
1069
- let resultSchema = schema;
1070
- for (let i = 0; i < validPathSegments.length; i++) {
1071
- let pathSegment = validPathSegments[i];
1072
- resultSchema =
1073
- resultSchema === undefined || resultSchema.$ref === undefined
1074
- ? resultSchema
1075
- : resolveSchema(schema, resultSchema.$ref);
1076
- if (invalidSegment(pathSegment)) {
1077
- continue;
1078
- }
1079
- let curSchema = get(resultSchema, pathSegment);
1080
- if (!curSchema) {
1081
- const schemas = [].concat(resultSchema?.oneOf ?? [], resultSchema?.allOf ?? [], resultSchema?.anyOf ?? []);
1082
- for (let item of schemas) {
1083
- curSchema = resolveSchema(item, validPathSegments.slice(i).join('/'));
1084
- if (curSchema) {
1085
- break;
1086
- }
1087
- }
1088
- if (curSchema) {
1089
- resultSchema = curSchema;
1090
- break;
1091
- }
1092
- }
1093
- resultSchema = curSchema;
1094
- }
1095
- if (resultSchema !== undefined && resultSchema.$ref !== undefined) {
1096
- try {
1097
- return retrieveResolvableSchema(schema, resultSchema.$ref);
1098
- }
1099
- catch (e) {
1100
- return retrieveResolvableSchema(rootSchema, resultSchema.$ref);
1101
- }
1102
- }
1103
- return resultSchema;
1104
- };
1105
- function retrieveResolvableSchema(full, reference) {
1106
- const child = resolveSchema(full, reference);
1107
- const allRefs = findAllRefs(child);
1108
- const innerSelfReference = allRefs[reference];
1109
- if (innerSelfReference !== undefined) {
1110
- innerSelfReference.$ref = '#';
1111
- }
1112
- return child;
1113
- }
1114
-
1115
- const compose = (path1, path2) => {
1116
- let p1 = path1;
1117
- if (!isEmpty(path1) && !isEmpty(path2) && !path2.startsWith('[')) {
1118
- p1 = path1 + '.';
1158
+ if (schema.$ref) {
1159
+ schema = resolveSchema(rootSchema, schema.$ref, rootSchema);
1119
1160
  }
1120
- if (isEmpty(p1)) {
1121
- return path2;
1161
+ if (!pathSegments || pathSegments.length === 0) {
1162
+ return schema;
1122
1163
  }
1123
- else if (isEmpty(path2)) {
1124
- return p1;
1164
+ const [segment, ...remainingSegments] = pathSegments;
1165
+ if (invalidSegment(segment)) {
1166
+ return resolveSchemaWithSegments(schema, remainingSegments, rootSchema);
1125
1167
  }
1126
- else {
1127
- return `${p1}${path2}`;
1168
+ const singleSegmentResolveSchema = get(schema, segment);
1169
+ const resolvedSchema = resolveSchemaWithSegments(singleSegmentResolveSchema, remainingSegments, rootSchema);
1170
+ if (resolvedSchema) {
1171
+ return resolvedSchema;
1128
1172
  }
1129
- };
1130
- const toDataPathSegments = (schemaPath) => {
1131
- const s = schemaPath
1132
- .replace(/anyOf\/[\d]\//g, '')
1133
- .replace(/allOf\/[\d]\//g, '')
1134
- .replace(/oneOf\/[\d]\//g, '');
1135
- const segments = s.split('/');
1136
- const startFromRoot = segments[0] === '#' || segments[0] === '';
1137
- const startIndex = startFromRoot ? 2 : 1;
1138
- return range(startIndex, segments.length, 2).map(idx => segments[idx]);
1139
- };
1140
- const toDataPath = (schemaPath) => {
1141
- return toDataPathSegments(schemaPath).join('.');
1142
- };
1143
- const composeWithUi = (scopableUi, path) => {
1144
- const segments = toDataPathSegments(scopableUi.scope);
1145
- if (isEmpty(segments) && path === undefined) {
1146
- return '';
1173
+ if (segment === 'properties' || segment === 'items') {
1174
+ let alternativeResolveResult = undefined;
1175
+ const subSchemas = [].concat(schema.oneOf ?? [], schema.allOf ?? [], schema.anyOf ?? [], schema.then ?? [], schema.else ?? []);
1176
+ for (const subSchema of subSchemas) {
1177
+ alternativeResolveResult = resolveSchemaWithSegments(subSchema, [segment, ...remainingSegments], rootSchema);
1178
+ if (alternativeResolveResult) {
1179
+ break;
1180
+ }
1181
+ }
1182
+ return alternativeResolveResult;
1147
1183
  }
1148
- return isEmpty(segments) ? path : compose(path, segments.join('.'));
1184
+ return undefined;
1149
1185
  };
1150
1186
 
1151
1187
  const isOrCondition = (condition) => condition.type === 'OR';
@@ -1315,7 +1351,7 @@ const deriveLabel = (controlElement, schemaElement) => {
1315
1351
  }
1316
1352
  if (typeof controlElement.scope === 'string') {
1317
1353
  const ref = controlElement.scope;
1318
- const label = ref.substr(ref.lastIndexOf('/') + 1);
1354
+ const label = decode(ref.substr(ref.lastIndexOf('/') + 1));
1319
1355
  return startCase(label);
1320
1356
  }
1321
1357
  return '';
@@ -1345,30 +1381,6 @@ const labelDescription = (text, show) => ({
1345
1381
  show: show
1346
1382
  });
1347
1383
 
1348
- const createLabel = (subSchema, subSchemaIndex, keyword) => {
1349
- if (subSchema.title) {
1350
- return subSchema.title;
1351
- }
1352
- else {
1353
- return keyword + '-' + subSchemaIndex;
1354
- }
1355
- };
1356
- const resolveSubSchemas = (schema, rootSchema, keyword) => {
1357
- const schemas = schema[keyword];
1358
- if (schemas.findIndex(e => e.$ref !== undefined) !== -1) {
1359
- return {
1360
- ...schema,
1361
- [keyword]: schema[keyword].map(e => e.$ref ? resolveSchema(rootSchema, e.$ref) : e)
1362
- };
1363
- }
1364
- return schema;
1365
- };
1366
- const createCombinatorRenderInfos = (combinatorSubSchemas, rootSchema, keyword, control, path, uischemas) => combinatorSubSchemas.map((subSchema, subSchemaIndex) => ({
1367
- schema: subSchema,
1368
- uischema: findUISchema(uischemas, subSchema, control.scope, path, undefined, control, rootSchema),
1369
- label: createLabel(subSchema, subSchemaIndex, keyword)
1370
- }));
1371
-
1372
1384
  const isRequired = (schema, schemaPath, rootSchema) => {
1373
1385
  const pathSegments = schemaPath.split('/');
1374
1386
  const lastSegment = pathSegments[pathSegments.length - 1];
@@ -1466,8 +1478,8 @@ const mapStateToControlProps = (state, ownProps) => {
1466
1478
  const schema = resolvedSchema ?? rootSchema;
1467
1479
  const t = getTranslator()(state);
1468
1480
  const te = getErrorTranslator()(state);
1469
- const i18nLabel = t(getI18nKey(schema, uischema, path, 'label'), label);
1470
- const i18nDescription = t(getI18nKey(schema, uischema, path, 'description'), description);
1481
+ const i18nLabel = t(getI18nKey(schema, uischema, path, 'label'), label, { schema, uischema, path, errors });
1482
+ const i18nDescription = t(getI18nKey(schema, uischema, path, 'description'), description, { schema, uischema, path, errors });
1471
1483
  const i18nErrorMessage = getCombinedErrorMessage(errors, te, t, schema, uischema, path);
1472
1484
  return {
1473
1485
  data,
@@ -1648,14 +1660,15 @@ const mapStateToLayoutProps = (state, ownProps) => {
1648
1660
  data,
1649
1661
  uischema: ownProps.uischema,
1650
1662
  schema: ownProps.schema,
1651
- direction: ownProps.direction ?? getDirection(uischema)
1663
+ direction: ownProps.direction ?? getDirection(uischema),
1664
+ config
1652
1665
  };
1653
1666
  };
1654
1667
  const mapStateToJsonFormsRendererProps = (state, ownProps) => {
1655
1668
  let uischema = ownProps.uischema;
1656
1669
  if (uischema === undefined) {
1657
1670
  if (ownProps.schema) {
1658
- uischema = findUISchema(state.jsonforms.uischemas, ownProps.schema, undefined, ownProps.path);
1671
+ uischema = findUISchema(state.jsonforms.uischemas, ownProps.schema, undefined, ownProps.path, undefined, undefined, state.jsonforms.core.schema);
1659
1672
  }
1660
1673
  else {
1661
1674
  uischema = getUiSchema(state);
@@ -1675,18 +1688,8 @@ const controlDefaultProps = {
1675
1688
  errors: []
1676
1689
  };
1677
1690
  const mapStateToCombinatorRendererProps = (state, ownProps, keyword) => {
1678
- const { uischema } = ownProps;
1679
- const path = composeWithUi(uischema, ownProps.path);
1680
- const rootSchema = getSchema(state);
1681
- const resolvedSchema = Resolve.schema(ownProps.schema || rootSchema, uischema.scope, rootSchema);
1682
- const visible = ownProps.visible === undefined || hasShowRule(uischema)
1683
- ? isVisible(uischema, getData(state), ownProps.path, getAjv(state))
1684
- : ownProps.visible;
1685
- const id = ownProps.id;
1686
- const data = Resolve.data(getData(state), path);
1691
+ const { data, schema, ...props } = mapStateToControlProps(state, ownProps);
1687
1692
  const ajv = state.jsonforms.core.ajv;
1688
- const schema = resolvedSchema || rootSchema;
1689
- const _schema = resolveSubSchemas(schema, rootSchema, keyword);
1690
1693
  const structuralKeywords = [
1691
1694
  'required',
1692
1695
  'additionalProperties',
@@ -1700,9 +1703,9 @@ const mapStateToCombinatorRendererProps = (state, ownProps, keyword) => {
1700
1703
  !errors.find(e => structuralKeywords.indexOf(e.keyword) !== -1));
1701
1704
  };
1702
1705
  let indexOfFittingSchema;
1703
- for (let i = 0; i < _schema[keyword].length; i++) {
1706
+ for (let i = 0; i < schema[keyword]?.length; i++) {
1704
1707
  try {
1705
- const valFn = ajv.compile(_schema[keyword][i]);
1708
+ const valFn = ajv.compile(schema[keyword][i]);
1706
1709
  valFn(data);
1707
1710
  if (dataIsValid(valFn.errors)) {
1708
1711
  indexOfFittingSchema = i;
@@ -1715,14 +1718,10 @@ const mapStateToCombinatorRendererProps = (state, ownProps, keyword) => {
1715
1718
  }
1716
1719
  return {
1717
1720
  data,
1718
- path,
1719
1721
  schema,
1720
- rootSchema,
1721
- visible,
1722
- id,
1722
+ ...props,
1723
1723
  indexOfFittingSchema,
1724
- uischemas: state.jsonforms.uischemas,
1725
- uischema
1724
+ uischemas: getUISchemas(state)
1726
1725
  };
1727
1726
  };
1728
1727
  const mapStateToAllOfProps = (state, ownProps) => mapStateToCombinatorRendererProps(state, ownProps, 'allOf');
@@ -1825,6 +1824,23 @@ const defaultMapDispatchToControlProps =
1825
1824
  };
1826
1825
  };
1827
1826
 
1827
+ const createLabel = (subSchema, subSchemaIndex, keyword) => {
1828
+ if (subSchema.title) {
1829
+ return subSchema.title;
1830
+ }
1831
+ else {
1832
+ return keyword + '-' + subSchemaIndex;
1833
+ }
1834
+ };
1835
+ const createCombinatorRenderInfos = (combinatorSubSchemas, rootSchema, keyword, control, path, uischemas) => combinatorSubSchemas.map((subSchema, subSchemaIndex) => {
1836
+ const schema = subSchema.$ref ? Resolve.schema(rootSchema, subSchema.$ref, rootSchema) : subSchema;
1837
+ return {
1838
+ schema,
1839
+ uischema: findUISchema(uischemas, schema, control.scope, path, undefined, control, rootSchema),
1840
+ label: createLabel(subSchema, subSchemaIndex, keyword)
1841
+ };
1842
+ });
1843
+
1828
1844
  const usedIds = new Set();
1829
1845
  const makeId = (idBase, iteration) => iteration <= 1 ? idBase : idBase + iteration.toString();
1830
1846
  const isUniqueId = (idBase, iteration) => {
@@ -1931,7 +1947,7 @@ const isCombinator = (jsonSchema) => {
1931
1947
  };
1932
1948
  const generateUISchema = (jsonSchema, schemaElements, currentRef, schemaName, layoutType, rootSchema) => {
1933
1949
  if (!isEmpty(jsonSchema) && jsonSchema.$ref !== undefined) {
1934
- return generateUISchema(resolveSchema(rootSchema, jsonSchema.$ref), schemaElements, currentRef, schemaName, layoutType, rootSchema);
1950
+ return generateUISchema(resolveSchema(rootSchema, jsonSchema.$ref, rootSchema), schemaElements, currentRef, schemaName, layoutType, rootSchema);
1935
1951
  }
1936
1952
  if (isCombinator(jsonSchema)) {
1937
1953
  const controlObject = createControlElement(currentRef);
@@ -1957,9 +1973,9 @@ const generateUISchema = (jsonSchema, schemaElements, currentRef, schemaName, la
1957
1973
  const nextRef = currentRef + '/properties';
1958
1974
  Object.keys(jsonSchema.properties).map(propName => {
1959
1975
  let value = jsonSchema.properties[propName];
1960
- const ref = `${nextRef}/${propName}`;
1976
+ const ref = `${nextRef}/${encode(propName)}`;
1961
1977
  if (value.$ref !== undefined) {
1962
- value = resolveSchema(rootSchema, value.$ref);
1978
+ value = resolveSchema(rootSchema, value.$ref, rootSchema);
1963
1979
  }
1964
1980
  generateUISchema(value, layout.elements, ref, propName, layoutType, rootSchema);
1965
1981
  });
@@ -2160,5 +2176,5 @@ const Helpers = {
2160
2176
  convertToValidClassName
2161
2177
  };
2162
2178
 
2163
- export { ADD_CELL, ADD_DEFAULT_DATA, ADD_RENDERER, ADD_UI_SCHEMA, index as Actions, Draft4, Generate, Helpers, INIT, NOT_APPLICABLE, Paths, REMOVE_CELL, REMOVE_DEFAULT_DATA, REMOVE_RENDERER, REMOVE_UI_SCHEMA, Resolve, RuleEffect, Runtime, SET_AJV, SET_CONFIG, SET_LOCALE, SET_SCHEMA, SET_TRANSLATOR, SET_UISCHEMA, SET_VALIDATION_MODE, index$1 as Test, UPDATE_CORE, UPDATE_DATA, UPDATE_ERRORS, UPDATE_I18N, VALIDATE, and, categorizationHasCategory, cellReducer, clearAllIds, compose, compose as composePaths, composeWithUi, computeLabel, configReducer, controlDefaultProps, convertToValidClassName, coreReducer, createAjv, createCleanLabel, createCombinatorRenderInfos, createControlElement, createDefaultValue, createId, createLabelDescriptionFrom, defaultDataReducer, defaultErrorTranslator, defaultJsonFormsI18nState, defaultMapDispatchToControlProps, defaultMapStateToEnumCellProps, defaultTranslator, deriveTypes, enumToEnumOptionMapper, errorAt, errorsAt, evalEnablement, evalVisibility, extractAjv, extractData, extractDefaultData, extractSchema, extractUiSchema, fetchErrorTranslator, fetchLocale, fetchTranslator, findAllRefs, findMatchingUISchema, findUISchema, formatErrorMessage, formatIs, generateDefaultUISchema, generateJsonSchema, getAjv, getCells, getCombinedErrorMessage, getConfig, getControlPath, getData, getDefaultData, getErrorAt, getErrorTranslator, getFirstPrimitiveProp, getI18nKey, getI18nKeyPrefix, getI18nKeyPrefixBySchema, getLocale, getRenderers, getSchema, getSubErrorsAt, getTranslator, getUISchemas, getUiSchema, hasCategory, hasEnableRule, hasShowRule, hasType, i18nReducer, init, isAllOfControl, isAnyOfControl, isArrayObjectControl, isBooleanControl, isCategorization, isCategory, isControl, isDateControl, isDateTimeControl, isDescriptionHidden, isEnabled, isEnumControl, isGroup, isInherentlyEnabled, isIntegerControl, isLayout, isMultiLineControl, isNumberControl, isNumberFormatControl, isObjectArray, isObjectArrayControl, isObjectArrayWithNesting, isObjectControl, isOneOfControl, isOneOfEnumControl, isPrimitiveArrayControl, isRangeControl, isStringControl, isTimeControl, isVisible, iterateSchema, jsonFormsReducerConfig, layoutDefaultProps, mapDispatchToArrayControlProps, mapDispatchToCellProps, mapDispatchToControlProps, mapDispatchToMultiEnumProps, mapStateToAllOfProps, mapStateToAnyOfProps, mapStateToArrayControlProps, mapStateToArrayLayoutProps, mapStateToCellProps, mapStateToCombinatorRendererProps, mapStateToControlProps, mapStateToControlWithDetailProps, mapStateToDispatchCellProps, mapStateToEnumControlProps, mapStateToJsonFormsRendererProps, mapStateToLayoutProps, mapStateToMasterListItemProps, mapStateToMultiEnumControlProps, mapStateToOneOfEnumCellProps, mapStateToOneOfEnumControlProps, mapStateToOneOfProps, moveDown, moveUp, not, oneOfToEnumOptionMapper, optionIs, or, rankWith, registerCell, registerDefaultData, registerRenderer, registerUISchema, removeId, rendererReducer, resolveData, resolveSchema, resolveSubSchemas, schemaMatches, schemaSubPathMatches, schemaTypeIs, scopeEndIs, scopeEndsWith, setAjv, setConfig, setLocale, setReadonly, setSchema, setTranslator, setUISchema, setValidationMode, showAsRequired, subErrorsAt, toDataPath, toDataPathSegments, transformPathToI18nPrefix, uiTypeIs, uischemaRegistryReducer, unregisterCell, unregisterDefaultData, unregisterRenderer, unregisterUISchema, unsetReadonly, update, updateCore, updateErrors, updateI18n, validate, withIncreasedRank };
2179
+ export { ADD_CELL, ADD_DEFAULT_DATA, ADD_RENDERER, ADD_UI_SCHEMA, index as Actions, Draft4, Generate, Helpers, INIT, NOT_APPLICABLE, Paths, REMOVE_CELL, REMOVE_DEFAULT_DATA, REMOVE_RENDERER, REMOVE_UI_SCHEMA, Resolve, RuleEffect, Runtime, SET_AJV, SET_CONFIG, SET_LOCALE, SET_SCHEMA, SET_TRANSLATOR, SET_UISCHEMA, SET_VALIDATION_MODE, index$1 as Test, UPDATE_CORE, UPDATE_DATA, UPDATE_ERRORS, UPDATE_I18N, VALIDATE, and, categorizationHasCategory, cellReducer, clearAllIds, compose, compose as composePaths, composeWithUi, computeLabel, configReducer, controlDefaultProps, convertToValidClassName, coreReducer, createAjv, createCleanLabel, createCombinatorRenderInfos, createControlElement, createDefaultValue, createId, createLabelDescriptionFrom, decode, defaultDataReducer, defaultErrorTranslator, defaultJsonFormsI18nState, defaultMapDispatchToControlProps, defaultMapStateToEnumCellProps, defaultTranslator, deriveTypes, encode, enumToEnumOptionMapper, errorAt, errorsAt, evalEnablement, evalVisibility, extractAjv, extractData, extractDefaultData, extractSchema, extractUiSchema, fetchErrorTranslator, fetchLocale, fetchTranslator, findAllRefs, findMatchingUISchema, findUISchema, formatErrorMessage, formatIs, generateDefaultUISchema, generateJsonSchema, getAjv, getCells, getCombinedErrorMessage, getConfig, getControlPath, getData, getDefaultData, getErrorAt, getErrorTranslator, getFirstPrimitiveProp, getI18nKey, getI18nKeyPrefix, getI18nKeyPrefixBySchema, getLocale, getRenderers, getSchema, getSubErrorsAt, getTranslator, getUISchemas, getUiSchema, hasCategory, hasEnableRule, hasShowRule, hasType, i18nReducer, init, isAllOfControl, isAnyOfControl, isArrayObjectControl, isBooleanControl, isCategorization, isCategory, isControl, isDateControl, isDateTimeControl, isDescriptionHidden, isEnabled, isEnumControl, isGroup, isInherentlyEnabled, isIntegerControl, isInternationalized, isLayout, isMultiLineControl, isNumberControl, isNumberFormatControl, isObjectArray, isObjectArrayControl, isObjectArrayWithNesting, isObjectControl, isOneOfControl, isOneOfEnumControl, isPrimitiveArrayControl, isRangeControl, isStringControl, isTimeControl, isVisible, iterateSchema, jsonFormsReducerConfig, layoutDefaultProps, mapDispatchToArrayControlProps, mapDispatchToCellProps, mapDispatchToControlProps, mapDispatchToMultiEnumProps, mapStateToAllOfProps, mapStateToAnyOfProps, mapStateToArrayControlProps, mapStateToArrayLayoutProps, mapStateToCellProps, mapStateToCombinatorRendererProps, mapStateToControlProps, mapStateToControlWithDetailProps, mapStateToDispatchCellProps, mapStateToEnumControlProps, mapStateToJsonFormsRendererProps, mapStateToLayoutProps, mapStateToMasterListItemProps, mapStateToMultiEnumControlProps, mapStateToOneOfEnumCellProps, mapStateToOneOfEnumControlProps, mapStateToOneOfProps, moveDown, moveUp, not, oneOfToEnumOptionMapper, optionIs, or, rankWith, registerCell, registerDefaultData, registerRenderer, registerUISchema, removeId, rendererReducer, resolveData, resolveSchema, schemaMatches, schemaSubPathMatches, schemaTypeIs, scopeEndIs, scopeEndsWith, setAjv, setConfig, setLocale, setReadonly, setSchema, setTranslator, setUISchema, setValidationMode, showAsRequired, subErrorsAt, toDataPath, toDataPathSegments, transformPathToI18nPrefix, uiTypeIs, uischemaRegistryReducer, unregisterCell, unregisterDefaultData, unregisterRenderer, unregisterUISchema, unsetReadonly, update, updateCore, updateErrors, updateI18n, validate, withIncreasedRank };
2164
2180
  //# sourceMappingURL=jsonforms-core.esm.js.map