@geajs/ui 0.2.4 → 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 +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,33 +1,42 @@
1
1
  import { t as ZagComponent } from "./zag-component.mjs";
2
- import { Component, GEA_APPLY_LIST_CHANGES, GEA_DOM_ITEM, GEA_DOM_KEY, GEA_ELEMENT, GEA_ENSURE_ARRAY_CONFIGS, GEA_OBSERVE, GEA_ON_PROP_CHANGE, GEA_PATCH_COND, GEA_REGISTER_COND, GEA_RENDERED, GEA_SETUP_LOCAL_STATE_OBSERVERS, GEA_STORE_ROOT, geaCondPatchedSymbol, geaCondValueSymbol, geaEscapeHtml } from "@geajs/core";
2
+ import { o as GEA_CREATE_TEMPLATE, u as GEA_PROXY_RAW } from "./bind.mjs";
3
+ import { n as _DIRTY_PROPS, t as _DIRTY } from "./dirty-symbols.mjs";
4
+ import { n as reactiveTextValue } from "./reactive-text.mjs";
5
+ import { t as reactiveClass } from "./reactive-class.mjs";
6
+ import { t as conditionalTruthy } from "./conditional-truthy.mjs";
7
+ import { t as GEA_DOM_ITEM } from "./keyed-list-symbols.mjs";
3
8
  import { normalizeProps } from "@zag-js/vanilla";
4
9
  import * as fileUpload from "@zag-js/file-upload";
5
10
  //#region src/components/file-upload.tsx
