@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
@@ -0,0 +1,424 @@
1
+ import { n as createDisposer } from "./disposer.mjs";
2
+ import { c as GEA_ELEMENT, n as trackRead, o as GEA_CREATE_TEMPLATE, s as GEA_DOM_COMPONENT, u as GEA_PROXY_RAW } from "./bind.mjs";
3
+ import { i as GEA_SET_PROPS, n as GEA_DISPOSER, r as GEA_OBSERVE_DIRECT } from "./internal-symbols.mjs";
4
+ import { n as _DIRTY_PROPS, t as _DIRTY } from "./dirty-symbols.mjs";
5
+ import { t as reactiveText } from "./reactive-text.mjs";
6
+ import { t as reactiveAttr } from "./reactive-attr.mjs";
7
+ import { t as reactiveClassName } from "./reactive-class-name.mjs";
8
+ import { t as delegateEvent } from "./delegate-event.mjs";
9
+ import { dndManager } from "./dnd-manager.mjs";
10
+ //#region ../gea/src/runtime/compiled-lean-store.ts
11
+ const _PRIV = Symbol("gea.lean.priv");
12
+ const _NESTED = Symbol("gea.lean.nested");
13
+ /**
14
+ * `O`/`V` are generic (not `object`/`any`) — this helper hides a value under
15
+ * a symbol key on WHATEVER object it's called with (the raw store, its
16
+ * proxy, a Map cache, ...), so its own declaration can't pin a single
17
+ * concrete shape; each call site supplies its own concrete `O`/`V`.
18
+ */
19
+ function _hidden(target, key, value) {
20
+ Object.defineProperty(target, key, {
21
+ value,
22
+ writable: true,
23
+ configurable: true,
24
+ enumerable: false
25
+ });
26
+ }
27
+ /**
28
+ * Browser fallback for the tracked-proxy plain-value v1 contract. The embedded
29
+ * compiler replaces this exact exported coordinate with its native predicate.
30
+ * V1 assumes pristine builtins and ordinary Gea values (including Gea-owned,
31
+ * non-revoked proxies); monkey-patched prototypes and custom/revoked proxies
32
+ * are outside the contract.
33
+ */
34
+ function _plain(v) {
35
+ if (!v || typeof v !== "object") return false;
36
+ const p = Object.getPrototypeOf(v);
37
+ return p === Object.prototype || p === null || Array.isArray(v);
38
+ }
39
+ /** Unwrap a proxy value to its raw target, preserving whatever type it was. */
40
+ function _raw(v) {
41
+ return v && v[GEA_PROXY_RAW] || v;
42
+ }
43
+ function _fireBucket(bucket, value, changes) {
44
+ if (bucket.size === 0) return;
45
+ if (bucket.size === 1) for (const h of bucket) {
46
+ h(value, changes);
47
+ return;
48
+ }
49
+ const snapshot = [];
50
+ for (const h of bucket) snapshot.push(h);
51
+ for (let i = 0; i < snapshot.length; i++) try {
52
+ snapshot[i](value, changes);
53
+ } catch {}
54
+ }
55
+ function _flush(state) {
56
+ state.scheduled = false;
57
+ const pending = state.pending;
58
+ if (!pending || pending.size === 0) return;
59
+ state.pending = void 0;
60
+ let all = null;
61
+ for (const entry of pending) {
62
+ const prop = entry[0];
63
+ const changes = entry[1];
64
+ if (state.rootObservers || state.derived) {
65
+ all ??= [];
66
+ for (let i = 0; i < changes.length; i++) all.push(changes[i]);
67
+ }
68
+ const bucket = state.observers?.get(prop);
69
+ if (bucket) _fireBucket(bucket, state.proxy[prop], changes);
70
+ }
71
+ if (all && state.rootObservers) _fireBucket(state.rootObservers, state.proxy, all);
72
+ if (all && state.derived) for (const entry of state.derived) {
73
+ const prop = entry[0];
74
+ const bucket = entry[1];
75
+ if (bucket.size === 0) continue;
76
+ let value;
77
+ try {
78
+ value = state.proxy[prop];
79
+ } catch {
80
+ continue;
81
+ }
82
+ _fireBucket(bucket, value, all);
83
+ }
84
+ }
85
+ function _hasQueuedConsumers(state, prop) {
86
+ const bucket = state.observers?.get(prop);
87
+ return !!(bucket && bucket.size > 0 || state.rootObservers && state.rootObservers.size > 0 || state.derived && state.derived.size > 0);
88
+ }
89
+ function _queue(state, prop, change = {}) {
90
+ if (!state.ready) return;
91
+ if (!_hasQueuedConsumers(state, prop)) return;
92
+ const rec = {
93
+ prop,
94
+ pathParts: [prop],
95
+ type: "update",
96
+ target: state.proxy,
97
+ ...change
98
+ };
99
+ const pending = state.pending ?? (state.pending = /* @__PURE__ */ new Map());
100
+ const arr = pending.get(prop);
101
+ if (arr) arr.push(rec);
102
+ else pending.set(prop, [rec]);
103
+ if (!state.scheduled) {
104
+ state.scheduled = true;
105
+ queueMicrotask(() => _flush(state));
106
+ }
107
+ }
108
+ /**
109
+ * Nested nested-object/array traversal INSIDE one of `S`'s own fields (e.g.
110
+ * `store.list[0].name`): once inside a field's own substructure, the shape
111
+ * is no longer described by `S` (a field's element/property types aren't
112
+ * modeled recursively here) — `V` is a genuinely open per-call type at this
113
+ * depth, kept as a type parameter rather than `any` so it's at least
114
+ * threaded through instead of erased, but this is the one spot in this file
115
+ * that's honestly a dynamic-JS-object-graph boundary: how deep a nested
116
+ * value's shape goes isn't knowable without walking `S` structurally.
117
+ */
118
+ function _wrap(state, target, rootProp) {
119
+ if (!_plain(target)) return target;
120
+ const targetObj = target;
121
+ let perTarget = targetObj[_NESTED];
122
+ if (perTarget) {
123
+ const cached = perTarget.get(rootProp);
124
+ if (cached) return cached;
125
+ }
126
+ const proxy = new Proxy(targetObj, {
127
+ get(obj, prop) {
128
+ if (prop === GEA_PROXY_RAW) return obj;
129
+ if (typeof prop === "symbol") return obj[prop];
130
+ trackRead(state.proxy, rootProp);
131
+ const value = obj[prop];
132
+ if (Array.isArray(obj) && typeof value === "function") {
133
+ if (prop === "push") return (...items) => {
134
+ const start = obj.length;
135
+ const result = Array.prototype.push.apply(obj, items.map(_raw));
136
+ if (obj.length > start) _queue(state, rootProp, {
137
+ type: "append",
138
+ start,
139
+ count: obj.length - start
140
+ });
141
+ return result;
142
+ };
143
+ }
144
+ return _plain(value) ? _wrap(state, value, rootProp) : value;
145
+ },
146
+ set(obj, prop, value) {
147
+ if (typeof prop === "symbol") {
148
+ obj[prop] = value;
149
+ return true;
150
+ }
151
+ value = _raw(value);
152
+ const old = obj[prop];
153
+ if (old === value) return true;
154
+ obj[prop] = value;
155
+ if (Array.isArray(obj)) {
156
+ if (value && typeof value === "object") value[_DIRTY] = true;
157
+ const idx = +prop;
158
+ if (Number.isInteger(idx)) {
159
+ _queue(state, rootProp, {
160
+ aipu: true,
161
+ arix: idx,
162
+ previousValue: old,
163
+ newValue: value
164
+ });
165
+ return true;
166
+ }
167
+ } else {
168
+ obj[_DIRTY] = true;
169
+ (obj[_DIRTY_PROPS] ??= /* @__PURE__ */ new Set()).add(prop);
170
+ }
171
+ _queue(state, rootProp, {
172
+ previousValue: old,
173
+ newValue: value
174
+ });
175
+ return true;
176
+ },
177
+ deleteProperty(obj, prop) {
178
+ if (typeof prop === "symbol") {
179
+ delete obj[prop];
180
+ return true;
181
+ }
182
+ const old = obj[prop];
183
+ delete obj[prop];
184
+ if (!Array.isArray(obj)) obj[_DIRTY] = true;
185
+ _queue(state, rootProp, {
186
+ previousValue: old,
187
+ type: "delete"
188
+ });
189
+ return true;
190
+ }
191
+ });
192
+ if (!perTarget) {
193
+ perTarget = /* @__PURE__ */ new Map();
194
+ _hidden(targetObj, _NESTED, perTarget);
195
+ }
196
+ perTarget.set(rootProp, proxy);
197
+ return proxy;
198
+ }
199
+ function createLeanProxy(raw) {
200
+ const state = {};
201
+ _hidden(raw, _PRIV, state);
202
+ const proxy = new Proxy(raw, {
203
+ get(target, prop, receiver) {
204
+ if (prop === GEA_PROXY_RAW) return target;
205
+ if (typeof prop === "symbol") return target[prop];
206
+ trackRead(receiver ?? target, prop);
207
+ const value = target[prop];
208
+ if (typeof value === "function") return value.bind(receiver);
209
+ return _plain(value) ? _wrap(state, value, prop) : value;
210
+ },
211
+ set(target, prop, value) {
212
+ if (typeof prop === "symbol") {
213
+ target[prop] = value;
214
+ return true;
215
+ }
216
+ value = _raw(value);
217
+ if (Array.isArray(value)) value = value.map(_raw);
218
+ const old = target[prop];
219
+ if (old === value && prop in target) return true;
220
+ if (old && typeof old === "object") delete old[_NESTED];
221
+ target[prop] = value;
222
+ const direct = state.direct?.get(prop);
223
+ if (direct) for (const h of direct) h(value);
224
+ _queue(state, prop, {
225
+ previousValue: old,
226
+ newValue: value
227
+ });
228
+ return true;
229
+ }
230
+ });
231
+ state.proxy = proxy;
232
+ _hidden(proxy, _PRIV, state);
233
+ return proxy;
234
+ }
235
+ function leanObserve(self, pathOrProp, handler) {
236
+ const state = self == null ? void 0 : self[_PRIV];
237
+ if (!state) return () => {};
238
+ state.ready = true;
239
+ const isArr = Array.isArray(pathOrProp);
240
+ let path = [];
241
+ let text = "";
242
+ if (typeof pathOrProp === "string") text = pathOrProp;
243
+ else path = pathOrProp;
244
+ if (isArr && path.length === 0 || !isArr && text === "") {
245
+ const bucket = state.rootObservers ?? (state.rootObservers = /* @__PURE__ */ new Set());
246
+ bucket.add(handler);
247
+ return () => {
248
+ bucket.delete(handler);
249
+ };
250
+ }
251
+ const prop = isArr ? path[0] ?? "" : text;
252
+ if (!prop) return () => {};
253
+ const tail = isArr && path.length > 1 ? path.slice(1) : null;
254
+ const finalHandler = tail ? (value, changes) => {
255
+ let next = value;
256
+ for (let i = 0; i < tail.length; i++) {
257
+ if (next == null) return;
258
+ next = next[tail[i]];
259
+ }
260
+ handler(next, changes);
261
+ } : handler;
262
+ const target = Object.prototype.hasOwnProperty.call(_raw(self), prop) ? state.observers ?? (state.observers = /* @__PURE__ */ new Map()) : state.derived ?? (state.derived = /* @__PURE__ */ new Map());
263
+ let bucket = target.get(prop);
264
+ if (!bucket) target.set(prop, bucket = /* @__PURE__ */ new Set());
265
+ bucket.add(finalHandler);
266
+ return () => {
267
+ bucket.delete(finalHandler);
268
+ };
269
+ }
270
+ function leanObserveDirect(self, prop, handler) {
271
+ const state = self == null ? void 0 : self[_PRIV];
272
+ if (!state) return () => {};
273
+ state.ready = true;
274
+ const direct = state.direct ?? (state.direct = /* @__PURE__ */ new Map());
275
+ let bucket = direct.get(prop);
276
+ if (!bucket) direct.set(prop, bucket = /* @__PURE__ */ new Set());
277
+ bucket.add(handler);
278
+ return () => {
279
+ bucket.delete(handler);
280
+ };
281
+ }
282
+ //#endregion
283
+ //#region ../gea/src/runtime/compiled-tiny-reactive-component.ts
284
+ const GEA_COMPONENT_ID = Symbol();
285
+ let nextComponentId = 0;
286
+ var CompiledTinyReactiveComponent = class {
287
+ constructor() {
288
+ this.rendered = false;
289
+ this.props = {};
290
+ this[GEA_ELEMENT] = null;
291
+ this[GEA_DISPOSER] = createDisposer();
292
+ return createLeanProxy(this);
293
+ }
294
+ get id() {
295
+ return this[GEA_COMPONENT_ID] ??= "_" + nextComponentId++;
296
+ }
297
+ set id(value) {
298
+ this[GEA_COMPONENT_ID] = value;
299
+ }
300
+ get el() {
301
+ return this[GEA_ELEMENT] ?? null;
302
+ }
303
+ [GEA_SET_PROPS](thunks) {
304
+ const out = {};
305
+ for (const k in thunks) Object.defineProperty(out, k, {
306
+ enumerable: true,
307
+ get: () => thunks[k]()
308
+ });
309
+ this.props = out;
310
+ }
311
+ render(parent, _index) {
312
+ const node = this[GEA_CREATE_TEMPLATE](this[GEA_DISPOSER]);
313
+ parent.appendChild(node);
314
+ if (node.nodeType === 11) this[GEA_ELEMENT] = parent.lastElementChild ?? null;
315
+ else if (node.nodeType === 1) this[GEA_ELEMENT] = node;
316
+ const el = this[GEA_ELEMENT];
317
+ if (el) el[GEA_DOM_COMPONENT] = this;
318
+ this.rendered = true;
319
+ }
320
+ observe(pathOrProp, handler) {
321
+ return leanObserve(this, pathOrProp, handler);
322
+ }
323
+ [GEA_OBSERVE_DIRECT](prop, handler) {
324
+ return leanObserveDirect(this, prop, handler);
325
+ }
326
+ dispose() {
327
+ this[GEA_DISPOSER].dispose();
328
+ this[GEA_ELEMENT]?.remove();
329
+ this[GEA_ELEMENT] = null;
330
+ }
331
+ $(sel) {
332
+ return this[GEA_ELEMENT]?.querySelector(sel) ?? null;
333
+ }
334
+ $$(sel) {
335
+ return Array.from(this[GEA_ELEMENT]?.querySelectorAll(sel) ?? []);
336
+ }
337
+ created(_props) {}
338
+ onAfterRender() {}
339
+ };
340
+ //#endregion
341
+ //#region ../gea/src/runtime/delegate-click.ts
342
+ const _GC = "__gc";
343
+ const _GDC = "__gdc";
344
+ function ensureClickDelegate(root) {
345
+ const rt = typeof document !== "undefined" ? document : root.ownerDocument;
346
+ if (!rt[_GDC]) {
347
+ rt[_GDC] = 1;
348
+ rt.addEventListener("click", (e) => {
349
+ for (let n = e.target; n && n !== rt; n = n.parentNode) {
350
+ const h = n[_GC];
351
+ if (h !== void 0) {
352
+ h(e);
353
+ return;
354
+ }
355
+ }
356
+ });
357
+ }
358
+ }
359
+ function delegateClick(root, pairs, disposer) {
360
+ ensureClickDelegate(root);
361
+ for (let i = 0; i < pairs.length; i++) {
362
+ const el = pairs[i][0];
363
+ if (el) el[_GC] = pairs[i][1];
364
+ }
365
+ if (disposer && !disposer.noop) disposer.add(_clearHandlers(pairs));
366
+ }
367
+ function _clearHandlers(pairs) {
368
+ return () => {
369
+ for (let i = 0; i < pairs.length; i++) {
370
+ const el = pairs[i][0];
371
+ if (el) el[_GC] = void 0;
372
+ }
373
+ };
374
+ }
375
+ //#endregion
376
+ //#region src/components/draggable.tsx
377
+ function _tpl0_create() {
378
+ const e = document.createElement("div");
379
+ e.textContent = "0";
380
+ return e;
381
+ }
382
+ var Draggable = class extends CompiledTinyReactiveComponent {
383
+ constructor(..._args) {
384
+ super(..._args);
385
+ this._didDrag = false;
386
+ }
387
+ _onPointerDown(e) {
388
+ const el = e.target.closest(".gea-draggable");
389
+ if (!el) return;
390
+ this._didDrag = false;
391
+ dndManager.startTracking(e, this.props.draggableId, el);
392
+ }
393
+ [GEA_CREATE_TEMPLATE](d) {
394
+ const root = _tpl0_create();
395
+ const el0 = root;
396
+ const el1 = el0;
397
+ const el2 = el0;
398
+ const evt3 = el0;
399
+ const evt4 = el0;
400
+ const marker5 = root.firstChild;
401
+ reactiveClassName(el0, d, this, () => `gea-draggable ${this.props.class || ""}`);
402
+ reactiveAttr(el1, d, this, "data-draggable-id", () => this.props.draggableId);
403
+ reactiveAttr(el2, d, this, "data-index", () => this.props.index);
404
+ const h3 = (e) => this._onPointerDown(e);
405
+ const h4 = (e) => {
406
+ if (dndManager.isDragging) {
407
+ e.preventDefault();
408
+ e.stopPropagation();
409
+ }
410
+ };
411
+ reactiveText(marker5, d, this, () => this.props.children);
412
+ delegateEvent(root, "pointerdown", [[evt3, h3]], d);
413
+ delegateClick(root, [[
414
+ evt4,
415
+ h4,
416
+ false
417
+ ]]);
418
+ return root;
419
+ }
420
+ };
421
+ //#endregion
422
+ export { Draggable as t };
423
+
424
+ //# sourceMappingURL=draggable2.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draggable2.mjs","names":["GEA_DIRTY","GEA_DIRTY_PROPS","GEA_CREATE_TEMPLATE","reactiveClassName","reactiveAttr","reactiveText","delegateEvent","delegateClick","CompiledTinyReactiveComponent","Component","dndManager","_tpl0_create","e","document","createElement","textContent","Draggable","_didDrag","_onPointerDown","PointerEvent","el","target","HTMLElement","closest","startTracking","props","draggableId","d","root","el0","el1","el2","evt3","evt4","marker5","firstChild","class","index","h3","h4","MouseEvent","isDragging","preventDefault","stopPropagation","t5","children"],"sources":["../../gea/src/runtime/compiled-lean-store.ts","../../gea/src/runtime/compiled-tiny-reactive-component.ts","../../gea/src/runtime/delegate-click.ts","../src/components/draggable.tsx"],"sourcesContent":["import { GEA_PROXY_RAW } from './symbols'\nimport { GEA_OBSERVE_DIRECT } from './internal-symbols'\nimport { GEA_DIRTY, GEA_DIRTY_PROPS } from './dirty-symbols'\nimport { trackRead } from './with-tracking'\nimport type { Change } from '../store'\n\n/**\n * A store observer: the changed value, and the batch of changes that\n * produced it. `S` is `CompiledLeanStore<S>`'s own type parameter — the\n * concrete store subclass's field shape, resolved once per subclass exactly\n * the way `CompiledComponent<P>` resolves `P` for a component's props. A\n * single `Map<string, Set<Handler<S>>>` holds observers across every field\n * of `S` at once, so the exact field a given handler fires for isn't known\n * at this layer — but the closed set of types it could possibly be (every\n * member of `S`) is, which is why `value` is `S[keyof S]` rather than\n * `any`/`unknown`.\n */\ntype Handler<S> = (value: S[keyof S], changes: Change[]) => void\n\ninterface LeanState<S> {\n observers?: Map<string, Set<Handler<S>>>\n rootObservers?: Set<Handler<S>>\n derived?: Map<string, Set<Handler<S>>>\n direct?: Map<string, Set<(value: S[keyof S]) => void>>\n /** Queued change records, keyed by the prop they were recorded against —\n * each entry is `Change`-shaped (built by `_queue` below), not a raw\n * store value, so `Change[]` is exact rather than `any[]`. */\n pending?: Map<string, Change[]>\n scheduled?: boolean\n ready?: boolean\n /** The store's own proxy — literally an `S`, not `any`. */\n proxy?: S\n}\n\n// Private state and the nested-proxy cache hang off the object itself under a\n// non-enumerable symbol, rather than living in a `WeakMap` keyed by it. geatsc\n// marks every value that reaches a weak-container key as a weak-handle\n// ownership subject and then rejects it for having a dynamic carrier (\"Weak-handle\n// ownership subject ... reached unsupported callable, dynamic, or mixed carrier\n// dynamic:declared-dynamic\") — and the store's values are dynamic by nature, so\n// there is no type that satisfies it. A symbol property has the same lifetime as\n// the WeakMap entry (it dies with the object), is invisible to `Object.keys`,\n// `for...in` and `JSON.stringify`, and reaches the raw target through the proxy's\n// existing symbol pass-through in both traps.\nconst _PRIV = Symbol('gea.lean.priv')\nconst _NESTED = Symbol('gea.lean.nested')\n\n/**\n * `O`/`V` are generic (not `object`/`any`) — this helper hides a value under\n * a symbol key on WHATEVER object it's called with (the raw store, its\n * proxy, a Map cache, ...), so its own declaration can't pin a single\n * concrete shape; each call site supplies its own concrete `O`/`V`.\n */\nfunction _hidden<O extends object, V>(target: O, key: symbol, value: V): void {\n Object.defineProperty(target, key, { value, writable: true, configurable: true, enumerable: false })\n}\n\n/**\n * Browser fallback for the tracked-proxy plain-value v1 contract. The embedded\n * compiler replaces this exact exported coordinate with its native predicate.\n * V1 assumes pristine builtins and ordinary Gea values (including Gea-owned,\n * non-revoked proxies); monkey-patched prototypes and custom/revoked proxies\n * are outside the contract.\n */\nexport function _plain<V>(v: V): boolean {\n if (!v || typeof v !== 'object') return false\n const p = Object.getPrototypeOf(v)\n return p === Object.prototype || p === null || Array.isArray(v)\n}\n\n/** Unwrap a proxy value to its raw target, preserving whatever type it was. */\nfunction _raw<V>(v: V): V {\n const rawTarget = v && (v as unknown as Record<symbol, unknown>)[GEA_PROXY_RAW]\n return (rawTarget as V) || v\n}\n\nfunction _fireBucket<S>(bucket: Set<Handler<S>>, value: S[keyof S], changes: Change[]): void {\n if (bucket.size === 0) return\n if (bucket.size === 1) {\n for (const h of bucket) {\n h(value, changes)\n return\n }\n }\n const snapshot: Handler<S>[] = []\n for (const h of bucket) snapshot.push(h)\n for (let i = 0; i < snapshot.length; i++) {\n try {\n snapshot[i](value, changes)\n } catch {\n /* isolate sibling observers */\n }\n }\n}\n\nfunction _flush<S>(state: LeanState<S>): void {\n state.scheduled = false\n const pending = state.pending\n if (!pending || pending.size === 0) return\n state.pending = undefined\n let all: Change[] | null = null\n for (const entry of pending) {\n const prop = entry[0]\n const changes = entry[1]\n if (state.rootObservers || state.derived) {\n all ??= []\n for (let i = 0; i < changes.length; i++) all.push(changes[i])\n }\n const bucket = state.observers?.get(prop)\n if (bucket) _fireBucket(bucket, (state.proxy as S)[prop as keyof S], changes)\n }\n if (all && state.rootObservers) {\n _fireBucket(state.rootObservers, state.proxy as S[keyof S], all)\n }\n if (all && state.derived) {\n for (const entry of state.derived) {\n const prop = entry[0]\n const bucket = entry[1]\n if (bucket.size === 0) continue\n let value: S[keyof S]\n try {\n value = (state.proxy as S)[prop as keyof S]\n } catch {\n continue\n }\n _fireBucket(bucket, value, all)\n }\n }\n}\n\nfunction _hasQueuedConsumers<S>(state: LeanState<S>, prop: string): boolean {\n const bucket = state.observers?.get(prop)\n return !!(\n (bucket && bucket.size > 0) ||\n (state.rootObservers && state.rootObservers.size > 0) ||\n (state.derived && state.derived.size > 0)\n )\n}\n\nfunction _queue<S>(state: LeanState<S>, prop: string, change: Partial<Change> = {}): void {\n if (!state.ready) return\n if (!_hasQueuedConsumers(state, prop)) return\n const rec: Change = { prop, pathParts: [prop], type: 'update', target: state.proxy, ...change }\n const pending = state.pending ?? (state.pending = new Map())\n const arr = pending.get(prop)\n if (arr) arr.push(rec)\n else pending.set(prop, [rec])\n if (!state.scheduled) {\n state.scheduled = true\n queueMicrotask(() => _flush(state))\n }\n}\n\n/**\n * Nested nested-object/array traversal INSIDE one of `S`'s own fields (e.g.\n * `store.list[0].name`): once inside a field's own substructure, the shape\n * is no longer described by `S` (a field's element/property types aren't\n * modeled recursively here) — `V` is a genuinely open per-call type at this\n * depth, kept as a type parameter rather than `any` so it's at least\n * threaded through instead of erased, but this is the one spot in this file\n * that's honestly a dynamic-JS-object-graph boundary: how deep a nested\n * value's shape goes isn't knowable without walking `S` structurally.\n */\nfunction _wrap<S, V>(state: LeanState<S>, target: V, rootProp: string): V {\n if (!_plain(target)) return target\n const targetObj = target as unknown as Record<PropertyKey, unknown>\n let perTarget: Map<string, unknown> | undefined = (targetObj as unknown as Record<symbol, Map<string, unknown>>)[\n _NESTED\n ]\n if (perTarget) {\n const cached = perTarget.get(rootProp)\n if (cached) return cached as V\n }\n const proxy = new Proxy(targetObj, {\n get(obj, prop) {\n if (prop === GEA_PROXY_RAW) return obj\n if (typeof prop === 'symbol') return obj[prop]\n trackRead(state.proxy as object, rootProp)\n const value = obj[prop]\n if (Array.isArray(obj) && typeof value === 'function') {\n if (prop === 'push') {\n return (...items: unknown[]) => {\n const start = (obj as unknown[]).length\n const result = Array.prototype.push.apply(obj, items.map(_raw))\n if ((obj as unknown[]).length > start) {\n _queue(state, rootProp, { type: 'append', start, count: (obj as unknown[]).length - start })\n }\n return result\n }\n }\n }\n return _plain(value) ? _wrap(state, value, rootProp) : value\n },\n set(obj, prop, value) {\n if (typeof prop === 'symbol') {\n obj[prop] = value\n return true\n }\n value = _raw(value)\n const old = obj[prop]\n if (old === value) return true\n obj[prop] = value\n if (Array.isArray(obj)) {\n if (value && typeof value === 'object') (value as Record<symbol, unknown>)[GEA_DIRTY] = true\n const idx = +prop\n if (Number.isInteger(idx)) {\n _queue(state, rootProp, { aipu: true, arix: idx, previousValue: old, newValue: value })\n return true\n }\n } else {\n ;(obj as Record<symbol, unknown>)[GEA_DIRTY] = true\n const dirtyProps = ((obj as Record<symbol, unknown>)[GEA_DIRTY_PROPS] ??= new Set()) as Set<string>\n dirtyProps.add(prop)\n }\n _queue(state, rootProp, { previousValue: old, newValue: value })\n return true\n },\n deleteProperty(obj, prop) {\n if (typeof prop === 'symbol') {\n delete obj[prop]\n return true\n }\n const old = obj[prop]\n delete obj[prop]\n if (!Array.isArray(obj)) (obj as Record<symbol, unknown>)[GEA_DIRTY] = true\n _queue(state, rootProp, { previousValue: old, type: 'delete' })\n return true\n },\n })\n if (!perTarget) {\n perTarget = new Map()\n _hidden(targetObj, _NESTED, perTarget)\n }\n perTarget.set(rootProp, proxy)\n return proxy as V\n}\n\nexport function createLeanProxy<S extends object>(raw: S): S {\n const state: LeanState<S> = {}\n _hidden(raw, _PRIV, state)\n // The trap parameters are spelled out rather than left to `ProxyHandler<T>`'s\n // contextual typing. geatsc plans a parameter from its OWN declaration, so an\n // unannotated trap formal seals no carrier at all (`representation-plan\n // coverage gap for Parameter`) even though the checker knows the contextual\n // type. `receiver` is `object`, not `any`/`unknown` — per the Proxy spec it's\n // always the object the property access was initiated on (the proxy itself,\n // or a subclass instance), never a primitive. `prop`/`value` stay as the\n // genuinely dynamic boundary (whatever the app read or wrote); those are\n // narrowed before use below.\n const proxy = new Proxy(raw, {\n get(target: S, prop: string | symbol, receiver: object) {\n if (prop === GEA_PROXY_RAW) return target\n if (typeof prop === 'symbol') return (target as Record<symbol, unknown>)[prop]\n trackRead(receiver ?? target, prop)\n const value = target[prop as keyof S]\n if (typeof value === 'function') return (value as (...args: unknown[]) => unknown).bind(receiver)\n return _plain(value) ? _wrap(state, value, prop) : value\n },\n set(target: S, prop: string | symbol, value: unknown) {\n if (typeof prop === 'symbol') {\n ;(target as Record<symbol, unknown>)[prop] = value\n return true\n }\n value = _raw(value)\n if (Array.isArray(value)) value = value.map(_raw)\n const old = target[prop as keyof S]\n if (old === value && prop in target) return true\n if (old && typeof old === 'object') delete (old as Record<symbol, unknown>)[_NESTED]\n ;(target as Record<string, unknown>)[prop] = value\n const direct = state.direct?.get(prop)\n if (direct) for (const h of direct) h(value as S[keyof S])\n _queue(state, prop, { previousValue: old, newValue: value })\n return true\n },\n })\n state.proxy = proxy\n _hidden(proxy, _PRIV, state)\n return proxy\n}\n\nexport function leanObserve<S>(\n self: S | null | undefined,\n pathOrProp: string | readonly string[],\n handler: Handler<S>,\n): () => void {\n const state: LeanState<S> | undefined = self == null ? undefined : (self as Record<symbol, LeanState<S>>)[_PRIV]\n if (!state) return () => {}\n state.ready = true\n const isArr = Array.isArray(pathOrProp)\n // `path` / `text` carry the two alternatives in their own exact slots so\n // `.length` / `[0]` / `.slice` have a `readonly string[]` receiver: called on\n // `pathOrProp` — declared `string | readonly string[]` — the intrinsic has no\n // single receiver carrier and `pathOrProp.slice(1)` fail-closed with\n // `representation-plan coverage gap for CallExpression`. Each read is already\n // guarded by `isArr`, so neither default is ever observed.\n let path: readonly string[] = []\n let text = ''\n if (typeof pathOrProp === 'string') text = pathOrProp\n else path = pathOrProp\n if ((isArr && path.length === 0) || (!isArr && text === '')) {\n const bucket = state.rootObservers ?? (state.rootObservers = new Set())\n bucket.add(handler)\n return () => {\n bucket.delete(handler)\n }\n }\n const prop = isArr ? (path[0] ?? '') : text\n if (!prop) return () => {}\n const tail = isArr && path.length > 1 ? path.slice(1) : null\n const finalHandler: Handler<S> = tail\n ? (value, changes) => {\n let next: unknown = value\n for (let i = 0; i < tail.length; i++) {\n if (next == null) return\n next = (next as Record<string, unknown>)[tail[i]]\n }\n handler(next as S[keyof S], changes)\n }\n : handler\n const target = Object.prototype.hasOwnProperty.call(_raw(self), prop)\n ? (state.observers ?? (state.observers = new Map()))\n : (state.derived ?? (state.derived = new Map()))\n let bucket = target.get(prop)\n if (!bucket) target.set(prop, (bucket = new Set()))\n bucket.add(finalHandler)\n return () => {\n bucket!.delete(finalHandler)\n }\n}\n\nexport function leanObserveDirect<S>(\n self: S | null | undefined,\n prop: string,\n handler: (value: S[keyof S]) => void,\n): () => void {\n const state: LeanState<S> | undefined = self == null ? undefined : (self as Record<symbol, LeanState<S>>)[_PRIV]\n if (!state) return () => {}\n state.ready = true\n const direct = state.direct ?? (state.direct = new Map())\n let bucket = direct.get(prop)\n if (!bucket) direct.set(prop, (bucket = new Set()))\n bucket.add(handler)\n return () => {\n bucket!.delete(handler)\n }\n}\n\nexport class CompiledLeanStore<S extends Record<string, any> = Record<string, any>> {\n constructor() {\n return createLeanProxy(this as unknown as S) as unknown as this\n }\n\n observe(pathOrProp: string | readonly string[], handler: Handler<S>): () => void {\n return leanObserve(this as unknown as S, pathOrProp, handler)\n }\n\n [GEA_OBSERVE_DIRECT](prop: string, handler: (value: S[keyof S]) => void): () => void {\n return leanObserveDirect(this as unknown as S, prop, handler)\n }\n}\n\nexport default CompiledLeanStore\n","import { GEA_CREATE_TEMPLATE, GEA_DOM_COMPONENT, GEA_ELEMENT } from './symbols'\nimport { GEA_DISPOSER, GEA_OBSERVE_DIRECT, GEA_SET_PROPS } from './internal-symbols'\nimport { createDisposer, type Disposer } from './disposer'\nimport { createLeanProxy, leanObserve, leanObserveDirect } from './compiled-lean-store'\nimport type { Change } from '../store'\n\n/** Same observer shape as the compiled stores; see `compiled-store.ts`. */\ntype Handler = (value: unknown, changes: Change[]) => void\n/**\n * One thunk per prop of `P`, each returning that prop's own type.\n *\n * Generic rather than a flat dictionary so a component's props keep their\n * declared types all the way through `GEA_SET_PROPS` — the compiler emits one\n * thunk per JSX attribute, so the mapping is exact at every instantiation.\n */\ntype PropThunks<P> = { [K in keyof P]: () => P[K] }\nconst GEA_COMPONENT_ID: unique symbol = Symbol()\nlet nextComponentId = 0\n\nexport class CompiledTinyReactiveComponent<P extends Record<string, any> = Record<string, any>> {\n rendered = false\n props: P = {} as P;\n [GEA_ELEMENT] = null as HTMLElement | null;\n [GEA_DISPOSER] = createDisposer() as Disposer;\n [GEA_COMPONENT_ID]?: string\n\n constructor() {\n return createLeanProxy(this)\n }\n\n get id(): string {\n return (this[GEA_COMPONENT_ID] ??= '_' + nextComponentId++)\n }\n\n set id(value: string) {\n this[GEA_COMPONENT_ID] = value\n }\n\n get el(): HTMLElement | null {\n return this[GEA_ELEMENT] ?? null\n }\n\n [GEA_SET_PROPS](thunks: PropThunks<P>): void {\n const out: Partial<P> = {}\n for (const k in thunks) {\n Object.defineProperty(out, k, {\n enumerable: true,\n get: () => thunks[k](),\n })\n }\n this.props = out as P\n }\n\n render(parent: Node, _index?: number): void {\n const node = this[GEA_CREATE_TEMPLATE](this[GEA_DISPOSER])\n parent.appendChild(node)\n if (node.nodeType === 11) this[GEA_ELEMENT] = ((parent as Element).lastElementChild as HTMLElement | null) ?? null\n else if (node.nodeType === 1) this[GEA_ELEMENT] = node as HTMLElement\n const el = this[GEA_ELEMENT]\n if (el) (el as HTMLElement & { [GEA_DOM_COMPONENT]?: unknown })[GEA_DOM_COMPONENT] = this\n this.rendered = true\n }\n\n observe(pathOrProp: string | readonly string[], handler: Handler): () => void {\n return leanObserve(this, pathOrProp, handler)\n }\n\n [GEA_OBSERVE_DIRECT](prop: string, handler: (value: unknown) => void): () => void {\n return leanObserveDirect(this, prop, handler)\n }\n\n dispose(): void {\n this[GEA_DISPOSER].dispose()\n this[GEA_ELEMENT]?.remove()\n this[GEA_ELEMENT] = null\n }\n\n $(sel: string): Element | null {\n return this[GEA_ELEMENT]?.querySelector(sel) ?? null\n }\n\n $$(sel: string): Element[] {\n return Array.from(this[GEA_ELEMENT]?.querySelectorAll(sel) ?? [])\n }\n\n created(_props?: P): void {\n /* no-op */\n }\n\n onAfterRender(): void {\n /* no-op */\n }\n}\n\nexport default CompiledTinyReactiveComponent\n","import type { Disposer } from './disposer'\n\ntype Handler = (e: Event) => void\ntype HandlerPair = [Element, Handler]\n\n// Computed key, exactly as in `delegate-event-fast`. A literal `.__gc` expando\n// makes geatsc collect an anonymous record whose field is callable, which it has\n// no representation for (\"Anonymous record expando __gc has no Representation\n// for Handler\"). Reading and writing through a computed key keeps the property\n// dynamic, so no record shape is inferred for the host Element. `_GDC` (the\n// once-per-document delegate-installed flag) follows the same rule for the\n// same reason — a literal `.__gdc` would pin an anonymous record on Document.\nconst _GC = '__' + 'gc'\nconst _GDC = '__' + 'gdc'\n\n// The per-node handler stash and the per-document flag are dynamic expandos on\n// host objects; `Record<string, ...>` through the computed key is the same\n// sanctioned spelling `compiled-lean-store.ts` uses for its symbol stashes.\ntype HandlerStash = Record<string, Handler | undefined>\ntype FlagStash = Record<string, number | undefined>\n\nexport function ensureClickDelegate(root: Element): void {\n const rt: Document = typeof document !== 'undefined' ? document : (root.ownerDocument as Document)\n if (!(rt as unknown as FlagStash)[_GDC]) {\n ;(rt as unknown as FlagStash)[_GDC] = 1\n rt.addEventListener('click', (e: Event) => {\n for (let n: Node | null = e.target as Node | null; n && n !== rt; n = n.parentNode) {\n const h = (n as unknown as HandlerStash)[_GC]\n if (h !== undefined) {\n h(e)\n return\n }\n }\n })\n }\n}\n\nexport function delegateClick(root: Element, pairs: HandlerPair[], disposer?: Disposer): void {\n ensureClickDelegate(root)\n for (let i = 0; i < pairs.length; i++) {\n const el = pairs[i][0]\n if (el) (el as unknown as HandlerStash)[_GC] = pairs[i][1]\n }\n // Disposer-contained storage: one registration per call (not per pair), so\n // the live-path cost stays a single push. The `noop` check runs here, not\n // inside `add`, so the noop fast path (keyed-list rows with no cleanup)\n // allocates nothing — not even the teardown closure. Clearing on dispose\n // bounds every stashed handler's lifetime to the owning component: the\n // handlers capture the component's `this`, and under refcounted ownership\n // an uncleared stash would keep the component alive through its own DOM\n // (component → element → handler → component).\n if (disposer && !disposer.noop) disposer.add(_clearHandlers(pairs))\n}\n\nfunction _clearHandlers(pairs: HandlerPair[]): () => void {\n return () => {\n for (let i = 0; i < pairs.length; i++) {\n const el = pairs[i][0]\n if (el) (el as unknown as HandlerStash)[_GC] = undefined\n }\n }\n}\n","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.target 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":"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"}
@@ -7,7 +7,7 @@ declare class Droppable extends Component {
7
7
  created(): void;
8
8
  onAfterRender(): void;
9
9
  dispose(): void;
10
- template(props: any): string;
10
+ template(props: any): any;
11
11
  }
