@reidelsaltres/pureper 0.1.157 → 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 (107) 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/api/Observer.d.ts +30 -0
  5. package/out/foundation/api/Observer.d.ts.map +1 -1
  6. package/out/foundation/api/Observer.js +48 -0
  7. package/out/foundation/api/Observer.js.map +1 -1
  8. package/out/foundation/component_api/Component.d.ts +2 -2
  9. package/out/foundation/component_api/Component.d.ts.map +1 -1
  10. package/out/foundation/component_api/Component.js.map +1 -1
  11. package/out/foundation/component_api/UniHtml.d.ts +4 -10
  12. package/out/foundation/component_api/UniHtml.d.ts.map +1 -1
  13. package/out/foundation/component_api/UniHtml.js +7 -15
  14. package/out/foundation/component_api/UniHtml.js.map +1 -1
  15. package/out/foundation/engine/BalancedParser.d.ts +58 -0
  16. package/out/foundation/engine/BalancedParser.d.ts.map +1 -0
  17. package/out/foundation/engine/BalancedParser.js +301 -0
  18. package/out/foundation/engine/BalancedParser.js.map +1 -0
  19. package/out/foundation/engine/EscapeHandler.d.ts +27 -0
  20. package/out/foundation/engine/EscapeHandler.d.ts.map +1 -0
  21. package/out/foundation/engine/EscapeHandler.js +47 -0
  22. package/out/foundation/engine/EscapeHandler.js.map +1 -0
  23. package/out/foundation/engine/Expression.d.ts +83 -0
  24. package/out/foundation/engine/Expression.d.ts.map +1 -0
  25. package/out/foundation/engine/Expression.js +256 -0
  26. package/out/foundation/engine/Expression.js.map +1 -0
  27. package/out/foundation/engine/Rule.d.ts +85 -0
  28. package/out/foundation/engine/Rule.d.ts.map +1 -0
  29. package/out/foundation/engine/Rule.js +69 -0
  30. package/out/foundation/engine/Rule.js.map +1 -0
  31. package/out/foundation/engine/Scope.d.ts +61 -0
  32. package/out/foundation/engine/Scope.d.ts.map +1 -0
  33. package/out/foundation/engine/Scope.js +156 -0
  34. package/out/foundation/engine/Scope.js.map +1 -0
  35. package/out/foundation/engine/TemplateEngine.d.ts +96 -0
  36. package/out/foundation/engine/TemplateEngine.d.ts.map +1 -0
  37. package/out/foundation/engine/TemplateEngine.js +235 -0
  38. package/out/foundation/engine/TemplateEngine.js.map +1 -0
  39. package/out/foundation/engine/TemplateInstance.d.ts +241 -0
  40. package/out/foundation/engine/TemplateInstance.d.ts.map +1 -0
  41. package/out/foundation/engine/TemplateInstance.js +637 -0
  42. package/out/foundation/engine/TemplateInstance.js.map +1 -0
  43. package/out/foundation/engine/TemplateInstance.old.d.ts +219 -0
  44. package/out/foundation/engine/TemplateInstance.old.d.ts.map +1 -0
  45. package/out/foundation/engine/TemplateInstance.old.js +487 -0
  46. package/out/foundation/engine/TemplateInstance.old.js.map +1 -0
  47. package/out/foundation/engine/exceptions/TemplateExceptions.d.ts +21 -0
  48. package/out/foundation/engine/exceptions/TemplateExceptions.d.ts.map +1 -0
  49. package/out/foundation/engine/exceptions/TemplateExceptions.js +26 -0
  50. package/out/foundation/engine/exceptions/TemplateExceptions.js.map +1 -0
  51. package/out/foundation/engine/index.d.ts +18 -0
  52. package/out/foundation/engine/index.d.ts.map +1 -0
  53. package/out/foundation/engine/index.js +19 -0
  54. package/out/foundation/engine/index.js.map +1 -0
  55. package/out/foundation/engine/rules/attribute/EventRule.d.ts +22 -0
  56. package/out/foundation/engine/rules/attribute/EventRule.d.ts.map +1 -0
  57. package/out/foundation/engine/rules/attribute/EventRule.js +129 -0
  58. package/out/foundation/engine/rules/attribute/EventRule.js.map +1 -0
  59. package/out/foundation/engine/rules/attribute/InjectionRule.d.ts +20 -0
  60. package/out/foundation/engine/rules/attribute/InjectionRule.d.ts.map +1 -0
  61. package/out/foundation/engine/rules/attribute/InjectionRule.js +108 -0
  62. package/out/foundation/engine/rules/attribute/InjectionRule.js.map +1 -0
  63. package/out/foundation/engine/rules/attribute/RefRule.d.ts +23 -0
  64. package/out/foundation/engine/rules/attribute/RefRule.d.ts.map +1 -0
  65. package/out/foundation/engine/rules/attribute/RefRule.js +104 -0
  66. package/out/foundation/engine/rules/attribute/RefRule.js.map +1 -0
  67. package/out/foundation/engine/rules/syntax/ExpressionRule.d.ts +19 -0
  68. package/out/foundation/engine/rules/syntax/ExpressionRule.d.ts.map +1 -0
  69. package/out/foundation/engine/rules/syntax/ExpressionRule.js +82 -0
  70. package/out/foundation/engine/rules/syntax/ExpressionRule.js.map +1 -0
  71. package/out/foundation/engine/rules/syntax/ForRule.d.ts +19 -0
  72. package/out/foundation/engine/rules/syntax/ForRule.d.ts.map +1 -0
  73. package/out/foundation/engine/rules/syntax/ForRule.js +226 -0
  74. package/out/foundation/engine/rules/syntax/ForRule.js.map +1 -0
  75. package/out/foundation/engine/rules/syntax/IfRule.d.ts +17 -0
  76. package/out/foundation/engine/rules/syntax/IfRule.d.ts.map +1 -0
  77. package/out/foundation/engine/rules/syntax/IfRule.js +220 -0
  78. package/out/foundation/engine/rules/syntax/IfRule.js.map +1 -0
  79. package/out/foundation/worker/Router.d.ts.map +1 -1
  80. package/out/foundation/worker/Router.js.map +1 -1
  81. package/out/index.d.ts +2 -0
  82. package/out/index.d.ts.map +1 -1
  83. package/out/index.js +2 -0
  84. package/out/index.js.map +1 -1
  85. package/package.json +1 -1
  86. package/src/foundation/Triplet.ts +6 -6
  87. package/src/foundation/api/Observer.ts +60 -0
  88. package/src/foundation/component_api/Component.ts +2 -1
  89. package/src/foundation/component_api/UniHtml.ts +12 -22
  90. package/src/foundation/engine/BalancedParser.ts +353 -0
  91. package/src/foundation/engine/EscapeHandler.ts +54 -0
  92. package/src/foundation/engine/Expression.ts +285 -0
  93. package/src/foundation/engine/Rule.ts +138 -0
  94. package/src/foundation/engine/Scope.ts +176 -0
  95. package/src/foundation/engine/TemplateEngine.ts +318 -0
  96. package/src/foundation/engine/TemplateInstance.md +110 -0
  97. package/src/foundation/engine/TemplateInstance.old.ts +673 -0
  98. package/src/foundation/engine/TemplateInstance.ts +843 -0
  99. package/src/foundation/engine/exceptions/TemplateExceptions.ts +27 -0
  100. package/src/foundation/engine/rules/attribute/EventRule.ts +171 -0
  101. package/src/foundation/engine/rules/attribute/InjectionRule.ts +140 -0
  102. package/src/foundation/engine/rules/attribute/RefRule.ts +126 -0
  103. package/src/foundation/engine/rules/syntax/ExpressionRule.ts +102 -0
  104. package/src/foundation/engine/rules/syntax/ForRule.ts +267 -0
  105. package/src/foundation/engine/rules/syntax/IfRule.ts +261 -0
  106. package/src/foundation/worker/Router.ts +1 -1
  107. package/src/index.ts +8 -0