11
+ let _tpl0_root = null;
12
+ function _tpl0_create() {
13
+ const t = document.createElement("template");
14
+ t.innerHTML = "<div data-part=root><!--1--><div data-part=dropzone class=\"file-upload-dropzone flex flex-col items-center justify-center rounded-lg border-2 border-dashed border-muted-foreground/25 p-8 text-center hover:border-muted-foreground/50 transition-colors\"><p class=\"text-sm text-muted-foreground mb-2\">Drag and drop files here</p><button data-part=trigger class=\"file-upload-trigger inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow hover:bg-primary/90\">Choose Files</button></div><input data-part=hidden-input type=file class=sr-only><!--2-->";
15
+ return t.content.firstChild;
16
+ }
17
+ let _tpl1_root = null;
18
+ function _tpl1_create() {
19
+ const t = document.createElement("template");
20
+ t.innerHTML = "<label data-part=label class=\"file-upload-label text-sm font-medium mb-2 block\">0";
21
+ return t.content.firstChild;
22
+ }
23
+ let _tpl2_root = null;
24
+ function _tpl2_create() {
25
+ const t = document.createElement("template");
26
+ t.innerHTML = "<div class=\"file-upload-file-list mt-3 space-y-1\"><!--0--><button data-part=clear-trigger class=\"file-upload-clear text-xs text-muted-foreground hover:text-foreground mt-1\">Clear all";
27
+ return t.content.firstChild;
28
+ }
29
+ let _tpl3_root = null;
30
+ function _tpl3_create() {
31
+ const t = document.createElement("template");
32
+ t.innerHTML = "<div class=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\"><span>0";
33
+ return t.content.firstChild;
34
+ }
6
35
  var FileUpload = class extends ZagComponent {
7
- static {
8
- this.__geaTagName = "file-upload";
9
- }
10
- #__rowEls_list;
11
- #__dc_acceptedFiles;
12
- constructor(...args) {
13
- super(...args);
14
- this.props;
15
- this[geaCondValueSymbol(0)] = !!this.props.label;
16
- this[geaCondValueSymbol(1)] = !!(this.acceptedFiles.length > 0);
17
- this[GEA_REGISTER_COND](0, "c0", () => {
18
- this.props;
19
- return this.props.label;
20
- }, () => {
21
- this.props;
22
- return `<label data-part="label" class="file-upload-label text-sm font-medium mb-2 block">${geaEscapeHtml(String(this.props.label))}</label>`;
23
- }, null);
24
- this[GEA_REGISTER_COND](1, "c1", () => {
25
- this.props;
26
- return this.acceptedFiles.length > 0;
27
- }, () => {
28
- this.props;
29
- return `<div class="file-upload-file-list mt-3 space-y-1">${this.acceptedFiles.map((file) => this.renderAcceptedFilesItem(file)).join("")}<button data-part="clear-trigger" class="file-upload-clear text-xs text-muted-foreground hover:text-foreground mt-1">Clear all</button></div>`;
30
- }, null);
36
+ constructor(..._args) {
37
+ super(..._args);
38
+ this.acceptedFiles = [];
39
+ this.rejectedFiles = [];
31
40
  }
32
41
  createMachine(_props) {
33
42
  return fileUpload.machine;
@@ -67,104 +76,310 @@ var FileUpload = class extends ZagComponent {
67
76
  this.acceptedFiles = api.acceptedFiles;
68
77
  this.rejectedFiles = api.rejectedFiles;
69
78
  }
70
- template(props) {
71
- const __id = this.id;
72
- Component._register(ZagComponent, "zag-component");
73
- 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="file-upload-label text-sm font-medium mb-2 block">${geaEscapeHtml(String(props.label))}</label>` || ""}<!--${__id + "-c0-end"}--><div data-part="dropzone" class="file-upload-dropzone flex flex-col items-center justify-center rounded-lg border-2 border-dashed border-muted-foreground/25 p-8 text-center hover:border-muted-foreground/50 transition-colors"><p class="text-sm text-muted-foreground mb-2">Drag and drop files here</p><button data-part="trigger" class="file-upload-trigger inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow hover:bg-primary/90">Choose Files</button></div><input data-part="hidden-input" type="file" class="sr-only" /><!--${__id + "-c1"}-->${this.acceptedFiles.length > 0 && `<div class="file-upload-file-list mt-3 space-y-1">${this.acceptedFiles.map((file) => this.renderAcceptedFilesItem(file)).join("")}<button data-part="clear-trigger" class="file-upload-clear text-xs text-muted-foreground hover:text-foreground mt-1">Clear all</button></div>` || ""}<!--${__id + "-c1-end"}--></div>`;
74
- }
75
- [GEA_ON_PROP_CHANGE](key, value) {
76
- if (key === "class") {
77
- const __el = this[GEA_ELEMENT];
78
- this.props;
79
- const __boundValue = value || "";
80
- if (__el) {
81
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
82
- if (__el.className !== __newClass) __el.className = __newClass;
83
- }
84
- }
85
- if (key === "label") this[GEA_PATCH_COND](0);
86
- this[GEA_PATCH_COND](1);
87
- }
88
- __observe_local_acceptedFiles(value, change) {
89
- if (this[GEA_RENDERED]) {
90
- if (!this[geaCondPatchedSymbol(1)]) {
91
- this[geaCondPatchedSymbol(1)] = this[GEA_PATCH_COND](1);
92
- if (this[geaCondPatchedSymbol(1)]) queueMicrotask(() => this[geaCondPatchedSymbol(1)] = false);
93
- }
94
- }
95
- if (!this.__acceptedFiles_container) this.__acceptedFiles_container = this.$(":scope");
96
- if (!this.__acceptedFiles_container) return;
97
- if (Array.isArray(value) && value.length === 0) {
98
- this.#__rowEls_list = null;
99
- this.__acceptedFiles_container.textContent = "";
100
- return;
101
- }
102
- this[GEA_ENSURE_ARRAY_CONFIGS]();
103
- this[GEA_APPLY_LIST_CHANGES](this.__acceptedFiles_container, value, change, this.__acceptedFilesListConfig);
104
- }
105
- __observe_local_acceptedFiles__join(value, change) {
106
- if (this[GEA_RENDERED]) {
107
- if (!this[geaCondPatchedSymbol(1)]) {
108
- this[geaCondPatchedSymbol(1)] = this[GEA_PATCH_COND](1);
109
- if (this[geaCondPatchedSymbol(1)]) queueMicrotask(() => this[geaCondPatchedSymbol(1)] = false);
79
+ [GEA_CREATE_TEMPLATE](d) {
80
+ const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
81
+ const el0 = root;
82
+ const anchor1 = root.firstChild;
83
+ const anchor2 = root.childNodes[3];
84
+ reactiveClass(el0, d, this, () => this.props.class || "");
85
+ conditionalTruthy(anchor1.parentNode, anchor1, d, this, () => this.props.label, (d) => {
86
+ const root = (_tpl1_root || (_tpl1_root = _tpl1_create())).cloneNode(true);
87
+ const t0 = root.firstChild;
88
+ reactiveTextValue(t0, d, this, () => this.props.label);
89
+ return root;
90
+ });
91
+ conditionalTruthy(anchor2.parentNode, anchor2, d, this, () => this.acceptedFiles.length > 0, (d) => {
92
+ const root = (_tpl2_root || (_tpl2_root = _tpl2_create())).cloneNode(true);
93
+ const anchor0 = root.firstChild;
94
+ const __ki_L0 = (file, idx, d) => {
95
+ const root = (_tpl3_root || (_tpl3_root = _tpl3_create())).cloneNode(true);
96
+ {
97
+ const __n = root.firstChild.firstChild;
98
+ __n.nodeValue = `${file.name ?? ""}`;
99
+ }
100
+ root[GEA_DOM_ITEM] = file;
101
+ return root;
102
+ };
103
+ const __kp_L0 = (el, item) => {
104
+ if (!item[_DIRTY_PROPS] || item[_DIRTY_PROPS].has("name")) {
105
+ const __n = el.__r0 || (el.__r0 = el.firstChild.firstChild);
106
+ __n.nodeValue = `${item.name ?? ""}`;
107
+ }
108
+ };
109
+ {
110
+ const __kl_container = anchor0.parentNode;
111
+ const __kl_anchor = anchor0;
112
+ const __kl_root = this;
113
+ const __kl_key = (file, idx) => file.name;
114
+ const __kl_create = (item, idx) => {
115
+ const __k = item.name;
116
+ const __el = __ki_L0(item, idx);
117
+ return {
118
+ key: __k,
119
+ item: item && item[GEA_PROXY_RAW] || item,
120
+ element: __el
121
+ };
122
+ };
123
+ const __kl_patch = (e, newItem, newIdx) => {
124
+ e.item = newItem && newItem[GEA_PROXY_RAW] || newItem;
125
+ __kp_L0(e.element, newItem);
126
+ };
127
+ const __kl_unwrap = (v) => v && typeof v === "object" && v[GEA_PROXY_RAW] || v;
128
+ const __kl_resolve = () => {
129
+ const v = __kl_root?.["acceptedFiles"];
130
+ return Array.isArray(v) ? v : [];
131
+ };
132
+ let __kl_entries = [];
133
+ const __kl_byKey = /* @__PURE__ */ new Map();
134
+ const __kl_remove = (entry) => {
135
+ entry.disposer?.dispose();
136
+ __kl_byKey.delete(entry.key);
137
+ if (entry.element.parentNode) entry.element.parentNode.removeChild(entry.element);
138
+ };
139
+ const __kl_first = __kl_resolve();
140
+ if (__kl_first.length > 0) {
141
+ const frag = __kl_container.ownerDocument.createDocumentFragment();
142
+ for (let i = 0; i < __kl_first.length; i++) {
143
+ const item = __kl_first[i];
144
+ const entry = __kl_create(item, i);
145
+ __kl_entries.push(entry);
146
+ __kl_byKey.set(entry.key, entry);
147
+ frag.appendChild(entry.element);
148
+ if (item && typeof item === "object") {
149
+ item[_DIRTY] = false;
150
+ item[_DIRTY_PROPS]?.clear();
151
+ }
152
+ }
153
+ __kl_container.insertBefore(frag, __kl_anchor);
154
+ }
155
+ let __kl_prev = __kl_first;
156
+ const __kl_reconcile = (arr, changes) => {
157
+ if (arr === __kl_prev && __kl_entries.length === arr.length) {
158
+ let structural = false;
159
+ let aipuOnly = changes && changes.length > 0;
160
+ if (changes && changes.length > 0) for (let i = 0; i < changes.length; i++) {
161
+ const change = changes[i];
162
+ if (change.type === "append" || change.type === "remove" || change.type === "delete" || change.type === "reorder") {
163
+ structural = true;
164
+ aipuOnly = false;
165
+ break;
166
+ }
167
+ if (!change.aipu) aipuOnly = false;
168
+ else structural = true;
169
+ }
170
+ if (aipuOnly && changes.length === 2) {
171
+ const a = changes[0].arix;
172
+ const b = changes[1].arix;
173
+ if (a >= 0 && b >= 0 && a < __kl_entries.length && b < __kl_entries.length && a !== b) {
174
+ const entryA = __kl_entries[a];
175
+ const entryB = __kl_entries[b];
176
+ const newAKey = __kl_key(arr[a], a);
177
+ const newBKey = __kl_key(arr[b], b);
178
+ if (entryA.key === newBKey && entryB.key === newAKey) {
179
+ const refB = entryB.element.nextSibling;
180
+ __kl_container.insertBefore(entryB.element, entryA.element);
181
+ if (refB) __kl_container.insertBefore(entryA.element, refB);
182
+ else __kl_container.appendChild(entryA.element);
183
+ __kl_entries[a] = entryB;
184
+ __kl_entries[b] = entryA;
185
+ if (__kl_unwrap(arr[a]) !== entryB.item) __kl_patch(entryB, arr[a], a);
186
+ if (__kl_unwrap(arr[b]) !== entryA.item) __kl_patch(entryA, arr[b], b);
187
+ __kl_prev = arr;
188
+ return;
189
+ }
190
+ }
191
+ }
192
+ if (!structural) {
193
+ const raw = arr[GEA_PROXY_RAW] || arr;
194
+ for (let i = 0; i < raw.length; i++) {
195
+ const item = raw[i];
196
+ if (item && typeof item === "object" && item[_DIRTY]) {
197
+ __kl_patch(__kl_entries[i], item, i);
198
+ item[_DIRTY] = false;
199
+ item[_DIRTY_PROPS]?.clear();
200
+ __kl_entries[i].item = item;
201
+ }
202
+ }
203
+ return;
204
+ }
205
+ }
206
+ if (changes && changes.length > 0 && __kl_entries.length < arr.length) {
207
+ let onlyAppends = true;
208
+ let appendCount = 0;
209
+ for (let i = 0; i < changes.length; i++) {
210
+ if (changes[i].type !== "append") {
211
+ onlyAppends = false;
212
+ break;
213
+ }
214
+ appendCount += changes[i].count || 0;
215
+ }
216
+ if (onlyAppends && appendCount === arr.length - __kl_entries.length) {
217
+ const start = __kl_entries.length;
218
+ const frag = __kl_container.ownerDocument.createDocumentFragment();
219
+ for (let i = start; i < arr.length; i++) {
220
+ const entry = __kl_create(arr[i], i);
221
+ __kl_entries.push(entry);
222
+ __kl_byKey.set(entry.key, entry);
223
+ frag.appendChild(entry.element);
224
+ }
225
+ __kl_container.insertBefore(frag, __kl_anchor);
226
+ __kl_prev = arr;
227
+ return;
228
+ }
229
+ }
230
+ if (changes && changes.length > 0 && __kl_entries.length > arr.length) {
231
+ let onlyRemoves = true;
232
+ let totalRemoved = 0;
233
+ for (let i = 0; i < changes.length; i++) {
234
+ const change = changes[i];
235
+ if (change.type !== "remove") {
236
+ onlyRemoves = false;
237
+ break;
238
+ }
239
+ totalRemoved += change.count || 0;
240
+ }
241
+ if (onlyRemoves && __kl_entries.length - arr.length === totalRemoved) {
242
+ if (changes.length === 1 && changes[0].count === 1) {
243
+ const idx = changes[0].start;
244
+ if (idx >= 0 && idx < __kl_entries.length) {
245
+ __kl_remove(__kl_entries[idx]);
246
+ __kl_entries.splice(idx, 1);
247
+ }
248
+ __kl_prev = arr;
249
+ return;
250
+ }
251
+ const removed = [];
252
+ for (let i = 0; i < changes.length; i++) {
253
+ const start = changes[i].start;
254
+ const count = changes[i].count;
255
+ for (let j = 0; j < count; j++) removed.push(start + j);
256
+ }
257
+ removed.sort((a, b) => b - a);
258
+ for (let i = 0; i < removed.length; i++) {
259
+ const idx = removed[i];
260
+ if (idx >= 0 && idx < __kl_entries.length) {
261
+ __kl_remove(__kl_entries[idx]);
262
+ __kl_entries.splice(idx, 1);
263
+ }
264
+ }
265
+ __kl_prev = arr;
266
+ return;
267
+ }
268
+ }
269
+ const newLen = arr.length;
270
+ const oldLen = __kl_entries.length;
271
+ if (oldLen === 0 && newLen > 0) {
272
+ const nextEntries = new Array(newLen);
273
+ const frag = __kl_container.ownerDocument.createDocumentFragment();
274
+ for (let i = 0; i < newLen; i++) {
275
+ const entry = __kl_create(arr[i], i);
276
+ nextEntries[i] = entry;
277
+ __kl_byKey.set(entry.key, entry);
278
+ frag.appendChild(entry.element);
279
+ }
280
+ __kl_container.insertBefore(frag, __kl_anchor);
281
+ __kl_entries = nextEntries;
282
+ __kl_prev = arr;
283
+ return;
284
+ }
285
+ const newKeys = new Array(newLen);
286
+ for (let i = 0; i < newLen; i++) newKeys[i] = __kl_key(arr[i], i);
287
+ if (newLen === 0) {
288
+ if (__kl_container.childNodes.length === oldLen + (__kl_anchor ? 1 : 0)) {
289
+ for (let i = 0; i < oldLen; i++) __kl_entries[i].disposer?.dispose();
290
+ __kl_container.textContent = "";
291
+ if (__kl_anchor) __kl_container.appendChild(__kl_anchor);
292
+ } else for (let i = oldLen - 1; i >= 0; i--) __kl_remove(__kl_entries[i]);
293
+ __kl_entries = [];
294
+ __kl_byKey.clear();
295
+ __kl_prev = arr;
296
+ return;
297
+ }
298
+ if (newLen === oldLen) {
299
+ let diffA = -1;
300
+ let diffB = -1;
301
+ let diffCount = 0;
302
+ for (let i = 0; i < newLen; i++) if (__kl_entries[i].key !== newKeys[i]) {
303
+ if (diffCount === 0) diffA = i;
304
+ else if (diffCount === 1) diffB = i;
305
+ diffCount++;
306
+ if (diffCount > 2) break;
307
+ }
308
+ if (diffCount === 2 && __kl_entries[diffA].key === newKeys[diffB] && __kl_entries[diffB].key === newKeys[diffA]) {
309
+ const entryA = __kl_entries[diffA];
310
+ const entryB = __kl_entries[diffB];
311
+ const refB = entryB.element.nextSibling;
312
+ __kl_container.insertBefore(entryB.element, entryA.element);
313
+ if (refB) __kl_container.insertBefore(entryA.element, refB);
314
+ else __kl_container.appendChild(entryA.element);
315
+ __kl_entries[diffA] = entryB;
316
+ __kl_entries[diffB] = entryA;
317
+ if (__kl_unwrap(arr[diffA]) !== entryB.item) __kl_patch(entryB, arr[diffA], diffA);
318
+ if (__kl_unwrap(arr[diffB]) !== entryA.item) __kl_patch(entryA, arr[diffB], diffB);
319
+ __kl_prev = arr;
320
+ return;
321
+ }
322
+ }
323
+ if (oldLen > 0 && newLen > 0 && __kl_container.childNodes.length === oldLen + (__kl_anchor ? 1 : 0)) {
324
+ let disjoint = true;
325
+ for (let i = 0; i < newLen; i++) if (__kl_byKey.has(newKeys[i])) {
326
+ disjoint = false;
327
+ break;
328
+ }
329
+ if (disjoint) {
330
+ for (let i = 0; i < oldLen; i++) __kl_entries[i].disposer?.dispose();
331
+ __kl_byKey.clear();
332
+ const nextEntries = new Array(newLen);
333
+ const nextNodes = new Array(newLen + (__kl_anchor ? 1 : 0));
334
+ for (let i = 0; i < newLen; i++) {
335
+ const entry = __kl_create(arr[i], i);
336
+ nextEntries[i] = entry;
337
+ nextNodes[i] = entry.element;
338
+ __kl_byKey.set(entry.key, entry);
339
+ }
340
+ if (__kl_anchor) nextNodes[newLen] = __kl_anchor;
341
+ __kl_container.replaceChildren(...nextNodes);
342
+ __kl_entries = nextEntries;
343
+ __kl_prev = arr;
344
+ return;
345
+ }
346
+ }
347
+ for (let i = 0; i < oldLen; i++) __kl_entries[i]._i = i;
348
+ const seenOld = new Array(oldLen).fill(false);
349
+ const nextEntries = new Array(newLen);
350
+ for (let i = 0; i < newLen; i++) {
351
+ const entry = __kl_byKey.get(newKeys[i]);
352
+ if (entry) {
353
+ const oldIdx = entry._i;
354
+ seenOld[oldIdx] = true;
355
+ nextEntries[i] = entry;
356
+ }
357
+ }
358
+ for (let i = oldLen - 1; i >= 0; i--) if (!seenOld[i]) __kl_remove(__kl_entries[i]);
359
+ let nextRef = __kl_anchor;
360
+ for (let i = newLen - 1; i >= 0; i--) {
361
+ let entry = nextEntries[i];
362
+ if (!entry) {
363
+ entry = __kl_create(arr[i], i);
364
+ __kl_byKey.set(entry.key, entry);
365
+ } else if (entry.item !== __kl_unwrap(arr[i])) __kl_patch(entry, arr[i], i);
366
+ if (entry.element.parentNode !== __kl_container || entry.element.nextSibling !== nextRef) __kl_container.insertBefore(entry.element, nextRef);
367
+ nextEntries[i] = entry;
368
+ nextRef = entry.element;
369
+ }
370
+ __kl_entries = nextEntries;
371
+ __kl_prev = arr;
372
+ };
373
+ if (__kl_root && typeof __kl_root.observe === "function") {
374
+ const off = __kl_root.observe("acceptedFiles", (_value, changes) => {
375
+ __kl_reconcile(__kl_resolve(), changes);
376
+ });
377
+ d.add(off);
378
+ }
110
379
  }
111
- }
112
- }
113
- renderAcceptedFilesItem(file) {
114
- return `<div data-gid="${file?.name ?? file}" class="flex items-center justify-between rounded-md border px-3 py-2 text-sm"><span>${file.name}</span></div>`;
115
- }
116
- createAcceptedFilesItem(item) {
117
- var __c = this.#__dc_acceptedFiles || (this.#__dc_acceptedFiles = this.__acceptedFiles_container);
118
- if (!__c.__geaTpl) try {
119
- var __tw = document.createElement("template");
120
- __tw.innerHTML = this.renderAcceptedFilesItem({ name: 0 });
121
- __c.__geaTpl = __tw.content.firstElementChild;
122
- __c.__geaTpl?.removeAttribute("data-gid");
123
- } catch (__err) {
124
- console.error(__err);
125
- }
126
- if (__c.__geaTpl) var el = __c.__geaTpl.cloneNode(true);
127
- else {
128
- var __fw = document.createElement("template");
129
- __fw.innerHTML = this.renderAcceptedFilesItem(item);
130
- var el = __fw.content.firstElementChild;
131
- }
132
- el.__ref_0 = el.firstElementChild;
133
- if (el.__ref_0.textContent !== `${item.name}`) el.__ref_0.textContent = `${item.name}`;
134
- el[GEA_DOM_KEY] = String(item?.name ?? item);
135
- el[GEA_DOM_ITEM] = item;
136
- return el;
137
- }
138
- patchAcceptedFilesItem(row, item, __prevItem) {
139
- if (!row) return;
140
- if (!row.__ref_0) row.__ref_0 = row.firstElementChild;
141
- if (row.__ref_0.textContent !== `${item.name}`) row.__ref_0.textContent = `${item.name}`;
142
- row[GEA_DOM_KEY] = String(item?.name ?? item);
143
- (this.#__rowEls_list || (this.#__rowEls_list = {}))[String(item?.name ?? item)] = row;
144
- row[GEA_DOM_ITEM] = item;
145
- }
146
- [GEA_ENSURE_ARRAY_CONFIGS]() {
147
- if (!this.__acceptedFilesListConfig) this.__acceptedFilesListConfig = {
148
- arrayPathParts: ["acceptedFiles"],
149
- render: this.renderAcceptedFilesItem.bind(this),
150
- create: this.createAcceptedFilesItem.bind(this),
151
- patchRow: this.patchAcceptedFilesItem && this.patchAcceptedFilesItem.bind(this),
152
- getKey: (item) => String(item?.name ?? item),
153
- propPatchers: { "name": [(row, value, item) => {
154
- const __target = row.__ref_0 || (row.__ref_0 = row.firstElementChild);
155
- if (!__target) return;
156
- if (__target.textContent !== `${item.name}`) __target.textContent = `${item.name}`;
157
- }, (row, value) => {
158
- row.classList.toggle("name", value);
159
- }] }
160
- };
161
- }
162
- [GEA_SETUP_LOCAL_STATE_OBSERVERS]() {
163
- this[GEA_ENSURE_ARRAY_CONFIGS]();
164
- if (!this[GEA_STORE_ROOT]) return;
165
- this[GEA_OBSERVE](this, ["acceptedFiles"], this.__observe_local_acceptedFiles);
166
- this[GEA_OBSERVE](this, ["acceptedFiles", "join"], this.__observe_local_acceptedFiles__join);
167
- this[GEA_OBSERVE](this, ["acceptedFiles", "map"], this.__observe_local_acceptedFiles__join);
380
+ return root;
381
+ });
382
+ return root;
168
383
  }
169
384
  };
170
385
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.mjs","names":["Component","geaCondValueSymbol","GEA_REGISTER_COND","geaEscapeHtml","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_COND","GEA_RENDERED","geaCondPatchedSymbol","GEA_ENSURE_ARRAY_CONFIGS","GEA_APPLY_LIST_CHANGES","GEA_DOM_KEY","GEA_DOM_ITEM","GEA_SETUP_LOCAL_STATE_OBSERVERS","GEA_STORE_ROOT","GEA_OBSERVE","fileUpload","normalizeProps","ZagComponent","FileUpload","__geaTagName","__rowEls_list","__dc_acceptedFiles","constructor","args","props","label","acceptedFiles","length","String","map","file","File","renderAcceptedFilesItem","join","rejectedFiles","createMachine","_props","machine","getMachineProps","id","accept","maxFiles","maxFileSize","minFileSize","multiple","disabled","allowDrop","name","onFileChange","details","FileChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","template","__id","_register","class","trim","key","value","__el","__boundValue","__newClass","replace","className","__observe_local_acceptedFiles","change","queueMicrotask","__acceptedFiles_container","$","Array","isArray","textContent","__acceptedFilesListConfig","__observe_local_acceptedFiles__join","createAcceptedFilesItem","item","__c","__geaTpl","__tw","document","createElement","innerHTML","content","firstElementChild","removeAttribute","__err","console","error","el","cloneNode","__fw","__ref_0","patchAcceptedFilesItem","row","__prevItem","arrayPathParts","render","bind","create","patchRow","getKey","propPatchers","__target","classList","toggle"],"sources":["../src/components/file-upload.tsx"],"sourcesContent":["import * as fileUpload from '@zag-js/file-upload'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class FileUpload extends ZagComponent {\n declare acceptedFiles: File[]\n declare rejectedFiles: any[]\n\n createMachine(_props: any): any {\n return fileUpload.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n accept: props.accept,\n maxFiles: props.maxFiles,\n maxFileSize: props.maxFileSize,\n minFileSize: props.minFileSize,\n multiple: props.multiple ?? false,\n disabled: props.disabled,\n allowDrop: props.allowDrop ?? true,\n name: props.name,\n onFileChange: (details: fileUpload.FileChangeDetails) => {\n this.acceptedFiles = details.acceptedFiles\n this.rejectedFiles = details.rejectedFiles\n props.onFileChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return fileUpload.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"dropzone\"]': 'getDropzoneProps',\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"clear-trigger\"]': 'getClearTriggerProps',\n }\n }\n\n syncState(api: any) {\n this.acceptedFiles = api.acceptedFiles\n this.rejectedFiles = api.rejectedFiles\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=\"file-upload-label text-sm font-medium mb-2 block\">\n {props.label}\n </label>\n )}\n <div\n data-part=\"dropzone\"\n class=\"file-upload-dropzone flex flex-col items-center justify-center rounded-lg border-2 border-dashed border-muted-foreground/25 p-8 text-center hover:border-muted-foreground/50 transition-colors\"\n >\n <p class=\"text-sm text-muted-foreground mb-2\">Drag and drop files here</p>\n <button\n data-part=\"trigger\"\n class=\"file-upload-trigger inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow hover:bg-primary/90\"\n >\n Choose Files\n </button>\n </div>\n <input data-part=\"hidden-input\" type=\"file\" class=\"sr-only\" />\n {this.acceptedFiles.length > 0 && (\n <div class=\"file-upload-file-list mt-3 space-y-1\">\n {this.acceptedFiles.map((file: File) => (\n <div key={file.name} class=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\">\n <span>{file.name}</span>\n </div>\n ))}\n <button\n data-part=\"clear-trigger\"\n class=\"file-upload-clear text-xs text-muted-foreground hover:text-foreground mt-1\"\n >\n Clear all\n </button>\n </div>\n )}\n </div>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"file-upload.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClass","reactiveTextValue","conditionalTruthy","reactiveAttr","GEA_DIRTY_PROPS","GEA_DOM_ITEM","GEA_PROXY_RAW","GEA_DIRTY","fileUpload","normalizeProps","ZagComponent","_tpl0_root","_tpl0_create","t","document","createElement","innerHTML","content","firstChild","_tpl1_root","_tpl1_create","_tpl2_root","_tpl2_create","_tpl3_root","_tpl3_create","FileUpload","acceptedFiles","File","rejectedFiles","createMachine","_props","machine","getMachineProps","props","id","accept","maxFiles","maxFileSize","minFileSize","multiple","disabled","allowDrop","name","onFileChange","details","FileChangeDetails","connectApi","service","connect","getSpreadMap","syncState","api","d","root","cloneNode","el0","anchor1","anchor2","childNodes","class","parentNode","label","marker0","t0","length","anchor0","__ki_L0","file","idx","__n","nodeValue","__kp_L0","el","item","has","__r0","__kl_container","__kl_anchor","__kl_root","__kl_key","__kl_create","__k","__el","key","element","__kl_patch","e","newItem","newIdx","__raw","__kl_unwrap","v","__kl_resolve","Array","isArray","__kl_entries","__kl_byKey","Map","__kl_remove","entry","disposer","dispose","delete","removeChild","__kl_first","frag","ownerDocument","createDocumentFragment","i","push","set","appendChild","clear","insertBefore","__kl_prev","__kl_reconcile","arr","changes","structural","aipuOnly","change","type","aipu","a","arix","b","entryA","entryB","newAKey","newBKey","refB","nextSibling","raw","onlyAppends","appendCount","count","start","onlyRemoves","totalRemoved","splice","removed","j","sort","newLen","oldLen","nextEntries","newKeys","textContent","diffA","diffB","diffCount","disjoint","nextNodes","replaceChildren","_i","seenOld","fill","get","oldIdx","nextRef","observe","off","_value","add"],"sources":["../src/components/file-upload.tsx"],"sourcesContent":["import * as fileUpload from '@zag-js/file-upload'\nimport { normalizeProps } from '@zag-js/vanilla'\nimport ZagComponent from '../primitives/zag-component'\n\nexport default class FileUpload extends ZagComponent {\n acceptedFiles: File[] = []\n rejectedFiles: any[] = []\n\n createMachine(_props: any): any {\n return fileUpload.machine\n }\n\n getMachineProps(props: any) {\n return {\n id: this.id,\n accept: props.accept,\n maxFiles: props.maxFiles,\n maxFileSize: props.maxFileSize,\n minFileSize: props.minFileSize,\n multiple: props.multiple ?? false,\n disabled: props.disabled,\n allowDrop: props.allowDrop ?? true,\n name: props.name,\n onFileChange: (details: fileUpload.FileChangeDetails) => {\n this.acceptedFiles = details.acceptedFiles\n this.rejectedFiles = details.rejectedFiles\n props.onFileChange?.(details)\n },\n }\n }\n\n connectApi(service: any) {\n return fileUpload.connect(service, normalizeProps)\n }\n\n getSpreadMap() {\n return {\n '[data-part=\"root\"]': 'getRootProps',\n '[data-part=\"label\"]': 'getLabelProps',\n '[data-part=\"dropzone\"]': 'getDropzoneProps',\n '[data-part=\"trigger\"]': 'getTriggerProps',\n '[data-part=\"hidden-input\"]': 'getHiddenInputProps',\n '[data-part=\"clear-trigger\"]': 'getClearTriggerProps',\n }\n }\n\n syncState(api: any) {\n this.acceptedFiles = api.acceptedFiles\n this.rejectedFiles = api.rejectedFiles\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=\"file-upload-label text-sm font-medium mb-2 block\">\n {props.label}\n </label>\n )}\n <div\n data-part=\"dropzone\"\n class=\"file-upload-dropzone flex flex-col items-center justify-center rounded-lg border-2 border-dashed border-muted-foreground/25 p-8 text-center hover:border-muted-foreground/50 transition-colors\"\n >\n <p class=\"text-sm text-muted-foreground mb-2\">Drag and drop files here</p>\n <button\n data-part=\"trigger\"\n class=\"file-upload-trigger inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow hover:bg-primary/90\"\n >\n Choose Files\n </button>\n </div>\n <input data-part=\"hidden-input\" type=\"file\" class=\"sr-only\" />\n {this.acceptedFiles.length > 0 && (\n <div class=\"file-upload-file-list mt-3 space-y-1\">\n {this.acceptedFiles.map((file: File) => (\n <div key={file.name} class=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\">\n <span>{file.name}</span>\n </div>\n ))}\n <button\n data-part=\"clear-trigger\"\n class=\"file-upload-clear text-xs text-muted-foreground hover:text-foreground mt-1\"\n >\n Clear all\n </button>\n </div>\n )}\n </div>\n )\n }\n}\n"],"mappings":"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"}
@@ -7,7 +7,7 @@ declare class HoverCard extends ZagComponent {
7
7
  open: boolean;
8
8
  createMachine(_props: any): any;
9
9
  getMachineProps(props: any): {
10
- id: any;
10
+ id: string;
11
11
  open: any;
12
12
  defaultOpen: any;
13
13
  openDelay: any;
@@ -26,7 +26,7 @@ declare class HoverCard extends ZagComponent {
26
26
  '[data-part="arrow-tip"]': string;
27
27
  };
28
28
  syncState(api: any): void;
29
- template(props: any): string;
29
+ template(props: any): any;
30
30
  }
31
31
  //#endregion
32
32
  export { HoverCard as default };
@@ -1,12 +1,19 @@
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_NODE, geaEscapeHtml, geaSanitizeAttr } 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 reactiveAttr } from "./reactive-attr.mjs";
5
+ import { t as reactiveClass } from "./reactive-class.mjs";
6
+ import { t as reactiveStyle } from "./reactive-style.mjs";
3
7
  import { normalizeProps } from "@zag-js/vanilla";
4
8
  import * as hoverCard from "@zag-js/hover-card";
5
9
  //#region src/components/hover-card.tsx
10
+ let _tpl0_root = null;
11
+ function _tpl0_create() {
12
+ const t = document.createElement("template");
13
+ t.innerHTML = "<div><a data-part=trigger class=\"hover-card-trigger inline-block\">0</a><div data-part=positioner class=hover-card-positioner><div data-part=content class=\"hover-card-content z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden\">0";
14
+ return t.content.firstChild;
15
+ }
6
16
  var HoverCard = class extends ZagComponent {
7
- static {
8
- this.__geaTagName = "hover-card";
9
- }
10
17
  createMachine(_props) {
11
18
  return hoverCard.machine;
12
19
  }
@@ -39,61 +46,19 @@ var HoverCard = class extends ZagComponent {
39
46
  syncState(api) {
40
47
  this.open = api.open;
41
48
  }
42
- template(props) {
43
- const __id = this.id;
44
- Component._register(ZagComponent, "zag-component");
45
- return `<div id="${__id}"${(props.class || "") == null || (props.class || "") === false ? "" : ` class="${((props.class || "") != null ? String(props.class || "") : "").trim()}"`} style="display: inline-block"><a id="${__id + "-b1"}" data-part="trigger"${(props.href || "#") == null || (props.href || "#") === false ? "" : ` href="${geaSanitizeAttr("href", String(props.href || "#"))}"`} class="hover-card-trigger inline-block">${geaEscapeHtml(String(props.triggerLabel || "Hover me"))}</a><div data-part="positioner" class="hover-card-positioner"><div id="${__id + "-b2"}" data-part="content" class="hover-card-content z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden">${props.children}</div></div></div>`;
46
- }
47
- [GEA_ON_PROP_CHANGE](key, value) {
48
- const __id = this.id;
49
- if (key === "class") {
50
- const __el = this[GEA_ELEMENT];
51
- this.props;
52
- const __boundValue = value || "";
53
- if (__el) {
54
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
55
- if (__el.className !== __newClass) __el.className = __newClass;
56
- }
57
- }
58
- if (key === "href") {
59
- const __el = this.__e0 || (this.__e0 = __gid(__id + "-b1"));
60
- this.props;
61
- const __boundValue = value || "#";
62
- if (__el) {
63
- var __av = __boundValue;
64
- if (__av == null || __av === void 0) __el.removeAttribute("href");
65
- else {
66
- const __newAttr = __sanitizeAttr("href", String(__av));
67
- if (__el.getAttribute("href") !== __newAttr) __el.setAttribute("href", __newAttr);
68
- }
69
- }
70
- }
71
- if (key === "triggerLabel") {
72
- const __el = this.__e1 || (this.__e1 = __gid(__id + "-b1"));
73
- this.props;
74
- const __boundValue = value || "Hover me";
75
- if (__el && __el.textContent !== __boundValue) __el.textContent = __boundValue;
76
- }
77
- if (key === "children") {
78
- const __el = this.__e2 || (this.__e2 = __gid(__id + "-b2"));
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
- }
93
- __resetEls() {
94
- this.__e0 = null;
95
- this.__e1 = null;
96
- this.__e2 = null;
49
+ [GEA_CREATE_TEMPLATE](d) {
50
+ const root = (_tpl0_root || (_tpl0_root = _tpl0_create())).cloneNode(true);
51
+ const el0 = root;
52
+ const el1 = el0;
53
+ const el2 = root.firstChild;
54
+ const marker3 = root.firstChild.firstChild;
55
+ const marker4 = root.childNodes[1].firstChild.firstChild;
56
+ reactiveClass(el0, d, this, () => this.props.class || "");
57
+ reactiveStyle(el1, d, this, () => ({ display: "inline-block" }));
58
+ reactiveAttr(el2, d, this, "href", () => this.props.href || "#");
59
+ reactiveTextValue(marker3, d, this, () => this.props.triggerLabel || "Hover me");
60
+ reactiveText(marker4, d, this, () => this.props.children);
61
+ return root;
97
62
  }
98
63
  };
99
64
  //#endregion