@livetemplate/client 0.1.0
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.
- package/README.md +179 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +19 -0
- package/dist/constants.js.map +1 -0
- package/dist/dom/directives.d.ts +13 -0
- package/dist/dom/directives.d.ts.map +1 -0
- package/dist/dom/directives.js +137 -0
- package/dist/dom/directives.js.map +1 -0
- package/dist/dom/event-delegation.d.ts +24 -0
- package/dist/dom/event-delegation.d.ts.map +1 -0
- package/dist/dom/event-delegation.js +437 -0
- package/dist/dom/event-delegation.js.map +1 -0
- package/dist/dom/focus-manager.d.ts +19 -0
- package/dist/dom/focus-manager.d.ts.map +1 -0
- package/dist/dom/focus-manager.js +144 -0
- package/dist/dom/focus-manager.js.map +1 -0
- package/dist/dom/form-disabler.d.ts +8 -0
- package/dist/dom/form-disabler.d.ts.map +1 -0
- package/dist/dom/form-disabler.js +32 -0
- package/dist/dom/form-disabler.js.map +1 -0
- package/dist/dom/loading-indicator.d.ts +9 -0
- package/dist/dom/loading-indicator.d.ts.map +1 -0
- package/dist/dom/loading-indicator.js +50 -0
- package/dist/dom/loading-indicator.js.map +1 -0
- package/dist/dom/modal-manager.d.ts +11 -0
- package/dist/dom/modal-manager.d.ts.map +1 -0
- package/dist/dom/modal-manager.js +62 -0
- package/dist/dom/modal-manager.js.map +1 -0
- package/dist/dom/observer-manager.d.ts +19 -0
- package/dist/dom/observer-manager.d.ts.map +1 -0
- package/dist/dom/observer-manager.js +64 -0
- package/dist/dom/observer-manager.js.map +1 -0
- package/dist/livetemplate-client.browser.js +44 -0
- package/dist/livetemplate-client.browser.js.map +7 -0
- package/dist/livetemplate-client.d.ts +106 -0
- package/dist/livetemplate-client.d.ts.map +1 -0
- package/dist/livetemplate-client.js +507 -0
- package/dist/livetemplate-client.js.map +1 -0
- package/dist/state/form-lifecycle-manager.d.ts +19 -0
- package/dist/state/form-lifecycle-manager.d.ts.map +1 -0
- package/dist/state/form-lifecycle-manager.js +64 -0
- package/dist/state/form-lifecycle-manager.js.map +1 -0
- package/dist/state/tree-renderer.d.ts +27 -0
- package/dist/state/tree-renderer.d.ts.map +1 -0
- package/dist/state/tree-renderer.js +359 -0
- package/dist/state/tree-renderer.js.map +1 -0
- package/dist/tests/event-delegation.test.d.ts +2 -0
- package/dist/tests/event-delegation.test.d.ts.map +1 -0
- package/dist/tests/event-delegation.test.js +102 -0
- package/dist/tests/event-delegation.test.js.map +1 -0
- package/dist/tests/focus-manager.test.d.ts +2 -0
- package/dist/tests/focus-manager.test.d.ts.map +1 -0
- package/dist/tests/focus-manager.test.js +45 -0
- package/dist/tests/focus-manager.test.js.map +1 -0
- package/dist/tests/form-disabler.test.d.ts +2 -0
- package/dist/tests/form-disabler.test.d.ts.map +1 -0
- package/dist/tests/form-disabler.test.js +35 -0
- package/dist/tests/form-disabler.test.js.map +1 -0
- package/dist/tests/form-lifecycle-manager.test.d.ts +2 -0
- package/dist/tests/form-lifecycle-manager.test.d.ts.map +1 -0
- package/dist/tests/form-lifecycle-manager.test.js +90 -0
- package/dist/tests/form-lifecycle-manager.test.js.map +1 -0
- package/dist/tests/modal-manager.test.d.ts +2 -0
- package/dist/tests/modal-manager.test.d.ts.map +1 -0
- package/dist/tests/modal-manager.test.js +80 -0
- package/dist/tests/modal-manager.test.js.map +1 -0
- package/dist/tests/rate-limit.test.d.ts +2 -0
- package/dist/tests/rate-limit.test.d.ts.map +1 -0
- package/dist/tests/rate-limit.test.js +38 -0
- package/dist/tests/rate-limit.test.js.map +1 -0
- package/dist/tests/test-conditional-debug.test.d.ts +8 -0
- package/dist/tests/test-conditional-debug.test.d.ts.map +1 -0
- package/dist/tests/test-conditional-debug.test.js +187 -0
- package/dist/tests/test-conditional-debug.test.js.map +1 -0
- package/dist/tests/test-reconstruction.test.d.ts +8 -0
- package/dist/tests/test-reconstruction.test.d.ts.map +1 -0
- package/dist/tests/test-reconstruction.test.js +284 -0
- package/dist/tests/test-reconstruction.test.js.map +1 -0
- package/dist/transport/websocket.d.ts +62 -0
- package/dist/transport/websocket.d.ts.map +1 -0
- package/dist/transport/websocket.js +194 -0
- package/dist/transport/websocket.js.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/logger.d.ts +32 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +77 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/rate-limit.d.ts +10 -0
- package/dist/utils/rate-limit.d.ts.map +1 -0
- package/dist/utils/rate-limit.js +37 -0
- package/dist/utils/rate-limit.js.map +1 -0
- package/dist/utils/testing.d.ts +14 -0
- package/dist/utils/testing.d.ts.map +1 -0
- package/dist/utils/testing.js +51 -0
- package/dist/utils/testing.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TreeRenderer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Handles tree state management and HTML reconstruction logic for LiveTemplate.
|
|
6
|
+
*/
|
|
7
|
+
class TreeRenderer {
|
|
8
|
+
constructor(logger) {
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
this.treeState = {};
|
|
11
|
+
this.rangeState = {};
|
|
12
|
+
this.rangeIdKeys = {};
|
|
13
|
+
}
|
|
14
|
+
applyUpdate(update) {
|
|
15
|
+
let changed = false;
|
|
16
|
+
for (const [key, value] of Object.entries(update)) {
|
|
17
|
+
const isDifferentialOps = Array.isArray(value) &&
|
|
18
|
+
value.length > 0 &&
|
|
19
|
+
Array.isArray(value[0]) &&
|
|
20
|
+
typeof value[0][0] === "string";
|
|
21
|
+
if (isDifferentialOps) {
|
|
22
|
+
this.treeState[key] = value;
|
|
23
|
+
changed = true;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const oldValue = this.treeState[key];
|
|
27
|
+
const newValue = typeof value === "object" && value !== null && !Array.isArray(value)
|
|
28
|
+
? this.deepMergeTreeNodes(oldValue, value)
|
|
29
|
+
: value;
|
|
30
|
+
if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
|
|
31
|
+
this.treeState[key] = newValue;
|
|
32
|
+
changed = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const html = this.reconstructFromTree(this.treeState, "");
|
|
37
|
+
return { html, changed };
|
|
38
|
+
}
|
|
39
|
+
reset() {
|
|
40
|
+
this.treeState = {};
|
|
41
|
+
this.rangeState = {};
|
|
42
|
+
this.rangeIdKeys = {};
|
|
43
|
+
}
|
|
44
|
+
getTreeState() {
|
|
45
|
+
return { ...this.treeState };
|
|
46
|
+
}
|
|
47
|
+
getStaticStructure() {
|
|
48
|
+
return this.treeState.s || null;
|
|
49
|
+
}
|
|
50
|
+
deepMergeTreeNodes(existing, update) {
|
|
51
|
+
if (typeof update !== "object" ||
|
|
52
|
+
update === null ||
|
|
53
|
+
Array.isArray(update)) {
|
|
54
|
+
return update;
|
|
55
|
+
}
|
|
56
|
+
if (typeof existing !== "object" ||
|
|
57
|
+
existing === null ||
|
|
58
|
+
Array.isArray(existing)) {
|
|
59
|
+
return update;
|
|
60
|
+
}
|
|
61
|
+
const merged = { ...existing };
|
|
62
|
+
for (const [key, value] of Object.entries(update)) {
|
|
63
|
+
if (typeof value === "object" &&
|
|
64
|
+
value !== null &&
|
|
65
|
+
!Array.isArray(value) &&
|
|
66
|
+
typeof merged[key] === "object" &&
|
|
67
|
+
merged[key] !== null &&
|
|
68
|
+
!Array.isArray(merged[key])) {
|
|
69
|
+
merged[key] = this.deepMergeTreeNodes(merged[key], value);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
merged[key] = value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return merged;
|
|
76
|
+
}
|
|
77
|
+
reconstructFromTree(node, statePath) {
|
|
78
|
+
if (node.s && Array.isArray(node.s)) {
|
|
79
|
+
let html = "";
|
|
80
|
+
for (let i = 0; i < node.s.length; i++) {
|
|
81
|
+
const staticSegment = node.s[i];
|
|
82
|
+
html += staticSegment;
|
|
83
|
+
if (i < node.s.length - 1) {
|
|
84
|
+
const dynamicKey = i.toString();
|
|
85
|
+
if (node[dynamicKey] !== undefined) {
|
|
86
|
+
const newStatePath = statePath
|
|
87
|
+
? `${statePath}.${dynamicKey}`
|
|
88
|
+
: dynamicKey;
|
|
89
|
+
html += this.renderValue(node[dynamicKey], dynamicKey, newStatePath);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
html = html.replace(/<root>/g, "").replace(/<\/root>/g, "");
|
|
94
|
+
return html;
|
|
95
|
+
}
|
|
96
|
+
return this.renderValue(node, "", statePath);
|
|
97
|
+
}
|
|
98
|
+
renderValue(value, fieldKey, statePath) {
|
|
99
|
+
if (value === null || value === undefined) {
|
|
100
|
+
return "";
|
|
101
|
+
}
|
|
102
|
+
if (typeof value === "string" &&
|
|
103
|
+
value.startsWith("{{") &&
|
|
104
|
+
value.endsWith("}}")) {
|
|
105
|
+
return "";
|
|
106
|
+
}
|
|
107
|
+
if (typeof value === "object" && !Array.isArray(value)) {
|
|
108
|
+
if (value.d &&
|
|
109
|
+
Array.isArray(value.d) &&
|
|
110
|
+
value.s &&
|
|
111
|
+
Array.isArray(value.s)) {
|
|
112
|
+
const stateKey = statePath || fieldKey || "";
|
|
113
|
+
if (stateKey) {
|
|
114
|
+
this.rangeState[stateKey] = {
|
|
115
|
+
items: value.d,
|
|
116
|
+
statics: value.s,
|
|
117
|
+
};
|
|
118
|
+
if (value.m &&
|
|
119
|
+
typeof value.m === "object" &&
|
|
120
|
+
typeof value.m.idKey === "string") {
|
|
121
|
+
this.rangeIdKeys[stateKey] = value.m.idKey;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return this.renderRangeStructure(value, fieldKey, statePath);
|
|
125
|
+
}
|
|
126
|
+
if ("s" in value && Array.isArray(value.s)) {
|
|
127
|
+
return this.reconstructFromTree(value, statePath || "");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (Array.isArray(value)) {
|
|
131
|
+
if (value.length > 0 &&
|
|
132
|
+
Array.isArray(value[0]) &&
|
|
133
|
+
typeof value[0][0] === "string") {
|
|
134
|
+
return this.applyDifferentialOperations(value, statePath);
|
|
135
|
+
}
|
|
136
|
+
return value
|
|
137
|
+
.map((item, idx) => {
|
|
138
|
+
const itemKey = idx.toString();
|
|
139
|
+
const itemStatePath = statePath ? `${statePath}.${itemKey}` : itemKey;
|
|
140
|
+
if (typeof item === "object" && item && item.s) {
|
|
141
|
+
return this.reconstructFromTree(item, itemStatePath);
|
|
142
|
+
}
|
|
143
|
+
return this.renderValue(item, itemKey, itemStatePath);
|
|
144
|
+
})
|
|
145
|
+
.join("");
|
|
146
|
+
}
|
|
147
|
+
if (typeof value === "object") {
|
|
148
|
+
this.logger.error("Object value reached string conversion; this will render as [object Object].");
|
|
149
|
+
if (this.logger.isDebugEnabled()) {
|
|
150
|
+
this.logger.debug("Value diagnostics:", {
|
|
151
|
+
valueType: typeof value,
|
|
152
|
+
isArray: Array.isArray(value),
|
|
153
|
+
keys: Object.keys(value),
|
|
154
|
+
hasStatics: Boolean(value.s),
|
|
155
|
+
hasDynamics: Boolean(value.d),
|
|
156
|
+
value,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return String(value);
|
|
161
|
+
}
|
|
162
|
+
renderRangeStructure(rangeNode, fieldKey, statePath) {
|
|
163
|
+
const { d: dynamics, s: statics } = rangeNode;
|
|
164
|
+
if (!dynamics || !Array.isArray(dynamics)) {
|
|
165
|
+
return "";
|
|
166
|
+
}
|
|
167
|
+
if (dynamics.length === 0) {
|
|
168
|
+
if (rangeNode["else"]) {
|
|
169
|
+
const elseKey = "else";
|
|
170
|
+
const elseStatePath = statePath ? `${statePath}.else` : "else";
|
|
171
|
+
return this.renderValue(rangeNode["else"], elseKey, elseStatePath);
|
|
172
|
+
}
|
|
173
|
+
return "";
|
|
174
|
+
}
|
|
175
|
+
if (statics && Array.isArray(statics)) {
|
|
176
|
+
return dynamics
|
|
177
|
+
.map((item, itemIdx) => {
|
|
178
|
+
let html = "";
|
|
179
|
+
for (let i = 0; i < statics.length; i++) {
|
|
180
|
+
html += statics[i];
|
|
181
|
+
if (i < statics.length - 1) {
|
|
182
|
+
const localKey = i.toString();
|
|
183
|
+
if (item[localKey] !== undefined) {
|
|
184
|
+
const itemStatePath = statePath
|
|
185
|
+
? `${statePath}.${itemIdx}.${localKey}`
|
|
186
|
+
: `${itemIdx}.${localKey}`;
|
|
187
|
+
html += this.renderValue(item[localKey], localKey, itemStatePath);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return html;
|
|
192
|
+
})
|
|
193
|
+
.join("");
|
|
194
|
+
}
|
|
195
|
+
return dynamics
|
|
196
|
+
.map((item, idx) => {
|
|
197
|
+
const itemKey = idx.toString();
|
|
198
|
+
const itemStatePath = statePath ? `${statePath}.${itemKey}` : itemKey;
|
|
199
|
+
return this.renderValue(item, itemKey, itemStatePath);
|
|
200
|
+
})
|
|
201
|
+
.join("");
|
|
202
|
+
}
|
|
203
|
+
applyDifferentialOperations(operations, statePath) {
|
|
204
|
+
if (!statePath || !this.rangeState[statePath]) {
|
|
205
|
+
return "";
|
|
206
|
+
}
|
|
207
|
+
const rangeData = this.rangeState[statePath];
|
|
208
|
+
const currentItems = [...rangeData.items];
|
|
209
|
+
const statics = rangeData.statics;
|
|
210
|
+
for (const operation of operations) {
|
|
211
|
+
if (!Array.isArray(operation) || operation.length < 2) {
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
const opType = operation[0];
|
|
215
|
+
switch (opType) {
|
|
216
|
+
case "r": {
|
|
217
|
+
const removeIndex = this.findItemIndexByKey(currentItems, operation[1], statics, statePath);
|
|
218
|
+
if (removeIndex >= 0) {
|
|
219
|
+
currentItems.splice(removeIndex, 1);
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case "u": {
|
|
224
|
+
const updateIndex = this.findItemIndexByKey(currentItems, operation[1], statics, statePath);
|
|
225
|
+
const changes = operation[2];
|
|
226
|
+
if (updateIndex >= 0 && changes) {
|
|
227
|
+
currentItems[updateIndex] = {
|
|
228
|
+
...currentItems[updateIndex],
|
|
229
|
+
...changes,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
case "a": {
|
|
235
|
+
this.addItemsToRange(currentItems, operation[1], operation[2], rangeData, false);
|
|
236
|
+
if (operation[3] &&
|
|
237
|
+
typeof operation[3] === "object" &&
|
|
238
|
+
operation[3].idKey) {
|
|
239
|
+
this.rangeIdKeys[statePath || ""] = operation[3].idKey;
|
|
240
|
+
}
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
case "p": {
|
|
244
|
+
this.addItemsToRange(currentItems, operation[1], operation[2], rangeData, true);
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
case "i": {
|
|
248
|
+
const targetIndex = this.findItemIndexByKey(currentItems, operation[1], statics, statePath);
|
|
249
|
+
if (targetIndex >= 0) {
|
|
250
|
+
const itemsToInsert = Array.isArray(operation[2])
|
|
251
|
+
? operation[2]
|
|
252
|
+
: [operation[2]];
|
|
253
|
+
currentItems.splice(targetIndex + 1, 0, ...itemsToInsert);
|
|
254
|
+
}
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
case "o": {
|
|
258
|
+
const newOrder = operation[1];
|
|
259
|
+
const reorderedItems = [];
|
|
260
|
+
const itemsByKey = new Map();
|
|
261
|
+
for (const item of currentItems) {
|
|
262
|
+
const itemKey = this.getItemKey(item, statics, statePath);
|
|
263
|
+
if (itemKey) {
|
|
264
|
+
itemsByKey.set(itemKey, item);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
for (const orderedKey of newOrder) {
|
|
268
|
+
const item = itemsByKey.get(orderedKey);
|
|
269
|
+
if (item) {
|
|
270
|
+
reorderedItems.push(item);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
currentItems.length = 0;
|
|
274
|
+
currentItems.push(...reorderedItems);
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
default:
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
this.rangeState[statePath] = {
|
|
282
|
+
items: currentItems,
|
|
283
|
+
statics: rangeData.statics,
|
|
284
|
+
};
|
|
285
|
+
this.treeState[statePath] = {
|
|
286
|
+
d: currentItems,
|
|
287
|
+
s: rangeData.statics,
|
|
288
|
+
};
|
|
289
|
+
const rangeStructure = this.getCurrentRangeStructure(statePath);
|
|
290
|
+
if (rangeStructure && rangeStructure.s) {
|
|
291
|
+
return this.renderItemsWithStatics(currentItems, rangeStructure.s);
|
|
292
|
+
}
|
|
293
|
+
return currentItems.map((item) => this.renderValue(item)).join("");
|
|
294
|
+
}
|
|
295
|
+
getCurrentRangeStructure(stateKey) {
|
|
296
|
+
if (this.rangeState[stateKey]) {
|
|
297
|
+
return {
|
|
298
|
+
d: this.rangeState[stateKey].items,
|
|
299
|
+
s: this.rangeState[stateKey].statics,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const fieldValue = this.treeState[stateKey];
|
|
303
|
+
if (fieldValue &&
|
|
304
|
+
typeof fieldValue === "object" &&
|
|
305
|
+
fieldValue.s) {
|
|
306
|
+
return fieldValue;
|
|
307
|
+
}
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
renderItemsWithStatics(items, statics) {
|
|
311
|
+
const result = items
|
|
312
|
+
.map((item) => {
|
|
313
|
+
let html = "";
|
|
314
|
+
for (let i = 0; i < statics.length; i++) {
|
|
315
|
+
html += statics[i];
|
|
316
|
+
if (i < statics.length - 1) {
|
|
317
|
+
const fieldKey = i.toString();
|
|
318
|
+
if (item[fieldKey] !== undefined) {
|
|
319
|
+
html += this.renderValue(item[fieldKey]);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return html;
|
|
324
|
+
})
|
|
325
|
+
.join("");
|
|
326
|
+
if (this.logger.isDebugEnabled()) {
|
|
327
|
+
this.logger.debug("[renderItemsWithStatics] statics:", statics);
|
|
328
|
+
this.logger.debug("[renderItemsWithStatics] items count:", items.length);
|
|
329
|
+
this.logger.debug("[renderItemsWithStatics] result snippet:", result.substring(0, 200));
|
|
330
|
+
}
|
|
331
|
+
return result;
|
|
332
|
+
}
|
|
333
|
+
addItemsToRange(currentItems, items, statics, rangeData, prepend) {
|
|
334
|
+
if (statics) {
|
|
335
|
+
rangeData.statics = statics;
|
|
336
|
+
}
|
|
337
|
+
if (!items)
|
|
338
|
+
return;
|
|
339
|
+
const itemsArray = Array.isArray(items) ? items : [items];
|
|
340
|
+
if (prepend) {
|
|
341
|
+
currentItems.unshift(...itemsArray);
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
currentItems.push(...itemsArray);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
getItemKey(item, statics, statePath) {
|
|
348
|
+
if (!statePath || !this.rangeIdKeys[statePath]) {
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
const keyPosStr = this.rangeIdKeys[statePath];
|
|
352
|
+
return item[keyPosStr] || null;
|
|
353
|
+
}
|
|
354
|
+
findItemIndexByKey(items, key, statics, statePath) {
|
|
355
|
+
return items.findIndex((item) => this.getItemKey(item, statics, statePath) === key);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
exports.TreeRenderer = TreeRenderer;
|
|
359
|
+
//# sourceMappingURL=tree-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-renderer.js","sourceRoot":"","sources":["../../state/tree-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-delegation.test.d.ts","sourceRoot":"","sources":["../../tests/event-delegation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const event_delegation_1 = require("../dom/event-delegation");
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
describe("EventDelegator", () => {
|
|
6
|
+
let consoleLogSpy;
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => { });
|
|
9
|
+
document.body.innerHTML = "";
|
|
10
|
+
});
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
consoleLogSpy.mockRestore();
|
|
13
|
+
jest.useRealTimers();
|
|
14
|
+
document.body.innerHTML = "";
|
|
15
|
+
});
|
|
16
|
+
const createContext = (wrapper, overrides = {}) => {
|
|
17
|
+
const rateLimitedHandlers = new WeakMap();
|
|
18
|
+
const baseContext = {
|
|
19
|
+
getWrapperElement: () => wrapper,
|
|
20
|
+
getRateLimitedHandlers: () => rateLimitedHandlers,
|
|
21
|
+
parseValue: (value) => value,
|
|
22
|
+
send: jest.fn(),
|
|
23
|
+
setActiveSubmission: jest.fn(),
|
|
24
|
+
openModal: jest.fn(),
|
|
25
|
+
closeModal: jest.fn(),
|
|
26
|
+
getWebSocketReadyState: () => 1,
|
|
27
|
+
};
|
|
28
|
+
return { ...baseContext, ...overrides };
|
|
29
|
+
};
|
|
30
|
+
it("sends action payloads for delegated click events", () => {
|
|
31
|
+
const wrapper = document.createElement("div");
|
|
32
|
+
wrapper.setAttribute("data-lvt-id", "wrapper-1");
|
|
33
|
+
wrapper.innerHTML = `
|
|
34
|
+
<button id="save" lvt-click="save" lvt-data-id="42"></button>
|
|
35
|
+
`;
|
|
36
|
+
document.body.appendChild(wrapper);
|
|
37
|
+
const context = createContext(wrapper);
|
|
38
|
+
const delegator = new event_delegation_1.EventDelegator(context, (0, logger_1.createLogger)({ scope: "EventDelegatorTest", level: "silent" }));
|
|
39
|
+
delegator.setupEventDelegation();
|
|
40
|
+
const button = document.getElementById("save");
|
|
41
|
+
button.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
|
42
|
+
expect(context.send).toHaveBeenCalledTimes(1);
|
|
43
|
+
expect(context.send).toHaveBeenCalledWith({
|
|
44
|
+
action: "save",
|
|
45
|
+
data: { id: "42" },
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
it("applies throttle semantics for rate limited handlers", () => {
|
|
49
|
+
jest.useFakeTimers();
|
|
50
|
+
const wrapper = document.createElement("div");
|
|
51
|
+
wrapper.setAttribute("data-lvt-id", "wrapper-2");
|
|
52
|
+
wrapper.innerHTML = `
|
|
53
|
+
<button id="ping" lvt-click="ping" lvt-throttle="200"></button>
|
|
54
|
+
`;
|
|
55
|
+
document.body.appendChild(wrapper);
|
|
56
|
+
const context = createContext(wrapper);
|
|
57
|
+
const delegator = new event_delegation_1.EventDelegator(context, (0, logger_1.createLogger)({ scope: "EventDelegatorTest", level: "silent" }));
|
|
58
|
+
delegator.setupEventDelegation();
|
|
59
|
+
const button = document.getElementById("ping");
|
|
60
|
+
button.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
|
61
|
+
button.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
|
62
|
+
expect(context.send).toHaveBeenCalledTimes(1);
|
|
63
|
+
jest.advanceTimersByTime(200);
|
|
64
|
+
button.dispatchEvent(new MouseEvent("click", { bubbles: true }));
|
|
65
|
+
expect(context.send).toHaveBeenCalledTimes(2);
|
|
66
|
+
});
|
|
67
|
+
it("handles form submissions and records active submission state", () => {
|
|
68
|
+
const wrapper = document.createElement("div");
|
|
69
|
+
wrapper.setAttribute("data-lvt-id", "wrapper-3");
|
|
70
|
+
wrapper.innerHTML = `
|
|
71
|
+
<form id="add-form" lvt-submit="add">
|
|
72
|
+
<input type="text" name="title" value="Hello" />
|
|
73
|
+
<input type="checkbox" name="published" checked />
|
|
74
|
+
<button type="submit" id="submit" lvt-disable-with="Saving...">Save</button>
|
|
75
|
+
</form>
|
|
76
|
+
`;
|
|
77
|
+
document.body.appendChild(wrapper);
|
|
78
|
+
const form = document.getElementById("add-form");
|
|
79
|
+
const submitButton = document.getElementById("submit");
|
|
80
|
+
const context = createContext(wrapper);
|
|
81
|
+
const delegator = new event_delegation_1.EventDelegator(context, (0, logger_1.createLogger)({ scope: "EventDelegatorTest", level: "silent" }));
|
|
82
|
+
delegator.setupEventDelegation();
|
|
83
|
+
const submitEvent = new Event("submit", {
|
|
84
|
+
bubbles: true,
|
|
85
|
+
cancelable: true,
|
|
86
|
+
});
|
|
87
|
+
submitEvent.submitter = submitButton;
|
|
88
|
+
form.dispatchEvent(submitEvent);
|
|
89
|
+
expect(context.setActiveSubmission).toHaveBeenCalledWith(form, submitButton, "Save");
|
|
90
|
+
expect(submitButton.disabled).toBe(true);
|
|
91
|
+
expect(submitButton.textContent).toBe("Saving...");
|
|
92
|
+
expect(context.send).toHaveBeenCalledTimes(1);
|
|
93
|
+
expect(context.send).toHaveBeenCalledWith(expect.objectContaining({
|
|
94
|
+
action: "add",
|
|
95
|
+
data: expect.objectContaining({
|
|
96
|
+
title: "Hello",
|
|
97
|
+
published: true,
|
|
98
|
+
}),
|
|
99
|
+
}));
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=event-delegation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-delegation.test.js","sourceRoot":"","sources":["../../tests/event-delegation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-manager.test.d.ts","sourceRoot":"","sources":["../../tests/focus-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const focus_manager_1 = require("../dom/focus-manager");
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
describe("FocusManager", () => {
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
document.body.innerHTML = "";
|
|
8
|
+
});
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
document.body.innerHTML = "";
|
|
11
|
+
});
|
|
12
|
+
it("restores focus to the last tracked element", () => {
|
|
13
|
+
const wrapper = document.createElement("div");
|
|
14
|
+
wrapper.setAttribute("data-lvt-id", "focus-wrapper");
|
|
15
|
+
const input = document.createElement("input");
|
|
16
|
+
input.type = "text";
|
|
17
|
+
wrapper.appendChild(input);
|
|
18
|
+
document.body.appendChild(wrapper);
|
|
19
|
+
const manager = new focus_manager_1.FocusManager((0, logger_1.createLogger)({ scope: "FocusManagerTest", level: "silent" }));
|
|
20
|
+
manager.attach(wrapper);
|
|
21
|
+
manager.updateFocusableElements();
|
|
22
|
+
manager.lastFocusedElement = input;
|
|
23
|
+
manager.wrapperElement = wrapper;
|
|
24
|
+
manager.lastFocusedSelectionStart = 1;
|
|
25
|
+
manager.lastFocusedSelectionEnd = 3;
|
|
26
|
+
manager.restoreFocusedElement();
|
|
27
|
+
expect(document.activeElement).toBe(input);
|
|
28
|
+
});
|
|
29
|
+
it("fails gracefully when the tracked element no longer exists", () => {
|
|
30
|
+
const wrapper = document.createElement("div");
|
|
31
|
+
wrapper.setAttribute("data-lvt-id", "focus-wrapper-2");
|
|
32
|
+
const input = document.createElement("input");
|
|
33
|
+
wrapper.appendChild(input);
|
|
34
|
+
document.body.appendChild(wrapper);
|
|
35
|
+
const manager = new focus_manager_1.FocusManager((0, logger_1.createLogger)({ scope: "FocusManagerTest", level: "silent" }));
|
|
36
|
+
manager.attach(wrapper);
|
|
37
|
+
manager.updateFocusableElements();
|
|
38
|
+
manager.lastFocusedElement = input;
|
|
39
|
+
manager.wrapperElement = wrapper;
|
|
40
|
+
input.remove();
|
|
41
|
+
expect(() => manager.restoreFocusedElement()).not.toThrow();
|
|
42
|
+
expect(document.activeElement).not.toBe(input);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=focus-manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-manager.test.js","sourceRoot":"","sources":["../../tests/focus-manager.test.ts"],"names":[],"mappings":";;AAAA,wDAAoD;AACpD,4CAA+C;AAE/C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,4BAAY,CAC9B,IAAA,qBAAY,EAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAC7D,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAEjC,OAAe,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAC3C,OAAe,CAAC,cAAc,GAAG,OAAO,CAAC;QACzC,OAAe,CAAC,yBAAyB,GAAG,CAAC,CAAC;QAC9C,OAAe,CAAC,uBAAuB,GAAG,CAAC,CAAC;QAE7C,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,4BAAY,CAC9B,IAAA,qBAAY,EAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAC7D,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAEjC,OAAe,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAC3C,OAAe,CAAC,cAAc,GAAG,OAAO,CAAC;QAE1C,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-disabler.test.d.ts","sourceRoot":"","sources":["../../tests/form-disabler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const form_disabler_1 = require("../dom/form-disabler");
|
|
4
|
+
describe("FormDisabler", () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
document.body.innerHTML = "";
|
|
7
|
+
});
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
document.body.innerHTML = "";
|
|
10
|
+
});
|
|
11
|
+
it("disables and re-enables all controls within the wrapper", () => {
|
|
12
|
+
const wrapper = document.createElement("div");
|
|
13
|
+
const form = document.createElement("form");
|
|
14
|
+
const input = document.createElement("input");
|
|
15
|
+
const textarea = document.createElement("textarea");
|
|
16
|
+
const select = document.createElement("select");
|
|
17
|
+
const button = document.createElement("button");
|
|
18
|
+
form.appendChild(input);
|
|
19
|
+
form.appendChild(textarea);
|
|
20
|
+
form.appendChild(select);
|
|
21
|
+
form.appendChild(button);
|
|
22
|
+
wrapper.appendChild(form);
|
|
23
|
+
document.body.appendChild(wrapper);
|
|
24
|
+
const disabler = new form_disabler_1.FormDisabler();
|
|
25
|
+
disabler.disable(wrapper);
|
|
26
|
+
[input, textarea, select, button].forEach((element) => {
|
|
27
|
+
expect(element.disabled).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
disabler.enable(wrapper);
|
|
30
|
+
[input, textarea, select, button].forEach((element) => {
|
|
31
|
+
expect(element.disabled).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=form-disabler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-disabler.test.js","sourceRoot":"","sources":["../../tests/form-disabler.test.ts"],"names":[],"mappings":";;AAAA,wDAAoD;AAEpD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,QAAQ,GAAG,IAAI,4BAAY,EAAE,CAAC;QACpC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE1B,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-lifecycle-manager.test.d.ts","sourceRoot":"","sources":["../../tests/form-lifecycle-manager.test.ts"],"names":[],"mappings":""}
|