@@ -0,0 +1,219 @@
1
+ import Scope from './Scope.js';
2
+ import Observable from '../api/Observer.js';
3
+ import Rule, { RuleMatch, RuleResult } from './Rule.js';
4
+ /**
5
+ * TemplateChangeEvent - событие изменения шаблона
6
+ */
7
+ export interface TemplateChangeEvent {
8
+ oldValue: any;
9
+ newValue: any;
10
+ oldTemplate: string;
11
+ newTemplate: string;
12
+ }
13
+ /**
14
+ * FragmentChangeEvent - событие изменения конкретного фрагмента
15
+ */
16
+ export interface FragmentChangeEvent {
17
+ fragmentId: string;
18
+ oldFragment: DocumentFragment | null;
19
+ newFragment: DocumentFragment;
20
+ affectedObservables: Observable<any>[];
21
+ }
22
+ /**
23
+ * TemplateSection - секция шаблона, связанная с Rule
24
+ */
25
+ export interface TemplateSection {
26
+ /** Rule который создал эту секцию */
27
+ rule: Rule;
28
+ /** Оригинальный match */
29
+ match: RuleMatch;
30
+ /** Текущий результат */
31
+ result: RuleResult;
32
+ /** Исходный шаблон секции (для пересоздания) */
33
+ sourceTemplate: string;
34
+ /** Дочерние секции */
35
+ children: TemplateSection[];
36
+ /** Observable подписки для отслеживания */
37
+ subscriptions: Array<{
38
+ observable: Observable<any>;
39
+ unsubscribe: () => void;
40
+ }>;
41
+ /** ID фрагмента, к которому принадлежит секция */
42
+ fragmentId?: string;
43
+ }
44
+ /**
45
+ * FragmentBinding - привязка фрагмента к DOM
46
+ */
47
+ export interface FragmentBinding {
48
+ /** Уникальный ID фрагмента */
49
+ id: string;
50
+ /** Текущий HTML контент фрагмента */
51
+ html: string;
52
+ /** Кэшированный DocumentFragment */
53
+ fragment: DocumentFragment | null;
54
+ /** Секции, входящие в этот фрагмент */
55
+ sections: TemplateSection[];
56
+ /** Observable, от которых зависит фрагмент */
57
+ observables: Set<Observable<any>>;
58
+ /** Начальный маркер в DOM (комментарий) */
59
+ startMarker?: Comment;
60
+ /** Конечный маркер в DOM (комментарий) */
61
+ endMarker?: Comment;
62
+ /** Текущие DOM ноды между маркерами */
63
+ nodes: Node[];
64
+ }
65
+ /**
66
+ * PageTemplate - динамический шаблон страницы.
67
+ * Хранит обработанные Rule и поддерживает реактивное обновление.
68
+ *
69
+ * При изменении Observable обновляются только те фрагменты,
70
+ * которые зависят от изменённого Observable.
71
+ */
72
+ export default class TemplateInstance {
73
+ private template;
74
+ private scope;
75
+ private sections;
76
+ /** Фрагменты шаблона (каждый обновляется независимо) */
77
+ private fragments;
78
+ /** Счётчик для генерации ID фрагментов */
79
+ private fragmentIdCounter;
80
+ /** Observers for template changes */
81
+ private changeObserver;
82
+ /** Observers for fragment changes */
83
+ private fragmentChangeObserver;
84
+ /** Группировка секций по Observable */
85
+ private observableTrackings;
86
+ /** Функции отписки от событий */
87
+ private eventUnbinders;
88
+ /** Кэшированный главный фрагмент */
89
+ private cachedFragment;
90
+ constructor(template: string, scope: Scope);
91
+ /**
92
+ * Получить текущий шаблон
93
+ */
94
+ getTemplate(): string;
95
+ /**
96
+ * Установить новый шаблон (вызывает событие изменения)
97
+ */
98
+ setTemplate(newTemplate: string): void;
99
+ /**
100
+ * Получить Scope
101
+ */
102
+ getScope(): Scope;
103
+ /**
104
+ * Подписаться на изменения шаблона
105
+ */
106
+ onTemplateChange(listener: (oldValue: any, newValue: any, oldTemplate: string, newTemplate: string) => void): () => void;
107
+ /**
108
+ * Подписаться на изменения фрагментов
109
+ */
110
+ onFragmentChange(listener: (event: FragmentChangeEvent) => void): () => void;
111
+ /**
112
+ * Добавить секцию шаблона
113
+ */
114
+ addSection(section: TemplateSection): void;
115
+ /**
116
+ * Получить все секции
117
+ */
118
+ getSections(): TemplateSection[];
119
+ /**
120
+ * Создать новый фрагмент и вернуть его ID
121
+ */
122
+ createFragmentBinding(html: string, sections?: TemplateSection[]): string;
123
+ /**
124
+ * Получить привязку фрагмента по ID
125
+ */
126
+ getFragmentBinding(id: string): FragmentBinding | undefined;
127
+ /**
128
+ * Получить все фрагменты
129
+ */
130
+ getAllFragments(): Map<string, FragmentBinding>;
131
+ /**
132
+ * Подписаться на Observable и автоматически пересоздавать секцию.
133
+ * Обновляются только фрагменты, зависящие от изменённого Observable.
134
+ */
135
+ trackObservable(observable: Observable<any>, section: TemplateSection, rebuild: (section: TemplateSection) => RuleResult): () => void;
136
+ /**
137
+ * Перестроить только те фрагменты, которые зависят от Observable
138
+ */
139
+ private rebuildFragmentsForObservable;
140
+ /**
141
+ * Заменить фрагмент в DOM между маркерами
142
+ */
143
+ private replaceFragmentInDOM;
144
+ /**
145
+ * Создать DocumentFragment из HTML строки
146
+ */
147
+ private createFragmentFromHtml;
148
+ /**
149
+ * Отписаться от вложенных Observable в секции (но не от главного)
150
+ */
151
+ private unsubscribeSectionNested;
152
+ /**
153
+ * Отписаться от всех Observable в секции
154
+ */
155
+ private unsubscribeSection;
156
+ /**
157
+ * Создать DocumentFragment из текущего шаблона (весь шаблон).
158
+ * Кэширует фрагмент - повторные вызовы возвращают тот же фрагмент.
159
+ * После appendChild фрагмент будет пустым, но ссылки на элементы остаются валидными.
160
+ */
161
+ createFragment(): DocumentFragment;
162
+ /**
163
+ * Инвалидировать кэш фрагмента (для пересоздания)
164
+ */
165
+ invalidateFragment(): void;
166
+ /**
167
+ * Создать и вставить все фрагменты в контейнер с маркерами
168
+ */
169
+ createAllFragmentsWithMarkers(container: Element): void;
170
+ /**
171
+ * Получить DocumentFragment для конкретного фрагмента
172
+ */
173
+ getFragmentById(id: string): DocumentFragment | null;
174
+ /**
175
+ * Получить кэшированный DocumentFragment (deprecated)
176
+ * @deprecated Используйте getFragmentById
177
+ */
178
+ getFragment(): DocumentFragment | null;
179
+ /**
180
+ * Пересоздать все фрагменты
181
+ */
182
+ rebuildAllFragments(): void;
183
+ /**
184
+ * Пересоздать fragment (deprecated)
185
+ * @deprecated Используйте rebuildAllFragments или конкретный фрагмент
186
+ */
187
+ rebuildFragment(): DocumentFragment;
188
+ /**
189
+ * Очистить все подписки
190
+ */
191
+ dispose(): void;
192
+ /**
193
+ * Привязать refs к элементам
194
+ * @param root - DOM элемент для поиска refs. Если не указан, создаётся фрагмент из шаблона
195
+ */
196
+ bindRefs(): void;
197
+ /**
198
+ * Обработать инжекции (@injection[head/tail])
199
+ * Должен вызываться после bindRefs
200
+ */
201
+ processInjections(root: Element | DocumentFragment): void;
202
+ /**
203
+ * Привязать события к элементам из кэшированного фрагмента
204
+ */
205
+ bindEvents(): void;
206
+ /**
207
+ * Привязать события к одному элементу
208
+ */
209
+ private bindEventsToElement;
210
+ /**
211
+ * Отвязать все события
212
+ */
213
+ unbindEvents(): void;
214
+ /**
215
+ * Отвязать refs (установить null)
216
+ */
217
+ unbindRefs(): void;
218
+ }
219
+ //# sourceMappingURL=TemplateInstance.old.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplateInstance.old.d.ts","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateInstance.old.ts"],"names":[],"mappings":"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"}