@geajs/ui 0.2.3 → 0.2.9

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 +130 -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 +322 -261
  32. package/dist/combobox.mjs.map +1 -1
  33. package/dist/compiled-component.mjs +119 -0
  34. package/dist/compiled-component.mjs.map +1 -0
  35. package/dist/compiled-reactive-component.mjs +337 -0
  36. package/dist/compiled-reactive-component.mjs.map +1 -0
  37. package/dist/component-id.mjs +10 -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 +46 -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 +321 -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 +337 -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 +68 -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 +487 -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 +53 -0
  120. package/dist/reactive-class.mjs.map +1 -0
  121. package/dist/reactive-style.mjs +21 -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 +25 -3
  164. package/dist/zag-component.mjs +63 -16
  165. package/dist/zag-component.mjs.map +1 -1
  166. package/package.json +5 -5
  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
+ const 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 const 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 const 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,MAAa,oBACX,IACA,GACA,MACA,QACA,iBACS;CACT,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
+ const 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 const reactiveClassName = (\n el: Element,\n d: Disposer,\n root: any,\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,MAAa,qBACX,IACA,GACA,MACA,iBACS;CACT,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,53 @@
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
+ const reactiveClass = (el, d, root, pathOrGetter) => {
15
+ let prev = null;
16
+ bind(d, root, pathOrGetter, (v) => {
17
+ if (v == null || v === false || v === "" || typeof v === "string" && v.indexOf(" ") === -1) {
18
+ const next = v == null || v === false ? "" : v;
19
+ if (typeof prev === "string") {
20
+ if (prev === next) return;
21
+ if (prev) el.classList.remove(prev);
22
+ if (next) el.classList.add(next);
23
+ } else {
24
+ if (prev) for (const c of prev) el.classList.remove(c);
25
+ if (next) el.classList.add(next);
26
+ }
27
+ if (!next && !el.hasAttribute("class")) el.setAttribute("class", "");
28
+ prev = next;
29
+ return;
30
+ }
31
+ const next = /* @__PURE__ */ new Set();
32
+ if (typeof v === "string") {
33
+ for (const t of v.split(/\s+/)) if (t) next.add(t);
34
+ } else if (Array.isArray(v)) {
35
+ for (const t of v) if (t) next.add(String(t));
36
+ } else if (typeof v === "object") {
37
+ for (const k in v) if (v[k]) next.add(k);
38
+ }
39
+ if (typeof prev === "string") {
40
+ if (prev) el.classList.remove(prev);
41
+ } else if (prev) {
42
+ for (const c of prev) if (!next.has(c)) el.classList.remove(c);
43
+ }
44
+ if (typeof prev === "string" || !prev) for (const c of next) el.classList.add(c);
45
+ else for (const c of next) if (!prev.has(c)) el.classList.add(c);
46
+ if (next.size === 0 && !el.hasAttribute("class")) el.setAttribute("class", "");
47
+ prev = next;
48
+ });
49
+ };
50
+ //#endregion
51
+ export { reactiveClass as t };
52
+
53
+ //# 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 const reactiveClass = (\n el: Element,\n d: Disposer,\n root: any,\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 if (v == null || v === false || v === '' || (typeof v === 'string' && v.indexOf(' ') === -1)) {\n const next = v == null || v === false ? '' : (v as string)\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,MAAa,iBACX,IACA,GACA,MACA,iBACS;CACT,IAAI,OAAoC;AACxC,MAAK,GAAG,MAAM,eAAe,MAAM;AAEjC,MAAI,KAAK,QAAQ,MAAM,SAAS,MAAM,MAAO,OAAO,MAAM,YAAY,EAAE,QAAQ,IAAI,KAAK,IAAK;GAC5F,MAAM,OAAO,KAAK,QAAQ,MAAM,QAAQ,KAAM;AAC9C,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,21 @@
1
+ import { t as bind } from "./bind.mjs";
2
+ //#region ../gea/src/runtime/reactive-style.ts
3
+ const kebab = (k) => k.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase());
4
+ const reactiveStyle = (el, d, root, pathOrGetter) => {
5
+ let prev = {};
6
+ const style = el.style;
7
+ bind(d, root, pathOrGetter, (v) => {
8
+ const next = {};
9
+ if (v && typeof v === "object") for (const k in v) {
10
+ const val = v[k];
11
+ if (val != null && val !== false) next[kebab(k)] = String(val);
12
+ }
13
+ for (const k in prev) if (!(k in next)) style.removeProperty(k);
14
+ for (const k in next) if (next[k] !== prev[k]) style.setProperty(k, next[k]);
15
+ prev = next;
16
+ });
17
+ };
18
+ //#endregion
19
+ export { reactiveStyle as t };
20
+
21
+ //# 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\nconst kebab = (k: string): string => k.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase())\n\nexport const reactiveStyle = (\n el: Element,\n d: Disposer,\n root: any,\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"],"mappings":";;AAGA,MAAM,SAAS,MAAsB,EAAE,QAAQ,WAAW,MAAM,MAAM,EAAE,aAAa,CAAC;AAEtF,MAAa,iBACX,IACA,GACA,MACA,iBACS;CACT,IAAI,OAA+B,EAAE;CACrC,MAAM,QAAS,GAAmB;AAClC,MAAK,GAAG,MAAM,eAAe,MAAM;EACjC,MAAM,OAA+B,EAAE;AACvC,MAAI,KAAK,OAAO,MAAM,SACpB,MAAK,MAAM,KAAK,GAA8B;GAC5C,MAAM,MAAO,EAA8B;AAC3C,OAAI,OAAO,QAAQ,QAAQ,MAAO,MAAK,MAAM,EAAE,IAAI,OAAO,IAAI;;AAGlE,OAAK,MAAM,KAAK,KAAM,KAAI,EAAE,KAAK,MAAO,OAAM,eAAe,EAAE;AAC/D,OAAK,MAAM,KAAK,KAAM,KAAI,KAAK,OAAO,KAAK,GAAI,OAAM,YAAY,GAAG,KAAK,GAAG;AAC5E,SAAO;GACP"}
@@ -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
+ const 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
+ const 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 const reactiveTextValue = (\n node: Text | Element,\n d: Disposer,\n root: any,\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 const reactiveText = (\n node: Text | Element,\n d: Disposer,\n root: any,\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 any).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 any).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,MAAa,qBACX,MACA,GACA,MACA,iBACS;CACT,IAAI,OAAgB,KAAA;AACpB,MAAK,GAAG,MAAM,eAAe,MAAM;AACjC,SAAO,MAAM,MAAM,QAAQ,MAAM,EAAE;GACnC;;AAGJ,MAAa,gBACX,MACA,GACA,MACA,iBACS;CACT,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,KAAa,aAAa,UAAU;AAC9C,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,EAAU,aAAa,UAAU;AAChD,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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"}
@@ -2,7 +2,7 @@ import { Component } from "@geajs/core";
2
2
 
3
3
  //#region src/components/separator.d.ts
4
4
  declare class Separator extends Component {
5
- template(props: any): string;
5
+ template(props: any): any;
6
6
  }
7
7
  //#endregion
8
8
  export { Separator as default };