glass-ui-solid 0.4.3 → 0.4.4

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.
Files changed (36) hide show
  1. package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts +14 -0
  2. package/dist/components/JsonSchemaForm/JsonSchemaForm.d.ts.map +1 -1
  3. package/dist/components/JsonSchemaForm/JsonSchemaForm.js +180 -158
  4. package/dist/components/JsonSchemaForm/JsonSchemaForm.js.map +1 -1
  5. package/dist/components/JsonSchemaForm/fields/ArrayField.d.ts.map +1 -1
  6. package/dist/components/JsonSchemaForm/fields/ArrayField.js +109 -168
  7. package/dist/components/JsonSchemaForm/fields/ArrayField.js.map +1 -1
  8. package/dist/components/JsonSchemaForm/fields/NumberField.d.ts +2 -1
  9. package/dist/components/JsonSchemaForm/fields/NumberField.d.ts.map +1 -1
  10. package/dist/components/JsonSchemaForm/fields/NumberField.js +30 -22
  11. package/dist/components/JsonSchemaForm/fields/NumberField.js.map +1 -1
  12. package/dist/components/JsonSchemaForm/fields/OneOfField.d.ts +2 -1
  13. package/dist/components/JsonSchemaForm/fields/OneOfField.d.ts.map +1 -1
  14. package/dist/components/JsonSchemaForm/fields/OneOfField.js +58 -21
  15. package/dist/components/JsonSchemaForm/fields/OneOfField.js.map +1 -1
  16. package/dist/components/JsonSchemaForm/fields/SchemaField.d.ts.map +1 -1
  17. package/dist/components/JsonSchemaForm/fields/SchemaField.js +76 -58
  18. package/dist/components/JsonSchemaForm/fields/SchemaField.js.map +1 -1
  19. package/dist/components/JsonSchemaForm/fields/StringField.d.ts +2 -1
  20. package/dist/components/JsonSchemaForm/fields/StringField.d.ts.map +1 -1
  21. package/dist/components/JsonSchemaForm/fields/StringField.js +21 -8
  22. package/dist/components/JsonSchemaForm/fields/StringField.js.map +1 -1
  23. package/dist/components/JsonSchemaForm/index.d.ts +2 -0
  24. package/dist/components/JsonSchemaForm/index.d.ts.map +1 -1
  25. package/dist/components/JsonSchemaForm/registry.d.ts +65 -0
  26. package/dist/components/JsonSchemaForm/registry.d.ts.map +1 -0
  27. package/dist/components/JsonSchemaForm/registry.js +55 -0
  28. package/dist/components/JsonSchemaForm/registry.js.map +1 -0
  29. package/dist/components/JsonSchemaForm/types.d.ts +2 -0
  30. package/dist/components/JsonSchemaForm/types.d.ts.map +1 -1
  31. package/dist/components/index.d.ts +2 -2
  32. package/dist/components/index.d.ts.map +1 -1
  33. package/dist/index.js +185 -179
  34. package/dist/index.js.map +1 -1
  35. package/dist/styles.css +1 -1
  36. package/package.json +1 -1
