@react-typed-forms/schemas 10.4.0 → 11.0.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.
@@ -154,8 +154,8 @@ export interface ControlRenderOptions extends FormContextOptions {
154
154
  elementIndex?: number;
155
155
  }
156
156
  export declare function useControlRenderer(definition: ControlDefinition, fields: SchemaField[], renderer: FormRenderer, options?: ControlRenderOptions): FC<ControlRenderProps>;
157
- export declare function lookupSchemaField(c: ControlDefinition, fields: SchemaField[]): SchemaField | undefined;
158
- export declare function getControlData(schemaField: SchemaField | undefined, parentContext: ControlDataContext, elementIndex: number | undefined): [Control<any> | undefined, Control<any> | undefined, ControlDataContext];
157
+ export declare function lookupSchemaField(c: ControlDefinition, fields: SchemaField[]): SchemaField[] | undefined;
158
+ export declare function getControlData(fieldPath: SchemaField[] | undefined, parentContext: ControlDataContext, elementIndex: number | undefined): [Control<any> | undefined, Control<any> | undefined, ControlDataContext];
159
159
  export declare function ControlRenderer({ definition, fields, renderer, options, control, parentPath, }: {
160
160
  definition: ControlDefinition;
161
161
  fields: SchemaField[];
package/lib/hooks.d.ts CHANGED
@@ -3,20 +3,21 @@ import React from "react";
3
3
  import { Control } from "@react-typed-forms/core";
4
4
  import { ControlDataContext, DataContext, DynamicHookGenerator } from "./util";
5
5
  export type EvalExpressionHook<A = any> = DynamicHookGenerator<Control<A | undefined>, ControlDataContext>;
6
- export type UseEvalExpressionHook = (expr: EntityExpression | undefined) => DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
7
- export declare function useEvalVisibilityHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, schemaField?: SchemaField): EvalExpressionHook<boolean>;
6
+ export type UseEvalExpressionHook = (expr: EntityExpression | undefined, coerce: (v: any) => any) => DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
7
+ export declare function useEvalVisibilityHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, fieldPath?: SchemaField[]): EvalExpressionHook<boolean>;
8
8
  export declare function useEvalReadonlyHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<boolean>;
9
9
  export declare function useEvalStyleHook(useEvalExpressionHook: UseEvalExpressionHook, property: DynamicPropertyType, definition: ControlDefinition): EvalExpressionHook<React.CSSProperties>;
10
10
  export declare function useEvalAllowedOptionsHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<any[]>;
11
11
  export declare function useEvalDisabledHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<boolean>;
12
12
  export declare function useEvalDisplayHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): DynamicHookGenerator<Control<string | undefined> | undefined, ControlDataContext>;
13
13
  export declare function useEvalDefaultValueHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, schemaField: SchemaField | undefined, element: boolean): EvalExpressionHook;
14
- export declare function defaultEvalHooks(expr: EntityExpression, context: ControlDataContext): Control<any>;
14
+ export declare function defaultEvalHooks(expr: EntityExpression, context: ControlDataContext, coerce: (v: any) => any): Control<any>;
15
15
  export declare const defaultUseEvalExpressionHook: UseEvalExpressionHook;
