@reidelsaltres/pureper 0.1.175 → 0.1.176

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 (37) hide show
  1. package/out/foundation/Triplet.d.ts.map +1 -1
  2. package/out/foundation/Triplet.js +3 -5
  3. package/out/foundation/Triplet.js.map +1 -1
  4. package/out/foundation/component_api/Component.d.ts +2 -2
  5. package/out/foundation/component_api/Component.d.ts.map +1 -1
  6. package/out/foundation/component_api/Component.js.map +1 -1
  7. package/out/foundation/component_api/UniHtml.d.ts +4 -4
  8. package/out/foundation/component_api/UniHtml.d.ts.map +1 -1
  9. package/out/foundation/component_api/UniHtml.js +4 -11
  10. package/out/foundation/component_api/UniHtml.js.map +1 -1
  11. package/out/foundation/engine/Expression.d.ts.map +1 -1
  12. package/out/foundation/engine/Expression.js.map +1 -1
  13. package/out/foundation/engine/TemplateEngine.d.ts +45 -3
  14. package/out/foundation/engine/TemplateEngine.d.ts.map +1 -1
  15. package/out/foundation/engine/TemplateEngine.js +385 -49
  16. package/out/foundation/engine/TemplateEngine.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/foundation/Triplet.ts +5 -6
  19. package/src/foundation/component_api/Component.ts +2 -1
  20. package/src/foundation/component_api/UniHtml.ts +14 -21
  21. package/src/foundation/engine/Expression.ts +1 -2
  22. package/src/foundation/engine/TemplateEngine.ts +414 -53
  23. package/src/foundation/engine/BalancedParser.ts +0 -353
  24. package/src/foundation/engine/EscapeHandler.ts +0 -54
  25. package/src/foundation/engine/Rule.ts +0 -138
  26. package/src/foundation/engine/TemplateEngine.old.ts +0 -318
  27. package/src/foundation/engine/TemplateInstance.md +0 -110
  28. package/src/foundation/engine/TemplateInstance.old.ts +0 -673
  29. package/src/foundation/engine/TemplateInstance.ts +0 -843
  30. package/src/foundation/engine/exceptions/TemplateExceptions.ts +0 -27
  31. package/src/foundation/engine/rules/attribute/EventRule.ts +0 -171
  32. package/src/foundation/engine/rules/attribute/InjectionRule.ts +0 -140
  33. package/src/foundation/engine/rules/attribute/RefRule.ts +0 -126
  34. package/src/foundation/engine/rules/syntax/ExpressionRule.ts +0 -102
  35. package/src/foundation/engine/rules/syntax/ForRule.ts +0 -267
  36. package/src/foundation/engine/rules/syntax/IfRule.ts +0 -261
  37. package/src/foundation/hmle/Context.ts +0 -90
@@ -1,59 +1,395 @@
1
+ import Observable from "../api/Observer.js";
1
2
  import Expression from "./Expression.js";
