@process.co/ui 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -4880,21 +4880,21 @@ function cn() {
4880
4880
  return twMerge(clsx(inputs));
4881
4881
  }
4882
4882
  // src/components/ui/button.tsx
4883
- var buttonVariants = cva("ui:inline-flex ui:items-center ui:justify-center ui:gap-2 ui:whitespace-nowrap ui:rounded-sm ui:text-sm ui:font-medium ui:transition-[color,box-shadow] ui:disabled:pointer-events-none ui:disabled:opacity-50 ui:[&_svg]:pointer-events-none ui:[&_svg:not([class*=size-])]:size-4 ui:shrink-0 ui:[&_svg]:shrink-0 ui:outline-none ui:focus-visible:border-ring ui:focus-visible:ring-ring/50 ui:focus-visible:ring-[3px] ui:aria-invalid:ring-destructive/20 ui:dark:aria-invalid:ring-destructive/40 ui:aria-invalid:border-destructive ui:cursor-pointer", {
4883
+ var buttonVariants = cva("uii:inline-flex uii:items-center uii:justify-center uii:gap-2 uii:whitespace-nowrap uii:rounded-sm uii:text-sm uii:font-medium uii:transition-[color,box-shadow] uii:disabled:pointer-events-none uii:disabled:opacity-50 uii:[&_svg]:pointer-events-none uii:[&_svg:not([class*=size-])]:size-4 uii:shrink-0 uii:[&_svg]:shrink-0 uii:outline-none uii:focus-visible:border-ring uii:focus-visible:ring-ring/50 uii:focus-visible:ring-[3px] uii:aria-invalid:ring-destructive/20 uii:dark:aria-invalid:ring-destructive/40 uii:aria-invalid:border-destructive uii:cursor-pointer", {
4884
4884
  variants: {
4885
4885
  variant: {
4886
- default: "ui:bg-primary ui:text-primary-foreground ui:shadow-xs ui:hover:bg-primary/90 ui:select-none",
4887
- destructive: "ui:bg-destructive ui:text-white ui:shadow-xs ui:hover:bg-destructive/90 ui:focus-visible:ring-destructive/20 ui:dark:focus-visible:ring-destructive/40",
4888
- outline: "ui:border ui:border-input ui:bg-background ui:shadow-xs ui:hover:bg-accent ui:hover:text-accent-foreground",
4889
- secondary: "ui:bg-secondary ui:text-secondary-foreground ui:shadow-xs ui:hover:bg-secondary/80",
4890
- ghost: "ui:hover:bg-accent ui:hover:text-accent-foreground",
4891
- link: "ui:text-primary ui:underline-offset-4 ui:hover:underline"
4886
+ default: "uii:bg-primary uii:text-primary-foreground uii:shadow-xs uii:hover:bg-primary/90 uii:select-none",
4887
+ destructive: "uii:bg-destructive uii:text-white uii:shadow-xs uii:hover:bg-destructive/90 uii:focus-visible:ring-destructive/20 uii:dark:focus-visible:ring-destructive/40",
4888
+ outline: "uii:border uii:border-input uii:bg-background uii:shadow-xs uii:hover:bg-accent uii:hover:text-accent-foreground",
4889
+ secondary: "uii:bg-secondary uii:text-secondary-foreground uii:shadow-xs uii:hover:bg-secondary/80",
4890
+ ghost: "uii:hover:bg-accent uii:hover:text-accent-foreground",
4891
+ link: "uii:text-primary uii:underline-offset-4 uii:hover:underline"
4892
4892
  },
4893
4893
  size: {
4894
- default: "ui:h-9 ui:px-4 ui:py-2 ui:has-[>svg]:px-3",
4895
- sm: "ui:h-8 ui:rounded-sm ui:gap-1.5 ui:px-3 ui:has-[>svg]:px-2.5",
4896
- lg: "ui:h-10 ui:rounded-sm ui:px-6 ui:has-[>svg]:px-4",
4897
- icon: "ui:size-9"
4894
+ default: "uii:h-9 uii:px-4 uii:py-2 uii:has-[>svg]:px-3",
4895
+ sm: "uii:h-8 uii:rounded-sm uii:gap-1.5 uii:px-3 uii:has-[>svg]:px-2.5",
4896
+ lg: "uii:h-10 uii:rounded-sm uii:px-6 uii:has-[>svg]:px-4",
4897
+ icon: "uii:size-9"
4898
4898
  }
4899
4899
  },
4900
4900
  defaultVariants: {
@@ -5151,6 +5151,12 @@ __export(fields_exports, {
5151
5151
  useAllInferredTypes: function() {
5152
5152
  return useAllInferredTypes;
5153
5153
  },
5154
+ useClearAllInferredTypes: function() {
5155
+ return useClearAllInferredTypes;
5156
+ },
5157
+ useClearInferredType: function() {
5158
+ return useClearInferredType;
5159
+ },
5154
5160
  useFieldPath: function() {
5155
5161
  return useFieldPath;
5156
5162
  },
@@ -5183,10 +5189,58 @@ __export(fields_exports, {
5183
5189
  },
5184
5190
  useTemplateFieldContext: function() {
5185
5191
  return useTemplateFieldContext;
5192
+ },
5193
+ useTriggerLayoutUpdate: function() {
5194
+ return useTriggerLayoutUpdate;
5186
5195
  }
5187
5196
  });
5197
+ var DevContext = React2.createContext(null);
5198
+ function useResolvedExpectedType(expectedType, devCtx) {
5199
+ var inferredTypes = devCtx === null || devCtx === void 0 ? void 0 : devCtx.inferredTypes;
5200
+ return React2__namespace.useMemo(function() {
5201
+ var _match_;
5202
+ if (!expectedType) return "any";
5203
+ if (!expectedType.startsWith("$infer<")) {
5204
+ return expectedType;
5205
+ }
5206
+ var match = expectedType.match(/^\$infer<(.+)>$/);
5207
+ if (!match) return expectedType;
5208
+ var content = ((_match_ = match[1]) === null || _match_ === void 0 ? void 0 : _match_.trim()) || "";
5209
+ if (content.startsWith("[") && content.endsWith("]")) {
5210
+ var arrayContent = content.slice(1, -1);
5211
+ var fieldNames = arrayContent.split(",").map(function(s) {
5212
+ return s.trim().replace(/^["']|["']$/g, "");
5213
+ }).filter(Boolean);
5214
+ if (!inferredTypes) {
5215
+ return "Subscribing to: ".concat(fieldNames.join(", "));
5216
+ }
5217
+ var types = fieldNames.map(function(name) {
5218
+ return inferredTypes[name];
5219
+ }).filter(function(t) {
5220
+ return !!t && t.length > 0;
5221
+ });
5222
+ if (types.length === 0) {
5223
+ return "Waiting for: ".concat(fieldNames.join(", "));
5224
+ }
5225
+ return types.length === 1 ? types[0] : types.join(" & ");
5226
+ }
5227
+ if (!content.includes("|") && /^[a-zA-Z_][a-zA-Z0-9_\-]*$/.test(content)) {
5228
+ if (!inferredTypes) {
5229
+ return "Subscribing to: ".concat(content);
5230
+ }
5231
+ var resolvedType = inferredTypes[content];
5232
+ return resolvedType || "Waiting for: ".concat(content);
5233
+ }
5234
+ return content;
5235
+ }, [
5236
+ expectedType,
5237
+ inferredTypes
5238
+ ]);
5239
+ }
5188
5240
  function Input(param) {
5189
5241
  var fieldName = param.fieldName, label = param.label, value = param.value, onChange = param.onChange, _param_disabled = param.disabled, disabled = _param_disabled === void 0 ? false : _param_disabled, placeholder = param.placeholder, _param_expectedType = param.expectedType, expectedType = _param_expectedType === void 0 ? "string" : _param_expectedType, _param_required = param.required, required = _param_required === void 0 ? false : _param_required, _param_hasRequiredError = param.hasRequiredError, hasRequiredError = _param_hasRequiredError === void 0 ? false : _param_hasRequiredError, className = param.className, editorClassName = param.editorClassName;
5242
+ var devCtx = React2.useContext(DevContext);
5243
+ var resolvedExpectedType = useResolvedExpectedType(expectedType, devCtx);
5190
5244
  var displayValue = React2__namespace.useMemo(function() {
5191
5245
  if (value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value) {
5192
5246
  return value.expression || "";
@@ -5214,6 +5268,7 @@ function Input(param) {
5214
5268
  onChange
5215
5269
  ]);
5216
5270
  var showError = hasRequiredError || required && !displayValue;
5271
+ var isWaiting = resolvedExpectedType.startsWith("Waiting for:") || resolvedExpectedType.startsWith("Subscribing to:");
5217
5272
  return /* @__PURE__ */ React2__namespace.createElement("div", {
5218
5273
  className: cn("uii:mb-2", className)
5219
5274
  }, /* @__PURE__ */ React2__namespace.createElement("div", {
@@ -5221,9 +5276,10 @@ function Input(param) {
5221
5276
  }, /* @__PURE__ */ React2__namespace.createElement("label", {
5222
5277
  htmlFor: fieldName,
5223
5278
  className: "uii:text-xs uii:font-bold uii:text-muted-foreground"
5224
- }, label, ":"), expectedType !== "$.interface.timer" && /* @__PURE__ */ React2__namespace.createElement("span", {
5225
- className: "uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-gray-200 uii:rounded-sm uii:text-[10px] uii:font-mono uii:text-muted-foreground uii:font-light"
5226
- }, expectedType), showError && /* @__PURE__ */ React2__namespace.createElement("span", {
5279
+ }, label, ":"), resolvedExpectedType !== "$.interface.timer" && /* @__PURE__ */ React2__namespace.createElement("span", {
5280
+ className: cn("uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:rounded-sm uii:text-[10px] uii:font-mono uii:font-light uii:max-w-[300px] uii:truncate", isWaiting ? "uii:bg-yellow-100 uii:text-yellow-700" : "uii:bg-gray-200 uii:text-muted-foreground"),
5281
+ title: resolvedExpectedType
5282
+ }, resolvedExpectedType), showError && /* @__PURE__ */ React2__namespace.createElement("span", {
5227
5283
  className: "uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-red-100 uii:text-red-600 uii:rounded-sm uii:text-[10px] uii:font-medium"
5228
5284
  }, "Required")), /* @__PURE__ */ React2__namespace.createElement("div", {
5229
5285
  className: "uii:mt-0.5"
@@ -5320,8 +5376,52 @@ function SelectScrollDownButton(_param) {
5320
5376
  }));
5321
5377
  }
5322
5378
  // src/components/fields/Select.tsx
5379
+ function useResolvedExpectedType2(expectedType, devCtx) {
5380
+ var inferredTypes = devCtx === null || devCtx === void 0 ? void 0 : devCtx.inferredTypes;
5381
+ return React2__namespace.useMemo(function() {
5382
+ var _match_;
5383
+ if (!expectedType) return "any";
5384
+ if (!expectedType.startsWith("$infer<")) {
5385
+ return expectedType;
5386
+ }
5387
+ var match = expectedType.match(/^\$infer<(.+)>$/);
5388
+ if (!match) return expectedType;
5389
+ var content = ((_match_ = match[1]) === null || _match_ === void 0 ? void 0 : _match_.trim()) || "";
5390
+ if (content.startsWith("[") && content.endsWith("]")) {
5391
+ var arrayContent = content.slice(1, -1);
5392
+ var fieldNames = arrayContent.split(",").map(function(s) {
5393
+ return s.trim().replace(/^["']|["']$/g, "");
5394
+ }).filter(Boolean);
5395
+ if (!inferredTypes) {
5396
+ return "Subscribing to: ".concat(fieldNames.join(", "));
5397
+ }
5398
+ var types = fieldNames.map(function(name) {
5399
+ return inferredTypes[name];
5400
+ }).filter(function(t) {
5401
+ return !!t && t.length > 0;
5402
+ });
5403
+ if (types.length === 0) {
5404
+ return "Waiting for: ".concat(fieldNames.join(", "));
5405
+ }
5406
+ return types.length === 1 ? types[0] : types.join(" & ");
5407
+ }
5408
+ if (!content.includes("|") && /^[a-zA-Z_][a-zA-Z0-9_\-]*$/.test(content)) {
5409
+ if (!inferredTypes) {
5410
+ return "Subscribing to: ".concat(content);
5411
+ }
5412
+ var resolvedType = inferredTypes[content];
5413
+ return resolvedType || "Waiting for: ".concat(content);
5414
+ }
5415
+ return content;
5416
+ }, [
5417
+ expectedType,
5418
+ inferredTypes
5419
+ ]);
5420
+ }
5323
5421
  function Select2(param) {
5324
5422
  var fieldName = param.fieldName, label = param.label, value = param.value, onChange = param.onChange, rawOptions = param.options, _param_disabled = param.disabled, disabled = _param_disabled === void 0 ? false : _param_disabled, placeholder = param.placeholder, _param_expectedType = param.expectedType, expectedType = _param_expectedType === void 0 ? "string" : _param_expectedType, _param_required = param.required, required = _param_required === void 0 ? false : _param_required, _param_hasRequiredError = param.hasRequiredError, hasRequiredError = _param_hasRequiredError === void 0 ? false : _param_hasRequiredError, className = param.className, children = param.children;
5423
+ var devCtx = React2.useContext(DevContext);
5424
+ var resolvedExpectedType = useResolvedExpectedType2(expectedType, devCtx);
5325
5425
  var _React2__namespace_useState = _sliced_to_array(React2__namespace.useState(false), 2), isExpressionMode = _React2__namespace_useState[0], setIsExpressionMode = _React2__namespace_useState[1];
5326
5426
  var _React2__namespace_useState1 = _sliced_to_array(React2__namespace.useState(""), 2), expressionValue = _React2__namespace_useState1[0], setExpressionValue = _React2__namespace_useState1[1];
5327
5427
  var options = React2__namespace.useMemo(function() {
@@ -5410,6 +5510,7 @@ function Select2(param) {
5410
5510
  },
5411
5511
  hasError: showError
5412
5512
  };
5513
+ var isWaiting = resolvedExpectedType.startsWith("Waiting for:") || resolvedExpectedType.startsWith("Subscribing to:");
5413
5514
  return /* @__PURE__ */ React2__namespace.createElement("div", {
5414
5515
  className: cn("uii:mb-2", className)
5415
5516
  }, /* @__PURE__ */ React2__namespace.createElement("div", {
@@ -5417,9 +5518,10 @@ function Select2(param) {
5417
5518
  }, /* @__PURE__ */ React2__namespace.createElement("label", {
5418
5519
  htmlFor: fieldName,
5419
5520
  className: "uii:text-xs uii:font-bold uii:text-muted-foreground"
5420
- }, label, ":"), expectedType !== "$.interface.timer" && /* @__PURE__ */ React2__namespace.createElement("span", {
5421
- className: "uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-gray-200 uii:rounded-sm uii:text-[10px] uii:font-mono uii:text-muted-foreground uii:font-light"
5422
- }, expectedType), showError && /* @__PURE__ */ React2__namespace.createElement("span", {
5521
+ }, label, ":"), resolvedExpectedType !== "$.interface.timer" && /* @__PURE__ */ React2__namespace.createElement("span", {
5522
+ className: cn("uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:rounded-sm uii:text-[10px] uii:font-mono uii:font-light uii:max-w-[300px] uii:truncate", isWaiting ? "uii:bg-yellow-100 uii:text-yellow-700" : "uii:bg-gray-200 uii:text-muted-foreground"),
5523
+ title: resolvedExpectedType
5524
+ }, resolvedExpectedType), showError && /* @__PURE__ */ React2__namespace.createElement("span", {
5423
5525
  className: "uii:-mt-2 uii:inline-flex uii:px-1 uii:py-0.5 uii:bg-red-100 uii:text-red-600 uii:rounded-sm uii:text-[10px] uii:font-medium"
5424
5526
  }, "Required")), /* @__PURE__ */ React2__namespace.createElement("div", {
5425
5527
  className: "uii:mt-0.5"
@@ -5556,26 +5658,29 @@ function parseInferredTypes(typeStr) {
5556
5658
  return result;
5557
5659
  }
5558
5660
  function computeExtendedType(inferredType, opDef) {
5559
- if (!opDef.extendsWithBase || opDef.narrowsTo === "never") {
5560
- return opDef.narrowsTo;
5661
+ if (opDef.narrowsTo === "never") {
5662
+ return "never";
5561
5663
  }
5562
5664
  var parsed = parseInferredTypes(inferredType);
5563
- var matchingTypes = [];
5665
+ var matchingLiterals = [];
5564
5666
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
5565
5667
  try {
5566
5668
  for(var _iterator = parsed.rawTypes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
5567
5669
  var t = _step.value;
5568
5670
  if (opDef.narrowsTo === "string") {
5569
- if (t === "string" || /^["'].*["']$/.test(t)) {
5570
- matchingTypes.push(t);
5671
+ if (t === "string") ;
5672
+ else if (/^["'].*["']$/.test(t)) {
5673
+ matchingLiterals.push(t);
5571
5674
  }
5572
5675
  } else if (opDef.narrowsTo === "number") {
5573
- if (t === "number" || /^-?\d+(\.\d+)?$/.test(t)) {
5574
- matchingTypes.push(t);
5676
+ if (t === "number") ;
5677
+ else if (/^-?\d+(\.\d+)?$/.test(t)) {
5678
+ matchingLiterals.push(t);
5575
5679
  }
5576
5680
  } else if (opDef.narrowsTo === "boolean") {
5577
- if (t === "boolean" || t === "true" || t === "false") {
5578
- matchingTypes.push(t);
5681
+ if (t === "boolean") ;
5682
+ else if (t === "true" || t === "false") {
5683
+ matchingLiterals.push(t);
5579
5684
  }
5580
5685
  }
5581
5686
  }
@@ -5593,10 +5698,13 @@ function computeExtendedType(inferredType, opDef) {
5593
5698
  }
5594
5699
  }
5595
5700
  }
5596
- if (opDef.extendsWithBase && !matchingTypes.includes(opDef.narrowsTo)) {
5597
- matchingTypes.push(opDef.narrowsTo);
5701
+ var result = _to_consumable_array(matchingLiterals);
5702
+ if (opDef.extendsWithBase || matchingLiterals.length === 0) {
5703
+ if (!result.includes(opDef.narrowsTo)) {
5704
+ result.push(opDef.narrowsTo);
5705
+ }
5598
5706
  }
5599
- return matchingTypes.length > 0 ? matchingTypes.join(" | ") : opDef.narrowsTo;
5707
+ return result.length > 0 ? result.join(" | ") : opDef.narrowsTo;
5600
5708
  }
5601
5709
  function filterOperatorsByType(operators, inferredType) {
5602
5710
  var parsed = parseInferredTypes(inferredType);
@@ -5649,7 +5757,18 @@ function NestedFieldProvider(param) {
5649
5757
  }
5650
5758
  var InferredTypesContext = React2.createContext(null);
5651
5759
  function useInferredTypes() {
5652
- return React2.useContext(InferredTypesContext);
5760
+ var devContext = React2.useContext(DevContext);
5761
+ var realContext = React2.useContext(InferredTypesContext);
5762
+ if (devContext) {
5763
+ return {
5764
+ inferredTypes: devContext.inferredTypes,
5765
+ setInferredType: devContext.setInferredType,
5766
+ getInferredType: devContext.getInferredType,
5767
+ clearInferredType: devContext.clearInferredType,
5768
+ clearAllInferredTypes: devContext.clearAllInferredTypes
5769
+ };
5770
+ }
5771
+ return realContext;
5653
5772
  }
5654
5773
  function InferredTypesProvider(param) {
5655
5774
  var children = param.children;
@@ -5779,43 +5898,187 @@ function NodePropertyProvider(param) {
5779
5898
  return /* @__PURE__ */ React2__namespace.default.createElement(React2__namespace.default.Fragment, null, children);
5780
5899
  }
5781
5900
  function useIsInNodePropertyProvider() {
5782
- return false;
5901
+ var devContext = React2.useContext(DevContext);
5902
+ return devContext !== null;
5783
5903
  }
5784
5904
  function useNodeProperty(key) {
5905
+ var devContext = React2.useContext(DevContext);
5906
+ var _React2_useState = _sliced_to_array(React2.useState(function() {
5907
+ var _devContext_data;
5908
+ return devContext === null || devContext === void 0 ? void 0 : (_devContext_data = devContext.data) === null || _devContext_data === void 0 ? void 0 : _devContext_data[key];
5909
+ }), 2), devValue = _React2_useState[0], setDevValue = _React2_useState[1];
5910
+ React2__namespace.default.useEffect(function() {
5911
+ if (devContext) {
5912
+ setDevValue(devContext.data[key]);
5913
+ }
5914
+ }, [
5915
+ devContext,
5916
+ key
5917
+ ]);
5918
+ var devSetter = React2.useCallback(function(value) {
5919
+ if (devContext) {
5920
+ devContext.setProperty(key, value);
5921
+ setDevValue(value);
5922
+ }
5923
+ }, [
5924
+ devContext,
5925
+ key
5926
+ ]);
5785
5927
  var noopSetter = React2.useCallback(function() {
5786
- console.warn('[useNodeProperty] Mock mode - cannot set "'.concat(key, '"'));
5928
+ console.warn('[useNodeProperty] No provider - cannot set "'.concat(key, '"'));
5787
5929
  }, [
5788
5930
  key
5789
5931
  ]);
5932
+ if (devContext) {
5933
+ return [
5934
+ devValue,
5935
+ devSetter
5936
+ ];
5937
+ }
5790
5938
  return [
5791
5939
  void 0,
5792
5940
  noopSetter
5793
5941
  ];
5794
5942
  }
5795
5943
  function useNodeProperties() {
5944
+ var devContext = React2.useContext(DevContext);
5945
+ var _React2_useState = _sliced_to_array(React2.useState(function() {
5946
+ var _devContext_data;
5947
+ return (_devContext_data = devContext === null || devContext === void 0 ? void 0 : devContext.data) !== null && _devContext_data !== void 0 ? _devContext_data : {};
5948
+ }), 2), devData = _React2_useState[0], setDevData = _React2_useState[1];
5949
+ React2__namespace.default.useEffect(function() {
5950
+ if (devContext) {
5951
+ setDevData(_object_spread({}, devContext.data));
5952
+ }
5953
+ }, [
5954
+ devContext,
5955
+ devContext === null || devContext === void 0 ? void 0 : devContext.data
5956
+ ]);
5957
+ var devSetter = React2.useCallback(function(updates) {
5958
+ if (devContext) {
5959
+ Object.entries(updates).forEach(function(param) {
5960
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
5961
+ devContext.setProperty(key, value);
5962
+ });
5963
+ setDevData(function(prev) {
5964
+ return _object_spread({}, prev, updates);
5965
+ });
5966
+ }
5967
+ }, [
5968
+ devContext
5969
+ ]);
5796
5970
  var noopSetter = React2.useCallback(function() {
5797
- console.warn("[useNodeProperties] Mock mode - cannot set properties");
5971
+ console.warn("[useNodeProperties] No provider - cannot set properties");
5798
5972
  }, []);
5973
+ if (devContext) {
5974
+ return [
5975
+ devData,
5976
+ devSetter
5977
+ ];
5978
+ }
5799
5979
  return [
5800
5980
  {},
5801
5981
  noopSetter
5802
5982
  ];
5803
5983
  }
5804
5984
  function useInferredType(fieldName) {
5985
+ var devContext = React2.useContext(DevContext);
5986
+ var _React2_useState = _sliced_to_array(React2.useState(function() {
5987
+ var _devContext_inferredTypes;
5988
+ return devContext === null || devContext === void 0 ? void 0 : (_devContext_inferredTypes = devContext.inferredTypes) === null || _devContext_inferredTypes === void 0 ? void 0 : _devContext_inferredTypes[fieldName];
5989
+ }), 2), devInferredType = _React2_useState[0], setDevInferredType = _React2_useState[1];
5990
+ React2__namespace.default.useEffect(function() {
5991
+ if (devContext) {
5992
+ setDevInferredType(devContext.inferredTypes[fieldName]);
5993
+ }
5994
+ }, [
5995
+ devContext,
5996
+ fieldName,
5997
+ devContext === null || devContext === void 0 ? void 0 : devContext.inferredTypes
5998
+ ]);
5999
+ if (devContext) {
6000
+ return devInferredType;
6001
+ }
5805
6002
  return void 0;
5806
6003
  }
5807
6004
  function useSetInferredType() {
6005
+ var devContext = React2.useContext(DevContext);
5808
6006
  return React2.useCallback(function(fieldName, type) {
5809
- console.warn('[useSetInferredType] Mock mode - cannot set "'.concat(fieldName, '" to "').concat(type, '"'));
5810
- }, []);
6007
+ if (devContext) {
6008
+ devContext.setInferredType(fieldName, type);
6009
+ } else {
6010
+ console.warn('[useSetInferredType] No provider - cannot set "'.concat(fieldName, '" to "').concat(type, '"'));
6011
+ }
6012
+ }, [
6013
+ devContext
6014
+ ]);
6015
+ }
6016
+ function useClearInferredType() {
6017
+ var devContext = React2.useContext(DevContext);
6018
+ return React2.useCallback(function(fieldName) {
6019
+ if (devContext) {
6020
+ devContext.clearInferredType(fieldName);
6021
+ } else {
6022
+ console.warn('[useClearInferredType] No provider - cannot clear "'.concat(fieldName, '"'));
6023
+ }
6024
+ }, [
6025
+ devContext
6026
+ ]);
6027
+ }
6028
+ function useClearAllInferredTypes() {
6029
+ var devContext = React2.useContext(DevContext);
6030
+ return React2.useCallback(function() {
6031
+ if (devContext) {
6032
+ devContext.clearAllInferredTypes();
6033
+ } else {
6034
+ console.warn("[useClearAllInferredTypes] No provider - cannot clear all types");
6035
+ }
6036
+ }, [
6037
+ devContext
6038
+ ]);
5811
6039
  }
5812
6040
  function useAllInferredTypes() {
6041
+ var devContext = React2.useContext(DevContext);
6042
+ var _React2_useState = _sliced_to_array(React2.useState(function() {
6043
+ var _devContext_inferredTypes;
6044
+ return (_devContext_inferredTypes = devContext === null || devContext === void 0 ? void 0 : devContext.inferredTypes) !== null && _devContext_inferredTypes !== void 0 ? _devContext_inferredTypes : {};
6045
+ }), 2), devTypes = _React2_useState[0], setDevTypes = _React2_useState[1];
6046
+ React2__namespace.default.useEffect(function() {
6047
+ if (devContext) {
6048
+ setDevTypes(_object_spread({}, devContext.inferredTypes));
6049
+ }
6050
+ }, [
6051
+ devContext,
6052
+ devContext === null || devContext === void 0 ? void 0 : devContext.inferredTypes
6053
+ ]);
6054
+ if (devContext) {
6055
+ return devTypes;
6056
+ }
5813
6057
  return {};
5814
6058
  }
5815
6059
  function useSetProperty() {
6060
+ var devContext = React2.useContext(DevContext);
5816
6061
  return React2.useCallback(function(key, value) {
5817
- console.warn('[useSetProperty] Mock mode - cannot set "'.concat(key, '"'));
5818
- }, []);
6062
+ if (devContext) {
6063
+ devContext.setProperty(key, value);
6064
+ } else {
6065
+ console.warn('[useSetProperty] No provider - cannot set "'.concat(key, '"'));
6066
+ }
6067
+ }, [
6068
+ devContext
6069
+ ]);
6070
+ }
6071
+ function useTriggerLayoutUpdate() {
6072
+ var devContext = React2.useContext(DevContext);
6073
+ return React2.useCallback(function() {
6074
+ if (devContext) {
6075
+ console.log("[useTriggerLayoutUpdate] Dev mode - layout update is a no-op");
6076
+ } else {
6077
+ console.warn("[useTriggerLayoutUpdate] No provider - layout update ignored");
6078
+ }
6079
+ }, [
6080
+ devContext
6081
+ ]);
5819
6082
  }
5820
6083
  function useFieldValidation() {
5821
6084
  var setFieldRequired = React2.useCallback(function(fieldName, required) {