juxscript 1.0.62 → 1.0.63

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 (141) hide show
  1. package/bin/cli.js +161 -293
  2. package/docs/v2comps/HEADLESS.md +83 -0
  3. package/docs/v2comps/ISOMORPHISM.md +10 -0
  4. package/juxconfig.example.js +63 -58
  5. package/lib/componentsv2/base/BaseEngine.js +258 -0
  6. package/lib/componentsv2/base/BaseEngine.js.map +1 -0
  7. package/lib/componentsv2/base/BaseEngine.ts +303 -0
  8. package/lib/componentsv2/base/BaseSkin.js +108 -0
  9. package/lib/componentsv2/base/BaseSkin.js.map +1 -0
  10. package/lib/componentsv2/base/BaseSkin.ts +137 -0
  11. package/lib/componentsv2/base/GlobalBus.js +56 -0
  12. package/lib/componentsv2/base/GlobalBus.js.map +1 -0
  13. package/lib/componentsv2/base/GlobalBus.ts +60 -0
  14. package/lib/componentsv2/base/State.js +68 -0
  15. package/lib/componentsv2/base/State.js.map +1 -0
  16. package/lib/componentsv2/base/State.ts +62 -0
  17. package/lib/componentsv2/grid/component.js +41 -0
  18. package/lib/componentsv2/grid/component.js.map +1 -0
  19. package/lib/componentsv2/grid/component.ts +67 -0
  20. package/lib/componentsv2/grid/engine.js +73 -0
  21. package/lib/componentsv2/grid/engine.js.map +1 -0
  22. package/lib/componentsv2/grid/engine.ts +110 -0
  23. package/lib/componentsv2/grid/skin.js +95 -0
  24. package/lib/componentsv2/grid/skin.js.map +1 -0
  25. package/lib/componentsv2/grid/skin.ts +105 -0
  26. package/lib/componentsv2/grid/structure.css +58 -0
  27. package/lib/componentsv2/index.js +218 -0
  28. package/lib/componentsv2/index.js.map +1 -0
  29. package/lib/componentsv2/index.ts +253 -0
  30. package/lib/componentsv2/input/component.js +21 -0
  31. package/lib/componentsv2/input/component.js.map +1 -0
  32. package/lib/componentsv2/input/component.ts +28 -0
  33. package/lib/componentsv2/input/engine.js +50 -0
  34. package/lib/componentsv2/input/engine.js.map +1 -0
  35. package/lib/componentsv2/input/engine.ts +76 -0
  36. package/lib/componentsv2/input/skin.js +91 -0
  37. package/lib/componentsv2/input/skin.js.map +1 -0
  38. package/lib/componentsv2/input/skin.ts +91 -0
  39. package/lib/componentsv2/input/structure.css +47 -0
  40. package/lib/componentsv2/list/component.js +83 -0
  41. package/lib/componentsv2/list/component.js.map +1 -0
  42. package/lib/componentsv2/list/component.ts +97 -0
  43. package/lib/componentsv2/list/engine.js +261 -0
  44. package/lib/componentsv2/list/engine.js.map +1 -0
  45. package/lib/componentsv2/list/engine.ts +345 -0
  46. package/lib/componentsv2/list/skin.js +343 -0
  47. package/lib/componentsv2/list/skin.js.map +1 -0
  48. package/lib/componentsv2/list/skin.ts +367 -0
  49. package/lib/componentsv2/list/structure.css +359 -0
  50. package/lib/componentsv2/plugins/ClientSQLitePlugin.js +130 -0
  51. package/lib/componentsv2/plugins/ClientSQLitePlugin.js.map +1 -0
  52. package/lib/componentsv2/plugins/ClientSQLitePlugin.ts +154 -0
  53. package/lib/componentsv2/plugins/IndexedDBPlugin.js +75 -0
  54. package/lib/componentsv2/plugins/IndexedDBPlugin.js.map +1 -0
  55. package/lib/componentsv2/plugins/IndexedDBPlugin.ts +96 -0
  56. package/lib/componentsv2/plugins/LocalStoragePlugin.js +65 -0
  57. package/lib/componentsv2/plugins/LocalStoragePlugin.js.map +1 -0
  58. package/lib/componentsv2/plugins/LocalStoragePlugin.ts +86 -0
  59. package/lib/componentsv2/plugins/ServerSQLitePlugin.js +70 -0
  60. package/lib/componentsv2/plugins/ServerSQLitePlugin.js.map +1 -0
  61. package/lib/componentsv2/plugins/ServerSQLitePlugin.ts +99 -0
  62. package/lib/componentsv2/stubs/ComponentComposition.ts.stub +32 -0
  63. package/lib/componentsv2/stubs/ComponentEngine.ts.stub +36 -0
  64. package/lib/componentsv2/stubs/ComponentSkin.ts.stub +34 -0
  65. package/lib/componentsv2/stubs/ComponentStructure.css.stub +13 -0
  66. package/lib/componentsv2/tools/CreateSkin.js +62 -0
  67. package/lib/componentsv2/tools/DocSpam.js +134 -0
  68. package/lib/componentsv2/tools/FluencyAudit.js +141 -0
  69. package/lib/componentsv2/tools/OptionsAudit.js +177 -0
  70. package/lib/componentsv2/tools/Scaffold.js +140 -0
  71. package/lib/utils/fetch.js +428 -0
  72. package/lib/utils/fetch.js.map +1 -0
  73. package/machinery/build.js +2 -1
  74. package/machinery/compiler.js +200 -37
  75. package/machinery/config.js +93 -6
  76. package/machinery/diagnose.js +72 -0
  77. package/machinery/jux-module-pattern.md +118 -0
  78. package/machinery/server.js +23 -7
  79. package/machinery/verifier.js +143 -0
  80. package/machinery/watcher.js +53 -64
  81. package/package.json +11 -2
  82. package/lib/components/alert.ts +0 -200
  83. package/lib/components/app.ts +0 -258
  84. package/lib/components/badge.ts +0 -101
  85. package/lib/components/base/BaseComponent.ts +0 -417
  86. package/lib/components/base/FormInput.ts +0 -227
  87. package/lib/components/button.ts +0 -178
  88. package/lib/components/card.ts +0 -173
  89. package/lib/components/chart.ts +0 -231
  90. package/lib/components/checkbox.ts +0 -242
  91. package/lib/components/code.ts +0 -123
  92. package/lib/components/container.ts +0 -140
  93. package/lib/components/data.ts +0 -135
  94. package/lib/components/datepicker.ts +0 -234
  95. package/lib/components/dialog.ts +0 -172
  96. package/lib/components/divider.ts +0 -100
  97. package/lib/components/dropdown.ts +0 -186
  98. package/lib/components/element.ts +0 -267
  99. package/lib/components/error-handler.ts +0 -285
  100. package/lib/components/fileupload.ts +0 -309
  101. package/lib/components/grid.ts +0 -291
  102. package/lib/components/guard.ts +0 -92
  103. package/lib/components/heading.ts +0 -96
  104. package/lib/components/helpers.ts +0 -41
  105. package/lib/components/hero.ts +0 -224
  106. package/lib/components/icon.ts +0 -160
  107. package/lib/components/icons.ts +0 -175
  108. package/lib/components/include.ts +0 -440
  109. package/lib/components/input.ts +0 -457
  110. package/lib/components/list.ts +0 -419
  111. package/lib/components/loading.ts +0 -100
  112. package/lib/components/menu.ts +0 -260
  113. package/lib/components/modal.ts +0 -239
  114. package/lib/components/nav.ts +0 -257
  115. package/lib/components/paragraph.ts +0 -97
  116. package/lib/components/progress.ts +0 -139
  117. package/lib/components/radio.ts +0 -278
  118. package/lib/components/req.ts +0 -302
  119. package/lib/components/script.ts +0 -43
  120. package/lib/components/select.ts +0 -252
  121. package/lib/components/sidebar.ts +0 -167
  122. package/lib/components/style.ts +0 -43
  123. package/lib/components/switch.ts +0 -246
  124. package/lib/components/table.ts +0 -1249
  125. package/lib/components/tabs.ts +0 -250
  126. package/lib/components/theme-toggle.ts +0 -300
  127. package/lib/components/token-calculator.ts +0 -313
  128. package/lib/components/tooltip.ts +0 -144
  129. package/lib/components/view.ts +0 -190
  130. package/lib/components/write.ts +0 -272
  131. package/lib/jux.ts +0 -365
  132. package/lib/layouts/default.css +0 -260
  133. package/lib/layouts/figma.css +0 -334
  134. package/lib/reactivity/state.ts +0 -78
  135. package/machinery/bundleAssets.js +0 -0
  136. package/machinery/bundleJux.js +0 -0
  137. package/machinery/bundleVendors.js +0 -0
  138. package/presets/default/all.jux +0 -343
  139. package/presets/default/index.jux +0 -90
  140. package/presets/default/layout.jux +0 -57
  141. package/presets/default/style.css +0 -1612
