@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.
Files changed (170) hide show
  1. package/dist/accordion.d.mts +2 -2
  2. package/dist/accordion.mjs +92 -122
  3. package/dist/accordion.mjs.map +1 -1
  4. package/dist/alert.d.mts +3 -3
  5. package/dist/alert.mjs +45 -107
  6. package/dist/alert.mjs.map +1 -1
  7. package/dist/avatar.d.mts +2 -2
  8. package/dist/avatar.mjs +38 -62
  9. package/dist/avatar.mjs.map +1 -1
  10. package/dist/badge.d.mts +1 -1
  11. package/dist/badge.mjs +18 -43
  12. package/dist/badge.mjs.map +1 -1
  13. package/dist/bind.mjs +169 -0
  14. package/dist/bind.mjs.map +1 -0
  15. package/dist/button.d.mts +3 -2
  16. package/dist/button.mjs +30 -85
  17. package/dist/button.mjs.map +1 -1
  18. package/dist/card.d.mts +6 -6
  19. package/dist/card.mjs +82 -194
  20. package/dist/card.mjs.map +1 -1
  21. package/dist/checkbox.d.mts +2 -2
  22. package/dist/checkbox.mjs +30 -31
  23. package/dist/checkbox.mjs.map +1 -1
  24. package/dist/clipboard.d.mts +2 -2
  25. package/dist/clipboard.mjs +49 -55
  26. package/dist/clipboard.mjs.map +1 -1
  27. package/dist/collapsible.d.mts +2 -2
  28. package/dist/collapsible.mjs +18 -45
  29. package/dist/collapsible.mjs.map +1 -1
  30. package/dist/combobox.d.mts +2 -2
  31. package/dist/combobox.mjs +390 -261
  32. package/dist/combobox.mjs.map +1 -1
  33. package/dist/compiled-component.mjs +121 -0
  34. package/dist/compiled-component.mjs.map +1 -0
  35. package/dist/compiled-reactive-component.mjs +435 -0
  36. package/dist/compiled-reactive-component.mjs.map +1 -0
  37. package/dist/component-id.mjs +21 -0
  38. package/dist/component-id.mjs.map +1 -0
  39. package/dist/conditional-truthy.mjs +48 -0
  40. package/dist/conditional-truthy.mjs.map +1 -0
  41. package/dist/conditional.mjs +54 -0
  42. package/dist/conditional.mjs.map +1 -0
  43. package/dist/delegate-event.mjs +53 -0
  44. package/dist/delegate-event.mjs.map +1 -0
  45. package/dist/dialog.d.mts +4 -3
  46. package/dist/dialog.mjs +57 -70
  47. package/dist/dialog.mjs.map +1 -1
  48. package/dist/dirty-symbols.mjs +7 -0
  49. package/dist/dirty-symbols.mjs.map +1 -0
  50. package/dist/disposer.mjs +65 -0
  51. package/dist/disposer.mjs.map +1 -0
  52. package/dist/dnd-manager.d.mts +9 -1
  53. package/dist/dnd-manager.mjs +67 -29
  54. package/dist/dnd-manager.mjs.map +1 -1
  55. package/dist/drag-drop-context.d.mts +1 -1
  56. package/dist/drag-drop-context.mjs +17 -33
  57. package/dist/drag-drop-context.mjs.map +1 -1
  58. package/dist/draggable.d.mts +1 -1
  59. package/dist/draggable.mjs +2 -91
  60. package/dist/draggable2.mjs +424 -0
  61. package/dist/draggable2.mjs.map +1 -0
  62. package/dist/droppable.d.mts +1 -1
  63. package/dist/droppable.mjs +20 -44
  64. package/dist/droppable.mjs.map +1 -1
  65. package/dist/file-upload.d.mts +2 -2
  66. package/dist/file-upload.mjs +405 -122
  67. package/dist/file-upload.mjs.map +1 -1
  68. package/dist/hover-card.d.mts +2 -2
  69. package/dist/hover-card.mjs +24 -59
  70. package/dist/hover-card.mjs.map +1 -1
  71. package/dist/index.mjs +3 -3
  72. package/dist/input.d.mts +1 -1
  73. package/dist/input.mjs +1 -93
  74. package/dist/input2.mjs +56 -0
  75. package/dist/input2.mjs.map +1 -0
  76. package/dist/internal-symbols.mjs +9 -0
  77. package/dist/internal-symbols.mjs.map +1 -0
  78. package/dist/item-obs.mjs +31 -0
  79. package/dist/item-obs.mjs.map +1 -0
  80. package/dist/keyed-list-symbols.mjs +6 -0
  81. package/dist/keyed-list-symbols.mjs.map +1 -0
  82. package/dist/keyed-list.mjs +538 -0
  83. package/dist/keyed-list.mjs.map +1 -0
  84. package/dist/label.d.mts +1 -1
  85. package/dist/label.mjs +20 -45
  86. package/dist/label.mjs.map +1 -1
  87. package/dist/menu.d.mts +2 -2
  88. package/dist/menu.mjs +87 -41
  89. package/dist/menu.mjs.map +1 -1
  90. package/dist/number-input.d.mts +2 -2
  91. package/dist/number-input.mjs +28 -32
  92. package/dist/number-input.mjs.map +1 -1
  93. package/dist/pagination.d.mts +2 -2
  94. package/dist/pagination.mjs +12 -35
  95. package/dist/pagination.mjs.map +1 -1
  96. package/dist/patch.mjs +21 -0
  97. package/dist/patch.mjs.map +1 -0
  98. package/dist/pin-input.d.mts +2 -2
  99. package/dist/pin-input.mjs +88 -87
  100. package/dist/pin-input.mjs.map +1 -1
  101. package/dist/popover.d.mts +2 -2
  102. package/dist/popover.mjs +45 -67
  103. package/dist/popover.mjs.map +1 -1
  104. package/dist/progress.d.mts +2 -2
  105. package/dist/progress.mjs +37 -43
  106. package/dist/progress.mjs.map +1 -1
  107. package/dist/radio-group.d.mts +2 -2
  108. package/dist/radio-group.mjs +99 -140
  109. package/dist/radio-group.mjs.map +1 -1
  110. package/dist/rating-group.d.mts +2 -2
  111. package/dist/rating-group.mjs +91 -99
  112. package/dist/rating-group.mjs.map +1 -1
  113. package/dist/reactive-attr.mjs +13 -0
  114. package/dist/reactive-attr.mjs.map +1 -0
  115. package/dist/reactive-bool.mjs +13 -0
  116. package/dist/reactive-bool.mjs.map +1 -0
  117. package/dist/reactive-class-name.mjs +15 -0
  118. package/dist/reactive-class-name.mjs.map +1 -0
  119. package/dist/reactive-class.mjs +54 -0
  120. package/dist/reactive-class.mjs.map +1 -0
  121. package/dist/reactive-style.mjs +24 -0
  122. package/dist/reactive-style.mjs.map +1 -0
  123. package/dist/reactive-text.mjs +62 -0
  124. package/dist/reactive-text.mjs.map +1 -0
  125. package/dist/select.d.mts +2 -2
  126. package/dist/select.mjs +106 -186
  127. package/dist/select.mjs.map +1 -1
  128. package/dist/separator.d.mts +1 -1
  129. package/dist/separator.mjs +19 -45
  130. package/dist/separator.mjs.map +1 -1
  131. package/dist/skeleton.d.mts +1 -1
  132. package/dist/skeleton.mjs +11 -35
  133. package/dist/skeleton.mjs.map +1 -1
  134. package/dist/slider.d.mts +2 -2
  135. package/dist/slider.mjs +31 -32
  136. package/dist/slider.mjs.map +1 -1
  137. package/dist/switch.d.mts +2 -2
  138. package/dist/switch.mjs +30 -31
  139. package/dist/switch.mjs.map +1 -1
  140. package/dist/tabs.d.mts +7 -2
  141. package/dist/tabs.mjs +180 -147
  142. package/dist/tabs.mjs.map +1 -1
  143. package/dist/tags-input.d.mts +2 -2
  144. package/dist/tags-input.mjs +102 -188
  145. package/dist/tags-input.mjs.map +1 -1
  146. package/dist/textarea.d.mts +1 -1
  147. package/dist/textarea.mjs +32 -75
  148. package/dist/textarea.mjs.map +1 -1
  149. package/dist/theme.css +4 -5
  150. package/dist/toast.d.mts +1 -1
  151. package/dist/toast.mjs +14 -34
  152. package/dist/toast.mjs.map +1 -1
  153. package/dist/toggle-group.d.mts +2 -2
  154. package/dist/toggle-group.mjs +78 -85
  155. package/dist/toggle-group.mjs.map +1 -1
  156. package/dist/tooltip.d.mts +2 -2
  157. package/dist/tooltip.mjs +23 -43
  158. package/dist/tooltip.mjs.map +1 -1
  159. package/dist/tree-view.d.mts +2 -2
  160. package/dist/tree-view.mjs +32 -50
  161. package/dist/tree-view.mjs.map +1 -1
  162. package/dist/types.d.mts +9 -0
  163. package/dist/zag-component.d.mts +26 -3
  164. package/dist/zag-component.mjs +73 -17
  165. package/dist/zag-component.mjs.map +1 -1
  166. package/package.json +4 -3
  167. package/dist/cn.mjs +0 -10
  168. package/dist/cn.mjs.map +0 -1
  169. package/dist/draggable.mjs.map +0 -1
  170. 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: any;
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): string;
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 { Component, GEA_DOM_ITEM, GEA_DOM_KEY, GEA_ELEMENT, GEA_OBSERVE, GEA_ON_PROP_CHANGE, GEA_PATCH_COND, GEA_REGISTER_COND, GEA_REGISTER_MAP, GEA_RENDERED, GEA_SETUP_LOCAL_STATE_OBSERVERS, GEA_STORE_ROOT, GEA_SYNC_MAP, geaCondValueSymbol, geaEscapeHtml } from "@geajs/core";
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
- const __v = (v) => v != null && typeof v === "object" ? v.valueOf() : v;
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 ?? true,
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
- template(props) {
111
- const __id = this.id;
112
- Component._register(ZagComponent, "zag-component");
113
- const items = props.items || [];
114
- return `<div id="${__id}" data-part="root"${(props.class || "") == null || (props.class || "") === false ? "" : ` class="${((props.class || "") != null ? String(props.class || "") : "").trim()}"`}><!--${__id + "-c0"}-->${props.label && `<label data-part="label" class="select-label text-sm font-medium mb-1 block">${geaEscapeHtml(String(props.label))}</label>` || ""}<!--${__id + "-c0-end"}--><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 id="${__id + "-b1"}" data-part="value-text" class="select-value-text">${geaEscapeHtml(String(this.valueAsString || props.placeholder || "Select..."))}</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 id="${__id + "-b2"}" data-part="list">${items.map((item) => `<div data-gid="${item?.value ?? item}" data-part="item"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`}${item.label == null || item.label === false ? "" : ` data-label="${item.label}"`} 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"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`}${item.label == null || item.label === false ? "" : ` data-label="${item.label}"`}>${item.label}</span><span data-part="item-indicator"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`}${item.label == null || item.label === false ? "" : ` data-label="${item.label}"`} class="select-item-indicator ml-auto">✓</span></div>`).join("") + "<!---->"}</div></div></div></div>`;
115
- }
116
- render__unresolved_0Item(item) {
117
- return `<div data-gid="${item?.value ?? item}" data-part="item"${__v(item.value) == null || __v(item.value) === false ? "" : ` data-value="${item.value}"`}${__v(item.label) == null || __v(item.label) === false ? "" : ` data-label="${item.label}"`} 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"${__v(item.value) == null || __v(item.value) === false ? "" : ` data-value="${item.value}"`}${__v(item.label) == null || __v(item.label) === false ? "" : ` data-label="${item.label}"`}>${item.label}</span><span data-part="item-indicator"${__v(item.value) == null || __v(item.value) === false ? "" : ` data-value="${item.value}"`}${__v(item.label) == null || __v(item.label) === false ? "" : ` data-label="${item.label}"`} class="select-item-indicator ml-auto">✓</span></div>`;
118
- }
119
- create__unresolved_0Item(item) {
120
- var __c = this.#__dc_b2 || (this.#__dc_b2 = this.____unresolved_0_container);
121
- if (!__c.__geaTpl) try {
122
- var __tw = document.createElement("template");
123
- __tw.innerHTML = this.render__unresolved_0Item({
124
- value: 0,
125
- label: " "
126
- });
127
- __c.__geaTpl = __tw.content.firstElementChild;
128
- __c.__geaTpl?.removeAttribute("data-gid");
129
- } catch (__err) {
130
- console.error(__err);
131
- }
132
- if (__c.__geaTpl) var el = __c.__geaTpl.cloneNode(true);
133
- else {
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
- if (key === "placeholder") {
246
- const __el = this.__e0 || (this.__e0 = __gid(__id + "-b1"));
247
- this.props;
248
- const __boundValue = this.valueAsString || value || "Select...";
249
- if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
250
- }
251
- if (key === "label") this[GEA_PATCH_COND](0);
252
- if (key === "items") this[GEA_SYNC_MAP](0);
253
- }
254
- __resetEls() {
255
- this.__e0 = null;
256
- }
257
- __observe_local_valueAsString(value, change) {
258
- const __id = this.id;
259
- if (this[GEA_RENDERED]) {
260
- const __el = this.__e0 || (this.__e0 = __gid(__id + "-b1"));
261
- this.props;
262
- const __boundValue = this.valueAsString || value || "Select...";
263
- if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
264
- }
265
- }
266
- __observe_local_props(__v, __c) {
267
- this[GEA_SYNC_MAP](0);
268
- }
269
- createdHooks() {
270
- this[GEA_REGISTER_MAP](0, "____unresolved_0_container", () => __gid(this.id + "-b2"), () => {
271
- return this.props.items || [];
272
- }, (__item) => this.create__unresolved_0Item(__item), "value");
273
- }
274
- [GEA_SETUP_LOCAL_STATE_OBSERVERS]() {
275
- if (!this[GEA_STORE_ROOT]) return;
276
- this[GEA_OBSERVE](this, ["valueAsString"], this.__observe_local_valueAsString);
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
@@ -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 &#x25BC;\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 &#x2713;\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 &#x25BC;\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 &#x2713;\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}