@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
package/dist/label.mjs CHANGED
@@ -1,49 +1,24 @@
1
- import { t as cn } from "./cn.mjs";
2
- import { Component, GEA_ELEMENT, GEA_INSTANTIATE_CHILD_COMPONENTS, GEA_MOUNT_COMPILED_CHILD_COMPONENTS, GEA_ON_PROP_CHANGE, GEA_PATCH_NODE } from "@geajs/core";
1
+ import { n as cn, t as CompiledComponent } from "./compiled-component.mjs";
2
+ import { o as GEA_CREATE_TEMPLATE } from "./bind.mjs";
3
+ import { t as reactiveText } from "./reactive-text.mjs";
4
+ import { t as reactiveAttr } from "./reactive-attr.mjs";
5
+ import { t as reactiveClass } from "./reactive-class.mjs";
3
6
  //#region src/components/label.tsx
4
- var Label = class extends Component {
5
- static {
6
- this.__geaTagName = "gea-label";
7
- }
8
- template(props) {
9
- return `<label id="${this.id}"${cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", props.class) == null || cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", props.class) === false ? "" : ` class="${(cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", props.class) != null ? String(cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", props.class)) : "").trim()}"`}${props.htmlFor == null || props.htmlFor === false ? "" : ` for="${props.htmlFor}"`}>${props.children}</label>`;
10
- }
11
- [GEA_ON_PROP_CHANGE](key, value) {
12
- if (key === "class") {
13
- const __el = this[GEA_ELEMENT];
14
- this.props;
15
- const __boundValue = cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", value);
16
- if (__el) {
17
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
18
- if (__el.className !== __newClass) __el.className = __newClass;
19
- }
20
- }
21
- if (key === "htmlFor") {
22
- const __el = this[GEA_ELEMENT];
23
- if (__el) {
24
- var __av = value;
25
- if (__av == null || __av === false) __el.removeAttribute("for");
26
- else {
27
- const __newAttr = String(__av);
28
- if (__el.getAttribute("for") !== __newAttr) __el.setAttribute("for", __newAttr);
29
- }
30
- }
31
- }
32
- if (key === "children") {
33
- const __el = this[GEA_ELEMENT];
34
- if (__el) {
35
- const __tw = document.createElement("template");
36
- __tw.innerHTML = value;
37
- const __newEl = __tw.content.firstElementChild;
38
- const __existEl = __el.firstElementChild;
39
- if (__newEl && __existEl && __tw.content.childNodes.length === 1) this.constructor[GEA_PATCH_NODE](__existEl, __newEl, true);
40
- else if (__el.innerHTML !== value) {
41
- __el.innerHTML = value;
42
- this[GEA_INSTANTIATE_CHILD_COMPONENTS]();
43
- if (this.parentComponent) this.parentComponent[GEA_MOUNT_COMPILED_CHILD_COMPONENTS]();
44
- }
45
- }
46
- }
7
+ function _tpl0_create() {
8
+ const e = document.createElement("label");
9
+ e.textContent = "0";
10
+ return e;
11
+ }
12
+ var Label = class extends CompiledComponent {
13
+ [GEA_CREATE_TEMPLATE](d) {
14
+ const root = _tpl0_create();
15
+ const el0 = root;
16
+ const el1 = el0;
17
+ const marker2 = root.firstChild;
18
+ reactiveClass(el0, d, this, () => cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", this.props.class));
19
+ reactiveAttr(el1, d, this, "for", () => this.props.htmlFor);
20
+ reactiveText(marker2, d, this, () => this.props.children);
21
+ return root;
47
22
  }
48
23
  };
49
24
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"label.mjs","names":["Component","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_NODE","GEA_INSTANTIATE_CHILD_COMPONENTS","GEA_MOUNT_COMPILED_CHILD_COMPONENTS","cn","Label","__geaTagName","template","props","__id","id","class","String","trim","htmlFor","children","key","value","__el","__boundValue","__newClass","replace","className","__av","removeAttribute","__newAttr","getAttribute","setAttribute","__tw","document","createElement","innerHTML","__newEl","content","firstElementChild","__existEl","childNodes","length","constructor","parentComponent"],"sources":["../src/components/label.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Label extends Component {\n template(props: any) {\n return (\n <label\n class={cn(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n props.class,\n )}\n for={props.htmlFor}\n >\n {props.children}\n </label>\n )\n }\n}\n"],"mappings":";;;AAGA,IAAqBO,QAArB,cAAmCP,UAAU;;sBAAA;;CAC3CS,SAASC,OAAY;AACnB,SAAA,cADmB,KAAAE,GACnB,GAEWN,GACL,8FACAI,MAAMG,MACP,IAAA,QAHMP,GACL,8FACAI,MAAMG,MACP,KAAA,QAAA,KAAA,YAHMP,GACL,8FACAI,MAAMG,MACP,IAAA,OAAAC,OAHMR,GACL,8FACAI,MAAMG,MACP,CAAA,GAAA,IAAAE,MAAA,CAAA,KACIL,MAAMM,WAAO,QAAbN,MAAMM,YAAO,QAAA,KAAA,SAAbN,MAAMM,QAAO,GAAA,GAEjBN,MAAMO,SAAQ;;CAZvB,CAAAhB,oBAAwBiB,KAAKC,OAAK;AAAA,MAAAD,QAAA,SAAA;GAAA,MAAAE,OAAA,KAAAlB;AAGb,QAAAQ;GAAA,MAAAW,eAGNf,GACL,8FAA4Fa,MAE7F;AAAA,OAAAC,MATT;IACM,MAAME,aADXR,OAAOO,gBAAyB,GAAG,CAAEN,MAAM,CAACQ,QAAQ,QAAQ,IACf;AACxC,QAAIH,KAAsBI,cAAcF,WAAYF,MAAsBI,YAAYF;;;AACvF,MAAAJ,QAAA,WAAA;GAAA,MAAAE,OAAA,KAAAlB;AAAA,OAAAkB,MAAA;IAFC,IAAIK,OAAIN;AACR,QAAIM,QAAQ,QAAQA,SAAS,MAC3BL,MAAsBM,gBAAgB,MAAM;SACvC;KACL,MAAMC,YAAYb,OAAOW,KAAK;AAC9B,SAAIL,KAAsBQ,aAAa,MAAM,KAAKD,UAChDP,MAAsBS,aAAa,OAAOF,UAAU;;;;AACvD,MAAAT,QAAA,YAAA;GAAA,MAAAE,OAAA,KAAAlB;AAAA,OAAAkB,MARP;IACI,MAAMU,OAAOC,SAASC,cAAc,WAAW;AAC/CF,SAAKG,YAASd;IACd,MAAMe,UAAUJ,KAAKK,QAAQC;IAC7B,MAAMC,YAAYjB,KAAsBgB;AACxC,QAAIF,WAAWG,aAAaP,KAAKK,QAAQG,WAAWC,WAAW,EAC7D,MAAKC,YAAWrC,gBAAwBkC,WAAWH,SAAS,KAAK;aACxDd,KAAsBa,cAASd,OAA4B;AACpEC,UAAsBa,YAASd;AAC/B,UAAIf,mCAAyB;AAC7B,SAAI,KAAKqC,gBAAiB,MAAKA,gBAAepC,sCAAyB"}
1
+ {"version":3,"file":"label.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveAttr","reactiveText","CompiledComponent","Component","cn","_tpl0_create","e","document","createElement","textContent","Label","d","root","el0","el1","marker2","firstChild","props","class","htmlFor","t2","children"],"sources":["../src/components/label.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Label extends Component {\n template(props: any) {\n return (\n <label\n class={cn(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n props.class,\n )}\n for={props.htmlFor}\n >\n {props.children}\n </label>\n )\n }\n}\n"],"mappings":";;;;;;AAGA,SAASO,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,QAAQ;AACzCF,GAAEG,cAAc;AAChB,QAAOH;;AAET,IAAqBI,QAArB,cAAmCR,kBAAkB;CACnD,CAACJ,qBAAqBa,GAAG;EACvB,MAAMC,OAAOP,cAAc;EAC3B,MAAMQ,MAAMD;EACZ,MAAME,MAAMD;EACZ,MAAME,UAAUH,KAAKI;AACrBjB,gBAAcc,KAAKF,GAAG,YAAYP,GAAG,8FAA8F,KAAKa,MAAMC,MAAM,CAAC;AACrJlB,eAAac,KAAKH,GAAG,MAAM,aAAa,KAAKM,MAAME,QAAQ;AAE3DlB,eAAamB,SAAIT,GAAG,YAAY,KAAKM,MAAMI,SAAS;AACpD,SAAOT"}
package/dist/menu.d.mts CHANGED
@@ -7,7 +7,7 @@ declare class Menu extends ZagComponent {
7
7
  open: boolean;
8
8
  createMachine(_props: any): any;
9
9
  getMachineProps(props: any): {
10
- id: any;
10
+ id: string;
11
11
  open: any;
12
12
  defaultOpen: any;
13
13
  closeOnSelect: any;
@@ -29,7 +29,7 @@ declare class Menu extends ZagComponent {
29
29
  '[data-part="item-group-label"]': (api: any, el: any) => any;
30
30
  };
31
31
  syncState(api: any): void;
32
- template(props: any): string;
32
+ template(props: any): any;
33
33
  }
34
34
  //#endregion
35
35
  export { Menu as default };
package/dist/menu.mjs CHANGED
@@ -1,12 +1,33 @@
1
1
  import { t as ZagComponent } from "./zag-component.mjs";
2
- import { Component, GEA_ELEMENT, GEA_ON_PROP_CHANGE, GEA_REGISTER_MAP, GEA_SYNC_MAP, geaEscapeHtml } from "@geajs/core";
2
+ import { o as GEA_CREATE_TEMPLATE, u as GEA_PROXY_RAW } from "./bind.mjs";
3
+ import { n as reactiveTextValue } from "./reactive-text.mjs";
4
+ import { t as reactiveAttr } from "./reactive-attr.mjs";
5
+ import { t as reactiveClass } from "./reactive-class.mjs";
6
+ import { n as _rescue, t as keyedList } from "./keyed-list.mjs";
7
+ import { n as readItem, t as createItemObservable } from "./item-obs.mjs";
3
8
  import { normalizeProps } from "@zag-js/vanilla";
4
9
  import * as menu from "@zag-js/menu";
5
10
  //#region src/components/menu.tsx
11
+ let _tpl0_root = null;
12
+ function _tpl0_create() {
13
+ const t = document.createElement("template");
14
+ t.innerHTML = "<div><button data-part=trigger class=\"menu-trigger inline-flex items-center justify-center gap-1 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs hover:bg-accent hover:text-accent-foreground\">0</button><div data-part=positioner class=menu-positioner><div data-part=content class=\"menu-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"><!--2-->";
15
+ return t.content.firstChild;
16
+ }
17
+ let _tpl1_root = null;
18
+ function _tpl1_create() {
19
+ const t = document.createElement("template");
20
+ t.innerHTML = "<div data-part=separator class=\"menu-separator -mx-1 my-1 h-px bg-muted\">";
21
+ return t.content.firstChild;
22
+ }
23
+ let _tpl2_root = null;
24
+ function _tpl2_create() {
25
+ const t = document.createElement("template");
26
+ t.innerHTML = "<div data-part=item class=\"menu-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\">0";
27
+ return t.content.firstChild;
28
+ }
29
+ const __rq_L0 = /* @__PURE__ */ new Map();
6
30
  var Menu = class extends ZagComponent {
7
- static {
8
- this.__geaTagName = "gea-menu";
9
- }
10
31
  createMachine(_props) {
11
32
  return menu.machine;
12
33
  }
@@ -42,44 +63,69 @@ var Menu = class extends ZagComponent {
42
63
  syncState(api) {
43
64
  this.open = api.open;
44
65
  }
45
- template(props) {
46
- const __id = this.id;
47
- Component._register(ZagComponent, "zag-component");
48
- const items = props.items || [];
49
- return `<div id="${__id}"${(props.class || "") == null || (props.class || "") === false ? "" : ` class="${((props.class || "") != null ? String(props.class || "") : "").trim()}"`}><button id="${__id + "-b1"}" data-part="trigger" class="menu-trigger inline-flex items-center justify-center gap-1 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs hover:bg-accent hover:text-accent-foreground">${geaEscapeHtml(String(props.triggerLabel || "Menu"))}</button><div data-part="positioner" class="menu-positioner"><div id="${__id + "-b2"}" data-part="content" class="menu-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md">${items.map((item, i) => item.type === "separator" ? `<div data-gid="${String(`sep-${i}`)}" data-part="separator" class="menu-separator -mx-1 my-1 h-px bg-muted"></div>` : `<div data-gid="${item?.id ?? item}" data-part="item"${item.value == null || item.value === false ? "" : ` data-value="${item.value}"`} class="menu-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">${item.label}</div>`).join("") + "<!---->"}</div></div></div>`;
50
- }
51
- render__unresolved_0Item(item, i) {
52
- return `<div data-gid="${item?.id ?? item}" data-part="separator" class="menu-separator -mx-1 my-1 h-px bg-muted"></div>`;
53
- }
54
- [GEA_ON_PROP_CHANGE](key, value) {
55
- const __id = this.id;
56
- if (key === "class") {
57
- const __el = this[GEA_ELEMENT];
58
- this.props;
59
- const __boundValue = value || "";
60
- if (__el) {
61
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
62
- if (__el.className !== __newClass) __el.className = __newClass;
66
+ [GEA_CREATE_TEMPLATE](d) {
67
+ this.props.items;
68
+ const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
69
+ const el0 = root;
70
+ const marker1 = root.firstChild.firstChild;
71
+ const anchor2 = root.childNodes[1].firstChild.firstChild;
72
+ reactiveClass(el0, d, this, () => this.props.class || "");
73
+ reactiveTextValue(marker1, d, this, () => this.props.triggerLabel || "Menu");
74
+ const __ki_L0 = (__geaItemObservable, i, d) => {
75
+ if (readItem(__geaItemObservable).type === "separator") {
76
+ const root = (_tpl1_root || (_tpl1_root = _tpl1_create())).cloneNode(true);
77
+ reactiveAttr(root, d, this, "key", () => `sep-${i}`);
78
+ return root;
79
+ } else {
80
+ const root = (_tpl2_root || (_tpl2_root = _tpl2_create())).cloneNode(true);
81
+ const el0 = root;
82
+ const el1 = el0;
83
+ const marker2 = root.firstChild;
84
+ reactiveAttr(el0, d, this, "key", () => readItem(__geaItemObservable).value);
85
+ reactiveAttr(el1, d, this, "data-value", () => readItem(__geaItemObservable).value);
86
+ reactiveTextValue(marker2, d, this, () => readItem(__geaItemObservable).label);
87
+ return root;
63
88
  }
64
- }
65
- if (key === "triggerLabel") {
66
- const __el = this.__e0 || (this.__e0 = __gid(__id + "-b1"));
67
- this.props;
68
- const __boundValue = value || "Menu";
69
- if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
70
- }
71
- if (key === "items") this[GEA_SYNC_MAP](0);
72
- }
73
- __resetEls() {
74
- this.__e0 = null;
75
- }
76
- __observe_local_props(__v, __c) {
77
- this[GEA_SYNC_MAP](0);
78
- }
79
- createdHooks() {
80
- this[GEA_REGISTER_MAP](0, "____unresolved_0_container", () => __gid(this.id + "-b2"), () => {
81
- return this.props.items || [];
82
- }, (__item, __idx) => this.create__unresolved_0Item(__item, __idx), (__k, __ki) => String(`sep-${__ki}`));
89
+ };
90
+ keyedList({
91
+ container: anchor2.parentNode,
92
+ anchor: anchor2,
93
+ disposer: d,
94
+ root: this,
95
+ pending: __rq_L0,
96
+ path: () => this.props.items || [],
97
+ key: (item, i) => item?.id ?? item ?? i,
98
+ createEntry: (item, idx) => {
99
+ const __k = item?.id ?? item ?? idx;
100
+ const __r = _rescue(__rq_L0, String(__k), item);
101
+ if (__r) {
102
+ const __raw = item && item[GEA_PROXY_RAW] || item;
103
+ if (__r.item !== __raw) {
104
+ __r.item;
105
+ __r.item = __raw;
106
+ __r.obs.current = item;
107
+ __r.obs._fire();
108
+ }
109
+ return __r;
110
+ }
111
+ const __rd = d.child();
112
+ const __obs = createItemObservable(item);
113
+ const __el = __ki_L0(__obs, idx, __rd);
114
+ return {
115
+ key: __k,
116
+ item: item && item[GEA_PROXY_RAW] || item,
117
+ element: __el,
118
+ disposer: __rd,
119
+ obs: __obs
120
+ };
121
+ },
122
+ patchEntry: (e, newItem, newIdx) => {
123
+ e.item = newItem && newItem[GEA_PROXY_RAW] || newItem;
124
+ e.obs.current = newItem;
125
+ e.obs._fire();
126
+ }
127
+ });
128
+ return root;
83
129
  }
84
130
  };
85
131
  //#endregion
package/dist/menu.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"menu.mjs","names":["Component","geaEscapeHtml","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_SYNC_MAP","GEA_REGISTER_MAP","menu","normalizeProps","ZagComponent","Menu","__geaTagName","open","createMachine","_props","machine","getMachineProps","props","id","defaultOpen","closeOnSelect","loopFocus","positioning","onOpenChange","details","OpenChangeDetails","onSelect","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","getItemProps","value","HTMLElement","dataset","[data-part=\"item-group\"]","getItemGroupProps","groupId","[data-part=\"item-group-label\"]","getItemGroupLabelProps","htmlFor","syncState","template","__id","_register","items","class","String","trim","triggerLabel","map","item","i","type","label","join","render__unresolved_0Item","key","__el","__boundValue","__newClass","replace","className","__e0","__gid","textContent","__resetEls","__observe_local_props","__v","__c","createdHooks","__item","__idx","create__unresolved_0Item","__k","__ki"],"sources":["../src/components/menu.tsx"],"sourcesContent":["import * as menu from '@zag-js/menu'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Menu extends ZagComponent {\n declare open: boolean\n\n createMachine(_props: any): any {\n return menu.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n open: props.open,\n defaultOpen: props.defaultOpen,\n closeOnSelect: props.closeOnSelect ?? true,\n loopFocus: props.loopFocus ?? false,\n positioning: props.positioning,\n onOpenChange: (details: menu.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n onSelect: props.onSelect,\n }\n }\n\n connectApi(service: any) {\n return menu.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"separator\"]': 'getSeparatorProps',\n '[data-part=\"item\"]': (api, el) => api.getItemProps({ value: (el as HTMLElement).dataset.value }),\n '[data-part=\"item-group\"]': (api, el) => api.getItemGroupProps({ id: (el as HTMLElement).dataset.groupId }),\n '[data-part=\"item-group-label\"]': (api, el) =>\n api.getItemGroupLabelProps({ htmlFor: (el as HTMLElement).dataset.htmlFor }),\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div class={props.class || ''}>\n <button\n data-part=\"trigger\"\n class=\"menu-trigger inline-flex items-center justify-center gap-1 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs hover:bg-accent hover:text-accent-foreground\"\n >\n {props.triggerLabel || 'Menu'}\n </button>\n <div data-part=\"positioner\" class=\"menu-positioner\">\n <div\n data-part=\"content\"\n class=\"menu-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n {items.map((item: any, i: number) =>\n item.type === 'separator' ? (\n <div key={`sep-${i}`} data-part=\"separator\" class=\"menu-separator -mx-1 my-1 h-px bg-muted\"></div>\n ) : (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n class=\"menu-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 {item.label}\n </div>\n ),\n )}\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;AAIA,IAAqBS,OAArB,cAAkCD,aAAa;;sBAAA;;CAG7CI,cAAcC,QAAkB;AAC9B,SAAOP,KAAKQ;;CAGdC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTN,MAAMK,MAAML;GACZO,aAAaF,MAAME;GACnBC,eAAeH,MAAMG,iBAAiB;GACtCC,WAAWJ,MAAMI,aAAa;GAC9BC,aAAaL,MAAMK;GACnBC,eAAeC,YAAoC;AACjD,SAAKZ,OAAOY,QAAQZ;AACpBK,UAAMM,eAAeC,QAAQ;;GAE/BE,UAAUT,MAAMS;GACjB;;CAGHC,WAAWC,SAAc;AACvB,SAAOrB,KAAKsB,QAAQD,SAASpB,eAAe;;CAG9CsB,eAAe;AACb,SAAO;GACL,2BAAyB;GACzB,8BAA4B;GAC5B,2BAAyB;GACzB,6BAA2B;GAC3B,yBAAuBE,KAAKC,OAAOD,IAAIE,aAAa,EAAEC,OAAQF,GAAmBI,QAAQF,OAAO,CAAC;GACjG,+BAA6BH,KAAKC,OAAOD,IAAIO,kBAAkB,EAAErB,IAAKe,GAAmBI,QAAQG,SAAS,CAAC;GAC3G,qCAAmCR,KAAKC,OACtCD,IAAIU,uBAAuB,EAAEC,SAAUV,GAAmBI,QAAQM,SAAS,CAAA;GAC9E;;CAGHC,UAAUZ,KAAU;AAClB,OAAKpB,OAAOoB,IAAIpB;;CAGlBiC,SAAS5B,OAAY;EAAA,MAAA6B,OAAA,KAAA5B;AAAAjB,YAAA8C,UAAAtC,cAAA,gBAAA;EACnB,MAAMuC,QAAQ/B,MAAM+B,SAAS,EAAE;AAC/B,SAAA,YAAAF,KAAA,IACc7B,MAAMgC,SAAS,OAAE,SAAjBhC,MAAMgC,SAAS,QAAE,QAAA,KAAA,aAAjBhC,MAAMgC,SAAS,OAAE,OAAAC,OAAjBjC,MAAMgC,SAAS,GAAE,GAAA,IAAAE,MAAA,CAAA,GAAA,eAlDnCL,OAAU,MAAK,6NAAf5C,cAAcgD,OAuDHjC,MAAMmC,gBAAgB,OAvDU,CAAC,CAAA,wEAA5CN,OAAU,MAAK,kJA8DFE,MAAMK,KAAKC,MAAWC,MACrBD,KAAKE,SAAS,cAAW,kBAAAN,OACb,OAAOK,IAAG,CAAA,kFAAA,kBAAAD,MAAApC,MAAAoC,KAAA,oBAKNA,KAAKnB,SAAK,QAAVmB,KAAKnB,UAAK,QAAA,KAAA,gBAAVmB,KAAKnB,MAAK,GAAA,+PAGrBmB,KAAKG,MAAK,QAAA,CAAAC,KAAA,GAAA,GAAA,UAAA;;CAxE7BC,yBAAAL,MAAAC,GAAA;AAAA,SAAA,kBAAAD,MAAApC,MAAAoC,KAAA;;CAAA,CAAAnD,oBAAwByD,KAAKzB,OAAK;EAAA,MAAAW,OAAA,KAAA5B;AAAA,MAAA0C,QAAA,SAAA;GAAA,MAAAC,OAAA,KAAAzD;AA+Cb,QAAAa;GAAA,MAAA6C,eAGH3B,SAAe;AAAE,OAAA0B,MAlDnC;IACM,MAAME,aADXb,OAAOY,gBAAyB,GAAG,CAAEX,MAAM,CAACa,QAAQ,QAAQ,IACf;AACxC,QAAIH,KAAsBI,cAAcF,WAAYF,MAAsBI,YAAYF;;;AACvF,MAAAH,QAAA,gBAAA;GAAA,MAAAC,OAAA,KAAAK,SAAA,KAAAA,OAAAC,MAAArB,OAAA,MAAA;AA4CgB,QAAA7B;GAAA,MAAA6C,eAQV3B,SAAsB;AAAM,OAAA0B,QAvDnCA,KAAsBO,gBAAWN,aAArCD,MAAsBO,cAAWN;;AAAqD,MAAAF,QAAA,QAAtF,MAAIvD,cAAwB,EAAE;;CAA9BgE,aAAU;AAAV,OAAIH,OAAyB;;CAA7BI,sBAAsBC,KAAKC,KAAK;AAAE,OAAInE,cAAwB,EAAE;;CAAhEoE,eAAwB;AAAxB,OAAInE,kBAAuB,GAAA,oCAA3B6D,MAAA,KAAKjD,KAAyB,MAAH,QAAA;AAA3B,UAAA,KAAKD,MAgDmB+B,SAAS,EAAE;MAhDlC0B,QAAQC,UAAU,KAAIC,yBAAuBF,QAAQC,MAAM,GAAAE,KAAAC,SAAA5B,OAgElC,OAAOK,OAAG,CAAA"}
1
+ {"version":3,"file":"menu.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","reactiveAttr","createItemObservable","readItem","GEA_PROXY_RAW","_rescue","keyedList","menu","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","__rq_L0","Map","Menu","open","createMachine","_props","machine","getMachineProps","props","id","defaultOpen","closeOnSelect","loopFocus","positioning","onOpenChange","details","OpenChangeDetails","onSelect","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","getItemProps","value","HTMLElement","dataset","[data-part=\"item-group\"]","getItemGroupProps","groupId","[data-part=\"item-group-label\"]","getItemGroupLabelProps","htmlFor","syncState","d","items","root","cloneNode","el0","marker1","anchor2","childNodes","class","t1","triggerLabel","__ki_L0","__geaItemObservable","i","type","el1","marker2","t2","label","container","parentNode","anchor","disposer","pending","path","key","item","createEntry","idx","__k","__r","String","__raw","__prev","obs","current","_fire","__rd","child","__obs","__li","__el","element","patchEntry","e","newItem","newIdx"],"sources":["../src/components/menu.tsx"],"sourcesContent":["import * as menu from '@zag-js/menu'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Menu extends ZagComponent {\n declare open: boolean\n\n createMachine(_props: any): any {\n return menu.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n open: props.open,\n defaultOpen: props.defaultOpen,\n closeOnSelect: props.closeOnSelect ?? true,\n loopFocus: props.loopFocus ?? false,\n positioning: props.positioning,\n onOpenChange: (details: menu.OpenChangeDetails) => {\n this.open = details.open\n props.onOpenChange?.(details)\n },\n onSelect: props.onSelect,\n }\n }\n\n connectApi(service: any) {\n return menu.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"positioner\"]': 'getPositionerProps',\n '[data-part=\"content\"]': 'getContentProps',\n '[data-part=\"separator\"]': 'getSeparatorProps',\n '[data-part=\"item\"]': (api, el) => api.getItemProps({ value: (el as HTMLElement).dataset.value }),\n '[data-part=\"item-group\"]': (api, el) => api.getItemGroupProps({ id: (el as HTMLElement).dataset.groupId }),\n '[data-part=\"item-group-label\"]': (api, el) =>\n api.getItemGroupLabelProps({ htmlFor: (el as HTMLElement).dataset.htmlFor }),\n }\n }\n\n syncState(api: any) {\n this.open = api.open\n }\n\n template(props: any) {\n const items = props.items || []\n return (\n <div class={props.class || ''}>\n <button\n data-part=\"trigger\"\n class=\"menu-trigger inline-flex items-center justify-center gap-1 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium shadow-xs hover:bg-accent hover:text-accent-foreground\"\n >\n {props.triggerLabel || 'Menu'}\n </button>\n <div data-part=\"positioner\" class=\"menu-positioner\">\n <div\n data-part=\"content\"\n class=\"menu-content z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n {items.map((item: any, i: number) =>\n item.type === 'separator' ? (\n <div key={`sep-${i}`} data-part=\"separator\" class=\"menu-separator -mx-1 my-1 h-px bg-muted\"></div>\n ) : (\n <div\n key={item.value}\n data-part=\"item\"\n data-value={item.value}\n class=\"menu-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 {item.label}\n </div>\n ),\n )}\n </div>\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
@@ -8,7 +8,7 @@ declare class NumberInput extends ZagComponent {
8
8
  valueAsNumber: number;
9
9
  createMachine(_props: any): any;
10
10
  getMachineProps(props: any): {
11
- id: any;
11
+ id: string;
12
12
  value: any;
13
13
  defaultValue: any;
14
14
  min: any;
@@ -39,7 +39,7 @@ declare class NumberInput extends ZagComponent {
39
39
  '[data-part="scrubber"]': string;
40
40
  };
41
41
  syncState(api: any): void;
42
- template(props: any): string;
42
+ template(props: any): any;
43
43
  }
44
44
  //#endregion
45
45
  export { NumberInput as default };
@@ -1,24 +1,24 @@
1
1
  import { t as ZagComponent } from "./zag-component.mjs";
2
- import { Component, GEA_ELEMENT, GEA_ON_PROP_CHANGE, GEA_PATCH_COND, GEA_REGISTER_COND, geaCondValueSymbol, geaEscapeHtml } from "@geajs/core";
2
+ import { o as GEA_CREATE_TEMPLATE } from "./bind.mjs";
3
+ import { n as reactiveTextValue } from "./reactive-text.mjs";
4
+ import { t as reactiveClass } from "./reactive-class.mjs";
5
+ import { t as conditionalTruthy } from "./conditional-truthy.mjs";
3
6
  import { normalizeProps } from "@zag-js/vanilla";
4
7
  import * as numberInput from "@zag-js/number-input";
5
8
  //#region src/components/number-input.tsx
9
+ let _tpl0_root = null;
10
+ function _tpl0_create() {
11
+ const t = document.createElement("template");
12
+ t.innerHTML = "<div data-part=root><!--1--><div data-part=control class=\"number-input-control flex\"><button data-part=decrement-trigger class=\"number-input-decrement inline-flex h-9 items-center justify-center rounded-l-md border border-r-0 border-input px-2 hover:bg-accent\">−</button><input data-part=input class=\"number-input-input h-9 w-full border border-input bg-transparent px-3 text-center text-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring\"><button data-part=increment-trigger class=\"number-input-increment inline-flex h-9 items-center justify-center rounded-r-md border border-l-0 border-input px-2 hover:bg-accent\">+";
13
+ return t.content.firstChild;
14
+ }
15
+ let _tpl1_root = null;
16
+ function _tpl1_create() {
17
+ const t = document.createElement("template");
18
+ t.innerHTML = "<label data-part=label class=\"number-input-label text-sm font-medium mb-1 block\">0";
19
+ return t.content.firstChild;
20
+ }
6
21
  var NumberInput = class extends ZagComponent {
7
- static {
8
- this.__geaTagName = "number-input";
9
- }
10
- constructor(...args) {
11
- super(...args);
12
- this.props;
13
- this[geaCondValueSymbol(0)] = !!this.props.label;
14
- this[GEA_REGISTER_COND](0, "c0", () => {
15
- this.props;
16
- return this.props.label;
17
- }, () => {
18
- this.props;
19
- return `<label data-part="label" class="number-input-label text-sm font-medium mb-1 block">${geaEscapeHtml(String(this.props.label))}</label>`;
20
- }, null);
21
- }
22
22
  createMachine(_props) {
23
23
  return numberInput.machine;
24
24
  }
@@ -65,22 +65,18 @@ var NumberInput = class extends ZagComponent {
65
65
  this.value = api.value;
66
66
  this.valueAsNumber = api.valueAsNumber;
67
67
  }
68
- template(props) {
69
- const __id = this.id;
70
- Component._register(ZagComponent, "zag-component");
71
- 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="number-input-label text-sm font-medium mb-1 block">${geaEscapeHtml(String(props.label))}</label>` || ""}<!--${__id + "-c0-end"}--><div data-part="control" class="number-input-control flex"><button data-part="decrement-trigger" class="number-input-decrement inline-flex h-9 items-center justify-center rounded-l-md border border-r-0 border-input px-2 hover:bg-accent">−</button><input data-part="input" class="number-input-input h-9 w-full border border-input bg-transparent px-3 text-center text-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring" /><button data-part="increment-trigger" class="number-input-increment inline-flex h-9 items-center justify-center rounded-r-md border border-l-0 border-input px-2 hover:bg-accent">+</button></div></div>`;
72
- }
73
- [GEA_ON_PROP_CHANGE](key, value) {
74
- if (key === "class") {
75
- const __el = this[GEA_ELEMENT];
76
- this.props;
77
- const __boundValue = value || "";
78
- if (__el) {
79
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
80
- if (__el.className !== __newClass) __el.className = __newClass;
81
- }
82
- }
83
- if (key === "label") this[GEA_PATCH_COND](0);
68
+ [GEA_CREATE_TEMPLATE](d) {
69
+ const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
70
+ const el0 = root;
71
+ const anchor1 = root.firstChild;
72
+ reactiveClass(el0, d, this, () => this.props.class || "");
73
+ conditionalTruthy(anchor1.parentNode, anchor1, d, this, () => this.props.label, (d) => {
74
+ const root = (_tpl1_root || (_tpl1_root = _tpl1_create())).cloneNode(true);
75
+ const t0 = root.firstChild;
76
+ reactiveTextValue(t0, d, this, () => this.props.label);
77
+ return root;
78
+ });
79
+ return root;
84
80
  }
85
81
  };
86
82
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"number-input.mjs","names":["Component","geaCondValueSymbol","GEA_REGISTER_COND","geaEscapeHtml","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_COND","numberInput","normalizeProps","ZagComponent","NumberInput","__geaTagName","constructor","args","props","label","String","value","valueAsNumber","createMachine","_props","machine","getMachineProps","id","defaultValue","min","max","step","disabled","readOnly","invalid","required","name","form","allowMouseWheel","clampValueOnBlur","formatOptions","locale","onValueChange","details","ValueChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","template","__id","_register","class","trim","key","__el","__boundValue","__newClass","replace","className"],"sources":["../src/components/number-input.tsx"],"sourcesContent":["import * as numberInput from '@zag-js/number-input'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class NumberInput extends ZagComponent {\n declare value: string\n declare valueAsNumber: number\n\n createMachine(_props: any): any {\n return numberInput.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n min: props.min,\n max: props.max,\n step: props.step ?? 1,\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n required: props.required,\n name: props.name,\n form: props.form,\n allowMouseWheel: props.allowMouseWheel,\n clampValueOnBlur: props.clampValueOnBlur ?? true,\n formatOptions: props.formatOptions,\n locale: props.locale,\n onValueChange: (details: numberInput.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsNumber = details.valueAsNumber\n props.onValueChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return numberInput.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=\"input\"]': 'getInputProps',\n '[data-part=\"increment-trigger\"]': 'getIncrementTriggerProps',\n '[data-part=\"decrement-trigger\"]': 'getDecrementTriggerProps',\n '[data-part=\"scrubber\"]': 'getScrubberProps',\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n this.valueAsNumber = api.valueAsNumber\n }\n\n template(props: any) {\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"number-input-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"number-input-control flex\">\n <button\n data-part=\"decrement-trigger\"\n class=\"number-input-decrement inline-flex h-9 items-center justify-center rounded-l-md border border-r-0 border-input px-2 hover:bg-accent\"\n >\n &#x2212;\n </button>\n <input\n data-part=\"input\"\n class=\"number-input-input h-9 w-full border border-input bg-transparent px-3 text-center text-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring\"\n />\n <button\n data-part=\"increment-trigger\"\n class=\"number-input-increment inline-flex h-9 items-center justify-center rounded-r-md border border-l-0 border-input px-2 hover:bg-accent\"\n >\n &#x2B;\n </button>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;AAIA,IAAqBU,cAArB,cAAyCD,aAAa;;sBAAA;;CAHtDG,YAAsB,GAAGC,MAAI;AAA7B,QAAM,GAAGA,KAAK;AA0DO,OAAAC;AAAA,OAAAb,mBAAA,EAAA,IAAA,CAAA,CA1DrB,KAAKa,MA6DUC;AA7Df,OAAIb,mBAAuB,GAAA,YAAA;AA0DN,QAAAY;AAAA,UA1DrB,KAAKA,MA6DUC;WAAK;AAHC,QAAAD;AAAA,UAAA,sFA1DrBX,cAAca,OAAd,KAAKF,MA+DcC,MA/DwB,CAAC,CAAA;KAAA,KAAA;;CAO1CI,cAAcC,QAAkB;AAC9B,SAAOb,YAAYc;;CAGrBC,gBAAgBR,OAAY;AAC1B,SAAO;GACLS,IAAI,KAAKA;GACTN,OAAOH,MAAMG;GACbO,cAAcV,MAAMU;GACpBC,KAAKX,MAAMW;GACXC,KAAKZ,MAAMY;GACXC,MAAMb,MAAMa,QAAQ;GACpBC,UAAUd,MAAMc;GAChBC,UAAUf,MAAMe;GAChBC,SAAShB,MAAMgB;GACfC,UAAUjB,MAAMiB;GAChBC,MAAMlB,MAAMkB;GACZC,MAAMnB,MAAMmB;GACZC,iBAAiBpB,MAAMoB;GACvBC,kBAAkBrB,MAAMqB,oBAAoB;GAC5CC,eAAetB,MAAMsB;GACrBC,QAAQvB,MAAMuB;GACdC,gBAAgBC,YAA4C;AAC1D,SAAKtB,QAAQsB,QAAQtB;AACrB,SAAKC,gBAAgBqB,QAAQrB;AAC7BJ,UAAMwB,gBAAgBC,QAAQ;;GAEjC;;CAGHE,WAAWC,SAAc;AACvB,SAAOnC,YAAYoC,QAAQD,SAASlC,eAAe;;CAGrDoC,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,yBAAuB;GACvB,2BAAyB;GACzB,yBAAuB;GACvB,qCAAmC;GACnC,qCAAmC;GACnC,4BAA0B;GAC3B;;CAGHC,UAAUC,KAAU;AAClB,OAAK7B,QAAQ6B,IAAI7B;AACjB,OAAKC,gBAAgB4B,IAAI5B;;CAG3B6B,SAASjC,OAAY;EAAA,MAAAkC,OAAA,KAAAzB;AAAAvB,YAAAiD,UAAAxC,cAAA,gBAAA;AACnB,SAAA,YAAAuC,KAAA,qBAC+BlC,MAAMoC,SAAS,OAAE,SAAjBpC,MAAMoC,SAAS,QAAE,QAAA,KAAA,aAAjBpC,MAAMoC,SAAS,OAAE,OAAAlC,OAAjBF,MAAMoC,SAAS,GAAE,GAAA,IAAAC,MAAA,CAAA,GAAA,OA5DpDH,OAAU,MAAK,KA6DNlC,MAAMC,SAAK,sFA7DpBZ,cAAca,OA+DDF,MAAMC,MA/DwB,CAAC,CAAA,aAAA,GAAA,MAA5CiC,OAAU,UAAS;;CAAnB,CAAA5C,oBAAwBgD,KAAKnC,OAAK;AAAA,MAAAmC,QAAA,SAAA;GAAA,MAAAC,OAAA,KAAAhD;AA0Db,QAAAS;GAAA,MAAAwC,eAEcrC,SAAe;AAAE,OAAAoC,MA5DpD;IACM,MAAME,aADXvC,OAAOsC,gBAAyB,GAAG,CAAEH,MAAM,CAACK,QAAQ,QAAQ,IACf;AACxC,QAAIH,KAAsBI,cAAcF,WAAYF,MAAsBI,YAAYF;;;AACvF,MAAAH,QAAA,QAHL,MAAI9C,gBAAwB,EAAE"}
1
+ {"version":3,"file":"number-input.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","numberInput","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","NumberInput","value","valueAsNumber","createMachine","_props","machine","getMachineProps","props","id","defaultValue","min","max","step","disabled","readOnly","invalid","required","name","form","allowMouseWheel","clampValueOnBlur","formatOptions","locale","onValueChange","details","ValueChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","d","root","cloneNode","el0","anchor1","class","parentNode","label","marker0","t0"],"sources":["../src/components/number-input.tsx"],"sourcesContent":["import * as numberInput from '@zag-js/number-input'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class NumberInput extends ZagComponent {\n declare value: string\n declare valueAsNumber: number\n\n createMachine(_props: any): any {\n return numberInput.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n value: props.value,\n defaultValue: props.defaultValue,\n min: props.min,\n max: props.max,\n step: props.step ?? 1,\n disabled: props.disabled,\n readOnly: props.readOnly,\n invalid: props.invalid,\n required: props.required,\n name: props.name,\n form: props.form,\n allowMouseWheel: props.allowMouseWheel,\n clampValueOnBlur: props.clampValueOnBlur ?? true,\n formatOptions: props.formatOptions,\n locale: props.locale,\n onValueChange: (details: numberInput.ValueChangeDetails) => {\n this.value = details.value\n this.valueAsNumber = details.valueAsNumber\n props.onValueChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return numberInput.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=\"input\"]': 'getInputProps',\n '[data-part=\"increment-trigger\"]': 'getIncrementTriggerProps',\n '[data-part=\"decrement-trigger\"]': 'getDecrementTriggerProps',\n '[data-part=\"scrubber\"]': 'getScrubberProps',\n }\n }\n\n syncState(api: any) {\n this.value = api.value\n this.valueAsNumber = api.valueAsNumber\n }\n\n template(props: any) {\n return (\n <div data-part=\"root\" class={props.class || ''}>\n {props.label && (\n <label data-part=\"label\" class=\"number-input-label text-sm font-medium mb-1 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"control\" class=\"number-input-control flex\">\n <button\n data-part=\"decrement-trigger\"\n class=\"number-input-decrement inline-flex h-9 items-center justify-center rounded-l-md border border-r-0 border-input px-2 hover:bg-accent\"\n >\n &#x2212;\n </button>\n <input\n data-part=\"input\"\n class=\"number-input-input h-9 w-full border border-input bg-transparent px-3 text-center text-sm focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring\"\n />\n <button\n data-part=\"increment-trigger\"\n class=\"number-input-increment inline-flex h-9 items-center justify-center rounded-r-md border border-l-0 border-input px-2 hover:bg-accent\"\n >\n &#x2B;\n </button>\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;;AAIA,IAAIO,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAIC,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMP,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAqBG,cAArB,cAAyCX,aAAa;CAGpDc,cAAcC,QAAkB;AAC9B,SAAOjB,YAAYkB;;CAErBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTP,OAAOM,MAAMN;GACbQ,cAAcF,MAAME;GACpBC,KAAKH,MAAMG;GACXC,KAAKJ,MAAMI;GACXC,MAAML,MAAMK,QAAQ;GACpBC,UAAUN,MAAMM;GAChBC,UAAUP,MAAMO;GAChBC,SAASR,MAAMQ;GACfC,UAAUT,MAAMS;GAChBC,MAAMV,MAAMU;GACZC,MAAMX,MAAMW;GACZC,iBAAiBZ,MAAMY;GACvBC,kBAAkBb,MAAMa,oBAAoB;GAC5CC,eAAed,MAAMc;GACrBC,QAAQf,MAAMe;GACdC,gBAAgBC,YAA4C;AAC1D,SAAKvB,QAAQuB,QAAQvB;AACrB,SAAKC,gBAAgBsB,QAAQtB;AAC7BK,UAAMgB,gBAAgBC,QAAQ;;GAEjC;;CAEHE,WAAWC,SAAc;AACvB,SAAOxC,YAAYyC,QAAQD,SAASvC,eAAe;;CAErDyC,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,yBAAuB;GACvB,2BAAyB;GACzB,yBAAuB;GACvB,qCAAmC;GACnC,qCAAmC;GACnC,4BAA0B;GAC3B;;CAEHC,UAAUC,KAAU;AAClB,OAAK9B,QAAQ8B,IAAI9B;AACjB,OAAKC,gBAAgB6B,IAAI7B;;CAE3B,CAACnB,qBAAqBiD,GAAG;EACvB,MAAMC,QAAQ3C,eAAeA,aAAaC,cAAc,GAAG2C,UAAU,KAAK;EAC1E,MAAMC,MAAMF;EACZ,MAAMG,UAAUH,KAAKpC;AACrBb,gBAAcmD,KAAKH,GAAG,YAAY,KAAKzB,MAAM8B,SAAS,GAAG;AACzDnD,oBAAkBkD,QAAQE,YAAYF,SAASJ,GAAG,YAAY,KAAKzB,MAAMgC,QAAOP,MAAK;GACnF,MAAMC,QAAQnC,eAAeA,aAAaC,cAAc,GAAGmC,UAAU,KAAK;GAE1E,MAAMO,KADUR,KAAKpC;AAErBZ,qBAAkBwD,IAAIT,GAAG,YAAY,KAAKzB,MAAMgC,MAAM;AACtD,UAAON;IACP;AACF,SAAOA"}
@@ -8,7 +8,7 @@ declare class Pagination extends ZagComponent {
8
8
  totalPages: number;
9
9
  createMachine(_props: any): any;
10
10
  getMachineProps(props: any): {
11
- id: any;
11
+ id: string;
12
12
  count: any;
13
13
  page: any;
14
14
  defaultPage: any;
@@ -30,7 +30,7 @@ declare class Pagination extends ZagComponent {
30
30
  '[data-part="ellipsis"]': (api: any, el: any) => any;
31
31
  };
32
32
  syncState(api: any): void;
33
- template(props: any): string;
33
+ template(props: any): any;
34
34
  }
35
35
  //#endregion
36
36
  export { Pagination as default };
@@ -1,17 +1,21 @@
1
1
  import { t as ZagComponent } from "./zag-component.mjs";
2
- import { Component, GEA_CLONE_TEMPLATE, GEA_ELEMENT, GEA_ON_PROP_CHANGE } from "@geajs/core";
2
+ import { o as GEA_CREATE_TEMPLATE } from "./bind.mjs";
3
+ import { t as reactiveClassName } from "./reactive-class-name.mjs";
3
4
  import { normalizeProps } from "@zag-js/vanilla";
4
5
  import * as pagination from "@zag-js/pagination";
5
6
  //#region src/components/pagination.tsx
7
+ let _tpl0_root = null;
8
+ function _tpl0_create() {
9
+ const t = document.createElement("template");
10
+ t.innerHTML = "<nav data-part=root><div class=\"flex items-center gap-1\"><button data-part=prev-trigger class=\"pagination-prev inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\">‹ Prev</button><button data-part=next-trigger class=\"pagination-next inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\">Next ›";
11
+ return t.content.firstChild;
12
+ }
6
13
  var Pagination = class extends ZagComponent {
7
14
  constructor(..._args) {
8
15
  super(..._args);
9
16
  this.page = 1;
10
17
  this.totalPages = 1;
11
18
  }
12
- static {
13
- this.__geaTagName = "gea-pagination";
14
- }
15
19
  createMachine(_props) {
16
20
  return pagination.machine;
17
21
  }
@@ -57,37 +61,10 @@ var Pagination = class extends ZagComponent {
57
61
  this.page = api.page;
58
62
  this.totalPages = api.totalPages;
59
63
  }
60
- template(props) {
61
- const __id = this.id;
62
- Component._register(ZagComponent, "zag-component");
63
- return `<nav id="${__id}" data-part="root" class="${`pagination-root ${props.class || ""}`.trim()}"><div class="flex items-center gap-1"><button data-part="prev-trigger" class="pagination-prev inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50">‹ Prev</button><button data-part="next-trigger" class="pagination-next inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50">Next ›</button></div></nav>`;
64
- }
65
- static {
66
- this.__tpl = (() => {
67
- if (typeof document === "undefined") return void 0;
68
- var t = document.createElement("template");
69
- t.innerHTML = "<nav data-part=\"root\"><div class=\"flex items-center gap-1\"><button data-part=\"prev-trigger\" class=\"pagination-prev inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\">‹ Prev</button><button data-part=\"next-trigger\" class=\"pagination-next inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\">Next ›</button></div></nav>";
70
- return t;
71
- })();
72
- }
73
- [GEA_CLONE_TEMPLATE]() {
74
- var __tpl = this.constructor.__tpl;
75
- if (!__tpl) throw new Error("[gea] __tpl missing for clone template");
76
- var __root = __tpl.content.firstElementChild.cloneNode(true);
77
- __root.id = this.id;
78
- __root.className = `pagination-root ${props.class || ""}`.trim();
79
- return __root;
80
- }
81
- [GEA_ON_PROP_CHANGE](key, value) {
82
- if (key === "class") {
83
- const __el = this[GEA_ELEMENT];
84
- this.props;
85
- const __boundValue = `pagination-root ${value || ""}`;
86
- if (__el) {
87
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
88
- if (__el.className !== __newClass) __el.className = __newClass;
89
- }
90
- }
64
+ [GEA_CREATE_TEMPLATE](d) {
65
+ const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
66
+ reactiveClassName(root, d, this, () => `pagination-root ${this.props.class || ""}`);
67
+ return root;
91
68
  }
92
69
  };
93
70
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.mjs","names":["Component","GEA_CLONE_TEMPLATE","GEA_ON_PROP_CHANGE","GEA_ELEMENT","pagination","normalizeProps","ZagComponent","Pagination","__geaTagName","page","totalPages","createMachine","_props","machine","getMachineProps","props","id","count","defaultPage","pageSize","defaultPageSize","siblingCount","type","onPageChange","details","PageChangeDetails","onPageSizeChange","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","value","parseInt","HTMLElement","dataset","getItemProps","[data-part=\"ellipsis\"]","index","getEllipsisProps","syncState","template","__id","_register","class","trim","__tpl","document","undefined","t","createElement","innerHTML","constructor","Error","__root","content","firstElementChild","cloneNode","className","key","__el","__boundValue","__newClass","String","replace"],"sources":["../src/components/pagination.tsx"],"sourcesContent":["import * as pagination from '@zag-js/pagination'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Pagination extends ZagComponent {\n page = 1\n totalPages = 1\n\n createMachine(_props: any): any {\n return pagination.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n count: props.count ?? 0,\n page: props.page,\n defaultPage: props.defaultPage ?? 1,\n pageSize: props.pageSize,\n defaultPageSize: props.defaultPageSize ?? 10,\n siblingCount: props.siblingCount ?? 1,\n type: props.type ?? 'button',\n onPageChange: (details: pagination.PageChangeDetails) => {\n this.page = details.page\n props.onPageChange?.(details)\n },\n onPageSizeChange: props.onPageSizeChange,\n }\n }\n\n connectApi(service: any) {\n return pagination.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"prev-trigger\"]': 'getPrevTriggerProps',\n '[data-part=\"next-trigger\"]': 'getNextTriggerProps',\n '[data-part=\"item\"]': (api, el) => {\n const value = parseInt((el as HTMLElement).dataset.value || '1', 10)\n return api.getItemProps({ type: 'page', value })\n },\n '[data-part=\"ellipsis\"]': (api, el) => {\n const index = parseInt((el as HTMLElement).dataset.index || '0', 10)\n return api.getEllipsisProps({ index })\n },\n }\n }\n\n syncState(api: any) {\n this.page = api.page\n this.totalPages = api.totalPages\n }\n\n template(props: any) {\n return (\n <nav data-part=\"root\" class={`pagination-root ${props.class || ''}`}>\n <div class=\"flex items-center gap-1\">\n <button\n data-part=\"prev-trigger\"\n class=\"pagination-prev inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\"\n >\n &lsaquo; Prev\n </button>\n <button\n data-part=\"next-trigger\"\n class=\"pagination-next inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\"\n >\n Next &rsaquo;\n </button>\n </div>\n </nav>\n )\n }\n}\n"],"mappings":";;;;;AAIA,IAAqBO,aAArB,cAAwCD,aAAa;;;cAC5C;oBACM;;;sBAFsC;;CAInDK,cAAcC,QAAkB;AAC9B,SAAOR,WAAWS;;CAGpBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTC,OAAOF,MAAME,SAAS;GACtBR,MAAMM,MAAMN;GACZS,aAAaH,MAAMG,eAAe;GAClCC,UAAUJ,MAAMI;GAChBC,iBAAiBL,MAAMK,mBAAmB;GAC1CC,cAAcN,MAAMM,gBAAgB;GACpCC,MAAMP,MAAMO,QAAQ;GACpBC,eAAeC,YAA0C;AACvD,SAAKf,OAAOe,QAAQf;AACpBM,UAAMQ,eAAeC,QAAQ;;GAE/BE,kBAAkBX,MAAMW;GACzB;;CAGHC,WAAWC,SAAc;AACvB,SAAOxB,WAAWyB,QAAQD,SAASvB,eAAe;;CAGpDyB,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,gCAA8B;GAC9B,gCAA8B;GAC9B,yBAAuBE,KAAKC,OAAO;IACjC,MAAMC,QAAQC,SAAUF,GAAmBI,QAAQH,SAAS,KAAK,GAAG;AACpE,WAAOF,IAAIM,aAAa;KAAEhB,MAAM;KAAQY;KAAO,CAAC;;GAElD,6BAA2BF,KAAKC,OAAO;IACrC,MAAMO,QAAQL,SAAUF,GAAmBI,QAAQG,SAAS,KAAK,GAAG;AACpE,WAAOR,IAAIS,iBAAiB,EAAED,OAAO,CAAC;;GAEzC;;CAGHE,UAAUV,KAAU;AAClB,OAAKvB,OAAOuB,IAAIvB;AAChB,OAAKC,aAAasB,IAAItB;;CAGxBiC,SAAS5B,OAAY;EAAA,MAAA6B,OAAA,KAAA5B;AAAAhB,YAAA6C,UAAAvC,cAAA,gBAAA;AACnB,SAAA,YAAAsC,KAAA,4BAC+B,mBAAmB7B,MAAM+B,SAAS,KAAIC,MAAA,CAAA;;;sBAxDnD;AAClB,OAAI,OAAOE,aAAa,YAAa,QAAOC,KAAAA;GAC5C,IAAIC,IAAIF,SAASG,cAAc,WAAW;AAC1CD,KAAEE,YAAY;AACd,UAAOF;MACL;;CALN,CAAAlD,sBAA0B;EAA1B,IAAI+C,QAAQ,KAAKM,YAAYN;AAA7B,MAAI,CAACA,MAAS,OAAM,IAAIO,MAAM,yCAAyC;EAAvE,IAAIC,SAASR,MAAMS,QAAQC,kBAAkBC,UAAU,KAAK;AAA5DH,SAAsBxC,KAAtB,KAAKA;AAALwC,SAAsBI,YAwDa,mBAAmB7C,MAAM+B,SAAS,KAAIC,MAxDlB;AAAvD,SAAAS;;CAAA,CAAAtD,oBAAwB2D,KAAK3B,OAAK;AAAA,MAAA2B,QAAA,SAAA;GAAA,MAAAC,OAAA,KAAA3D;AAsDb,QAAAY;GAAA,MAAAgD,eAEc,mBAAmB7B,SAAe;AAAI,OAAA4B,MAxDzE;IACM,MAAME,aADXC,OAAOF,gBAAyB,GAAG,CAAEhB,MAAM,CAACmB,QAAQ,QAAQ,IACf;AACxC,QAAIJ,KAAsBF,cAAcI,WAAYF,MAAsBF,YAAYI"}
1
+ {"version":3,"file":"pagination.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClassName","pagination","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","Pagination","page","totalPages","createMachine","_props","machine","getMachineProps","props","id","count","defaultPage","pageSize","defaultPageSize","siblingCount","type","onPageChange","details","PageChangeDetails","onPageSizeChange","connectApi","service","connect","getSpreadMap","[data-part=\"item\"]","api","el","value","parseInt","HTMLElement","dataset","getItemProps","[data-part=\"ellipsis\"]","index","getEllipsisProps","syncState","d","root","cloneNode","el0","class"],"sources":["../src/components/pagination.tsx"],"sourcesContent":["import * as pagination from '@zag-js/pagination'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class Pagination extends ZagComponent {\n page = 1\n totalPages = 1\n\n createMachine(_props: any): any {\n return pagination.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n count: props.count ?? 0,\n page: props.page,\n defaultPage: props.defaultPage ?? 1,\n pageSize: props.pageSize,\n defaultPageSize: props.defaultPageSize ?? 10,\n siblingCount: props.siblingCount ?? 1,\n type: props.type ?? 'button',\n onPageChange: (details: pagination.PageChangeDetails) => {\n this.page = details.page\n props.onPageChange?.(details)\n },\n onPageSizeChange: props.onPageSizeChange,\n }\n }\n\n connectApi(service: any) {\n return pagination.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"prev-trigger\"]': 'getPrevTriggerProps',\n '[data-part=\"next-trigger\"]': 'getNextTriggerProps',\n '[data-part=\"item\"]': (api, el) => {\n const value = parseInt((el as HTMLElement).dataset.value || '1', 10)\n return api.getItemProps({ type: 'page', value })\n },\n '[data-part=\"ellipsis\"]': (api, el) => {\n const index = parseInt((el as HTMLElement).dataset.index || '0', 10)\n return api.getEllipsisProps({ index })\n },\n }\n }\n\n syncState(api: any) {\n this.page = api.page\n this.totalPages = api.totalPages\n }\n\n template(props: any) {\n return (\n <nav data-part=\"root\" class={`pagination-root ${props.class || ''}`}>\n <div class=\"flex items-center gap-1\">\n <button\n data-part=\"prev-trigger\"\n class=\"pagination-prev inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\"\n >\n &lsaquo; Prev\n </button>\n <button\n data-part=\"next-trigger\"\n class=\"pagination-next inline-flex h-9 items-center justify-center rounded-md border border-input bg-background px-3 text-sm shadow-xs hover:bg-accent disabled:opacity-50\"\n >\n Next &rsaquo;\n </button>\n </div>\n </nav>\n )\n }\n}\n"],"mappings":";;;;;;AAIA,IAAIK,aAAa;AACjB,SAASC,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,WAAW;AAC5CF,GAAEG,YAAY;AACd,QAAOH,EAAEI,QAAQC;;AAEnB,IAAqBC,aAArB,cAAwCT,aAAa;;;cAC5C;oBACM;;CACbY,cAAcC,QAAkB;AAC9B,SAAOf,WAAWgB;;CAEpBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTC,OAAOF,MAAME,SAAS;GACtBR,MAAMM,MAAMN;GACZS,aAAaH,MAAMG,eAAe;GAClCC,UAAUJ,MAAMI;GAChBC,iBAAiBL,MAAMK,mBAAmB;GAC1CC,cAAcN,MAAMM,gBAAgB;GACpCC,MAAMP,MAAMO,QAAQ;GACpBC,eAAeC,YAA0C;AACvD,SAAKf,OAAOe,QAAQf;AACpBM,UAAMQ,eAAeC,QAAQ;;GAE/BE,kBAAkBX,MAAMW;GACzB;;CAEHC,WAAWC,SAAc;AACvB,SAAO/B,WAAWgC,QAAQD,SAAS9B,eAAe;;CAEpDgC,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,gCAA8B;GAC9B,gCAA8B;GAC9B,yBAAuBE,KAAKC,OAAO;IACjC,MAAMC,QAAQC,SAAUF,GAAmBI,QAAQH,SAAS,KAAK,GAAG;AACpE,WAAOF,IAAIM,aAAa;KACtBhB,MAAM;KACNY;KACD,CAAC;;GAEJ,6BAA2BF,KAAKC,OAAO;IACrC,MAAMO,QAAQL,SAAUF,GAAmBI,QAAQG,SAAS,KAAK,GAAG;AACpE,WAAOR,IAAIS,iBAAiB,EAC1BD,OACD,CAAC;;GAEL;;CAEHE,UAAUV,KAAU;AAClB,OAAKvB,OAAOuB,IAAIvB;AAChB,OAAKC,aAAasB,IAAItB;;CAExB,CAACf,qBAAqBgD,GAAG;EACvB,MAAMC,QAAQ5C,eAAeA,aAAaC,cAAc,GAAG4C,UAAU,KAAK;AAE1EjD,oBAAkBkD,MAAKH,GAAG,YAAY,mBAAmB,KAAK5B,MAAMgC,SAAS,KAAK;AAClF,SAAOH"}
package/dist/patch.mjs ADDED
@@ -0,0 +1,21 @@
1
+ //#region ../gea/src/runtime/patch.ts
2
+ function patch(node, kind, prev, next, extra) {
3
+ if (next === prev) return prev;
4
+ if (kind === "text") {
5
+ if (node.nodeType === 3 || node.nodeType === 8) node.nodeValue = next == null ? "" : String(next);
6
+ else node.textContent = next == null ? "" : String(next);
7
+ return next;
8
+ }
9
+ if (kind === "attr") {
10
+ const el = node;
11
+ if (next == null) el.removeAttribute(extra);
12
+ else el.setAttribute(extra, String(next));
13
+ return next;
14
+ }
15
+ node.toggleAttribute(extra, !!next);
16
+ return next;
17
+ }
18
+ //#endregion
19
+ export { patch as t };
20
+
21
+ //# sourceMappingURL=patch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.mjs","names":["el"],"sources":["../../gea/src/runtime/patch.ts"],"sourcesContent":["/**\n * patch(node, kind, prev, next, extra?) — shared write-if-different DOM core.\n *\n * Used by reactive-text / reactive-attr / reactive-bool. Writes only when\n * `next !== prev`; returns the new `prev` value so callers can track it as a\n * closure local between invocations.\n */\n\nexport type PatchKind = 'text' | 'attr' | 'bool'\n\nexport function patch(node: Node, kind: PatchKind, prev: unknown, next: unknown, extra?: string): unknown {\n if (next === prev) return prev\n if (kind === 'text') {\n // Use nodeValue on Text/Comment nodes, textContent on Elements/Fragments.\n if (node.nodeType === 3 /* TEXT */ || node.nodeType === 8 /* COMMENT */) {\n node.nodeValue = next == null ? '' : String(next)\n } else {\n node.textContent = next == null ? '' : String(next)\n }\n return next\n }\n if (kind === 'attr') {\n const el = node as Element\n if (next == null) el.removeAttribute(extra!)\n else el.setAttribute(extra!, String(next))\n return next\n }\n // bool\n const el = node as Element\n ;(el as any).toggleAttribute(extra!, !!next)\n return next\n}\n"],"mappings":";AAUA,SAAgB,MAAM,MAAY,MAAiB,MAAe,MAAe,OAAyB;AACxG,KAAI,SAAS,KAAM,QAAO;AAC1B,KAAI,SAAS,QAAQ;AAEnB,MAAI,KAAK,aAAa,KAAgB,KAAK,aAAa,EACtD,MAAK,YAAY,QAAQ,OAAO,KAAK,OAAO,KAAK;MAEjD,MAAK,cAAc,QAAQ,OAAO,KAAK,OAAO,KAAK;AAErD,SAAO;;AAET,KAAI,SAAS,QAAQ;EACnB,MAAM,KAAK;AACX,MAAI,QAAQ,KAAM,IAAG,gBAAgB,MAAO;MACvC,IAAG,aAAa,OAAQ,OAAO,KAAK,CAAC;AAC1C,SAAO;;AAIPA,MAAW,gBAAgB,OAAQ,CAAC,CAAC,KAAK;AAC5C,QAAO"}
@@ -8,7 +8,7 @@ declare class PinInput extends ZagComponent {
8
8
  valueAsString: string;
9
9
  createMachine(_props: any): any;
10
10
  getMachineProps(props: any): {
11
- id: any;
11
+ id: string;
12
12
  value: any;
13
13
  defaultValue: any;
14
14
  count: any;
@@ -38,7 +38,7 @@ declare class PinInput extends ZagComponent {
38
38
  '[data-part="input"]': (api: any, el: any) => any;
39
39
  };
40
40
  syncState(api: any): void;
41
- template(props: any): string;
41
+ template(props: any): any;
42
42
  }
43
43
  //#endregion
44
44
  export { PinInput as default };