@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
@@ -2,13 +2,13 @@ import Scope from './Scope.js';
2
2
  import Observable from '../api/Observer.js';
3
3
  import Rule, { RuleMatch, RuleResult } from './Rule.js';
4
4
  /**
5
- * TemplateChangeEvent - событие изменения шаблона
5
+ * FragmentChangeEvent - событие изменения конкретного фрагмента
6
6
  */
7
- export interface TemplateChangeEvent {
8
- oldValue: any;
9
- newValue: any;
10
- oldTemplate: string;
11
- newTemplate: string;
7
+ export interface FragmentChangeEvent {
8
+ fragmentId: string;
9
+ oldNodes: Node[];
10
+ newNodes: Node[];
11
+ affectedObservables: Observable<any>[];
12
12
  }
13
13
  /**
14
14
  * TemplateSection - секция шаблона, связанная с Rule
@@ -29,93 +29,213 @@ export interface TemplateSection {
29
29
  observable: Observable<any>;
30
30
  unsubscribe: () => void;
31
31
  }>;
32
+ /** ID фрагмента, к которому принадлежит секция */
33
+ fragmentId?: string;
32
34
  }
33
35
  /**
34
- * PageTemplate - динамический шаблон страницы.
35
- * Хранит обработанные Rule и поддерживает реактивное обновление.
36
+ * FragmentBinding - привязка фрагмента
37
+ */
38
+ export interface FragmentBinding {
39
+ /** Уникальный ID фрагмента */
40
+ id: string;
41
+ /** Текущий HTML контент фрагмента (с placeholder-ами для дочерних) */
42
+ html: string;
43
+ /** Исходный шаблон (до обработки) */
44
+ sourceTemplate: string;
45
+ /** Секции, входящие в этот фрагмент */
46
+ sections: TemplateSection[];
47
+ /** Observable, от которых зависит фрагмент */
48
+ observables: Set<Observable<any>>;
49
+ /** ID родительского фрагмента (null для корневого) */
50
+ parentId: string | null;
51
+ /** ID дочерних фрагментов (placeholder-ы) */
52
+ childIds: string[];
53
+ }
54
+ /**
55
+ * ContainerBinding - привязка к DOM-контейнеру
56
+ */
57
+ export interface ContainerBinding {
58
+ /** DOM-контейнер */
59
+ container: Element;
60
+ /** Маркеры фрагментов в этом контейнере: fragmentId -> { start, end, nodes } */
61
+ markers: Map<string, {
62
+ startMarker: Comment;
63
+ endMarker: Comment;
64
+ nodes: Node[];
65
+ }>;
66
+ /** Функции отписки событий для этого контейнера */
67
+ eventUnbinders: Array<() => void>;
68
+ }
69
+ /**
70
+ * TemplateInstance - динамический шаблон страницы.
36
71
  *
37
- * При изменении Observable все зависимые секции обновляются
38
- * одновременно в одном событии onTemplateChange.
72
+ * Поддерживает:
73
+ * - Множество мелких фрагментов, каждый обновляется независимо
74
+ * - Множество container bindings
75
+ * - Автоматическое обновление DOM при изменении Observable
76
+ * - bind/unbind для refs и events
39
77
  */
