@react-typed-forms/schemas 8.2.0 → 9.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  var React = require('react');
2
- var clsx = require('clsx');
3
2
  var core = require('@react-typed-forms/core');
3
+ var clsx = require('clsx');
4
4
  var jsonata = require('jsonata');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -77,6 +77,7 @@ exports.DataRenderType = void 0;
77
77
  DataRenderType["Checkbox"] = "Checkbox";
78
78
  DataRenderType["Dropdown"] = "Dropdown";
79
79
  DataRenderType["DisplayOnly"] = "DisplayOnly";
80
+ DataRenderType["Group"] = "Group";
80
81
  })(exports.DataRenderType || (exports.DataRenderType = {}));
81
82
  exports.SyncTextType = void 0;
82
83
  (function (SyncTextType) {
@@ -142,6 +143,9 @@ function isFlexRenderer(options) {
142
143
  function isDisplayOnlyRenderer(options) {
143
144
  return options.type === exports.DataRenderType.DisplayOnly;
144
145
  }
146
+ function isDataGroupRenderer(options) {
147
+ return options.type === exports.DataRenderType.Group;
148
+ }
145
149
 
146
150
  function _extends() {
147
151
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -201,96 +205,6 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
201
205
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
202
206
  }
203
207
 
204
- function buildSchema(def) {
205
- return Object.entries(def).map(function (x) {
206
- return x[1](x[0]);
207
- });
208
- }
209
- function stringField(displayName, options) {
210
- return makeScalarField(_extends({
211
- type: exports.FieldType.String,
212
- displayName: displayName
213
- }, options));
214
- }
215
- function stringOptionsField(displayName) {
216
- return makeScalarField({
217
- type: exports.FieldType.String,
218
- displayName: displayName,
219
- options: [].slice.call(arguments, 1)
220
- });
221
- }
222
- function withScalarOptions(options, v) {
223
- return function (n) {
224
- return _extends({}, v(n), options);
225
- };
226
- }
227
- function makeScalarField(options) {
228
- return function (n) {
229
- return _extends({}, defaultScalarField(n, n), options);
230
- };
231
- }
232
- function makeCompoundField(options) {
233
- return function (n) {
234
- return _extends({}, defaultCompoundField(n, n, false), options);
235
- };
236
- }
237
- function intField(displayName, options) {
238
- return makeScalarField(_extends({
239
- type: exports.FieldType.Int,
240
- displayName: displayName
241
- }, options));
242
- }
243
- function boolField(displayName, options) {
244
- return makeScalarField(_extends({
245
- type: exports.FieldType.Bool,
246
- displayName: displayName
247
- }, options));
248
- }
249
- function compoundField(displayName, fields, other) {
250
- return function (field) {
251
- return _extends({}, defaultCompoundField(field, displayName, false), other, {
252
- children: fields
253
- });
254
- };
255
- }
256
- function defaultScalarField(field, displayName) {
257
- return {
258
- field: field,
259
- displayName: displayName,
260
- type: exports.FieldType.String
261
- };
262
- }
263
- function defaultCompoundField(field, displayName, collection) {
264
- return {
265
- field: field,
266
- displayName: displayName,
267
- type: exports.FieldType.Compound,
268
- collection: collection,
269
- children: []
270
- };
271
- }
272
- function mergeField(field, mergeInto) {
273
- var existing = mergeInto.find(function (x) {
274
- return x.field === field.field;
275
- });
276
- if (existing) {
277
- return mergeInto.map(function (x) {
278
- return x !== existing ? x : _extends({}, x, {
279
- onlyForTypes: mergeTypes(x.onlyForTypes, field.onlyForTypes)
280
- });
281
- });
282
- }
283
- return [].concat(mergeInto, [field]);
284
- function mergeTypes(f, s) {
285
- if (!f) return s;
286
- if (!s) return f;
287
- var extras = s.filter(function (x) {
288
- return !f.includes(x);
289
- });
290
- return extras.length ? [].concat(f, extras) : f;
291
- }
292
- }
293
-
294
208
  function applyDefaultValues(v, fields) {
295
209
  if (!v) return defaultValueForFields(fields);
296
210
  var applyValue = fields.filter(function (x) {
@@ -516,7 +430,7 @@ function visitControlData(definition, ctx, cb) {
516
430
  }
517
431
  function lookupChildControl(data, child) {
518
432
  var childPath = [].concat(data.path, [child]);
519
- return data.data.lookupControl(childPath);
433
+ return watchControlLookup(data.data, childPath);
520
434
  }
521
435
  function cleanDataForSchema(v, fields) {
522
436
  if (!v) return v;
@@ -603,6 +517,189 @@ function rendererClass(controlClass, globalClass) {
603
517
  if (oc === controlClass) return clsx__default["default"](controlClass, globalClass);
604
518
  return oc ? oc : undefined;
605
519
  }
520
+ function watchControlLookup(base, path) {
521
+ var index = 0;
522
+ while (index < path.length && base) {
523
+ var childId = path[index];
524
+ var c = base.current;
525
+ if (typeof childId === "string") {
526
+ var _c$fields;
527
+ var next = (_c$fields = c.fields) == null ? void 0 : _c$fields[childId];
528
+ if (!next) core.trackControlChange(base, core.ControlChange.Structure);
529
+ base = next;
530
+ } else {
531
+ var _c$elements;
532
+ base = (_c$elements = c.elements) == null ? void 0 : _c$elements[childId];
533
+ }
534
+ index++;
535
+ }
536
+ return base;
537
+ }
538
+ function makeHook(runHook, state, deps) {
539
+ return {
540
+ deps: deps,
541
+ state: state,
542
+ runHook: runHook
543
+ };
544
+ }
545
+ function useDynamicHooks(hooks) {
546
+ var hookEntries = Object.entries(hooks);
547
+ var deps = hookEntries.map(function (_ref) {
548
+ var x = _ref[1];
549
+ return toDepString(x.deps);
550
+ }).join(",");
551
+ var ref = React.useRef({});
552
+ var s = ref.current;
553
+ hookEntries.forEach(function (x) {
554
+ return s[x[0]] = x[1].state;
555
+ });
556
+ return React.useCallback(function (p) {
557
+ return Object.fromEntries(hookEntries.map(function (_ref2) {
558
+ var f = _ref2[0],
559
+ hg = _ref2[1];
560
+ return [f, hg.runHook(p, ref.current[f])];
561
+ }));
562
+ }, [deps]);
563
+ }
564
+ function toDepString(x) {
565
+ if (x === undefined) return "_";
566
+ if (x === null) return "~";
567
+ return x.toString();
568
+ }
569
+
570
+ function buildSchema(def) {
571
+ return Object.entries(def).map(function (x) {
572
+ return x[1](x[0]);
573
+ });
574
+ }
575
+ function stringField(displayName, options) {
576
+ return makeScalarField(_extends({
577
+ type: exports.FieldType.String,
578
+ displayName: displayName
579
+ }, options));
580
+ }
581
+ function stringOptionsField(displayName) {
582
+ return makeScalarField({
583
+ type: exports.FieldType.String,
584
+ displayName: displayName,
585
+ options: [].slice.call(arguments, 1)
586
+ });
587
+ }
588
+ function withScalarOptions(options, v) {
589
+ return function (n) {
590
+ return _extends({}, v(n), options);
591
+ };
592
+ }
593
+ function makeScalarField(options) {
594
+ return function (n) {
595
+ return _extends({}, defaultScalarField(n, n), options);
596
+ };
597
+ }
598
+ function makeCompoundField(options) {
599
+ return function (n) {
600
+ return _extends({}, defaultCompoundField(n, n, false), options);
601
+ };
602
+ }
603
+ function intField(displayName, options) {
604
+ return makeScalarField(_extends({
605
+ type: exports.FieldType.Int,
606
+ displayName: displayName
607
+ }, options));
608
+ }
609
+ function boolField(displayName, options) {
610
+ return makeScalarField(_extends({
611
+ type: exports.FieldType.Bool,
612
+ displayName: displayName
613
+ }, options));
614
+ }
615
+ function compoundField(displayName, fields, other) {
616
+ return function (field) {
617
+ return _extends({}, defaultCompoundField(field, displayName, false), other, {
618
+ children: fields
619
+ });
620
+ };
621
+ }
622
+ function defaultScalarField(field, displayName) {
623
+ return {
624
+ field: field,
625
+ displayName: displayName,
626
+ type: exports.FieldType.String
627
+ };
628
+ }
629
+ function defaultCompoundField(field, displayName, collection) {
630
+ return {
631
+ field: field,
632
+ displayName: displayName,
633
+ type: exports.FieldType.Compound,
634
+ collection: collection,
635
+ children: []
636
+ };
637
+ }
638
+ function mergeField(field, mergeInto) {
639
+ var existing = mergeInto.find(function (x) {
640
+ return x.field === field.field;
641
+ });
642
+ if (existing) {
643
+ return mergeInto.map(function (x) {
644
+ return x !== existing ? x : _extends({}, x, {
645
+ onlyForTypes: mergeTypes(x.onlyForTypes, field.onlyForTypes)
646
+ });
647
+ });
648
+ }
649
+ return [].concat(mergeInto, [field]);
650
+ function mergeTypes(f, s) {
651
+ if (!f) return s;
652
+ if (!s) return f;
653
+ var extras = s.filter(function (x) {
654
+ return !f.includes(x);
655
+ });
656
+ return extras.length ? [].concat(f, extras) : f;
657
+ }
658
+ }
659
+ function mergeFields(fields, name, value, newFields) {
660
+ var withType = fields.map(function (x) {
661
+ return x.isTypeField ? addFieldOption(x, name, value) : x;
662
+ });
663
+ return newFields.map(function (x) {
664
+ return _extends({}, x, {
665
+ onlyForTypes: [value]
666
+ });
667
+ }).reduce(function (af, x) {
668
+ return mergeField(x, af);
669
+ }, withType);
670
+ }
671
+ function addFieldOption(typeField, name, value) {
672
+ var _typeField$options;
673
+ var options = (_typeField$options = typeField.options) != null ? _typeField$options : [];
674
+ return _extends({}, typeField, {
675
+ options: [].concat(options, [{
676
+ name: name,
677
+ value: value
678
+ }])
679
+ });
680
+ }
681
+ function resolveSchemas(schemaMap) {
682
+ var out = {};
683
+ function resolveSchemaType(type) {
684
+ if (type in out) {
685
+ return out[type];
686
+ }
687
+ var resolvedFields = [];
688
+ out[type] = resolvedFields;
689
+ schemaMap[type].forEach(function (x) {
690
+ if (isCompoundField(x) && x.schemaRef) {
691
+ resolvedFields.push(_extends({}, x, {
692
+ children: resolveSchemaType(x.schemaRef)
693
+ }));
694
+ } else {
695
+ resolvedFields.push(x);
696
+ }
697
+ });
698
+ return resolvedFields;
699
+ }
700
+ Object.keys(schemaMap).forEach(resolveSchemaType);
701
+ return out;
702
+ }
606
703
 
607
704
  function dataControl(field, title, options) {
608
705
  return _extends({
@@ -714,41 +811,19 @@ function useControlDefinitionForSchema(sf, definition) {
714
811
  });
715
812
  }, [sf, definition]);
716
813
  }
717
- function addCustomDataRenderOptions(controlFields, customRenderOptions) {
718
- return controlFields.map(function (x) {
719
- return x.field === "renderOptions" && isCompoundField(x) ? addRenderOptions(x) : x;
814
+ function applyExtensionToSchema(schemaMap, extension) {
815
+ var outMap = _extends({}, schemaMap);
816
+ Object.entries(extension).forEach(function (_ref) {
817
+ var field = _ref[0],
818
+ cro = _ref[1];
819
+ outMap[field] = (Array.isArray(cro) ? cro : [cro]).reduce(function (a, cr) {
820
+ return mergeFields(a, cr.name, cr.value, cr.fields);
821
+ }, outMap[field]);
720
822
  });
721
- function addRenderOptions(roField) {
722
- var children = roField.children;
723
- var withTypes = children.map(function (x) {
724
- return x.field === "type" ? addRenderOptionType(x) : x;
725
- });
726
- return _extends({}, roField, {
727
- children: customRenderOptions.reduce(function (renderOptionFields, ro) {
728
- return ro.fields.map(function (x) {
729
- return _extends({}, x, {
730
- onlyForTypes: [ro.value]
731
- });
732
- }).reduce(function (af, x) {
733
- return mergeField(x, af);
734
- }, renderOptionFields);
735
- }, withTypes)
736
- });
737
- }
738
- function addRenderOptionType(typeField) {
739
- var _typeField$options;
740
- var options = (_typeField$options = typeField.options) != null ? _typeField$options : [];
741
- return _extends({}, typeField, {
742
- options: [].concat(options, customRenderOptions.map(function (_ref) {
743
- var name = _ref.name,
744
- value = _ref.value;
745
- return {
746
- name: name,
747
- value: value
748
- };
749
- }))
750
- });
751
- }
823
+ return outMap;
824
+ }
825
+ function applyExtensionsToSchema(schemaMap, extensions) {
826
+ return resolveSchemas(extensions.reduce(applyExtensionToSchema, schemaMap));
752
827
  }
753
828
 
754
829
  function useCalculatedControl(calculate) {
@@ -801,76 +876,65 @@ function _finallyRethrows(body, finalizer) {
801
876
  }
802
877
  function useEvalVisibilityHook(useEvalExpressionHook, definition, schemaField) {
803
878
  var dynamicVisibility = useEvalDynamicHook(definition, exports.DynamicPropertyType.Visible, useEvalExpressionHook);
804
- var r = useUpdatedRef({
879
+ return makeDynamicPropertyHook(dynamicVisibility, function (ctx, _ref) {
880
+ var schemaField = _ref.schemaField,
881
+ definition = _ref.definition;
882
+ return core.useComputed(function () {
883
+ return matchesType(ctx, schemaField == null ? void 0 : schemaField.onlyForTypes) && (!schemaField || !hideDisplayOnly(ctx, schemaField, definition, ctx.schemaInterface));
884
+ });
885
+ }, {
805
886
  schemaField: schemaField,
806
887
  definition: definition
807
888
  });
808
- return React.useCallback(function (ctx) {
809
- var _dynamicVisibility;
810
- var _r$current = r.current,
811
- schemaField = _r$current.schemaField,
812
- definition = _r$current.definition;
813
- return (_dynamicVisibility = dynamicVisibility == null ? void 0 : dynamicVisibility(ctx)) != null ? _dynamicVisibility : core.useComputed(function () {
814
- return matchesType(ctx, schemaField == null ? void 0 : schemaField.onlyForTypes) && (!schemaField || !hideDisplayOnly(ctx, schemaField, definition, ctx.schemaInterface));
815
- });
816
- }, [dynamicVisibility, r]);
817
889
  }
818
890
  function useEvalReadonlyHook(useEvalExpressionHook, definition) {
819
891
  var dynamicReadonly = useEvalDynamicHook(definition, exports.DynamicPropertyType.Readonly, useEvalExpressionHook);
820
- var r = useUpdatedRef(definition);
821
- return React.useCallback(function (ctx) {
822
- if (dynamicReadonly) return dynamicReadonly(ctx);
892
+ return makeDynamicPropertyHook(dynamicReadonly, function (ctx, _ref2) {
893
+ var definition = _ref2.definition;
823
894
  return useCalculatedControl(function () {
824
- return isControlReadonly(r.current);
895
+ return isControlReadonly(definition);
825
896
  });
826
- }, [dynamicReadonly, r]);
897
+ }, {
898
+ definition: definition
899
+ });
827
900
  }
828
901
  function useEvalStyleHook(useEvalExpressionHook, property, definition) {
829
902
  var dynamicStyle = useEvalDynamicHook(definition, property, useEvalExpressionHook);
830
- return React.useCallback(function (ctx) {
831
- if (dynamicStyle) return dynamicStyle(ctx);
903
+ return makeDynamicPropertyHook(dynamicStyle, function () {
832
904
  return core.useControl(undefined);
833
- }, [dynamicStyle]);
905
+ }, undefined);
834
906
  }
835
907
  function useEvalAllowedOptionsHook(useEvalExpressionHook, definition) {
836
908
  var dynamicAllowed = useEvalDynamicHook(definition, exports.DynamicPropertyType.AllowedOptions, useEvalExpressionHook);
837
- return React.useCallback(function (ctx) {
838
- if (dynamicAllowed) return dynamicAllowed(ctx);
909
+ return makeDynamicPropertyHook(dynamicAllowed, function () {
839
910
  return core.useControl([]);
840
- }, [dynamicAllowed]);
911
+ }, undefined);
841
912
  }
842
913
  function useEvalDisabledHook(useEvalExpressionHook, definition) {
843
914
  var dynamicDisabled = useEvalDynamicHook(definition, exports.DynamicPropertyType.Disabled, useEvalExpressionHook);
844
- return React.useCallback(function (ctx) {
845
- if (dynamicDisabled) return dynamicDisabled(ctx);
915
+ return makeDynamicPropertyHook(dynamicDisabled, function () {
846
916
  return core.useControl(false);
847
- }, [dynamicDisabled]);
917
+ }, undefined);
848
918
  }
849
919
  function useEvalDisplayHook(useEvalExpressionHook, definition) {
850
- var dynamicDisplay = useEvalDynamicHook(definition, exports.DynamicPropertyType.Display, useEvalExpressionHook);
851
- return React.useCallback(function (ctx) {
852
- return dynamicDisplay == null ? void 0 : dynamicDisplay(ctx);
853
- }, [dynamicDisplay]);
920
+ return useEvalDynamicHook(definition, exports.DynamicPropertyType.Display, useEvalExpressionHook);
854
921
  }
855
922
  function useEvalDefaultValueHook(useEvalExpressionHook, definition, schemaField) {
856
923
  var dynamicValue = useEvalDynamicHook(definition, exports.DynamicPropertyType.DefaultValue, useEvalExpressionHook);
857
- var r = useUpdatedRef({
858
- definition: definition,
859
- schemaField: schemaField
860
- });
861
- return React.useCallback(function (ctx) {
862
- var _dynamicValue;
863
- var _r$current2 = r.current,
864
- definition = _r$current2.definition,
865
- schemaField = _r$current2.schemaField;
866
- return (_dynamicValue = dynamicValue == null ? void 0 : dynamicValue(ctx)) != null ? _dynamicValue : core.useComputed(calcDefault);
924
+ return makeDynamicPropertyHook(dynamicValue, function (ctx, _ref3) {
925
+ var definition = _ref3.definition,
926
+ schemaField = _ref3.schemaField;
927
+ return core.useComputed(calcDefault);
867
928
  function calcDefault() {
868
- var _ref = isDataControlDefinition(definition) ? [definition.required, definition.defaultValue] : [false, undefined],
869
- required = _ref[0],
870
- dcv = _ref[1];
929
+ var _ref4 = isDataControlDefinition(definition) ? [definition.required, definition.defaultValue] : [false, undefined],
930
+ required = _ref4[0],
931
+ dcv = _ref4[1];
871
932
  return dcv != null ? dcv : schemaField ? defaultValueForField(schemaField, required) : undefined;
872
933
  }
873
- }, [dynamicValue, r]);
934
+ }, {
935
+ definition: definition,
936
+ schemaField: schemaField
937
+ });
874
938
  }
875
939
  function useDataExpression(fvExpr, fields, data) {
876
940
  var refField = findField(fields, fvExpr.field);
@@ -902,12 +966,13 @@ function defaultEvalHooks(expr, context) {
902
966
  var defaultUseEvalExpressionHook = makeEvalExpressionHook(defaultEvalHooks);
903
967
  function makeEvalExpressionHook(f) {
904
968
  return function (expr) {
905
- var r = useUpdatedRef(expr);
906
- var cb = React.useCallback(function (ctx) {
907
- var expr = r.current;
908
- return f(expr, ctx);
909
- }, [expr == null ? void 0 : expr.type, r]);
910
- return expr ? cb : undefined;
969
+ return {
970
+ deps: expr == null ? void 0 : expr.type,
971
+ state: expr,
972
+ runHook: function runHook(ctx, state) {
973
+ return state ? f(state, ctx) : undefined;
974
+ }
975
+ };
911
976
  };
912
977
  }
913
978
  function useEvalDynamicHook(definition, type, useEvalExpressionHook) {
@@ -986,12 +1051,19 @@ function useJsonataExpression(jExpr, dataContext, bindings) {
986
1051
  }
987
1052
  function useEvalLabelText(useExpr, definition) {
988
1053
  var dynamicValue = useEvalDynamicHook(definition, exports.DynamicPropertyType.Label, useExpr);
989
- return React.useCallback(function (ctx) {
990
- if (dynamicValue) {
991
- return dynamicValue(ctx);
992
- }
1054
+ return makeDynamicPropertyHook(dynamicValue, function () {
993
1055
  return core.useControl(null);
994
- }, [dynamicValue]);
1056
+ }, undefined);
1057
+ }
1058
+ function makeDynamicPropertyHook(dynamicValue, makeDefault, state, deps) {
1059
+ return {
1060
+ deps: deps !== undefined ? dynamicValue.deps : [deps, dynamicValue.deps].map(toDepString).join(),
1061
+ runHook: function runHook(ctx, s) {
1062
+ var _dynamicValue$runHook;
1063
+ return (_dynamicValue$runHook = dynamicValue.runHook(ctx, s[0])) != null ? _dynamicValue$runHook : makeDefault(ctx, s[1]);
1064
+ },
1065
+ state: [dynamicValue.state, state]
1066
+ };
995
1067
  }
996
1068
 
997
1069
  function useValidationHook(definition) {
@@ -1094,15 +1166,17 @@ function useControlRenderer(definition, fields, renderer, options) {
1094
1166
  var schemaInterface = (_options$schemaInterf = options.schemaInterface) != null ? _options$schemaInterf : defaultSchemaInterface;
1095
1167
  var useExpr = (_options$useEvalExpre = options.useEvalExpressionHook) != null ? _options$useEvalExpre : defaultUseEvalExpressionHook;
1096
1168
  var schemaField = lookupSchemaField(definition, fields);
1097
- var useDefaultValue = useEvalDefaultValueHook(useExpr, definition, schemaField);
1098
- var useIsVisible = useEvalVisibilityHook(useExpr, definition, schemaField);
1099
- var useIsReadonly = useEvalReadonlyHook(useExpr, definition);
1100
- var useIsDisabled = useEvalDisabledHook(useExpr, definition);
1101
- var useAllowedOptions = useEvalAllowedOptionsHook(useExpr, definition);
1102
- var useLabelText = useEvalLabelText(useExpr, definition);
1103
- var useCustomStyle = useEvalStyleHook(useExpr, exports.DynamicPropertyType.Style, definition);
1104
- var useLayoutStyle = useEvalStyleHook(useExpr, exports.DynamicPropertyType.LayoutStyle, definition);
1105
- var useDynamicDisplay = useEvalDisplayHook(useExpr, definition);
1169
+ var dynamicHooks = useDynamicHooks({
1170
+ defaultValueControl: useEvalDefaultValueHook(useExpr, definition, schemaField),
1171
+ visibleControl: useEvalVisibilityHook(useExpr, definition, schemaField),
1172
+ readonlyControl: useEvalReadonlyHook(useExpr, definition),
1173
+ disabledControl: useEvalDisabledHook(useExpr, definition),
1174
+ allowedOptions: useEvalAllowedOptionsHook(useExpr, definition),
1175
+ labelText: useEvalLabelText(useExpr, definition),
1176
+ customStyle: useEvalStyleHook(useExpr, exports.DynamicPropertyType.Style, definition),
1177
+ layoutStyle: useEvalStyleHook(useExpr, exports.DynamicPropertyType.LayoutStyle, definition),
1178
+ displayControl: useEvalDisplayHook(useExpr, definition)
1179
+ });
1106
1180
  var useValidation = useValidationHook(definition);
1107
1181
  var r = useUpdatedRef({
1108
1182
  options: options,
@@ -1128,13 +1202,16 @@ function useControlRenderer(definition, fields, renderer, options) {
1128
1202
  data: rootControl,
1129
1203
  path: parentPath
1130
1204
  };
1131
- var readonlyControl = useIsReadonly(parentDataContext);
1132
- var disabledControl = useIsDisabled(parentDataContext);
1133
- var visibleControl = useIsVisible(parentDataContext);
1134
- var displayControl = useDynamicDisplay(parentDataContext);
1135
- var customStyle = useCustomStyle(parentDataContext).value;
1136
- var layoutStyle = useLayoutStyle(parentDataContext).value;
1137
- var labelText = useLabelText(parentDataContext);
1205
+ var _dynamicHooks = dynamicHooks(parentDataContext),
1206
+ readonlyControl = _dynamicHooks.readonlyControl,
1207
+ disabledControl = _dynamicHooks.disabledControl,
1208
+ visibleControl = _dynamicHooks.visibleControl,
1209
+ displayControl = _dynamicHooks.displayControl,
1210
+ layoutStyle = _dynamicHooks.layoutStyle,
1211
+ labelText = _dynamicHooks.labelText,
1212
+ customStyle = _dynamicHooks.customStyle,
1213
+ allowedOptions = _dynamicHooks.allowedOptions,
1214
+ defaultValueControl = _dynamicHooks.defaultValueControl;
1138
1215
  var visible = visibleControl.current.value;
1139
1216
  var visibility = core.useControl(function () {
1140
1217
  return visible != null ? {
@@ -1152,22 +1229,21 @@ function useControlRenderer(definition, fields, renderer, options) {
1152
1229
  };
1153
1230
  });
1154
1231
  });
1155
- var allowedOptions = useAllowedOptions(parentDataContext);
1156
- var defaultValueControl = useDefaultValue(parentDataContext);
1157
1232
  var _getControlData = getControlData(_schemaField, parentDataContext),
1158
1233
  parentControl = _getControlData[0],
1159
1234
  control = _getControlData[1],
1160
1235
  controlDataContext = _getControlData[2];
1161
1236
  core.useControlEffect(function () {
1162
- return [visibility.value, defaultValueControl.value, control, isDataControlDefinition(definition) && definition.dontClearHidden, parentControl == null ? void 0 : parentControl.isNull];
1237
+ return [visibility.value, defaultValueControl.value, control, isDataControlDefinition(definition) && definition.dontClearHidden, parentControl == null ? void 0 : parentControl.isNull, _options.hidden];
1163
1238
  }, function (_ref2) {
1164
1239
  var vc = _ref2[0],
1165
1240
  dv = _ref2[1],
1166
1241
  cd = _ref2[2],
1167
1242
  dontClear = _ref2[3],
1168
- parentNull = _ref2[4];
1243
+ parentNull = _ref2[4],
1244
+ hidden = _ref2[5];
1169
1245
  if (vc && cd && vc.visible === vc.showing) {
1170
- if (!vc.visible) {
1246
+ if (hidden || !vc.visible) {
1171
1247
  if (_options.clearHidden && !dontClear) {
1172
1248
  cd.value = undefined;
1173
1249
  }
@@ -1219,13 +1295,18 @@ function useControlRenderer(definition, fields, renderer, options) {
1219
1295
  labelText: labelText,
1220
1296
  schemaField: _schemaField,
1221
1297
  displayControl: displayControl,
1222
- style: customStyle,
1223
- allowedOptions: allowedOptions
1298
+ style: customStyle.value,
1299
+ allowedOptions: allowedOptions,
1300
+ useChildVisibility: function useChildVisibility(child) {
1301
+ var childDef = findChildDefinition(c, child);
1302
+ var schemaField = lookupSchemaField(childDef, controlDataContext.fields);
1303
+ return useEvalVisibilityHook(useExpr, childDef, schemaField);
1304
+ }
1224
1305
  });
1225
1306
  var renderedControl = renderer.renderLayout(_extends({}, labelAndChildren, {
1226
1307
  adornments: adornments,
1227
1308
  className: c.layoutClass,
1228
- style: layoutStyle
1309
+ style: layoutStyle.value
1229
1310
  }));
1230
1311
  return renderer.renderVisibility(_extends({
1231
1312
  visibility: visibility
@@ -1233,7 +1314,7 @@ function useControlRenderer(definition, fields, renderer, options) {
1233
1314
  } finally {
1234
1315
  stopTracking();
1235
1316
  }
1236
- }, [r, dataProps, useIsVisible, useDefaultValue, useIsReadonly, useIsDisabled, useCustomStyle, useLayoutStyle, useAllowedOptions, useLabelText, useDynamicDisplay, useValidation, renderer, schemaInterface]);
1317
+ }, [r, dataProps, useValidation, renderer, schemaInterface, dynamicHooks]);
1237
1318
  Component.displayName = "RenderControl";
1238
1319
  return Component;
1239
1320
  }
@@ -1271,15 +1352,17 @@ function ControlRenderer(_ref3) {
1271
1352
  _effect();
1272
1353
  }
1273
1354
  }
1274
- function groupProps(definition, renderChild, data, className, style) {
1355
+ function groupProps(definition, renderChild, dataContext, className, style, useChildVisibility) {
1275
1356
  var _definition$children, _definition$groupOpti;
1276
1357
  return {
1277
- children: (_definition$children = definition.children) != null ? _definition$children : [],
1358
+ childDefinitions: (_definition$children = definition.children) != null ? _definition$children : [],
1278
1359
  renderChild: renderChild,
1360
+ dataContext: dataContext,
1279
1361
  renderOptions: (_definition$groupOpti = definition.groupOptions) != null ? _definition$groupOpti : {
1280
1362
  type: "Standard"
1281
1363
  },
1282
1364
  className: cc(className),
1365
+ useChildVisibility: useChildVisibility,
1283
1366
  style: style
1284
1367
  };
1285
1368
  }
@@ -1298,7 +1381,7 @@ function defaultDataProps(_ref4) {
1298
1381
  var fieldOptions = ((_field$options$length = (_field$options = field.options) == null ? void 0 : _field$options.length) != null ? _field$options$length : 0) === 0 ? null : field.options;
1299
1382
  var allowed = (_allowedOptions$value = allowedOptions == null ? void 0 : allowedOptions.value) != null ? _allowedOptions$value : [];
1300
1383
  return _extends({
1301
- children: (_definition$children2 = definition.children) != null ? _definition$children2 : [],
1384
+ childDefinitions: (_definition$children2 = definition.children) != null ? _definition$children2 : [],
1302
1385
  control: control,
1303
1386
  field: field,
1304
1387
  id: "c" + control.uniqueId,
@@ -1365,7 +1448,8 @@ function renderControlLayout(_ref5) {
1365
1448
  displayControl = _ref5.displayControl,
1366
1449
  style = _ref5.style,
1367
1450
  labelText = _ref5.labelText,
1368
- allowedOptions = _ref5.allowedOptions;
1451
+ allowedOptions = _ref5.allowedOptions,
1452
+ useChildVisibility = _ref5.useChildVisibility;
1369
1453
  if (isDataControlDefinition(c)) {
1370
1454
  return renderData(c);
1371
1455
  }
@@ -1379,7 +1463,7 @@ function renderControlLayout(_ref5) {
1379
1463
  }));
1380
1464
  }
1381
1465
  return {
1382
- processLayout: renderer.renderGroup(groupProps(c, childRenderer, dataContext, c.styleClass, style)),
1466
+ processLayout: renderer.renderGroup(groupProps(c, childRenderer, dataContext, c.styleClass, style, useChildVisibility)),
1383
1467
  label: {
1384
1468
  label: (_labelText$value = labelText == null ? void 0 : labelText.value) != null ? _labelText$value : c.title,
1385
1469
  className: cc(c.labelClass),
@@ -1407,7 +1491,8 @@ function renderControlLayout(_ref5) {
1407
1491
  data: (_c$displayData = c.displayData) != null ? _c$displayData : {},
1408
1492
  className: cc(c.styleClass),
1409
1493
  style: style,
1410
- display: displayControl
1494
+ display: displayControl,
1495
+ dataContext: dataContext
1411
1496
  })
1412
1497
  };
1413
1498
  }
@@ -1433,6 +1518,7 @@ function renderControlLayout(_ref5) {
1433
1518
  renderChild: elemIndex != null ? function (k, d, p) {
1434
1519
  return childRenderer(k, d, p ? [elemIndex].concat(p) : [elemIndex]);
1435
1520
  } : childRenderer,
1521
+ useChildVisibility: useChildVisibility,
1436
1522
  elementRenderer: elemIndex == null && schemaField.collection ? function (ei) {
1437
1523
  return renderLayoutParts(renderData(c, ei), renderer).children;
1438
1524
  } : undefined
@@ -1726,7 +1812,7 @@ function createDefaultGroupRenderer(options) {
1726
1812
  function render(props) {
1727
1813
  var renderChild = props.renderChild,
1728
1814
  renderOptions = props.renderOptions,
1729
- children = props.children;
1815
+ childDefinitions = props.childDefinitions;
1730
1816
  var _ref7 = isGridRenderer(renderOptions) ? gridStyles(renderOptions) : isFlexRenderer(renderOptions) ? flexStyles(renderOptions) : {
1731
1817
  className: standardClassName
1732
1818
  },
@@ -1737,7 +1823,7 @@ function createDefaultGroupRenderer(options) {
1737
1823
  children: /*#__PURE__*/React__default["default"].createElement("div", {
1738
1824
  className: rendererClass(props.className, clsx__default["default"](className, gcn)),
1739
1825
  style: style
1740
- }, children == null ? void 0 : children.map(function (c, i) {
1826
+ }, childDefinitions == null ? void 0 : childDefinitions.map(function (c, i) {
1741
1827
  return renderChild(i, i);
1742
1828
  }))
1743
1829
  });
@@ -1824,19 +1910,28 @@ function createDefaultDataRenderer(options) {
1824
1910
  });
1825
1911
  };
1826
1912
  }
1913
+ var renderOptions = props.renderOptions;
1827
1914
  if (fieldType === exports.FieldType.Compound) {
1915
+ var groupOptions = isDataGroupRenderer(renderOptions) ? renderOptions.groupOptions : undefined;
1916
+ var style = props.style,
1917
+ className = props.className,
1918
+ childDefinitions = props.childDefinitions,
1919
+ renderChild = props.renderChild,
1920
+ dataContext = props.dataContext,
1921
+ useChildVisibility = props.useChildVisibility;
1828
1922
  return renderers.renderGroup({
1829
- style: props.style,
1830
- className: props.className,
1831
- children: props.children,
1832
- renderOptions: {
1923
+ style: style,
1924
+ className: className,
1925
+ childDefinitions: childDefinitions,
1926
+ renderOptions: groupOptions != null ? groupOptions : {
1833
1927
  type: "Standard",
1834
1928
  hideTitle: true
1835
1929
  },
1836
- renderChild: props.renderChild
1930
+ renderChild: renderChild,
1931
+ dataContext: dataContext,
1932
+ useChildVisibility: useChildVisibility
1837
1933
  });
1838
1934
  }
1839
- var renderOptions = props.renderOptions;
1840
1935
  var renderType = renderOptions.type;
1841
1936
  if (fieldType == exports.FieldType.Any) return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, "No control for Any");
1842
1937
  if (isDisplayOnlyRenderer(renderOptions)) return function (p) {
@@ -2051,6 +2146,18 @@ function createDataRenderer(render, options) {
2051
2146
  render: render
2052
2147
  }, options);
2053
2148
  }
2149
+ function createGroupRenderer(render, options) {
2150
+ return _extends({
2151
+ type: "group",
2152
+ render: render
2153
+ }, options);
2154
+ }
2155
+ function createDisplayRenderer(render, options) {
2156
+ return _extends({
2157
+ type: "display",
2158
+ render: render
2159
+ }, options);
2160
+ }
2054
2161
  function createLabelRenderer(render, options) {
2055
2162
  return _extends({
2056
2163
  type: "label",
@@ -2279,12 +2386,14 @@ exports.DefaultLayout = DefaultLayout;
2279
2386
  exports.DefaultVisibility = DefaultVisibility;
2280
2387
  exports.SelectDataRenderer = SelectDataRenderer;
2281
2388
  exports.WrapAdornmentPriority = WrapAdornmentPriority;
2282
- exports.addCustomDataRenderOptions = addCustomDataRenderOptions;
2389
+ exports.addFieldOption = addFieldOption;
2283
2390
  exports.addMissingControls = addMissingControls;
2284
2391
  exports.appendMarkup = appendMarkup;
2285
2392
  exports.appendMarkupAt = appendMarkupAt;
2286
2393
  exports.applyDefaultForField = applyDefaultForField;
2287
2394
  exports.applyDefaultValues = applyDefaultValues;
2395
+ exports.applyExtensionToSchema = applyExtensionToSchema;
2396
+ exports.applyExtensionsToSchema = applyExtensionsToSchema;
2288
2397
  exports.boolField = boolField;
2289
2398
  exports.buildSchema = buildSchema;
2290
2399
  exports.cleanDataForSchema = cleanDataForSchema;
@@ -2304,7 +2413,9 @@ exports.createDefaultGroupRenderer = createDefaultGroupRenderer;
2304
2413
  exports.createDefaultLabelRenderer = createDefaultLabelRenderer;
2305
2414
  exports.createDefaultRenderers = createDefaultRenderers;
2306
2415
  exports.createDefaultVisibilityRenderer = createDefaultVisibilityRenderer;
2416
+ exports.createDisplayRenderer = createDisplayRenderer;
2307
2417
  exports.createFormRenderer = createFormRenderer;
2418
+ exports.createGroupRenderer = createGroupRenderer;
2308
2419
  exports.createInputConversion = createInputConversion;
2309
2420
  exports.createLabelRenderer = createLabelRenderer;
2310
2421
  exports.createLayoutRenderer = createLayoutRenderer;
@@ -2353,6 +2464,7 @@ exports.isCompoundField = isCompoundField;
2353
2464
  exports.isControlReadonly = isControlReadonly;
2354
2465
  exports.isDataControl = isDataControl;
2355
2466
  exports.isDataControlDefinition = isDataControlDefinition;
2467
+ exports.isDataGroupRenderer = isDataGroupRenderer;
2356
2468
  exports.isDisplayControlsDefinition = isDisplayControlsDefinition;
2357
2469
  exports.isDisplayOnlyRenderer = isDisplayOnlyRenderer;
2358
2470
  exports.isFlexRenderer = isFlexRenderer;
@@ -2368,17 +2480,22 @@ exports.lookupChildControl = lookupChildControl;
2368
2480
  exports.lookupSchemaField = lookupSchemaField;
2369
2481
  exports.makeCompoundField = makeCompoundField;
2370
2482
  exports.makeEvalExpressionHook = makeEvalExpressionHook;
2483
+ exports.makeHook = makeHook;
2371
2484
  exports.makeScalarField = makeScalarField;
2372
2485
  exports.matchesType = matchesType;
2373
2486
  exports.mergeField = mergeField;
2487
+ exports.mergeFields = mergeFields;
2374
2488
  exports.renderControlLayout = renderControlLayout;
2375
2489
  exports.renderLayoutParts = renderLayoutParts;
2376
2490
  exports.rendererClass = rendererClass;
2491
+ exports.resolveSchemas = resolveSchemas;
2377
2492
  exports.stringField = stringField;
2378
2493
  exports.stringOptionsField = stringOptionsField;
2379
2494
  exports.textDisplayControl = textDisplayControl;
2495
+ exports.toDepString = toDepString;
2380
2496
  exports.useControlDefinitionForSchema = useControlDefinitionForSchema;
2381
2497
  exports.useControlRenderer = useControlRenderer;
2498
+ exports.useDynamicHooks = useDynamicHooks;
2382
2499
  exports.useEvalAllowedOptionsHook = useEvalAllowedOptionsHook;
2383
2500
  exports.useEvalDefaultValueHook = useEvalDefaultValueHook;
2384
2501
  exports.useEvalDisabledHook = useEvalDisabledHook;