glass-ui-solid 0.4.2 → 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 +156 -166
  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 +88 -51
  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,198 +1,188 @@
1
- import { template as x, insert as l, createComponent as t, effect as T, memo as f, delegateEvents as j } from "solid-js/web";
2
- import { For as D, Show as o, Switch as E, Match as w } from "solid-js";
3
- import { resolveSchemaType as b, getDefaultValue as V } from "../utils.js";
4
- import { BooleanField as B } from "./BooleanField.js";
5
- import { EnumField as J } from "./EnumField.js";
6
- import { NumberField as N } from "./NumberField.js";
7
- import { StringField as R } from "./StringField.js";
8
- import { JsonSchemaForm as U } from "../JsonSchemaForm.js";
9
- import { ChevronUpIcon as q, ChevronDownIcon as z } from "../../shared/icons/ChevronIcon.js";
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";
10
6
  import { TrashIcon as G } from "../../shared/icons/TrashIcon.js";
11
- import { PlusIcon as H } from "../../shared/icons/PlusIcon.js";
12
- var K = /* @__PURE__ */ x('<div class="text-xs text-surface-400 dark:text-surface-500">'), L = /* @__PURE__ */ x('<div class=space-y-3><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'), O = /* @__PURE__ */ x('<span class="text-xs text-surface-400 dark:text-surface-500">(<!>)'), Q = /* @__PURE__ */ x('<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">');
13
- const W = (e) => {
14
- const s = () => b(e.schema) || "string";
15
- return t(E, {
16
- get fallback() {
17
- return t(R, {
18
- get schema() {
19
- return e.schema;
20
- },
21
- get value() {
22
- return e.value;
23
- },
24
- get onChange() {
25
- return e.onChange;
26
- }
27
- });
28
- },
29
- get children() {
30
- return [t(w, {
31
- get when() {
32
- return f(() => !!e.schema.enum)() && e.schema.enum.length > 0;
33
- },
34
- get children() {
35
- return t(J, {
36
- get schema() {
37
- return e.schema;
38
- },
39
- get value() {
40
- return e.value;
41
- },
42
- get onChange() {
43
- return e.onChange;
44
- }
45
- });
46
- }
47
- }), t(w, {
48
- get when() {
49
- return s() === "boolean";
50
- },
51
- get children() {
52
- return t(B, {
53
- get schema() {
54
- return e.schema;
55
- },
56
- get value() {
57
- return e.value;
58
- },
59
- get onChange() {
60
- return e.onChange;
61
- }
62
- });
63
- }
64
- }), t(w, {
65
- get when() {
66
- return s() === "number" || s() === "integer";
67
- },
68
- get children() {
69
- return t(N, {
70
- get schema() {
71
- return e.schema;
72
- },
73
- get value() {
74
- return e.value;
75
- },
76
- get onChange() {
77
- return e.onChange;
78
- }
79
- });
80
- }
81
- })];
82
- }
83
- });
84
- }, ce = (e) => {
85
- const s = () => e.value || [], u = () => e.schema.items || {
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);
12
+ }
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 || {
86
28
  type: "string"
87
29
  }, S = () => {
88
- const r = V(u());
89
- e.onChange([...s(), r]);
90
- }, F = (r) => {
91
- const n = s().filter((m, c) => c !== r);
92
- e.onChange(n.length > 0 ? n : void 0);
93
- }, _ = (r, n) => {
94
- const m = [...s()];
95
- m[r] = n, e.onChange(m);
96
- }, k = (r, n) => {
97
- if (n < 0 || n >= s().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)
98
40
  return;
99
- const m = [...s()], [c] = m.splice(r, 1);
100
- m.splice(n, 0, c), e.onChange(m);
101
- }, A = () => {
102
- const r = b(u());
103
- return r === "string" || r === "number" || r === "integer" || r === "boolean";
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)
51
+ })) : [];
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);
57
+ } else
58
+ t.onChange([...e, n]);
104
59
  };
