@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
@@ -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 {
@@ -11,6 +22,7 @@ interface SpreadMap {
11
22
  declare class ZagComponent<P = Record<string, unknown>> extends Component<P> {
12
23
  _machine: VanillaMachine<any> | null;
13
24
  _api: any;
25
+ _machineStarted: boolean;
14
26
  _spreadCleanups: Map<string, SpreadCleanup>;
15
27
  _spreadScheduled: boolean;
16
28
  _zagIdMap: Map<string, Element>;
@@ -22,14 +34,25 @@ declare class ZagComponent<P = Record<string, unknown>> extends Component<P> {
22
34
  syncState(_api: any): void;
23
35
  created(props: P): void;
24
36
  _syncMachineProps(): void;
25
- [GEA_UPDATE_PROPS](nextProps: Record<string, any>): void;
37
+ [GEA_ON_PROP_CHANGE](_key: string, _next: unknown): void;
26
38
  _scheduleSpreadApplication(): void;
27
39
  _resolveProps(getter: PropsGetter, el: Element): Record<string, any> | null;
28
40
  _queryAllIncludingSelf(selector: string): Element[];
29
41
  _applyAllSpreads(): void;
30
- [GEA_SYNC_MAP](idx: number): void;
42
+ /** Compiled keyedList calls this on the owner after each reconciliation. */
43
+ onItemSync(_listId: string, _idx: number): void;
44
+ /** Compiled keyedList calls this once per list at construction. */
45
+ registerListState(listId: string, state: ListStateRecord): void;
46
+ unregisterListState(listId: string): void;
47
+ _listStates: Map<string, ListStateRecord>;
31
48
  onAfterRender(): void;
32
49
  _cacheArrayContainers(): void;
50
+ /** Stop the Zag machine + spread cleanups without fully disposing the
51
+ * component. Invoked when a parent conditional slot removes this
52
+ * component's DOM subtree so side effects on `<html>` (pointer-events,
53
+ * aria-hidden, scroll lock) are restored. The component instance stays
54
+ * alive so it can re-render if the conditional becomes truthy again. */
55
+ _stopMachine(): void;
33
56
  dispose(): void;
34
57
  static normalizeProps: _$_zag_js_types0.NormalizeProps<_$_zag_js_types0.PropTypes<{
35
58
  [x: string]: any;
@@ -1,7 +1,15 @@
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._machineStarted = false;
8
+ this._spreadCleanups = /* @__PURE__ */ new Map();
9
+ this._spreadScheduled = false;
10
+ this._zagIdMap = /* @__PURE__ */ new Map();
11
+ this._elementCache = /* @__PURE__ */ new Map();
12
+ }
5
13
  createMachine(_props) {
6
14
  return null;
7
15
  }
@@ -22,13 +30,14 @@ var ZagComponent = class extends Component {
22
30
  if (!this._elementCache) this._elementCache = /* @__PURE__ */ new Map();
23
31
  const machineDef = this.createMachine(props);
24
32
  if (!machineDef) return;
25
- this._machine = new VanillaMachine(machineDef, this.getMachineProps(props));
33
+ const machineProps = this.getMachineProps(props);
34
+ this._machine = new VanillaMachine(machineDef, machineProps);
26
35
  const zagIdMap = this._zagIdMap;
27
36
  const origGetById = this._machine.scope.getById;
28
37
  this._machine.scope.getById = ((id) => {
29
38
  return origGetById(id) || zagIdMap.get(id) || null;
30
39
  });
31
- this._machine.start();
40
+ this._machineStarted = false;
32
41
  this._api = this.connectApi(this._machine.service);
33
42
  this.syncState(this._api);
34
43
  this._machine.subscribe(() => {
@@ -45,8 +54,7 @@ var ZagComponent = class extends Component {
45
54
  this._api = this.connectApi(this._machine.service);
46
55
  this._scheduleSpreadApplication();
47
56
  }
48
- [GEA_UPDATE_PROPS](nextProps) {
49
- super[GEA_UPDATE_PROPS](nextProps);
57
+ [GEA_ON_PROP_CHANGE](_key, _next) {
50
58
  this._syncMachineProps();
51
59
  }
52
60
  _scheduleSpreadApplication() {
@@ -67,7 +75,23 @@ var ZagComponent = class extends Component {
67
75
  const results = this.$$(selector);
68
76
  const root = this.el;
69
77
  if (root && root.matches(selector) && !results.includes(root)) results.unshift(root);
70
- return results;
78
+ const COMP = Symbol.for("gea.dom.component");
79
+ if (!root) return results;
80
+ const filtered = [];
81
+ for (const el of results) {
82
+ let cur = el;
83
+ let foreign = false;
84
+ while (cur && cur !== root) {
85
+ const owner = cur[COMP];
86
+ if (owner && owner !== this) {
87
+ foreign = true;
88
+ break;
89
+ }
90
+ cur = cur.parentElement;
91
+ }
92
+ if (!foreign) filtered.push(el);
93
+ }
94
+ return filtered;
71
95
  }
72
96
  _applyAllSpreads() {
73
97
  if (!this.rendered || !this._api) return;
@@ -94,35 +118,67 @@ var ZagComponent = class extends Component {
94
118
  }
95
119
  }
96
120
  }
97
- [GEA_SYNC_MAP](idx) {
98
- super[GEA_SYNC_MAP](idx);
121
+ /** Compiled keyedList calls this on the owner after each reconciliation. */
122
+ onItemSync(_listId, _idx) {
99
123
  this._elementCache.clear();
100
124
  this._scheduleSpreadApplication();
101
125
  }
126
+ /** Compiled keyedList calls this once per list at construction. */
127
+ registerListState(listId, state) {
128
+ if (!this._listStates) this._listStates = /* @__PURE__ */ new Map();
129
+ this._listStates.set(listId, state);
130
+ }
131
+ unregisterListState(listId) {
132
+ this._listStates?.delete(listId);
133
+ }
102
134
  onAfterRender() {
103
135
  this._cacheArrayContainers();
104
136
  this._elementCache.clear();
137
+ if (this._machineStopped && !this._machine) {
138
+ this._machineStopped = false;
139
+ try {
140
+ this.created(this.props);
141
+ } catch {}
142
+ }
105
143
  this._applyAllSpreads();
144
+ if (this._machine && !this._machineStarted) {
145
+ this._machineStarted = true;
146
+ this._machine.start();
147
+ this._api = this.connectApi(this._machine.service);
148
+ this.syncState(this._api);
149
+ this._applyAllSpreads();
150
+ }
106
151
  }
107
152
  _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;
153
+ if (!this._listStates) return;
154
+ for (const state of this._listStates.values()) {
155
+ if (state.getContainer) state.container = state.getContainer();
156
+ if (state.container && state.containerProp) this[state.containerProp] = state.container;
114
157
  }
115
158
  }
116
- dispose() {
117
- for (const cleanup of this._spreadCleanups.values()) cleanup();
159
+ /** Stop the Zag machine + spread cleanups without fully disposing the
160
+ * component. Invoked when a parent conditional slot removes this
161
+ * component's DOM subtree so side effects on `<html>` (pointer-events,
162
+ * aria-hidden, scroll lock) are restored. The component instance stays
163
+ * alive so it can re-render if the conditional becomes truthy again. */
164
+ _stopMachine() {
165
+ for (const cleanup of this._spreadCleanups.values()) try {
166
+ cleanup();
167
+ } catch {}
118
168
  this._spreadCleanups.clear();
119
169
  if (this._machine) {
120
- this._machine.stop();
170
+ try {
171
+ this._machine.stop();
172
+ } catch {}
121
173
  this._machine = null;
122
174
  }
123
175
  this._api = null;
176
+ this._machineStarted = false;
124
177
  this._zagIdMap?.clear();
125
178
  this._elementCache?.clear();
179
+ }
180
+ dispose() {
181
+ this._stopMachine();
126
182
  super.dispose();
127
183
  }
128
184
  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":"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"}
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 _machineStarted = false\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._machineStarted = false\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 // Entry actions and effects query Zag part IDs. Start only after the DOM\n // and ID mappings exist, including images that loaded before mount.\n if (this._machine && !this._machineStarted) {\n this._machineStarted = true\n this._machine.start()\n this._api = this.connectApi(this._machine.service)\n this.syncState(this._api)\n this._applyAllSpreads()\n }\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._machineStarted = false\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":";;;AAsBA,IAAqB,eAArB,cAAuE,UAAa;;;yBAGhE;yCAG4B,IAAI,KAAK;0BAC3B;mCACM,IAAI,KAAK;uCACH,IAAI,KAAK;;CAEjD,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;EAEjB,MAAM,eAAe,KAAK,gBAAgB,MAAM;AAChD,OAAK,WAAW,IAAI,eAAe,YAAY,aAAa;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,kBAAkB;AAEvB,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,oBAAoB,MAAc,OAAgB;AACjD,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;EAUvB,MAAM,OAAO,OAAO,IAAI,oBAAoB;AAC5C,MAAI,CAAC,KAAM,QAAO;EAClB,MAAM,WAAsB,EAAE;AAC9B,OAAK,MAAM,MAAM,SAAS;GACxB,IAAI,MAAsB;GAC1B,IAAI,UAAU;AACd,UAAO,OAAO,QAAQ,MAAM;IAC1B,MAAM,QAAS,IAAY;AAC3B,QAAI,SAAS,UAAU,MAAM;AAC3B,eAAU;AACV;;AAEF,UAAM,IAAI;;AAEZ,OAAI,CAAC,QAAS,UAAS,KAAK,GAAG;;AAEjC,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;;;;;CAM5C,WAAW,SAAiB,MAAc;AACxC,OAAK,cAAc,OAAO;AAC1B,OAAK,4BAA4B;;;CAInC,kBAAkB,QAAgB,OAAwB;AACxD,MAAI,CAAC,KAAK,YAAa,MAAK,8BAAc,IAAI,KAAK;AACnD,OAAK,YAAY,IAAI,QAAQ,MAAM;;CAGrC,oBAAoB,QAAgB;AAClC,OAAK,aAAa,OAAO,OAAO;;CAKlC,gBAAgB;AACd,OAAK,uBAAuB;AAC5B,OAAK,cAAc,OAAO;AAI1B,MAAK,KAAa,mBAAmB,CAAC,KAAK,UAAU;AACjD,QAAa,kBAAkB;AACjC,OAAI;AACF,SAAK,QAAQ,KAAK,MAAM;WAClB;;AAIV,OAAK,kBAAkB;AAGvB,MAAI,KAAK,YAAY,CAAC,KAAK,iBAAiB;AAC1C,QAAK,kBAAkB;AACvB,QAAK,SAAS,OAAO;AACrB,QAAK,OAAO,KAAK,WAAW,KAAK,SAAS,QAAQ;AAClD,QAAK,UAAU,KAAK,KAAK;AACzB,QAAK,kBAAkB;;;CAI3B,wBAAwB;AACtB,MAAI,CAAC,KAAK,YAAa;AACvB,OAAK,MAAM,SAAS,KAAK,YAAY,QAAQ,EAAE;AAC7C,OAAI,MAAM,aAAc,OAAM,YAAY,MAAM,cAAc;AAC9D,OAAI,MAAM,aAAa,MAAM,cAAgB,MAAa,MAAM,iBAAiB,MAAM;;;;;;;;CAS3F,eAAe;AACb,OAAK,MAAM,WAAW,KAAK,gBAAgB,QAAQ,CACjD,KAAI;AACF,YAAS;UACH;AAIV,OAAK,gBAAgB,OAAO;AAC5B,MAAI,KAAK,UAAU;AACjB,OAAI;AACF,SAAK,SAAS,MAAM;WACd;AAGR,QAAK,WAAW;;AAElB,OAAK,OAAO;AACZ,OAAK,kBAAkB;AACvB,OAAK,WAAW,OAAO;AACvB,OAAK,eAAe,OAAO;;CAG7B,UAAU;AACR,OAAK,cAAc;AACnB,QAAM,SAAS;;;wBAGO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geajs/ui",
3
- "version": "0.2.4",
3
+ "version": "0.2.10",
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"
@@ -89,6 +90,6 @@
89
90
  "prismjs": "^1.30.0",
90
91
  "tailwindcss": "^4.0.0",
91
92
  "tsdown": "^0.21.2",
92
- "typescript": "^5.9.3"
93
+ "typescript": "^6.0.3"
93
94
  }
94
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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"}