@process.co/ui 0.0.5 → 0.0.6

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.js CHANGED
@@ -9,35 +9,6 @@ function _array_with_holes(arr) {
9
9
  function _array_without_holes(arr) {
10
10
  if (Array.isArray(arr)) return _array_like_to_array(arr);
11
11
  }
12
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
13
- try {
14
- var info = gen[key](arg);
15
- var value = info.value;
16
- } catch (error) {
17
- reject(error);
18
- return;
19
- }
20
- if (info.done) {
21
- resolve(value);
22
- } else {
23
- Promise.resolve(value).then(_next, _throw);
24
- }
25
- }
26
- function _async_to_generator(fn) {
27
- return function() {
28
- var self = this, args = arguments;
29
- return new Promise(function(resolve, reject) {
30
- var gen = fn.apply(self, args);
31
- function _next(value) {
32
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
33
- }
34
- function _throw(err) {
35
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
36
- }
37
- _next(undefined);
38
- });
39
- };
40
- }
41
12
  function _define_property(obj, key, value) {
42
13
  if (key in obj) {
43
14
  Object.defineProperty(obj, key, {
@@ -51,13 +22,6 @@ function _define_property(obj, key, value) {
51
22
  }
52
23
  return obj;
53
24
  }
54
- function _instanceof(left, right) {
55
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
56
- return !!right[Symbol.hasInstance](left);
57
- } else {
58
- return left instanceof right;
59
- }
60
- }
61
25
  function _iterable_to_array(iter) {
62
26
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
63
27
  }
@@ -106,30 +70,6 @@ function _object_spread(target) {
106
70
  }
107
71
  return target;
108
72
  }
109
- function ownKeys(object, enumerableOnly) {
110
- var keys = Object.keys(object);
111
- if (Object.getOwnPropertySymbols) {
112
- var symbols = Object.getOwnPropertySymbols(object);
113
- if (enumerableOnly) {
114
- symbols = symbols.filter(function(sym) {
115
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
116
- });
117
- }
118
- keys.push.apply(keys, symbols);
119
- }
120
- return keys;
121
- }
122
- function _object_spread_props(target, source) {
123
- source = source != null ? source : {};
124
- if (Object.getOwnPropertyDescriptors) {
125
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
126
- } else {
127
- ownKeys(Object(source)).forEach(function(key) {
128
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
129
- });
130
- }
131
- return target;
132
- }
133
73
  function _object_without_properties(source, excluded) {
134
74
  if (source == null) return {};
135
75
  var target = _object_without_properties_loose(source, excluded);
@@ -175,105 +115,15 @@ function _unsupported_iterable_to_array(o, minLen) {
175
115
  if (n === "Map" || n === "Set") return Array.from(n);
176
116
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
177
117
  }
178
- function _ts_generator(thisArg, body) {
179
- var f, y, t, _ = {
180
- label: 0,
181
- sent: function() {
182
- if (t[0] & 1) throw t[1];
183
- return t[1];
184
- },
185
- trys: [],
186
- ops: []
187
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
188
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
189
- return this;
190
- }), g;
191
- function verb(n) {
192
- return function(v) {
193
- return step([
194
- n,
195
- v
196
- ]);
197
- };
198
- }
199
- function step(op) {
200
- if (f) throw new TypeError("Generator is already executing.");
201
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
202
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
203
- if (y = 0, t) op = [
204
- op[0] & 2,
205
- t.value
206
- ];
207
- switch(op[0]){
208
- case 0:
209
- case 1:
210
- t = op;
211
- break;
212
- case 4:
213
- _.label++;
214
- return {
215
- value: op[1],
216
- done: false
217
- };
218
- case 5:
219
- _.label++;
220
- y = op[1];
221
- op = [
222
- 0
223
- ];
224
- continue;
225
- case 7:
226
- op = _.ops.pop();
227
- _.trys.pop();
228
- continue;
229
- default:
230
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
231
- _ = 0;
232
- continue;
233
- }
234
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
235
- _.label = op[1];
236
- break;
237
- }
238
- if (op[0] === 6 && _.label < t[1]) {
239
- _.label = t[1];
240
- t = op;
241
- break;
242
- }
243
- if (t && _.label < t[2]) {
244
- _.label = t[2];
245
- _.ops.push(op);
246
- break;
247
- }
248
- if (t[2]) _.ops.pop();
249
- _.trys.pop();
250
- continue;
251
- }
252
- op = body.call(thisArg, _);
253
- } catch (e) {
254
- op = [
255
- 6,
256
- e
257
- ];
258
- y = 0;
259
- } finally{
260
- f = t = 0;
261
- }
262
- if (op[0] & 5) throw op[1];
263
- return {
264
- value: op[0] ? op[1] : void 0,
265
- done: true
266
- };
267
- }
268
- }
269
118
  import * as React4 from 'react';
270
- import React4__default, { useState, useCallback, useEffect, useMemo, useRef } from 'react';
271
- import { create } from 'zustand';
272
- import { Editor } from '@monaco-editor/react';
273
- import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
274
- import { faExpand, faSpinner } from '@fortawesome/pro-regular-svg-icons';
275
119
  import { Slot } from '@radix-ui/react-slot';
276
- // src/components/input.tsx
120
+ var __defProp = Object.defineProperty;
121
+ var __export = function(target, all) {
122
+ for(var name in all)__defProp(target, name, {
123
+ get: all[name],
124
+ enumerable: true
125
+ });
126
+ };
277
127
  // ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
278
128
  function r(e) {
279
129
  var t, f, n = "";
@@ -288,7 +138,47 @@ function clsx() {
288
138
  for(var e, t, f = 0, n = "", o = arguments.length; f < o; f++)(e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
289
139
  return n;
290
140
  }
291
- var clsx_default = clsx;
141
+ // ../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs
142
+ var falsyToString = function(value) {
143
+ return typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
144
+ };
145
+ var cx = clsx;
146
+ var cva = function(base, config) {
147
+ return function(props) {
148
+ var _config_compoundVariants;
149
+ if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
150
+ var variants = config.variants, defaultVariants = config.defaultVariants;
151
+ var getVariantClassNames = Object.keys(variants).map(function(variant) {
152
+ var variantProp = props === null || props === void 0 ? void 0 : props[variant];
153
+ var defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
154
+ if (variantProp === null) return null;
155
+ var variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
156
+ return variants[variant][variantKey];
157
+ });
158
+ var propsWithoutUndefined = props && Object.entries(props).reduce(function(acc, param) {
159
+ var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
160
+ if (value === void 0) {
161
+ return acc;
162
+ }
163
+ acc[key] = value;
164
+ return acc;
165
+ }, {});
166
+ var getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce(function(acc, param) {
167
+ var cvClass = param.class, cvClassName = param.className, compoundVariantOptions = _object_without_properties(param, [
168
+ "class",
169
+ "className"
170
+ ]);
171
+ return Object.entries(compoundVariantOptions).every(function(param2) {
172
+ var _param2 = _sliced_to_array(param2, 2), key = _param2[0], value = _param2[1];
173
+ return Array.isArray(value) ? value.includes(_object_spread({}, defaultVariants, propsWithoutUndefined)[key]) : _object_spread({}, defaultVariants, propsWithoutUndefined)[key] === value;
174
+ }) ? _to_consumable_array(acc).concat([
175
+ cvClass,
176
+ cvClassName
177
+ ]) : acc;
178
+ }, []);
179
+ return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
180
+ };
181
+ };
292
182
  // ../../node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs
293
183
  var concatArrays = function(array1, array2) {
294
184
  var combinedArray = new Array(array1.length + array2.length);
@@ -4921,2116 +4811,299 @@ function cn() {
4921
4811
  }
4922
4812
  return twMerge(clsx(inputs));
4923
4813
  }
4924
- // src/components/ui/input.tsx
4925
- function Input(_param) {
4926
- var className = _param.className, wrapperClassName = _param.wrapperClassName, type = _param.type, required = _param.required, error = _param.error, props = _object_without_properties(_param, [
4927
- "className",
4928
- "wrapperClassName",
4929
- "type",
4930
- "required",
4931
- "error"
4932
- ]);
4933
- return /* @__PURE__ */ React4.createElement("div", {
4934
- className: cn("uii:relative", wrapperClassName)
4935
- }, /* @__PURE__ */ React4.createElement("input", _object_spread({
4936
- "aria-invalid": error,
4937
- type: type,
4938
- "data-slot": "input",
4939
- className: cn("uii:border-input uii:file:text-foreground uii:placeholder:text-muted-foreground uii:selection:bg-primary uii:selection:text-primary-foreground uii:flex uii:h-9 uii:w-full uii:min-w-0 uii:rounded-sm uii:border uii:bg-transparent uii:px-3 uii:py-1 uii:text-base uii:shadow-xs uii:transition-[color,box-shadow] uii:outline-none uii:file:inline-flex uii:file:h-7 uii:file:border-0 uii:file:bg-transparent uii:file:text-sm uii:file:font-medium uii:disabled:pointer-events-none uii:disabled:cursor-not-allowed uii:disabled:opacity-50 uii:md:text-sm", "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", {
4940
- "uii:pr-30": error
4941
- }, className)
4942
- }, props)), error && /* @__PURE__ */ React4.createElement("span", {
4943
- className: "uii:absolute uii:inset-y-0 uii:right-0 uii:flex uii:items-center uii:pr-2 uii:border-l-10 uii:border-l-background uii:my-[6px] uii:pointer-events-none "
4944
- }, /* @__PURE__ */ React4.createElement("span", {
4945
- className: "uii:bg-destructive uii:text-white uii:px-1.5 uii:py-1.5 uii:rounded-xs uii:uppercase uii:tracking-wide uii:font-medium uii:text-xs uii:leading-none uii:font-sans"
4946
- }, error && required ? "required" : "error")));
4947
- }
4948
- var defaultState = {
4949
- expression: "",
4950
- mode: "value",
4951
- isEditing: false,
4952
- currentValue: void 0,
4953
- isFullScreen: false
4954
- };
4955
- var useExpressionModeStore = create(function(set, get) {
4956
- return {
4957
- states: {},
4958
- setState: function(fieldName, state) {
4959
- set(function(store) {
4960
- return {
4961
- states: _object_spread_props(_object_spread({}, store.states), _define_property({}, fieldName, state))
4962
- };
4963
- });
4964
- },
4965
- getState: function(fieldName) {
4966
- var store = get();
4967
- return store.states[fieldName] || defaultState;
4968
- },
4969
- clear: function(fieldName) {
4970
- set(function(store) {
4971
- return {
4972
- states: _object_spread_props(_object_spread({}, store.states), _define_property({}, fieldName, defaultState))
4973
- };
4974
- });
4975
- },
4976
- switchToValue: function(fieldName) {
4977
- var currentState = get().getState(fieldName);
4978
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
4979
- mode: "value",
4980
- isEditing: false
4981
- }));
4982
- },
4983
- switchToExpression: function(fieldName) {
4984
- var currentState = get().getState(fieldName);
4985
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
4986
- mode: "expression",
4987
- isEditing: false
4988
- }));
4989
- },
4990
- switchToEditor: function(fieldName) {
4991
- var currentState = get().getState(fieldName);
4992
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
4993
- mode: "expression",
4994
- isEditing: true
4995
- }));
4996
- },
4997
- setExpression: function(fieldName, expression) {
4998
- var currentState = get().getState(fieldName);
4999
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
5000
- expression: expression
5001
- }));
5002
- },
5003
- setEditing: function(fieldName, isEditing) {
5004
- var currentState = get().getState(fieldName);
5005
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
5006
- isEditing: isEditing
5007
- }));
5008
- },
5009
- setFullScreen: function(fieldName, isFullScreen) {
5010
- var currentState = get().getState(fieldName);
5011
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
5012
- isFullScreen: isFullScreen
5013
- }));
4814
+ // src/components/ui/button.tsx
4815
+ 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", {
4816
+ variants: {
4817
+ variant: {
4818
+ default: "ui:bg-primary ui:text-primary-foreground ui:shadow-xs ui:hover:bg-primary/90 ui:select-none",
4819
+ 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",
4820
+ outline: "ui:border ui:border-input ui:bg-background ui:shadow-xs ui:hover:bg-accent ui:hover:text-accent-foreground",
4821
+ secondary: "ui:bg-secondary ui:text-secondary-foreground ui:shadow-xs ui:hover:bg-secondary/80",
4822
+ ghost: "ui:hover:bg-accent ui:hover:text-accent-foreground",
4823
+ link: "ui:text-primary ui:underline-offset-4 ui:hover:underline"
5014
4824
  },
5015
- setCurrentValue: function(fieldName, value) {
5016
- var currentState = get().getState(fieldName);
5017
- get().setState(fieldName, _object_spread_props(_object_spread({}, currentState), {
5018
- currentValue: value
5019
- }));
4825
+ size: {
4826
+ default: "ui:h-9 ui:px-4 ui:py-2 ui:has-[>svg]:px-3",
4827
+ sm: "ui:h-8 ui:rounded-sm ui:gap-1.5 ui:px-3 ui:has-[>svg]:px-2.5",
4828
+ lg: "ui:h-10 ui:rounded-sm ui:px-6 ui:has-[>svg]:px-4",
4829
+ icon: "ui:size-9"
5020
4830
  }
5021
- };
4831
+ },
4832
+ defaultVariants: {
4833
+ variant: "default",
4834
+ size: "default"
4835
+ }
5022
4836
  });