105
60
  return (() => {
106
- var r = L(), n = r.firstChild, m = n.firstChild;
107
- return l(r, t(D, {
108
- get each() {
109
- return s();
61
+ var n = z();
62
+ return a(n, s(u, {
63
+ get when() {
64
+ return !p();
110
65
  },
111
- children: (c, i) => (() => {
112
- var C = Q(), M = C.firstChild, $ = M.firstChild, y = $.firstChild;
113
- y.firstChild;
114
- var P = $.nextSibling, g = P.firstChild, d = g.nextSibling, I = d.nextSibling;
115
- return l(y, () => i() + 1, null), l($, t(o, {
116
- get when() {
117
- return b(u());
118
- },
119
- get children() {
120
- var a = O(), v = a.firstChild, h = v.nextSibling;
121
- return h.nextSibling, l(a, () => b(u()), h), a;
122
- }
123
- }), null), g.$$click = () => k(i(), i() - 1), l(g, t(q, {
124
- class: "w-4 h-4"
125
- })), d.$$click = () => k(i(), i() + 1), l(d, t(z, {
126
- class: "w-4 h-4"
127
- })), I.$$click = () => F(i()), l(I, t(G, {
128
- class: "w-4 h-4"
129
- })), l(C, t(o, {
130
- get when() {
131
- return A();
66
+ get fallback() {
67
+ return (
68
+ /* Checkbox group for oneOf const pattern */
69
+ (() => {
70
+ var e = B();
71
+ return a(e, s(y, {
72
+ get each() {
73
+ return M();
74
+ },
75
+ children: (r) => s(R, {
76
+ get checked() {
77
+ return o().some((l) => l === r.value);
78
+ },
79
+ onChange: () => F(r.value),
80
+ get label() {
81
+ return r.label;
82
+ }
83
+ })
84
+ })), e;
85
+ })()
86
+ );
87
+ },
88
+ get children() {
89
+ return [s(y, {
90
+ get each() {
91
+ return o();
132
92
  },
133
- get fallback() {
134
- return t(U, {
135
- get schema() {
136
- return u();
93
+ children: (e, r) => (() => {
94
+ var l = K(), v = l.firstChild, b = v.firstChild, _ = b.firstChild;
95
+ _.firstChild;
96
+ var P = b.nextSibling, g = P.firstChild, d = g.nextSibling, k = d.nextSibling;
97
+ return a(_, () => r() + 1, null), a(b, s(u, {
98
+ get when() {
99
+ return $(i());
137
100
  },
138
- value: c,
139
- onChange: (a) => _(i(), a),
140
- get path() {
141
- return [...e.path, String(i())];
101
+ get children() {
102
+ var c = H(), f = c.firstChild, h = f.nextSibling;
103
+ return h.nextSibling, a(c, () => $(i()), h), c;
142
104
  }
143
- });
144
- },
145
- get children() {
146
- return t(W, {
147
- get schema() {
148
- return u();
105
+ }), null), g.$$click = () => w(r(), r() - 1), a(g, s(E, {
106
+ class: "w-4 h-4"
107
+ })), d.$$click = () => w(r(), r() + 1), a(d, s(T, {
108
+ class: "w-4 h-4"
109
+ })), k.$$click = () => A(r()), a(k, s(G, {
110
+ class: "w-4 h-4"
111
+ })), a(l, s(u, {
112
+ get when() {
113
+ return O();
149
114
  },
150
- value: c,
151
- onChange: (a) => _(i(), a)
152
- });
153
- }
154
- }), null), T((a) => {
155
- var v = i() === 0, h = i() === s().length - 1;
156
- return v !== a.e && (g.disabled = a.e = v), h !== a.t && (d.disabled = a.t = h), a;
157
- }, {
158
- e: void 0,
159
- t: void 0
160
- }), C;
161
- })()
162
- }), n), n.$$click = S, l(n, t(H, {
163
- class: "w-4 h-4"
164
- }), m), l(r, t(o, {
115
+ get fallback() {
116
+ return s(I, {
117
+ get schema() {
118
+ return i();
119
+ },
120
+ value: e,
121
+ onChange: (c) => C(r(), c),
122
+ get path() {
123
+ return [...t.path, String(r())];
124
+ }
125
+ });
126
+ },
127
+ get children() {
128
+ return s(N, {
129
+ get schema() {
130
+ return i();
131
+ },
132
+ value: e,
133
+ onChange: (c) => C(r(), c),
134
+ get path() {
135
+ return [...t.path, String(r())];
136
+ }
137
+ });
138
+ }
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;
142
+ }, {
143
+ e: void 0,
144
+ t: void 0
145
+ }), l;
146
+ })()
147
+ }), (() => {
148
+ var e = U(), r = e.firstChild;
149
+ return e.$$click = S, a(e, s(J, {
150
+ class: "w-4 h-4"
151
+ }), r), e;
152
+ })()];
153
+ }
154
+ }), null), a(n, s(u, {
165
155
  get when() {
166
- return e.schema.minItems !== void 0 || e.schema.maxItems !== void 0;
156
+ return t.schema.minItems !== void 0 || t.schema.maxItems !== void 0;
167
157
  },
168
158
  get children() {
169
- var c = K();
170
- return l(c, t(o, {
159
+ var e = q();
160
+ return a(e, s(u, {
171
161
  get when() {
172
- return e.schema.minItems !== void 0;
162
+ return t.schema.minItems !== void 0;
173
163
  },
174
164
  get children() {
175
- return ["Min items: ", f(() => e.schema.minItems)];
165
+ return ["Min items: ", x(() => t.schema.minItems)];
176
166
  }
177
- }), null), l(c, t(o, {
167
+ }), null), a(e, s(u, {
178
168
  get when() {
179
- return f(() => e.schema.minItems !== void 0)() && e.schema.maxItems !== void 0;
169
+ return x(() => t.schema.minItems !== void 0)() && t.schema.maxItems !== void 0;
180
170
  },
181
171
  children: " | "
182
- }), null), l(c, t(o, {
172
+ }), null), a(e, s(u, {
183
173
  get when() {
184
- return e.schema.maxItems !== void 0;
174
+ return t.schema.maxItems !== void 0;
185
175
  },
186
176
  get children() {
187
- return ["Max items: ", f(() => e.schema.maxItems)];
177
+ return ["Max items: ", x(() => t.schema.maxItems)];
188
178
  }
189
- }), null), c;
179
+ }), null), e;
190
180
  }
191
- }), null), r;
181
+ }), null), n;
192
182
  })();
193
183
  };
194
184
  j(["click"]);
195
185
  export {
196
- ce as ArrayField
186
+ ne as ArrayField
197
187
  };
198
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 {\n ChevronDownIcon,\n ChevronUpIcon,\n PlusIcon,\n TrashIcon,\n} from '../../shared/icons';\nimport type { ArrayFieldProps, BaseFieldProps } 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 * 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 return (\n <div class=\"space-y-3\">\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\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":["PrimitiveArrayItem","props","schemaType","resolveSchemaType","schema","_$createComponent","Switch","fallback","StringField","value","onChange","children","Match","when","_$memo","enum","length","EnumField","BooleanField","NumberField","ArrayField","currentValue","itemSchema","items","type","addItem","newItem","getDefaultValue","removeItem","index","newArray","filter","_","i","undefined","updateItem","itemValue","moveItem","fromIndex","toIndex","item","splice","isPrimitive","_el$","_tmpl$2","_el$2","firstChild","_el$3","_$insert","For","each","_el$5","_tmpl$4","_el$6","_el$7","_el$8","_el$12","nextSibling","_el$13","_el$14","_el$15","Show","_el$0","_tmpl$3","_el$1","_el$11","$$click","ChevronUpIcon","ChevronDownIcon","TrashIcon","JsonSchemaForm","v","path","String","_$effect","_p$","_v$","_v$2","e","disabled","t","PlusIcon","minItems","maxItems","_el$4","_tmpl$","_$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"}
@@ -1,28 +1,65 @@
1
- import { createComponent as o } from "solid-js/web";
2
- import { toDisplayStringJson as a } from "../utils.js";
3
- import { Textarea as r } from "../../Input/Textarea.js";
4
- const g = (n) => {
5
- const t = () => a(n.value);
6
- return o(r, {
7
- get value() {
8
- return t();
1
+ import { createComponent as i, template as u, insert as c, effect as s } from "solid-js/web";
2
+ import { Show as p, For as x } from "solid-js";
3
+ import { toDisplayStringJson as C } from "../utils.js";
4
+ import { Textarea as y } from "../../Input/Textarea.js";
5
+ var S = /* @__PURE__ */ u('<div class="relative overflow-hidden"><select class="w-full px-3 py-2 sm:py-2.5 glass-input text-sm text-surface-800 dark:text-surface-200 font-medium focus:outline-none cursor-pointer appearance-none pr-9"><option value>-- Select --'), O = /* @__PURE__ */ u("<option>");
6
+ function _(t) {
7
+ return !t || t.length === 0 ? !1 : t.every((o) => o.const !== void 0);
8
+ }
9
+ const T = (t) => {
10
+ const o = () => t.schema.oneOf || t.schema.anyOf || [], f = () => _(o()), a = () => o().map((e) => ({
11
+ value: e.const,
12
+ label: e.title || String(e.const)
13
+ })), d = () => {
14
+ const n = a().findIndex((r) => r.value === t.value);
15
+ return n >= 0 ? String(n) : "";
16
+ }, h = (e) => {
17
+ if (e === "") {
18
+ t.onChange(void 0);
19
+ return;
20
+ }
21
+ const n = Number.parseInt(e, 10), r = a()[n];
22
+ r && t.onChange(r.value);
23
+ }, m = () => C(t.value), g = (e) => {
24
+ if (e === "") {
25
+ t.onChange(void 0);
26
+ return;
27
+ }
28
+ try {
29
+ t.onChange(JSON.parse(e));
30
+ } catch {
31
+ t.onChange(e);
32
+ }
33
+ };
34
+ return i(p, {
35
+ get when() {
36
+ return f();
9
37
  },
10
- onInput: (e) => {
11
- if (e === "") {
12
- n.onChange(void 0);
13
- return;
14
- }
15
- try {
16
- n.onChange(JSON.parse(e));
17
- } catch {
18
- n.onChange(e);
19
- }
38
+ get fallback() {
39
+ return i(y, {
40
+ get value() {
41
+ return m();
42
+ },
43
+ onInput: g,
44
+ placeholder: "{}",
45
+ class: "h-24 font-mono text-sm"
46
+ });
20
47
  },
21
- placeholder: "{}",
22
- class: "h-24 font-mono text-sm"
48
+ get children() {
49
+ var e = S(), n = e.firstChild;
50
+ return n.firstChild, n.addEventListener("change", (r) => h(r.currentTarget.value)), c(n, i(x, {
51
+ get each() {
52
+ return a();
53
+ },
54
+ children: (r, v) => (() => {
55
+ var l = O();
56
+ return c(l, () => r.label), s(() => l.value = v()), l;
57
+ })()
58
+ }), null), s(() => n.value = d()), e;
59
+ }
23
60
  });
24
61
  };
25
62
  export {
26
- g as OneOfField
63
+ T as OneOfField
27
64
  };
28
65
  //# sourceMappingURL=OneOfField.js.map