@reidelsaltres/pureper 0.1.160 → 0.1.162

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 (48) hide show
  1. package/out/foundation/Triplet.d.ts.map +1 -1
  2. package/out/foundation/Triplet.js +4 -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 -10
  8. package/out/foundation/component_api/UniHtml.d.ts.map +1 -1
  9. package/out/foundation/component_api/UniHtml.js +7 -15
  10. package/out/foundation/component_api/UniHtml.js.map +1 -1
  11. package/out/foundation/engine/Rule.d.ts +2 -0
  12. package/out/foundation/engine/Rule.d.ts.map +1 -1
  13. package/out/foundation/engine/Rule.js.map +1 -1
  14. package/out/foundation/engine/Scope.d.ts +5 -1
  15. package/out/foundation/engine/Scope.d.ts.map +1 -1
  16. package/out/foundation/engine/Scope.js +12 -3
  17. package/out/foundation/engine/Scope.js.map +1 -1
  18. package/out/foundation/engine/TemplateEngine.d.ts +17 -0
  19. package/out/foundation/engine/TemplateEngine.d.ts.map +1 -1
  20. package/out/foundation/engine/TemplateEngine.js +51 -3
  21. package/out/foundation/engine/TemplateEngine.js.map +1 -1
  22. package/out/foundation/engine/TemplateInstance.d.ts +167 -47
  23. package/out/foundation/engine/TemplateInstance.d.ts.map +1 -1
  24. package/out/foundation/engine/TemplateInstance.js +500 -118
  25. package/out/foundation/engine/TemplateInstance.js.map +1 -1
  26. package/out/foundation/engine/TemplateInstance.old.d.ts +219 -0
  27. package/out/foundation/engine/TemplateInstance.old.d.ts.map +1 -0
  28. package/out/foundation/engine/TemplateInstance.old.js +487 -0
  29. package/out/foundation/engine/TemplateInstance.old.js.map +1 -0
  30. package/out/foundation/engine/rules/attribute/RefRule.d.ts.map +1 -1
  31. package/out/foundation/engine/rules/attribute/RefRule.js +7 -1
  32. package/out/foundation/engine/rules/attribute/RefRule.js.map +1 -1
  33. package/out/index.d.ts +0 -1
  34. package/out/index.d.ts.map +1 -1
  35. package/out/index.js +0 -1
  36. package/out/index.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/foundation/Triplet.ts +6 -6
  39. package/src/foundation/component_api/Component.ts +2 -1
  40. package/src/foundation/component_api/UniHtml.ts +12 -22
  41. package/src/foundation/engine/Rule.ts +2 -0
  42. package/src/foundation/engine/Scope.ts +13 -3
  43. package/src/foundation/engine/TemplateEngine.ts +79 -4
  44. package/src/foundation/engine/TemplateInstance.md +110 -0
  45. package/src/foundation/engine/TemplateInstance.old.ts +673 -0
  46. package/src/foundation/engine/TemplateInstance.ts +635 -147
  47. package/src/foundation/engine/rules/attribute/RefRule.ts +8 -1
  48. package/src/index.ts +0 -1
