@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.d.cts CHANGED
@@ -2,7 +2,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
2
2
  import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
5
- export { i as fields } from './index-DGN9LJqq.cjs';
5
+ export { i as fields } from './index-ep9HbrZE.cjs';
6
6
 
7
7
  declare const buttonVariants: (props?: ({
8
8
  variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
2
2
  import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
5
- export { i as fields } from './index-DGN9LJqq.js';
5
+ export { i as fields } from './index-ep9HbrZE.js';
6
6
 
7
7
  declare const buttonVariants: (props?: ({
8
8
  variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
package/dist/index.js CHANGED
@@ -158,7 +158,7 @@ function _unsupported_iterable_to_array(o, minLen) {
158
158
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
159
159
  }
160
160
  import * as React2 from 'react';
161
- import React2__default, { createContext, useContext, useCallback } from 'react';
161
+ import React2__default, { createContext, useContext, useState, useCallback } from 'react';
162
162
  import { Slot } from '@radix-ui/react-slot';
163
163
  import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
164
164
  import { CheckIcon, CircleIcon, ChevronRightIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
@@ -4858,21 +4858,21 @@ function cn() {
4858
4858
  return twMerge(clsx(inputs));
4859
4859
  }
4860
4860
  // src/components/ui/button.tsx
4861
- 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", {
4861
+ 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", {
4862
4862
  variants: {
4863
4863
  variant: {
4864
- default: "ui:bg-primary ui:text-primary-foreground ui:shadow-xs ui:hover:bg-primary/90 ui:select-none",
4865
- 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",
4866
- outline: "ui:border ui:border-input ui:bg-background ui:shadow-xs ui:hover:bg-accent ui:hover:text-accent-foreground",
4867
- secondary: "ui:bg-secondary ui:text-secondary-foreground ui:shadow-xs ui:hover:bg-secondary/80",
4868
- ghost: "ui:hover:bg-accent ui:hover:text-accent-foreground",
4869
- link: "ui:text-primary ui:underline-offset-4 ui:hover:underline"
4864
+ default: "uii:bg-primary uii:text-primary-foreground uii:shadow-xs uii:hover:bg-primary/90 uii:select-none",
4865
+ 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",
4866
+ outline: "uii:border uii:border-input uii:bg-background uii:shadow-xs uii:hover:bg-accent uii:hover:text-accent-foreground",
4867
+ secondary: "uii:bg-secondary uii:text-secondary-foreground uii:shadow-xs uii:hover:bg-secondary/80",
4868
+ ghost: "uii:hover:bg-accent uii:hover:text-accent-foreground",
4869
+ link: "uii:text-primary uii:underline-offset-4 uii:hover:underline"
4870
4870
  },
4871
4871
  size: {
4872
- default: "ui:h-9 ui:px-4 ui:py-2 ui:has-[>svg]:px-3",
4873
- sm: "ui:h-8 ui:rounded-sm ui:gap-1.5 ui:px-3 ui:has-[>svg]:px-2.5",
4874
- lg: "ui:h-10 ui:rounded-sm ui:px-6 ui:has-[>svg]:px-4",
4875
- icon: "ui:size-9"
4872
+ default: "uii:h-9 uii:px-4 uii:py-2 uii:has-[>svg]:px-3",
4873
+ sm: "uii:h-8 uii:rounded-sm uii:gap-1.5 uii:px-3 uii:has-[>svg]:px-2.5",
4874
+ lg: "uii:h-10 uii:rounded-sm uii:px-6 uii:has-[>svg]:px-4",
4875
+ icon: "uii:size-9"
4876
4876
  }
4877
4877
  },
4878
4878
  defaultVariants: {
@@ -5129,6 +5129,12 @@ __export(fields_exports, {
5129
5129
  useAllInferredTypes: function() {
5130
5130
  return useAllInferredTypes;
5131
5131
  },
5132
+ useClearAllInferredTypes: function() {
5133
+ return useClearAllInferredTypes;
5134
+ },
5135
+ useClearInferredType: function() {
5136
+ return useClearInferredType;
5137
+ },
5132
5138
  useFieldPath: function() {
5133
5139
  return useFieldPath;
5134
5140
  },
@@ -5161,10 +5167,58 @@ __export(fields_exports, {
5161
5167
  },
5162
5168
  useTemplateFieldContext: function() {
5163
5169
  return useTemplateFieldContext;
5170
+ },
5171
+ useTriggerLayoutUpdate: function() {
5172
+ return useTriggerLayoutUpdate;
5164
5173
  }
5165
5174
  });
5175
+ var DevContext = createContext(null);
5176
+ function useResolvedExpectedType(expectedType, devCtx) {
5177
+ var inferredTypes = devCtx === null || devCtx === void 0 ? void 0 : devCtx.inferredTypes;
5178
+ return React2.useMemo(function() {
5179
+ var _match_;
5180
+ if (!expectedType) return "any";
5181
+ if (!expectedType.startsWith("$infer<")) {
5182
+ return expectedType;
5183
+ }
5184
+ var match = expectedType.match(/^\$infer<(.+)>$/);
5185
+ if (!match) return expectedType;
5186
+ var content = ((_match_ = match[1]) === null || _match_ === void 0 ? void 0 : _match_.trim()) || "";
5187
+ if (content.startsWith("[") && content.endsWith("]")) {
5188
+ var arrayContent = content.slice(1, -1);
5189
+ var fieldNames = arrayContent.split(",").map(function(s) {
5190
+ return s.trim().replace(/^["']|["']$/g, "");
5191
+ }).filter(Boolean);
5192
+ if (!inferredTypes) {
5193
+ return "Subscribing to: ".concat(fieldNames.join(", "));
5194
+ }
5195
+ var types = fieldNames.map(function(name) {
5196
+ return inferredTypes[name];
5197
+ }).filter(function(t) {
5198
+ return !!t && t.length > 0;
5199
+ });
5200
+ if (types.length === 0) {
5201
+ return "Waiting for: ".concat(fieldNames.join(", "));
5202
+ }
5203
+ return types.length === 1 ? types[0] : types.join(" & ");
5204
+ }
5205
+ if (!content.includes("|") && /^[a-zA-Z_][a-zA-Z0-9_\-]*$/.test(content)) {
5206
+ if (!inferredTypes) {
5207
+ return "Subscribing to: ".concat(content);
5208
+ }
5209
+ var resolvedType = inferredTypes[content];
5210
+ return resolvedType || "Waiting for: ".concat(content);
5211
+ }
5212
+ return content;
5213
+ }, [
5214
+ expectedType,
5215
+ inferredTypes
5216
+ ]);
5217
+ }
5166
5218
  function Input(param) {
5167
5219
  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;
5220
+ var devCtx = useContext(DevContext);
5221
+ var resolvedExpectedType = useResolvedExpectedType(expectedType, devCtx);
5168
5222
  var displayValue = React2.useMemo(function() {
5169
5223
  if (value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value) {
5170
5224
  return value.expression || "";
@@ -5192,6 +5246,7 @@ function Input(param) {
5192
5246
  onChange
5193
5247
  ]);
5194
5248
  var showError = hasRequiredError || required && !displayValue;
5249
+ var isWaiting = resolvedExpectedType.startsWith("Waiting for:") || resolvedExpectedType.startsWith("Subscribing to:");
5195
5250
  return /* @__PURE__ */ React2.createElement("div", {
5196
5251
  className: cn("uii:mb-2", className)
5197
5252
  }, /* @__PURE__ */ React2.createElement("div", {
@@ -5199,9 +5254,10 @@ function Input(param) {
5199
5254
  }, /* @__PURE__ */ React2.createElement("label", {
5200
5255
  htmlFor: fieldName,
5201
5256
  className: "uii:text-xs uii:font-bold uii:text-muted-foreground"
5202
- }, label, ":"), expectedType !== "$.interface.timer" && /* @__PURE__ */ React2.createElement("span", {
5203
- 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"
5204
- }, expectedType), showError && /* @__PURE__ */ React2.createElement("span", {
5257
+ }, label, ":"), resolvedExpectedType !== "$.interface.timer" && /* @__PURE__ */ React2.createElement("span", {
5258
+ 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"),
5259
+ title: resolvedExpectedType
5260
+ }, resolvedExpectedType), showError && /* @__PURE__ */ React2.createElement("span", {
5205
5261
  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"
5206
5262
  }, "Required")), /* @__PURE__ */ React2.createElement("div", {
5207
5263
  className: "uii:mt-0.5"
@@ -5298,8 +5354,52 @@ function SelectScrollDownButton(_param) {
5298
5354
  }));
5299
5355
  }
5300
5356
  // src/components/fields/Select.tsx
5357
+ function useResolvedExpectedType2(expectedType, devCtx) {
5358
+ var inferredTypes = devCtx === null || devCtx === void 0 ? void 0 : devCtx.inferredTypes;
5359
+ return React2.useMemo(function() {
5360
+ var _match_;
5361
+ if (!expectedType) return "any";
5362
+ if (!expectedType.startsWith("$infer<")) {
5363
+ return expectedType;
5364
+ }
5365
+ var match = expectedType.match(/^\$infer<(.+)>$/);
5366
+ if (!match) return expectedType;
5367
+ var content = ((_match_ = match[1]) === null || _match_ === void 0 ? void 0 : _match_.trim()) || "";
5368
+ if (content.startsWith("[") && content.endsWith("]")) {
5369
+ var arrayContent = content.slice(1, -1);
5370
+ var fieldNames = arrayContent.split(",").map(function(s) {
5371
+ return s.trim().replace(/^["']|["']$/g, "");
5372
+ }).filter(Boolean);
5373
+ if (!inferredTypes) {
5374
+ return "Subscribing to: ".concat(fieldNames.join(", "));
5375
+ }
5376
+ var types = fieldNames.map(function(name) {
5377
+ return inferredTypes[name];
5378
+ }).filter(function(t) {
5379
+ return !!t && t.length > 0;
5380
+ });
5381
+ if (types.length === 0) {
5382
+ return "Waiting for: ".concat(fieldNames.join(", "));
5383
+ }
5384
+ return types.length === 1 ? types[0] : types.join(" & ");
5385
+ }
5386
+ if (!content.includes("|") && /^[a-zA-Z_][a-zA-Z0-9_\-]*$/.test(content)) {
5387
+ if (!inferredTypes) {
5388
+ return "Subscribing to: ".concat(content);
5389
+ }
5390
+ var resolvedType = inferredTypes[content];
5391
+ return resolvedType || "Waiting for: ".concat(content);
5392
+ }
5393
+ return content;
5394
+ }, [
5395
+ expectedType,
5396
+ inferredTypes
5397
+ ]);
5398
+ }
5301
5399
  function Select2(param) {
5302
5400
  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;
5401
+ var devCtx = useContext(DevContext);
5402
+ var resolvedExpectedType = useResolvedExpectedType2(expectedType, devCtx);
5303
5403
  var _React2_useState = _sliced_to_array(React2.useState(false), 2), isExpressionMode = _React2_useState[0], setIsExpressionMode = _React2_useState[1];
5304
5404
  var _React2_useState1 = _sliced_to_array(React2.useState(""), 2), expressionValue = _React2_useState1[0], setExpressionValue = _React2_useState1[1];
5305
5405
  var options = React2.useMemo(function() {
@@ -5388,6 +5488,7 @@ function Select2(param) {
5388
5488
  },
5389
5489
  hasError: showError
5390
5490
  };
5491
+ var isWaiting = resolvedExpectedType.startsWith("Waiting for:") || resolvedExpectedType.startsWith("Subscribing to:");
5391
5492
  return /* @__PURE__ */ React2.createElement("div", {
5392
5493
  className: cn("uii:mb-2", className)
5393
5494
  }, /* @__PURE__ */ React2.createElement("div", {
@@ -5395,9 +5496,10 @@ function Select2(param) {
5395
5496
  }, /* @__PURE__ */ React2.createElement("label", {
5396
5497
  htmlFor: fieldName,
5397
5498
  className: "uii:text-xs uii:font-bold uii:text-muted-foreground"
5398
- }, label, ":"), expectedType !== "$.interface.timer" && /* @__PURE__ */ React2.createElement("span", {
5399
- 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"
5400
- }, expectedType), showError && /* @__PURE__ */ React2.createElement("span", {
5499
+ }, label, ":"), resolvedExpectedType !== "$.interface.timer" && /* @__PURE__ */ React2.createElement("span", {
5500
+ 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"),
5501
+ title: resolvedExpectedType
5502
+ }, resolvedExpectedType), showError && /* @__PURE__ */ React2.createElement("span", {
5401
5503
  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"
5402
5504
  }, "Required")), /* @__PURE__ */ React2.createElement("div", {
5403
5505
  className: "uii:mt-0.5"
@@ -5534,26 +5636,29 @@ function parseInferredTypes(typeStr) {
5534
5636
  return result;
5535
5637
  }
5536
5638
  function computeExtendedType(inferredType, opDef) {
5537
- if (!opDef.extendsWithBase || opDef.narrowsTo === "never") {
5538
- return opDef.narrowsTo;
5639
+ if (opDef.narrowsTo === "never") {
5640
+ return "never";
5539
5641
  }
5540
5642
  var parsed = parseInferredTypes(inferredType);
5541
- var matchingTypes = [];
5643
+ var matchingLiterals = [];
5542
5644
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
5543
5645
  try {
5544
5646
  for(var _iterator = parsed.rawTypes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
5545
5647
  var t = _step.value;
5546
5648
  if (opDef.narrowsTo === "string") {
5547
- if (t === "string" || /^["'].*["']$/.test(t)) {
5548
- matchingTypes.push(t);
5649
+ if (t === "string") ;
5650
+ else if (/^["'].*["']$/.test(t)) {
5651
+ matchingLiterals.push(t);
5549
5652
  }
5550
5653
  } else if (opDef.narrowsTo === "number") {
5551
- if (t === "number" || /^-?\d+(\.\d+)?$/.test(t)) {
5552
- matchingTypes.push(t);
5654
+ if (t === "number") ;
5655
+ else if (/^-?\d+(\.\d+)?$/.test(t)) {
5656
+ matchingLiterals.push(t);
5553
5657
  }
5554
5658
  } else if (opDef.narrowsTo === "boolean") {
5555
- if (t === "boolean" || t === "true" || t === "false") {
5556
- matchingTypes.push(t);
5659
+ if (t === "boolean") ;
5660
+ else if (t === "true" || t === "false") {
5661
+ matchingLiterals.push(t);
5557
5662
  }
5558
5663
  }
5559
5664
  }
@@ -5571,10 +5676,13 @@ function computeExtendedType(inferredType, opDef) {
5571
5676
  }
5572
5677
  }
5573
5678
  }
5574
- if (opDef.extendsWithBase && !matchingTypes.includes(opDef.narrowsTo)) {
5575
- matchingTypes.push(opDef.narrowsTo);
5679
+ var result = _to_consumable_array(matchingLiterals);
5680
+ if (opDef.extendsWithBase || matchingLiterals.length === 0) {
5681
+ if (!result.includes(opDef.narrowsTo)) {
5682
+ result.push(opDef.narrowsTo);
5683
+ }
5576
5684
  }
5577
- return matchingTypes.length > 0 ? matchingTypes.join(" | ") : opDef.narrowsTo;
5685
+ return result.length > 0 ? result.join(" | ") : opDef.narrowsTo;
5578
5686
  }
5579
5687
  function filterOperatorsByType(operators, inferredType) {
5580
5688
  var parsed = parseInferredTypes(inferredType);
@@ -5627,7 +5735,18 @@ function NestedFieldProvider(param) {
5627
5735
  }
5628
5736
  var InferredTypesContext = createContext(null);
5629
5737
  function useInferredTypes() {
5630
- return useContext(InferredTypesContext);
5738
+ var devContext = useContext(DevContext);
5739
+ var realContext = useContext(InferredTypesContext);
5740
+ if (devContext) {
5741
+ return {
5742
+ inferredTypes: devContext.inferredTypes,
5743
+ setInferredType: devContext.setInferredType,
5744
+ getInferredType: devContext.getInferredType,
5745
+ clearInferredType: devContext.clearInferredType,
5746
+ clearAllInferredTypes: devContext.clearAllInferredTypes
5747
+ };
5748
+ }
5749
+ return realContext;
5631
5750
  }
5632
5751
  function InferredTypesProvider(param) {
5633
5752
  var children = param.children;
@@ -5757,43 +5876,187 @@ function NodePropertyProvider(param) {
5757
5876
  return /* @__PURE__ */ React2__default.createElement(React2__default.Fragment, null, children);
5758
5877
  }
5759
5878
  function useIsInNodePropertyProvider() {
5760
- return false;
5879
+ var devContext = useContext(DevContext);
5880
+ return devContext !== null;
5761
5881
  }
5762
5882
  function useNodeProperty(key) {
5883
+ var devContext = useContext(DevContext);
5884
+ var _useState = _sliced_to_array(useState(function() {
5885
+ var _devContext_data;
5886
+ return devContext === null || devContext === void 0 ? void 0 : (_devContext_data = devContext.data) === null || _devContext_data === void 0 ? void 0 : _devContext_data[key];
5887
+ }), 2), devValue = _useState[0], setDevValue = _useState[1];
5888
+ React2__default.useEffect(function() {
5889
+ if (devContext) {
5890
+ setDevValue(devContext.data[key]);
5891
+ }
5892
+ }, [
5893
+ devContext,
5894
+ key
5895
+ ]);
5896
+ var devSetter = useCallback(function(value) {
5897
+ if (devContext) {
5898
+ devContext.setProperty(key, value);
5899
+ setDevValue(value);
5900
+ }
5901
+ }, [
5902
+ devContext,
5903
+ key
5904
+ ]);
5763
5905
  var noopSetter = useCallback(function() {
5764
- console.warn('[useNodeProperty] Mock mode - cannot set "'.concat(key, '"'));
5906
+ console.warn('[useNodeProperty] No provider - cannot set "'.concat(key, '"'));
5765
5907
  }, [
5766
5908
  key
5767
5909
  ]);
5910
+ if (devContext) {
5911
+ return [
5912
+ devValue,
5913
+ devSetter
5914
+ ];
5915
+ }
5768
5916
  return [
5769
5917
  void 0,
5770
5918
  noopSetter
5771
5919
  ];
5772
5920
  }
5773
5921
  function useNodeProperties() {
5922
+ var devContext = useContext(DevContext);
5923
+ var _useState = _sliced_to_array(useState(function() {
5924
+ var _devContext_data;
5925
+ return (_devContext_data = devContext === null || devContext === void 0 ? void 0 : devContext.data) !== null && _devContext_data !== void 0 ? _devContext_data : {};
5926
+ }), 2), devData = _useState[0], setDevData = _useState[1];
5927
+ React2__default.useEffect(function() {
5928
+ if (devContext) {
5929
+ setDevData(_object_spread({}, devContext.data));
5930
+ }
5931
+ }, [
5932
+ devContext,
5933
+ devContext === null || devContext === void 0 ? void 0 : devContext.data
5934
+ ]);
5935
+ var devSetter = useCallback(function(updates) {
5936
+ if (devContext) {
5937
+ Object.entries(updates).forEach(function(param) {
5938
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
5939
+ devContext.setProperty(key, value);
5940
+ });
5941
+ setDevData(function(prev) {
5942
+ return _object_spread({}, prev, updates);
5943
+ });
5944
+ }
5945
+ }, [
5946
+ devContext
5947
+ ]);
5774
5948
  var noopSetter = useCallback(function() {
5775
- console.warn("[useNodeProperties] Mock mode - cannot set properties");
5949
+ console.warn("[useNodeProperties] No provider - cannot set properties");
5776
5950
  }, []);
5951
+ if (devContext) {
5952
+ return [
5953
+ devData,
5954
+ devSetter
5955
+ ];
5956
+ }
5777
5957
  return [
5778
5958
  {},
5779
5959
  noopSetter
5780
5960
  ];
5781
5961
  }
5782
5962
  function useInferredType(fieldName) {
5963
+ var devContext = useContext(DevContext);
5964
+ var _useState = _sliced_to_array(useState(function() {
5965
+ var _devContext_inferredTypes;
5966
+ return devContext === null || devContext === void 0 ? void 0 : (_devContext_inferredTypes = devContext.inferredTypes) === null || _devContext_inferredTypes === void 0 ? void 0 : _devContext_inferredTypes[fieldName];
5967
+ }), 2), devInferredType = _useState[0], setDevInferredType = _useState[1];
5968
+ React2__default.useEffect(function() {
5969
+ if (devContext) {
5970
+ setDevInferredType(devContext.inferredTypes[fieldName]);
5971
+ }
5972
+ }, [
5973
+ devContext,
5974
+ fieldName,
5975
+ devContext === null || devContext === void 0 ? void 0 : devContext.inferredTypes
5976
+ ]);
5977
+ if (devContext) {
5978
+ return devInferredType;
5979
+ }
5783
5980
  return void 0;
5784
5981
  }
5785
5982
  function useSetInferredType() {
5983
+ var devContext = useContext(DevContext);
5786
5984
  return useCallback(function(fieldName, type) {
5787
- console.warn('[useSetInferredType] Mock mode - cannot set "'.concat(fieldName, '" to "').concat(type, '"'));
5788
- }, []);
5985
+ if (devContext) {
5986
+ devContext.setInferredType(fieldName, type);
5987
+ } else {
5988
+ console.warn('[useSetInferredType] No provider - cannot set "'.concat(fieldName, '" to "').concat(type, '"'));
5989
+ }
5990
+ }, [
5991
+ devContext
5992
+ ]);
5993
+ }
5994
+ function useClearInferredType() {
5995
+ var devContext = useContext(DevContext);
5996
+ return useCallback(function(fieldName) {
5997
+ if (devContext) {
5998
+ devContext.clearInferredType(fieldName);
5999
+ } else {
6000
+ console.warn('[useClearInferredType] No provider - cannot clear "'.concat(fieldName, '"'));
6001
+ }
6002
+ }, [
6003
+ devContext
6004
+ ]);
6005
+ }
6006
+ function useClearAllInferredTypes() {
6007
+ var devContext = useContext(DevContext);
6008
+ return useCallback(function() {
6009
+ if (devContext) {
6010
+ devContext.clearAllInferredTypes();
6011
+ } else {
6012
+ console.warn("[useClearAllInferredTypes] No provider - cannot clear all types");
6013
+ }
6014
+ }, [
6015
+ devContext
6016
+ ]);
5789
6017
  }
5790
6018
  function useAllInferredTypes() {
6019
+ var devContext = useContext(DevContext);
6020
+ var _useState = _sliced_to_array(useState(function() {
6021
+ var _devContext_inferredTypes;
6022
+ return (_devContext_inferredTypes = devContext === null || devContext === void 0 ? void 0 : devContext.inferredTypes) !== null && _devContext_inferredTypes !== void 0 ? _devContext_inferredTypes : {};
6023
+ }), 2), devTypes = _useState[0], setDevTypes = _useState[1];
6024
+ React2__default.useEffect(function() {
6025
+ if (devContext) {
6026
+ setDevTypes(_object_spread({}, devContext.inferredTypes));
6027
+ }
6028
+ }, [
6029
+ devContext,
6030
+ devContext === null || devContext === void 0 ? void 0 : devContext.inferredTypes
6031
+ ]);
6032
+ if (devContext) {
6033
+ return devTypes;
6034
+ }
5791
6035
  return {};
5792
6036
  }
5793
6037
  function useSetProperty() {
6038
+ var devContext = useContext(DevContext);
5794
6039
  return useCallback(function(key, value) {
5795
- console.warn('[useSetProperty] Mock mode - cannot set "'.concat(key, '"'));
5796
- }, []);
6040
+ if (devContext) {
6041
+ devContext.setProperty(key, value);
6042
+ } else {
6043
+ console.warn('[useSetProperty] No provider - cannot set "'.concat(key, '"'));
6044
+ }
6045
+ }, [
6046
+ devContext
6047
+ ]);
6048
+ }
6049
+ function useTriggerLayoutUpdate() {
6050
+ var devContext = useContext(DevContext);
6051
+ return useCallback(function() {
6052
+ if (devContext) {
6053
+ console.log("[useTriggerLayoutUpdate] Dev mode - layout update is a no-op");
6054
+ } else {
6055
+ console.warn("[useTriggerLayoutUpdate] No provider - layout update ignored");
6056
+ }
6057
+ }, [
6058
+ devContext
6059
+ ]);
5797
6060
  }
5798
6061
  function useFieldValidation() {
5799
6062
  var setFieldRequired = useCallback(function(fieldName, required) {