@@ -0,0 +1,343 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
7
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
+ };
12
+ var _ListSkin_instances, _ListSkin_showSearch, _ListSkin_showAdd, _ListSkin_showDelete, _ListSkin_showEdit, _ListSkin_showMove, _ListSkin_showSort, _ListSkin_dragSourceIndex, _ListSkin_toolbar, _ListSkin_listContainer, _ListSkin_searchInput, _ListSkin_addBtn, _ListSkin_sortBtn, _ListSkin_openEditModal, _ListSkin_renderToolbar, _ListSkin_renderListItem;
13
+ import { BaseSkin } from '../base/BaseSkin.js';
14
+ export class ListSkin extends BaseSkin {
15
+ constructor(engine) {
16
+ super(engine);
17
+ _ListSkin_instances.add(this);
18
+ // UI Feature Flags
19
+ _ListSkin_showSearch.set(this, false);
20
+ _ListSkin_showAdd.set(this, false);
21
+ _ListSkin_showDelete.set(this, false);
22
+ _ListSkin_showEdit.set(this, false);
23
+ _ListSkin_showMove.set(this, false);
24
+ _ListSkin_showSort.set(this, false);
25
+ // Internal Drag State
26
+ _ListSkin_dragSourceIndex.set(this, null);
27
+ // DOM References (Stable elements to prevent re-render thrashing)
28
+ _ListSkin_toolbar.set(this, null);
29
+ _ListSkin_listContainer.set(this, null);
30
+ // Toolbar Componenets
31
+ _ListSkin_searchInput.set(this, null);
32
+ _ListSkin_addBtn.set(this, null);
33
+ _ListSkin_sortBtn.set(this, null);
34
+ }
35
+ // ✅ Implements Contract: Points to ./structure.css at runtime
36
+ get structureCss() {
37
+ return new URL('./structure.css', import.meta.url).href;
38
+ }
39
+ // --- Public UI API ---
40
+ enableSearch(enabled) { __classPrivateFieldSet(this, _ListSkin_showSearch, enabled, "f"); __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_renderToolbar).call(this); }
41
+ enableAdd(enabled) { __classPrivateFieldSet(this, _ListSkin_showAdd, enabled, "f"); __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_renderToolbar).call(this); }
42
+ enableDelete(enabled) { __classPrivateFieldSet(this, _ListSkin_showDelete, enabled, "f"); this.updateSkin(this.engine.state); }
43
+ enableMove(enabled) { __classPrivateFieldSet(this, _ListSkin_showMove, enabled, "f"); this.updateSkin(this.engine.state); }
44
+ enableSort(enabled) { __classPrivateFieldSet(this, _ListSkin_showSort, enabled, "f"); __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_renderToolbar).call(this); }
45
+ enableNoItems(message = 'No items found.') { this.engine.enableNoItems(message); }
46
+ enableEdit(enabled) {
47
+ __classPrivateFieldSet(this, _ListSkin_showEdit, enabled, "f");
48
+ this.updateSkin(this.engine.state);
49
+ }
50
+ // --- Template Skin Implementation ---
51
+ bindEvents(root) {
52
+ // 1. Delegation: Toolbar Events (Handled via direct element ref where possible now, or delegation fallback)
53
+ // We attach the input listener globally on root for delegation,
54
+ // but now that we hold the #searchInput ref, we could bind directly.
55
+ // Delegation is still safer if elements are recreated.
56
+ root.addEventListener('input', (e) => {
57
+ const target = e.target;
58
+ if (target.matches('.jux-search-input')) {
59
+ this.engine.filter(target.value);
60
+ }
61
+ });
62
+ root.addEventListener('click', (e) => {
63
+ const target = e.target;
64
+ // Toolbar: Add
65
+ if (target.closest('.jux-action-add')) {
66
+ this.engine.addItem('New Item');
67
+ const newIndex = this.engine.state.items.length - 1;
68
+ if (newIndex >= 0)
69
+ __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_openEditModal).call(this, newIndex);
70
+ return;
71
+ }
72
+ // Toolbar: Sort
73
+ if (target.closest('.jux-action-sort')) {
74
+ this.engine.toggleSort();
75
+ return;
76
+ }
77
+ // List Item Actions
78
+ const li = target.closest('li');
79
+ if (!li)
80
+ return;
81
+ // ✅ USE ID for robust targeting
82
+ const id = li.dataset.id;
83
+ const indexStr = li.dataset.index;
84
+ if (!indexStr || !id)
85
+ return;
86
+ const index = parseInt(indexStr, 10);
87
+ // Action: Delete
88
+ if (target.closest('.jux-action-delete')) {
89
+ this.engine.removeItem(id); // ✅ Valid per new engine signature
90
+ e.stopImmediatePropagation();
91
+ return;
92
+ }
93
+ // Action: Edit
94
+ if (target.closest('.jux-action-edit')) {
95
+ __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_openEditModal).call(this, index);
96
+ e.stopImmediatePropagation();
97
+ return;
98
+ }
99
+ // List Item: Selection
100
+ if (!target.closest('.jux-control')) {
101
+ this.engine.toggleSelection(index);
102
+ }
103
+ });
104
+ // 2. Drag & Drop Logic
105
+ root.addEventListener('dragstart', (e) => {
106
+ if (!__classPrivateFieldGet(this, _ListSkin_showMove, "f"))
107
+ return;
108
+ const li = e.target.closest('li');
109
+ if (li) {
110
+ __classPrivateFieldSet(this, _ListSkin_dragSourceIndex, parseInt(li.dataset.index || '-1', 10), "f");
111
+ e.dataTransfer.effectAllowed = 'move';
112
+ e.dataTransfer.setData('text/plain', li.dataset.index || '');
113
+ requestAnimationFrame(() => li.classList.add('jux-dragging'));
114
+ }
115
+ });
116
+ root.addEventListener('dragend', (e) => {
117
+ const li = e.target.closest('li');
118
+ if (li)
119
+ li.classList.remove('jux-dragging');
120
+ root.querySelectorAll('.jux-item-drop-target').forEach(el => el.classList.remove('jux-item-drop-target'));
121
+ __classPrivateFieldSet(this, _ListSkin_dragSourceIndex, null, "f");
122
+ });
123
+ root.addEventListener('dragover', (e) => {
124
+ if (!__classPrivateFieldGet(this, _ListSkin_showMove, "f"))
125
+ return;
126
+ e.preventDefault();
127
+ const li = e.target.closest('li');
128
+ if (li && !li.classList.contains('jux-dragging')) {
129
+ e.dataTransfer.dropEffect = 'move';
130
+ root.querySelectorAll('.jux-item-drop-target').forEach(el => el.classList.remove('jux-item-drop-target'));
131
+ li.classList.add('jux-item-drop-target');
132
+ }
133
+ });
134
+ root.addEventListener('drop', (e) => {
135
+ if (!__classPrivateFieldGet(this, _ListSkin_showMove, "f"))
136
+ return;
137
+ e.preventDefault();
138
+ const li = e.target.closest('li');
139
+ if (li && __classPrivateFieldGet(this, _ListSkin_dragSourceIndex, "f") !== null) {
140
+ const toIndex = parseInt(li.dataset.index || '-1', 10);
141
+ if (toIndex !== -1 && __classPrivateFieldGet(this, _ListSkin_dragSourceIndex, "f") !== toIndex) {
142
+ this.engine.moveItem(__classPrivateFieldGet(this, _ListSkin_dragSourceIndex, "f"), toIndex);
143
+ }
144
+ }
145
+ });
146
+ }
147
+ /**
148
+ * Skin Contract: Update/Changes
149
+ */
150
+ updateSkin(state) {
151
+ if (!this.root)
152
+ return;
153
+ // Perform the DOM Update
154
+ const performUpdate = () => {
155
+ this.applySkinAttributes(this.root, state);
156
+ // Lazy Creation
157
+ if (!__classPrivateFieldGet(this, _ListSkin_listContainer, "f")) {
158
+ this.root.innerHTML = '';
159
+ __classPrivateFieldSet(this, _ListSkin_toolbar, document.createElement('div'), "f");
160
+ __classPrivateFieldGet(this, _ListSkin_toolbar, "f").className = 'jux-list-toolbar';
161
+ this.root.appendChild(__classPrivateFieldGet(this, _ListSkin_toolbar, "f"));
162
+ __classPrivateFieldSet(this, _ListSkin_listContainer, document.createElement('div'), "f");
163
+ this.root.appendChild(__classPrivateFieldGet(this, _ListSkin_listContainer, "f"));
164
+ __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_renderToolbar).call(this); // Initial render
165
+ }
166
+ // Always update toolbar state (e.g. icon direction) without destroying inputs
167
+ __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_renderToolbar).call(this);
168
+ // Container Classes
169
+ const classes = [...state.classes];
170
+ if (state.selectionMode !== 'none')
171
+ classes.push('jux-list-selectable');
172
+ __classPrivateFieldGet(this, _ListSkin_listContainer, "f").className = classes.join(' ');
173
+ // Filtering
174
+ const visibleItems = state.items
175
+ .map((item, originalIndex) => ({ item, originalIndex }))
176
+ .filter(({ item }) => state.filterText
177
+ ? item.text.toLowerCase().includes(state.filterText.toLowerCase())
178
+ : true);
179
+ // Rendering Content
180
+ if (visibleItems.length === 0 && state.noItemsMessage) {
181
+ __classPrivateFieldGet(this, _ListSkin_listContainer, "f").innerHTML = `<div class="jux-list-empty-state">${state.noItemsMessage}</div>`;
182
+ }
183
+ else {
184
+ const tag = state.listType === 'ordered' ? 'ol' : 'ul';
185
+ const html = visibleItems
186
+ .map(({ item, originalIndex }) => __classPrivateFieldGet(this, _ListSkin_instances, "m", _ListSkin_renderListItem).call(this, item, originalIndex, state))
187
+ .join('');
188
+ __classPrivateFieldGet(this, _ListSkin_listContainer, "f").innerHTML = `<${tag} class="jux-list-element jux-list-type-${tag}">${html}</${tag}>`;
189
+ }
190
+ };
191
+ // ✨ View Transitions Logic
192
+ // We SKIP transition if the search input is focused, otherwise typing janks the UI.
193
+ const isSearching = document.activeElement &&
194
+ (document.activeElement === __classPrivateFieldGet(this, _ListSkin_searchInput, "f"));
195
+ if (!isSearching && typeof document !== 'undefined' && 'startViewTransition' in document) {
196
+ // @ts-ignore
197
+ document.startViewTransition(performUpdate);
198
+ }
199
+ else {
200
+ performUpdate();
201
+ }
202
+ }
203
+ }
204
+ _ListSkin_showSearch = new WeakMap(), _ListSkin_showAdd = new WeakMap(), _ListSkin_showDelete = new WeakMap(), _ListSkin_showEdit = new WeakMap(), _ListSkin_showMove = new WeakMap(), _ListSkin_showSort = new WeakMap(), _ListSkin_dragSourceIndex = new WeakMap(), _ListSkin_toolbar = new WeakMap(), _ListSkin_listContainer = new WeakMap(), _ListSkin_searchInput = new WeakMap(), _ListSkin_addBtn = new WeakMap(), _ListSkin_sortBtn = new WeakMap(), _ListSkin_instances = new WeakSet(), _ListSkin_openEditModal = function _ListSkin_openEditModal(index) {
205
+ const item = this.engine.state.items[index];
206
+ if (!item)
207
+ return;
208
+ const overlay = document.createElement('div');
209
+ overlay.className = 'jux-modal-overlay';
210
+ overlay.innerHTML = `
211
+ <div class="jux-modal">
212
+ <h3>Edit Item</h3>
213
+ <input type="text" id="jux-edit-input" value="${item.text.replace(/"/g, '&quot;')}" />
214
+ <div class="jux-modal-actions">
215
+ <button class="jux-modal-btn jux-btn-cancel" id="jux-edit-cancel">Cancel</button>
216
+ <button class="jux-modal-btn jux-btn-save" id="jux-edit-save">Save</button>
217
+ </div>
218
+ </div>
219
+ `;
220
+ document.body.appendChild(overlay);
221
+ const input = overlay.querySelector('#jux-edit-input');
222
+ const close = () => document.body.removeChild(overlay);
223
+ const save = () => {
224
+ if (input.value.trim())
225
+ this.engine.updateItem(index, input.value);
226
+ close();
227
+ };
228
+ overlay.querySelector('#jux-edit-cancel')?.addEventListener('click', close);
229
+ overlay.querySelector('#jux-edit-save')?.addEventListener('click', save);
230
+ overlay.addEventListener('click', (e) => { if (e.target === overlay)
231
+ close(); });
232
+ input.addEventListener('keydown', (e) => {
233
+ if (e.key === 'Enter')
234
+ save();
235
+ if (e.key === 'Escape')
236
+ close();
237
+ });
238
+ setTimeout(() => { input.focus(); input.select(); }, 0);
239
+ }, _ListSkin_renderToolbar = function _ListSkin_renderToolbar() {
240
+ if (!__classPrivateFieldGet(this, _ListSkin_toolbar, "f"))
241
+ return;
242
+ // 1. Search Logic
243
+ if (__classPrivateFieldGet(this, _ListSkin_showSearch, "f")) {
244
+ if (!__classPrivateFieldGet(this, _ListSkin_searchInput, "f")) {
245
+ __classPrivateFieldSet(this, _ListSkin_searchInput, document.createElement('input'), "f");
246
+ __classPrivateFieldGet(this, _ListSkin_searchInput, "f").type = 'text';
247
+ __classPrivateFieldGet(this, _ListSkin_searchInput, "f").className = 'jux-search-input';
248
+ __classPrivateFieldGet(this, _ListSkin_searchInput, "f").placeholder = 'Filter items...';
249
+ // Insert at start
250
+ __classPrivateFieldGet(this, _ListSkin_toolbar, "f").prepend(__classPrivateFieldGet(this, _ListSkin_searchInput, "f"));
251
+ }
252
+ }
253
+ else if (__classPrivateFieldGet(this, _ListSkin_searchInput, "f")) {
254
+ __classPrivateFieldGet(this, _ListSkin_searchInput, "f").remove();
255
+ __classPrivateFieldSet(this, _ListSkin_searchInput, null, "f");
256
+ }
257
+ // 2. Sort Logic
258
+ if (__classPrivateFieldGet(this, _ListSkin_showSort, "f")) {
259
+ if (!__classPrivateFieldGet(this, _ListSkin_sortBtn, "f")) {
260
+ __classPrivateFieldSet(this, _ListSkin_sortBtn, document.createElement('button'), "f");
261
+ __classPrivateFieldGet(this, _ListSkin_sortBtn, "f").className = 'jux-action-sort';
262
+ __classPrivateFieldGet(this, _ListSkin_sortBtn, "f").type = 'button';
263
+ __classPrivateFieldGet(this, _ListSkin_sortBtn, "f").ariaLabel = 'Sort';
264
+ __classPrivateFieldGet(this, _ListSkin_toolbar, "f").appendChild(__classPrivateFieldGet(this, _ListSkin_sortBtn, "f"));
265
+ }
266
+ // Update Icon state
267
+ const s = this.engine.state.sorted;
268
+ const icon = s === 'asc' ? '↑' : (s === 'desc' ? '↓' : '↕');
269
+ if (__classPrivateFieldGet(this, _ListSkin_sortBtn, "f").textContent !== icon) {
270
+ __classPrivateFieldGet(this, _ListSkin_sortBtn, "f").textContent = icon;
271
+ }
272
+ }
273
+ else if (__classPrivateFieldGet(this, _ListSkin_sortBtn, "f")) {
274
+ __classPrivateFieldGet(this, _ListSkin_sortBtn, "f").remove();
275
+ __classPrivateFieldSet(this, _ListSkin_sortBtn, null, "f");
276
+ }
277
+ // 3. Add Logic
278
+ if (__classPrivateFieldGet(this, _ListSkin_showAdd, "f")) {
279
+ if (!__classPrivateFieldGet(this, _ListSkin_addBtn, "f")) {
280
+ __classPrivateFieldSet(this, _ListSkin_addBtn, document.createElement('button'), "f");
281
+ __classPrivateFieldGet(this, _ListSkin_addBtn, "f").className = 'jux-action-add';
282
+ __classPrivateFieldGet(this, _ListSkin_addBtn, "f").type = 'button';
283
+ __classPrivateFieldGet(this, _ListSkin_addBtn, "f").ariaLabel = 'Add Item';
284
+ __classPrivateFieldGet(this, _ListSkin_addBtn, "f").textContent = '+';
285
+ __classPrivateFieldGet(this, _ListSkin_toolbar, "f").appendChild(__classPrivateFieldGet(this, _ListSkin_addBtn, "f"));
286
+ }
287
+ }
288
+ else if (__classPrivateFieldGet(this, _ListSkin_addBtn, "f")) {
289
+ __classPrivateFieldGet(this, _ListSkin_addBtn, "f").remove();
290
+ __classPrivateFieldSet(this, _ListSkin_addBtn, null, "f");
291
+ }
292
+ // Parent Visibility
293
+ const hasChildren = __classPrivateFieldGet(this, _ListSkin_showSearch, "f") || __classPrivateFieldGet(this, _ListSkin_showSort, "f") || __classPrivateFieldGet(this, _ListSkin_showAdd, "f");
294
+ __classPrivateFieldGet(this, _ListSkin_toolbar, "f").style.display = hasChildren ? 'flex' : 'none';
295
+ // ensure Search input is first by re-prepending if it exists
296
+ if (__classPrivateFieldGet(this, _ListSkin_searchInput, "f") && __classPrivateFieldGet(this, _ListSkin_toolbar, "f").firstChild !== __classPrivateFieldGet(this, _ListSkin_searchInput, "f")) {
297
+ __classPrivateFieldGet(this, _ListSkin_toolbar, "f").prepend(__classPrivateFieldGet(this, _ListSkin_searchInput, "f"));
298
+ }
299
+ }, _ListSkin_renderListItem = function _ListSkin_renderListItem(item, index, state) {
300
+ const css = [
301
+ 'jux-list-item',
302
+ item.selected ? 'jux-selected' : '',
303
+ ...(item.classes || [])
304
+ ].filter(Boolean).join(' ');
305
+ // ✅ Determine Content based on Columns configuration
306
+ let content = item.text;
307
+ if (state.columns && state.columns.length > 0) {
308
+ content = state.columns.map(col => {
309
+ const key = typeof col === 'string' ? col : col.key;
310
+ const cssClass = (typeof col === 'object' && col.label) ? `jux-col-${key}` : ''; // Basic class hook
311
+ const value = item[key] ?? '';
312
+ // If complex object, stringify or fallback
313
+ const displayVal = (typeof value === 'object') ? JSON.stringify(value) : String(value);
314
+ return `<span class="jux-col ${cssClass}">${displayVal}</span>`;
315
+ }).join(' <span class="jux-col-sep"> </span> ');
316
+ }
317
+ else {
318
+ // Default Fallback logic: If no columns but item.text is boring ("[object Object]"), try to find keys
319
+ if (content === '[object Object]') {
320
+ const keys = Object.keys(item).filter(k => k !== 'id' && k !== 'selected' && k !== 'classes' && k !== 'text' && k !== 'value');
321
+ if (keys.length > 0) {
322
+ content = `${item[keys[0]]}`;
323
+ }
324
+ }
325
+ }
326
+ const moveBtn = __classPrivateFieldGet(this, _ListSkin_showMove, "f") ? `<span class="jux-action-drag jux-control" title="Drag to reorder">≡</span>` : '';
327
+ const editBtn = __classPrivateFieldGet(this, _ListSkin_showEdit, "f") ? `<button class="jux-action-edit jux-control" aria-label="Edit">✎</button>` : '';
328
+ const deleteBtn = __classPrivateFieldGet(this, _ListSkin_showDelete, "f") ? `<button class="jux-action-delete jux-control" aria-label="Delete">×</button>` : '';
329
+ const draggableAttr = __classPrivateFieldGet(this, _ListSkin_showMove, "f") ? 'draggable="true"' : '';
330
+ const transitionName = `jux-item-${item.id.replace(/[^a-zA-Z0-9-_]/g, '-')}`;
331
+ return `
332
+ <li data-id="${item.id}" data-index="${index}" class="${css}" ${draggableAttr} style="view-transition-name: ${transitionName}">
333
+ <div class="jux-list-item-content">
334
+ ${content}
335
+ </div>
336
+ <div class="jux-item-controls">
337
+ ${moveBtn}
338
+ ${editBtn}
339
+ ${deleteBtn}
340
+ </div>
341
+ </li>`;
342
+ };
343
+ //# sourceMappingURL=skin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skin.js","sourceRoot":"","sources":["skin.ts"],"names":[],"mappings":"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"}