16
- export declare function makeEvalExpressionHook(f: (expr: EntityExpression, context: ControlDataContext) => Control<any>): UseEvalExpressionHook;
17
- export declare function useEvalDynamicHook(definition: ControlDefinition, type: DynamicPropertyType, useEvalExpressionHook: UseEvalExpressionHook): DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
18
- export declare function matchesType(context: ControlDataContext, types?: string[] | null): boolean | undefined;
19
- export declare function hideDisplayOnly(context: ControlDataContext, field: SchemaField, definition: ControlDefinition, schemaInterface: SchemaInterface): boolean | undefined;
20
- export declare function useJsonataExpression(jExpr: string, dataContext: DataContext, bindings?: () => Record<string, any>): Control<any>;
16
+ export declare function makeEvalExpressionHook(f: (expr: EntityExpression, context: ControlDataContext, coerce: (v: any) => any) => Control<any>): UseEvalExpressionHook;
17
+ export declare function useEvalDynamicBoolHook(definition: ControlDefinition, type: DynamicPropertyType, useEvalExpressionHook: UseEvalExpressionHook): DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
18
+ export declare function useEvalDynamicHook(definition: ControlDefinition, type: DynamicPropertyType, useEvalExpressionHook: UseEvalExpressionHook, coerce?: (v: any) => any): DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
19
+ export declare function matchesType(context: ControlDataContext, fieldPath?: SchemaField[]): boolean | undefined;
20
+ export declare function hideDisplayOnly(context: ControlDataContext, fieldPath: SchemaField[], definition: ControlDefinition, schemaInterface: SchemaInterface): boolean | undefined;
21
+ export declare function useJsonataExpression(jExpr: string, dataContext: DataContext, bindings?: () => Record<string, any>, coerce?: (v: any) => any): Control<any>;
21
22
  export declare function useEvalActionHook(useExpr: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<string | null>;
22
23
  export declare function useEvalLabelText(useExpr: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<string | null>;
package/lib/index.js CHANGED
@@ -420,11 +420,13 @@ function isControlReadonly(c) {
420
420
  function getDisplayOnlyOptions(d) {
421
421
  return isDataControlDefinition(d) && d.renderOptions && isDisplayOnlyRenderer(d.renderOptions) ? d.renderOptions : undefined;
422
422
  }
423
- function getTypeField(context) {
424
- var typeSchemaField = context.fields.find(function (x) {
423
+ function getTypeField(context, fieldPath) {
424
+ var withoutLast = fieldPath.slice(0, -1);
425
+ var fieldList = withoutLast.length > 0 ? withoutLast.at(-1).children : context.fields;
426
+ var typeSchemaField = fieldList.find(function (x) {
425
427
  return x.isTypeField;
426
428
  });
427
- return typeSchemaField ? lookupChildControl(context, typeSchemaField.field) : undefined;
429
+ return typeSchemaField ? lookupChildControl(context, [].concat(withoutLast, [typeSchemaField])) : undefined;
428
430
  }
429
431
  function visitControlDataArray(controls, context, cb) {
430
432
  if (!controls) return undefined;
@@ -479,8 +481,13 @@ function visitControlData(definition, ctx, cb) {
479
481
  }
480
482
  }
481
483
  }
482
- function lookupChildControl(data, child) {
483
- var childPath = [].concat(data.path, [child]);
484
+ function lookupChildControl(data, path) {
485
+ return lookupChildControlPath(data, path.map(function (x) {
486
+ return x.field;
487
+ }));
488
+ }
489
+ function lookupChildControlPath(data, jsonPath) {
490
+ var childPath = [].concat(data.path, jsonPath);
484
491
  return watchControlLookup(data.data, childPath);
485
492
  }
486
493
  function cleanDataForSchema(v, fields) {
@@ -625,6 +632,21 @@ function appendElementIndex(dataContext, elementIndex) {
625
632
  function applyLengthRestrictions(length, min, max, minValue, maxValue) {
626
633
  return [min == null || length > min ? minValue : undefined, max == null || length < max ? maxValue : undefined];
627
634
  }
635
+ function findFieldPath(fields, fieldPath) {
636
+ var fieldNames = fieldPath.split("/");
637
+ var foundFields = [];
638
+ var i = 0;
639
+ var currentFields = fields;
640
+ while (i < fieldNames.length && currentFields) {
641
+ var cf = fieldNames[i];
642
+ var nextField = findField(currentFields, cf);
643
+ if (!nextField) return undefined;
644
+ foundFields.push(nextField);
645
+ currentFields = isCompoundField(nextField) && !nextField.collection ? nextField.children : undefined;
646
+ i++;
647
+ }
648
+ return foundFields.length === fieldNames.length ? foundFields : undefined;
649
+ }
628
650
 
629
651
  function buildSchema(def) {
630
652
  return Object.entries(def).map(function (x) {
@@ -885,43 +907,6 @@ function applyExtensionsToSchema(schemaMap, extensions) {
885
907
  return resolveSchemas(extensions.reduce(applyExtensionToSchema, schemaMap));
886
908
  }
887
909
 
888
- function useCalculatedControl(calculate) {
889
- var c = core.useControl(calculate);
890
- core.useControlEffect(calculate, function (v) {
891
- return c.value = v;
892
- });
893
- return c;
894
- }
895
- function cc(n) {
896
- return n ? n : undefined;
897
- }
898
- function trackedStructure(c, tracker) {
899
- var cc = c.current;
900
- var cv = cc.value;
901
- if (cv == null) {
902
- tracker(c, core.ControlChange.Structure);
903
- return cv;
904
- }
905
- if (typeof cv !== "object") {
906
- tracker(c, core.ControlChange.Value);
907
- return cv;
908
- }
909
- return new Proxy(cv, {
910
- get: function get(target, p, receiver) {
911
- if (Array.isArray(cv)) {
912
- tracker(c, core.ControlChange.Structure);
913
- if (typeof p === "symbol" || p[0] >= "9" || p[0] < "0") return Reflect.get(cv, p);
914
- var nc = cc.elements[p];
915
- if (typeof nc === "function") return nc;
916
- if (nc == null) return null;
917
- return trackedStructure(nc, tracker);
918
- }
919
- if (p in cc.fields || p in cv) return trackedStructure(cc.fields[p], tracker);
920
- return undefined;
921
- }
922
- });
923
- }
924
-
925
910
  function _finallyRethrows(body, finalizer) {
926
911
  try {
927
912
  var result = body();
@@ -933,24 +918,24 @@ function _finallyRethrows(body, finalizer) {
933
918
  }
934
919
  return finalizer(false, result);
935
920
  }
936
- function useEvalVisibilityHook(useEvalExpressionHook, definition, schemaField) {
937
- var dynamicVisibility = useEvalDynamicHook(definition, exports.DynamicPropertyType.Visible, useEvalExpressionHook);
921
+ function useEvalVisibilityHook(useEvalExpressionHook, definition, fieldPath) {
922
+ var dynamicVisibility = useEvalDynamicBoolHook(definition, exports.DynamicPropertyType.Visible, useEvalExpressionHook);
938
923
  return makeDynamicPropertyHook(dynamicVisibility, function (ctx, _ref) {
939
- var schemaField = _ref.schemaField,
924
+ var fieldPath = _ref.fieldPath,
940
925
  definition = _ref.definition;
941
926
  return core.useComputed(function () {
942
- return matchesType(ctx, schemaField == null ? void 0 : schemaField.onlyForTypes) && (!schemaField || !hideDisplayOnly(ctx, schemaField, definition, ctx.schemaInterface));
927
+ return matchesType(ctx, fieldPath) && (!fieldPath || !hideDisplayOnly(ctx, fieldPath, definition, ctx.schemaInterface));
943
928
  });
944
929
  }, {
945
- schemaField: schemaField,
930
+ fieldPath: fieldPath,
946
931
  definition: definition
947
932
  });
948
933
  }
949
934
  function useEvalReadonlyHook(useEvalExpressionHook, definition) {
950
- var dynamicReadonly = useEvalDynamicHook(definition, exports.DynamicPropertyType.Readonly, useEvalExpressionHook);
935
+ var dynamicReadonly = useEvalDynamicBoolHook(definition, exports.DynamicPropertyType.Readonly, useEvalExpressionHook);
951
936
  return makeDynamicPropertyHook(dynamicReadonly, function (ctx, _ref2) {
952
937
  var definition = _ref2.definition;
953
- return useCalculatedControl(function () {
938
+ return core.useCalculatedControl(function () {
954
939
  return isControlReadonly(definition);
955
940
  });
956
941
  }, {
@@ -970,7 +955,7 @@ function useEvalAllowedOptionsHook(useEvalExpressionHook, definition) {
970
955
  }, undefined);
971
956
  }
972
957
  function useEvalDisabledHook(useEvalExpressionHook, definition) {
973
- var dynamicDisabled = useEvalDynamicHook(definition, exports.DynamicPropertyType.Disabled, useEvalExpressionHook);
958
+ var dynamicDisabled = useEvalDynamicBoolHook(definition, exports.DynamicPropertyType.Disabled, useEvalExpressionHook);
974
959
  return makeDynamicPropertyHook(dynamicDisabled, function () {
975
960
  return core.useControl(false);
976
961
  }, undefined);
@@ -995,63 +980,89 @@ function useEvalDefaultValueHook(useEvalExpressionHook, definition, schemaField,
995
980
  schemaField: schemaField
996
981
  });
997
982
  }
998
- function useDataExpression(fvExpr, fields, data) {
999
- var refField = findField(fields, fvExpr.field);
1000
- var otherField = refField ? lookupChildControl(data, refField.field) : undefined;
1001
- return useCalculatedControl(function () {
1002
- return otherField == null ? void 0 : otherField.value;
983
+ function useDataExpression(fvExpr, fields, data, coerce) {
984
+ if (coerce === void 0) {
985
+ coerce = function coerce(x) {
986
+ return x;
987
+ };
988
+ }
989
+ var refField = findFieldPath(fields, fvExpr.field);
990
+ var otherField = refField ? lookupChildControl(data, refField) : undefined;
991
+ return core.useCalculatedControl(function () {
992
+ return coerce(otherField == null ? void 0 : otherField.value);
1003
993
  });
1004
994
  }
1005
- function useDataMatchExpression(fvExpr, fields, data) {
1006
- var refField = findField(fields, fvExpr.field);
1007
- var otherField = refField ? lookupChildControl(data, refField.field) : undefined;
1008
- return core.useComputed(function () {
995
+ function useDataMatchExpression(fvExpr, fields, data, coerce) {
996
+ if (coerce === void 0) {
997
+ coerce = function coerce(x) {
998
+ return x;
999
+ };
1000
+ }
1001
+ var refField = findFieldPath(fields, fvExpr.field);
1002
+ var otherField = refField ? lookupChildControl(data, refField) : undefined;
1003
+ return core.useCalculatedControl(function () {
1009
1004
  var fv = otherField == null ? void 0 : otherField.value;
1010
- return Array.isArray(fv) ? fv.includes(fvExpr.value) : fv === fvExpr.value;
1005
+ return coerce(Array.isArray(fv) ? fv.includes(fvExpr.value) : fv === fvExpr.value);
1011
1006
  });
1012
1007
  }
1013
- function defaultEvalHooks(expr, context) {
1008
+ function defaultEvalHooks(expr, context, coerce) {
1014
1009
  switch (expr.type) {
1015
1010
  case exports.ExpressionType.Jsonata:
1016
- return useJsonataExpression(expr.expression, context);
1011
+ return useJsonataExpression(expr.expression, context, undefined, coerce);
1017
1012
  case exports.ExpressionType.Data:
1018
- return useDataExpression(expr, context.fields, context);
1013
+ return useDataExpression(expr, context.fields, context, coerce);
1019
1014
  case exports.ExpressionType.DataMatch:
1020
- return useDataMatchExpression(expr, context.fields, context);
1015
+ return useDataMatchExpression(expr, context.fields, context, coerce);
1021
1016
  default:
1022
1017
  return core.useControl(undefined);
1023
1018
  }
1024
1019
  }
1025
1020
  var defaultUseEvalExpressionHook = makeEvalExpressionHook(defaultEvalHooks);
1026
1021
  function makeEvalExpressionHook(f) {
1027
- return function (expr) {
1022
+ return function (expr, coerce) {
1028
1023
  return {
1029
1024
  deps: expr == null ? void 0 : expr.type,
1030
1025
  state: expr,
1031
1026
  runHook: function runHook(ctx, state) {
1032
- return state ? f(state, ctx) : undefined;
1027
+ return state ? f(state, ctx, coerce) : undefined;
1033
1028
  }
1034
1029
  };
1035
1030
  };
1036
1031
  }
1037
- function useEvalDynamicHook(definition, type, useEvalExpressionHook) {
1032
+ function useEvalDynamicBoolHook(definition, type, useEvalExpressionHook) {
1033
+ return useEvalDynamicHook(definition, type, useEvalExpressionHook, function (x) {
1034
+ return Boolean(x);
1035
+ });
1036
+ }
1037
+ function useEvalDynamicHook(definition, type, useEvalExpressionHook, coerce) {
1038
1038
  var _definition$dynamic;
1039
+ if (coerce === void 0) {
1040
+ coerce = function coerce(x) {
1041
+ return x;
1042
+ };
1043
+ }
1039
1044
  var expression = (_definition$dynamic = definition.dynamic) == null ? void 0 : _definition$dynamic.find(function (x) {
1040
1045
  return x.type === type;
1041
1046
  });
1042
- return useEvalExpressionHook(expression == null ? void 0 : expression.expr);
1047
+ return useEvalExpressionHook(expression == null ? void 0 : expression.expr, coerce);
1043
1048
  }
1044
- function matchesType(context, types) {
1049
+ function matchesType(context, fieldPath) {
1050
+ var types = fieldPath ? fieldPath[fieldPath.length - 1].onlyForTypes : undefined;
1045
1051
  if (types == null || types.length === 0) return true;
1046
- var typeField = getTypeField(context);
1052
+ var typeField = getTypeField(context, fieldPath);
1047
1053
  return typeField && types.includes(typeField.value);
1048
1054
  }
1049
- function hideDisplayOnly(context, field, definition, schemaInterface) {
1055
+ function hideDisplayOnly(context, fieldPath, definition, schemaInterface) {
1050
1056
  var _lookupChildControl;
1051
1057
  var displayOptions = getDisplayOnlyOptions(definition);
1052
- return displayOptions && !displayOptions.emptyText && schemaInterface.isEmptyValue(field, (_lookupChildControl = lookupChildControl(context, field.field)) == null ? void 0 : _lookupChildControl.value);
1058
+ return displayOptions && !displayOptions.emptyText && schemaInterface.isEmptyValue(fieldPath.at(-1), (_lookupChildControl = lookupChildControl(context, fieldPath)) == null ? void 0 : _lookupChildControl.value);
1053
1059
  }
1054
- function useJsonataExpression(jExpr, dataContext, bindings) {
1060
+ function useJsonataExpression(jExpr, dataContext, bindings, coerce) {
1061
+ if (coerce === void 0) {
1062
+ coerce = function coerce(x) {
1063
+ return x;
1064
+ };
1065
+ }
1055
1066
  var pathString = jsonPathString(dataContext.path, function (x) {
1056
1067
  return "#$i[" + x + "]";
1057
1068
  });
@@ -1087,8 +1098,9 @@ function useJsonataExpression(jExpr, dataContext, bindings) {
1087
1098
  updateSubscriptions = _ref$current[1];
1088
1099
  var _temp = _finallyRethrows(function () {
1089
1100
  var bindingData = bindings ? core.collectChanges(collect, bindings) : undefined;
1090
- return Promise.resolve(compiledExpr.evaluate(trackedStructure(dataContext.data, collect), bindingData)).then(function (_compiledExpr$evaluat) {
1091
- control.value = _compiledExpr$evaluat;
1101
+ var _coerce = coerce;
1102
+ return Promise.resolve(compiledExpr.evaluate(core.trackedValue(dataContext.data, collect), bindingData)).then(function (_compiledExpr$evaluat) {
1103
+ control.value = _coerce(_compiledExpr$evaluat);
1092
1104
  });
1093
1105
  }, function (_wasThrown, _result) {
1094
1106
  updateSubscriptions();
@@ -1150,8 +1162,8 @@ function useValidationHook(definition, field) {
1150
1162
  return control.setError("default", "");
1151
1163
  });
1152
1164
  core.useValidator(control, function (v) {
1153
- return !hidden && dd.required && (v == null || v === "" || Array.isArray(v) && v.length === 0) ? "Please enter a value" : null;
1154
- }, "required");
1165
+ return !hidden && dd.required && field && schemaInterface.isEmptyValue(field, v) ? "Please enter a value" : null;
1166
+ }, "required", undefined, [hidden, dd.required, !!field]);
1155
1167
  ((_dd$validators = dd.validators) != null ? _dd$validators : []).forEach(function (x, i) {
1156
1168
  switch (x.type) {
1157
1169
  case exports.ValidatorType.Length:
@@ -1224,6 +1236,10 @@ function useDateValidator(control, dv, i) {
1224
1236
  }, "date" + i);
1225
1237
  }
1226
1238
 
1239
+ function cc(n) {
1240
+ return n ? n : undefined;
1241
+ }
1242
+
1227
1243
  var DefaultSchemaInterface = /*#__PURE__*/function () {
1228
1244
  function DefaultSchemaInterface() {}
1229
1245
  var _proto = DefaultSchemaInterface.prototype;
@@ -1275,10 +1291,11 @@ function useControlRenderer(definition, fields, renderer, options) {
1275
1291
  var elementIndex = options.elementIndex;
1276
1292
  var schemaInterface = (_options$schemaInterf = options.schemaInterface) != null ? _options$schemaInterf : defaultSchemaInterface;
1277
1293
  var useExpr = (_options$useEvalExpre = options.useEvalExpressionHook) != null ? _options$useEvalExpre : defaultUseEvalExpressionHook;
1278
- var schemaField = lookupSchemaField(definition, fields);
1294
+ var fieldPath = lookupSchemaField(definition, fields);
1295
+ var schemaField = fieldPath == null ? void 0 : fieldPath.at(-1);
1279
1296
  var dynamicHooks = useDynamicHooks({
1280
1297
  defaultValueControl: useEvalDefaultValueHook(useExpr, definition, schemaField, elementIndex != null),
1281
- visibleControl: useEvalVisibilityHook(useExpr, definition, schemaField),
1298
+ visibleControl: useEvalVisibilityHook(useExpr, definition, fieldPath),
1282
1299
  readonlyControl: useEvalReadonlyHook(useExpr, definition),
1283
1300
  disabledControl: useEvalDisabledHook(useExpr, definition),
1284
1301
  allowedOptions: useEvalAllowedOptionsHook(useExpr, definition),
@@ -1293,7 +1310,7 @@ function useControlRenderer(definition, fields, renderer, options) {
1293
1310
  options: options,
1294
1311
  definition: definition,
1295
1312
  fields: fields,
1296
- schemaField: schemaField,
1313
+ fieldPath: fieldPath,
1297
1314
  elementIndex: elementIndex
1298
1315
  });
1299
1316
  var Component = React.useCallback(function (_ref) {
@@ -1307,8 +1324,9 @@ function useControlRenderer(definition, fields, renderer, options) {
1307
1324
  c = _r$current.definition,
1308
1325
  _options = _r$current.options,
1309
1326
  _fields = _r$current.fields,
1310
- _schemaField = _r$current.schemaField,
1327
+ _fieldPath = _r$current.fieldPath,
1311
1328
  _elementIndex = _r$current.elementIndex;
1329
+ var _schemaField = _fieldPath == null ? void 0 : _fieldPath.at(-1);
1312
1330
  var parentDataContext = {
1313
1331
  fields: _fields,
1314
1332
  schemaInterface: schemaInterface,
@@ -1343,7 +1361,7 @@ function useControlRenderer(definition, fields, renderer, options) {
1343
1361
  };
1344
1362
  });
1345
1363
  });
1346
- var _getControlData = getControlData(_schemaField, parentDataContext, _elementIndex),
1364
+ var _getControlData = getControlData(_fieldPath, parentDataContext, _elementIndex),
1347
1365
  parentControl = _getControlData[0],
1348
1366
  control = _getControlData[1],
1349
1367
  controlDataContext = _getControlData[2];
@@ -1369,7 +1387,7 @@ function useControlRenderer(definition, fields, renderer, options) {
1369
1387
  parentControl.value = {};
1370
1388
  }
1371
1389
  }, true);
1372
- var myOptions = useCalculatedControl(function () {
1390
+ var myOptions = core.useCalculatedControl(function () {
1373
1391
  var _visibility$fields;
1374
1392
  return {
1375
1393
  hidden: _options.hidden || !((_visibility$fields = visibility.fields) != null && _visibility$fields.showing.value),
@@ -1443,12 +1461,17 @@ function useControlRenderer(definition, fields, renderer, options) {
1443
1461
  }
1444
1462
  function lookupSchemaField(c, fields) {
1445
1463
  var fieldName = isGroupControlsDefinition(c) ? c.compoundField : isDataControlDefinition(c) ? c.field : undefined;
1446
- return fieldName ? findField(fields, fieldName) : undefined;
1464
+ return fieldName ? findFieldPath(fields, fieldName) : undefined;
1447
1465
  }
1448
- function getControlData(schemaField, parentContext, elementIndex) {
1449
- var _parentControl$fields, _childControl$element;
1466
+ function getControlData(fieldPath, parentContext, elementIndex) {
1467
+ var _fieldPath$slice$map, _parentControl$fields, _childControl$element;
1450
1468
  var data = parentContext.data,
1451
- path = parentContext.path;
1469
+ pp = parentContext.path;
1470
+ var extraPath = (_fieldPath$slice$map = fieldPath == null ? void 0 : fieldPath.slice(0, -1).map(function (x) {
1471
+ return x.field;
1472
+ })) != null ? _fieldPath$slice$map : [];
1473
+ var path = [].concat(pp, extraPath);
1474
+ var schemaField = fieldPath == null ? void 0 : fieldPath.at(-1);
1452
1475
  var parentControl = data.lookupControl(path);
1453
1476
  var childPath = schemaField ? elementIndex != null ? [].concat(path, [schemaField.field, elementIndex]) : [].concat(path, [schemaField.field]) : path;
1454
1477
  var childControl = schemaField && parentControl ? (_parentControl$fields = parentControl.fields) == null ? void 0 : _parentControl$fields[schemaField.field] : undefined;
@@ -2743,6 +2766,7 @@ exports.findCompoundField = findCompoundField;
2743
2766
  exports.findCompoundGroups = findCompoundGroups;
2744
2767
  exports.findControlsForCompound = findControlsForCompound;
2745
2768
  exports.findField = findField;
2769
+ exports.findFieldPath = findFieldPath;
2746
2770
  exports.findNonDataGroups = findNonDataGroups;
2747
2771
  exports.findScalarField = findScalarField;
2748
2772
  exports.getAllReferencedClasses = getAllReferencedClasses;
@@ -2774,6 +2798,7 @@ exports.jsonPathString = jsonPathString;
2774
2798
  exports.jsonataExpr = jsonataExpr;
2775
2799
  exports.layoutKeyForPlacement = layoutKeyForPlacement;
2776
2800
  exports.lookupChildControl = lookupChildControl;
2801
+ exports.lookupChildControlPath = lookupChildControlPath;
2777
2802
  exports.lookupSchemaField = lookupSchemaField;
2778
2803
  exports.makeCompoundField = makeCompoundField;
2779
2804
  exports.makeEvalExpressionHook = makeEvalExpressionHook;
@@ -2799,6 +2824,7 @@ exports.useEvalAllowedOptionsHook = useEvalAllowedOptionsHook;
2799
2824
  exports.useEvalDefaultValueHook = useEvalDefaultValueHook;
2800
2825
  exports.useEvalDisabledHook = useEvalDisabledHook;
2801
2826
  exports.useEvalDisplayHook = useEvalDisplayHook;
2827
+ exports.useEvalDynamicBoolHook = useEvalDynamicBoolHook;
2802
2828
  exports.useEvalDynamicHook = useEvalDynamicHook;
2803
2829
  exports.useEvalLabelText = useEvalLabelText;
2804
2830
  exports.useEvalReadonlyHook = useEvalReadonlyHook;
@@ -2810,6 +2836,7 @@ exports.useValidationHook = useValidationHook;
2810
2836
  exports.visitControlData = visitControlData;
2811
2837
  exports.visitControlDataArray = visitControlDataArray;
2812
2838
  exports.visitControlDefinition = visitControlDefinition;
2839
+ exports.watchControlLookup = watchControlLookup;
2813
2840
  exports.withScalarOptions = withScalarOptions;
2814
2841
  exports.wrapMarkup = wrapMarkup;
2815
2842
  exports.wrapMarkupAt = wrapMarkupAt;