@@ -0,0 +1,487 @@
1
+ import { MutationObserver } from '../api/Observer.js';
2
+ import Expression from './Expression.js';
3
+ /**
4
+ * PageTemplate - динамический шаблон страницы.
5
+ * Хранит обработанные Rule и поддерживает реактивное обновление.
6
+ *
7
+ * При изменении Observable обновляются только те фрагменты,
8
+ * которые зависят от изменённого Observable.
9
+ */
10
+ export default class TemplateInstance {
11
+ template;
12
+ scope;
13
+ sections = [];
14
+ /** Фрагменты шаблона (каждый обновляется независимо) */
15
+ fragments = new Map();
16
+ /** Счётчик для генерации ID фрагментов */
17
+ fragmentIdCounter = 0;
18
+ /** Observers for template changes */
19
+ changeObserver = new MutationObserver();
20
+ /** Observers for fragment changes */
21
+ fragmentChangeObserver = new MutationObserver();
22
+ /** Группировка секций по Observable */
23
+ observableTrackings = new Map();
24
+ /** Функции отписки от событий */
25
+ eventUnbinders = [];
26
+ /** Кэшированный главный фрагмент */
27
+ cachedFragment = null;
28
+ constructor(template, scope) {
29
+ this.template = template;
30
+ this.scope = scope;
31
+ }
32
+ /**
33
+ * Получить текущий шаблон
34
+ */
35
+ getTemplate() {
36
+ return this.template;
37
+ }
38
+ /**
39
+ * Установить новый шаблон (вызывает событие изменения)
40
+ */
41
+ setTemplate(newTemplate) {
42
+ const oldTemplate = this.template;
43
+ this.template = newTemplate;
44
+ this.changeObserver.notify({ oldValue: null, newValue: null, oldTemplate, newTemplate }, { oldValue: null, newValue: null, oldTemplate, newTemplate });
45
+ }
46
+ /**
47
+ * Получить Scope
48
+ */
49
+ getScope() {
50
+ return this.scope;
51
+ }
52
+ /**
53
+ * Подписаться на изменения шаблона
54
+ */
55
+ onTemplateChange(listener) {
56
+ const wrapper = (oldEvent, newEvent) => {
57
+ listener(newEvent.oldValue, newEvent.newValue, newEvent.oldTemplate, newEvent.newTemplate);
58
+ };
59
+ this.changeObserver.subscribe(wrapper);
60
+ return () => this.changeObserver.unsubscribe(wrapper);
61
+ }
62
+ /**
63
+ * Подписаться на изменения фрагментов
64
+ */
65
+ onFragmentChange(listener) {
66
+ const wrapper = (_oldEvent, newEvent) => {
67
+ listener(newEvent);
68
+ };
69
+ this.fragmentChangeObserver.subscribe(wrapper);
70
+ return () => this.fragmentChangeObserver.unsubscribe(wrapper);
71
+ }
72
+ /**
73
+ * Добавить секцию шаблона
74
+ */
75
+ addSection(section) {
76
+ this.sections.push(section);
77
+ }
78
+ /**
79
+ * Получить все секции
80
+ */
81
+ getSections() {
82
+ return this.sections;
83
+ }
84
+ /**
85
+ * Создать новый фрагмент и вернуть его ID
86
+ */
87
+ createFragmentBinding(html, sections = []) {
88
+ const id = `fragment-${this.fragmentIdCounter++}`;
89
+ const binding = {
90
+ id,
91
+ html,
92
+ fragment: null,
93
+ sections,
94
+ observables: new Set(),
95
+ nodes: []
96
+ };
97
+ // Привязываем секции к фрагменту
98
+ for (const section of sections) {
99
+ section.fragmentId = id;
100
+ }
101
+ this.fragments.set(id, binding);
102
+ return id;
103
+ }
104
+ /**
105
+ * Получить привязку фрагмента по ID
106
+ */
107
+ getFragmentBinding(id) {
108
+ return this.fragments.get(id);
109
+ }
110
+ /**
111
+ * Получить все фрагменты
112
+ */
113
+ getAllFragments() {
114
+ return this.fragments;
115
+ }
116
+ /**
117
+ * Подписаться на Observable и автоматически пересоздавать секцию.
118
+ * Обновляются только фрагменты, зависящие от изменённого Observable.
119
+ */
120
+ trackObservable(observable, section, rebuild) {
121
+ // Проверяем, есть ли уже отслеживание для этого Observable
122
+ let tracking = this.observableTrackings.get(observable);
123
+ if (!tracking) {
124
+ // Создаём новое отслеживание
125
+ const listener = (newValue) => {
126
+ this.rebuildFragmentsForObservable(observable, newValue);
127
+ };
128
+ observable.subscribe(listener);
129
+ tracking = {
130
+ observable,
131
+ sections: [],
132
+ fragmentIds: new Set(),
133
+ unsubscribe: () => observable.unsubscribe(listener)
134
+ };
135
+ this.observableTrackings.set(observable, tracking);
136
+ }
137
+ // Добавляем секцию в отслеживание
138
+ tracking.sections.push({ section, rebuild });
139
+ // Связываем Observable с фрагментом секции
140
+ if (section.fragmentId) {
141
+ tracking.fragmentIds.add(section.fragmentId);
142
+ const binding = this.fragments.get(section.fragmentId);
143
+ if (binding) {
144
+ binding.observables.add(observable);
145
+ }
146
+ }
147
+ // Возвращаем функцию отписки для этой конкретной секции
148
+ return () => {
149
+ if (tracking) {
150
+ tracking.sections = tracking.sections.filter(s => s.section !== section);
151
+ // Если больше нет секций, отписываемся от Observable
152
+ if (tracking.sections.length === 0) {
153
+ tracking.unsubscribe();
154
+ this.observableTrackings.delete(observable);
155
+ }
156
+ }
157
+ };
158
+ }
159
+ /**
160
+ * Перестроить только те фрагменты, которые зависят от Observable
161
+ */
162
+ rebuildFragmentsForObservable(observable, newValue) {
163
+ const tracking = this.observableTrackings.get(observable);
164
+ if (!tracking || tracking.sections.length === 0)
165
+ return;
166
+ const oldTemplate = this.template;
167
+ let currentTemplate = this.template;
168
+ // Собираем все замены: старый output -> новый output
169
+ const replacements = [];
170
+ for (const { section, rebuild } of tracking.sections) {
171
+ // Unsubscribe old nested observables
172
+ this.unsubscribeSectionNested(section);
173
+ // Rebuild section
174
+ const newResult = rebuild(section);
175
+ const oldOutput = section.result.output;
176
+ replacements.push({
177
+ oldOutput,
178
+ newOutput: newResult.output,
179
+ section
180
+ });
181
+ section.result = newResult;
182
+ }
183
+ // Применяем все замены к шаблону
184
+ for (const { oldOutput, newOutput } of replacements) {
185
+ currentTemplate = currentTemplate.replace(oldOutput, newOutput);
186
+ }
187
+ this.template = currentTemplate;
188
+ // Обновляем только затронутые фрагменты
189
+ const affectedFragmentIds = new Set();
190
+ for (const { section } of tracking.sections) {
191
+ if (section.fragmentId) {
192
+ affectedFragmentIds.add(section.fragmentId);
193
+ }
194
+ }
195
+ // Пересоздаём только затронутые фрагменты
196
+ for (const fragmentId of affectedFragmentIds) {
197
+ const binding = this.fragments.get(fragmentId);
198
+ if (!binding)
199
+ continue;
200
+ // Обновляем HTML фрагмента на основе секций
201
+ let newHtml = binding.html;
202
+ for (const { oldOutput, newOutput, section } of replacements) {
203
+ if (section.fragmentId === fragmentId) {
204
+ newHtml = newHtml.replace(oldOutput, newOutput);
205
+ }
206
+ }
207
+ const oldFragment = binding.fragment;
208
+ binding.html = newHtml;
209
+ binding.fragment = null; // Инвалидируем кэш
210
+ // Создаём новый фрагмент
211
+ const newFragment = this.createFragmentFromHtml(newHtml);
212
+ binding.fragment = newFragment;
213
+ // Обновляем DOM если фрагмент вставлен
214
+ if (binding.startMarker && binding.endMarker) {
215
+ this.replaceFragmentInDOM(binding, newFragment);
216
+ }
217
+ // Уведомляем об изменении фрагмента
218
+ this.fragmentChangeObserver.notify({ fragmentId, oldFragment, newFragment, affectedObservables: [observable] }, { fragmentId, oldFragment, newFragment, affectedObservables: [observable] });
219
+ }
220
+ // Одно событие для всех изменений шаблона
221
+ this.changeObserver.notify({ oldValue: null, newValue, oldTemplate, newTemplate: this.template }, { oldValue: null, newValue, oldTemplate, newTemplate: this.template });
222
+ }
223
+ /**
224
+ * Заменить фрагмент в DOM между маркерами
225
+ */
226
+ replaceFragmentInDOM(binding, newFragment) {
227
+ if (!binding.startMarker || !binding.endMarker)
228
+ return;
229
+ const parent = binding.startMarker.parentNode;
230
+ if (!parent)
231
+ return;
232
+ // Удаляем старые ноды между маркерами
233
+ for (const node of binding.nodes) {
234
+ parent.removeChild(node);
235
+ }
236
+ // Вставляем новые ноды
237
+ const newNodes = [];
238
+ const childNodes = Array.from(newFragment.childNodes);
239
+ for (const node of childNodes) {
240
+ newNodes.push(node);
241
+ parent.insertBefore(node, binding.endMarker);
242
+ }
243
+ binding.nodes = newNodes;
244
+ }
245
+ /**
246
+ * Создать DocumentFragment из HTML строки
247
+ */
248
+ createFragmentFromHtml(html) {
249
+ if (typeof document === 'undefined') {
250
+ throw new Error('createFragmentFromHtml requires DOM environment');
251
+ }
252
+ const template = document.createElement('template');
253
+ template.innerHTML = html;
254
+ return template.content.cloneNode(true);
255
+ }
256
+ /**
257
+ * Отписаться от вложенных Observable в секции (но не от главного)
258
+ */
259
+ unsubscribeSectionNested(section) {
260
+ // Отписываемся только от подписок, сохранённых непосредственно в секции
261
+ for (const sub of section.subscriptions) {
262
+ sub.unsubscribe();
263
+ }
264
+ section.subscriptions = [];
265
+ // Recursively unsubscribe children
266
+ for (const child of section.children) {
267
+ this.unsubscribeSectionNested(child);
268
+ }
269
+ }
270
+ /**
271
+ * Отписаться от всех Observable в секции
272
+ */
273
+ unsubscribeSection(section) {
274
+ for (const sub of section.subscriptions) {
275
+ sub.unsubscribe();
276
+ }
277
+ section.subscriptions = [];
278
+ // Recursively unsubscribe children
279
+ for (const child of section.children) {
280
+ this.unsubscribeSection(child);
281
+ }
282
+ }
283
+ /**
284
+ * Создать DocumentFragment из текущего шаблона (весь шаблон).
285
+ * Кэширует фрагмент - повторные вызовы возвращают тот же фрагмент.
286
+ * После appendChild фрагмент будет пустым, но ссылки на элементы остаются валидными.
287
+ */
288
+ createFragment() {
289
+ if (!this.cachedFragment) {
290
+ this.cachedFragment = this.createFragmentFromHtml(this.template);
291
+ }
292
+ return this.cachedFragment;
293
+ }
294
+ /**
295
+ * Инвалидировать кэш фрагмента (для пересоздания)
296
+ */
297
+ invalidateFragment() {
298
+ this.cachedFragment = null;
299
+ }
300
+ /**
301
+ * Создать и вставить все фрагменты в контейнер с маркерами
302
+ */
303
+ createAllFragmentsWithMarkers(container) {
304
+ for (const [id, binding] of this.fragments) {
305
+ const startMarker = document.createComment(`fragment-start:${id}`);
306
+ const endMarker = document.createComment(`fragment-end:${id}`);
307
+ container.appendChild(startMarker);
308
+ const fragment = this.createFragmentFromHtml(binding.html);
309
+ binding.fragment = fragment;
310
+ // Сохраняем ноды
311
+ const nodes = [];
312
+ const childNodes = Array.from(fragment.childNodes);
313
+ for (const node of childNodes) {
314
+ nodes.push(node);
315
+ container.appendChild(node);
316
+ }
317
+ container.appendChild(endMarker);
318
+ binding.startMarker = startMarker;
319
+ binding.endMarker = endMarker;
320
+ binding.nodes = nodes;
321
+ }
322
+ }
323
+ /**
324
+ * Получить DocumentFragment для конкретного фрагмента
325
+ */
326
+ getFragmentById(id) {
327
+ const binding = this.fragments.get(id);
328
+ if (!binding)
329
+ return null;
330
+ if (!binding.fragment) {
331
+ binding.fragment = this.createFragmentFromHtml(binding.html);
332
+ }
333
+ return binding.fragment;
334
+ }
335
+ /**
336
+ * Получить кэшированный DocumentFragment (deprecated)
337
+ * @deprecated Используйте getFragmentById
338
+ */
339
+ getFragment() {
340
+ // Возвращаем первый фрагмент для обратной совместимости
341
+ const firstBinding = this.fragments.values().next().value;
342
+ return firstBinding?.fragment || null;
343
+ }
344
+ /**
345
+ * Пересоздать все фрагменты
346
+ */
347
+ rebuildAllFragments() {
348
+ for (const [_id, binding] of this.fragments) {
349
+ binding.fragment = null;
350
+ binding.fragment = this.createFragmentFromHtml(binding.html);
351
+ }
352
+ }
353
+ /**
354
+ * Пересоздать fragment (deprecated)
355
+ * @deprecated Используйте rebuildAllFragments или конкретный фрагмент
356
+ */
357
+ rebuildFragment() {
358
+ this.rebuildAllFragments();
359
+ return this.createFragment();
360
+ }
361
+ /**
362
+ * Очистить все подписки
363
+ */
364
+ dispose() {
365
+ // Отписываемся от всех Observable
366
+ for (const tracking of this.observableTrackings.values()) {
367
+ tracking.unsubscribe();
368
+ }
369
+ this.observableTrackings.clear();
370
+ // Отвязываем события
371
+ this.unbindEvents();
372
+ // Очищаем секции
373
+ for (const section of this.sections) {
374
+ this.unsubscribeSection(section);
375
+ }
376
+ this.sections = [];
377
+ // Очищаем фрагменты
378
+ this.fragments.clear();
379
+ }
380
+ /**
381
+ * Привязать refs к элементам
382
+ * @param root - DOM элемент для поиска refs. Если не указан, создаётся фрагмент из шаблона
383
+ */
384
+ bindRefs() {
385
+ // Если root не передан, создаём фрагмент из шаблона
386
+ const targetRoot = this.createFragment();
387
+ const refElements = targetRoot.querySelectorAll('[data-ref]');
388
+ for (const element of Array.from(refElements)) {
389
+ const refName = element.getAttribute('data-ref');
390
+ if (refName) {
391
+ this.scope.set(refName, element);
392
+ }
393
+ }
394
+ }
395
+ /**
396
+ * Обработать инжекции (@injection[head/tail])
397
+ * Должен вызываться после bindRefs
398
+ */
399
+ processInjections(root) {
400
+ // Find all elements with injection attributes
401
+ const injectElements = root.querySelectorAll('[data-injection-type][data-injection-target]');
402
+ for (const element of Array.from(injectElements)) {
403
+ const type = element.getAttribute('data-injection-type');
404
+ const targetRefName = decodeURIComponent(element.getAttribute('data-injection-target') || '');
405
+ if (!targetRefName)
406
+ continue;
407
+ // Get target element from scope
408
+ const targetElement = this.scope.get(targetRefName);
409
+ if (!targetElement || !(targetElement instanceof Element)) {
410
+ console.warn(`[PageTemplate] Injection target "${targetRefName}" not found in scope or is not an Element`);
411
+ continue;
412
+ }
413
+ // Remove injection attributes
414
+ element.removeAttribute('data-injection-type');
415
+ element.removeAttribute('data-injection-target');
416
+ // Perform injection
417
+ if (type === 'head') {
418
+ targetElement.prepend(element);
419
+ }
420
+ else {
421
+ targetElement.append(element);
422
+ }
423
+ }
424
+ }
425
+ /**
426
+ * Привязать события к элементам из кэшированного фрагмента
427
+ */
428
+ bindEvents() {
429
+ // Используем кэшированный фрагмент (тот же что и для bindRefs)
430
+ const fragment = this.createFragment();
431
+ // Собираем все элементы из фрагмента
432
+ const allElements = fragment.querySelectorAll('*');
433
+ for (const element of Array.from(allElements)) {
434
+ const unbinders = this.bindEventsToElement(element);
435
+ this.eventUnbinders.push(...unbinders);
436
+ }
437
+ }
438
+ /**
439
+ * Привязать события к одному элементу
440
+ */
441
+ bindEventsToElement(element) {
442
+ const unbinders = [];
443
+ const attributes = Array.from(element.attributes);
444
+ for (const attr of attributes) {
445
+ if (attr.name.startsWith('data-event-')) {
446
+ const eventName = attr.name.slice('data-event-'.length);
447
+ const exprCode = decodeURIComponent(attr.value);
448
+ const handler = (event) => {
449
+ const localScope = this.scope.createChild({ event });
450
+ const expr = new Expression(exprCode);
451
+ try {
452
+ expr.execute(localScope);
453
+ }
454
+ catch (error) {
455
+ console.error(`[TemplateInstance] Error executing handler for ${eventName}:`, error);
456
+ }
457
+ };
458
+ element.addEventListener(eventName, handler);
459
+ unbinders.push(() => element.removeEventListener(eventName, handler));
460
+ }
461
+ }
462
+ return unbinders;
463
+ }
464
+ /**
465
+ * Отвязать все события
466
+ */
467
+ unbindEvents() {
468
+ for (const unbind of this.eventUnbinders) {
469
+ unbind();
470
+ }
471
+ this.eventUnbinders = [];
472
+ }
473
+ /**
474
+ * Отвязать refs (установить null)
475
+ */
476
+ unbindRefs() {
477
+ for (const section of this.sections) {
478
+ if (section.rule.name === 'ref' && section.match.data?.expression) {
479
+ const refName = section.match.data.expression;
480
+ if (this.scope.has(refName)) {
481
+ this.scope.set(refName, null);
482
+ }
483
+ }
484
+ }
485
+ }
486
+ }
487
+ //# sourceMappingURL=TemplateInstance.old.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateInstance.old.js","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateInstance.old.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RefRule.d.ts","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/attribute/RefRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAInC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,aAAa;IAC9C,SAAgB,IAAI,SAAS;IAC7B,SAAgB,QAAQ,KAAK;IAEtB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IA6DnC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU;IAwBnD,kBAAkB,IAAI,OAAO;IAIpC;;OAEG;WACW,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIhF;;OAEG;WACW,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAKnE"}
1
+ {"version":3,"file":"RefRule.d.ts","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/attribute/RefRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAInC;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,aAAa;IAC9C,SAAgB,IAAI,SAAS;IAC7B,SAAgB,QAAQ,KAAK;IAEtB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE;IA6DnC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU;IA+BnD,kBAAkB,IAAI,OAAO;IAIpC;;OAEG;WACW,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAIhF;;OAEG;WACW,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAKnE"}
@@ -70,11 +70,17 @@ export default class RefRule extends AttributeRule {
70
70
  console.error(`[RefRule] Expression must return a string (variable name), got: ${typeof refName}`);
71
71
  return { output: '' };
72
72
  }