5023
- // src/hooks/useExpressionMode.ts
5024
- function useExpressionMode(fieldName) {
5025
- var store = useExpressionModeStore();
5026
- var state = store.getState(fieldName);
5027
- var switchToValue = useCallback(function() {
5028
- store.switchToValue(fieldName);
5029
- }, [
5030
- store,
5031
- fieldName
5032
- ]);
5033
- var switchToExpression = useCallback(function() {
5034
- store.switchToExpression(fieldName);
5035
- }, [
5036
- store,
5037
- fieldName
5038
- ]);
5039
- var switchToEditor = useCallback(function() {
5040
- store.switchToEditor(fieldName);
5041
- }, [
5042
- store,
5043
- fieldName
5044
- ]);
5045
- var clear = useCallback(function() {
5046
- store.clear(fieldName);
5047
- }, [
5048
- store,
5049
- fieldName
5050
- ]);
5051
- var setExpression = useCallback(function(expr) {
5052
- store.setExpression(fieldName, expr);
5053
- }, [
5054
- store,
5055
- fieldName
5056
- ]);
5057
- var setEditing = useCallback(function(editing) {
5058
- store.setEditing(fieldName, editing);
5059
- }, [
5060
- store,
5061
- fieldName
5062
- ]);
5063
- var setCurrentValue = useCallback(function(value) {
5064
- store.setCurrentValue(fieldName, value);
5065
- }, [
5066
- store,
5067
- fieldName
5068
- ]);
5069
- var setFullScreen = useCallback(function(isFullScreen) {
5070
- store.setFullScreen(fieldName, isFullScreen);
5071
- }, [
5072
- store,
5073
- fieldName
4837
+ function Button(_param) {
4838
+ var className = _param.className, variant = _param.variant, size = _param.size, _param_asChild = _param.asChild, asChild = _param_asChild === void 0 ? false : _param_asChild, props = _object_without_properties(_param, [
4839
+ "className",
4840
+ "variant",
4841
+ "size",
4842
+ "asChild"
5074
4843
  ]);
5075
- return {
5076
- current: state.mode,
5077
- switchToValue: switchToValue,
5078
- switchToExpression: switchToExpression,
5079
- switchToEditor: switchToEditor,
5080
- clear: clear,
5081
- isExpressionMode: state.mode === "expression",
5082
- isEditorMode: state.isEditing,
5083
- expression: state.expression,
5084
- setExpression: setExpression,
5085
- isEditing: state.isEditing,
5086
- setEditing: setEditing,
5087
- currentValue: state.currentValue,
5088
- setCurrentValue: setCurrentValue,
5089
- isFullScreen: state.isFullScreen,
5090
- setFullScreen: setFullScreen
5091
- };
5092
- }
5093
- function inferTypeFromMonaco(editor, monaco, expression) {
5094
- var logPrefix = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : "\uD83D\uDD37";
5095
- return _async_to_generator(function() {
5096
- var currentModel, markers, hasErrors, wrappedCode, tempModel, worker, client, exprIndex, position, quickInfo, extractedType, foundColon, typeParts, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, part, prevPart, typeString, error;
5097
- return _ts_generator(this, function(_state) {
5098
- switch(_state.label){
5099
- case 0:
5100
- if (!expression.trim()) {
5101
- console.log("".concat(logPrefix, " Type inference skipped - no expression"));
5102
- return [
5103
- 2,
5104
- null
5105
- ];
5106
- }
5107
- if (!editor.hasTextFocus()) {
5108
- console.log("".concat(logPrefix, " Skipping type inference - editor does not have focus"));
5109
- return [
5110
- 2,
5111
- null
5112
- ];
5113
- }
5114
- console.log("".concat(logPrefix, " Running type inference, expression:"), expression);
5115
- _state.label = 1;
5116
- case 1:
5117
- _state.trys.push([
5118
- 1,
5119
- 5,
5120
- ,
5121
- 6
5122
- ]);
5123
- currentModel = editor.getModel();
5124
- if (currentModel) {
5125
- markers = monaco.editor.getModelMarkers({
5126
- resource: currentModel.uri
5127
- });
5128
- hasErrors = markers.some(function(marker) {
5129
- return marker.severity === monaco.MarkerSeverity.Error;
5130
- });
5131
- if (hasErrors) {
5132
- console.log("".concat(logPrefix, " Type inference skipped - expression has validation errors"));
5133
- return [
5134
- 2,
5135
- "error"
5136
- ];
5137
- }
5138
- }
5139
- wrappedCode = "const __expr__ = (".concat(expression, ");");
5140
- tempModel = monaco.editor.createModel(wrappedCode, "typescript");
5141
- return [
5142
- 4,
5143
- monaco.languages.typescript.getTypeScriptWorker()
5144
- ];
5145
- case 2:
5146
- worker = _state.sent();
5147
- return [
5148
- 4,
5149
- worker(tempModel.uri)
5150
- ];
5151
- case 3:
5152
- client = _state.sent();
5153
- exprIndex = wrappedCode.indexOf("__expr__");
5154
- position = tempModel.getPositionAt(exprIndex);
5155
- return [
5156
- 4,
5157
- client.getQuickInfoAtPosition(tempModel.uri.toString(), tempModel.getOffsetAt(position))
5158
- ];
5159
- case 4:
5160
- quickInfo = _state.sent();
5161
- console.log("".concat(logPrefix, " QuickInfo response:"), quickInfo);
5162
- extractedType = null;
5163
- if (quickInfo && quickInfo.displayParts) {
5164
- foundColon = false;
5165
- typeParts = [];
5166
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
5167
- try {
5168
- for(_iterator = quickInfo.displayParts[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
5169
- part = _step.value;
5170
- if (foundColon) typeParts.push(part);
5171
- if (part.kind === "punctuation" && part.text === ":" && !foundColon) {
5172
- prevPart = quickInfo.displayParts[quickInfo.displayParts.indexOf(part) - 1];
5173
- if (prevPart && (prevPart.kind === "localName" || prevPart.kind === "parameterName")) {
5174
- foundColon = true;
5175
- }
5176
- }
5177
- }
5178
- } catch (err) {
5179
- _didIteratorError = true;
5180
- _iteratorError = err;
5181
- } finally{
5182
- try {
5183
- if (!_iteratorNormalCompletion && _iterator.return != null) {
5184
- _iterator.return();
5185
- }
5186
- } finally{
5187
- if (_didIteratorError) {
5188
- throw _iteratorError;
5189
- }
5190
- }
5191
- }
5192
- if (typeParts.length > 0) {
5193
- typeString = typeParts.map(function(p) {
5194
- return p.text;
5195
- }).join("").trim();
5196
- console.log("".concat(logPrefix, " Extracted type:"), typeString);
5197
- if (typeString && typeString !== "any") {
5198
- extractedType = typeString;
5199
- }
5200
- }
5201
- }
5202
- tempModel.dispose();
5203
- return [
5204
- 2,
5205
- extractedType
5206
- ];
5207
- case 5:
5208
- error = _state.sent();
5209
- console.warn("".concat(logPrefix, " Type inference failed:"), error);
5210
- return [
5211
- 2,
5212
- null
5213
- ];
5214
- case 6:
5215
- return [
5216
- 2
5217
- ];
5218
- }
5219
- });
5220
- })();
4844
+ var Comp = asChild ? Slot : "button";
4845
+ return /* @__PURE__ */ React4.createElement(Comp, _object_spread({
4846
+ "data-slot": "button",
4847
+ className: cn(buttonVariants({
4848
+ variant: variant,
4849
+ size: size,
4850
+ className: className
4851
+ }))
4852
+ }, props));
5221
4853
  }
5222
- var InlineEditorOptions = {
5223
- fontSize: "14px",
5224
- // md:text-sm
5225
- fontWeight: "normal",
5226
- wordWrap: "off",
5227
- lineNumbers: "off",
5228
- lineNumbersMinChars: 0,
5229
- overviewRulerLanes: 0,
5230
- overviewRulerBorder: false,
5231
- hideCursorInOverviewRuler: true,
5232
- lineDecorationsWidth: 0,
5233
- glyphMargin: false,
5234
- folding: false,
5235
- scrollBeyondLastColumn: 0,
5236
- scrollbar: {
5237
- horizontal: "hidden",
5238
- vertical: "hidden",
5239
- alwaysConsumeMouseWheel: false
5240
- },
5241
- find: {
5242
- addExtraSpaceOnTop: false,
5243
- autoFindInSelection: "never",
5244
- seedSearchStringFromSelection: false
5245
- },
5246
- minimap: {
5247
- enabled: false
4854
+ // src/components/fields/index.tsx
4855
+ var fields_exports = {};
4856
+ __export(fields_exports, {
4857
+ Input: function() {
4858
+ return Input;
5248
4859
  },
5249
- wordBasedSuggestions: true,
5250
- // Enable for better UX
5251
- links: false,
5252
- occurrencesHighlight: false,
5253
- cursorStyle: "line",
5254
- // Match input cursor
5255
- renderLineHighlight: "none",
5256
- contextmenu: false,
5257
- roundedSelection: false,
5258
- hover: {
5259
- delay: 300
4860
+ NestedFieldProvider: function() {
4861
+ return NestedFieldProvider;
5260
4862
  },
5261
- acceptSuggestionOnEnter: "on",
5262
- automaticLayout: true,
5263
- fixedOverflowWidgets: true,
5264
- // Match Input component styling
5265
- padding: {
5266
- top: 4,
5267
- bottom: 4
4863
+ Select: function() {
4864
+ return Select;
5268
4865
  },
5269
- // py-1 equivalent
5270
- fontFamily: "inherit",
5271
- // Use system font
5272
- letterSpacing: "normal",
5273
- lineHeight: "normal"
5274
- };
5275
- var FullPanelEditorOptions = {
5276
- fontSize: "14px",
5277
- fontWeight: "normal",
5278
- wordWrap: "on",
5279
- lineNumbers: "on",
5280
- lineNumbersMinChars: 3,
5281
- overviewRulerLanes: 3,
5282
- overviewRulerBorder: true,
5283
- hideCursorInOverviewRuler: false,
5284
- lineDecorationsWidth: 10,
5285
- glyphMargin: true,
5286
- folding: true,
5287
- scrollBeyondLastColumn: 5,
5288
- scrollbar: {
5289
- horizontal: "auto",
5290
- vertical: "auto",
5291
- alwaysConsumeMouseWheel: false
5292
- },
5293
- find: {
5294
- addExtraSpaceOnTop: false,
5295
- autoFindInSelection: "never",
5296
- seedSearchStringFromSelection: false
4866
+ TemplateFieldProvider: function() {
4867
+ return TemplateFieldProvider;
5297
4868
  },
5298
- minimap: {
5299
- enabled: true
4869
+ useFieldPath: function() {
4870
+ return useFieldPath;
5300
4871
  },
5301
- wordBasedSuggestions: true,
5302
- links: true,
5303
- occurrencesHighlight: true,
5304
- cursorStyle: "line",
5305
- renderLineHighlight: "line",
5306
- contextmenu: true,
5307
- roundedSelection: true,
5308
- hover: {
5309
- delay: 300
4872
+ useIsInTemplateFieldProvider: function() {
4873
+ return useIsInTemplateFieldProvider;
5310
4874
  },
5311
- // IMPORTANT: Don't accept suggestions on Enter - let Enter create new lines
5312
- acceptSuggestionOnEnter: "off",
5313
- automaticLayout: true,
5314
- fixedOverflowWidgets: true,
5315
- readOnly: false,
5316
- // Explicitly allow editing
5317
- domReadOnly: false
5318
- };
5319
- function InlineExpressionEditor(param) {
5320
- var value = param.value, onChange = param.onChange, onBlur = param.onBlur, onEnter = param.onEnter, onTypeInferred = param.onTypeInferred, onValidationChange = param.onValidationChange, _param_context = param.context, context = _param_context === void 0 ? {} : _param_context, className = param.className, _param_placeholder = param.placeholder, placeholder = _param_placeholder === void 0 ? "Enter expression..." : _param_placeholder;
5321
- var editorRef = useRef(null);
5322
- var monacoRef = useRef(null);
5323
- var typeInferenceTimeoutRef = useRef(null);
5324
- var handleEditorWillMount = function(monaco) {
5325
- monacoRef.current = monaco;
5326
- var contextKeys = Object.keys(context);
5327
- if (contextKeys.length > 0) {
5328
- monaco.languages.typescript.javascriptDefaults.addExtraLib("\n declare const ".concat(contextKeys.join(", "), ": any;\n "), "context.d.ts");
5329
- }
5330
- };
5331
- var handleEditorDidMount = function(editor, monaco) {
5332
- editorRef.current = editor;
5333
- editor.updateOptions(InlineEditorOptions);
5334
- console.log("\uD83D\uDD37 Inline editor mounted!");
5335
- editor.getDomNode();
5336
- var findCommand = editor.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KEY_F, function() {});
5337
- var enterKeyDisposable = editor.onKeyDown(function(e) {
5338
- if (e.keyCode === monaco.KeyCode.Enter) {
5339
- var _editor__contentWidgets, _contextKeyService_getContextKeyValue;
5340
- if (!editor.hasTextFocus()) {
5341
- console.log("\uD83D\uDD37 Enter keydown but inline editor does NOT have focus - allowing default");
5342
- return;
5343
- }
5344
- if (e.shiftKey) {
5345
- console.log("\uD83D\uDD37 Shift+Enter in INLINE editor - switching to full-screen");
5346
- e.preventDefault();
5347
- e.stopPropagation();
5348
- if (onEnter) {
5349
- onEnter();
5350
- }
5351
- return;
5352
- }
5353
- var suggestWidget = (_editor__contentWidgets = editor._contentWidgets) === null || _editor__contentWidgets === void 0 ? void 0 : _editor__contentWidgets["editor.widget.suggestWidget"];
5354
- var isSuggestVisible = (suggestWidget === null || suggestWidget === void 0 ? void 0 : suggestWidget.widget) && !suggestWidget.widget._hidden && suggestWidget.widget.state !== void 0 && suggestWidget.widget.state !== 0;
5355
- var contextKeyService = editor._contextKeyService;
5356
- var suggestWidgetVisible = contextKeyService === null || contextKeyService === void 0 ? void 0 : (_contextKeyService_getContextKeyValue = contextKeyService.getContextKeyValue) === null || _contextKeyService_getContextKeyValue === void 0 ? void 0 : _contextKeyService_getContextKeyValue.call(contextKeyService, "suggestWidgetVisible");
5357
- if (isSuggestVisible || suggestWidgetVisible) {
5358
- console.log("\uD83D\uDD37 Enter in INLINE editor - accepting autocomplete");
5359
- e.preventDefault();
5360
- e.stopPropagation();
5361
- editor.trigger("", "acceptSelectedSuggestion");
5362
- } else {
5363
- console.log("\uD83D\uDD37 Enter in INLINE editor - blurring (finishing edit)");
5364
- e.preventDefault();
5365
- e.stopPropagation();
5366
- onBlur === null || onBlur === void 0 ? void 0 : onBlur({});
5367
- }
5368
- }
5369
- });
5370
- editor.onDidPaste(function(e) {
5371
- if (e.endLineNumber <= 1) {
5372
- return;
5373
- }
5374
- var newContent = "";
5375
- var textModel = editor.getModel();
5376
- var lineCount = textModel.getLineCount();
5377
- for(var i = 0; i < lineCount; i += 1){
5378
- newContent += textModel.getLineContent(i + 1);
5379
- }
5380
- textModel.setValue(newContent);
5381
- editor.setPosition({
5382
- column: newContent.length + 1,
5383
- lineNumber: 1
5384
- });
5385
- });
5386
- editor.onDidBlurEditorText(function(e) {
5387
- var currentValue = editor.getValue();
5388
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(_object_spread_props(_object_spread({}, e), {
5389
- currentValue: currentValue
5390
- }));
5391
- });
5392
- editor.onDidChangeModelContent(function() {
5393
- var model = editor.getModel();
5394
- if (model) {
5395
- if (onValidationChange) {
5396
- var markers = monaco.editor.getModelMarkers({
5397
- resource: model.uri
5398
- });
5399
- var hasErrors = markers.some(function(marker) {
5400
- return marker.severity === monaco.MarkerSeverity.Error;
5401
- });
5402
- onValidationChange(!hasErrors, markers);
5403
- }
5404
- if (onTypeInferred) {
5405
- if (typeInferenceTimeoutRef.current) {
5406
- clearTimeout(typeInferenceTimeoutRef.current);
5407
- }
5408
- console.log("\uD83D\uDD37 Content changed - debouncing type inference");
5409
- typeInferenceTimeoutRef.current = setTimeout(function() {
5410
- return _async_to_generator(function() {
5411
- var expressionToAnalyze, inferredType;
5412
- return _ts_generator(this, function(_state) {
5413
- switch(_state.label){
5414
- case 0:
5415
- expressionToAnalyze = model.getValue();
5416
- return [
5417
- 4,
5418
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDD37")
5419
- ];
5420
- case 1:
5421
- inferredType = _state.sent();
5422
- if (inferredType) {
5423
- onTypeInferred(inferredType);
5424
- }
5425
- return [
5426
- 2
5427
- ];
5428
- }
5429
- });
5430
- })();
5431
- }, 200);
5432
- }
5433
- }
5434
- });
5435
- var markerChangeDisposable = monaco.editor.onDidChangeMarkers(function(uris) {
5436
- var model = editor.getModel();
5437
- if (!model || !onTypeInferred) return;
5438
- var isOurModel = uris.some(function(uri) {
5439
- return uri.toString() === model.uri.toString();
5440
- });
5441
- if (!isOurModel) return;
5442
- var markers = monaco.editor.getModelMarkers({
5443
- resource: model.uri
5444
- });
5445
- var hasErrors = markers.some(function(marker) {
5446
- return marker.severity === monaco.MarkerSeverity.Error;
5447
- });
5448
- console.log("\uD83D\uDD37 Monaco markers changed - hasErrors:", hasErrors);
5449
- if (hasErrors) {
5450
- if (typeInferenceTimeoutRef.current) {
5451
- clearTimeout(typeInferenceTimeoutRef.current);
5452
- typeInferenceTimeoutRef.current = null;
5453
- }
5454
- console.log("\uD83D\uDD37 ERROR detected - immediately setting type to error");
5455
- onTypeInferred("error");
5456
- } else {
5457
- if (typeInferenceTimeoutRef.current) {
5458
- clearTimeout(typeInferenceTimeoutRef.current);
5459
- }
5460
- console.log("\uD83D\uDD37 Errors cleared - triggering type inference");
5461
- typeInferenceTimeoutRef.current = setTimeout(function() {
5462
- return _async_to_generator(function() {
5463
- var expressionToAnalyze, inferredType;
5464
- return _ts_generator(this, function(_state) {
5465
- switch(_state.label){
5466
- case 0:
5467
- expressionToAnalyze = model.getValue();
5468
- return [
5469
- 4,
5470
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDD37")
5471
- ];
5472
- case 1:
5473
- inferredType = _state.sent();
5474
- if (inferredType) {
5475
- onTypeInferred(inferredType);
5476
- }
5477
- return [
5478
- 2
5479
- ];
5480
- }
5481
- });
5482
- })();
5483
- }, 100);
5484
- }
5485
- });
5486
- editor.addCommand(monaco.KeyCode.F1, function() {});
5487
- var cursorDisposable = editor.onDidChangeCursorPosition(function() {
5488
- return _async_to_generator(function() {
5489
- var model, expressionToAnalyze, inferredType;
5490
- return _ts_generator(this, function(_state) {
5491
- switch(_state.label){
5492
- case 0:
5493
- if (!(onTypeInferred && editor.hasTextFocus())) return [
5494
- 3,
5495
- 2
5496
- ];
5497
- model = editor.getModel();
5498
- if (!(model && model.getValue().trim())) return [
5499
- 3,
5500
- 2
5501
- ];
5502
- if (typeInferenceTimeoutRef.current) {
5503
- clearTimeout(typeInferenceTimeoutRef.current);
5504
- }
5505
- expressionToAnalyze = model.getValue();
5506
- return [
5507
- 4,
5508
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDD37")
5509
- ];
5510
- case 1:
5511
- inferredType = _state.sent();
5512
- if (inferredType) {
5513
- onTypeInferred(inferredType);
5514
- }
5515
- _state.label = 2;
5516
- case 2:
5517
- return [
5518
- 2
5519
- ];
5520
- }
5521
- });
5522
- })();
5523
- });
5524
- editor.setPosition({
5525
- lineNumber: 1,
5526
- column: 999999
5527
- });
5528
- window.requestAnimationFrame(function() {
5529
- editor.focus();
5530
- setTimeout(function() {
5531
- return _async_to_generator(function() {
5532
- var model, markers, hasErrors, expressionToAnalyze, inferredType;
5533
- return _ts_generator(this, function(_state) {
5534
- switch(_state.label){
5535
- case 0:
5536
- model = editor.getModel();
5537
- if (!(onTypeInferred && model && model.getValue())) return [
5538
- 3,
5539
- 3
5540
- ];
5541
- console.log("\uD83D\uDD37 Triggering initial type inference for inline editor");
5542
- markers = monaco.editor.getModelMarkers({
5543
- resource: model.uri
5544
- });
5545
- hasErrors = markers.some(function(marker) {
5546
- return marker.severity === monaco.MarkerSeverity.Error;
5547
- });
5548
- if (!hasErrors) return [
5549
- 3,
5550
- 1
5551
- ];
5552
- onTypeInferred("error");
5553
- return [
5554
- 3,
5555
- 3
5556
- ];
5557
- case 1:
5558
- expressionToAnalyze = model.getValue();
5559
- return [
5560
- 4,
5561
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDD37")
5562
- ];
5563
- case 2:
5564
- inferredType = _state.sent();
5565
- if (inferredType) {
5566
- onTypeInferred(inferredType);
5567
- }
5568
- _state.label = 3;
5569
- case 3:
5570
- return [
5571
- 2
5572
- ];
5573
- }
5574
- });
5575
- })();
5576
- }, 100);
5577
- });
5578
- editorRef.current._inlineDisposables = {
5579
- enterKeyDisposable: enterKeyDisposable,
5580
- findCommand: findCommand,
5581
- markerChangeDisposable: markerChangeDisposable,
5582
- cursorDisposable: cursorDisposable
5583
- };
5584
- };
5585
- useEffect(function() {
5586
- return function() {
5587
- if (editorRef.current) {
5588
- console.log("\uD83D\uDD37 Inline editor unmounting - cleaning up");
5589
- if (typeInferenceTimeoutRef.current) {
5590
- clearTimeout(typeInferenceTimeoutRef.current);
5591
- }
5592
- if (editorRef.current._inlineDisposables) {
5593
- var _disposables_enterKeyDisposable_dispose, _disposables_enterKeyDisposable, _disposables_findCommand_dispose, _disposables_findCommand, _disposables_markerChangeDisposable_dispose, _disposables_markerChangeDisposable, _disposables_cursorDisposable_dispose, _disposables_cursorDisposable;
5594
- var disposables = editorRef.current._inlineDisposables;
5595
- (_disposables_enterKeyDisposable = disposables.enterKeyDisposable) === null || _disposables_enterKeyDisposable === void 0 ? void 0 : (_disposables_enterKeyDisposable_dispose = _disposables_enterKeyDisposable.dispose) === null || _disposables_enterKeyDisposable_dispose === void 0 ? void 0 : _disposables_enterKeyDisposable_dispose.call(_disposables_enterKeyDisposable);
5596
- (_disposables_findCommand = disposables.findCommand) === null || _disposables_findCommand === void 0 ? void 0 : (_disposables_findCommand_dispose = _disposables_findCommand.dispose) === null || _disposables_findCommand_dispose === void 0 ? void 0 : _disposables_findCommand_dispose.call(_disposables_findCommand);
5597
- (_disposables_markerChangeDisposable = disposables.markerChangeDisposable) === null || _disposables_markerChangeDisposable === void 0 ? void 0 : (_disposables_markerChangeDisposable_dispose = _disposables_markerChangeDisposable.dispose) === null || _disposables_markerChangeDisposable_dispose === void 0 ? void 0 : _disposables_markerChangeDisposable_dispose.call(_disposables_markerChangeDisposable);
5598
- (_disposables_cursorDisposable = disposables.cursorDisposable) === null || _disposables_cursorDisposable === void 0 ? void 0 : (_disposables_cursorDisposable_dispose = _disposables_cursorDisposable.dispose) === null || _disposables_cursorDisposable_dispose === void 0 ? void 0 : _disposables_cursorDisposable_dispose.call(_disposables_cursorDisposable);
5599
- }
5600
- editorRef.current = null;
5601
- }
5602
- };
5603
- }, []);
5604
- var handleEditorChange = function(newValue) {
5605
- onChange(newValue || "");
5606
- };
5607
- return /* @__PURE__ */ React4__default.createElement("div", {
5608
- className: cn("uii:relative uii:flex-1", className)
5609
- }, /* @__PURE__ */ React4__default.createElement(Editor, {
5610
- theme: "vs-dark",
5611
- height: "26px",
5612
- language: "typescript",
5613
- value: value,
5614
- onChange: handleEditorChange,
5615
- onMount: handleEditorDidMount,
5616
- beforeMount: handleEditorWillMount,
5617
- width: "100%",
5618
- loading: /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null, /* @__PURE__ */ React4__default.createElement(FontAwesomeIcon, {
5619
- icon: faSpinner,
5620
- className: "uii:animate-spin"
5621
- })),
5622
- options: InlineEditorOptions,
5623
- className: "uii:-ml-[4px] uii:-mt-[1px] inline-editor"
5624
- }), !value && /* @__PURE__ */ React4__default.createElement("div", {
5625
- className: "uii:absolute uii:inset-0 uii:flex uii:items-center uii:pointer-events-none uii:text-muted-foreground uii:text-sm"
5626
- }, placeholder));
5627
- }
5628
- function FullPanelExpressionEditor(param) {
5629
- var value = param.value, onChange = param.onChange, onClose = param.onClose, onBlur = param.onBlur, onTypeInferred = param.onTypeInferred, _param_context = param.context, context = _param_context === void 0 ? {} : _param_context, className = param.className, _param_placeholder = param.placeholder, placeholder = _param_placeholder === void 0 ? "Enter expression..." : _param_placeholder;
5630
- var editorRef = useRef(null);
5631
- var monacoRef = useRef(null);
5632
- var typeInferenceTimeoutRef = useRef(null);
5633
- var handleEditorWillMount = function(monaco) {
5634
- monacoRef.current = monaco;
5635
- var contextKeys = Object.keys(context);
5636
- if (contextKeys.length > 0) {
5637
- monaco.languages.typescript.javascriptDefaults.addExtraLib("\n declare const ".concat(contextKeys.join(", "), ": any;\n "), "context.d.ts");
5638
- }
5639
- };
5640
- var handleFPEditorDidMount = function(editor, monaco) {
5641
- editorRef.current = editor;
5642
- editor.updateOptions(FullPanelEditorOptions);
5643
- console.log("\uD83D\uDFE6 FULL-SCREEN panel editor mounted!");
5644
- console.log("Full-screen editor is read-only?", editor.getOption(monaco.editor.EditorOption.readOnly));
5645
- var escapeKeyDisposable = editor.onKeyDown(function(e) {
5646
- if (e.keyCode === monaco.KeyCode.Escape) {
5647
- console.log("\uD83D\uDFE6 Escape pressed in FULL-SCREEN editor - closing");
5648
- e.preventDefault();
5649
- e.stopPropagation();
5650
- onClose();
5651
- }
5652
- if (e.keyCode === monaco.KeyCode.Enter) {
5653
- var _editor__contentWidgets, _contextKeyService_getContextKeyValue;
5654
- var suggestWidget = (_editor__contentWidgets = editor._contentWidgets) === null || _editor__contentWidgets === void 0 ? void 0 : _editor__contentWidgets["editor.widget.suggestWidget"];
5655
- var isSuggestVisible = (suggestWidget === null || suggestWidget === void 0 ? void 0 : suggestWidget.widget) && !suggestWidget.widget._hidden && suggestWidget.widget.state !== void 0 && suggestWidget.widget.state !== 0;
5656
- var contextKeyService = editor._contextKeyService;
5657
- var suggestWidgetVisible = contextKeyService === null || contextKeyService === void 0 ? void 0 : (_contextKeyService_getContextKeyValue = contextKeyService.getContextKeyValue) === null || _contextKeyService_getContextKeyValue === void 0 ? void 0 : _contextKeyService_getContextKeyValue.call(contextKeyService, "suggestWidgetVisible");
5658
- if (isSuggestVisible || suggestWidgetVisible) {
5659
- console.log("\uD83D\uDFE6 Enter in FULL-SCREEN - accepting autocomplete");
5660
- e.preventDefault();
5661
- e.stopPropagation();
5662
- editor.trigger("", "acceptSelectedSuggestion");
5663
- } else {
5664
- console.log("\uD83D\uDFE6 Enter in FULL-SCREEN - allowing newline (default behavior)");
5665
- }
5666
- }
5667
- });
5668
- var changeCount = 0;
5669
- var changeDisposable = editor.onDidChangeModelContent(function(e) {
5670
- var _editor_getModel;
5671
- changeCount++;
5672
- var newValue = editor.getValue();
5673
- console.log("\uD83D\uDFE6 FULL-SCREEN content changed (".concat(changeCount, "):"), newValue);
5674
- console.log("\uD83D\uDFE6 Line count: ".concat((_editor_getModel = editor.getModel()) === null || _editor_getModel === void 0 ? void 0 : _editor_getModel.getLineCount()));
5675
- if (onTypeInferred) {
5676
- if (typeInferenceTimeoutRef.current) {
5677
- clearTimeout(typeInferenceTimeoutRef.current);
5678
- }
5679
- console.log("\uD83D\uDFE6 Content changed - debouncing type inference");
5680
- typeInferenceTimeoutRef.current = setTimeout(function() {
5681
- return _async_to_generator(function() {
5682
- var expressionToAnalyze, inferredType;
5683
- return _ts_generator(this, function(_state) {
5684
- switch(_state.label){
5685
- case 0:
5686
- expressionToAnalyze = newValue;
5687
- return [
5688
- 4,
5689
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDFE6")
5690
- ];
5691
- case 1:
5692
- inferredType = _state.sent();
5693
- if (inferredType) {
5694
- onTypeInferred(inferredType);
5695
- }
5696
- return [
5697
- 2
5698
- ];
5699
- }
5700
- });
5701
- })();
5702
- }, 200);
5703
- }
5704
- });
5705
- var markerChangeDisposable = monaco.editor.onDidChangeMarkers(function(uris) {
5706
- var model2 = editor.getModel();
5707
- if (!model2 || !onTypeInferred) return;
5708
- var isOurModel = uris.some(function(uri) {
5709
- return uri.toString() === model2.uri.toString();
5710
- });
5711
- if (!isOurModel) return;
5712
- var markers = monaco.editor.getModelMarkers({
5713
- resource: model2.uri
5714
- });
5715
- var hasErrors = markers.some(function(marker) {
5716
- return marker.severity === monaco.MarkerSeverity.Error;
5717
- });
5718
- console.log("\uD83D\uDFE6 Monaco markers changed - hasErrors:", hasErrors);
5719
- if (hasErrors) {
5720
- if (typeInferenceTimeoutRef.current) {
5721
- clearTimeout(typeInferenceTimeoutRef.current);
5722
- typeInferenceTimeoutRef.current = null;
5723
- }
5724
- console.log("\uD83D\uDFE6 ERROR detected - immediately setting type to error");
5725
- onTypeInferred("error");
5726
- } else {
5727
- if (typeInferenceTimeoutRef.current) {
5728
- clearTimeout(typeInferenceTimeoutRef.current);
5729
- }
5730
- console.log("\uD83D\uDFE6 Errors cleared - triggering type inference");
5731
- typeInferenceTimeoutRef.current = setTimeout(function() {
5732
- return _async_to_generator(function() {
5733
- var expressionToAnalyze, inferredType;
5734
- return _ts_generator(this, function(_state) {
5735
- switch(_state.label){
5736
- case 0:
5737
- expressionToAnalyze = model2.getValue();
5738
- return [
5739
- 4,
5740
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDFE6")
5741
- ];
5742
- case 1:
5743
- inferredType = _state.sent();
5744
- if (inferredType) {
5745
- onTypeInferred(inferredType);
5746
- }
5747
- return [
5748
- 2
5749
- ];
5750
- }
5751
- });
5752
- })();
5753
- }, 100);
5754
- }
5755
- });
5756
- editor.onDidBlurEditorText(function(e) {
5757
- var currentValue = editor.getValue();
5758
- onBlur === null || onBlur === void 0 ? void 0 : onBlur(_object_spread_props(_object_spread({}, e), {
5759
- currentValue: currentValue
5760
- }));
5761
- });
5762
- var model = editor.getModel();
5763
- if (model) {
5764
- var lineCount = model.getLineCount();
5765
- var lastLineLength = model.getLineLength(lineCount);
5766
- editor.setPosition({
5767
- lineNumber: lineCount,
5768
- column: lastLineLength + 1
5769
- });
5770
- }
5771
- editor.focus();
5772
- setTimeout(function() {
5773
- return _async_to_generator(function() {
5774
- var markers, hasErrors, expressionToAnalyze, inferredType;
5775
- return _ts_generator(this, function(_state) {
5776
- switch(_state.label){
5777
- case 0:
5778
- if (!(onTypeInferred && model)) return [
5779
- 3,
5780
- 3
5781
- ];
5782
- console.log("\uD83D\uDFE6 Triggering initial type inference for full-screen editor");
5783
- markers = monaco.editor.getModelMarkers({
5784
- resource: model.uri
5785
- });
5786
- hasErrors = markers.some(function(marker) {
5787
- return marker.severity === monaco.MarkerSeverity.Error;
5788
- });
5789
- if (!hasErrors) return [
5790
- 3,
5791
- 1
5792
- ];
5793
- console.log("\uD83D\uDFE6 Initial load has error - setting type to error");
5794
- onTypeInferred("error");
5795
- return [
5796
- 3,
5797
- 3
5798
- ];
5799
- case 1:
5800
- expressionToAnalyze = model.getValue();
5801
- return [
5802
- 4,
5803
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDFE6")
5804
- ];
5805
- case 2:
5806
- inferredType = _state.sent();
5807
- if (inferredType) {
5808
- onTypeInferred(inferredType);
5809
- }
5810
- _state.label = 3;
5811
- case 3:
5812
- return [
5813
- 2
5814
- ];
5815
- }
5816
- });
5817
- })();
5818
- }, 100);
5819
- var cursorDisposable = editor.onDidChangeCursorPosition(function() {
5820
- return _async_to_generator(function() {
5821
- var model2, expressionToAnalyze, inferredType;
5822
- return _ts_generator(this, function(_state) {
5823
- switch(_state.label){
5824
- case 0:
5825
- if (!(onTypeInferred && editor.hasTextFocus())) return [
5826
- 3,
5827
- 2
5828
- ];
5829
- model2 = editor.getModel();
5830
- if (!(model2 && model2.getValue().trim())) return [
5831
- 3,
5832
- 2
5833
- ];
5834
- if (typeInferenceTimeoutRef.current) {
5835
- clearTimeout(typeInferenceTimeoutRef.current);
5836
- }
5837
- expressionToAnalyze = model2.getValue();
5838
- return [
5839
- 4,
5840
- inferTypeFromMonaco(editor, monaco, expressionToAnalyze, "\uD83D\uDFE6")
5841
- ];
5842
- case 1:
5843
- inferredType = _state.sent();
5844
- if (inferredType) {
5845
- onTypeInferred(inferredType);
5846
- }
5847
- _state.label = 2;
5848
- case 2:
5849
- return [
5850
- 2
5851
- ];
5852
- }
5853
- });
5854
- })();
5855
- });
5856
- editorRef.current._fullScreenDisposables = {
5857
- escapeKeyDisposable: escapeKeyDisposable,
5858
- changeDisposable: changeDisposable,
5859
- markerChangeDisposable: markerChangeDisposable,
5860
- cursorDisposable: cursorDisposable
5861
- };
5862
- };
5863
- useEffect(function() {
5864
- return function() {
5865
- if (editorRef.current) {
5866
- console.log("\uD83D\uDFE6 Full-screen editor unmounting - cleaning up");
5867
- if (typeInferenceTimeoutRef.current) {
5868
- clearTimeout(typeInferenceTimeoutRef.current);
5869
- }
5870
- if (editorRef.current._fullScreenDisposables) {
5871
- var _disposables_escapeKeyDisposable_dispose, _disposables_escapeKeyDisposable, _disposables_changeDisposable_dispose, _disposables_changeDisposable, _disposables_markerChangeDisposable_dispose, _disposables_markerChangeDisposable, _disposables_cursorDisposable_dispose, _disposables_cursorDisposable;
5872
- var disposables = editorRef.current._fullScreenDisposables;
5873
- (_disposables_escapeKeyDisposable = disposables.escapeKeyDisposable) === null || _disposables_escapeKeyDisposable === void 0 ? void 0 : (_disposables_escapeKeyDisposable_dispose = _disposables_escapeKeyDisposable.dispose) === null || _disposables_escapeKeyDisposable_dispose === void 0 ? void 0 : _disposables_escapeKeyDisposable_dispose.call(_disposables_escapeKeyDisposable);
5874
- (_disposables_changeDisposable = disposables.changeDisposable) === null || _disposables_changeDisposable === void 0 ? void 0 : (_disposables_changeDisposable_dispose = _disposables_changeDisposable.dispose) === null || _disposables_changeDisposable_dispose === void 0 ? void 0 : _disposables_changeDisposable_dispose.call(_disposables_changeDisposable);
5875
- (_disposables_markerChangeDisposable = disposables.markerChangeDisposable) === null || _disposables_markerChangeDisposable === void 0 ? void 0 : (_disposables_markerChangeDisposable_dispose = _disposables_markerChangeDisposable.dispose) === null || _disposables_markerChangeDisposable_dispose === void 0 ? void 0 : _disposables_markerChangeDisposable_dispose.call(_disposables_markerChangeDisposable);
5876
- (_disposables_cursorDisposable = disposables.cursorDisposable) === null || _disposables_cursorDisposable === void 0 ? void 0 : (_disposables_cursorDisposable_dispose = _disposables_cursorDisposable.dispose) === null || _disposables_cursorDisposable_dispose === void 0 ? void 0 : _disposables_cursorDisposable_dispose.call(_disposables_cursorDisposable);
5877
- }
5878
- editorRef.current = null;
5879
- }
5880
- };
5881
- }, []);
5882
- var handleEditorChange = function(newValue) {
5883
- onChange(newValue || "");
5884
- };
5885
- return /* @__PURE__ */ React4__default.createElement("div", {
5886
- className: cn("uii:relative uii:border uii:rounded-md uii:bg-background", className)
5887
- }, /* @__PURE__ */ React4__default.createElement("div", {
5888
- className: "uii:flex uii:items-center uii:justify-between uii:p-2 uii:border-b uii:bg-muted/50"
5889
- }, /* @__PURE__ */ React4__default.createElement("span", {
5890
- className: "uii:text-sm uii:font-medium"
5891
- }, "Expression Editor"), /* @__PURE__ */ React4__default.createElement("button", {
5892
- type: "button",
5893
- onClick: onClose,
5894
- className: "uii:text-muted-foreground hover:uii:text-foreground uii:p-1 uii:rounded uii:cursor-pointer uii:text-xs"
5895
- }, "\u2715")), /* @__PURE__ */ React4__default.createElement(Editor, {
5896
- height: "300px",
5897
- theme: "vs-dark",
5898
- language: "typescript",
5899
- value: value,
5900
- onChange: handleEditorChange,
5901
- onMount: handleFPEditorDidMount,
5902
- beforeMount: handleEditorWillMount,
5903
- options: FullPanelEditorOptions
5904
- }), !value && /* @__PURE__ */ React4__default.createElement("div", {
5905
- className: "uii:absolute uii:inset-0 uii:flex uii:items-center uii:justify-center uii:pointer-events-none uii:text-muted-foreground"
5906
- }, placeholder));
5907
- }
5908
- function useASTParser(expression, controlKey) {
5909
- var _useState = _sliced_to_array(useState(null), 2), ast = _useState[0], setAST = _useState[1];
5910
- var _useState1 = _sliced_to_array(useState([]), 2), tokens = _useState1[0], setTokens = _useState1[1];
5911
- var _useState2 = _sliced_to_array(useState([]), 2), dependencies = _useState2[0], setDependencies = _useState2[1];
5912
- var _useState3 = _sliced_to_array(useState(false), 2), isLoading = _useState3[0], setIsLoading = _useState3[1];
5913
- var _useState4 = _sliced_to_array(useState(null), 2), error = _useState4[0], setError = _useState4[1];
5914
- var requestIdRef = useRef(0);
5915
- var messageHandlerRef = useRef(null);
5916
- var controlKeyRef = useRef(controlKey || "default");
5917
- useEffect(function() {
5918
- controlKeyRef.current = controlKey || "default";
5919
- }, [
5920
- controlKey
5921
- ]);
5922
- useEffect(function() {
5923
- if (typeof window === "undefined" || !navigator.serviceWorker) {
5924
- setError("Service worker not available");
5925
- return;
5926
- }
5927
- var handleMessage = function(event) {
5928
- if (event.data.type === "AST_PARSE_RESULT") {
5929
- var _event_data_payload = event.data.payload, id = _event_data_payload.id, controlKey2 = _event_data_payload.controlKey, result = _event_data_payload.result;
5930
- if (id === requestIdRef.current && controlKey2 === controlKeyRef.current) {
5931
- console.log("Service worker AST response:", {
5932
- id: id,
5933
- controlKey: controlKey2,
5934
- result: result
5935
- });
5936
- setAST(result.ast);
5937
- setTokens(result.tokens);
5938
- setDependencies(result.dependencies || []);
5939
- setError(result.error || null);
5940
- setIsLoading(false);
5941
- } else {
5942
- console.log("Ignoring AST response - wrong control:", {
5943
- receivedId: id,
5944
- expectedId: requestIdRef.current,
5945
- receivedKey: controlKey2,
5946
- expectedKey: controlKeyRef.current
5947
- });
5948
- }
5949
- }
5950
- };
5951
- messageHandlerRef.current = handleMessage;
5952
- navigator.serviceWorker.addEventListener("message", handleMessage);
5953
- return function() {
5954
- if (messageHandlerRef.current) {
5955
- navigator.serviceWorker.removeEventListener("message", messageHandlerRef.current);
5956
- }
5957
- };
5958
- }, []);
5959
- useEffect(function() {
5960
- if (!expression.trim()) {
5961
- setAST(null);
5962
- setTokens([]);
5963
- setDependencies([]);
5964
- setError(null);
5965
- setIsLoading(false);
5966
- return;
5967
- }
5968
- if (!navigator.serviceWorker || !navigator.serviceWorker.controller) {
5969
- setError("Service worker not ready");
5970
- setIsLoading(false);
5971
- return;
5972
- }
5973
- setIsLoading(true);
5974
- setError(null);
5975
- requestIdRef.current++;
5976
- console.log("Sending expression to service worker:", {
5977
- expression: expression.trim(),
5978
- controlKey: controlKeyRef.current,
5979
- id: requestIdRef.current
5980
- });
5981
- navigator.serviceWorker.controller.postMessage({
5982
- type: "PARSE_AST",
5983
- payload: {
5984
- expression: expression.trim(),
5985
- id: requestIdRef.current,
5986
- controlKey: controlKeyRef.current
5987
- }
5988
- });
5989
- }, [
5990
- expression
5991
- ]);
5992
- return {
5993
- ast: ast,
5994
- tokens: tokens,
5995
- dependencies: dependencies,
5996
- isLoading: isLoading,
5997
- error: error
5998
- };
5999
- }
6000
- function ASTRenderer(param) {
6001
- var ast = param.ast, key = param.key, className = param.className, _param_variant = param.variant, variant = _param_variant === void 0 ? "inline" : _param_variant, _param_showTokens = param.showTokens, showTokens = _param_showTokens === void 0 ? false : _param_showTokens, _param_tokens = param.tokens, tokens = _param_tokens === void 0 ? [] : _param_tokens;
6002
- var getNodeColor = function(type) {
6003
- switch(type){
6004
- case "StringLiteral":
6005
- return "uii:text-green-600 uii:bg-green-100";
6006
- case "NumericLiteral":
6007
- return "uii:text-purple-600 uii:bg-purple-100";
6008
- case "Identifier":
6009
- return "uii:text-blue-600 uii:bg-blue-100";
6010
- case "Keyword":
6011
- case "Literal":
6012
- return "uii:text-orange-600 uii:bg-orange-100";
6013
- case "BinaryExpression":
6014
- return "uii:text-gray-700 uii:bg-gray-100";
6015
- case "CallExpression":
6016
- return "uii:text-indigo-600 uii:bg-indigo-100";
6017
- case "MemberExpression":
6018
- return "uii:text-cyan-600 uii:bg-cyan-100";
6019
- case "UnaryExpression":
6020
- return "uii:text-pink-600 uii:bg-pink-100";
6021
- case "ParenthesizedExpression":
6022
- return "uii:text-yellow-600 uii:bg-yellow-100";
6023
- default:
6024
- return "uii:text-gray-600 uii:bg-gray-100";
6025
- }
6026
- };
6027
- var renderInlineNode = function(node) {
6028
- var depth = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
6029
- if (depth > 2) return null;
6030
- if (node.type === "Identifier") {
6031
- return /* @__PURE__ */ React4__default.createElement("span", {
6032
- key: "".concat(node.start, "-").concat(node.end),
6033
- className: "uii:inline-flex uii:items-center uii:mr-1"
6034
- }, /* @__PURE__ */ React4__default.createElement("span", {
6035
- className: "uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-blue-100 uii:text-blue-800 uii:font-mono"
6036
- }, node.name || node.value));
6037
- }
6038
- if (node.type === "StringLiteral" || node.type === "NumericLiteral") {
6039
- return /* @__PURE__ */ React4__default.createElement("span", {
6040
- key: "".concat(node.start, "-").concat(node.end),
6041
- className: "uii:inline-flex uii:items-center uii:mr-1"
6042
- }, /* @__PURE__ */ React4__default.createElement("span", {
6043
- className: "uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-green-100 uii:text-green-800 uii:font-mono"
6044
- }, node.value));
6045
- }
6046
- if (node.type === "BinaryExpression") {
6047
- return /* @__PURE__ */ React4__default.createElement("span", {
6048
- key: "".concat(node.start, "-").concat(node.end),
6049
- className: "uii:inline-flex uii:items-center uii:mr-1"
6050
- }, node.left && renderInlineNode(node.left, depth + 1), /* @__PURE__ */ React4__default.createElement("span", {
6051
- className: "uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-purple-100 uii:text-purple-800 uii:font-mono uii:mx-1"
6052
- }, node.operator), node.right && renderInlineNode(node.right, depth + 1));
6053
- }
6054
- if (node.type === "CallExpression") {
6055
- return /* @__PURE__ */ React4__default.createElement("span", {
6056
- key: "".concat(node.start, "-").concat(node.end),
6057
- className: "uii:inline-flex uii:items-center uii:mr-1"
6058
- }, node.callee && renderInlineNode(node.callee, depth + 1), /* @__PURE__ */ React4__default.createElement("span", {
6059
- className: "text-xs text-gray-600"
6060
- }, "()"));
6061
- }
6062
- if (node.type === "PropertyAccessExpression") {
6063
- return /* @__PURE__ */ React4__default.createElement("span", {
6064
- key: "".concat(node.start, "-").concat(node.end),
6065
- className: "uii:inline-flex uii:items-center uii:mr-1"
6066
- }, node.object && renderInlineNode(node.object, depth + 1), /* @__PURE__ */ React4__default.createElement("span", {
6067
- className: "text-xs text-gray-600"
6068
- }, "."), node.property && renderInlineNode(node.property, depth + 1));
6069
- }
6070
- return /* @__PURE__ */ React4__default.createElement("span", {
6071
- key: "".concat(node.start, "-").concat(node.end),
6072
- className: "uii:inline-flex uii:items-center uii:mr-1"
6073
- }, /* @__PURE__ */ React4__default.createElement("span", {
6074
- className: "px-1 py-0.5 rounded text-xs bg-gray-100 text-gray-600 font-mono"
6075
- }, node.type));
6076
- };
6077
- var renderTreeNode = function(node) {
6078
- var depth = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
6079
- if (depth > 4) return null;
6080
- var indent = " ".repeat(depth);
6081
- return /* @__PURE__ */ React4__default.createElement("div", {
6082
- key: "".concat(node.start, "-").concat(node.end),
6083
- className: "font-mono text-xs"
6084
- }, /* @__PURE__ */ React4__default.createElement("div", {
6085
- className: "uii:flex uii:items-start uii:gap-2"
6086
- }, /* @__PURE__ */ React4__default.createElement("span", {
6087
- className: "uii:text-gray-400"
6088
- }, indent), /* @__PURE__ */ React4__default.createElement("span", {
6089
- className: cn("uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:font-semibold", getNodeColor(node.type))
6090
- }, node.type), node.value && /* @__PURE__ */ React4__default.createElement("span", {
6091
- className: "uii:text-green-600"
6092
- }, '"', node.value, '"'), node.operator && /* @__PURE__ */ React4__default.createElement("span", {
6093
- className: "uii:text-purple-600"
6094
- }, node.operator), node.name && /* @__PURE__ */ React4__default.createElement("span", {
6095
- className: "uii:text-blue-600"
6096
- }, node.name)), node.left && /* @__PURE__ */ React4__default.createElement("div", {
6097
- className: "uii:ml-2"
6098
- }, /* @__PURE__ */ React4__default.createElement("span", {
6099
- className: "uii:text-gray-500 uii:text-xs"
6100
- }, "left: "), renderTreeNode(node.left, depth + 1)), node.right && /* @__PURE__ */ React4__default.createElement("div", {
6101
- className: "uii:ml-2"
6102
- }, /* @__PURE__ */ React4__default.createElement("span", {
6103
- className: "uii:text-gray-500 uii:text-xs"
6104
- }, "right: "), renderTreeNode(node.right, depth + 1)), node.argument && /* @__PURE__ */ React4__default.createElement("div", {
6105
- className: "uii:ml-2"
6106
- }, /* @__PURE__ */ React4__default.createElement("span", {
6107
- className: "uii:text-gray-500 uii:text-xs"
6108
- }, "arg: "), renderTreeNode(node.argument, depth + 1)), node.object && /* @__PURE__ */ React4__default.createElement("div", {
6109
- className: "uii:ml-2"
6110
- }, /* @__PURE__ */ React4__default.createElement("span", {
6111
- className: "uii:text-gray-500 uii:text-xs"
6112
- }, "obj: "), renderTreeNode(node.object, depth + 1)), node.property && /* @__PURE__ */ React4__default.createElement("div", {
6113
- className: "uii:ml-2"
6114
- }, /* @__PURE__ */ React4__default.createElement("span", {
6115
- className: "uii:text-gray-500 uii:text-xs"
6116
- }, "prop: "), renderTreeNode(node.property, depth + 1)), node.index && /* @__PURE__ */ React4__default.createElement("div", {
6117
- className: "uii:ml-2"
6118
- }, /* @__PURE__ */ React4__default.createElement("span", {
6119
- className: "uii:text-gray-500 uii:text-xs"
6120
- }, "idx: "), renderTreeNode(node.index, depth + 1)), !node.left && !node.right && !node.argument && !node.object && !node.property && !node.index && node.children && node.children.length > 0 && /* @__PURE__ */ React4__default.createElement("div", {
6121
- className: "uii:ml-2"
6122
- }, node.children.slice(0, 3).map(function(child, index) {
6123
- return renderTreeNode(child, depth + 1);
6124
- }), node.children.length > 3 && /* @__PURE__ */ React4__default.createElement("div", {
6125
- className: "uii:ml-2 uii:text-gray-500 uii:text-xs"
6126
- }, "... and ", node.children.length - 3, " more")));
6127
- };
6128
- var renderTokens = function() {
6129
- if (tokens.length === 0) return null;
6130
- var displayTokens = tokens.slice(0, 10);
6131
- return /* @__PURE__ */ React4__default.createElement("div", {
6132
- className: "uii:space-y-2"
6133
- }, /* @__PURE__ */ React4__default.createElement("div", {
6134
- className: "uii:text-sm uii:font-semibold uii:text-gray-700"
6135
- }, "Tokens ", tokens.length > 10 && "(".concat(tokens.length, " total)"), ":"), /* @__PURE__ */ React4__default.createElement("div", {
6136
- className: "uii:flex uii:flex-wrap uii:gap-1"
6137
- }, displayTokens.map(function(token, index) {
6138
- return /* @__PURE__ */ React4__default.createElement("span", {
6139
- key: index,
6140
- className: cn("uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:font-mono", token.type.includes("Keyword") && "uii:bg-blue-100 uii:text-blue-800", token.type.includes("Identifier") && "uii:bg-green-100 uii:text-green-800", token.type.includes("String") && "uii:bg-yellow-100 uii:text-yellow-800", token.type.includes("Numeric") && "uii:bg-purple-100 uii:text-purple-800", token.type.includes("Punctuation") && "uii:bg-gray-100 uii:text-gray-800", "uii:bg-gray-100 uii:text-gray-600")
6141
- }, token.value);
6142
- }), tokens.length > 10 && /* @__PURE__ */ React4__default.createElement("span", {
6143
- className: "uii:px-1 uii:py-0.5 uii:rounded uii:text-xs uii:bg-gray-200 uii:text-gray-600"
6144
- }, "+", tokens.length - 10, " more")));
6145
- };
6146
- if (!ast) {
6147
- return /* @__PURE__ */ React4__default.createElement("div", {
6148
- className: cn("uii:text-gray-500 uii:text-sm uii:italic", className)
6149
- }, "No AST available");
4875
+ useTemplateFieldContext: function() {
4876
+ return useTemplateFieldContext;
6150
4877
  }
6151
- if (variant === "inline") {
6152
- return /* @__PURE__ */ React4__default.createElement("div", {
6153
- className: cn("uii:inline-flex uii:items-center uii:gap-2", className)
6154
- }, renderInlineNode(ast));
6155
- }
6156
- if (variant === "compact") {
6157
- return /* @__PURE__ */ React4__default.createElement("div", {
6158
- className: cn("uii:space-y-2", className)
6159
- }, /* @__PURE__ */ React4__default.createElement("div", {
6160
- className: "uii:flex uii:flex-wrap uii:gap-1"
6161
- }, renderInlineNode(ast)), showTokens && renderTokens());
6162
- }
6163
- return /* @__PURE__ */ React4__default.createElement("div", {
6164
- className: cn("uii:space-y-3", className)
6165
- }, /* @__PURE__ */ React4__default.createElement("div", {
6166
- className: "uii:space-y-2"
6167
- }, /* @__PURE__ */ React4__default.createElement("div", {
6168
- className: "uii:text-sm uii:font-semibold uii:text-gray-700"
6169
- }, "AST Tree:"), /* @__PURE__ */ React4__default.createElement("div", {
6170
- className: "uii:p-3 uii:border uii:rounded-md uii:bg-gray-50 uii:max-h-64 uii:overflow-auto"
6171
- }, renderTreeNode(ast))), showTokens && renderTokens());
6172
- }
6173
- function ExpressionWrapper(param) {
6174
- var label = param.label, value = param.value, type = param.type, _param_valuesLoading = param.valuesLoading, valuesLoading = _param_valuesLoading === void 0 ? false : _param_valuesLoading, key = param.key, onValueChange = param.onValueChange, onDependenciesChange = param.onDependenciesChange, metadata = param.metadata, children = param.children, fieldName = param.fieldName, _param_expressionContext = param.expressionContext, expressionContext = _param_expressionContext === void 0 ? {} : _param_expressionContext, availableNodes = param.availableNodes, myInterface = param.myInterface, contextTypeDefinitions = param.contextTypeDefinitions, _param_inlineEditor = param.inlineEditor, inlineEditor = _param_inlineEditor === void 0 ? true : _param_inlineEditor, className = param.className, editorClassName = param.editorClassName, _param_expressionPlaceholder = param.expressionPlaceholder, expressionPlaceholder = _param_expressionPlaceholder === void 0 ? "Enter expression..." : _param_expressionPlaceholder, evaluateExpression = param.evaluateExpression, expressionResult = param.expressionResult, _param_isEvaluating = param.isEvaluating, isEvaluating = _param_isEvaluating === void 0 ? false : _param_isEvaluating, _param_isExpressionValid = param.isExpressionValid, isExpressionValid = _param_isExpressionValid === void 0 ? true : _param_isExpressionValid, _param_expectedType = param.expectedType, expectedType = _param_expectedType === void 0 ? "any" : _param_expectedType;
6175
- var _useState = _sliced_to_array(useState(function() {
6176
- var initialMetadata = metadata || {
6177
- expression: "",
6178
- mode: "value",
6179
- isEditing: false,
6180
- isFullScreen: false,
6181
- value: void 0
6182
- };
6183
- return _object_spread_props(_object_spread({}, initialMetadata), {
6184
- isEditing: false,
6185
- isFullScreen: false,
6186
- mode: "value"
6187
- });
6188
- }), 2), expressionMetadata = _useState[0], setExpressionMetadata = _useState[1];
6189
- var _useState1 = _sliced_to_array(useState(value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value && "type" in value && value.type === "expression" ? value.value : value), 2), originalValue = _useState1[0], setOriginalValue = _useState1[1];
6190
- var _useState2 = _sliced_to_array(useState(value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value && "type" in value && value.type === "expression" ? value.value : value), 2), currentValue = _useState2[0], setCurrentValue = _useState2[1];
6191
- var formatValue = useCallback(function(value2) {
6192
- switch(type){
6193
- case "float":
6194
- {
6195
- return typeof value2 === "string" && !isNaN(parseFloat(value2)) ? parseFloat(value2) : value2;
6196
- }
6197
- case "integer":
6198
- case "number":
6199
- {
6200
- return typeof value2 === "string" && !isNaN(parseInt(value2)) ? parseInt(value2) : value2;
6201
- }
6202
- case "string[]":
6203
- {
6204
- return typeof value2 === "string" ? value2.split(",") : value2;
6205
- }
6206
- case "string":
6207
- default:
6208
- {
6209
- return value2;
6210
- }
6211
- }
6212
- }, [
6213
- type
6214
- ]);
6215
- var _useState3 = _sliced_to_array(useState(), 2), currentEditorValue = _useState3[0], setCurrentEditorValue = _useState3[1];
6216
- var currentExpressionValueExt = useExpressionModeStore.getState().getState(fieldName).expression;
6217
- useEffect(function() {
6218
- if (metadata) {
6219
- setExpressionMetadata(_object_spread_props(_object_spread({}, metadata), {
6220
- // Don't restore editing/fullscreen state from metadata
6221
- // User needs to explicitly click to edit
6222
- isEditing: false,
6223
- isFullScreen: false
6224
- }));
4878
+ });
4879
+ function Input(param) {
4880
+ 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;
4881
+ var displayValue = React4.useMemo(function() {
4882
+ if (value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value) {
4883
+ return value.expression || "";
6225
4884
  }
4885
+ return String(value !== null && value !== void 0 ? value : "");
6226
4886
  }, [
6227
- metadata
4887
+ value
6228
4888
  ]);
6229
- var isExpressionValue = useMemo(function() {
6230
- return value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value && "type" in value && value.type === "expression";
4889
+ var isExpression = React4.useMemo(function() {
4890
+ return value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value;
6231
4891
  }, [
6232
4892
  value
6233
4893
  ]);
6234
- var isInitialMount = useRef(true);
6235
- useEffect(function() {
6236
- if (value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value && "type" in value && value.type === "expression") {
6237
- var exprValue = value.value;
6238
- var exprString = value.expression;
6239
- if (exprValue !== void 0) {
6240
- setCurrentValue(formatValue(exprValue));
6241
- setOriginalValue(formatValue(exprValue));
6242
- }
6243
- if (exprString && expressionMode.expression !== exprString) {
6244
- expressionMode.setExpression(exprString);
6245
- if (isInitialMount.current && !expressionMode.isEditing) {
6246
- expressionMode.switchToExpression();
6247
- }
6248
- }
6249
- var isMetadataOutOfSync = !metadata || metadata.expression !== exprString || metadata.mode === "value" || // If value has expression but mode is 'value', it's out of sync
6250
- metadata.isEditing === true || // Should never start editing on load
6251
- metadata.isFullScreen === true;
6252
- if (isInitialMount.current && isMetadataOutOfSync) {
6253
- var syncedMetadata = {
6254
- expression: exprString || "",
6255
- value: formatValue(exprValue),
6256
- mode: "expression",
6257
- // Show expression display (not editing)
6258
- isEditing: false,
6259
- isFullScreen: false
6260
- };
6261
- setTimeout(function() {
6262
- onValueChange(value, _object_spread_props(_object_spread({}, syncedMetadata), {
6263
- value: formatValue(value)
6264
- }));
6265
- }, 0);
6266
- }
4894
+ var handleChange = React4.useCallback(function(e) {
4895
+ var newValue = e.target.value;
4896
+ if (newValue.includes("{{")) {
4897
+ onChange({
4898
+ expression: newValue,
4899
+ type: "expression"
4900
+ });
6267
4901
  } else {
6268
- if (!valuesLoading) {
6269
- setCurrentValue(formatValue(value));
6270
- setOriginalValue(formatValue(value));
6271
- if (isInitialMount.current && ((metadata === null || metadata === void 0 ? void 0 : metadata.expression) || (metadata === null || metadata === void 0 ? void 0 : metadata.mode) === "expression")) {
6272
- var syncedMetadata1 = {
6273
- expression: "",
6274
- value: formatValue(value),
6275
- mode: "value",
6276
- isEditing: false,
6277
- isFullScreen: false
6278
- };
6279
- setTimeout(function() {
6280
- onValueChange(formatValue(value), _object_spread_props(_object_spread({}, syncedMetadata1), {
6281
- value: formatValue(value)
6282
- }));
6283
- }, 0);
6284
- }
6285
- }
6286
- }
6287
- if (isInitialMount.current) {
6288
- setTimeout(function() {
6289
- isInitialMount.current = false;
6290
- }, 100);
4902
+ onChange(newValue);
6291
4903
  }
6292
4904
  }, [
6293
- value,
6294
- valuesLoading
4905
+ onChange
6295
4906
  ]);
6296
- var expressionMode = useExpressionMode(fieldName);
6297
- var _useASTParser = useASTParser(expressionMode.expression, fieldName), ast = _useASTParser.ast, tokens = _useASTParser.tokens, dependencies = _useASTParser.dependencies, isParsing = _useASTParser.isLoading, parseError = _useASTParser.error;
6298
- var dependencyList = useMemo(function() {
6299
- if (!ast || dependencies.length === 0) {
6300
- return [];
6301
- }
6302
- return dependencies.map(function(dep) {
6303
- return {
6304
- name: dep,
6305
- exists: expressionContext ? dep in expressionContext : false,
6306
- value: expressionContext ? expressionContext[dep] : void 0
6307
- };
4907
+ var showError = hasRequiredError || required && !displayValue;
4908
+ return /* @__PURE__ */ React4.createElement("div", {
4909
+ className: cn("uii:mb-2", className)
4910
+ }, /* @__PURE__ */ React4.createElement("div", {
4911
+ className: "uii:flex uii:items-center uii:gap-2 uii:mt-2"
4912
+ }, /* @__PURE__ */ React4.createElement("label", {
4913
+ htmlFor: fieldName,
4914
+ className: "uii:text-xs uii:font-bold uii:text-muted-foreground"
4915
+ }, label, ":"), expectedType !== "$.interface.timer" && /* @__PURE__ */ React4.createElement("span", {
4916
+ 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"
4917
+ }, expectedType), showError && /* @__PURE__ */ React4.createElement("span", {
4918
+ 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"
4919
+ }, "Required")), /* @__PURE__ */ React4.createElement("div", {
4920
+ className: "uii:mt-0.5"
4921
+ }, /* @__PURE__ */ React4.createElement("input", {
4922
+ id: fieldName,
4923
+ name: fieldName,
4924
+ type: "text",
4925
+ value: displayValue,
4926
+ onChange: handleChange,
4927
+ disabled: disabled,
4928
+ placeholder: placeholder || "Enter value or {{ expression }}...",
4929
+ className: cn("uii:w-full uii:h-9 uii:px-3 uii:rounded-sm uii:border uii:bg-background uii:text-sm", "uii:outline-none uii:transition-all", "focus:uii:border-ring focus:uii:ring-ring/50 focus:uii:ring-[3px]", showError ? "uii:border-red-500 hover:uii:border-red-600" : "uii:border-input hover:uii:border-ring/50", isExpression && "uii:font-mono uii:text-amber-600", disabled && "uii:opacity-50 uii:cursor-not-allowed", editorClassName)
4930
+ })));
4931
+ }
4932
+ function Select(param) {
4933
+ 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;
4934
+ var _React4_useState = _sliced_to_array(React4.useState(false), 2), isExpressionMode = _React4_useState[0], setIsExpressionMode = _React4_useState[1];
4935
+ var _React4_useState1 = _sliced_to_array(React4.useState(""), 2), expressionValue = _React4_useState1[0], setExpressionValue = _React4_useState1[1];
4936
+ var options = React4.useMemo(function() {
4937
+ return rawOptions.map(function(opt) {
4938
+ return typeof opt === "string" ? {
4939
+ value: opt,
4940
+ label: opt
4941
+ } : opt;
6308
4942
  });
6309
4943
  }, [
6310
- dependencies,
6311
- expressionContext,
6312
- ast
6313
- ]);
6314
- var _useState4 = _sliced_to_array(useState(null), 2), typeScriptInferredType = _useState4[0], setTypeScriptInferredType = _useState4[1];
6315
- var handleTypeInferred = useCallback(function(type2) {
6316
- setTypeScriptInferredType(type2);
6317
- }, []);
6318
- var expressionHasNewlines = useMemo(function() {
6319
- return expressionMode.expression.includes("\n") || expressionMode.expression.includes("\r");
6320
- }, [
6321
- expressionMode.expression
6322
- ]);
6323
- var inferredReturnType = useMemo(function() {
6324
- return typeScriptInferredType || "unknown";
6325
- }, [
6326
- typeScriptInferredType
4944
+ rawOptions
6327
4945
  ]);
6328
- var hasTypeMismatch = useMemo(function() {
6329
- if (!inferredReturnType || inferredReturnType === "unknown" || inferredReturnType === "any" || inferredReturnType === "error") {
6330
- return false;
6331
- }
6332
- var normalizedInferred = inferredReturnType.toLowerCase().trim();
6333
- var normalizedExpected = (type || expectedType || "any").toLowerCase().trim();
6334
- if (normalizedExpected === "array" && normalizedInferred.endsWith("[]")) {
6335
- return false;
6336
- }
6337
- if (normalizedInferred === normalizedExpected) {
6338
- return false;
6339
- }
6340
- if (normalizedExpected === "any") {
6341
- return false;
6342
- }
6343
- if (normalizedExpected === "string" && (normalizedInferred.startsWith('"') || normalizedInferred.startsWith("'"))) {
6344
- return false;
6345
- }
6346
- if (normalizedExpected === "number" && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(normalizedInferred)) {
6347
- return false;
6348
- }
6349
- if (normalizedExpected === "integer" && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(normalizedInferred)) {
6350
- return false;
6351
- }
6352
- if (normalizedExpected === "integer" && normalizedInferred === "number") {
6353
- return false;
4946
+ var displayValue = React4.useMemo(function() {
4947
+ if (value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value) {
4948
+ return value.expression || "";
6354
4949
  }
6355
- if (normalizedExpected === "float" && /^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(normalizedInferred)) {
6356
- return false;
6357
- }
6358
- if (normalizedExpected === "float" && normalizedInferred === "number") {
6359
- return false;
6360
- }
6361
- if (normalizedExpected === "boolean" && (normalizedInferred === "true" || normalizedInferred === "false")) {
6362
- return false;
6363
- }
6364
- return true;
6365
- }, [
6366
- inferredReturnType,
6367
- type,
6368
- expectedType
6369
- ]);
6370
- var _useState5 = _sliced_to_array(useState(null), 2), internalExpressionResult = _useState5[0], setInternalExpressionResult = _useState5[1];
6371
- var _useState6 = _sliced_to_array(useState(false), 2), internalIsEvaluating = _useState6[0], setInternalIsEvaluating = _useState6[1];
6372
- var _useState7 = _sliced_to_array(useState(false), 2), isHovering = _useState7[0], setIsHovering = _useState7[1];
6373
- var _useState8 = _sliced_to_array(useState(true), 2), internalIsExpressionValid = _useState8[0], setInternalIsExpressionValid = _useState8[1];
6374
- var _useState9 = _sliced_to_array(useState({
6375
- syntax: true,
6376
- expression: true,
6377
- context: true,
6378
- type: true,
6379
- security: true
6380
- }), 2), validationState = _useState9[0], setValidationState = _useState9[1];
6381
- var hasExpressionError = useMemo(function() {
6382
- if (!expressionMode.expression || !expressionMode.expression.trim()) {
6383
- return false;
6384
- }
6385
- if (!internalIsExpressionValid || !isExpressionValid) {
6386
- return true;
6387
- }
6388
- if (parseError) {
6389
- return true;
6390
- }
6391
- if (!validationState.syntax || !validationState.expression) {
6392
- return true;
6393
- }
6394
- if ((expressionResult === null || expressionResult === void 0 ? void 0 : expressionResult.error) || (internalExpressionResult === null || internalExpressionResult === void 0 ? void 0 : internalExpressionResult.error)) {
6395
- return true;
6396
- }
6397
- return false;
4950
+ return String(value !== null && value !== void 0 ? value : "");
6398
4951
  }, [
6399
- expressionMode.expression,
6400
- internalIsExpressionValid,
6401
- isExpressionValid,
6402
- parseError,
6403
- validationState,
6404
- expressionResult,
6405
- internalExpressionResult
6406
- ]);
6407
- var isProgrammaticallyClearing = useRef(false);
6408
- var isSwitchingToFullScreen = useRef(false);
6409
- var isBlur = useRef(false);
6410
- var handleValidationChange = useCallback(function(isValid, errors) {
6411
- setInternalIsExpressionValid(isValid);
6412
- setValidationState(function(prev) {
6413
- return _object_spread_props(_object_spread({}, prev), {
6414
- syntax: isValid
6415
- });
6416
- });
6417
- }, []);
6418
- var checkForMultiLine = useCallback(function(expression) {
6419
- var hasNewlines = expression.includes("\n");
6420
- var isLong = expression.length > 80;
6421
- if (!expressionMode.isFullScreen) {
6422
- expressionMode.setFullScreen(hasNewlines || isLong);
6423
- }
6424
- }, [
6425
- expressionMode.isFullScreen
6426
- ]);
6427
- var internalEvaluateExpression = useCallback(function(expression, context) {
6428
- return _async_to_generator(function() {
6429
- var result, error;
6430
- return _ts_generator(this, function(_state) {
6431
- switch(_state.label){
6432
- case 0:
6433
- if (!evaluateExpression || !expression.trim()) return [
6434
- 2
6435
- ];
6436
- setInternalIsEvaluating(true);
6437
- _state.label = 1;
6438
- case 1:
6439
- _state.trys.push([
6440
- 1,
6441
- 3,
6442
- 4,
6443
- 5
6444
- ]);
6445
- return [
6446
- 4,
6447
- evaluateExpression(expression, context)
6448
- ];
6449
- case 2:
6450
- result = _state.sent();
6451
- setInternalExpressionResult(result);
6452
- return [
6453
- 3,
6454
- 5
6455
- ];
6456
- case 3:
6457
- error = _state.sent();
6458
- setInternalExpressionResult({
6459
- value: null,
6460
- ast: {
6461
- kind: 0,
6462
- text: "",
6463
- color: "#ff0000"
6464
- },
6465
- error: _instanceof(error, Error) ? error.message : "Unknown error",
6466
- isValid: false,
6467
- validation: {
6468
- syntax: false,
6469
- expression: false,
6470
- context: false,
6471
- type: false,
6472
- security: false
6473
- }
6474
- });
6475
- return [
6476
- 3,
6477
- 5
6478
- ];
6479
- case 4:
6480
- setInternalIsEvaluating(false);
6481
- return [
6482
- 7
6483
- ];
6484
- case 5:
6485
- return [
6486
- 2
6487
- ];
6488
- }
6489
- });
6490
- })();
6491
- }, [
6492
- evaluateExpression
6493
- ]);
6494
- var currentMetadata = useMemo(function() {
6495
- return {
6496
- expression: expressionMode.expression,
6497
- value: currentValue,
6498
- mode: expressionMode.current,
6499
- isEditing: expressionMode.isEditing,
6500
- isFullScreen: expressionMode.isFullScreen
6501
- };
6502
- }, [
6503
- expressionMode.expression,
6504
- expressionMode.current,
6505
- expressionMode.isFullScreen,
6506
- expressionMode.isEditing,
6507
- currentValue
6508
- ]);
6509
- var currentExpressionValue = useMemo(function() {
6510
- return {
6511
- expression: expressionMode.expression,
6512
- type: "expression"
6513
- };
6514
- }, [
6515
- expressionMode.currentValue || expressionMode.expression
6516
- ]);
6517
- var handleValueChange = useCallback(function(newValue) {
6518
- onValueChange(formatValue(newValue), _object_spread_props(_object_spread({}, currentMetadata), {
6519
- value: formatValue(newValue)
6520
- }));
6521
- }, [
6522
- onValueChange,
6523
- expressionMode,
6524
- isExpressionValue,
6525
- currentValue
6526
- ]);
6527
- var handleExpressionChange = useCallback(function(newExpression) {
6528
- isProgrammaticallyClearing.current = false;
6529
- expressionMode.setExpression(newExpression);
6530
- setCurrentEditorValue(newExpression);
6531
- checkForMultiLine(newExpression);
6532
- onValueChange({
6533
- expression: newExpression,
6534
- type: "expression"
6535
- }, _object_spread_props(_object_spread({}, currentMetadata), {
6536
- expression: newExpression
6537
- }));
6538
- }, [
6539
- expressionMode,
6540
- expressionContext,
6541
- onValueChange,
6542
- evaluateExpression,
6543
- internalEvaluateExpression,
6544
- checkForMultiLine
6545
- ]);
6546
- var handleExpressionBlur = useCallback(function(e) {
6547
- var forceBlur = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
6548
- return _async_to_generator(function() {
6549
- return _ts_generator(this, function(_state) {
6550
- if (isProgrammaticallyClearing.current) {
6551
- isProgrammaticallyClearing.current = false;
6552
- return [
6553
- 2
6554
- ];
6555
- }
6556
- if (isSwitchingToFullScreen.current) {
6557
- isSwitchingToFullScreen.current = false;
6558
- return [
6559
- 2
6560
- ];
6561
- }
6562
- if (expressionMode.isFullScreen && !forceBlur) {
6563
- return [
6564
- 2
6565
- ];
6566
- }
6567
- if (expressionHasNewlines && !forceBlur) {
6568
- return [
6569
- 2
6570
- ];
6571
- }
6572
- isBlur.current = true;
6573
- expressionMode.setEditing(false);
6574
- expressionMode.setFullScreen(false);
6575
- return [
6576
- 2
6577
- ];
6578
- });
6579
- })();
6580
- }, [
6581
- expressionMode,
6582
- expressionResult,
6583
- internalExpressionResult,
6584
- expressionContext,
6585
- onValueChange,
6586
- currentValue,
6587
- isEvaluating,
6588
- internalIsEvaluating,
6589
- currentExpressionValue,
6590
- expressionHasNewlines
4952
+ value
6591
4953
  ]);
6592
- useEffect(function() {
6593
- onValueChange(currentValue, _object_spread_props(_object_spread({}, currentMetadata), {
6594
- isFullScreen: expressionMode.isFullScreen
6595
- }));
4954
+ var isExpression = React4.useMemo(function() {
4955
+ return value && (typeof value === "undefined" ? "undefined" : _type_of(value)) === "object" && "expression" in value;
6596
4956
  }, [
6597
- expressionMode.isFullScreen
6598
- ]);
6599
- useEffect(function() {
6600
- if (expressionMode.isEditing && expressionHasNewlines && !expressionMode.isFullScreen) {
6601
- expressionMode.setFullScreen(true);
6602
- }
6603
- }, [
6604
- expressionHasNewlines,
6605
- expressionMode.isEditing,
6606
- expressionMode.isFullScreen
6607
- ]);
6608
- var handleModeChange = useCallback(function(newMode) {
6609
- switch(newMode){
6610
- case "value":
6611
- expressionMode.switchToValue();
6612
- expressionMode.setFullScreen(false);
6613
- onValueChange(originalValue || value, void 0);
6614
- break;
6615
- case "editor":
6616
- expressionMode.switchToEditor();
6617
- var shouldBeFullScreen = expressionHasNewlines;
6618
- if (shouldBeFullScreen) {
6619
- expressionMode.setFullScreen(true);
6620
- }
6621
- var editorMetadata = {
6622
- expression: expressionMode.expression,
6623
- value: currentValue,
6624
- mode: "expression",
6625
- isEditing: true,
6626
- isFullScreen: shouldBeFullScreen
6627
- };
6628
- onValueChange(expressionMode.expression ? {
6629
- expression: expressionMode.expression,
6630
- type: "expression"
6631
- } : currentValue, editorMetadata);
6632
- break;
6633
- case "expression":
6634
- setOriginalValue(currentValue);
6635
- expressionMode.switchToExpression();
6636
- if (expressionHasNewlines) {
6637
- expressionMode.setFullScreen(true);
6638
- }
6639
- break;
6640
- }
6641
- }, [
6642
- expressionMode,
6643
- currentValue,
6644
- onValueChange,
6645
- expressionHasNewlines,
6646
- originalValue,
6647
4957
  value
6648
4958
  ]);
6649
- useEffect(function() {
6650
- if (isBlur.current) {
6651
- if (!(expressionMode.expression && expressionMode.expression.trim())) {
6652
- expressionMode.switchToValue();
6653
- var _currentMetadata_value;
6654
- onValueChange((_currentMetadata_value = currentMetadata.value) !== null && _currentMetadata_value !== void 0 ? _currentMetadata_value : "", _object_spread_props(_object_spread({}, currentMetadata), {
6655
- mode: "value",
6656
- expression: "",
6657
- isEditing: false,
6658
- isFullScreen: false
6659
- }));
6660
- } else {
6661
- var _currentMetadata_value1;
6662
- onValueChange(currentMetadata.mode === "value" ? (_currentMetadata_value1 = currentMetadata.value) !== null && _currentMetadata_value1 !== void 0 ? _currentMetadata_value1 : "" : {
6663
- expression: currentMetadata.expression.trim(),
6664
- type: "expression"
6665
- }, _object_spread_props(_object_spread({}, currentMetadata), {
6666
- isEditing: false,
6667
- isFullScreen: false
6668
- }));
6669
- }
6670
- isBlur.current = false;
4959
+ React4.useEffect(function() {
4960
+ if (isExpression) {
4961
+ setIsExpressionMode(true);
4962
+ setExpressionValue(displayValue);
6671
4963
  }
6672
4964
  }, [
6673
- expressionMode.isEditing,
6674
- expressionMode.isFullScreen,
6675
- isBlur.current
4965
+ isExpression,
4966
+ displayValue
6676
4967
  ]);
6677
- useEffect(function() {
6678
- if (onDependenciesChange) {
6679
- onDependenciesChange(dependencies);
4968
+ var handleSelectChange = React4.useCallback(function(newValue) {
4969
+ if (newValue === "__expression__") {
4970
+ setIsExpressionMode(true);
4971
+ return;
6680
4972
  }
4973
+ onChange(newValue);
6681
4974
  }, [
6682
- dependencies,
6683
- onDependenciesChange
4975
+ onChange
6684
4976
  ]);
6685
- var handleClear = useCallback(function() {
6686
- isProgrammaticallyClearing.current = true;
6687
- onValueChange(currentValue, currentMetadata);
6688
- handleModeChange("value");
6689
- expressionMode.setFullScreen(false);
4977
+ var handleExpressionChange = React4.useCallback(function(e) {
4978
+ var newValue = e.target.value;
4979
+ setExpressionValue(newValue);
4980
+ onChange({
4981
+ expression: newValue,
4982
+ type: "expression"
4983
+ });
6690
4984
  }, [
6691
- onValueChange,
6692
- expressionMode,
6693
- originalValue
4985
+ onChange
6694
4986
  ]);
6695
- var _useState10 = _sliced_to_array(useState(currentValue), 2), localInput = _useState10[0], setLocalInput = _useState10[1];
6696
- useEffect(function() {
6697
- setLocalInput(currentValue);
4987
+ var handleSwitchToValue = React4.useCallback(function() {
4988
+ setIsExpressionMode(false);
4989
+ setExpressionValue("");
4990
+ onChange("");
6698
4991
  }, [
6699
- currentValue
4992
+ onChange
6700
4993
  ]);
6701
- var controlProps = useMemo(function() {
6702
- return {
6703
- value: currentValue,
6704
- onChange: handleValueChange,
6705
- onExpressionClick: function() {
6706
- return handleModeChange("editor");
4994
+ var showError = hasRequiredError || required && !displayValue;
4995
+ var renderProps = {
4996
+ value: displayValue,
4997
+ onChange: handleSelectChange,
4998
+ onExpressionClick: function() {
4999
+ return setIsExpressionMode(true);
5000
+ },
5001
+ options: options,
5002
+ localInput: displayValue,
5003
+ setLocalInput: function() {},
5004
+ expressionMode: {
5005
+ current: isExpressionMode ? "expression" : "value",
5006
+ isExpressionMode: isExpressionMode,
5007
+ isEditorMode: false,
5008
+ isEditing: false,
5009
+ isFullScreen: false,
5010
+ expression: expressionValue,
5011
+ switchToValue: handleSwitchToValue,
5012
+ switchToExpression: function() {
5013
+ return setIsExpressionMode(true);
6707
5014
  },
6708
- // Click handler to trigger expression mode
6709
- inferredType: inferredReturnType,
6710
- // Inferred TypeScript type
6711
- hasTypeMismatch: hasTypeMismatch,
6712
- // Whether inferred type matches expected
6713
- hasError: hasExpressionError,
6714
- // Whether expression has syntax/validation errors
6715
- localInput: localInput,
6716
- setLocalInput: setLocalInput,
6717
- expressionMode: {
6718
- current: expressionMode.current,
6719
- switchToValue: function() {
6720
- return handleModeChange("value");
6721
- },
6722
- switchToExpression: function() {
6723
- return handleModeChange("expression");
6724
- },
6725
- switchToEditor: function() {
6726
- return handleModeChange("editor");
6727
- },
6728
- clear: handleClear,
6729
- isExpressionMode: expressionMode.isExpressionMode,
6730
- isEditorMode: expressionMode.isEditorMode,
6731
- expression: expressionMode.expression,
6732
- setExpression: handleExpressionChange,
6733
- isEditing: expressionMode.isEditing,
6734
- setEditing: expressionMode.setEditing,
6735
- isFullScreen: expressionMode.isFullScreen,
6736
- setFullScreen: expressionMode.setFullScreen
6737
- }
6738
- };
6739
- }, [
6740
- currentValue,
6741
- handleValueChange,
6742
- expressionMode,
6743
- handleModeChange,
6744
- handleClear,
6745
- handleExpressionChange,
6746
- inferredReturnType,
6747
- hasTypeMismatch,
6748
- hasExpressionError
6749
- ]);
6750
- var renderContent = function() {
6751
- switch(expressionMode.current){
6752
- // case 'value':
6753
- // return children(controlProps);
6754
- case "expression":
6755
- var _this;
6756
- expressionMode.expression && expressionMode.expression.trim();
6757
- (_this = expressionResult || internalExpressionResult) === null || _this === void 0 ? void 0 : _this.isValid;
6758
- return controlProps.expressionMode.isEditing ? /* @__PURE__ */ React4__default.createElement("div", {
6759
- key: "expression",
6760
- className: cn("relative", className)
6761
- }, inlineEditor && !expressionMode.isFullScreen && !expressionHasNewlines ? /* @__PURE__ */ React4__default.createElement("div", {
6762
- className: cn("uii:flex uii:h-9 uii:w-full \n uii:min-w-0 uii:rounded-sm \n uii:border uii:border-ring \n uii:bg-background uii:px-3 uii:py-1 uii:text-base uii:shadow-xs \n uii:ring-ring/50 uii:ring-[3px] uii:transition-[color,box-shadow] \n uii:outline-none uii:md:text-sm uii:cursor-pointer\n uii:mt-0.5 ", editorClassName)
6763
- }, /* @__PURE__ */ React4__default.createElement(InlineExpressionEditor, {
6764
- value: expressionMode.expression,
6765
- onChange: function(newValue) {
6766
- handleExpressionChange(newValue);
6767
- },
6768
- onEnter: function() {
6769
- isSwitchingToFullScreen.current = true;
6770
- expressionMode.setFullScreen(true);
6771
- setTimeout(function() {
6772
- isSwitchingToFullScreen.current = false;
6773
- }, 100);
6774
- },
6775
- onBlur: handleExpressionBlur,
6776
- onTypeInferred: handleTypeInferred,
6777
- onValidationChange: handleValidationChange,
6778
- context: expressionContext,
6779
- placeholder: expressionPlaceholder
6780
- }), /* @__PURE__ */ React4__default.createElement("div", {
6781
- className: "uii:flex uii:items-center uii:gap-2 uii:mt-0.5"
6782
- }, /* @__PURE__ */ React4__default.createElement("span", {
6783
- className: "uii:text-xs uii:font-mono uii:cursor-pointer uii:text-muted-foreground",
6784
- onMouseDown: function(e) {
6785
- e.preventDefault();
6786
- e.stopPropagation();
6787
- isSwitchingToFullScreen.current = true;
6788
- expressionMode.setFullScreen(true);
6789
- setTimeout(function() {
6790
- isSwitchingToFullScreen.current = false;
6791
- }, 100);
6792
- }
6793
- }, /* @__PURE__ */ React4__default.createElement(FontAwesomeIcon, {
6794
- icon: faExpand
6795
- })), /* @__PURE__ */ React4__default.createElement("span", {
6796
- className: "uii:text-xs uii:font-mono uii:cursor-pointer uii:text-muted-foreground",
6797
- onMouseDown: function(e) {
6798
- e.preventDefault();
6799
- handleClear();
6800
- }
6801
- }, "Clear"))) : /* @__PURE__ */ React4__default.createElement("div", {
6802
- className: "uii:space-y-4"
6803
- }, /* @__PURE__ */ React4__default.createElement(FullPanelExpressionEditor, {
6804
- value: expressionMode.expression,
6805
- onChange: function(newValue) {
6806
- handleExpressionChange(newValue);
6807
- },
6808
- onClose: function() {
6809
- handleExpressionBlur(void 0, true);
6810
- expressionMode.setFullScreen(false);
6811
- },
6812
- onBlur: handleExpressionBlur,
6813
- onTypeInferred: handleTypeInferred,
6814
- context: expressionContext,
6815
- placeholder: expressionPlaceholder
6816
- }), (ast || dependencies.length > 0) && /* @__PURE__ */ React4__default.createElement("div", {
6817
- className: "uii:space-y-3"
6818
- }, inferredReturnType && inferredReturnType !== "unknown" && /* @__PURE__ */ React4__default.createElement("div", {
6819
- className: "uii:space-y-2"
6820
- }, /* @__PURE__ */ React4__default.createElement("div", {
6821
- className: "uii:flex uii:items-center uii:gap-2"
6822
- }, /* @__PURE__ */ React4__default.createElement("div", {
6823
- className: "uii:text-sm uii:font-semibold uii:text-gray-700"
6824
- }, "Inferred Return Type:"), typeScriptInferredType && inferredReturnType !== "error" && /* @__PURE__ */ React4__default.createElement("span", {
6825
- className: "uii:px-1.5 uii:py-0.5 uii:text-xs uii:rounded uii:bg-blue-100 uii:text-blue-700 uii:border uii:border-blue-200"
6826
- }, "TypeScript")), /* @__PURE__ */ React4__default.createElement("div", {
6827
- className: "uii:flex uii:items-center uii:gap-2"
6828
- }, inferredReturnType === "error" ? /* @__PURE__ */ React4__default.createElement("span", {
6829
- className: "uii:px-3 uii:py-1.5 uii:text-sm uii:font-mono uii:rounded uii:border uii:bg-red-50 uii:text-red-800 uii:border-red-200"
6830
- }, "\u274C Syntax Error") : /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null, /* @__PURE__ */ React4__default.createElement("span", {
6831
- className: "uii:px-3 uii:py-1.5 uii:text-sm uii:font-mono uii:rounded uii:border uii:bg-purple-50 uii:text-purple-800 uii:border-purple-200"
6832
- }, inferredReturnType), hasTypeMismatch && /* @__PURE__ */ React4__default.createElement("span", {
6833
- className: "uii:text-xs uii:text-orange-600 uii:font-semibold"
6834
- }, "\u26A0\uFE0F Expected: ", type || expectedType)))), dependencyList.length > 0 && /* @__PURE__ */ React4__default.createElement("div", {
6835
- className: "uii:space-y-2"
6836
- }, /* @__PURE__ */ React4__default.createElement("div", {
6837
- className: "uii:text-sm uii:font-semibold uii:text-gray-700"
6838
- }, "Dependencies (", dependencyList.length, "):"), /* @__PURE__ */ React4__default.createElement("div", {
6839
- className: "uii:flex uii:flex-wrap uii:gap-2"
6840
- }, dependencyList.map(function(dep, index) {
6841
- return /* @__PURE__ */ React4__default.createElement("span", {
6842
- key: index,
6843
- className: cn("uii:px-2 uii:py-1 uii:text-sm uii:rounded uii:border", dep.exists ? "uii:bg-blue-100 uii:text-blue-800 uii:border-blue-200" : "uii:bg-red-100 uii:text-red-800 uii:border-red-200"),
6844
- title: dep.exists ? "Value: ".concat(JSON.stringify(dep.value)) : "Not found in context"
6845
- }, dep.name);
6846
- }))), ast && /* @__PURE__ */ React4__default.createElement(ASTRenderer, {
6847
- ast: ast,
6848
- tokens: tokens,
6849
- variant: "tree",
6850
- showTokens: true,
6851
- className: "uii:w-full"
6852
- }), isParsing && /* @__PURE__ */ React4__default.createElement("div", {
6853
- className: "uii:text-sm uii:text-gray-500 uii:italic"
6854
- }, "Parsing expression..."), parseError && /* @__PURE__ */ React4__default.createElement("div", {
6855
- className: "uii:text-sm uii:text-red-600"
6856
- }, "Parse Error: ", parseError)))) : /* @__PURE__ */ React4__default.createElement("div", {
6857
- className: cn("uii:relative", className),
6858
- key: "expression-display"
6859
- }, /* @__PURE__ */ React4__default.createElement("div", {
6860
- className: clsx_default("uii:flex uii:h-9 uii:w-full uii:min-w-0 uii:rounded-sm uii:border uii:border-input uii:bg-transparent uii:px-3 uii:py-1 uii:text-base uii:shadow-xs uii:transition-[color,box-shadow] uii:outline-none uii:focus-visible:border-ring uii:focus-visible:ring-ring/50 uii:focus-visible:ring-[3px] uii:md:text-sm uii:cursor-pointer uii:hover:bg-muted/50", "uii:mt-0.5 uii:bg-white uii:rounded-md uii:items-center"),
6861
- onClick: function() {
6862
- return handleModeChange("editor");
6863
- },
6864
- onMouseEnter: function() {
6865
- return setIsHovering(true);
6866
- },
6867
- onMouseLeave: function() {
6868
- return setIsHovering(false);
6869
- }
6870
- }, /* @__PURE__ */ React4__default.createElement("span", {
6871
- className: "uii:flex-1 uii:truncate uii:text-foreground uii:items-center"
6872
- }, isHovering ? // Hover state: show AST preview with dependencies
6873
- /* @__PURE__ */ React4__default.createElement("div", {
6874
- className: "uii:flex uii:items-center uii:gap-2"
6875
- }, ast ? /* @__PURE__ */ React4__default.createElement(ASTRenderer, {
6876
- key: "ast",
6877
- ast: ast,
6878
- tokens: tokens,
6879
- variant: "inline",
6880
- showTokens: false,
6881
- className: "uii:text-xs"
6882
- }) : /* @__PURE__ */ React4__default.createElement("div", {
6883
- className: "uii:text-xs uii:text-gray-500"
6884
- }, isParsing ? "Parsing..." : parseError ? "Error: ".concat(parseError) : "No AST available"), dependencies.length > 0 && /* @__PURE__ */ React4__default.createElement("div", {
6885
- className: "uii:flex uii:gap-1"
6886
- }, dependencies.map(function(dep, index) {
6887
- return /* @__PURE__ */ React4__default.createElement("span", {
6888
- key: index,
6889
- className: "uii:px-1 uii:py-0.5 uii:bg-blue-100 uii:text-blue-800 uii:text-xs uii:rounded"
6890
- }, dep);
6891
- }))) : // At rest: show the expression text
6892
- /* @__PURE__ */ React4__default.createElement("span", {
6893
- className: "uii:font-mono uii:text-sm"
6894
- }, currentExpressionValueExt || "No expression"))));
6895
- default:
6896
- return children(controlProps);
6897
- }
5015
+ switchToEditor: function() {
5016
+ return setIsExpressionMode(true);
5017
+ },
5018
+ clear: handleSwitchToValue
5019
+ },
5020
+ hasError: showError
6898
5021
  };
6899
- return /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null, /* @__PURE__ */ React4__default.createElement("div", {
5022
+ return /* @__PURE__ */ React4.createElement("div", {
5023
+ className: cn("uii:mb-2", className)
5024
+ }, /* @__PURE__ */ React4.createElement("div", {
6900
5025
  className: "uii:flex uii:items-center uii:gap-2 uii:mt-2"
6901
- }, /* @__PURE__ */ React4__default.createElement("label", {
6902
- className: "uii:text-xs uii:text-muted-foreground uii:font-bold",
6903
- htmlFor: fieldName
6904
- }, label, ":"), /* @__PURE__ */ React4__default.createElement("span", {
6905
- 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"
6906
- }, type), hasTypeMismatch || inferredReturnType === "error" ? /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null, expressionMode.current === "expression" ? /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null, /* @__PURE__ */ React4__default.createElement("span", {
5026
+ }, /* @__PURE__ */ React4.createElement("label", {
5027
+ htmlFor: fieldName,
5028
+ className: "uii:text-xs uii:font-bold uii:text-muted-foreground"
5029
+ }, label, ":"), expectedType !== "$.interface.timer" && /* @__PURE__ */ React4.createElement("span", {
6907
5030
  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"
6908
- }, expressionMode.expression.trim() !== "" ? inferredReturnType : "empty"), /* @__PURE__ */ React4__default.createElement("span", {
6909
- 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:font-light uii:text-orange-600 "
6910
- }, "\u26A0\uFE0F Expected: ", type || expectedType)) : /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null)) : /* @__PURE__ */ React4__default.createElement(React4__default.Fragment, null)), renderContent());
6911
- }
6912
- // src/components/input.tsx
6913
- function Input2(_param) {
6914
- var className = _param.className, expectedType = _param.expectedType, props = _object_without_properties(_param, [
6915
- "className",
6916
- "expectedType"
6917
- ]);
6918
- var _props_label, _props_key, _props_name;
6919
- return /* @__PURE__ */ React4.createElement(ExpressionWrapper, {
6920
- label: (_props_label = props.label) !== null && _props_label !== void 0 ? _props_label : "Test Entry",
6921
- key: (_props_key = props.key) !== null && _props_key !== void 0 ? _props_key : props.name,
6922
- type: expectedType !== null && expectedType !== void 0 ? expectedType : "string",
6923
- valuesLoading: false,
6924
- value: props.value,
6925
- onValueChange: function(val, metadata) {
6926
- props.onChange && props.onChange(val);
5031
+ }, expectedType), showError && /* @__PURE__ */ React4.createElement("span", {
5032
+ 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"
5033
+ }, "Required")), /* @__PURE__ */ React4.createElement("div", {
5034
+ className: "uii:mt-0.5"
5035
+ }, children ? // Use custom render function
5036
+ children(renderProps) : isExpressionMode ? // Expression mode - show input with clear button
5037
+ /* @__PURE__ */ React4.createElement("div", {
5038
+ className: "uii:flex uii:items-center uii:h-9 uii:rounded-sm uii:border uii:border-amber-500/50 uii:bg-amber-500/5"
5039
+ }, /* @__PURE__ */ React4.createElement("input", {
5040
+ id: fieldName,
5041
+ name: fieldName,
5042
+ type: "text",
5043
+ value: expressionValue,
5044
+ onChange: handleExpressionChange,
5045
+ disabled: disabled,
5046
+ placeholder: "Enter expression...",
5047
+ className: cn("uii:flex-1 uii:h-full uii:px-3 uii:bg-transparent uii:text-sm uii:font-mono uii:text-amber-600", "uii:outline-none uii:border-none", disabled && "uii:opacity-50 uii:cursor-not-allowed")
5048
+ }), /* @__PURE__ */ React4.createElement("button", {
5049
+ type: "button",
5050
+ onClick: handleSwitchToValue,
5051
+ className: "uii:flex uii:items-center uii:justify-center uii:h-full uii:px-2 uii:text-amber-600 hover:uii:text-red-600 uii:border-l uii:border-amber-500/30",
5052
+ title: "Clear and return to value mode"
5053
+ }, "\xD7")) : // Value mode - show select
5054
+ /* @__PURE__ */ React4.createElement("select", {
5055
+ id: fieldName,
5056
+ name: fieldName,
5057
+ value: displayValue,
5058
+ onChange: function(e) {
5059
+ return handleSelectChange(e.target.value);
6927
5060
  },
6928
- expectedType: expectedType,
6929
- fieldName: (_props_name = props.name) !== null && _props_name !== void 0 ? _props_name : props.key,
6930
- children: function(param) {
6931
- var onExpressionClick = param.onExpressionClick, onChangeExpression = param.onChange, expressionValue = param.value, localInput = param.localInput, setLocalInput = param.setLocalInput;
6932
- var _props_placeholder;
6933
- return /* @__PURE__ */ React4.createElement("div", {
6934
- className: "uii:relative uii:text-xs uii:mt-0.5"
6935
- }, /* @__PURE__ */ React4.createElement(Input, {
6936
- type: "text",
6937
- value: localInput,
6938
- onChange: function(e) {
6939
- setLocalInput(e.target.value);
6940
- onChangeExpression(e.target.value);
6941
- },
6942
- placeholder: (_props_placeholder = props.placeholder) !== null && _props_placeholder !== void 0 ? _props_placeholder : "Enter value..."
6943
- }), /* @__PURE__ */ React4.createElement("div", {
6944
- className: "uii:flex uii:bg-white uii:border-white/40 uii:border-l-8 uii:items-center uii:gap-1 uii:absolute uii:right-1.5 uii:top-2.5 uii:cursor-pointer uii:truncate",
6945
- onClick: function() {
6946
- return onExpressionClick();
6947
- }
6948
- }, /* @__PURE__ */ React4.createElement("span", {
6949
- className: "uii:border-l uii:border-gray-200 uii:px-2"
6950
- }, "Custom Expression")));
6951
- }
6952
- });
5061
+ disabled: disabled,
5062
+ className: cn("uii:w-full uii:h-9 uii:px-3 uii:rounded-sm uii:border uii:bg-background uii:text-sm", "uii:outline-none uii:transition-all uii:cursor-pointer", "focus:uii:border-ring focus:uii:ring-ring/50 focus:uii:ring-[3px]", showError ? "uii:border-red-500 hover:uii:border-red-600" : "uii:border-input hover:uii:border-ring/50", disabled && "uii:opacity-50 uii:cursor-not-allowed")
5063
+ }, placeholder && /* @__PURE__ */ React4.createElement("option", {
5064
+ value: "",
5065
+ disabled: true
5066
+ }, placeholder), options.map(function(opt) {
5067
+ return /* @__PURE__ */ React4.createElement("option", {
5068
+ key: opt.value,
5069
+ value: opt.value
5070
+ }, opt.label);
5071
+ }), /* @__PURE__ */ React4.createElement("option", {
5072
+ value: "__expression__"
5073
+ }, "\uD83D\uDCDD Custom Expression"))));
6953
5074
  }
6954
- // ../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs
6955
- var falsyToString = function(value) {
6956
- return typeof value === "boolean" ? "".concat(value) : value === 0 ? "0" : value;
6957
- };
6958
- var cx = clsx;
6959
- var cva = function(base, config) {
6960
- return function(props) {
6961
- var _config_compoundVariants;
6962
- if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
6963
- var variants = config.variants, defaultVariants = config.defaultVariants;
6964
- var getVariantClassNames = Object.keys(variants).map(function(variant) {
6965
- var variantProp = props === null || props === void 0 ? void 0 : props[variant];
6966
- var defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
6967
- if (variantProp === null) return null;
6968
- var variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
6969
- return variants[variant][variantKey];
6970
- });
6971
- var propsWithoutUndefined = props && Object.entries(props).reduce(function(acc, param) {
6972
- var _param = _sliced_to_array(param, 2), key = _param[0], value = _param[1];
6973
- if (value === void 0) {
6974
- return acc;
6975
- }
6976
- acc[key] = value;
6977
- return acc;
6978
- }, {});
6979
- var getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce(function(acc, param) {
6980
- var cvClass = param.class, cvClassName = param.className, compoundVariantOptions = _object_without_properties(param, [
6981
- "class",
6982
- "className"
6983
- ]);
6984
- return Object.entries(compoundVariantOptions).every(function(param2) {
6985
- var _param2 = _sliced_to_array(param2, 2), key = _param2[0], value = _param2[1];
6986
- return Array.isArray(value) ? value.includes(_object_spread({}, defaultVariants, propsWithoutUndefined)[key]) : _object_spread({}, defaultVariants, propsWithoutUndefined)[key] === value;
6987
- }) ? _to_consumable_array(acc).concat([
6988
- cvClass,
6989
- cvClassName
6990
- ]) : acc;
6991
- }, []);
6992
- return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
5075
+ // src/components/fields/index.tsx
5076
+ function useTemplateFieldContext() {
5077
+ return {
5078
+ yDoc: null,
5079
+ collabUser: null,
5080
+ awareness: null,
5081
+ availableNodes: null,
5082
+ myInterface: null,
5083
+ typeDeclarations: "",
5084
+ element: null,
5085
+ nodeId: "",
5086
+ onControlFocus: function() {},
5087
+ onControlBlur: function() {},
5088
+ onRecordChange: function() {},
5089
+ onValidationChange: function() {},
5090
+ parentFieldPath: null,
5091
+ disabled: false
6993
5092
  };
6994
- };
6995
- // src/components/ui/button.tsx
6996
- 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", {
6997
- variants: {
6998
- variant: {
6999
- default: "ui:bg-primary ui:text-primary-foreground ui:shadow-xs ui:hover:bg-primary/90 ui:select-none",
7000
- 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",
7001
- outline: "ui:border ui:border-input ui:bg-background ui:shadow-xs ui:hover:bg-accent ui:hover:text-accent-foreground",
7002
- secondary: "ui:bg-secondary ui:text-secondary-foreground ui:shadow-xs ui:hover:bg-secondary/80",
7003
- ghost: "ui:hover:bg-accent ui:hover:text-accent-foreground",
7004
- link: "ui:text-primary ui:underline-offset-4 ui:hover:underline"
7005
- },
7006
- size: {
7007
- default: "ui:h-9 ui:px-4 ui:py-2 ui:has-[>svg]:px-3",
7008
- sm: "ui:h-8 ui:rounded-sm ui:gap-1.5 ui:px-3 ui:has-[>svg]:px-2.5",
7009
- lg: "ui:h-10 ui:rounded-sm ui:px-6 ui:has-[>svg]:px-4",
7010
- icon: "ui:size-9"
7011
- }
7012
- },
7013
- defaultVariants: {
7014
- variant: "default",
7015
- size: "default"
7016
- }
7017
- });
7018
- function Button(_param) {
7019
- var className = _param.className, variant = _param.variant, size = _param.size, _param_asChild = _param.asChild, asChild = _param_asChild === void 0 ? false : _param_asChild, props = _object_without_properties(_param, [
7020
- "className",
7021
- "variant",
7022
- "size",
7023
- "asChild"
7024
- ]);
7025
- var Comp = asChild ? Slot : "button";
7026
- return /* @__PURE__ */ React4.createElement(Comp, _object_spread({
7027
- "data-slot": "button",
7028
- className: cn(buttonVariants({
7029
- variant: variant,
7030
- size: size,
7031
- className: className
7032
- }))
7033
- }, props));
7034
5093
  }
7035
- export { Button, Input2 as Input, buttonVariants }; //# sourceMappingURL=index.js.map
5094
+ function useIsInTemplateFieldProvider() {
5095
+ return false;
5096
+ }
5097
+ function useFieldPath(fieldName) {
5098
+ return fieldName;
5099
+ }
5100
+ function TemplateFieldProvider(param) {
5101
+ var children = param.children;
5102
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
5103
+ }
5104
+ function NestedFieldProvider(param) {
5105
+ var children = param.children;
5106
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, children);
5107
+ }
5108
+ export { Button, buttonVariants, fields_exports as fields }; //# sourceMappingURL=index.js.map
7036
5109
  //# sourceMappingURL=index.js.map