40
78
  export default class TemplateInstance {
41
- private template;
42
79
  private scope;
43
80
  private sections;
44
- private fragment;
45
- /** Observers for template changes */
46
- private changeObserver;
81
+ /** Все фрагменты шаблона */
82
+ private fragments;
83
+ /** ID корневого фрагмента */
84
+ private rootFragmentId;
85
+ /** Счётчик для генерации ID фрагментов */
86
+ private fragmentIdCounter;
87
+ /** Observers for fragment changes */
88
+ private fragmentChangeObserver;
47
89
  /** Группировка секций по Observable */
48
90
  private observableTrackings;
49
- constructor(template: string, scope: Scope);
91
+ /** Привязки к контейнерам */
92
+ private containerBindings;
93
+ constructor(scope: Scope);
50
94
  /**
51
- * Получить текущий шаблон
95
+ * Получить Scope
52
96
  */
53
- getTemplate(): string;
97
+ getScope(): Scope;
54
98
  /**
55
- * Установить новый шаблон (вызывает событие изменения)
99
+ * Получить все секции
56
100
  */
57
- setTemplate(newTemplate: string): void;
101
+ getSections(): TemplateSection[];
58
102
  /**
59
- * Получить Scope
103
+ * Получить все фрагменты
60
104
  */
61
- getScope(): Scope;
105
+ getAllFragments(): Map<string, FragmentBinding>;
62
106
  /**
63
- * Подписаться на изменения шаблона
107
+ * Получить фрагмент по ID
64
108
  */
65
- onTemplateChange(listener: (oldValue: any, newValue: any, oldTemplate: string, newTemplate: string) => void): () => void;
109
+ getFragmentBinding(id: string): FragmentBinding | undefined;
110
+ /**
111
+ * Получить финальный HTML (собранный из всех фрагментов)
112
+ */
113
+ getTemplate(): string;
114
+ /**
115
+ * Создать новый фрагмент и вернуть его ID
116
+ */
117
+ createFragment(html: string, sourceTemplate: string, sections?: TemplateSection[], parentId?: string | null): string;
118
+ /**
119
+ * Установить корневой фрагмент
120
+ */
121
+ setRootFragment(id: string): void;
66
122
  /**
67
123
  * Добавить секцию шаблона
68
124
  */
69
125
  addSection(section: TemplateSection): void;
70
126
  /**
71
- * Получить все секции
127
+ * Вставить добавленный фрагмент во все привязанные контейнеры.
128
+ * Вызывается после appendTemplate.
72
129
  */
73
- getSections(): TemplateSection[];
130
+ insertAppendedFragment(fragmentId: string): void;
74
131
  /**
75
- * Подписаться на Observable и автоматически пересоздавать секцию.
76
- * Все секции, зависящие от одного Observable, обновляются разом.
132
+ * Привязать события только для нового фрагмента
133
+ */
134
+ private bindEventsForNewFragment;
135
+ /**
136
+ * Подписаться на изменения фрагментов
137
+ */
138
+ onFragmentChange(listener: (event: FragmentChangeEvent) => void): () => void;
139
+ /**
140
+ * Подписаться на Observable и автоматически пересоздавать секцию
77
141
  */
78
142
  trackObservable(observable: Observable<any>, section: TemplateSection, rebuild: (section: TemplateSection) => RuleResult): () => void;
79
143
  /**
80
- * Перестроить все секции, зависящие от Observable, за один раз
144
+ * Привязать к контейнеру.
145
+ * Вставляет DOM, вызывает bindRefs, processInjections и bindEvents.
81
146
  */
82
- private rebuildAllSectionsForObservable;
147
+ bind(container: Element): void;
83
148
  /**
84
- * Отписаться от вложенных Observable в секции (но не от главного)
149
+ * Отвязать от контейнера.
150
+ * Отвязывает refs и events, но оставляет DOM.
85
151
  */
86
- private unsubscribeSectionNested;
152
+ unbind(container: Element): void;
87
153
  /**
88
- * Отписаться от всех Observable в секции
154
+ * Привязать refs к элементам.
155
+ * Если есть контейнеры - привязывает для них.
156
+ * Если нет - создаёт временный DocumentFragment и привязывает refs из него.
89
157
  */
90
- private unsubscribeSection;
158
+ bindRefs(): void;
91
159
  /**
92
- * Создать DocumentFragment из текущего шаблона
160
+ * Привязать refs из DocumentFragment (без контейнера)
93
161
  */
94
- createFragment(): DocumentFragment;
162
+ private bindRefsForFragment;
95
163
  /**
96
- * Получить кэшированный DocumentFragment
164
+ * Отвязать refs (для всех контейнеров)
97
165
  */
98
- getFragment(): DocumentFragment | null;
166
+ unbindRefs(): void;
167
+ /**
168
+ * Привязать события (для всех контейнеров)
169
+ */
170
+ bindEvents(): void;
99
171
  /**
100
- * Пересоздать fragment
172
+ * Отвязать события (для всех контейнеров)
101
173
  */
102
- rebuildFragment(): DocumentFragment;
174
+ unbindEvents(): void;
103
175
  /**
104
- * Очистить все подписки
176
+ * Очистить все подписки и bindings
105
177
  */
106
178
  dispose(): void;
107
179
  /**
108
- * Привязать refs после вставки в DOM
180
+ * Вставить все фрагменты в контейнер с маркерами
109
181
  */
110
- bindRefs(root: Element | DocumentFragment): void;
182
+ private insertFragmentsIntoContainer;
111
183
  /**
112
- * Обработать инжекции (@injection[head/tail])
113
- * Должен вызываться после bindRefs
184
+ * Рекурсивно вставить фрагмент и его дочерние
114
185
  */
115
- processInjections(root: Element | DocumentFragment): void;
186
+ private insertFragmentRecursive;
116
187
  /**
117
- * Отвязать refs (установить null)
188
+ * Создать ноды из HTML строки
118
189
  */
119
- unbindRefs(): void;
190
+ private createNodesFromHtml;
191
+ /**
192
+ * Собрать HTML из фрагмента (рекурсивно заменяя placeholder-ы)
193
+ */
194
+ private buildHtmlFromFragment;
195
+ /**
196
+ * Привязать refs для конкретного контейнера
197
+ */
198
+ private bindRefsForContainer;
199
+ /**
200
+ * Обработать инжекции для конкретного контейнера.
201
+ * Находит элементы с data-injection-* атрибутами и перемещает их в целевые элементы.
202
+ */
203
+ private processInjectionsForContainer;
204
+ /**
205
+ * Отвязать refs для конкретного контейнера
206
+ */
207
+ private unbindRefsForContainer;
208
+ /**
209
+ * Привязать события для конкретного контейнера
210
+ */
211
+ private bindEventsForContainer;
212
+ /**
213
+ * Привязать события к одному элементу
214
+ */
215
+ private bindEventsToElement;
216
+ /**
217
+ * Перестроить фрагменты при изменении Observable
218
+ */
219
+ private rebuildFragmentsForObservable;
220
+ /**
221
+ * Обновить фрагмент во всех контейнерах
222
+ */
223
+ private updateFragmentInAllContainers;
224
+ /**
225
+ * Отвязать события от нод
226
+ */
227
+ private unbindEventsFromNodes;
228
+ /**
229
+ * Отписаться от вложенных Observable в секции
230
+ */
231
+ private unsubscribeSectionNested;
232
+ /**
233
+ * Отписаться от всех Observable в секции
234
+ */
235
+ private unsubscribeSection;
236
+ /**
237
+ * @deprecated Используйте bind(container)
238
+ */
239
+ createDOMFragment(): DocumentFragment;
120
240
  }
