@geajs/ui 0.2.4 → 0.2.10
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/accordion.d.mts +2 -2
- package/dist/accordion.mjs +92 -122
- package/dist/accordion.mjs.map +1 -1
- package/dist/alert.d.mts +3 -3
- package/dist/alert.mjs +45 -107
- package/dist/alert.mjs.map +1 -1
- package/dist/avatar.d.mts +2 -2
- package/dist/avatar.mjs +38 -62
- package/dist/avatar.mjs.map +1 -1
- package/dist/badge.d.mts +1 -1
- package/dist/badge.mjs +18 -43
- package/dist/badge.mjs.map +1 -1
- package/dist/bind.mjs +169 -0
- package/dist/bind.mjs.map +1 -0
- package/dist/button.d.mts +3 -2
- package/dist/button.mjs +30 -85
- package/dist/button.mjs.map +1 -1
- package/dist/card.d.mts +6 -6
- package/dist/card.mjs +82 -194
- package/dist/card.mjs.map +1 -1
- package/dist/checkbox.d.mts +2 -2
- package/dist/checkbox.mjs +30 -31
- package/dist/checkbox.mjs.map +1 -1
- package/dist/clipboard.d.mts +2 -2
- package/dist/clipboard.mjs +49 -55
- package/dist/clipboard.mjs.map +1 -1
- package/dist/collapsible.d.mts +2 -2
- package/dist/collapsible.mjs +18 -45
- package/dist/collapsible.mjs.map +1 -1
- package/dist/combobox.d.mts +2 -2
- package/dist/combobox.mjs +390 -261
- package/dist/combobox.mjs.map +1 -1
- package/dist/compiled-component.mjs +121 -0
- package/dist/compiled-component.mjs.map +1 -0
- package/dist/compiled-reactive-component.mjs +435 -0
- package/dist/compiled-reactive-component.mjs.map +1 -0
- package/dist/component-id.mjs +21 -0
- package/dist/component-id.mjs.map +1 -0
- package/dist/conditional-truthy.mjs +48 -0
- package/dist/conditional-truthy.mjs.map +1 -0
- package/dist/conditional.mjs +54 -0
- package/dist/conditional.mjs.map +1 -0
- package/dist/delegate-event.mjs +53 -0
- package/dist/delegate-event.mjs.map +1 -0
- package/dist/dialog.d.mts +4 -3
- package/dist/dialog.mjs +57 -70
- package/dist/dialog.mjs.map +1 -1
- package/dist/dirty-symbols.mjs +7 -0
- package/dist/dirty-symbols.mjs.map +1 -0
- package/dist/disposer.mjs +65 -0
- package/dist/disposer.mjs.map +1 -0
- package/dist/dnd-manager.d.mts +9 -1
- package/dist/dnd-manager.mjs +67 -29
- package/dist/dnd-manager.mjs.map +1 -1
- package/dist/drag-drop-context.d.mts +1 -1
- package/dist/drag-drop-context.mjs +17 -33
- package/dist/drag-drop-context.mjs.map +1 -1
- package/dist/draggable.d.mts +1 -1
- package/dist/draggable.mjs +2 -91
- package/dist/draggable2.mjs +424 -0
- package/dist/draggable2.mjs.map +1 -0
- package/dist/droppable.d.mts +1 -1
- package/dist/droppable.mjs +20 -44
- package/dist/droppable.mjs.map +1 -1
- package/dist/file-upload.d.mts +2 -2
- package/dist/file-upload.mjs +405 -122
- package/dist/file-upload.mjs.map +1 -1
- package/dist/hover-card.d.mts +2 -2
- package/dist/hover-card.mjs +24 -59
- package/dist/hover-card.mjs.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/input.d.mts +1 -1
- package/dist/input.mjs +1 -93
- package/dist/input2.mjs +56 -0
- package/dist/input2.mjs.map +1 -0
- package/dist/internal-symbols.mjs +9 -0
- package/dist/internal-symbols.mjs.map +1 -0
- package/dist/item-obs.mjs +31 -0
- package/dist/item-obs.mjs.map +1 -0
- package/dist/keyed-list-symbols.mjs +6 -0
- package/dist/keyed-list-symbols.mjs.map +1 -0
- package/dist/keyed-list.mjs +538 -0
- package/dist/keyed-list.mjs.map +1 -0
- package/dist/label.d.mts +1 -1
- package/dist/label.mjs +20 -45
- package/dist/label.mjs.map +1 -1
- package/dist/menu.d.mts +2 -2
- package/dist/menu.mjs +87 -41
- package/dist/menu.mjs.map +1 -1
- package/dist/number-input.d.mts +2 -2
- package/dist/number-input.mjs +28 -32
- package/dist/number-input.mjs.map +1 -1
- package/dist/pagination.d.mts +2 -2
- package/dist/pagination.mjs +12 -35
- package/dist/pagination.mjs.map +1 -1
- package/dist/patch.mjs +21 -0
- package/dist/patch.mjs.map +1 -0
- package/dist/pin-input.d.mts +2 -2
- package/dist/pin-input.mjs +88 -87
- package/dist/pin-input.mjs.map +1 -1
- package/dist/popover.d.mts +2 -2
- package/dist/popover.mjs +45 -67
- package/dist/popover.mjs.map +1 -1
- package/dist/progress.d.mts +2 -2
- package/dist/progress.mjs +37 -43
- package/dist/progress.mjs.map +1 -1
- package/dist/radio-group.d.mts +2 -2
- package/dist/radio-group.mjs +99 -140
- package/dist/radio-group.mjs.map +1 -1
- package/dist/rating-group.d.mts +2 -2
- package/dist/rating-group.mjs +91 -99
- package/dist/rating-group.mjs.map +1 -1
- package/dist/reactive-attr.mjs +13 -0
- package/dist/reactive-attr.mjs.map +1 -0
- package/dist/reactive-bool.mjs +13 -0
- package/dist/reactive-bool.mjs.map +1 -0
- package/dist/reactive-class-name.mjs +15 -0
- package/dist/reactive-class-name.mjs.map +1 -0
- package/dist/reactive-class.mjs +54 -0
- package/dist/reactive-class.mjs.map +1 -0
- package/dist/reactive-style.mjs +24 -0
- package/dist/reactive-style.mjs.map +1 -0
- package/dist/reactive-text.mjs +62 -0
- package/dist/reactive-text.mjs.map +1 -0
- package/dist/select.d.mts +2 -2
- package/dist/select.mjs +106 -186
- package/dist/select.mjs.map +1 -1
- package/dist/separator.d.mts +1 -1
- package/dist/separator.mjs +19 -45
- package/dist/separator.mjs.map +1 -1
- package/dist/skeleton.d.mts +1 -1
- package/dist/skeleton.mjs +11 -35
- package/dist/skeleton.mjs.map +1 -1
- package/dist/slider.d.mts +2 -2
- package/dist/slider.mjs +31 -32
- package/dist/slider.mjs.map +1 -1
- package/dist/switch.d.mts +2 -2
- package/dist/switch.mjs +30 -31
- package/dist/switch.mjs.map +1 -1
- package/dist/tabs.d.mts +7 -2
- package/dist/tabs.mjs +180 -147
- package/dist/tabs.mjs.map +1 -1
- package/dist/tags-input.d.mts +2 -2
- package/dist/tags-input.mjs +102 -188
- package/dist/tags-input.mjs.map +1 -1
- package/dist/textarea.d.mts +1 -1
- package/dist/textarea.mjs +32 -75
- package/dist/textarea.mjs.map +1 -1
- package/dist/theme.css +4 -5
- package/dist/toast.d.mts +1 -1
- package/dist/toast.mjs +14 -34
- package/dist/toast.mjs.map +1 -1
- package/dist/toggle-group.d.mts +2 -2
- package/dist/toggle-group.mjs +78 -85
- package/dist/toggle-group.mjs.map +1 -1
- package/dist/tooltip.d.mts +2 -2
- package/dist/tooltip.mjs +23 -43
- package/dist/tooltip.mjs.map +1 -1
- package/dist/tree-view.d.mts +2 -2
- package/dist/tree-view.mjs +32 -50
- package/dist/tree-view.mjs.map +1 -1
- package/dist/types.d.mts +9 -0
- package/dist/zag-component.d.mts +26 -3
- package/dist/zag-component.mjs +73 -17
- package/dist/zag-component.mjs.map +1 -1
- package/package.json +4 -3
- package/dist/cn.mjs +0 -10
- package/dist/cn.mjs.map +0 -1
- package/dist/draggable.mjs.map +0 -1
- package/dist/input.mjs.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { t as bind } from "./bind.mjs";
|
|
2
|
+
import { t as patch } from "./patch.mjs";
|
|
3
|
+
//#region ../gea/src/runtime/reactive-bool.ts
|
|
4
|
+
function reactiveBoolAttr(el, d, root, target, pathOrGetter) {
|
|
5
|
+
let prev = void 0;
|
|
6
|
+
bind(d, root, pathOrGetter, (v) => {
|
|
7
|
+
prev = patch(el, "bool", prev, v, target);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { reactiveBoolAttr as t };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=reactive-bool.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-bool.mjs","names":[],"sources":["../../gea/src/runtime/reactive-bool.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport function reactiveBoolAttr(\n el: Element,\n d: Disposer,\n root: any,\n target: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(el, 'bool', prev, v, target)\n })\n}\n\nexport function reactiveBool(\n el: Element,\n d: Disposer,\n root: any,\n target: string,\n pathOrGetter: readonly string[] | (() => unknown),\n mode: 'attr' | 'visible' = 'attr',\n): void {\n if (mode === 'attr') {\n reactiveBoolAttr(el, d, root, target, pathOrGetter)\n return\n }\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n const b = !!v\n if (b === prev) return\n ;(el as HTMLElement).style.display = b ? '' : 'none'\n prev = b\n })\n}\n"],"mappings":";;;AAIA,SAAgB,iBACd,IACA,GACA,MACA,QACA,cACM;CACN,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,IAAI,QAAQ,MAAM,GAAG,OAAO;GACzC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { t as bind } from "./bind.mjs";
|
|
2
|
+
//#region ../gea/src/runtime/reactive-class-name.ts
|
|
3
|
+
function reactiveClassName(el, d, root, pathOrGetter) {
|
|
4
|
+
let prev;
|
|
5
|
+
bind(d, root, pathOrGetter, (v) => {
|
|
6
|
+
const next = v == null || v === false ? "" : String(v);
|
|
7
|
+
if (next === prev) return;
|
|
8
|
+
el.setAttribute("class", next);
|
|
9
|
+
prev = next;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { reactiveClassName as t };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=reactive-class-name.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-class-name.mjs","names":[],"sources":["../../gea/src/runtime/reactive-class-name.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\nexport function reactiveClassName(\n el: Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: string | undefined\n bind(d, root, pathOrGetter, (v) => {\n const next = v == null || v === false ? '' : String(v)\n if (next === prev) return\n el.setAttribute('class', next)\n prev = next\n })\n}\n"],"mappings":";;AAGA,SAAgB,kBACd,IACA,GACA,MACA,cACM;CACN,IAAI;AACJ,MAAK,GAAG,MAAM,eAAe,MAAM;EACjC,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK,OAAO,EAAE;AACtD,MAAI,SAAS,KAAM;AACnB,KAAG,aAAa,SAAS,KAAK;AAC9B,SAAO;GACP"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { t as bind } from "./bind.mjs";
|
|
2
|
+
//#region ../gea/src/runtime/reactive-class.ts
|
|
3
|
+
/**
|
|
4
|
+
* Reactive class binding.
|
|
5
|
+
*
|
|
6
|
+
* Fast path: when the value is a single token (string without whitespace, or
|
|
7
|
+
* null/false/empty), skip Set allocation. The JSX pattern
|
|
8
|
+
* `class={cond ? 'danger' : ''}` dominates keyed-list rows; under the old
|
|
9
|
+
* per-fire Set allocation it burned 1000 Sets per 04_select1k click. Now:
|
|
10
|
+
* single-token → direct classList.add/remove with a string `prev`.
|
|
11
|
+
*
|
|
12
|
+
* Slow path (multi-token strings, arrays, objects) still uses Set-diff.
|
|
13
|
+
*/
|
|
14
|
+
function reactiveClass(el, d, root, pathOrGetter) {
|
|
15
|
+
let prev = null;
|
|
16
|
+
bind(d, root, pathOrGetter, (v) => {
|
|
17
|
+
const text = typeof v === "string" ? v : "";
|
|
18
|
+
if (v == null || v === false || v === "" || typeof v === "string" && text.indexOf(" ") === -1) {
|
|
19
|
+
const next = v == null || v === false ? "" : text;
|
|
20
|
+
if (typeof prev === "string") {
|
|
21
|
+
if (prev === next) return;
|
|
22
|
+
if (prev) el.classList.remove(prev);
|
|
23
|
+
if (next) el.classList.add(next);
|
|
24
|
+
} else {
|
|
25
|
+
if (prev) for (const c of prev) el.classList.remove(c);
|
|
26
|
+
if (next) el.classList.add(next);
|
|
27
|
+
}
|
|
28
|
+
if (!next && !el.hasAttribute("class")) el.setAttribute("class", "");
|
|
29
|
+
prev = next;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const next = /* @__PURE__ */ new Set();
|
|
33
|
+
if (typeof v === "string") {
|
|
34
|
+
for (const t of v.split(/\s+/)) if (t) next.add(t);
|
|
35
|
+
} else if (Array.isArray(v)) {
|
|
36
|
+
for (const t of v) if (t) next.add(String(t));
|
|
37
|
+
} else if (typeof v === "object") {
|
|
38
|
+
for (const k in v) if (v[k]) next.add(k);
|
|
39
|
+
}
|
|
40
|
+
if (typeof prev === "string") {
|
|
41
|
+
if (prev) el.classList.remove(prev);
|
|
42
|
+
} else if (prev) {
|
|
43
|
+
for (const c of prev) if (!next.has(c)) el.classList.remove(c);
|
|
44
|
+
}
|
|
45
|
+
if (typeof prev === "string" || !prev) for (const c of next) el.classList.add(c);
|
|
46
|
+
else for (const c of next) if (!prev.has(c)) el.classList.add(c);
|
|
47
|
+
if (next.size === 0 && !el.hasAttribute("class")) el.setAttribute("class", "");
|
|
48
|
+
prev = next;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { reactiveClass as t };
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=reactive-class.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-class.mjs","names":[],"sources":["../../gea/src/runtime/reactive-class.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\n/**\n * Reactive class binding.\n *\n * Fast path: when the value is a single token (string without whitespace, or\n * null/false/empty), skip Set allocation. The JSX pattern\n * `class={cond ? 'danger' : ''}` dominates keyed-list rows; under the old\n * per-fire Set allocation it burned 1000 Sets per 04_select1k click. Now:\n * single-token → direct classList.add/remove with a string `prev`.\n *\n * Slow path (multi-token strings, arrays, objects) still uses Set-diff.\n */\nexport function reactiveClass(\n el: Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: string | Set<string> | null = null\n bind(d, root, pathOrGetter, (v) => {\n // Single-token fast path: null/false/empty or whitespace-free string.\n // `text` carries the narrowed string in its own `string` slot so `indexOf`\n // has an exact string receiver; calling it on `v` — declared `unknown` —\n // leaves the intrinsic without one. Equivalent: every branch that reaches\n // `next` has `v` either nullish/false (→ '') or a string (→ `text`).\n const text = typeof v === 'string' ? (v as string) : ''\n if (v == null || v === false || v === '' || (typeof v === 'string' && text.indexOf(' ') === -1)) {\n const next = v == null || v === false ? '' : text\n if (typeof prev === 'string') {\n if (prev === next) return\n if (prev) el.classList.remove(prev)\n if (next) el.classList.add(next)\n } else {\n if (prev) for (const c of prev) el.classList.remove(c)\n if (next) el.classList.add(next)\n }\n if (!next && !el.hasAttribute('class')) el.setAttribute('class', '')\n prev = next\n return\n }\n // Slow path: multi-token string / array / object → Set diff.\n const next = new Set<string>()\n if (typeof v === 'string') {\n for (const t of v.split(/\\s+/)) if (t) next.add(t)\n } else if (Array.isArray(v)) {\n for (const t of v) if (t) next.add(String(t))\n } else if (typeof v === 'object') {\n for (const k in v as Record<string, unknown>) {\n if ((v as Record<string, unknown>)[k]) next.add(k)\n }\n }\n if (typeof prev === 'string') {\n if (prev) el.classList.remove(prev)\n } else if (prev) {\n for (const c of prev) if (!next.has(c)) el.classList.remove(c)\n }\n if (typeof prev === 'string' || !prev) {\n for (const c of next) el.classList.add(c)\n } else {\n for (const c of next) if (!prev.has(c)) el.classList.add(c)\n }\n if (next.size === 0 && !el.hasAttribute('class')) el.setAttribute('class', '')\n prev = next\n })\n}\n"],"mappings":";;;;;;;;;;;;;AAcA,SAAgB,cACd,IACA,GACA,MACA,cACM;CACN,IAAI,OAAoC;AACxC,MAAK,GAAG,MAAM,eAAe,MAAM;EAMjC,MAAM,OAAO,OAAO,MAAM,WAAY,IAAe;AACrD,MAAI,KAAK,QAAQ,MAAM,SAAS,MAAM,MAAO,OAAO,MAAM,YAAY,KAAK,QAAQ,IAAI,KAAK,IAAK;GAC/F,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAK;AAC7C,OAAI,OAAO,SAAS,UAAU;AAC5B,QAAI,SAAS,KAAM;AACnB,QAAI,KAAM,IAAG,UAAU,OAAO,KAAK;AACnC,QAAI,KAAM,IAAG,UAAU,IAAI,KAAK;UAC3B;AACL,QAAI,KAAM,MAAK,MAAM,KAAK,KAAM,IAAG,UAAU,OAAO,EAAE;AACtD,QAAI,KAAM,IAAG,UAAU,IAAI,KAAK;;AAElC,OAAI,CAAC,QAAQ,CAAC,GAAG,aAAa,QAAQ,CAAE,IAAG,aAAa,SAAS,GAAG;AACpE,UAAO;AACP;;EAGF,MAAM,uBAAO,IAAI,KAAa;AAC9B,MAAI,OAAO,MAAM;QACV,MAAM,KAAK,EAAE,MAAM,MAAM,CAAE,KAAI,EAAG,MAAK,IAAI,EAAE;aACzC,MAAM,QAAQ,EAAE;QACpB,MAAM,KAAK,EAAG,KAAI,EAAG,MAAK,IAAI,OAAO,EAAE,CAAC;aACpC,OAAO,MAAM;QACjB,MAAM,KAAK,EACd,KAAK,EAA8B,GAAI,MAAK,IAAI,EAAE;;AAGtD,MAAI,OAAO,SAAS;OACd,KAAM,IAAG,UAAU,OAAO,KAAK;aAC1B;QACJ,MAAM,KAAK,KAAM,KAAI,CAAC,KAAK,IAAI,EAAE,CAAE,IAAG,UAAU,OAAO,EAAE;;AAEhE,MAAI,OAAO,SAAS,YAAY,CAAC,KAC/B,MAAK,MAAM,KAAK,KAAM,IAAG,UAAU,IAAI,EAAE;MAEzC,MAAK,MAAM,KAAK,KAAM,KAAI,CAAC,KAAK,IAAI,EAAE,CAAE,IAAG,UAAU,IAAI,EAAE;AAE7D,MAAI,KAAK,SAAS,KAAK,CAAC,GAAG,aAAa,QAAQ,CAAE,IAAG,aAAa,SAAS,GAAG;AAC9E,SAAO;GACP"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { t as bind } from "./bind.mjs";
|
|
2
|
+
//#region ../gea/src/runtime/reactive-style.ts
|
|
3
|
+
function reactiveStyleProp(el, d, root, prop, pathOrGetter) {
|
|
4
|
+
const style = el.style;
|
|
5
|
+
let prev;
|
|
6
|
+
bind(d, root, pathOrGetter, (v) => {
|
|
7
|
+
if (v == null || v === false) {
|
|
8
|
+
if (prev !== void 0) {
|
|
9
|
+
style.removeProperty(prop);
|
|
10
|
+
prev = void 0;
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const next = String(v);
|
|
15
|
+
if (next !== prev) {
|
|
16
|
+
style.setProperty(prop, next);
|
|
17
|
+
prev = next;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { reactiveStyleProp as t };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=reactive-style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-style.mjs","names":[],"sources":["../../gea/src/runtime/reactive-style.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\n\nfunction kebab(k: string): string {\n return k.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())\n}\n\nexport function reactiveStyle(\n el: Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: Record<string, string> = {}\n const style = (el as HTMLElement).style\n bind(d, root, pathOrGetter, (v) => {\n const next: Record<string, string> = {}\n if (v && typeof v === 'object') {\n for (const k in v as Record<string, unknown>) {\n const val = (v as Record<string, unknown>)[k]\n if (val != null && val !== false) next[kebab(k)] = String(val)\n }\n }\n for (const k in prev) if (!(k in next)) style.removeProperty(k)\n for (const k in next) if (next[k] !== prev[k]) style.setProperty(k, next[k])\n prev = next\n })\n}\n\n// Typed single-property style binding. Used by the compiler for static-key style\n// objects (e.g. a moving sprite's `{ left, top, backgroundColor }`): each property\n// binds on its own channel with a compile-time-kebabed name, so there is no boxed\n// `next`/`prev` record allocation, no runtime kebab-casing, and tracking is\n// per-property (only the property that actually changed re-applies). The generic\n// `reactiveStyle` above stays for dynamic/spread style objects.\nexport function reactiveStyleProp(\n el: Element,\n d: Disposer,\n root: object,\n prop: string,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n const style = (el as HTMLElement).style\n let prev: string | undefined\n bind(d, root, pathOrGetter, (v) => {\n if (v == null || v === false) {\n if (prev !== undefined) {\n style.removeProperty(prop)\n prev = undefined\n }\n return\n }\n const next = String(v)\n if (next !== prev) {\n style.setProperty(prop, next)\n prev = next\n }\n })\n}\n"],"mappings":";;AAmCA,SAAgB,kBACd,IACA,GACA,MACA,MACA,cACM;CACN,MAAM,QAAS,GAAmB;CAClC,IAAI;AACJ,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,MAAI,KAAK,QAAQ,MAAM,OAAO;AAC5B,OAAI,SAAS,KAAA,GAAW;AACtB,UAAM,eAAe,KAAK;AAC1B,WAAO,KAAA;;AAET;;EAEF,MAAM,OAAO,OAAO,EAAE;AACtB,MAAI,SAAS,MAAM;AACjB,SAAM,YAAY,MAAM,KAAK;AAC7B,UAAO;;GAET"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { t as bind } from "./bind.mjs";
|
|
2
|
+
import { t as patch } from "./patch.mjs";
|
|
3
|
+
//#region ../gea/src/runtime/reactive-text.ts
|
|
4
|
+
function reactiveTextValue(node, d, root, pathOrGetter) {
|
|
5
|
+
let prev = void 0;
|
|
6
|
+
bind(d, root, pathOrGetter, (v) => {
|
|
7
|
+
prev = patch(node, "text", prev, v);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
function reactiveText(node, d, root, pathOrGetter) {
|
|
11
|
+
let prev = void 0;
|
|
12
|
+
let live = node;
|
|
13
|
+
let liveChildren = null;
|
|
14
|
+
bind(d, root, pathOrGetter, (v) => {
|
|
15
|
+
if (Array.isArray(v)) {
|
|
16
|
+
const frag = document.createDocumentFragment();
|
|
17
|
+
const nodes = [];
|
|
18
|
+
for (const item of v) {
|
|
19
|
+
if (item == null) continue;
|
|
20
|
+
if (typeof item.nodeType === "number") {
|
|
21
|
+
frag.appendChild(item);
|
|
22
|
+
nodes.push(item);
|
|
23
|
+
} else {
|
|
24
|
+
const tn = document.createTextNode(String(item));
|
|
25
|
+
frag.appendChild(tn);
|
|
26
|
+
nodes.push(tn);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (liveChildren) {
|
|
30
|
+
for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n);
|
|
31
|
+
liveChildren = null;
|
|
32
|
+
}
|
|
33
|
+
const parent = live.parentNode;
|
|
34
|
+
if (parent) parent.insertBefore(frag, live);
|
|
35
|
+
liveChildren = nodes;
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (liveChildren) {
|
|
39
|
+
for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n);
|
|
40
|
+
liveChildren = null;
|
|
41
|
+
}
|
|
42
|
+
if (v && typeof v.nodeType === "number") {
|
|
43
|
+
if (v === live) return;
|
|
44
|
+
const p = live.parentNode;
|
|
45
|
+
if (p) p.replaceChild(v, live);
|
|
46
|
+
live = v;
|
|
47
|
+
prev = v;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (live.nodeType !== 3 && live.nodeType !== 8 && live !== node) {
|
|
51
|
+
const text = document.createTextNode("");
|
|
52
|
+
if (live.parentNode) live.parentNode.replaceChild(text, live);
|
|
53
|
+
live = text;
|
|
54
|
+
prev = void 0;
|
|
55
|
+
}
|
|
56
|
+
prev = patch(live, "text", prev, v);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { reactiveTextValue as n, reactiveText as t };
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=reactive-text.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactive-text.mjs","names":[],"sources":["../../gea/src/runtime/reactive-text.ts"],"sourcesContent":["import type { Disposer } from './disposer'\nimport { bind } from './bind'\nimport { patch } from './patch'\n\nexport function reactiveTextValue(\n node: Text | Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n bind(d, root, pathOrGetter, (v) => {\n prev = patch(node, 'text', prev, v)\n })\n}\n\nexport function reactiveText(\n node: Text | Element,\n d: Disposer,\n root: object,\n pathOrGetter: readonly string[] | (() => unknown),\n): void {\n let prev: unknown = undefined\n let live: Node = node\n // For array children (`.map(...)` returning DOM nodes), remember the live\n // set so we can replace on subsequent renders.\n let liveChildren: Node[] | null = null\n bind(d, root, pathOrGetter, (v) => {\n // Array of Nodes (e.g. from `.map(item => <Node/>)`) → wrap in a fragment.\n if (Array.isArray(v)) {\n const frag = document.createDocumentFragment()\n const nodes: Node[] = []\n for (const item of v) {\n if (item == null) continue\n if (typeof (item as Node).nodeType === 'number') {\n frag.appendChild(item as Node)\n nodes.push(item as Node)\n } else {\n const tn = document.createTextNode(String(item))\n frag.appendChild(tn)\n nodes.push(tn)\n }\n }\n // Tear down previous array.\n if (liveChildren) {\n for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n)\n liveChildren = null\n }\n const parent = live.parentNode\n if (parent) parent.insertBefore(frag, live)\n liveChildren = nodes\n return\n }\n // Scalar value arriving after an array — clear the array first.\n if (liveChildren) {\n for (const n of liveChildren) if (n.parentNode) n.parentNode.removeChild(n)\n liveChildren = null\n }\n if (v && typeof (v as Node).nodeType === 'number') {\n if (v === live) return\n const p = live.parentNode\n if (p) p.replaceChild(v as Node, live)\n live = v as Node\n prev = v\n return\n }\n if (live.nodeType !== 3 && live.nodeType !== 8 && live !== node) {\n const text = document.createTextNode('')\n if (live.parentNode) live.parentNode.replaceChild(text, live)\n live = text\n prev = undefined\n }\n prev = patch(live, 'text', prev, v)\n })\n}\n"],"mappings":";;;AAIA,SAAgB,kBACd,MACA,GACA,MACA,cACM;CACN,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC;;AAGJ,SAAgB,aACd,MACA,GACA,MACA,cACM;CACN,IAAI,OAAgB,KAAA;CACpB,IAAI,OAAa;CAGjB,IAAI,eAA8B;AAClC,MAAK,GAAG,MAAM,eAAe,MAAM;AAEjC,MAAI,MAAM,QAAQ,EAAE,EAAE;GACpB,MAAM,OAAO,SAAS,wBAAwB;GAC9C,MAAM,QAAgB,EAAE;AACxB,QAAK,MAAM,QAAQ,GAAG;AACpB,QAAI,QAAQ,KAAM;AAClB,QAAI,OAAQ,KAAc,aAAa,UAAU;AAC/C,UAAK,YAAY,KAAa;AAC9B,WAAM,KAAK,KAAa;WACnB;KACL,MAAM,KAAK,SAAS,eAAe,OAAO,KAAK,CAAC;AAChD,UAAK,YAAY,GAAG;AACpB,WAAM,KAAK,GAAG;;;AAIlB,OAAI,cAAc;AAChB,SAAK,MAAM,KAAK,aAAc,KAAI,EAAE,WAAY,GAAE,WAAW,YAAY,EAAE;AAC3E,mBAAe;;GAEjB,MAAM,SAAS,KAAK;AACpB,OAAI,OAAQ,QAAO,aAAa,MAAM,KAAK;AAC3C,kBAAe;AACf;;AAGF,MAAI,cAAc;AAChB,QAAK,MAAM,KAAK,aAAc,KAAI,EAAE,WAAY,GAAE,WAAW,YAAY,EAAE;AAC3E,kBAAe;;AAEjB,MAAI,KAAK,OAAQ,EAAW,aAAa,UAAU;AACjD,OAAI,MAAM,KAAM;GAChB,MAAM,IAAI,KAAK;AACf,OAAI,EAAG,GAAE,aAAa,GAAW,KAAK;AACtC,UAAO;AACP,UAAO;AACP;;AAEF,MAAI,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,SAAS,MAAM;GAC/D,MAAM,OAAO,SAAS,eAAe,GAAG;AACxC,OAAI,KAAK,WAAY,MAAK,WAAW,aAAa,MAAM,KAAK;AAC7D,UAAO;AACP,UAAO,KAAA;;AAET,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC"}
|
package/dist/select.d.mts
CHANGED
|
@@ -9,7 +9,7 @@ declare class Select extends ZagComponent {
|
|
|
9
9
|
valueAsString: string;
|
|
10
10
|
createMachine(_props: any): any;
|
|
11
11
|
getMachineProps(props: any): {
|
|
12
|
-
id:
|
|
12
|
+
id: string;
|
|
13
13
|
collection: any;
|
|
14
14
|
value: any;
|
|
15
15
|
defaultValue: any;
|
|
@@ -48,7 +48,7 @@ declare class Select extends ZagComponent {
|
|
|
48
48
|
'[data-part="item-indicator"]': (api: any, el: any) => any;
|
|
49
49
|
};
|
|
50
50
|
syncState(api: any): void;
|
|
51
|
-
template(props: any):
|
|
51
|
+
template(props: any): any;
|
|
52
52
|
}
|
|
53
53
|
//#endregion
|
|
54
54
|
export { Select as default };
|
package/dist/select.mjs
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import { t as ZagComponent } from "./zag-component.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { t as NOOP_DISPOSER } from "./disposer.mjs";
|
|
3
|
+
import { o as GEA_CREATE_TEMPLATE, u as GEA_PROXY_RAW } from "./bind.mjs";
|
|
4
|
+
import { n as _DIRTY_PROPS } from "./dirty-symbols.mjs";
|
|
5
|
+
import { n as reactiveTextValue } from "./reactive-text.mjs";
|
|
6
|
+
import { t as reactiveClass } from "./reactive-class.mjs";
|
|
7
|
+
import { t as conditionalTruthy } from "./conditional-truthy.mjs";
|
|
8
|
+
import { n as _rescue, t as keyedList } from "./keyed-list.mjs";
|
|
9
|
+
import { t as GEA_DOM_ITEM } from "./keyed-list-symbols.mjs";
|
|
3
10
|
import { normalizeProps } from "@zag-js/vanilla";
|
|
4
11
|
import * as select from "@zag-js/select";
|
|
5
12
|
//#region src/components/select.tsx
|
|
6
|
-
|
|
13
|
+
let _tpl0_root = null;
|
|
14
|
+
function _tpl0_create() {
|
|
15
|
+
const t = document.createElement("template");
|
|
16
|
+
t.innerHTML = "<div data-part=root><!--1--><div data-part=control class=select-control><button data-part=trigger class=\"select-trigger flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"><span data-part=value-text class=select-value-text>0</span><span data-part=indicator class=select-indicator>▼</span></button></div><select data-part=hidden-select class=select-hidden-select></select><div data-part=positioner class=select-positioner><div data-part=content class=\"select-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"><div data-part=list><!--3-->";
|
|
17
|
+
return t.content.firstChild;
|
|
18
|
+
}
|
|
19
|
+
let _tpl1_root = null;
|
|
20
|
+
function _tpl1_create() {
|
|
21
|
+
const t = document.createElement("template");
|
|
22
|
+
t.innerHTML = "<label data-part=label class=\"select-label text-sm font-medium mb-1 block\">0";
|
|
23
|
+
return t.content.firstChild;
|
|
24
|
+
}
|
|
25
|
+
let _tpl2_root = null;
|
|
26
|
+
function _tpl2_create() {
|
|
27
|
+
const t = document.createElement("template");
|
|
28
|
+
t.innerHTML = "<div data-part=item class=\"select-item relative flex cursor-pointer select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"><span data-part=item-text>0</span><span data-part=item-indicator class=\"select-item-indicator ml-auto\">✓";
|
|
29
|
+
return t.content.firstChild;
|
|
30
|
+
}
|
|
31
|
+
const __rq_L0 = /* @__PURE__ */ new Map();
|
|
7
32
|
var Select = class extends ZagComponent {
|
|
8
|
-
static {
|
|
9
|
-
this.__geaTagName = "gea-select";
|
|
10
|
-
}
|
|
11
|
-
#__rowEls_b2;
|
|
12
|
-
#__dc_b2;
|
|
13
|
-
constructor(...args) {
|
|
14
|
-
super(...args);
|
|
15
|
-
this.props;
|
|
16
|
-
this[geaCondValueSymbol(0)] = !!this.props.label;
|
|
17
|
-
this[GEA_REGISTER_COND](0, "c0", () => {
|
|
18
|
-
this.props;
|
|
19
|
-
return this.props.label;
|
|
20
|
-
}, () => {
|
|
21
|
-
this.props;
|
|
22
|
-
return `<label data-part="label" class="select-label text-sm font-medium mb-1 block">${geaEscapeHtml(String(this.props.label))}</label>`;
|
|
23
|
-
}, null);
|
|
24
|
-
}
|
|
25
33
|
createMachine(_props) {
|
|
26
34
|
return select.machine;
|
|
27
35
|
}
|
|
@@ -46,7 +54,7 @@ var Select = class extends ZagComponent {
|
|
|
46
54
|
required: props.required,
|
|
47
55
|
name: props.name,
|
|
48
56
|
form: props.form,
|
|
49
|
-
closeOnSelect: props.closeOnSelect ??
|
|
57
|
+
closeOnSelect: props.closeOnSelect ?? !props.multiple,
|
|
50
58
|
positioning: props.positioning,
|
|
51
59
|
loopFocus: props.loopFocus ?? false,
|
|
52
60
|
onValueChange: (details) => {
|
|
@@ -107,173 +115,85 @@ var Select = class extends ZagComponent {
|
|
|
107
115
|
this.value = api.value;
|
|
108
116
|
this.valueAsString = api.valueAsString;
|
|
109
117
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
var __fw = document.createElement("template");
|
|
135
|
-
__fw.innerHTML = this.render__unresolved_0Item(item);
|
|
136
|
-
var el = __fw.content.firstElementChild;
|
|
137
|
-
}
|
|
138
|
-
el.__ref_0 = el.firstElementChild;
|
|
139
|
-
el.__ref_1 = el.firstElementChild.nextElementSibling;
|
|
140
|
-
var __av = item.value;
|
|
141
|
-
if (__av == null || __av === false) el.removeAttribute("data-value");
|
|
142
|
-
else {
|
|
143
|
-
const __newAttr = String(__av);
|
|
144
|
-
if (el.getAttribute("data-value") !== __newAttr) el.setAttribute("data-value", __newAttr);
|
|
145
|
-
}
|
|
146
|
-
var __av = item.label;
|
|
147
|
-
if (__av == null || __av === false) el.removeAttribute("data-label");
|
|
148
|
-
else {
|
|
149
|
-
const __newAttr = String(__av);
|
|
150
|
-
if (el.getAttribute("data-label") !== __newAttr) el.setAttribute("data-label", __newAttr);
|
|
151
|
-
}
|
|
152
|
-
var __av = item.value;
|
|
153
|
-
if (__av == null || __av === false) el.__ref_0.removeAttribute("data-value");
|
|
154
|
-
else {
|
|
155
|
-
const __newAttr = String(__av);
|
|
156
|
-
if (el.__ref_0.getAttribute("data-value") !== __newAttr) el.__ref_0.setAttribute("data-value", __newAttr);
|
|
157
|
-
}
|
|
158
|
-
var __av = item.label;
|
|
159
|
-
if (__av == null || __av === false) el.__ref_0.removeAttribute("data-label");
|
|
160
|
-
else {
|
|
161
|
-
const __newAttr = String(__av);
|
|
162
|
-
if (el.__ref_0.getAttribute("data-label") !== __newAttr) el.__ref_0.setAttribute("data-label", __newAttr);
|
|
163
|
-
}
|
|
164
|
-
if (el.__ref_0.textContent !== `
|
|
165
|
-
${item.label}
|
|
166
|
-
`) el.__ref_0.textContent = `
|
|
167
|
-
${item.label}
|
|
168
|
-
`;
|
|
169
|
-
var __av = item.value;
|
|
170
|
-
if (__av == null || __av === false) el.__ref_1.removeAttribute("data-value");
|
|
171
|
-
else {
|
|
172
|
-
const __newAttr = String(__av);
|
|
173
|
-
if (el.__ref_1.getAttribute("data-value") !== __newAttr) el.__ref_1.setAttribute("data-value", __newAttr);
|
|
174
|
-
}
|
|
175
|
-
var __av = item.label;
|
|
176
|
-
if (__av == null || __av === false) el.__ref_1.removeAttribute("data-label");
|
|
177
|
-
else {
|
|
178
|
-
const __newAttr = String(__av);
|
|
179
|
-
if (el.__ref_1.getAttribute("data-label") !== __newAttr) el.__ref_1.setAttribute("data-label", __newAttr);
|
|
180
|
-
}
|
|
181
|
-
el[GEA_DOM_KEY] = String(item?.value ?? item);
|
|
182
|
-
el[GEA_DOM_ITEM] = item;
|
|
183
|
-
return el;
|
|
184
|
-
}
|
|
185
|
-
patch__unresolved_0Item(row, item, __prevItem) {
|
|
186
|
-
if (!row) return;
|
|
187
|
-
if (!row.__ref_0) row.__ref_0 = row.firstElementChild;
|
|
188
|
-
if (!row.__ref_1) row.__ref_1 = row.firstElementChild.nextElementSibling;
|
|
189
|
-
var __av = item.value;
|
|
190
|
-
if (__av == null || __av === false) row.removeAttribute("data-value");
|
|
191
|
-
else {
|
|
192
|
-
const __newAttr = String(__av);
|
|
193
|
-
if (row.getAttribute("data-value") !== __newAttr) row.setAttribute("data-value", __newAttr);
|
|
194
|
-
}
|
|
195
|
-
var __av = item.label;
|
|
196
|
-
if (__av == null || __av === false) row.removeAttribute("data-label");
|
|
197
|
-
else {
|
|
198
|
-
const __newAttr = String(__av);
|
|
199
|
-
if (row.getAttribute("data-label") !== __newAttr) row.setAttribute("data-label", __newAttr);
|
|
200
|
-
}
|
|
201
|
-
var __av = item.value;
|
|
202
|
-
if (__av == null || __av === false) row.__ref_0.removeAttribute("data-value");
|
|
203
|
-
else {
|
|
204
|
-
const __newAttr = String(__av);
|
|
205
|
-
if (row.__ref_0.getAttribute("data-value") !== __newAttr) row.__ref_0.setAttribute("data-value", __newAttr);
|
|
206
|
-
}
|
|
207
|
-
var __av = item.label;
|
|
208
|
-
if (__av == null || __av === false) row.__ref_0.removeAttribute("data-label");
|
|
209
|
-
else {
|
|
210
|
-
const __newAttr = String(__av);
|
|
211
|
-
if (row.__ref_0.getAttribute("data-label") !== __newAttr) row.__ref_0.setAttribute("data-label", __newAttr);
|
|
212
|
-
}
|
|
213
|
-
if (row.__ref_0.textContent !== `
|
|
214
|
-
${item.label}
|
|
215
|
-
`) row.__ref_0.textContent = `
|
|
216
|
-
${item.label}
|
|
217
|
-
`;
|
|
218
|
-
var __av = item.value;
|
|
219
|
-
if (__av == null || __av === false) row.__ref_1.removeAttribute("data-value");
|
|
220
|
-
else {
|
|
221
|
-
const __newAttr = String(__av);
|
|
222
|
-
if (row.__ref_1.getAttribute("data-value") !== __newAttr) row.__ref_1.setAttribute("data-value", __newAttr);
|
|
223
|
-
}
|
|
224
|
-
var __av = item.label;
|
|
225
|
-
if (__av == null || __av === false) row.__ref_1.removeAttribute("data-label");
|
|
226
|
-
else {
|
|
227
|
-
const __newAttr = String(__av);
|
|
228
|
-
if (row.__ref_1.getAttribute("data-label") !== __newAttr) row.__ref_1.setAttribute("data-label", __newAttr);
|
|
229
|
-
}
|
|
230
|
-
row[GEA_DOM_KEY] = String(item?.value ?? item);
|
|
231
|
-
(this.#__rowEls_b2 || (this.#__rowEls_b2 = {}))[String(item?.value ?? item)] = row;
|
|
232
|
-
row[GEA_DOM_ITEM] = item;
|
|
233
|
-
}
|
|
234
|
-
[GEA_ON_PROP_CHANGE](key, value) {
|
|
235
|
-
const __id = this.id;
|
|
236
|
-
if (key === "class") {
|
|
237
|
-
const __el = this[GEA_ELEMENT];
|
|
238
|
-
this.props;
|
|
239
|
-
const __boundValue = value || "";
|
|
240
|
-
if (__el) {
|
|
241
|
-
const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
|
|
242
|
-
if (__el.className !== __newClass) __el.className = __newClass;
|
|
118
|
+
[GEA_CREATE_TEMPLATE](d) {
|
|
119
|
+
this.props.items;
|
|
120
|
+
const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
|
|
121
|
+
const el0 = root;
|
|
122
|
+
const anchor1 = root.firstChild;
|
|
123
|
+
const marker2 = root.childNodes[1].firstChild.firstChild.firstChild;
|
|
124
|
+
const anchor3 = root.childNodes[3].firstChild.firstChild.firstChild;
|
|
125
|
+
reactiveClass(el0, d, this, () => this.props.class || "");
|
|
126
|
+
conditionalTruthy(anchor1.parentNode, anchor1, d, this, () => this.props.label, (d) => {
|
|
127
|
+
const root = (_tpl1_root || (_tpl1_root = _tpl1_create())).cloneNode(true);
|
|
128
|
+
const t0 = root.firstChild;
|
|
129
|
+
reactiveTextValue(t0, d, this, () => this.props.label);
|
|
130
|
+
return root;
|
|
131
|
+
});
|
|
132
|
+
reactiveTextValue(marker2, d, this, () => (this.props.placeholder, this.props, this.valueAsString || this.props.placeholder || "Select..."));
|
|
133
|
+
const __ki_L0 = (item, idx, d) => {
|
|
134
|
+
const root = (_tpl2_root || (_tpl2_root = _tpl2_create())).cloneNode(true);
|
|
135
|
+
root.setAttribute("data-value", String(item.value));
|
|
136
|
+
root.setAttribute("data-label", String(item.label));
|
|
137
|
+
root.firstChild.setAttribute("data-value", String(item.value));
|
|
138
|
+
root.firstChild.setAttribute("data-label", String(item.label));
|
|
139
|
+
{
|
|
140
|
+
const __n = root.firstChild.firstChild;
|
|
141
|
+
__n.nodeValue = `${item.label ?? ""}`;
|
|
243
142
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
143
|
+
root.childNodes[1].setAttribute("data-value", String(item.value));
|
|
144
|
+
root.childNodes[1].setAttribute("data-label", String(item.label));
|
|
145
|
+
root[GEA_DOM_ITEM] = item;
|
|
146
|
+
return root;
|
|
147
|
+
};
|
|
148
|
+
const __kp_L0 = (el, item) => {
|
|
149
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("value")) el.setAttribute("data-value", String(item.value));
|
|
150
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("label")) el.setAttribute("data-label", String(item.label));
|
|
151
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("value")) (el.__r0 || (el.__r0 = el.firstChild)).setAttribute("data-value", String(item.value));
|
|
152
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("label")) (el.__r0 || (el.__r0 = el.firstChild)).setAttribute("data-label", String(item.label));
|
|
153
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("label")) {
|
|
154
|
+
const __n = el.__r1 || (el.__r1 = el.firstChild.firstChild);
|
|
155
|
+
__n.nodeValue = `${item.label ?? ""}`;
|
|
156
|
+
}
|
|
157
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("value")) (el.__r2 || (el.__r2 = el.childNodes[1])).setAttribute("data-value", String(item.value));
|
|
158
|
+
if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("label")) (el.__r2 || (el.__r2 = el.childNodes[1])).setAttribute("data-label", String(item.label));
|
|
159
|
+
};
|
|
160
|
+
keyedList({
|
|
161
|
+
container: anchor3.parentNode,
|
|
162
|
+
anchor: anchor3,
|
|
163
|
+
disposer: d,
|
|
164
|
+
root: this,
|
|
165
|
+
pending: __rq_L0,
|
|
166
|
+
path: () => this.props.items || [],
|
|
167
|
+
key: (item, idx) => item.value,
|
|
168
|
+
createEntry: (item, idx) => {
|
|
169
|
+
const __k = item.value;
|
|
170
|
+
const __r = _rescue(__rq_L0, String(__k), item);
|
|
171
|
+
if (__r) {
|
|
172
|
+
const __raw = item && item[GEA_PROXY_RAW] || item;
|
|
173
|
+
if (__r.item !== __raw) {
|
|
174
|
+
const __prev = __r.item;
|
|
175
|
+
__r.item = __raw;
|
|
176
|
+
__kp_L0(__r.element, item, __prev, idx);
|
|
177
|
+
}
|
|
178
|
+
return __r;
|
|
179
|
+
}
|
|
180
|
+
const __rd = NOOP_DISPOSER;
|
|
181
|
+
const __obs = null;
|
|
182
|
+
const __el = __ki_L0(item, idx, __rd);
|
|
183
|
+
return {
|
|
184
|
+
key: __k,
|
|
185
|
+
item: item && item[GEA_PROXY_RAW] || item,
|
|
186
|
+
element: __el,
|
|
187
|
+
disposer: __rd,
|
|
188
|
+
obs: __obs
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
patchEntry: (e, newItem, newIdx) => {
|
|
192
|
+
e.item = newItem && newItem[GEA_PROXY_RAW] || newItem;
|
|
193
|
+
__kp_L0(e.element, newItem);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
return root;
|
|
277
197
|
}
|
|
278
198
|
};
|
|
279
199
|
//#endregion
|
package/dist/select.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.mjs","names":["__v","v","valueOf","Component","geaCondValueSymbol","GEA_REGISTER_COND","geaEscapeHtml","GEA_DOM_KEY","GEA_DOM_ITEM","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_COND","GEA_SYNC_MAP","GEA_RENDERED","GEA_REGISTER_MAP","GEA_SETUP_LOCAL_STATE_OBSERVERS","GEA_STORE_ROOT","GEA_OBSERVE","select","normalizeProps","ZagComponent","Select","__geaTagName","__rowEls_b2","__dc_b2","constructor","args","props","label","String","open","value","valueAsString","createMachine","_props","machine","getMachineProps","items","col","collection","itemToValue","item","itemToString","id","defaultValue","defaultOpen","multiple","disabled","invalid","readOnly","required","name","form","closeOnSelect","positioning","loopFocus","onValueChange","details","ValueChangeDetails","map","i","join","onOpenChange","OpenChangeDetails","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","HTMLElement","dataset","getItemProps","[data-part=\"item-text\"]","getItemTextProps","[data-part=\"item-indicator\"]","getItemIndicatorProps","syncState","template","__id","_register","class","trim","placeholder","render__unresolved_0Item","create__unresolved_0Item","__c","____unresolved_0_container","__geaTpl","__tw","document","createElement","innerHTML","content","firstElementChild","removeAttribute","__err","console","error","cloneNode","__fw","__ref_0","__ref_1","nextElementSibling","__av","__newAttr","getAttribute","setAttribute","textContent","patch__unresolved_0Item","row","__prevItem","key","__el","__boundValue","__newClass","replace","className","__e0","__gid","__resetEls","__observe_local_valueAsString","change","__observe_local_props","createdHooks","__item"],"sources":["../src/components/select.tsx"],"sourcesContent":["import * as select from '@zag-js/select'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Select extends ZagComponent {\n declare open: boolean\n declare value: string[]\n declare valueAsString: string\n\n createMachine(_props: any): any {\n return select.machine\n }\n\n getMachineProps(props: any) {\n const items = props.items || []\n const col =\n props.collection ||\n select.collection({\n items,\n itemToValue: (item: any) => item.value,\n itemToString: (item: any) => item.label || item.value,\n })\n\n return {\n id: this.id,\n collection: col,\n value: props.value,\n defaultValue: props.defaultValue,\n open: props.open,\n defaultOpen: props.defaultOpen,\n multiple: props.multiple,\n disabled: props.disabled,\n invalid: props.invalid,\n readOnly: props.readOnly,\n required: props.required,\n name: props.name,\n form: props.form,\n closeOnSelect: props.closeOnSelect ?? true,\n positioning: props.positioning,\n loopFocus: props.loopFocus ?? false,\n onValueChange: (details: select.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsString = details.items.map((i: any) => i.label || i.value).join(', ')\n props.onValueChange?.(details)\n },\n onOpenChange: (details: select.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return select.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"indicator\"]': 'getIndicatorProps',\n '[data-part=\"clear-trigger\"]': 'getClearTriggerProps',\n '[data-part=\"value-text\"]': 'getValueTextProps',\n '[data-part=\"hidden-select\"]': 'getHiddenSelectProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"list\"]': 'getListProps',\n '[data-part=\"item\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemProps({ item: { value, label } })\n },\n '[data-part=\"item-text\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemTextProps({ item: { value, label } })\n },\n '[data-part=\"item-indicator\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemIndicatorProps({ item: { value, label } })\n },\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n this.value = api.value\n this.valueAsString = api.valueAsString\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"select-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"select-control\">\n <button\n data-part=\"trigger\"\n class=\"select-trigger flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <span data-part=\"value-text\" class=\"select-value-text\">\n {this.valueAsString || props.placeholder || 'Select...'}\n </span>\n <span data-part=\"indicator\" class=\"select-indicator\">\n ▼\n </span>\n </button>\n </div>\n <select data-part=\"hidden-select\" class=\"select-hidden-select\"></select>\n <div data-part=\"positioner\" class=\"select-positioner\">\n <div\n data-part=\"content\"\n class=\"select-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n <div data-part=\"list\">\n {items.map((item: any) => (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n data-label={item.label}\n class=\"select-item relative flex cursor-pointer select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span data-part=\"item-text\" data-value={item.value} data-label={item.label}>\n {item.label}\n </span>\n <span\n data-part=\"item-indicator\"\n data-value={item.value}\n data-label={item.label}\n class=\"select-item-indicator ml-auto\"\n >\n ✓\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveAttr","GEA_DIRTY_PROPS","GEA_DOM_ITEM","GEA_PROXY_RAW","_rescue","NOOP_DISPOSER","keyedList","select","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","Select","open","value","valueAsString","createMachine","_props","machine","getMachineProps","props","items","col","collection","itemToValue","item","itemToString","label","id","defaultValue","defaultOpen","multiple","disabled","invalid","readOnly","required","name","form","closeOnSelect","positioning","loopFocus","onValueChange","details","ValueChangeDetails","map","i","join","onOpenChange","OpenChangeDetails","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","HTMLElement","dataset","getItemProps","[data-part=\"item-text\"]","getItemTextProps","[data-part=\"item-indicator\"]","getItemIndicatorProps","syncState","d","root","cloneNode","el0","anchor1","marker2","childNodes","anchor3","class","parentNode","marker0","t0","t2","placeholder","__ki_L0","idx","setAttribute","String","__n","nodeValue","__kp_L0","has","__r0","__r1","__r2","container","anchor","disposer","pending","path","key","createEntry","__k","__r","__raw","__prev","element","__rd","__obs","__li","__el","obs","patchEntry","e","newItem","newIdx"],"sources":["../src/components/select.tsx"],"sourcesContent":["import * as select from '@zag-js/select'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Select extends ZagComponent {\n declare open: boolean\n declare value: string[]\n declare valueAsString: string\n\n createMachine(_props: any): any {\n return select.machine\n }\n\n getMachineProps(props: any) {\n const items = props.items || []\n const col =\n props.collection ||\n select.collection({\n items,\n itemToValue: (item: any) => item.value,\n itemToString: (item: any) => item.label || item.value,\n })\n\n return {\n id: this.id,\n collection: col,\n value: props.value,\n defaultValue: props.defaultValue,\n open: props.open,\n defaultOpen: props.defaultOpen,\n multiple: props.multiple,\n disabled: props.disabled,\n invalid: props.invalid,\n readOnly: props.readOnly,\n required: props.required,\n name: props.name,\n form: props.form,\n closeOnSelect: props.closeOnSelect ?? !props.multiple,\n positioning: props.positioning,\n loopFocus: props.loopFocus ?? false,\n onValueChange: (details: select.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsString = details.items.map((i: any) => i.label || i.value).join(', ')\n props.onValueChange?.(details)\n },\n onOpenChange: (details: select.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return select.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"control\"]': 'getControlProps',\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"indicator\"]': 'getIndicatorProps',\n '[data-part=\"clear-trigger\"]': 'getClearTriggerProps',\n '[data-part=\"value-text\"]': 'getValueTextProps',\n '[data-part=\"hidden-select\"]': 'getHiddenSelectProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"list\"]': 'getListProps',\n '[data-part=\"item\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemProps({ item: { value, label } })\n },\n '[data-part=\"item-text\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemTextProps({ item: { value, label } })\n },\n '[data-part=\"item-indicator\"]': (api, el) => {\n const value = (el as HTMLElement).dataset.value\n const label = (el as HTMLElement).dataset.label || value\n return api.getItemIndicatorProps({ item: { value, label } })\n },\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n this.value = api.value\n this.valueAsString = api.valueAsString\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"select-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"select-control\">\n <button\n data-part=\"trigger\"\n class=\"select-trigger flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs placeholder:text-muted-foreground focus:outline-hidden focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <span data-part=\"value-text\" class=\"select-value-text\">\n {this.valueAsString || props.placeholder || 'Select...'}\n </span>\n <span data-part=\"indicator\" class=\"select-indicator\">\n ▼\n </span>\n </button>\n </div>\n <select data-part=\"hidden-select\" class=\"select-hidden-select\"></select>\n <div data-part=\"positioner\" class=\"select-positioner\">\n <div\n data-part=\"content\"\n class=\"select-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n <div data-part=\"list\">\n {items.map((item: any) => (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n data-label={item.label}\n class=\"select-item relative flex cursor-pointer select-none items-center rounded-xs px-2 py-1.5 text-sm outline-hidden data-[highlighted]:bg-accent data-[highlighted]:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\"\n >\n <span data-part=\"item-text\" data-value={item.value} data-label={item.label}>\n {item.label}\n </span>\n <span\n data-part=\"item-indicator\"\n data-value={item.value}\n data-label={item.label}\n class=\"select-item-indicator ml-auto\"\n >\n ✓\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
|