@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
@@ -1,25 +1,28 @@
1
1
  import { t as ZagComponent } from "./zag-component.mjs";
2
- import { Component, GEA_ELEMENT, GEA_INSTANTIATE_CHILD_COMPONENTS, GEA_MOUNT_COMPILED_CHILD_COMPONENTS, GEA_ON_PROP_CHANGE, GEA_PATCH_COND, GEA_PATCH_NODE, GEA_REGISTER_COND, geaCondValueSymbol, geaEscapeHtml } from "@geajs/core";
2
+ import { o as GEA_CREATE_TEMPLATE } from "./bind.mjs";
3
+ import { n as reactiveTextValue, t as reactiveText } 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 treeView from "@zag-js/tree-view";
5
8
  //#region src/components/tree-view.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=tree class=tree-view-tree role=tree>0";
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=\"tree-view-label text-sm font-medium mb-2 block\">0";
19
+ return t.content.firstChild;
20
+ }
6
21
  var TreeView = class extends ZagComponent {
7
- static {
8
- this.__geaTagName = "tree-view";
9
- }
10
- constructor(...args) {
11
- super(...args);
22
+ constructor(..._args) {
23
+ super(..._args);
12
24
  this.selectedValue = [];
13
25
  this.expandedValue = [];
14
- this.props;
15
- this[geaCondValueSymbol(0)] = !!this.props.label;
16
- this[GEA_REGISTER_COND](0, "c0", () => {
17
- this.props;
18
- return this.props.label;
19
- }, () => {
20
- this.props;
21
- return `<label data-part="label" class="tree-view-label text-sm font-medium mb-2 block">${geaEscapeHtml(String(this.props.label))}</label>`;
22
- }, null);
23
26
  }
24
27
  createMachine(_props) {
25
28
  return treeView.machine;
@@ -58,41 +61,20 @@ var TreeView = class extends ZagComponent {
58
61
  this.selectedValue = api.selectedValue;
59
62
  this.expandedValue = api.expandedValue;
60
63
  }
61
- template(props) {
62
- const __id = this.id;
63
- Component._register(ZagComponent, "zag-component");
64
- 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="tree-view-label text-sm font-medium mb-2 block">${geaEscapeHtml(String(props.label))}</label>` || ""}<!--${__id + "-c0-end"}--><div id="${__id + "-b1"}" data-part="tree" class="tree-view-tree" role="tree">${props.children}</div></div>`;
65
- }
66
- [GEA_ON_PROP_CHANGE](key, value) {
67
- const __id = this.id;
68
- if (key === "class") {
69
- const __el = this[GEA_ELEMENT];
70
- this.props;
71
- const __boundValue = value || "";
72
- if (__el) {
73
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
74
- if (__el.className !== __newClass) __el.className = __newClass;
75
- }
76
- }
77
- if (key === "children") {
78
- const __el = this.__e0 || (this.__e0 = __gid(__id + "-b1"));
79
- if (__el) {
80
- const __tw = document.createElement("template");
81
- __tw.innerHTML = value;
82
- const __newEl = __tw.content.firstElementChild;
83
- const __existEl = __el.firstElementChild;
84
- if (__newEl && __existEl && __tw.content.childNodes.length === 1) this.constructor[GEA_PATCH_NODE](__existEl, __newEl, true);
85
- else if (__el.innerHTML !== value) {
86
- __el.innerHTML = value;
87
- this[GEA_INSTANTIATE_CHILD_COMPONENTS]();
88
- if (this.parentComponent) this.parentComponent[GEA_MOUNT_COMPILED_CHILD_COMPONENTS]();
89
- }
90
- }
91
- }
92
- if (key === "label") this[GEA_PATCH_COND](0);
93
- }
94
- __resetEls() {
95
- this.__e0 = null;
64
+ [GEA_CREATE_TEMPLATE](d) {
65
+ const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
66
+ const el0 = root;
67
+ const anchor1 = root.firstChild;
68
+ const marker2 = root.childNodes[1].firstChild;
69
+ reactiveClass(el0, d, this, () => this.props.class || "");
70
+ conditionalTruthy(anchor1.parentNode, anchor1, d, this, () => this.props.label, (d) => {
71
+ const root = (_tpl1_root || (_tpl1_root = _tpl1_create())).cloneNode(true);
72
+ const t0 = root.firstChild;
73
+ reactiveTextValue(t0, d, this, () => this.props.label);
74
+ return root;
75
+ });
76
+ reactiveText(marker2, d, this, () => this.props.children);
77
+ return root;
96
78
  }
97
79
  };
98
80
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view.mjs","names":["Component","geaCondValueSymbol","GEA_REGISTER_COND","geaEscapeHtml","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_NODE","GEA_INSTANTIATE_CHILD_COMPONENTS","GEA_MOUNT_COMPILED_CHILD_COMPONENTS","GEA_PATCH_COND","treeView","normalizeProps","ZagComponent","TreeView","__geaTagName","constructor","args","props","label","String","selectedValue","expandedValue","createMachine","_props","machine","getMachineProps","id","collection","defaultSelectedValue","defaultExpandedValue","selectionMode","expandOnClick","onSelectionChange","details","SelectionChangeDetails","onExpandedChange","ExpandedChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","template","__id","_register","class","trim","children","key","value","__el","__boundValue","__newClass","replace","className","__e0","__gid","__tw","document","createElement","innerHTML","__newEl","content","firstElementChild","__existEl","childNodes","length","parentComponent","__resetEls"],"sources":["../src/components/tree-view.tsx"],"sourcesContent":["import * as treeView from '@zag-js/tree-view'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class TreeView extends ZagComponent {\n selectedValue: string[] = []\n expandedValue: string[] = []\n\n createMachine(_props: any): any {\n return treeView.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n collection: props.collection,\n selectedValue: props.selectedValue,\n defaultSelectedValue: props.defaultSelectedValue,\n expandedValue: props.expandedValue,\n defaultExpandedValue: props.defaultExpandedValue,\n selectionMode: props.selectionMode ?? 'single',\n expandOnClick: props.expandOnClick ?? true,\n onSelectionChange: (details: treeView.SelectionChangeDetails) => {\n this.selectedValue = details.selectedValue\n props.onSelectionChange?.(details)\n },\n onExpandedChange: (details: treeView.ExpandedChangeDetails) => {\n this.expandedValue = details.expandedValue\n props.onExpandedChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return treeView.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"tree\"]': 'getTreeProps',\n }\n }\n\n syncState(api: any) {\n this.selectedValue = api.selectedValue\n this.expandedValue = api.expandedValue\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=\"tree-view-label text-sm font-medium mb-2 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"tree\" class=\"tree-view-tree\" role=\"tree\">\n {props.children}\n </div>\n </div>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tree-view.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveText","treeView","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","TreeView","selectedValue","expandedValue","createMachine","_props","machine","getMachineProps","props","id","collection","defaultSelectedValue","defaultExpandedValue","selectionMode","expandOnClick","onSelectionChange","details","SelectionChangeDetails","onExpandedChange","ExpandedChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","d","root","cloneNode","el0","anchor1","marker2","childNodes","class","parentNode","label","marker0","t0","t2","children"],"sources":["../src/components/tree-view.tsx"],"sourcesContent":["import * as treeView from '@zag-js/tree-view'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class TreeView extends ZagComponent {\n selectedValue: string[] = []\n expandedValue: string[] = []\n\n createMachine(_props: any): any {\n return treeView.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n collection: props.collection,\n selectedValue: props.selectedValue,\n defaultSelectedValue: props.defaultSelectedValue,\n expandedValue: props.expandedValue,\n defaultExpandedValue: props.defaultExpandedValue,\n selectionMode: props.selectionMode ?? 'single',\n expandOnClick: props.expandOnClick ?? true,\n onSelectionChange: (details: treeView.SelectionChangeDetails) => {\n this.selectedValue = details.selectedValue\n props.onSelectionChange?.(details)\n },\n onExpandedChange: (details: treeView.ExpandedChangeDetails) => {\n this.expandedValue = details.expandedValue\n props.onExpandedChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return treeView.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"tree\"]': 'getTreeProps',\n }\n }\n\n syncState(api: any) {\n this.selectedValue = api.selectedValue\n this.expandedValue = api.expandedValue\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=\"tree-view-label text-sm font-medium mb-2 block\">\n {props.label}\n </label>\n )}\n <div data-part=\"tree\" class=\"tree-view-tree\" role=\"tree\">\n {props.children}\n </div>\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;;AAIA,IAAIQ,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,WAArB,cAAsCX,aAAa;;;uBACvB,EAAE;uBACF,EAAE;;CAC5Bc,cAAcC,QAAkB;AAC9B,SAAOjB,SAASkB;;CAElBC,gBAAgBC,OAAY;AAC1B,SAAO;GACLC,IAAI,KAAKA;GACTC,YAAYF,MAAME;GAClBR,eAAeM,MAAMN;GACrBS,sBAAsBH,MAAMG;GAC5BR,eAAeK,MAAML;GACrBS,sBAAsBJ,MAAMI;GAC5BC,eAAeL,MAAMK,iBAAiB;GACtCC,eAAeN,MAAMM,iBAAiB;GACtCC,oBAAoBC,YAA6C;AAC/D,SAAKd,gBAAgBc,QAAQd;AAC7BM,UAAMO,oBAAoBC,QAAQ;;GAEpCE,mBAAmBF,YAA4C;AAC7D,SAAKb,gBAAgBa,QAAQb;AAC7BK,UAAMU,mBAAmBF,QAAQ;;GAEpC;;CAEHI,WAAWC,SAAc;AACvB,SAAOjC,SAASkC,QAAQD,SAAShC,eAAe;;CAElDkC,eAAe;AACb,SAAO;GACL,wBAAsB;GACtB,yBAAuB;GACvB,wBAAsB;GACvB;;CAEHC,UAAUC,KAAU;AAClB,OAAKvB,gBAAgBuB,IAAIvB;AACzB,OAAKC,gBAAgBsB,IAAItB;;CAE3B,CAACpB,qBAAqB2C,GAAG;EACvB,MAAMC,QAAQpC,eAAeA,aAAaC,cAAc,GAAGoC,UAAU,KAAK;EAC1E,MAAMC,MAAMF;EACZ,MAAMG,UAAUH,KAAK7B;EACrB,MAAMiC,UAAUJ,KAAKK,WAAW,GAAGlC;AACnCd,gBAAc6C,KAAKH,GAAG,YAAY,KAAKlB,MAAMyB,SAAS,GAAG;AACzD/C,oBAAkB4C,QAAQI,YAAYJ,SAASJ,GAAG,YAAY,KAAKlB,MAAM2B,QAAOT,MAAK;GACnF,MAAMC,QAAQ5B,eAAeA,aAAaC,cAAc,GAAG4B,UAAU,KAAK;GAE1E,MAAMS,KADUV,KAAK7B;AAErBb,qBAAkBoD,IAAIX,GAAG,YAAY,KAAKlB,MAAM2B,MAAM;AACtD,UAAOR;IACP;AAEFxC,eAAamD,SAAIZ,GAAG,YAAY,KAAKlB,MAAM+B,SAAS;AACpD,SAAOZ"}
@@ -0,0 +1,9 @@
1
+ //#region src/types.d.ts
2
+ type JSXNode = string | number | boolean | null | undefined | JSXNode[];
3
+ interface GMouseEvent<T extends EventTarget = Element> extends MouseEvent {
4
+ readonly currentTarget: T;
5
+ }
6
+ type MouseEventHandler<T extends EventTarget = Element> = (e: GMouseEvent<T>) => void;
7
+ //#endregion
8
+ export { MouseEventHandler as n, JSXNode as t };
9
+ //# sourceMappingURL=types.d.mts.map
@@ -1,8 +1,19 @@
1
- import { Component, GEA_SYNC_MAP, GEA_UPDATE_PROPS } from "@geajs/core";
1
+ import { Component, GEA_ON_PROP_CHANGE } from "@geajs/core";
2
2
  import { VanillaMachine } from "@zag-js/vanilla";
3
3
  import * as _$_zag_js_types0 from "@zag-js/types";
4
4
 
5
5
  //#region src/primitives/zag-component.d.ts
6
+ /**
7
+ * Under the closure-compiled runtime there is no `[GEA_MAPS]` registry on the
8
+ * component. Zag integration now uses `registerListState(listId, state)` /
9
+ * `onItemSync(listId, idx)` hooks that the compiled `keyedList` call invokes.
10
+ * We keep a local Map of list states keyed by the compiler's listId string.
11
+ */
12
+ interface ListStateRecord {
13
+ container: Element;
14
+ containerProp?: string;
15
+ getContainer?: () => Element;
16
+ }
6
17
  type SpreadCleanup = () => void;
7
18
  type PropsGetter = string | ((api: any, el: Element) => Record<string, any>);
8
19
  interface SpreadMap {
@@ -22,14 +33,25 @@ declare class ZagComponent<P = Record<string, unknown>> extends Component<P> {
22
33
  syncState(_api: any): void;
23
34
  created(props: P): void;
24
35
  _syncMachineProps(): void;
25
- [GEA_UPDATE_PROPS](nextProps: Record<string, any>): void;
36
+ [GEA_ON_PROP_CHANGE](_key: string, _next: unknown): void;
26
37
  _scheduleSpreadApplication(): void;
27
38
  _resolveProps(getter: PropsGetter, el: Element): Record<string, any> | null;
28
39
  _queryAllIncludingSelf(selector: string): Element[];
29
40
  _applyAllSpreads(): void;
30
- [GEA_SYNC_MAP](idx: number): void;
41
+ /** Compiled keyedList calls this on the owner after each reconciliation. */
42
+ onItemSync(_listId: string, _idx: number): void;
43
+ /** Compiled keyedList calls this once per list at construction. */
44
+ registerListState(listId: string, state: ListStateRecord): void;
45
+ unregisterListState(listId: string): void;
46
+ _listStates: Map<string, ListStateRecord>;
31
47
  onAfterRender(): void;
32
48
  _cacheArrayContainers(): void;
49
+ /** Stop the Zag machine + spread cleanups without fully disposing the
50
+ * component. Invoked when a parent conditional slot removes this
51
+ * component's DOM subtree so side effects on `<html>` (pointer-events,
52
+ * aria-hidden, scroll lock) are restored. The component instance stays
53
+ * alive so it can re-render if the conditional becomes truthy again. */
54
+ _stopMachine(): void;
33
55
  dispose(): void;
34
56
  static normalizeProps: _$_zag_js_types0.NormalizeProps<_$_zag_js_types0.PropTypes<{
35
57
  [x: string]: any;
@@ -1,7 +1,14 @@
1
- import { Component, GEA_MAPS, GEA_SYNC_MAP, GEA_UPDATE_PROPS } from "@geajs/core";
1
+ import { Component, GEA_ON_PROP_CHANGE } from "@geajs/core";
2
2
  import { VanillaMachine, normalizeProps, spreadProps } from "@zag-js/vanilla";
3
3
  //#region src/primitives/zag-component.ts
4
4
  var ZagComponent = class extends Component {
5
+ constructor(..._args) {
6
+ super(..._args);
7
+ this._spreadCleanups = /* @__PURE__ */ new Map();
8
+ this._spreadScheduled = false;
9
+ this._zagIdMap = /* @__PURE__ */ new Map();
10
+ this._elementCache = /* @__PURE__ */ new Map();
11
+ }
5
12
  createMachine(_props) {
6
13
  return null;
7
14
  }
@@ -22,7 +29,8 @@ var ZagComponent = class extends Component {
22
29
  if (!this._elementCache) this._elementCache = /* @__PURE__ */ new Map();
23
30
  const machineDef = this.createMachine(props);
24
31
  if (!machineDef) return;
25
- this._machine = new VanillaMachine(machineDef, this.getMachineProps(props));
32
+ const machineProps = this.getMachineProps(props);
33
+ this._machine = new VanillaMachine(machineDef, machineProps);
26
34
  const zagIdMap = this._zagIdMap;
27
35
  const origGetById = this._machine.scope.getById;
28
36
  this._machine.scope.getById = ((id) => {
@@ -45,8 +53,7 @@ var ZagComponent = class extends Component {
45
53
  this._api = this.connectApi(this._machine.service);
46
54
  this._scheduleSpreadApplication();
47
55
  }
48
- [GEA_UPDATE_PROPS](nextProps) {
49
- super[GEA_UPDATE_PROPS](nextProps);
56
+ [GEA_ON_PROP_CHANGE](_key, _next) {
50
57
  this._syncMachineProps();
51
58
  }
52
59
  _scheduleSpreadApplication() {
@@ -67,7 +74,23 @@ var ZagComponent = class extends Component {
67
74
  const results = this.$$(selector);
68
75
  const root = this.el;
69
76
  if (root && root.matches(selector) && !results.includes(root)) results.unshift(root);
70
- return results;
77
+ const COMP = Symbol.for("gea.dom.component");
78
+ if (!root) return results;
79
+ const filtered = [];
80
+ for (const el of results) {
81
+ let cur = el;
82
+ let foreign = false;
83
+ while (cur && cur !== root) {
84
+ const owner = cur[COMP];
85
+ if (owner && owner !== this) {
86
+ foreign = true;
87
+ break;
88
+ }
89
+ cur = cur.parentElement;
90
+ }
91
+ if (!foreign) filtered.push(el);
92
+ }
93
+ return filtered;
71
94
  }
72
95
  _applyAllSpreads() {
73
96
  if (!this.rendered || !this._api) return;
@@ -94,35 +117,59 @@ var ZagComponent = class extends Component {
94
117
  }
95
118
  }
96
119
  }
97
- [GEA_SYNC_MAP](idx) {
98
- super[GEA_SYNC_MAP](idx);
120
+ /** Compiled keyedList calls this on the owner after each reconciliation. */
121
+ onItemSync(_listId, _idx) {
99
122
  this._elementCache.clear();
100
123
  this._scheduleSpreadApplication();
101
124
  }
125
+ /** Compiled keyedList calls this once per list at construction. */
126
+ registerListState(listId, state) {
127
+ if (!this._listStates) this._listStates = /* @__PURE__ */ new Map();
128
+ this._listStates.set(listId, state);
129
+ }
130
+ unregisterListState(listId) {
131
+ this._listStates?.delete(listId);
132
+ }
102
133
  onAfterRender() {
103
134
  this._cacheArrayContainers();
104
135
  this._elementCache.clear();
136
+ if (this._machineStopped && !this._machine) {
137
+ this._machineStopped = false;
138
+ try {
139
+ this.created(this.props);
140
+ } catch {}
141
+ }
105
142
  this._applyAllSpreads();
106
143
  }
107
144
  _cacheArrayContainers() {
108
- const maps = this[GEA_MAPS];
109
- if (!maps) return;
110
- for (const idx in maps) {
111
- const map = maps[idx];
112
- map.container = map.getContainer();
113
- if (map.container) this[map.containerProp] = map.container;
145
+ if (!this._listStates) return;
146
+ for (const state of this._listStates.values()) {
147
+ if (state.getContainer) state.container = state.getContainer();
148
+ if (state.container && state.containerProp) this[state.containerProp] = state.container;
114
149
  }
115
150
  }
116
- dispose() {
117
- for (const cleanup of this._spreadCleanups.values()) cleanup();
151
+ /** Stop the Zag machine + spread cleanups without fully disposing the
152
+ * component. Invoked when a parent conditional slot removes this
153
+ * component's DOM subtree so side effects on `<html>` (pointer-events,
154
+ * aria-hidden, scroll lock) are restored. The component instance stays
155
+ * alive so it can re-render if the conditional becomes truthy again. */
156
+ _stopMachine() {
157
+ for (const cleanup of this._spreadCleanups.values()) try {
158
+ cleanup();
159
+ } catch {}
118
160
  this._spreadCleanups.clear();
119
161
  if (this._machine) {
120
- this._machine.stop();
162
+ try {
163
+ this._machine.stop();
164
+ } catch {}
121
165
  this._machine = null;
122
166
  }
123
167
  this._api = null;
124
168
  this._zagIdMap?.clear();
125
169
  this._elementCache?.clear();
170
+ }
171
+ dispose() {
172
+ this._stopMachine();
126
173
  super.dispose();
127
174
  }
128
175
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"zag-component.mjs","names":[],"sources":["../src/primitives/zag-component.ts"],"sourcesContent":["import { Component, GEA_MAPS, GEA_SYNC_MAP, GEA_UPDATE_PROPS } from '@geajs/core'\nimport { VanillaMachine, normalizeProps, spreadProps } from '@zag-js/vanilla'\n\ntype SpreadCleanup = () => void\ntype PropsGetter = string | ((api: any, el: Element) => Record<string, any>)\n\nexport interface SpreadMap {\n [selector: string]: PropsGetter\n}\n\nexport default class ZagComponent<P = Record<string, unknown>> extends Component<P> {\n declare _machine: VanillaMachine<any> | null\n declare _api: any\n declare _spreadCleanups: Map<string, SpreadCleanup>\n declare _spreadScheduled: boolean\n declare _zagIdMap: Map<string, Element>\n declare _elementCache: Map<string, Element[]>\n\n createMachine(_props: any): any {\n return null\n }\n\n getMachineProps(_props: any): any {\n return {}\n }\n\n connectApi(_service: any): any {\n return null\n }\n\n getSpreadMap() {\n return {}\n }\n\n syncState(_api: any): void {}\n\n created(props: P) {\n if (!this._spreadCleanups) this._spreadCleanups = new Map()\n if (this._spreadScheduled === undefined) this._spreadScheduled = false\n if (!this._zagIdMap) this._zagIdMap = new Map()\n if (!this._elementCache) this._elementCache = new Map()\n\n const machineDef = this.createMachine(props)\n if (!machineDef) return\n\n const machineProps = this.getMachineProps(props)\n this._machine = new VanillaMachine(machineDef, machineProps)\n\n // Patch scope.getById: Zag uses IDs like \"tags-input:xyz:...\" for DOM\n // lookups, but _applyAllSpreads restores compiler binding IDs on elements.\n // The mapping lets Zag find elements by their expected Zag IDs.\n const zagIdMap = this._zagIdMap\n const origGetById = this._machine.scope.getById\n this._machine.scope.getById = ((id: string) => {\n return origGetById(id) || zagIdMap.get(id) || null\n }) as typeof origGetById\n\n this._machine.start()\n\n this._api = this.connectApi(this._machine.service)\n this.syncState(this._api)\n\n this._machine.subscribe(() => {\n if (!this._machine) return\n this._api = this.connectApi(this._machine.service)\n this._scheduleSpreadApplication()\n })\n }\n\n _syncMachineProps() {\n const machine = this._machine as any\n if (!machine?.userPropsRef) return\n const next = this.getMachineProps(this.props)\n machine.userPropsRef.current = next\n this._api = this.connectApi(this._machine!.service)\n this._scheduleSpreadApplication()\n }\n\n [GEA_UPDATE_PROPS](nextProps: Record<string, any>) {\n // @ts-ignore — symbol method signature mismatch across packages\n super[GEA_UPDATE_PROPS](nextProps)\n this._syncMachineProps()\n }\n\n _scheduleSpreadApplication() {\n if (this._spreadScheduled) return\n this._spreadScheduled = true\n queueMicrotask(() => {\n this._spreadScheduled = false\n this._applyAllSpreads()\n })\n }\n\n _resolveProps(getter: PropsGetter, el: Element): Record<string, any> | null {\n if (typeof getter === 'function') {\n return getter(this._api, el)\n }\n const method = this._api[getter]\n if (typeof method !== 'function') return null\n return method.call(this._api)\n }\n\n _queryAllIncludingSelf(selector: string): Element[] {\n const results = this.$$(selector)\n const root = this.el\n if (root && root.matches(selector) && !results.includes(root)) {\n results.unshift(root)\n }\n return results\n }\n\n _applyAllSpreads() {\n if (!this.rendered || !this._api) return\n const map = this.getSpreadMap()\n\n for (const selector in map) {\n const getter = map[selector]\n\n let elements = this._elementCache.get(selector)\n if (!elements) {\n elements = this._queryAllIncludingSelf(selector)\n this._elementCache.set(selector, elements)\n }\n\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i]\n const key = selector + ':' + i\n const nextProps = this._resolveProps(getter, el)\n if (!nextProps) continue\n\n // Preserve compiled binding IDs: Zag's spreadProps overrides element\n // IDs, but the compiler's observers rely on getElementById with binding\n // IDs. We restore the binding ID and store the Zag ID in _zagIdMap so\n // scope.getById (patched in created()) can still find elements.\n // Note: we never clear _zagIdMap here because spreadProps caches\n // previous attrs and skips unchanged values — on subsequent calls the\n // ID won't be re-set, so we'd lose the mapping.\n const bindingId = el.id\n const cleanup = spreadProps(el, nextProps)\n if (bindingId && el.id !== bindingId) {\n this._zagIdMap.set(el.id, el)\n el.id = bindingId\n }\n this._spreadCleanups.set(key, cleanup)\n }\n }\n }\n\n [GEA_SYNC_MAP](idx: number) {\n // @ts-ignore — symbol method signature mismatch across packages\n super[GEA_SYNC_MAP](idx)\n this._elementCache.clear()\n // After the map syncs new/updated DOM items, Zag spreads must be\n // re-applied because createItemFn produces elements without Zag's\n // event handlers and attributes.\n this._scheduleSpreadApplication()\n }\n\n onAfterRender() {\n this._cacheArrayContainers()\n this._elementCache.clear()\n this._applyAllSpreads()\n }\n\n _cacheArrayContainers() {\n const maps = (this as any)[GEA_MAPS]\n if (!maps) return\n for (const idx in maps) {\n const map = maps[idx]\n map.container = map.getContainer()\n if (map.container) (this as any)[map.containerProp] = map.container\n }\n }\n\n dispose() {\n for (const cleanup of this._spreadCleanups.values()) {\n cleanup()\n }\n this._spreadCleanups.clear()\n\n if (this._machine) {\n this._machine.stop()\n this._machine = null\n }\n this._api = null\n this._zagIdMap?.clear()\n this._elementCache?.clear()\n\n super.dispose()\n }\n\n static normalizeProps = normalizeProps\n}\n"],"mappings":";;;AAUA,IAAqB,eAArB,cAAuE,UAAa;CAQlF,cAAc,QAAkB;AAC9B,SAAO;;CAGT,gBAAgB,QAAkB;AAChC,SAAO,EAAE;;CAGX,WAAW,UAAoB;AAC7B,SAAO;;CAGT,eAAe;AACb,SAAO,EAAE;;CAGX,UAAU,MAAiB;CAE3B,QAAQ,OAAU;AAChB,MAAI,CAAC,KAAK,gBAAiB,MAAK,kCAAkB,IAAI,KAAK;AAC3D,MAAI,KAAK,qBAAqB,KAAA,EAAW,MAAK,mBAAmB;AACjE,MAAI,CAAC,KAAK,UAAW,MAAK,4BAAY,IAAI,KAAK;AAC/C,MAAI,CAAC,KAAK,cAAe,MAAK,gCAAgB,IAAI,KAAK;EAEvD,MAAM,aAAa,KAAK,cAAc,MAAM;AAC5C,MAAI,CAAC,WAAY;AAGjB,OAAK,WAAW,IAAI,eAAe,YADd,KAAK,gBAAgB,MAAM,CACY;EAK5D,MAAM,WAAW,KAAK;EACtB,MAAM,cAAc,KAAK,SAAS,MAAM;AACxC,OAAK,SAAS,MAAM,YAAY,OAAe;AAC7C,UAAO,YAAY,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI;;AAGhD,OAAK,SAAS,OAAO;AAErB,OAAK,OAAO,KAAK,WAAW,KAAK,SAAS,QAAQ;AAClD,OAAK,UAAU,KAAK,KAAK;AAEzB,OAAK,SAAS,gBAAgB;AAC5B,OAAI,CAAC,KAAK,SAAU;AACpB,QAAK,OAAO,KAAK,WAAW,KAAK,SAAS,QAAQ;AAClD,QAAK,4BAA4B;IACjC;;CAGJ,oBAAoB;EAClB,MAAM,UAAU,KAAK;AACrB,MAAI,CAAC,SAAS,aAAc;EAC5B,MAAM,OAAO,KAAK,gBAAgB,KAAK,MAAM;AAC7C,UAAQ,aAAa,UAAU;AAC/B,OAAK,OAAO,KAAK,WAAW,KAAK,SAAU,QAAQ;AACnD,OAAK,4BAA4B;;CAGnC,CAAC,kBAAkB,WAAgC;AAEjD,QAAM,kBAAkB,UAAU;AAClC,OAAK,mBAAmB;;CAG1B,6BAA6B;AAC3B,MAAI,KAAK,iBAAkB;AAC3B,OAAK,mBAAmB;AACxB,uBAAqB;AACnB,QAAK,mBAAmB;AACxB,QAAK,kBAAkB;IACvB;;CAGJ,cAAc,QAAqB,IAAyC;AAC1E,MAAI,OAAO,WAAW,WACpB,QAAO,OAAO,KAAK,MAAM,GAAG;EAE9B,MAAM,SAAS,KAAK,KAAK;AACzB,MAAI,OAAO,WAAW,WAAY,QAAO;AACzC,SAAO,OAAO,KAAK,KAAK,KAAK;;CAG/B,uBAAuB,UAA6B;EAClD,MAAM,UAAU,KAAK,GAAG,SAAS;EACjC,MAAM,OAAO,KAAK;AAClB,MAAI,QAAQ,KAAK,QAAQ,SAAS,IAAI,CAAC,QAAQ,SAAS,KAAK,CAC3D,SAAQ,QAAQ,KAAK;AAEvB,SAAO;;CAGT,mBAAmB;AACjB,MAAI,CAAC,KAAK,YAAY,CAAC,KAAK,KAAM;EAClC,MAAM,MAAM,KAAK,cAAc;AAE/B,OAAK,MAAM,YAAY,KAAK;GAC1B,MAAM,SAAS,IAAI;GAEnB,IAAI,WAAW,KAAK,cAAc,IAAI,SAAS;AAC/C,OAAI,CAAC,UAAU;AACb,eAAW,KAAK,uBAAuB,SAAS;AAChD,SAAK,cAAc,IAAI,UAAU,SAAS;;AAG5C,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;IACxC,MAAM,KAAK,SAAS;IACpB,MAAM,MAAM,WAAW,MAAM;IAC7B,MAAM,YAAY,KAAK,cAAc,QAAQ,GAAG;AAChD,QAAI,CAAC,UAAW;IAShB,MAAM,YAAY,GAAG;IACrB,MAAM,UAAU,YAAY,IAAI,UAAU;AAC1C,QAAI,aAAa,GAAG,OAAO,WAAW;AACpC,UAAK,UAAU,IAAI,GAAG,IAAI,GAAG;AAC7B,QAAG,KAAK;;AAEV,SAAK,gBAAgB,IAAI,KAAK,QAAQ;;;;CAK5C,CAAC,cAAc,KAAa;AAE1B,QAAM,cAAc,IAAI;AACxB,OAAK,cAAc,OAAO;AAI1B,OAAK,4BAA4B;;CAGnC,gBAAgB;AACd,OAAK,uBAAuB;AAC5B,OAAK,cAAc,OAAO;AAC1B,OAAK,kBAAkB;;CAGzB,wBAAwB;EACtB,MAAM,OAAQ,KAAa;AAC3B,MAAI,CAAC,KAAM;AACX,OAAK,MAAM,OAAO,MAAM;GACtB,MAAM,MAAM,KAAK;AACjB,OAAI,YAAY,IAAI,cAAc;AAClC,OAAI,IAAI,UAAY,MAAa,IAAI,iBAAiB,IAAI;;;CAI9D,UAAU;AACR,OAAK,MAAM,WAAW,KAAK,gBAAgB,QAAQ,CACjD,UAAS;AAEX,OAAK,gBAAgB,OAAO;AAE5B,MAAI,KAAK,UAAU;AACjB,QAAK,SAAS,MAAM;AACpB,QAAK,WAAW;;AAElB,OAAK,OAAO;AACZ,OAAK,WAAW,OAAO;AACvB,OAAK,eAAe,OAAO;AAE3B,QAAM,SAAS;;;wBAGO"}
1
+ {"version":3,"file":"zag-component.mjs","names":[],"sources":["../src/primitives/zag-component.ts"],"sourcesContent":["import { Component, GEA_ON_PROP_CHANGE } from '@geajs/core'\nimport { VanillaMachine, normalizeProps, spreadProps } from '@zag-js/vanilla'\n\n/**\n * Under the closure-compiled runtime there is no `[GEA_MAPS]` registry on the\n * component. Zag integration now uses `registerListState(listId, state)` /\n * `onItemSync(listId, idx)` hooks that the compiled `keyedList` call invokes.\n * We keep a local Map of list states keyed by the compiler's listId string.\n */\ninterface ListStateRecord {\n container: Element\n containerProp?: string\n getContainer?: () => Element\n}\n\ntype SpreadCleanup = () => void\ntype PropsGetter = string | ((api: any, el: Element) => Record<string, any>)\n\nexport interface SpreadMap {\n [selector: string]: PropsGetter\n}\n\nexport default class ZagComponent<P = Record<string, unknown>> extends Component<P> {\n declare _machine: VanillaMachine<any> | null\n declare _api: any\n // Initialize fields eagerly — under the closure-compiled runtime, `created()`\n // may be called AFTER `[GEA_CREATE_TEMPLATE]`, which references these caches.\n _spreadCleanups: Map<string, SpreadCleanup> = new Map()\n _spreadScheduled: boolean = false\n _zagIdMap: Map<string, Element> = new Map()\n _elementCache: Map<string, Element[]> = new Map()\n\n createMachine(_props: any): any {\n return null\n }\n\n getMachineProps(_props: any): any {\n return {}\n }\n\n connectApi(_service: any): any {\n return null\n }\n\n getSpreadMap() {\n return {}\n }\n\n syncState(_api: any): void {}\n\n created(props: P) {\n if (!this._spreadCleanups) this._spreadCleanups = new Map()\n if (this._spreadScheduled === undefined) this._spreadScheduled = false\n if (!this._zagIdMap) this._zagIdMap = new Map()\n if (!this._elementCache) this._elementCache = new Map()\n\n const machineDef = this.createMachine(props)\n if (!machineDef) return\n\n const machineProps = this.getMachineProps(props)\n this._machine = new VanillaMachine(machineDef, machineProps)\n\n // Patch scope.getById: Zag uses IDs like \"tags-input:xyz:...\" for DOM\n // lookups, but _applyAllSpreads restores compiler binding IDs on elements.\n // The mapping lets Zag find elements by their expected Zag IDs.\n const zagIdMap = this._zagIdMap\n const origGetById = this._machine.scope.getById\n this._machine.scope.getById = ((id: string) => {\n return origGetById(id) || zagIdMap.get(id) || null\n }) as typeof origGetById\n\n this._machine.start()\n\n this._api = this.connectApi(this._machine.service)\n this.syncState(this._api)\n\n this._machine.subscribe(() => {\n if (!this._machine) return\n this._api = this.connectApi(this._machine.service)\n this._scheduleSpreadApplication()\n })\n }\n\n _syncMachineProps() {\n const machine = this._machine as any\n if (!machine?.userPropsRef) return\n const next = this.getMachineProps(this.props)\n machine.userPropsRef.current = next\n this._api = this.connectApi(this._machine!.service)\n this._scheduleSpreadApplication()\n }\n\n [GEA_ON_PROP_CHANGE](_key: string, _next: unknown) {\n this._syncMachineProps()\n }\n\n _scheduleSpreadApplication() {\n if (this._spreadScheduled) return\n this._spreadScheduled = true\n queueMicrotask(() => {\n this._spreadScheduled = false\n this._applyAllSpreads()\n })\n }\n\n _resolveProps(getter: PropsGetter, el: Element): Record<string, any> | null {\n if (typeof getter === 'function') {\n return getter(this._api, el)\n }\n const method = this._api[getter]\n if (typeof method !== 'function') return null\n return method.call(this._api)\n }\n\n _queryAllIncludingSelf(selector: string): Element[] {\n const results = this.$$(selector)\n const root = this.el\n if (root && root.matches(selector) && !results.includes(root)) {\n results.unshift(root)\n }\n // Exclude elements that live inside ANOTHER component's subtree. Every\n // mounted Gea component tags its root element with `GEA_DOM_COMPONENT`\n // (Symbol.for('gea.dom.component')). Walking up from each match toward\n // `root`, if we cross a tagged element whose component !== this, that\n // match belongs to a nested component — skip it. Prevents a parent\n // ZagComponent (e.g. Dialog) from clobbering child-Zag parts like\n // `[data-part=\"trigger\"]` shared by Select/Menu/Tabs, which live inside\n // a slot (`props.children`) and aren't tracked in `this._cc`.\n const COMP = Symbol.for('gea.dom.component')\n if (!root) return results\n const filtered: Element[] = []\n for (const el of results) {\n let cur: Element | null = el\n let foreign = false\n while (cur && cur !== root) {\n const owner = (cur as any)[COMP]\n if (owner && owner !== this) {\n foreign = true\n break\n }\n cur = cur.parentElement\n }\n if (!foreign) filtered.push(el)\n }\n return filtered\n }\n\n _applyAllSpreads() {\n if (!this.rendered || !this._api) return\n const map = this.getSpreadMap()\n\n for (const selector in map) {\n const getter = map[selector]\n\n let elements = this._elementCache.get(selector)\n if (!elements) {\n elements = this._queryAllIncludingSelf(selector)\n this._elementCache.set(selector, elements)\n }\n\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i]\n const key = selector + ':' + i\n const nextProps = this._resolveProps(getter, el)\n if (!nextProps) continue\n\n // Preserve compiled binding IDs: Zag's spreadProps overrides element\n // IDs, but the compiler's observers rely on getElementById with binding\n // IDs. We restore the binding ID and store the Zag ID in _zagIdMap so\n // scope.getById (patched in created()) can still find elements.\n // Note: we never clear _zagIdMap here because spreadProps caches\n // previous attrs and skips unchanged values — on subsequent calls the\n // ID won't be re-set, so we'd lose the mapping.\n const bindingId = el.id\n const cleanup = spreadProps(el, nextProps)\n if (bindingId && el.id !== bindingId) {\n this._zagIdMap.set(el.id, el)\n el.id = bindingId\n }\n this._spreadCleanups.set(key, cleanup)\n }\n }\n }\n\n /** Compiled keyedList calls this on the owner after each reconciliation. */\n onItemSync(_listId: string, _idx: number) {\n this._elementCache.clear()\n this._scheduleSpreadApplication()\n }\n\n /** Compiled keyedList calls this once per list at construction. */\n registerListState(listId: string, state: ListStateRecord) {\n if (!this._listStates) this._listStates = new Map()\n this._listStates.set(listId, state)\n }\n\n unregisterListState(listId: string) {\n this._listStates?.delete(listId)\n }\n\n declare _listStates: Map<string, ListStateRecord>\n\n onAfterRender() {\n this._cacheArrayContainers()\n this._elementCache.clear()\n // If the machine was stopped (parent conditional removed this component's\n // subtree) and the subtree is now re-shown, re-create the Zag machine\n // so spread props + event handlers work again.\n if ((this as any)._machineStopped && !this._machine) {\n ;(this as any)._machineStopped = false\n try {\n this.created(this.props)\n } catch {\n /* isolated */\n }\n }\n this._applyAllSpreads()\n }\n\n _cacheArrayContainers() {\n if (!this._listStates) return\n for (const state of this._listStates.values()) {\n if (state.getContainer) state.container = state.getContainer()\n if (state.container && state.containerProp) (this as any)[state.containerProp] = state.container\n }\n }\n\n /** Stop the Zag machine + spread cleanups without fully disposing the\n * component. Invoked when a parent conditional slot removes this\n * component's DOM subtree so side effects on `<html>` (pointer-events,\n * aria-hidden, scroll lock) are restored. The component instance stays\n * alive so it can re-render if the conditional becomes truthy again. */\n _stopMachine() {\n for (const cleanup of this._spreadCleanups.values()) {\n try {\n cleanup()\n } catch {\n /* isolated */\n }\n }\n this._spreadCleanups.clear()\n if (this._machine) {\n try {\n this._machine.stop()\n } catch {\n /* isolated */\n }\n this._machine = null\n }\n this._api = null\n this._zagIdMap?.clear()\n this._elementCache?.clear()\n }\n\n dispose() {\n this._stopMachine()\n super.dispose()\n }\n\n static normalizeProps = normalizeProps\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geajs/ui",
3
- "version": "0.2.3",
3
+ "version": "0.2.9",
4
4
  "description": "Accessible UI components for Gea, powered by Zag.js state machines and styled with Tailwind CSS",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
@@ -39,7 +39,8 @@
39
39
  ],
40
40
  "scripts": {
41
41
  "build": "tsdown --config-loader unrun",
42
- "build:docs": "vite build --config ../../examples/docs/vite.config.prod.ts"
42
+ "build:docs": "vite build --config ../../examples/docs/vite.config.prod.ts",
43
+ "test": "tsx --conditions source --test tests/*.test.ts"
43
44
  },
44
45
  "publishConfig": {
45
46
  "access": "public"
@@ -84,12 +85,11 @@
84
85
  "tailwind-merge": "^3.0.0"
85
86
  },
86
87
  "devDependencies": {
87
- "@types/react": "^19.0.0",
88
88
  "@playwright/test": "^1.58.2",
89
89
  "@tailwindcss/vite": "^4.0.0",
90
90
  "prismjs": "^1.30.0",
91
91
  "tailwindcss": "^4.0.0",
92
92
  "tsdown": "^0.21.2",
93
- "typescript": "^5.9.3"
93
+ "typescript": "^6.0.3"
94
94
  }
95
- }
95
+ }
package/dist/cn.mjs DELETED
@@ -1,10 +0,0 @@
1
- import { clsx } from "clsx";
2
- import { twMerge } from "tailwind-merge";
3
- //#region src/utils/cn.ts
4
- function cn(...inputs) {
5
- return twMerge(clsx(inputs));
6
- }
7
- //#endregion
8
- export { cn as t };
9
-
10
- //# sourceMappingURL=cn.mjs.map
package/dist/cn.mjs.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cn.mjs","names":[],"sources":["../src/utils/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n"],"mappings":";;;AAGA,SAAgB,GAAG,GAAG,QAAsB;AAC1C,QAAO,QAAQ,KAAK,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"draggable.mjs","names":["Component","GEA_ELEMENT","GEA_ON_PROP_CHANGE","GEA_PATCH_NODE","GEA_INSTANTIATE_CHILD_COMPONENTS","GEA_MOUNT_COMPILED_CHILD_COMPONENTS","dndManager","Draggable","__geaTagName","_didDrag","_onPointerDown","e","PointerEvent","el","currentTarget","HTMLElement","closest","startTracking","props","draggableId","template","__id","id","class","trim","index","children","events","__evts","__geaEvtsResult","pointerdown","__event_pointerdown_0","click","__event_click_1","targetComponent","isDragging","preventDefault","stopPropagation","key","value","__el","__boundValue","__newClass","String","replace","className","__av","removeAttribute","__newAttr","getAttribute","setAttribute","__tw","document","createElement","innerHTML","__newEl","content","firstElementChild","__existEl","childNodes","length","constructor","parentComponent"],"sources":["../src/components/draggable.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { dndManager } from './dnd-manager'\n\nexport default class Draggable extends Component {\n _didDrag = false\n\n _onPointerDown(e: PointerEvent) {\n const el = (e.currentTarget as HTMLElement).closest('.gea-draggable') as HTMLElement\n if (!el) return\n this._didDrag = false\n dndManager.startTracking(e, this.props.draggableId as string, el)\n }\n\n template(props: any) {\n return (\n <div\n class={`gea-draggable ${props.class || ''}`}\n data-draggable-id={props.draggableId}\n data-index={props.index}\n pointerdown={(e: PointerEvent) => this._onPointerDown(e)}\n click={(e: MouseEvent) => {\n if (dndManager.isDragging) {\n e.preventDefault()\n e.stopPropagation()\n }\n }}\n >\n {props.children}\n </div>\n )\n }\n}\n"],"mappings":";;;AAGA,IAAqBO,YAArB,cAAuCP,UAAU;;;kBACpC;;;sBADoC;;CAG/CU,eAAeC,GAAiB;EAC9B,MAAME,KAAMF,EAAEG,cAA8BE,QAAQ,iBAAiB;AACrE,MAAI,CAACH,GAAI;AACT,OAAKJ,WAAW;AAChBH,aAAWW,cAAcN,GAAG,KAAKO,MAAMC,aAAuBN,GAAG;;CAGnEO,SAASF,OAAY;AACnB,SAAA,YADmB,KAAAI,GACnB,WAEW,iBAAiBJ,MAAMK,SAAS,KAAIC,MAAA,CAAA,GACxBN,MAAMC,eAAW,QAAjBD,MAAMC,gBAAW,QAAA,KAAA,uBAAjBD,MAAMC,YAAW,KACxBD,MAAMO,SAAK,QAAXP,MAAMO,UAAK,QAAA,KAAA,gBAAXP,MAAMO,MAAK,GAAA,GAStBP,MAAMQ,SAAQ;;CAGpB,IAAAC,SAAA;AAAA,MAAA,KAAAC,UAAA,KAAA3B,aAAA,QAAA,KAAA2B;EAAA,MAAAP,OAAA,KAAAC;EAAA,MAAAO,kBAAA;GAAAC,aAAA,GAAA,IAAAT,SAAA,KAAAU,uBAAA;GAAAC,OAAA,GAAA,IAAAX,SAAA,KAAAY,iBAAA;GAAA;AAAA,MAAA,KAAAhC,aAAA,MAAA2B,SAAAC;AAAA,SAAAA;;CA7BHE,sBAAsBpB,GAAGuB,iBAAiB;AAkBA,OAAKxB,eAAeC,EAAE;;CAlBhEsB,gBAAsBtB,GAAGuB,iBAAiB;AAoBhC,MAAI5B,WAAW6B,YAAY;AACzBxB,KAAEyB,gBAAgB;AAClBzB,KAAE0B,iBAAiB;;;CAtB/B,CAAAnC,oBAAwBoC,KAAKC,OAAK;AAAA,MAAAD,QAAA,SAAA;GAAA,MAAAE,OAAA,KAAAvC;AAYb,QAAAiB;GAAA,MAAAuB,eAGN,iBAAiBF,SAAe;AAAI,OAAAC,MAfnD;IACM,MAAME,aADXC,OAAOF,gBAAyB,GAAG,CAAEjB,MAAM,CAACoB,QAAQ,QAAQ,IACf;AACxC,QAAIJ,KAAsBK,cAAcH,WAAYF,MAAsBK,YAAYH;;;AACvF,MAAAJ,QAAA,eAAA;GAAA,MAAAE,OAAA,KAAAvC;AAAA,OAAAuC,MAAA;IAFC,IAAIM,OAAIP;AACR,QAAIO,QAAQ,QAAQA,SAAS,MAC3BN,MAAsBO,gBAAgB,oBAAoB;SACrD;KACL,MAAMC,YAAYL,OAAOG,KAAK;AAC9B,SAAIN,KAAsBS,aAAa,oBAAoB,KAAKD,UAC9DR,MAAsBU,aAAa,qBAAqBF,UAAU;;;;AACrE,MAAAV,QAAA,SAAA;GAAA,MAAAE,OAAA,KAAAvC;AAAA,OAAAuC,MAAA;IAPD,IAAIM,OAAIP;AACR,QAAIO,QAAQ,QAAQA,SAAS,MAC3BN,MAAsBO,gBAAgB,aAAa;SAC9C;KACL,MAAMC,YAAYL,OAAOG,KAAK;AAC9B,SAAIN,KAAsBS,aAAa,aAAa,KAAKD,UACvDR,MAAsBU,aAAa,cAAcF,UAAU;;;;AAC9D,MAAAV,QAAA,YAAA;GAAA,MAAAE,OAAA,KAAAvC;AAAA,OAAAuC,MARP;IACI,MAAMW,OAAOC,SAASC,cAAc,WAAW;AAC/CF,SAAKG,YAASf;IACd,MAAMgB,UAAUJ,KAAKK,QAAQC;IAC7B,MAAMC,YAAYlB,KAAsBiB;AACxC,QAAIF,WAAWG,aAAaP,KAAKK,QAAQG,WAAWC,WAAW,EAC7D,MAAKC,YAAW1D,gBAAwBuD,WAAWH,SAAS,KAAK;aACxDf,KAAsBc,cAASf,OAA4B;AACpEC,UAAsBc,YAASf;AAC/B,UAAInC,mCAAyB;AAC7B,SAAI,KAAK0D,gBAAiB,MAAKA,gBAAezD,sCAAyB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input.mjs","names":["Component","GEA_ELEMENT","GEA_ON_PROP_CHANGE","cn","Input","__geaTagName","template","props","__id","id","inputId","class","String","trim","type","placeholder","value","disabled","name","events","__evts","__geaEvtsResult","input","__event_input_0","e","targetComponent","onInput","key","__el","__boundValue","__newClass","replace","className","__av","removeAttribute","__newAttr","getAttribute","setAttribute"],"sources":["../src/components/input.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { cn } from '../utils/cn'\n\nexport default class Input extends Component {\n template(props: any) {\n return (\n <input\n class={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n props.class,\n )}\n type={props.type || 'text'}\n placeholder={props.placeholder}\n value={props.value}\n disabled={props.disabled}\n name={props.name}\n id={props.inputId}\n input={(e: Event) => props.onInput?.(e)}\n />\n )\n }\n}\n"],"mappings":"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"}