@@ -1,247 +1,188 @@
1
- import { template as m, insert as c, createComponent as n, effect as T, memo as v, delegateEvents as V } from "solid-js/web";
2
- import { Show as i, For as I, Switch as j, Match as $ } from "solid-js";
3
- import { resolveSchemaType as b, getDefaultValue as D } from "../utils.js";
4
- import { BooleanField as B } from "./BooleanField.js";
5
- import { EnumField as G } from "./EnumField.js";
6
- import { NumberField as J } from "./NumberField.js";
7
- import { StringField as N } from "./StringField.js";
8
- import { JsonSchemaForm as R } from "../JsonSchemaForm.js";
9
- import { ChevronUpIcon as U, ChevronDownIcon as q } from "../../shared/icons/ChevronIcon.js";
10
- import { TrashIcon as z } from "../../shared/icons/TrashIcon.js";
11
- import { PlusIcon as H } from "../../shared/icons/PlusIcon.js";
12
- import { Checkbox as K } from "../../Input/Checkbox.js";
13
- var L = /* @__PURE__ */ m('<button type=button class="w-full py-2.5 px-4 rounded-xl border-2 border-dashed border-surface-200 dark:border-surface-700 text-sm font-medium text-surface-500 dark:text-surface-400 hover:text-surface-700 dark:hover:text-surface-200 hover:border-surface-300 dark:hover:border-surface-600 hover:bg-surface-50 dark:hover:bg-surface-800/50 transition-colors flex items-center justify-center gap-2">Add item'), Q = /* @__PURE__ */ m('<div class="text-xs text-surface-400 dark:text-surface-500">'), W = /* @__PURE__ */ m("<div class=space-y-3>"), X = /* @__PURE__ */ m("<div class=space-y-1.5>"), Y = /* @__PURE__ */ m('<span class="text-xs text-surface-400 dark:text-surface-500">(<!>)'), Z = /* @__PURE__ */ m('<div class="glass-card rounded-xl p-3 sm:p-4"><div class="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3"><div class="flex items-center gap-2"><span class="text-xs font-medium text-surface-500 dark:text-surface-400">Item </span></div><div class="flex items-center gap-1 self-end sm:self-auto"><button type=button class=glass-icon-btn title="Move up"></button><button type=button class=glass-icon-btn title="Move down"></button><button type=button class="p-1.5 rounded-lg text-rose-400 hover:text-rose-600 dark:hover:text-rose-300 hover:bg-rose-50 dark:hover:bg-rose-900/20 transition-colors"title="Remove item">');
14
- function p(e) {
15
- return !e.oneOf || e.oneOf.length === 0 ? !1 : e.oneOf.every((l) => l.const !== void 0);
1
+ import { template as m, insert as a, createComponent as s, effect as V, memo as x, delegateEvents as j } from "solid-js/web";
2
+ import { Show as u, For as y } from "solid-js";
3
+ import { resolveSchemaType as $, getDefaultValue as D } from "../utils.js";
4
+ import { JsonSchemaForm as I } from "../JsonSchemaForm.js";
5
+ import { ChevronUpIcon as E, ChevronDownIcon as T } from "../../shared/icons/ChevronIcon.js";
6
+ import { TrashIcon as G } from "../../shared/icons/TrashIcon.js";
7
+ import { PlusIcon as J } from "../../shared/icons/PlusIcon.js";
8
+ import { Checkbox as R } from "../../Input/Checkbox.js";
9
+ var U = /* @__PURE__ */ m('<button type=button class="w-full py-2.5 px-4 rounded-xl border-2 border-dashed border-surface-200 dark:border-surface-700 text-sm font-medium text-surface-500 dark:text-surface-400 hover:text-surface-700 dark:hover:text-surface-200 hover:border-surface-300 dark:hover:border-surface-600 hover:bg-surface-50 dark:hover:bg-surface-800/50 transition-colors flex items-center justify-center gap-2">Add item'), q = /* @__PURE__ */ m('<div class="text-xs text-surface-400 dark:text-surface-500">'), z = /* @__PURE__ */ m("<div class=space-y-3>"), B = /* @__PURE__ */ m("<div class=space-y-1.5>"), H = /* @__PURE__ */ m('<span class="text-xs text-surface-400 dark:text-surface-500">(<!>)'), K = /* @__PURE__ */ m('<div class="glass-card rounded-xl p-3 sm:p-4"><div class="flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3"><div class="flex items-center gap-2"><span class="text-xs font-medium text-surface-500 dark:text-surface-400">Item </span></div><div class="flex items-center gap-1 self-end sm:self-auto"><button type=button class=glass-icon-btn title="Move up"></button><button type=button class=glass-icon-btn title="Move down"></button><button type=button class="p-1.5 rounded-lg text-rose-400 hover:text-rose-600 dark:hover:text-rose-300 hover:bg-rose-50 dark:hover:bg-rose-900/20 transition-colors"title="Remove item">');
10
+ function L(t) {
11
+ return !t.oneOf || t.oneOf.length === 0 ? !1 : t.oneOf.every((o) => o.const !== void 0);
16
12
  }
17
- const ee = (e) => {
18
- const l = () => b(e.schema) || "string";
19
- return n(j, {
20
- get fallback() {
21
- return n(N, {
22
- get schema() {
23
- return e.schema;
24
- },
25
- get value() {
26
- return e.value;
27
- },
28
- get onChange() {
29
- return e.onChange;
30
- }
31
- });
32
- },
33
- get children() {
34
- return [n($, {
35
- get when() {
36
- return v(() => !!e.schema.enum)() && e.schema.enum.length > 0;
37
- },
38
- get children() {
39
- return n(G, {
40
- get schema() {
41
- return e.schema;
42
- },
43
- get value() {
44
- return e.value;
45
- },
46
- get onChange() {
47
- return e.onChange;
48
- }
49
- });
50
- }
51
- }), n($, {
52
- get when() {
53
- return l() === "boolean";
54
- },
55
- get children() {
56
- return n(B, {
57
- get schema() {
58
- return e.schema;
59
- },
60
- get value() {
61
- return e.value;
62
- },
63
- get onChange() {
64
- return e.onChange;
65
- }
66
- });
67
- }
68
- }), n($, {
69
- get when() {
70
- return l() === "number" || l() === "integer";
71
- },
72
- get children() {
73
- return n(J, {
74
- get schema() {
75
- return e.schema;
76
- },
77
- get value() {
78
- return e.value;
79
- },
80
- get onChange() {
81
- return e.onChange;
82
- }
83
- });
84
- }
85
- })];
86
- }
87
- });
88
- }, ge = (e) => {
89
- const l = () => e.value || [], u = () => e.schema.items || {
13
+ const N = (t) => s(I, {
14
+ get schema() {
15
+ return t.schema;
16
+ },
17
+ get value() {
18
+ return t.value;
19
+ },
20
+ get onChange() {
21
+ return t.onChange;
22
+ },
23
+ get path() {
24
+ return t.path;
25
+ }
26
+ }), ne = (t) => {
27
+ const o = () => t.value || [], i = () => t.schema.items || {
90
28
  type: "string"
91
29
  }, S = () => {
92
- const a = D(u());
93
- e.onChange([...l(), a]);
94
- }, A = (a) => {
95
- const t = l().filter((r, s) => s !== a);
96
- e.onChange(t.length > 0 ? t : void 0);
97
- }, w = (a, t) => {
98
- const r = [...l()];
99
- r[a] = t, e.onChange(r);
100
- }, k = (a, t) => {
101
- if (t < 0 || t >= l().length)
30
+ const n = D(i());
31
+ t.onChange([...o(), n]);
32
+ }, A = (n) => {
33
+ const e = o().filter((r, l) => l !== n);
34
+ t.onChange(e.length > 0 ? e : void 0);
35
+ }, C = (n, e) => {
36
+ const r = [...o()];
37
+ r[n] = e, t.onChange(r);
38
+ }, w = (n, e) => {
39
+ if (e < 0 || e >= o().length)
102
40
  return;
103
- const r = [...l()], [s] = r.splice(a, 1);
104
- r.splice(t, 0, s), e.onChange(r);
105
- }, F = () => {
106
- const a = b(u());
107
- return a === "string" || a === "number" || a === "integer" || a === "boolean";
108
- }, O = () => p(u()), M = () => {
109
- const a = u();
110
- return a.oneOf ? a.oneOf.map((t) => ({
111
- value: t.const,
112
- label: t.title || String(t.const)
41
+ const r = [...o()], [l] = r.splice(n, 1);
42
+ r.splice(e, 0, l), t.onChange(r);
43
+ }, O = () => {
44
+ const n = $(i());
45
+ return n === "string" || n === "number" || n === "integer" || n === "boolean";
46
+ }, p = () => L(i()), M = () => {
47
+ const n = i();
48
+ return n.oneOf ? n.oneOf.map((e) => ({
49
+ value: e.const,
50
+ label: e.title || String(e.const)
113
51
  })) : [];
114
- }, E = (a) => {
115
- const t = l();
116
- if (t.some((s) => s === a)) {
117
- const s = t.filter((x) => x !== a);
118
- e.onChange(s.length > 0 ? s : void 0);
52
+ }, F = (n) => {
53
+ const e = o();
54
+ if (e.some((l) => l === n)) {
55
+ const l = e.filter((v) => v !== n);
56
+ t.onChange(l.length > 0 ? l : void 0);
119
57
  } else
120
- e.onChange([...t, a]);
58
+ t.onChange([...e, n]);
121
59
  };
122
60
  return (() => {
123
- var a = W();
124
- return c(a, n(i, {
61
+ var n = z();
62
+ return a(n, s(u, {
125
63
  get when() {
126
- return !O();
64
+ return !p();
127
65
  },
128
66
  get fallback() {
129
67
  return (
130
68
  /* Checkbox group for oneOf const pattern */
131
69
  (() => {
132
- var t = X();
133
- return c(t, n(I, {
70
+ var e = B();
71
+ return a(e, s(y, {
134
72
  get each() {
135
73
  return M();
136
74
  },
137
- children: (r) => n(K, {
75
+ children: (r) => s(R, {
138
76
  get checked() {
139
- return l().some((s) => s === r.value);
77
+ return o().some((l) => l === r.value);
140
78
  },
141
- onChange: () => E(r.value),
79
+ onChange: () => F(r.value),
142
80
  get label() {
143
81
  return r.label;
144
82
  }
145
83
  })
146
- })), t;
84
+ })), e;
147
85
  })()
148
86
  );
149
87
  },
150
88
  get children() {
151
- return [n(I, {
89
+ return [s(y, {
152
90
  get each() {
153
- return l();
91
+ return o();
154
92
  },
155
- children: (t, r) => (() => {
156
- var s = Z(), x = s.firstChild, C = x.firstChild, _ = C.firstChild;
93
+ children: (e, r) => (() => {
94
+ var l = K(), v = l.firstChild, b = v.firstChild, _ = b.firstChild;
157
95
  _.firstChild;
158
- var P = C.nextSibling, g = P.firstChild, d = g.nextSibling, y = d.nextSibling;
159
- return c(_, () => r() + 1, null), c(C, n(i, {
96
+ var P = b.nextSibling, g = P.firstChild, d = g.nextSibling, k = d.nextSibling;
97
+ return a(_, () => r() + 1, null), a(b, s(u, {
160
98
  get when() {
161
- return b(u());
99
+ return $(i());
162
100
  },
163
101
  get children() {
164
- var o = Y(), f = o.firstChild, h = f.nextSibling;
165
- return h.nextSibling, c(o, () => b(u()), h), o;
102
+ var c = H(), f = c.firstChild, h = f.nextSibling;
103
+ return h.nextSibling, a(c, () => $(i()), h), c;
166
104
  }
167
- }), null), g.$$click = () => k(r(), r() - 1), c(g, n(U, {
105
+ }), null), g.$$click = () => w(r(), r() - 1), a(g, s(E, {
168
106
  class: "w-4 h-4"
169
- })), d.$$click = () => k(r(), r() + 1), c(d, n(q, {
107
+ })), d.$$click = () => w(r(), r() + 1), a(d, s(T, {
170
108
  class: "w-4 h-4"
171
- })), y.$$click = () => A(r()), c(y, n(z, {
109
+ })), k.$$click = () => A(r()), a(k, s(G, {
172
110
  class: "w-4 h-4"
173
- })), c(s, n(i, {
111
+ })), a(l, s(u, {
174
112
  get when() {
175
- return F();
113
+ return O();
176
114
  },
177
115
  get fallback() {
178
- return n(R, {
116
+ return s(I, {
179
117
  get schema() {
180
- return u();
118
+ return i();
181
119
  },
182
- value: t,
183
- onChange: (o) => w(r(), o),
120
+ value: e,
121
+ onChange: (c) => C(r(), c),
184
122
  get path() {
185
- return [...e.path, String(r())];
123
+ return [...t.path, String(r())];
186
124
  }
187
125
  });
188
126
  },
189
127
  get children() {
190
- return n(ee, {
128
+ return s(N, {
191
129
  get schema() {
192
- return u();
130
+ return i();
193
131
  },
194
- value: t,
195
- onChange: (o) => w(r(), o)
132
+ value: e,
133
+ onChange: (c) => C(r(), c),
134
+ get path() {
135
+ return [...t.path, String(r())];
136
+ }
196
137
  });
197
138
  }
198
- }), null), T((o) => {
199
- var f = r() === 0, h = r() === l().length - 1;
200
- return f !== o.e && (g.disabled = o.e = f), h !== o.t && (d.disabled = o.t = h), o;
139
+ }), null), V((c) => {
140
+ var f = r() === 0, h = r() === o().length - 1;
141
+ return f !== c.e && (g.disabled = c.e = f), h !== c.t && (d.disabled = c.t = h), c;
201
142
  }, {
202
143
  e: void 0,
203
144
  t: void 0
204
- }), s;
145
+ }), l;
205
146
  })()
206
147
  }), (() => {
207
- var t = L(), r = t.firstChild;
208
- return t.$$click = S, c(t, n(H, {
148
+ var e = U(), r = e.firstChild;
149
+ return e.$$click = S, a(e, s(J, {
209
150
  class: "w-4 h-4"
210
- }), r), t;
151
+ }), r), e;
211
152
  })()];
212
153
  }
213
- }), null), c(a, n(i, {
154
+ }), null), a(n, s(u, {
214
155
  get when() {
215
- return e.schema.minItems !== void 0 || e.schema.maxItems !== void 0;
156
+ return t.schema.minItems !== void 0 || t.schema.maxItems !== void 0;
216
157
  },
217
158
  get children() {
218
- var t = Q();
219
- return c(t, n(i, {
159
+ var e = q();
160
+ return a(e, s(u, {
220
161
  get when() {
221
- return e.schema.minItems !== void 0;
162
+ return t.schema.minItems !== void 0;
222
163
  },
223
164
  get children() {
224
- return ["Min items: ", v(() => e.schema.minItems)];
165
+ return ["Min items: ", x(() => t.schema.minItems)];
225
166
  }
226
- }), null), c(t, n(i, {
167
+ }), null), a(e, s(u, {
227
168
  get when() {
228
- return v(() => e.schema.minItems !== void 0)() && e.schema.maxItems !== void 0;
169
+ return x(() => t.schema.minItems !== void 0)() && t.schema.maxItems !== void 0;
229
170
  },
230
171
  children: " | "
231
- }), null), c(t, n(i, {
172
+ }), null), a(e, s(u, {
232
173
  get when() {
233
- return e.schema.maxItems !== void 0;
174
+ return t.schema.maxItems !== void 0;
234
175
  },
235
176
  get children() {
236
- return ["Max items: ", v(() => e.schema.maxItems)];
177
+ return ["Max items: ", x(() => t.schema.maxItems)];
237
178
  }
238
- }), null), t;
179
+ }), null), e;
239
180
  }
240
- }), null), a;
181
+ }), null), n;
241
182
  })();
242
183
  };
243
- V(["click"]);
184
+ j(["click"]);
244
185
  export {
245
- ge as ArrayField
186
+ ne as ArrayField
246
187
  };
247
188
  //# sourceMappingURL=ArrayField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArrayField.js","sources":["../../../../src/components/JsonSchemaForm/fields/ArrayField.tsx"],"sourcesContent":["import type { Component } from 'solid-js';\nimport { For, Match, Show, Switch } from 'solid-js';\nimport { Checkbox } from '../../Input';\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n PlusIcon,\n TrashIcon,\n} from '../../shared/icons';\nimport type { ArrayFieldProps, BaseFieldProps, Schema } from '../types';\nimport { getDefaultValue, resolveSchemaType } from '../utils';\nimport { BooleanField } from './BooleanField';\nimport { EnumField } from './EnumField';\nimport { NumberField } from './NumberField';\nimport { StringField } from './StringField';\n\n// Forward declaration - will import the main component\nimport { JsonSchemaForm } from '../JsonSchemaForm';\n\n/**\n * Check if items schema uses oneOf with const values (multi-select enum pattern).\n * e.g. items: { oneOf: [{ const: 1, title: \"Option A\" }, { const: 2, title: \"Option B\" }] }\n */\nfunction isConstEnumItems(items: Schema): boolean {\n if (!items.oneOf || items.oneOf.length === 0) {\n return false;\n }\n return items.oneOf.every((opt) => opt.const !== undefined);\n}\n\n/**\n * Primitive array item renderer (inline editing for simple types)\n */\nconst PrimitiveArrayItem: Component<BaseFieldProps> = (props) => {\n const schemaType = () => resolveSchemaType(props.schema) || 'string';\n\n return (\n <Switch\n fallback={\n <StringField\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n />\n }\n >\n <Match when={props.schema.enum && props.schema.enum.length > 0}>\n <EnumField\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n />\n </Match>\n <Match when={schemaType() === 'boolean'}>\n <BooleanField\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n />\n </Match>\n <Match when={schemaType() === 'number' || schemaType() === 'integer'}>\n <NumberField\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n />\n </Match>\n </Switch>\n );\n};\n\n/**\n * Array field renderer with add/remove/reorder functionality\n */\nexport const ArrayField: Component<ArrayFieldProps> = (props) => {\n const currentValue = () => props.value || [];\n const itemSchema = () => props.schema.items || { type: 'string' };\n\n const addItem = () => {\n const newItem = getDefaultValue(itemSchema());\n props.onChange([...currentValue(), newItem]);\n };\n\n const removeItem = (index: number) => {\n const newArray = currentValue().filter((_, i) => i !== index);\n props.onChange(newArray.length > 0 ? newArray : undefined);\n };\n\n const updateItem = (index: number, itemValue: unknown) => {\n const newArray = [...currentValue()];\n newArray[index] = itemValue;\n props.onChange(newArray);\n };\n\n const moveItem = (fromIndex: number, toIndex: number) => {\n if (toIndex < 0 || toIndex >= currentValue().length) {\n return;\n }\n const newArray = [...currentValue()];\n const [item] = newArray.splice(fromIndex, 1);\n newArray.splice(toIndex, 0, item);\n props.onChange(newArray);\n };\n\n const isPrimitive = () => {\n const type = resolveSchemaType(itemSchema());\n return (\n type === 'string' ||\n type === 'number' ||\n type === 'integer' ||\n type === 'boolean'\n );\n };\n\n /** Whether items use oneOf with const values (renders as checkbox group) */\n const isCheckboxGroup = () => isConstEnumItems(itemSchema());\n\n /** Get the const/title options for checkbox group rendering */\n const constOptions = () => {\n const items = itemSchema();\n if (!items.oneOf) {\n return [];\n }\n return items.oneOf.map((opt) => ({\n value: opt.const,\n label: opt.title || String(opt.const),\n }));\n };\n\n /** Toggle a const value in the array */\n const toggleValue = (value: unknown) => {\n const current = currentValue();\n const exists = current.some((v) => v === value);\n if (exists) {\n const newArray = current.filter((v) => v !== value);\n props.onChange(newArray.length > 0 ? newArray : undefined);\n } else {\n props.onChange([...current, value]);\n }\n };\n\n return (\n <div class=\"space-y-3\">\n <Show\n when={!isCheckboxGroup()}\n fallback={\n /* Checkbox group for oneOf const pattern */\n <div class=\"space-y-1.5\">\n <For each={constOptions()}>\n {(option) => (\n <Checkbox\n checked={currentValue().some((v) => v === option.value)}\n onChange={() => toggleValue(option.value)}\n label={option.label}\n />\n )}\n </For>\n </div>\n }\n >\n {/* Array items */}\n <For each={currentValue()}>\n {(item, index) => (\n <div class=\"glass-card rounded-xl p-3 sm:p-4\">\n {/* Item header with controls */}\n <div class=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-xs font-medium text-surface-500 dark:text-surface-400\">\n Item {index() + 1}\n </span>\n <Show when={resolveSchemaType(itemSchema())}>\n <span class=\"text-xs text-surface-400 dark:text-surface-500\">\n ({resolveSchemaType(itemSchema())})\n </span>\n </Show>\n </div>\n <div class=\"flex items-center gap-1 self-end sm:self-auto\">\n {/* Move up button */}\n <button\n type=\"button\"\n onClick={() => moveItem(index(), index() - 1)}\n disabled={index() === 0}\n class=\"glass-icon-btn\"\n title=\"Move up\"\n >\n <ChevronUpIcon class=\"w-4 h-4\" />\n </button>\n {/* Move down button */}\n <button\n type=\"button\"\n onClick={() => moveItem(index(), index() + 1)}\n disabled={index() === currentValue().length - 1}\n class=\"glass-icon-btn\"\n title=\"Move down\"\n >\n <ChevronDownIcon class=\"w-4 h-4\" />\n </button>\n {/* Remove button */}\n <button\n type=\"button\"\n onClick={() => removeItem(index())}\n class=\"p-1.5 rounded-lg text-rose-400 hover:text-rose-600 dark:hover:text-rose-300 hover:bg-rose-50 dark:hover:bg-rose-900/20 transition-colors\"\n title=\"Remove item\"\n >\n <TrashIcon class=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n {/* Item content */}\n <Show\n when={isPrimitive()}\n fallback={\n <JsonSchemaForm\n schema={itemSchema()}\n value={item}\n onChange={(v) => updateItem(index(), v)}\n path={[...props.path, String(index())]}\n />\n }\n >\n <PrimitiveArrayItem\n schema={itemSchema()}\n value={item}\n onChange={(v) => updateItem(index(), v)}\n />\n </Show>\n </div>\n )}\n </For>\n\n {/* Add item button */}\n <button\n type=\"button\"\n onClick={addItem}\n class=\"w-full py-2.5 px-4 rounded-xl border-2 border-dashed border-surface-200 dark:border-surface-700 text-sm font-medium text-surface-500 dark:text-surface-400 hover:text-surface-700 dark:hover:text-surface-200 hover:border-surface-300 dark:hover:border-surface-600 hover:bg-surface-50 dark:hover:bg-surface-800/50 transition-colors flex items-center justify-center gap-2\"\n >\n <PlusIcon class=\"w-4 h-4\" />\n Add item\n </button>\n </Show>\n\n {/* Constraints hint */}\n <Show\n when={\n props.schema.minItems !== undefined ||\n props.schema.maxItems !== undefined\n }\n >\n <div class=\"text-xs text-surface-400 dark:text-surface-500\">\n <Show when={props.schema.minItems !== undefined}>\n Min items: {props.schema.minItems}\n </Show>\n <Show\n when={\n props.schema.minItems !== undefined &&\n props.schema.maxItems !== undefined\n }\n >\n {' | '}\n </Show>\n <Show when={props.schema.maxItems !== undefined}>\n Max items: {props.schema.maxItems}\n </Show>\n </div>\n </Show>\n </div>\n );\n};\n"],"names":["isConstEnumItems","items","oneOf","length","every","opt","const","undefined","PrimitiveArrayItem","props","schemaType","resolveSchemaType","schema","_$createComponent","Switch","fallback","StringField","value","onChange","children","Match","when","_$memo","enum","EnumField","BooleanField","NumberField","ArrayField","currentValue","itemSchema","type","addItem","newItem","getDefaultValue","removeItem","index","newArray","filter","_","i","updateItem","itemValue","moveItem","fromIndex","toIndex","item","splice","isPrimitive","isCheckboxGroup","constOptions","map","label","title","String","toggleValue","current","some","v","_el$","_tmpl$3","_$insert","Show","_el$5","_tmpl$4","For","each","option","Checkbox","checked","_el$6","_tmpl$6","_el$7","firstChild","_el$8","_el$9","_el$13","nextSibling","_el$14","_el$15","_el$16","_el$1","_tmpl$5","_el$10","_el$12","$$click","ChevronUpIcon","ChevronDownIcon","TrashIcon","JsonSchemaForm","path","_$effect","_p$","_v$","_v$2","e","disabled","t","_el$2","_tmpl$","_el$3","PlusIcon","minItems","maxItems","_el$4","_tmpl$2","_$delegateEvents"],"mappings":"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"}
1
+ {"version":3,"file":"ArrayField.js","sources":["../../../../src/components/JsonSchemaForm/fields/ArrayField.tsx"],"sourcesContent":["import type { Component } from 'solid-js';\nimport { For, Show } from 'solid-js';\nimport { Checkbox } from '../../Input';\nimport {\n ChevronDownIcon,\n ChevronUpIcon,\n PlusIcon,\n TrashIcon,\n} from '../../shared/icons';\nimport type { ArrayFieldProps, BaseFieldProps, Schema } from '../types';\nimport { getDefaultValue, resolveSchemaType } from '../utils';\n\n// Forward declaration - will import the main component\nimport { JsonSchemaForm } from '../JsonSchemaForm';\n\n/**\n * Check if items schema uses oneOf with const values (multi-select enum pattern).\n * e.g. items: { oneOf: [{ const: 1, title: \"Option A\" }, { const: 2, title: \"Option B\" }] }\n */\nfunction isConstEnumItems(items: Schema): boolean {\n if (!items.oneOf || items.oneOf.length === 0) {\n return false;\n }\n return items.oneOf.every((opt) => opt.const !== undefined);\n}\n\n/**\n * Primitive array item renderer - delegates to JsonSchemaForm for registry support\n */\nconst PrimitiveArrayItem: Component<BaseFieldProps & { path?: string[] }> = (\n props,\n) => (\n <JsonSchemaForm\n schema={props.schema}\n value={props.value}\n onChange={props.onChange}\n path={props.path}\n />\n);\n\n/**\n * Array field renderer with add/remove/reorder functionality\n */\nexport const ArrayField: Component<ArrayFieldProps> = (props) => {\n const currentValue = () => props.value || [];\n const itemSchema = () => props.schema.items || { type: 'string' };\n\n const addItem = () => {\n const newItem = getDefaultValue(itemSchema());\n props.onChange([...currentValue(), newItem]);\n };\n\n const removeItem = (index: number) => {\n const newArray = currentValue().filter((_, i) => i !== index);\n props.onChange(newArray.length > 0 ? newArray : undefined);\n };\n\n const updateItem = (index: number, itemValue: unknown) => {\n const newArray = [...currentValue()];\n newArray[index] = itemValue;\n props.onChange(newArray);\n };\n\n const moveItem = (fromIndex: number, toIndex: number) => {\n if (toIndex < 0 || toIndex >= currentValue().length) {\n return;\n }\n const newArray = [...currentValue()];\n const [item] = newArray.splice(fromIndex, 1);\n newArray.splice(toIndex, 0, item);\n props.onChange(newArray);\n };\n\n const isPrimitive = () => {\n const type = resolveSchemaType(itemSchema());\n return (\n type === 'string' ||\n type === 'number' ||\n type === 'integer' ||\n type === 'boolean'\n );\n };\n\n /** Whether items use oneOf with const values (renders as checkbox group) */\n const isCheckboxGroup = () => isConstEnumItems(itemSchema());\n\n /** Get the const/title options for checkbox group rendering */\n const constOptions = () => {\n const items = itemSchema();\n if (!items.oneOf) {\n return [];\n }\n return items.oneOf.map((opt) => ({\n value: opt.const,\n label: opt.title || String(opt.const),\n }));\n };\n\n /** Toggle a const value in the array */\n const toggleValue = (value: unknown) => {\n const current = currentValue();\n const exists = current.some((v) => v === value);\n if (exists) {\n const newArray = current.filter((v) => v !== value);\n props.onChange(newArray.length > 0 ? newArray : undefined);\n } else {\n props.onChange([...current, value]);\n }\n };\n\n return (\n <div class=\"space-y-3\">\n <Show\n when={!isCheckboxGroup()}\n fallback={\n /* Checkbox group for oneOf const pattern */\n <div class=\"space-y-1.5\">\n <For each={constOptions()}>\n {(option) => (\n <Checkbox\n checked={currentValue().some((v) => v === option.value)}\n onChange={() => toggleValue(option.value)}\n label={option.label}\n />\n )}\n </For>\n </div>\n }\n >\n {/* Array items */}\n <For each={currentValue()}>\n {(item, index) => (\n <div class=\"glass-card rounded-xl p-3 sm:p-4\">\n {/* Item header with controls */}\n <div class=\"flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between mb-3\">\n <div class=\"flex items-center gap-2\">\n <span class=\"text-xs font-medium text-surface-500 dark:text-surface-400\">\n Item {index() + 1}\n </span>\n <Show when={resolveSchemaType(itemSchema())}>\n <span class=\"text-xs text-surface-400 dark:text-surface-500\">\n ({resolveSchemaType(itemSchema())})\n </span>\n </Show>\n </div>\n <div class=\"flex items-center gap-1 self-end sm:self-auto\">\n {/* Move up button */}\n <button\n type=\"button\"\n onClick={() => moveItem(index(), index() - 1)}\n disabled={index() === 0}\n class=\"glass-icon-btn\"\n title=\"Move up\"\n >\n <ChevronUpIcon class=\"w-4 h-4\" />\n </button>\n {/* Move down button */}\n <button\n type=\"button\"\n onClick={() => moveItem(index(), index() + 1)}\n disabled={index() === currentValue().length - 1}\n class=\"glass-icon-btn\"\n title=\"Move down\"\n >\n <ChevronDownIcon class=\"w-4 h-4\" />\n </button>\n {/* Remove button */}\n <button\n type=\"button\"\n onClick={() => removeItem(index())}\n class=\"p-1.5 rounded-lg text-rose-400 hover:text-rose-600 dark:hover:text-rose-300 hover:bg-rose-50 dark:hover:bg-rose-900/20 transition-colors\"\n title=\"Remove item\"\n >\n <TrashIcon class=\"w-4 h-4\" />\n </button>\n </div>\n </div>\n\n {/* Item content */}\n <Show\n when={isPrimitive()}\n fallback={\n <JsonSchemaForm\n schema={itemSchema()}\n value={item}\n onChange={(v) => updateItem(index(), v)}\n path={[...props.path, String(index())]}\n />\n }\n >\n <PrimitiveArrayItem\n schema={itemSchema()}\n value={item}\n onChange={(v) => updateItem(index(), v)}\n path={[...props.path, String(index())]}\n />\n </Show>\n </div>\n )}\n </For>\n\n {/* Add item button */}\n <button\n type=\"button\"\n onClick={addItem}\n class=\"w-full py-2.5 px-4 rounded-xl border-2 border-dashed border-surface-200 dark:border-surface-700 text-sm font-medium text-surface-500 dark:text-surface-400 hover:text-surface-700 dark:hover:text-surface-200 hover:border-surface-300 dark:hover:border-surface-600 hover:bg-surface-50 dark:hover:bg-surface-800/50 transition-colors flex items-center justify-center gap-2\"\n >\n <PlusIcon class=\"w-4 h-4\" />\n Add item\n </button>\n </Show>\n\n {/* Constraints hint */}\n <Show\n when={\n props.schema.minItems !== undefined ||\n props.schema.maxItems !== undefined\n }\n >\n <div class=\"text-xs text-surface-400 dark:text-surface-500\">\n <Show when={props.schema.minItems !== undefined}>\n Min items: {props.schema.minItems}\n </Show>\n <Show\n when={\n props.schema.minItems !== undefined &&\n props.schema.maxItems !== undefined\n }\n >\n {' | '}\n </Show>\n <Show when={props.schema.maxItems !== undefined}>\n Max items: {props.schema.maxItems}\n </Show>\n </div>\n </Show>\n </div>\n );\n};\n"],"names":["isConstEnumItems","items","oneOf","length","every","opt","const","undefined","PrimitiveArrayItem","props","_$createComponent","JsonSchemaForm","schema","value","onChange","path","ArrayField","currentValue","itemSchema","type","addItem","newItem","getDefaultValue","removeItem","index","newArray","filter","_","i","updateItem","itemValue","moveItem","fromIndex","toIndex","item","splice","isPrimitive","resolveSchemaType","isCheckboxGroup","constOptions","map","label","title","String","toggleValue","current","some","v","_el$","_tmpl$3","_$insert","Show","when","fallback","_el$5","_tmpl$4","For","each","children","option","Checkbox","checked","_el$6","_tmpl$6","_el$7","firstChild","_el$8","_el$9","_el$13","nextSibling","_el$14","_el$15","_el$16","_el$1","_tmpl$5","_el$10","_el$12","$$click","ChevronUpIcon","ChevronDownIcon","TrashIcon","_$effect","_p$","_v$","_v$2","e","disabled","t","_el$2","_tmpl$","_el$3","PlusIcon","minItems","maxItems","_el$4","_tmpl$2","_$memo","_$delegateEvents"],"mappings":"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"}
@@ -2,7 +2,8 @@ import { Component } from 'solid-js';
2
2
  import { BaseFieldProps } from '../types';
3
3
  /**
4
4
  * Number/Integer field renderer
5
- * Handles parsing and validation of numeric input
5
+ * Handles parsing and validation of numeric input.
6
+ * Applies min/max/step constraints from the schema.
6
7
  */
7
8
  export declare const NumberField: Component<BaseFieldProps>;
8
9
  //# sourceMappingURL=NumberField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/fields/NumberField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,cAAc,CAsBjD,CAAC"}
1
+ {"version":3,"file":"NumberField.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/fields/NumberField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,cAAc,CAwCjD,CAAC"}
@@ -1,27 +1,35 @@
1
- import { createComponent as o } from "solid-js/web";
2
- import { toDisplayString as a } from "../utils.js";
3
- import { Input as u } from "../../Input/Input.js";
4
- const h = (e) => {
5
- const r = () => a(e.value);
6
- return o(u, {
7
- type: "number",
8
- get value() {
9
- return r();
10
- },
11
- onInput: (n) => {
12
- if (n === "") {
13
- e.onChange(void 0);
14
- return;
15
- }
16
- const t = Number(n);
17
- Number.isNaN(t) || e.onChange(t);
18
- },
19
- get placeholder() {
20
- return e.schema.default?.toString() || "0";
1
+ import { template as h, effect as c, setAttribute as n, delegateEvents as g } from "solid-js/web";
2
+ import { toDisplayString as x, resolveSchemaType as b } from "../utils.js";
3
+ var y = /* @__PURE__ */ h('<input type=number class="w-full px-3 py-2 sm:py-2.5 glass-input text-sm text-surface-900 dark:text-surface-100 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed">');
4
+ const M = (t) => {
5
+ const s = () => x(t.value), i = () => b(t.schema) === "integer", o = (a) => {
6
+ if (a === "") {
7
+ t.onChange(void 0);
8
+ return;
21
9
  }
22
- });
10
+ const e = Number(a);
11
+ Number.isNaN(e) || t.onChange(i() ? Math.round(e) : e);
12
+ }, v = () => {
13
+ if (t.schema.multipleOf !== void 0)
14
+ return t.schema.multipleOf;
15
+ if (i())
16
+ return 1;
17
+ }, d = () => t.schema.minimum ?? t.schema.exclusiveMinimum, f = () => t.schema.maximum ?? t.schema.exclusiveMaximum;
18
+ return (() => {
19
+ var a = y();
20
+ return a.$$input = (e) => o(e.currentTarget.value), c((e) => {
21
+ var m = t.schema.default?.toString() || "0", u = d(), r = f(), l = v();
22
+ return m !== e.e && n(a, "placeholder", e.e = m), u !== e.t && n(a, "min", e.t = u), r !== e.a && n(a, "max", e.a = r), l !== e.o && n(a, "step", e.o = l), e;
23
+ }, {
24
+ e: void 0,
25
+ t: void 0,
26
+ a: void 0,
27
+ o: void 0
28
+ }), c(() => a.value = s()), a;
29
+ })();
23
30
  };
31
+ g(["input"]);
24
32
  export {
25
- h as NumberField
33
+ M as NumberField
26
34
  };
27
35
  //# sourceMappingURL=NumberField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.js","sources":["../../../../src/components/JsonSchemaForm/fields/NumberField.tsx"],"sourcesContent":["import type { Component } from 'solid-js';\nimport { Input } from '../../Input';\nimport type { BaseFieldProps } from '../types';\nimport { toDisplayString } from '../utils';\n\n/**\n * Number/Integer field renderer\n * Handles parsing and validation of numeric input\n */\nexport const NumberField: Component<BaseFieldProps> = (props) => {\n const stringValue = () => toDisplayString(props.value);\n\n const handleChange = (strValue: string) => {\n if (strValue === '') {\n props.onChange(undefined);\n return;\n }\n const num = Number(strValue);\n if (!Number.isNaN(num)) {\n props.onChange(num);\n }\n };\n\n return (\n <Input\n type=\"number\"\n value={stringValue()}\n onInput={handleChange}\n placeholder={props.schema.default?.toString() || '0'}\n />\n );\n};\n"],"names":["NumberField","props","stringValue","toDisplayString","value","_$createComponent","Input","type","onInput","handleChange","strValue","onChange","undefined","num","Number","isNaN","placeholder","schema","default","toString"],"mappings":";;;AASO,MAAMA,IAA0CC,CAAAA,MAAU;AAC/D,QAAMC,IAAcA,MAAMC,EAAgBF,EAAMG,KAAK;AAarD,SAAAC,EACGC,GAAK;AAAA,IACJC,MAAI;AAAA,IAAA,IACJH,QAAK;AAAA,aAAEF,EAAAA;AAAAA,IAAa;AAAA,IACpBM,SAfiBC,CAACC,MAAqB;AACzC,UAAIA,MAAa,IAAI;AACnBT,QAAAA,EAAMU,SAASC,MAAS;AACxB;AAAA,MACF;AACA,YAAMC,IAAMC,OAAOJ,CAAQ;AAC3B,MAAKI,OAAOC,MAAMF,CAAG,KACnBZ,EAAMU,SAASE,CAAG;AAAA,IAEtB;AAAA,IAMyB,IACrBG,cAAW;AAAA,aAAEf,EAAMgB,OAAOC,SAASC,SAAAA,KAAc;AAAA,IAAG;AAAA,EAAA,CAAA;AAG1D;"}
1
+ {"version":3,"file":"NumberField.js","sources":["../../../../src/components/JsonSchemaForm/fields/NumberField.tsx"],"sourcesContent":["import type { Component } from 'solid-js';\nimport type { BaseFieldProps } from '../types';\nimport { resolveSchemaType, toDisplayString } from '../utils';\n\n/**\n * Number/Integer field renderer\n * Handles parsing and validation of numeric input.\n * Applies min/max/step constraints from the schema.\n */\nexport const NumberField: Component<BaseFieldProps> = (props) => {\n const stringValue = () => toDisplayString(props.value);\n const isInteger = () => resolveSchemaType(props.schema) === 'integer';\n\n const handleChange = (strValue: string) => {\n if (strValue === '') {\n props.onChange(undefined);\n return;\n }\n const num = Number(strValue);\n if (!Number.isNaN(num)) {\n props.onChange(isInteger() ? Math.round(num) : num);\n }\n };\n\n const step = () => {\n if (props.schema.multipleOf !== undefined) {\n return props.schema.multipleOf;\n }\n if (isInteger()) {\n return 1;\n }\n return undefined;\n };\n\n const min = () => props.schema.minimum ?? props.schema.exclusiveMinimum;\n const max = () => props.schema.maximum ?? props.schema.exclusiveMaximum;\n\n return (\n <input\n type=\"number\"\n class=\"w-full px-3 py-2 sm:py-2.5 glass-input text-sm text-surface-900 dark:text-surface-100 focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed\"\n value={stringValue()}\n placeholder={props.schema.default?.toString() || '0'}\n min={min()}\n max={max()}\n step={step()}\n onInput={(e) => handleChange(e.currentTarget.value)}\n />\n );\n};\n"],"names":["NumberField","props","stringValue","toDisplayString","value","isInteger","resolveSchemaType","schema","handleChange","strValue","onChange","undefined","num","Number","isNaN","Math","round","step","multipleOf","min","minimum","exclusiveMinimum","max","maximum","exclusiveMaximum","_el$","_tmpl$","$$input","e","currentTarget","_$effect","_p$","_v$","default","toString","_v$2","_v$3","_v$4","_$setAttribute","t","a","o","_$delegateEvents"],"mappings":";;;AASO,MAAMA,IAA0CC,CAAAA,MAAU;AAC/D,QAAMC,IAAcA,MAAMC,EAAgBF,EAAMG,KAAK,GAC/CC,IAAYA,MAAMC,EAAkBL,EAAMM,MAAM,MAAM,WAEtDC,IAAeA,CAACC,MAAqB;AACzC,QAAIA,MAAa,IAAI;AACnBR,MAAAA,EAAMS,SAASC,MAAS;AACxB;AAAA,IACF;AACA,UAAMC,IAAMC,OAAOJ,CAAQ;AAC3B,IAAKI,OAAOC,MAAMF,CAAG,KACnBX,EAAMS,SAASL,EAAAA,IAAcU,KAAKC,MAAMJ,CAAG,IAAIA,CAAG;AAAA,EAEtD,GAEMK,IAAOA,MAAM;AACjB,QAAIhB,EAAMM,OAAOW,eAAeP;AAC9B,aAAOV,EAAMM,OAAOW;AAEtB,QAAIb;AACF,aAAO;AAAA,EAGX,GAEMc,IAAMA,MAAMlB,EAAMM,OAAOa,WAAWnB,EAAMM,OAAOc,kBACjDC,IAAMA,MAAMrB,EAAMM,OAAOgB,WAAWtB,EAAMM,OAAOiB;AAEvD,UAAA,MAAA;AAAA,QAAAC,IAAAC,EAAAA;AAAAD,WAAAA,EAAAE,UAScC,CAAAA,MAAMpB,EAAaoB,EAAEC,cAAczB,KAAK,GAAC0B,EAAAC,CAAAA,MAAA;AAAA,UAAAC,IAJtC/B,EAAMM,OAAO0B,SAASC,cAAc,KAAGC,IAC/ChB,EAAAA,GAAKiB,IACLd,EAAAA,GAAKe,IACJpB,EAAAA;AAAMe,aAAAA,MAAAD,EAAAH,KAAAU,EAAAb,GAAA,eAAAM,EAAAH,IAAAI,CAAA,GAAAG,MAAAJ,EAAAQ,KAAAD,EAAAb,GAAA,OAAAM,EAAAQ,IAAAJ,CAAA,GAAAC,MAAAL,EAAAS,KAAAF,EAAAb,GAAA,OAAAM,EAAAS,IAAAJ,CAAA,GAAAC,MAAAN,EAAAU,KAAAH,EAAAb,GAAA,QAAAM,EAAAU,IAAAJ,CAAA,GAAAN;AAAAA,IAAA,GAAA;AAAA,MAAAH,GAAAjB;AAAAA,MAAA4B,GAAA5B;AAAAA,MAAA6B,GAAA7B;AAAAA,MAAA8B,GAAA9B;AAAAA,IAAAA,CAAA,GAAAmB,QAAAL,EAAArB,QAJLF,EAAAA,CAAa,GAAAuB;AAAAA,EAAA,GAAA;AAQ1B;AAAEiB,EAAA,CAAA,OAAA,CAAA;"}
@@ -2,7 +2,8 @@ import { Component } from 'solid-js';
2
2
  import { BaseFieldProps } from '../types';
3
3
  /**
4
4
  * Union field renderer (oneOf/anyOf)
5
- * Renders as JSON textarea for complex union types
5
+ * - Renders a select dropdown when all variants use { const, title }
6
+ * - Falls back to JSON textarea for complex union types
6
7
  */
7
8
  export declare const OneOfField: Component<BaseFieldProps>;
8
9
  //# sourceMappingURL=OneOfField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OneOfField.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/fields/OneOfField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,cAAc,CAuBhD,CAAC"}
1
+ {"version":3,"file":"OneOfField.d.ts","sourceRoot":"","sources":["../../../../src/components/JsonSchemaForm/fields/OneOfField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAe/C;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,cAAc,CAuEhD,CAAC"}