2
3
  export default class TemplateEngine {
3
- static process(root, onlyRoot = false) {
4
- let elements = [];
5
- const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
6
- if (onlyRoot) {
7
- walker.nextNode();
8
- while (walker.nextSibling()) {
9
- const node = walker.currentNode;
10
- elements.push(node);
4
+ ref_component = new class {
5
+ engine;
6
+ globalScope;
7
+ constructor(engine) {
8
+ this.engine = engine;
9
+ }
10
+ acceptNode(node) {
11
+ return node.hasAttribute("ref");
12
+ }
13
+ walkthrough(walker, node, data) {
14
+ const element = node;
15
+ const bool = this.acceptNode(element);
16
+ if (bool) {
17
+ const refAtt = element.getAttribute("ref");
18
+ const refName = new Expression(refAtt).eval(data);
19
+ this.doWork({ element, refName, data });
11
20
  }
21
+ return false;
12
22
  }
13
- else {
14
- while (walker.nextNode()) {
15
- const node = walker.currentNode;
16
- elements.push(node);
17
- }
18
- }
19
- return elements;
20
- }
21
- static processFors(root, scope) {
22
- const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);
23
- let leftCircleBracketCount = 0;
24
- let rightCircleBracketCount = 0;
25
- while (walker.nextNode()) {
26
- const node = walker.currentNode;
27
- if (node.textContent?.includes("@for(")) {
28
- leftCircleBracketCount = 1;
29
- rightCircleBracketCount = 0;
30
- }
31
- if (node.textContent?.includes("("))
32
- leftCircleBracketCount++;
33
- if (node.textContent?.includes(")"))
34
- rightCircleBracketCount++;
35
- if (leftCircleBracketCount > 0 && leftCircleBracketCount === rightCircleBracketCount) {
36
- }
37
- }
38
- return scope;
39
- }
40
- static processAttributes(root, scope) {
41
- const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
42
- while (walker.nextNode()) {
43
- const node = walker.currentNode;
44
- if (node.nodeType === Node.ELEMENT_NODE) {
45
- const element = node;
46
- if (element.hasAttribute("ref"))
47
- scope.set(element.getAttribute("ref"), element);
48
- [...element.attributes].filter(a => /^on/.test(a.name)).forEach(attr => {
49
- const eventName = attr.name.substring(2);
50
- const expr = new Expression(attr.value);
51
- element.addEventListener(eventName, (e) => { });
23
+ doWork(context) {
24
+ context.data.set(context.refName, context.element);
25
+ this.globalScope.set(context.refName, context.element);
26
+ this.engine.bindings.set(context.element, () => {
27
+ context.data.delete(context.refName);
28
+ this.globalScope.delete(context.refName);
29
+ });
30
+ }
31
+ }(this);
32
+ on_component = new class {
33
+ engine;
34
+ constructor(engine) {
35
+ this.engine = engine;
36
+ }
37
+ acceptNode(node) {
38
+ return Array.from(node.attributes).some(attr => /^on\[[^\]]+\]$/i.test(attr.name));
39
+ }
40
+ walkthrough(walker, node, data) {
41
+ const element = node;
42
+ const bool = this.acceptNode(element);
43
+ if (bool) {
44
+ const onAttribute = Array.from(element.attributes)
45
+ .find(attr => /^on\[[^\]]+\]$/i.test(attr.name));
46
+ const eventName = onAttribute.name.substring(3, onAttribute.name.length - 1);
47
+ const handler = new Expression(onAttribute.value);
48
+ const listener = (event) => {
49
+ handler.eval(data, { event });
50
+ };
51
+ element.addEventListener(eventName, listener);
52
+ this.engine.bindings.set(element, () => {
53
+ element.removeEventListener(eventName, listener);
54
+ });
55
+ }
56
+ return false;
57
+ }
58
+ doWork(context) {
59
+ }
60
+ }(this);
61
+ injection_component = new class {
62
+ engine;
63
+ constructor(engine) {
64
+ this.engine = engine;
65
+ }
66
+ acceptNode(node) {
67
+ return node.tagName === "INJECTION";
68
+ }
69
+ walkthrough(walker, node, data) {
70
+ const element = node;
71
+ const bool = this.acceptNode(element);
72
+ if (bool) {
73
+ function insideWork() {
74
+ const targetAtt = element.getAttribute("target");
75
+ const targetName = new Expression(targetAtt).eval(data);
76
+ const at = element.getAttribute("at");
77
+ element.remove();
78
+ const targetElement = data.get(targetName);
79
+ if (!targetElement) {
80
+ this.engine.processLogs.push(`Injection target '${targetName}' not found.`);
81
+ return true;
82
+ }
83
+ ;
84
+ this.doWork({ element, target: targetElement, at: at });
85
+ }
86
+ insideWork.call(this);
87
+ this.engine.onChange(() => insideWork.call(this));
88
+ }
89
+ return bool;
90
+ }
91
+ doWork(context) {
92
+ const { element, target, at } = context;
93
+ if (at === "head") {
94
+ target.prepend(...element.childNodes);
95
+ }
96
+ else {
97
+ target.append(...element.childNodes);
98
+ }
99
+ }
100
+ }(this);
101
+ exp_component = new class {
102
+ engine;
103
+ constructor(engine) {
104
+ this.engine = engine;
105
+ }
106
+ acceptNode(node) {
107
+ return node.tagName === "EXP";
108
+ }
109
+ walkthrough(walker, node, data) {
110
+ const element = node;
111
+ const bool = this.acceptNode(element);
112
+ if (bool) {
113
+ const vvv = element.getAttribute("of");
114
+ const of = new Expression(vvv).eval(data);
115
+ const value = of instanceof Observable ? of.getObject() : of;
116
+ if (of instanceof Observable) {
117
+ of.subscribe((newValue) => {
118
+ element.textContent = "";
119
+ this.engine.change();
120
+ this.doWork({ element, value: newValue });
121
+ });
122
+ }
123
+ this.doWork({ element, value });
124
+ /*const textNode = document.createTextNode(of);
125
+ element.parentNode!.replaceChild(textNode, element);*/
126
+ }
127
+ return bool;
128
+ }
129
+ doWork(context) {
130
+ context.element.textContent = context.value;
131
+ }
132
+ }(this);
133
+ for_component = new class {
134
+ engine;
135
+ constructor(engine) {
136
+ this.engine = engine;
137
+ }
138
+ acceptNode(element) {
139
+ return element.tagName === "FOR";
140
+ }
141
+ walkthrough(walker, node, data) {
142
+ const element = node;
143
+ const bool = this.acceptNode(element);
144
+ if (bool) {
145
+ const shadow = TemplateEngine.transContentToShadow(element);
146
+ const index = element.getAttribute("index");
147
+ const value = element.getAttribute("value");
148
+ const vvv = element.getAttribute("of");
149
+ const of = new Expression(vvv).eval(data);
150
+ const iterable = of instanceof Observable ? of.getObject() : of;
151
+ if (of instanceof Observable) {
152
+ of.subscribe((newValue) => {
153
+ this.engine.change();
154
+ this.doWork({ element, iterable: newValue, index, value, walker, shadow, data });
155
+ });
156
+ }
157
+ this.doWork({ element, iterable: iterable, index, value, walker, shadow, data });
158
+ }
159
+ return bool;
160
+ }
161
+ doWork(context) {
162
+ const conseg = [];
163
+ const element = context.element;
164
+ const iterable = context.iterable;
165
+ const index = context.index;
166
+ const value = context.value;
167
+ const walker = context.walker;
168
+ const shadow = context.shadow;
169
+ const data = context.data;
170
+ element.childNodes.forEach(n => this.engine.fullCleanup(n));
171
+ const lenght = typeof iterable === "number" ? iterable : iterable.length;
172
+ for (let i = 0; i < lenght; i++) {
173
+ const z = i;
174
+ const nestedScope = data.createChild();
175
+ const setToScope = typeof iterable === "number" ? z : iterable[z];
176
+ if (index)
177
+ nestedScope.set(index, z);
178
+ nestedScope.set(value, setToScope);
179
+ const block = document.createElement("for-temporary-block");
180
+ block.appendChild(shadow.content.cloneNode(true));
181
+ walker.walk(block, nestedScope);
182
+ conseg.push(block);
183
+ }
184
+ conseg.forEach(c => {
185
+ element.append(...c.childNodes);
186
+ });
187
+ }
188
+ }(this);
189
+ if_component = new class {
190
+ engine;
191
+ constructor(engine) {
192
+ this.engine = engine;
193
+ }
194
+ acceptNode(node) {
195
+ return node.tagName === "IF"
196
+ || node.tagName === "ELSEIF"
197
+ || node.tagName === "ELSE";
198
+ }
199
+ walkthrough(walker, node, data) {
200
+ const element = node;
201
+ const bool = element.tagName === "IF";
202
+ if (bool) {
203
+ const allParts = [];
204
+ allParts.push({ element, shadow: TemplateEngine.transContentToShadow(element) });
205
+ let point = element;
206
+ while (true) {
207
+ if (!point.nextSibling)
208
+ break;
209
+ point = point.nextSibling;
210
+ if (!point || point.nodeType !== Node.ELEMENT_NODE)
211
+ continue;
212
+ if (!point || !this.acceptNode(point))
213
+ break;
214
+ allParts.push({ element: point, shadow: TemplateEngine.transContentToShadow(point) });
215
+ }
216
+ for (const part of allParts) {
217
+ const conditionAtt = part.element.getAttribute('condition');
218
+ if (!conditionAtt)
219
+ continue;
220
+ const condition = new Expression(conditionAtt).eval(data);
221
+ if (condition instanceof Observable) {
222
+ condition.subscribe((newValue) => {
223
+ this.engine.change();
224
+ this.doWork({ walker, data, allParts: allParts });
225
+ });
226
+ }
227
+ }
228
+ this.doWork({ walker, data, allParts: allParts });
229
+ }
230
+ return bool;
231
+ }
232
+ doWork(context) {
233
+ const { walker, data, allParts } = context;
234
+ allParts.forEach(part => {
235
+ this.engine.fullCleanup(part.element);
236
+ /*part.element.childNodes.forEach(n =>
237
+ this.engine.fullCleanup(n));*/
238
+ });
239
+ for (const part of allParts) {
240
+ const conditionAtt = part.element.getAttribute('condition');
241
+ if (!conditionAtt && part.element.tagName === "ELSE") {
242
+ const block = document.createElement("if-temporary-block");
243
+ block.appendChild(part.shadow.content.cloneNode(true));
244
+ walker.walk(block, data);
245
+ part.element.append(...block.childNodes);
246
+ break;
247
+ }
248
+ ;
249
+ const condition = new Expression(conditionAtt).eval(data);
250
+ const conditionValue = condition instanceof Observable ? condition.getObject() : condition;
251
+ if (conditionValue) {
252
+ const block = document.createElement("if-temporary-block");
253
+ block.appendChild(part.shadow.content.cloneNode(true));
254
+ walker.walk(block, data);
255
+ part.element.append(...block.childNodes);
256
+ break;
257
+ }
258
+ }
259
+ }
260
+ }(this);
261
+ components = [
262
+ this.ref_component, this.on_component, this.injection_component,
263
+ this.exp_component, this.for_component, this.if_component
264
+ ];
265
+ bindings = new Map();
266
+ onChangeCallbacks = [];
267
+ processLogs = [];
268
+ static fullProcess(root, scope) {
269
+ const engine = new TemplateEngine();
270
+ engine.fullProcess(root, scope);
271
+ return engine.processLogs;
272
+ }
273
+ static createHolder(markup, scope) {
274
+ const engine = new TemplateEngine();
275
+ const fragment = document.createRange().createContextualFragment(markup);
276
+ engine.fullProcess(fragment, scope);
277
+ return new TemplateHolder(engine, fragment);
278
+ }
279
+ change() {
280
+ this.processLogs.push('--- Change triggered ---');
281
+ this.onChangeCallbacks.forEach(cb => cb());
282
+ }
283
+ onChange(funct) {
284
+ this.onChangeCallbacks.push(funct);
285
+ }
286
+ fullProcess(root, scope) {
287
+ this.processLogs = [];
288
+ this.ref_component.globalScope = scope;
289
+ const walker = new Walker(root, {
290
+ nodeFilter: NodeFilter.SHOW_ELEMENT,
291
+ walkerFunction: (walker, node, data) => {
292
+ for (const component of this.components)
293
+ if (component.walkthrough?.call(component, walker, node, data))
294
+ return;
295
+ node.childNodes.forEach(child => {
296
+ walker.walk(child, data);
52
297
  });
53
- 5;
54
298
  }
299
+ });
300
+ let i = 0;
301
+ walker.onEnterNode((node, data) => {
302
+ this.processLogs.push((" ").repeat(i) + "layer " + i + " Entering: " + node.nodeName + " - Vars: " + Object.keys(data.getVariables()).join(", "));
303
+ i++;
304
+ });
305
+ walker.onLeaveNode((node, data) => {
306
+ i--;
307
+ this.processLogs.push((" ").repeat(i) + "layer " + i + " Leaving: " + node.nodeName + " - Vars: " + Object.keys(data.getVariables()).join(", "));
308
+ });
309
+ walker.walk(null, scope);
310
+ }
311
+ fullCleanup(root) {
312
+ const walker = new Walker(root, {
313
+ nodeFilter: NodeFilter.SHOW_ELEMENT
314
+ });
315
+ let i = 0;
316
+ walker.onEnterNode((node, data) => {
317
+ const element = node;
318
+ const binding = this.bindings.get(element);
319
+ if (binding)
320
+ binding();
321
+ this.processLogs.push((" ").repeat(i) + "layer " + i + " Cleaning up Starting: " + node.nodeName);
322
+ i++;
323
+ });
324
+ walker.onLeaveNode((node, data) => {
325
+ const element = node;
326
+ element.innerHTML = "";
327
+ i--;
328
+ this.processLogs.push((" ").repeat(i) + "layer " + i + " Cleaning up Ending: " + node.nodeName);
329
+ });
330
+ walker.walk(root);
331
+ }
332
+ static transContentToShadow(root) {
333
+ const template = document.createElement("template");
334
+ while (root.firstChild) {
335
+ template.content.appendChild(root.firstChild);
55
336
  }
56
- return scope;
337
+ return template;
338
+ }
339
+ }
340
+ export class TemplateHolder {
341
+ engine;
342
+ documentFragment;
343
+ constructor(engine, documentFragment) {
344
+ this.engine = engine;
345
+ this.documentFragment = documentFragment;
346
+ }
347
+ pushTo(element) {
348
+ element.appendChild(this.documentFragment);
349
+ this.documentFragment = element;
350
+ }
351
+ }
352
+ export class Walker {
353
+ onEnterNodeCallbacks = [];
354
+ onLeaveNodeCallbacks = [];
355
+ root;
356
+ filter;
357
+ walkerFunction;
358
+ nodeFilter;
359
+ constructor(root, settings) {
360
+ this.root = root;
361
+ this.filter = settings?.filter;
362
+ this.nodeFilter = settings?.nodeFilter || NodeFilter.SHOW_ALL;
363
+ this.walkerFunction = settings?.walkerFunction;
364
+ }
365
+ walk(node, data, walkerFunction) {
366
+ if (!node)
367
+ node = this.root;
368
+ if (!walkerFunction)
369
+ walkerFunction = this.walkerFunction;
370
+ if (!this.matchesMask(node, this.nodeFilter))
371
+ return;
372
+ this.onEnterNodeCallbacks.forEach(cb => cb(node, data));
373
+ if (walkerFunction) {
374
+ walkerFunction(this, node, data);
375
+ }
376
+ else {
377
+ node.childNodes.forEach(child => {
378
+ if (this.filter && this.filter(child) !== NodeFilter.FILTER_ACCEPT)
379
+ return;
380
+ this.walk(child, data);
381
+ });
382
+ }
383
+ this.onLeaveNodeCallbacks.forEach(cb => cb(node, data));
384
+ }
385
+ matchesMask(node, mask) {
386
+ return (mask & (1 << (node.nodeType - 1))) !== 0;
387
+ }
388
+ onEnterNode(callback) {
389
+ this.onEnterNodeCallbacks.push(callback);
390
+ }
391
+ onLeaveNode(callback) {
392
+ this.onLeaveNodeCallbacks.push(callback);
57
393
  }
58
394
  }
59
395
  //# sourceMappingURL=TemplateEngine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TemplateEngine.js","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reidelsaltres/pureper",
3
- "version": "0.1.175",
3
+ "version": "0.1.176",
4
4
  "description": "Minimal library extracted from the Pureper SPA foundation — utilities and base classes for components/pages.",
5
5
  "type": "module",
6
6
  "main": "out/src/index.js",
@@ -5,7 +5,7 @@ import ServiceWorker from "./worker/ServiceWorker.js";
5
5
  import Page from "./component_api/Page.js";
6
6
  import Component from "./component_api/Component.js";
7
7
  import { AnyConstructor, Constructor } from "./component_api/mixin/Proto.js";
8
- import HMLEParser from "./HMLEParser.js";
8
+ import TemplateEngine, { TemplateHolder } from "./engine/TemplateEngine.js";
9
9
 
10
10
 
11
11
  export enum AccessType {
@@ -150,15 +150,14 @@ export default class Triplet {
150
150
  }
151
151
  };
152
152
  let proto = ori.prototype as any;
153
- const parser = new HMLEParser();
153
+ const parser = new TemplateEngine();
154
154
 
155
- proto._init = async function (): Promise<DocumentFragment> {
155
+ proto._init = async function (): Promise<TemplateHolder> {
156
156
  const markupText = await that.markup;
157
- if (!markupText) return new DocumentFragment();
158
- return parser.parseToDOM(markupText, this);
157
+ return TemplateEngine.createHolder(markupText, this);
159
158
  }
160
159
 
161
- proto._postInit = async function (preHtml: DocumentFragment): Promise<DocumentFragment> {
160
+ proto._postInit = async function (preHtml: TemplateHolder): Promise<TemplateHolder> {
162
161
  const dmc: Document | ShadowRoot = this.shadowRoot ?? document;
163
162
  const css = await that.css;
164
163
 
@@ -1,5 +1,6 @@
1
1
  import IElementHolder from "../api/ElementHolder.js";
2
2
  import UniHtml from "../component_api/UniHtml.js";
3
+ import { TemplateHolder } from "../engine/TemplateEngine.js";
3
4
  import Attribute from "./Attribute.js";
4
5
  import { Class, Mixined } from "./mixin/Proto.js";
5
6
 
@@ -56,7 +57,7 @@ export default class Component extends Class(HTMLElement).extend(UniHtml).build(
56
57
 
57
58
  this.load(this.shadowRoot);
58
59
  }
59
- protected render(element: IElementHolder, renderTarget: HTMLElement | ShadowRoot): Promise<void> {
60
+ protected render(element: TemplateHolder, renderTarget: HTMLElement | ShadowRoot): Promise<void> {
60
61
  (this.getMixin(UniHtml)?.instance.get() as any).render(element, renderTarget);
61
62
  //super.render(element, renderTarget);
62
63
  //this.shadowRoot!.appendChild(renderTarget);
@@ -5,7 +5,7 @@
5
5
  * Use static factory methods to create instances from an HTML file or string.
6
6
  * Designed to replace legacy Page and Component base classes.
7
7
  */
8
- import IElementHolder from "../api/ElementHolder.js";
8
+ import { TemplateHolder } from "../engine/TemplateEngine.js";
9
9
 
10
10
 
11
11
  /**
@@ -21,30 +21,29 @@ export default class UniHtml {
21
21
  */
22
22
  public async load(element: HTMLElement | ShadowRoot): Promise<void> {;
23
23
  await this.preInit();
24
- const preHtml: DocumentFragment = await this._init();
25
- const html: DocumentFragment = await this._postInit(preHtml);
26
24
 
27
- const localRoot = html;
25
+ const preHtml: TemplateHolder = await this._init();
26
+ const html: TemplateHolder = await this._postInit(preHtml);
28
27
 
29
- const holder : IElementHolder = { element: localRoot };
28
+ const localRoot = html;
30
29
 
31
30
  // ВАЖНО: preLoad() вызывается ДО монтирования в DOM/Shadow DOM.
32
31
  // Для компонентов (UniHtmlComponent) на этом этапе ещё нельзя полагаться на this.shadowRoot —
33
32
  // используйте переданный localRoot для подготовки DOM, данных и навешивания обработчиков.
34
33
  // Это предпочтительный этап инициализации для компонентов.
35
- await this.preLoad(holder);
34
+ await this.preLoad(html);
36
35
  // render() отвечает за помещение содержимого из localRoot в конечную цель (renderTarget).
37
36
  // В UniHtmlComponent.render() после вызова базового render() происходит добавление wrapper в shadowRoot.
38
- await this.render(holder, element);
37
+ await this.render(html, element);
39
38
  // postLoad() вызывается ПОСЛЕ render(). Для компонентов к этому моменту содержимое уже добавлено
40
39
  // внутрь shadowRoot, и можно безопасно работать с this.shadowRoot, измерениями layout и т.п.
41
- await this.postLoad(holder);
40
+ await this.postLoad(html);
42
41
  }
43
42
 
44
- private async _postInit(html: DocumentFragment): Promise<DocumentFragment> {
43
+ private async _postInit(html: TemplateHolder): Promise<TemplateHolder> {
45
44
  throw new Error("Method not implemented.");
46
45
  }
47
- private async _init(): Promise<DocumentFragment> {
46
+ private async _init(): Promise<TemplateHolder> {
48
47
  throw new Error("Method not implemented.");
49
48
  }
50
49
 
@@ -55,29 +54,23 @@ export default class UniHtml {
55
54
  * РЕКОМЕНДАЦИЯ: предпочитайте выполнять основную подготовку, поиск элементов, навешивание обработчиков
56
55
  * на узлы из localRoot именно здесь; затем render() вставит их в целевой контейнер/теневой DOM.
57
56
  */
58
- protected async preLoad(holder : IElementHolder) { }
57
+ protected async preLoad(holder : TemplateHolder) { }
59
58
  /**
60
59
  * Hook after rendering (e.g., event binding).
61
60
  * Для компонентов вызывается после того, как содержимое вставлено в shadowRoot (см. UniHtmlComponent.render()).
62
61
  * Используйте этот этап только когда необходим доступ к реально смонтированному DOM (layout/measurements,
63
62
  * интеграции, требующие присутствия в документе). В остальных случаях предпочитайте preLoad().
64
63
  */
65
- protected async postLoad(holder: IElementHolder) { }
64
+ protected async postLoad(holder: TemplateHolder) { }
66
65
  /**
67
66
  * Main rendering step. By default, simply inserts HTML into the container.
68
67
  * Override in subclasses for custom rendering logic.
69
68
  * @param element Target container
70
69
  * @param html HTML content
71
70
  */
72
- protected async render(holder: IElementHolder, renderTarget: HTMLElement | DocumentFragment): Promise<void> {
73
- // Move all children from holder.element to renderTarget
74
- const children = Array.from(holder.element.childNodes);
75
- for (const child of children) {
76
- renderTarget.appendChild(child);
77
- }
78
-
79
- // Update holder to point to renderTarget (now contains the content)
80
- (holder as { element: HTMLElement | DocumentFragment }).element = renderTarget;
71
+ protected async render(holder: TemplateHolder, renderTarget: HTMLElement | DocumentFragment): Promise<void> {
72
+ holder.pushTo(renderTarget);
73
+
81
74
  return Promise.resolve();
82
75
  }
83
76
 
@@ -143,7 +143,7 @@ export default class Expression {
143
143
  */
144
144
  public execute(scope: Scope, extraVars?: Record<string, any>): any {
145
145
  const context = scope.getVariables();
146
-
146
+
147
147
  if (extraVars) {
148
148
  Object.assign(context, extraVars);
149
149
  }
@@ -164,7 +164,6 @@ export default class Expression {
164
164
  */
165
165
  public async executeAsync(scope: Scope, extraVars?: Record<string, any>): Promise<any> {
166
166
  const context = scope.getVariables();
167
-
168
167
  if (extraVars) {
169
168
  Object.assign(context, extraVars);
170
169
  }