12
12
  //#endregion
13
13
  export { Droppable as default };
@@ -1,14 +1,20 @@
1
+ import { o as GEA_CREATE_TEMPLATE } from "./bind.mjs";
2
+ import { t as CompiledReactiveComponent } from "./compiled-reactive-component.mjs";
3
+ import { t as reactiveText } from "./reactive-text.mjs";
4
+ import { t as reactiveAttr } from "./reactive-attr.mjs";
5
+ import { t as reactiveClassName } from "./reactive-class-name.mjs";
1
6
  import { dndManager } from "./dnd-manager.mjs";
2
- import { Component, GEA_ELEMENT, GEA_INSTANTIATE_CHILD_COMPONENTS, GEA_MOUNT_COMPILED_CHILD_COMPONENTS, GEA_ON_PROP_CHANGE, GEA_PATCH_NODE } from "@geajs/core";
3
7
  //#region src/components/droppable.tsx
4
- var Droppable = class extends Component {
8
+ function _tpl0_create() {
9
+ const e = document.createElement("div");
10
+ e.textContent = "0";
11
+ return e;
12
+ }
13
+ var Droppable = class extends CompiledReactiveComponent {
5
14
  constructor(..._args) {
6
15
  super(..._args);
7
16
  this._registered = false;
8
17
  }
9
- static {
10
- this.__geaTagName = "gea-droppable";
11
- }
12
18
  _registerWithManager() {
13
19
  const el = this.el?.querySelector("[data-droppable-id]");
14
20
  if (el && !this._registered) {
@@ -29,45 +35,15 @@ var Droppable = class extends Component {
29
35
  }
30
36
  super.dispose();
31
37
  }
32
- template(props) {
33
- return `<div id="${this.id}" class="${`gea-droppable ${props.class || ""}`.trim()}"${props.droppableId == null || props.droppableId === false ? "" : ` data-droppable-id="${props.droppableId}"`}>${props.children}</div>`;
34
- }
35
- [GEA_ON_PROP_CHANGE](key, value) {
36
- if (key === "class") {
37
- const __el = this[GEA_ELEMENT];
38
- this.props;
39
- const __boundValue = `gea-droppable ${value || ""}`;
40
- if (__el) {
41
- const __newClass = String(__boundValue ?? "").trim().replace(/\s+/g, " ");
42
- if (__el.className !== __newClass) __el.className = __newClass;
43
- }
44
- }
45
- if (key === "droppableId") {
46
- const __el = this[GEA_ELEMENT];
47
- if (__el) {
48
- var __av = value;
49
- if (__av == null || __av === false) __el.removeAttribute("data-droppable-id");
50
- else {
51
- const __newAttr = String(__av);
52
- if (__el.getAttribute("data-droppable-id") !== __newAttr) __el.setAttribute("data-droppable-id", __newAttr);
53
- }
54
- }
55
- }
56
- if (key === "children") {
57
- const __el = this[GEA_ELEMENT];
58
- if (__el) {
59
- const __tw = document.createElement("template");
60
- __tw.innerHTML = value;
61
- const __newEl = __tw.content.firstElementChild;
62
- const __existEl = __el.firstElementChild;
63
- if (__newEl && __existEl && __tw.content.childNodes.length === 1) this.constructor[GEA_PATCH_NODE](__existEl, __newEl, true);
64
- else if (__el.innerHTML !== value) {
65
- __el.innerHTML = value;
66
- this[GEA_INSTANTIATE_CHILD_COMPONENTS]();
67
- if (this.parentComponent) this.parentComponent[GEA_MOUNT_COMPILED_CHILD_COMPONENTS]();
68
- }
69
- }
70
- }
38
+ [GEA_CREATE_TEMPLATE](d) {
39
+ const root = _tpl0_create();
40
+ const el0 = root;
41
+ const el1 = el0;
42
+ const marker2 = root.firstChild;
43
+ reactiveClassName(el0, d, this, () => `gea-droppable ${this.props.class || ""}`);
44
+ reactiveAttr(el1, d, this, "data-droppable-id", () => this.props.droppableId);
45
+ reactiveText(marker2, d, this, () => this.props.children);
46
+ return root;
71
47
  }
72
48
  };
73
49
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"droppable.mjs","names":["Component","GEA_ON_PROP_CHANGE","GEA_ELEMENT","GEA_PATCH_NODE","GEA_INSTANTIATE_CHILD_COMPONENTS","GEA_MOUNT_COMPILED_CHILD_COMPONENTS","dndManager","Droppable","__geaTagName","_registered","_registerWithManager","el","querySelector","HTMLElement","registerDroppable","props","droppableId","created","queueMicrotask","onAfterRender","dispose","unregisterDroppable","template","__id","id","class","trim","children","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/droppable.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { dndManager } from './dnd-manager'\n\nexport default class Droppable extends Component {\n private _registered = false\n\n _registerWithManager() {\n const el = this.el?.querySelector('[data-droppable-id]') as HTMLElement\n if (el && !this._registered) {\n dndManager.registerDroppable(this.props.droppableId as string, el)\n this._registered = true\n }\n }\n\n created() {\n queueMicrotask(() => this._registerWithManager())\n }\n\n onAfterRender() {\n this._registerWithManager()\n }\n\n dispose() {\n if (this._registered) {\n dndManager.unregisterDroppable(this.props.droppableId as string)\n this._registered = false\n }\n super.dispose()\n }\n\n template(props: any) {\n return (\n <div class={`gea-droppable ${props.class || ''}`} data-droppable-id={props.droppableId}>\n {props.children}\n </div>\n )\n }\n}\n"],"mappings":";;;AAGA,IAAqBO,YAArB,cAAuCP,UAAU;;;qBACzB;;;sBADyB;;CAG/CU,uBAAuB;EACrB,MAAMC,KAAK,KAAKA,IAAIC,cAAc,sBAAsB;AACxD,MAAID,MAAM,CAAC,KAAKF,aAAa;AAC3BH,cAAWQ,kBAAkB,KAAKC,MAAMC,aAAuBL,GAAG;AAClE,QAAKF,cAAc;;;CAIvBQ,UAAU;AACRC,uBAAqB,KAAKR,sBAAsB,CAAC;;CAGnDS,gBAAgB;AACd,OAAKT,sBAAsB;;CAG7BU,UAAU;AACR,MAAI,KAAKX,aAAa;AACpBH,cAAWe,oBAAoB,KAAKN,MAAMC,YAAsB;AAChE,QAAKP,cAAc;;AAErB,QAAMW,SAAS;;CAGjBE,SAASP,OAAY;AACnB,SAAA,YADmB,KAAAS,GACnB,WACc,iBAAiBT,MAAMU,SAAS,KAAIC,MAAA,CAAA,GAAqBX,MAAMC,eAAW,QAAjBD,MAAMC,gBAAW,QAAA,KAAA,uBAAjBD,MAAMC,YAAW,GAAA,GACnFD,MAAMY,SAAQ;;CAhCvB,CAAA1B,oBAAwB2B,KAAKC,OAAK;AAAA,MAAAD,QAAA,SAAA;GAAA,MAAAE,OAAA,KAAA5B;AA6Bb,QAAAa;GAAA,MAAAgB,eAEH,iBAAiBF,SAAe;AAAI,OAAAC,MA/BtD;IACM,MAAME,aADXC,OAAOF,gBAAyB,GAAG,CAAEL,MAAM,CAACQ,QAAQ,QAAQ,IACf;AACxC,QAAIJ,KAAsBK,cAAcH,WAAYF,MAAsBK,YAAYH;;;AACvF,MAAAJ,QAAA,eAAA;GAAA,MAAAE,OAAA,KAAA5B;AAAA,OAAA4B,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,YAAA;GAAA,MAAAE,OAAA,KAAA5B;AAAA,OAAA4B,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,YAAWhD,gBAAwB6C,WAAWH,SAAS,KAAK;aACxDf,KAAsBc,cAASf,OAA4B;AACpEC,UAAsBc,YAASf;AAC/B,UAAIzB,mCAAyB;AAC7B,SAAI,KAAKgD,gBAAiB,MAAKA,gBAAe/C,sCAAyB"}
1
+ {"version":3,"file":"droppable.mjs","names":["GEA_CREATE_TEMPLATE","reactiveClassName","reactiveAttr","reactiveText","CompiledReactiveComponent","Component","dndManager","_tpl0_create","e","document","createElement","textContent","Droppable","_registered","_registerWithManager","el","querySelector","HTMLElement","registerDroppable","props","droppableId","created","queueMicrotask","onAfterRender","dispose","unregisterDroppable","d","root","el0","el1","marker2","firstChild","class","t2","children"],"sources":["../src/components/droppable.tsx"],"sourcesContent":["import { Component } from '@geajs/core'\nimport { dndManager } from './dnd-manager'\n\nexport default class Droppable extends Component {\n private _registered = false\n\n _registerWithManager() {\n const el = this.el?.querySelector('[data-droppable-id]') as HTMLElement\n if (el && !this._registered) {\n dndManager.registerDroppable(this.props.droppableId as string, el)\n this._registered = true\n }\n }\n\n created() {\n queueMicrotask(() => this._registerWithManager())\n }\n\n onAfterRender() {\n this._registerWithManager()\n }\n\n dispose() {\n if (this._registered) {\n dndManager.unregisterDroppable(this.props.droppableId as string)\n this._registered = false\n }\n super.dispose()\n }\n\n template(props: any) {\n return (\n <div class={`gea-droppable ${props.class || ''}`} data-droppable-id={props.droppableId}>\n {props.children}\n </div>\n )\n }\n}\n"],"mappings":";;;;;;;AAGA,SAASO,eAAe;CACtB,MAAMC,IAAIC,SAASC,cAAc,MAAM;AACvCF,GAAEG,cAAc;AAChB,QAAOH;;AAET,IAAqBI,YAArB,cAAuCR,0BAA0B;;;qBACzC;;CACtBU,uBAAuB;EACrB,MAAMC,KAAK,KAAKA,IAAIC,cAAc,sBAAsB;AACxD,MAAID,MAAM,CAAC,KAAKF,aAAa;AAC3BP,cAAWY,kBAAkB,KAAKC,MAAMC,aAAuBL,GAAG;AAClE,QAAKF,cAAc;;;CAGvBQ,UAAU;AACRC,uBAAqB,KAAKR,sBAAsB,CAAC;;CAEnDS,gBAAgB;AACd,OAAKT,sBAAsB;;CAE7BU,UAAU;AACR,MAAI,KAAKX,aAAa;AACpBP,cAAWmB,oBAAoB,KAAKN,MAAMC,YAAsB;AAChE,QAAKP,cAAc;;AAErB,QAAMW,SAAS;;CAEjB,CAACxB,qBAAqB0B,GAAG;EACvB,MAAMC,OAAOpB,cAAc;EAC3B,MAAMqB,MAAMD;EACZ,MAAME,MAAMD;EACZ,MAAME,UAAUH,KAAKI;AACrB9B,oBAAkB2B,KAAKF,GAAG,YAAY,iBAAiB,KAAKP,MAAMa,SAAS,KAAK;AAChF9B,eAAa2B,KAAKH,GAAG,MAAM,2BAA2B,KAAKP,MAAMC,YAAY;AAE7EjB,eAAa8B,SAAIP,GAAG,YAAY,KAAKP,MAAMe,SAAS;AACpD,SAAOP"}
@@ -8,7 +8,7 @@ declare class FileUpload extends ZagComponent {
8
8
  rejectedFiles: any[];
9
9
  createMachine(_props: any): any;
10
10
  getMachineProps(props: any): {
11
- id: any;
11
+ id: string;
12
12
  accept: any;
13
13
  maxFiles: any;
14
14
  maxFileSize: any;
@@ -31,7 +31,7 @@ declare class FileUpload extends ZagComponent {
31
31
  '[data-part="clear-trigger"]': string;
32
32
  };
33
33
  syncState(api: any): void;
34
- template(props: any): string;
34
+ template(props: any): any;
35
35
  }
36
36
  //#endregion
37
37
  export { FileUpload as default };