121
241
  //# sourceMappingURL=TemplateInstance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateInstance.d.ts","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateInstance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,UAAgC,MAAM,oBAAoB,CAAC;AAClE,OAAO,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,qCAAqC;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,yBAAyB;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,wBAAwB;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,2CAA2C;IAC3C,aAAa,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;CAClF;AAcD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,QAAQ,CAAiC;IAEjD,qCAAqC;IACrC,OAAO,CAAC,cAAc,CAA+C;IAErE,uCAAuC;IACvC,OAAO,CAAC,mBAAmB,CAAkD;gBAEjE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK;IAK1C;;OAEG;IACI,WAAW,IAAI,MAAM;IAI5B;;OAEG;IACI,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAU7C;;OAEG;IACI,QAAQ,IAAI,KAAK;IAIxB;;OAEG;IACI,gBAAgB,CACnB,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,GAC3F,MAAM,IAAI;IAQb;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIjD;;OAEG;IACI,WAAW,IAAI,eAAe,EAAE;IAIvC;;;OAGG;IACI,eAAe,CAClB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,UAAU,GAClD,MAAM,IAAI;IAsCb;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA0CvC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAahC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACI,cAAc,IAAI,gBAAgB;IAYzC;;OAEG;IACI,WAAW,IAAI,gBAAgB,GAAG,IAAI;IAI7C;;OAEG;IACI,eAAe,IAAI,gBAAgB;IAK1C;;OAEG;IACI,OAAO,IAAI,IAAI;IAetB;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI;IAWvD;;;OAGG;IACI,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI;IA+BhE;;OAEG;IACI,UAAU,IAAI,IAAI;CAU5B"}
1
+ {"version":3,"file":"TemplateInstance.d.ts","sourceRoot":"","sources":["../../../src/foundation/engine/TemplateInstance.ts"],"names":[],"mappings":"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"}