73
+ // Сразу регистрируем ref в scope с null значением
74
+ // Будет заполнен реальным элементом при bindRefs()
75
+ if (!scope.has(refName)) {
76
+ scope.set(refName, null);
77
+ }
73
78
  // Store placeholder - actual element will be set during DOM processing
74
79
  // For now, return the attribute without the @[ref] syntax
75
80
  return {
76
81
  output: `data-ref="${refName}"`,
77
- observables: []
82
+ observables: [],
83
+ data: { refName } // Сохраняем имя ref для быстрого доступа
78
84
  };
79
85
  }
80
86
  supportsObservable() {
@@ -1 +1 @@
1
- {"version":3,"file":"RefRule.js","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/attribute/RefRule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAEjF;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,aAAa;IAC9B,IAAI,GAAG,KAAK,CAAC;IACb,QAAQ,GAAG,CAAC,CAAC,CAAC,yBAAyB;IAEhD,IAAI,CAAC,QAAgB;QACxB,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,6BAA6B;QAC7B,MAAM,MAAM,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;YACpE,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,MAAM;YAEtB,sBAAsB;YACtB,IAAI,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBACZ,SAAS;YACb,CAAC;YAED,0BAA0B;YAC1B,IAAI,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACvD,GAAG,EAAE,CAAC;YACV,CAAC;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;gBACzC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBACZ,SAAS;YACb,CAAC;YAED,qDAAqD;YACrD,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;YAC7B,GAAG,EAAE,CAAC;YAEN,8CAA8C;YAC9C,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1D,GAAG,EAAE,CAAC;YACV,CAAC;YAED,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;gBACZ,SAAS;YACb,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAE/C,OAAO,CAAC,IAAI,CAAC;gBACT,SAAS;gBACT,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,GAAG,GAAG,CAAC;gBACZ,IAAI,EAAE;oBACF,UAAU,EAAE,OAAO;oBACnB,cAAc,EAAE,SAAS;iBAC5B;aACJ,CAAC,CAAC;YAEH,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAChB,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEM,OAAO,CAAC,KAAgB,EAAE,KAAY;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,UAAoB,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,+CAA+C;QAC/C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACpF,MAAM,IAAI,uBAAuB,CAAC,QAAQ,EACtC,+EAA+E,CAAC,CAAC;QACzF,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,mEAAmE,OAAO,OAAO,EAAE,CAAC,CAAC;YACnG,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC;QAED,uEAAuE;QACvE,0DAA0D;QAC1D,OAAO;YACH,MAAM,EAAE,aAAa,OAAO,GAAG;YAC/B,WAAW,EAAE,EAAE;SAClB,CAAC;IACN,CAAC;IAEM,kBAAkB;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW,CAAC,OAAgB,EAAE,OAAe,EAAE,KAAY;QACrE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,aAAa,CAAC,OAAe,EAAE,KAAY;QACrD,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"RefRule.js","sourceRoot":"","sources":["../../../../../src/foundation/engine/rules/attribute/RefRule.ts"],"names":[],"mappings":"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"}
package/out/index.d.ts CHANGED
@@ -10,7 +10,6 @@ export { default as Triplet, TripletStruct, AccessType } from './foundation/Trip
10
10
  export { ReComponent, RePage } from './foundation/TripletDecorator.js';
11
11
  export { default as Fetcher } from './foundation/Fetcher.js';
12
12
  export { default as HMLEParser } from './foundation/HMLEParser.js';
13
- export * from './foundation/engine/TemplateInstance.js';
14
13
  export * from './foundation/engine/TemplateEngine.js';
15
14
  export { InvalidDynamicRuleUsage, InvalidTemplateEngineSyntaxException } from './foundation/engine/exceptions/TemplateExceptions.js';
16
15
  export { Router } from './foundation/worker/Router.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEnE,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EACH,uBAAuB,EACvB,oCAAoC,EACvC,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAEhF,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEnE,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EACH,uBAAuB,EACvB,oCAAoC,EACvC,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAEhF,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
package/out/index.js CHANGED
@@ -8,7 +8,6 @@ export { default as Triplet, AccessType } from './foundation/Triplet.js';
8
8
  export { ReComponent, RePage } from './foundation/TripletDecorator.js';
9
9
  export { default as Fetcher } from './foundation/Fetcher.js';
10
10
  export { default as HMLEParser } from './foundation/HMLEParser.js';
11
- export * from './foundation/engine/TemplateInstance.js';
12
11
  export * from './foundation/engine/TemplateEngine.js';
13
12
  export { InvalidDynamicRuleUsage, InvalidTemplateEngineSyntaxException } from './foundation/engine/exceptions/TemplateExceptions.js';
14
13
  export { Router } from './foundation/worker/Router.js';
package/out/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAiB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEnE,cAAc,yCAAyC,CAAC;AACxD,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EACH,uBAAuB,EACvB,oCAAoC,EACvC,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAEhF,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAGtC,qEAAqE;AACrE;;WAEQ;AAER,yEAAyE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE3D,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAiB,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAEnE,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EACH,uBAAuB,EACvB,oCAAoC,EACvC,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAEhF,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAGtC,qEAAqE;AACrE;;WAEQ;AAER,yEAAyE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reidelsaltres/pureper",
3
- "version": "0.1.160",
3
+ "version": "0.1.162",
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",
@@ -6,6 +6,7 @@ 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
8
  import HMLEParser from "./HMLEParser.js";
9
+ import TemplateEngine, { TemplateInstance } from './engine/TemplateEngine.js';
9
10
 
10
11
 
11
12
  export enum AccessType {
@@ -154,15 +155,15 @@ export default class Triplet {
154
155
  }
155
156
  };
156
157
  let proto = ori.prototype as any;
157
- const parser = new HMLEParser();
158
+ const engine = new TemplateEngine(proto);
158
159
 
159
- proto._init = async function (): Promise<DocumentFragment> {
160
+ proto._init = async function (): Promise<TemplateInstance> {
160
161
  const markupText = await that.markup;
161
- if (!markupText) return new DocumentFragment();
162
- return parser.parseToDOM(markupText, this);
162
+ if (!markupText) return engine.parse("");
163
+ return engine.parse(markupText);
163
164
  }
164
165
 
165
- proto._postInit = async function (preHtml: DocumentFragment): Promise<DocumentFragment> {
166
+ proto._postInit = async function (preHtml: TemplateInstance): Promise<TemplateInstance> {
166
167
  const dmc: Document | ShadowRoot = this.shadowRoot ?? document;
167
168
  const css = await that.css;
168
169
 
@@ -172,7 +173,6 @@ export default class Triplet {
172
173
  style
173
174
  ];
174
175
 
175
- //parser.hydrate(preHtml, this);
176
176
  return preHtml;
177
177
  }
178
178
 
@@ -1,5 +1,6 @@
1
1
  import IElementHolder from "../api/ElementHolder.js";
2
2
  import UniHtml from "../component_api/UniHtml.js";
3
+ import TemplateInstance from "../engine/TemplateInstance.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: TemplateInstance, 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);