taggedjs 2.1.1 → 2.3.25

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 (254) hide show
  1. package/index.js +1 -1
  2. package/js/Clones.type.d.ts +1 -0
  3. package/js/Clones.type.js +2 -0
  4. package/js/Clones.type.js.map +1 -0
  5. package/js/Props.d.ts +1 -0
  6. package/js/Props.js +2 -0
  7. package/js/Props.js.map +1 -0
  8. package/js/Subject.d.ts +17 -0
  9. package/js/Subject.js +43 -0
  10. package/js/Subject.js.map +1 -0
  11. package/js/Tag.class.d.ts +69 -0
  12. package/js/Tag.class.js +247 -0
  13. package/js/Tag.class.js.map +1 -0
  14. package/js/Tag.utils.d.ts +12 -0
  15. package/js/Tag.utils.js +31 -0
  16. package/js/Tag.utils.js.map +1 -0
  17. package/js/ValueSubject.d.ts +6 -0
  18. package/js/ValueSubject.js +15 -0
  19. package/js/ValueSubject.js.map +1 -0
  20. package/js/bindSubjectCallback.function.d.ts +5 -0
  21. package/js/bindSubjectCallback.function.js +19 -0
  22. package/js/bindSubjectCallback.function.js.map +1 -0
  23. package/js/deepFunctions.d.ts +2 -0
  24. package/js/deepFunctions.js +76 -0
  25. package/js/deepFunctions.js.map +1 -0
  26. package/js/elementDestroyCheck.function.d.ts +3 -0
  27. package/js/elementDestroyCheck.function.js +17 -0
  28. package/js/elementDestroyCheck.function.js.map +1 -0
  29. package/js/elementInitCheck.d.ts +2 -0
  30. package/js/elementInitCheck.js +18 -0
  31. package/js/elementInitCheck.js.map +1 -0
  32. package/js/gateway/gateway.web.component.d.ts +11 -0
  33. package/js/gateway/gateway.web.component.js +20 -0
  34. package/js/gateway/gateway.web.component.js.map +1 -0
  35. package/js/gateway/index.d.ts +3 -0
  36. package/js/gateway/index.js +3 -0
  37. package/js/gateway/index.js.map +1 -0
  38. package/js/gateway/loadTagGateway.function.d.ts +2 -0
  39. package/js/gateway/loadTagGateway.function.js +18 -0
  40. package/js/gateway/loadTagGateway.function.js.map +1 -0
  41. package/js/gateway/tagGateway.function.d.ts +31 -0
  42. package/js/gateway/tagGateway.function.js +187 -0
  43. package/js/gateway/tagGateway.function.js.map +1 -0
  44. package/js/getCallback.d.ts +3 -0
  45. package/js/getCallback.js +50 -0
  46. package/js/getCallback.js.map +1 -0
  47. package/js/getTagSupport.d.ts +21 -0
  48. package/js/getTagSupport.js +109 -0
  49. package/js/getTagSupport.js.map +1 -0
  50. package/js/html.d.ts +2 -0
  51. package/js/html.js +5 -0
  52. package/js/html.js.map +1 -0
  53. package/js/index.d.ts +19 -0
  54. package/js/index.js +24 -0
  55. package/js/index.js.map +1 -0
  56. package/js/inputAttribute.d.ts +1 -0
  57. package/js/inputAttribute.js +19 -0
  58. package/js/inputAttribute.js.map +1 -0
  59. package/js/interpolateAttributes.d.ts +4 -0
  60. package/js/interpolateAttributes.js +135 -0
  61. package/js/interpolateAttributes.js.map +1 -0
  62. package/js/interpolateContentTemplates.d.ts +6 -0
  63. package/js/interpolateContentTemplates.js +54 -0
  64. package/js/interpolateContentTemplates.js.map +1 -0
  65. package/js/interpolateElement.d.ts +9 -0
  66. package/js/interpolateElement.js +39 -0
  67. package/js/interpolateElement.js.map +1 -0
  68. package/js/interpolateTemplate.d.ts +17 -0
  69. package/js/interpolateTemplate.js +64 -0
  70. package/js/interpolateTemplate.js.map +1 -0
  71. package/js/interpolations.d.ts +7 -0
  72. package/js/interpolations.js +18 -0
  73. package/js/interpolations.js.map +1 -0
  74. package/js/isInstance.d.ts +6 -0
  75. package/js/isInstance.js +10 -0
  76. package/js/isInstance.js.map +1 -0
  77. package/js/js/Clones.type.d.ts +1 -0
  78. package/js/js/Clones.type.js +2 -0
  79. package/js/js/Clones.type.js.map +1 -0
  80. package/js/js/Props.d.ts +1 -0
  81. package/js/js/Props.js +2 -0
  82. package/js/js/Props.js.map +1 -0
  83. package/js/js/Subject.d.ts +17 -0
  84. package/js/js/Subject.js +43 -0
  85. package/js/js/Subject.js.map +1 -0
  86. package/js/js/Tag.class.d.ts +67 -0
  87. package/js/js/Tag.class.js +241 -0
  88. package/js/js/Tag.class.js.map +1 -0
  89. package/js/js/Tag.utils.d.ts +12 -0
  90. package/js/js/Tag.utils.js +31 -0
  91. package/js/js/Tag.utils.js.map +1 -0
  92. package/js/js/ValueSubject.d.ts +6 -0
  93. package/js/js/ValueSubject.js +15 -0
  94. package/js/js/ValueSubject.js.map +1 -0
  95. package/js/js/bindSubjectCallback.function.d.ts +5 -0
  96. package/js/js/bindSubjectCallback.function.js +19 -0
  97. package/js/js/bindSubjectCallback.function.js.map +1 -0
  98. package/js/js/deepFunctions.d.ts +2 -0
  99. package/js/js/deepFunctions.js +76 -0
  100. package/js/js/deepFunctions.js.map +1 -0
  101. package/js/js/elementDestroyCheck.function.d.ts +3 -0
  102. package/js/js/elementDestroyCheck.function.js +17 -0
  103. package/js/js/elementDestroyCheck.function.js.map +1 -0
  104. package/js/js/elementInitCheck.d.ts +2 -0
  105. package/js/js/elementInitCheck.js +18 -0
  106. package/js/js/elementInitCheck.js.map +1 -0
  107. package/js/js/getCallback.d.ts +3 -0
  108. package/js/js/getCallback.js +50 -0
  109. package/js/js/getCallback.js.map +1 -0
  110. package/js/js/getTagSupport.d.ts +22 -0
  111. package/js/js/getTagSupport.js +116 -0
  112. package/js/js/getTagSupport.js.map +1 -0
  113. package/js/js/html.d.ts +2 -0
  114. package/js/js/html.js +5 -0
  115. package/js/js/html.js.map +1 -0
  116. package/js/js/index.d.ts +19 -0
  117. package/js/js/index.js +24 -0
  118. package/js/js/index.js.map +1 -0
  119. package/js/js/inputAttribute.d.ts +1 -0
  120. package/js/js/inputAttribute.js +19 -0
  121. package/js/js/inputAttribute.js.map +1 -0
  122. package/js/js/interpolateAttributes.d.ts +4 -0
  123. package/js/js/interpolateAttributes.js +127 -0
  124. package/js/js/interpolateAttributes.js.map +1 -0
  125. package/js/js/interpolateContentTemplates.d.ts +5 -0
  126. package/js/js/interpolateContentTemplates.js +57 -0
  127. package/js/js/interpolateContentTemplates.js.map +1 -0
  128. package/js/js/interpolateElement.d.ts +9 -0
  129. package/js/js/interpolateElement.js +32 -0
  130. package/js/js/interpolateElement.js.map +1 -0
  131. package/js/js/interpolateTemplate.d.ts +17 -0
  132. package/js/js/interpolateTemplate.js +64 -0
  133. package/js/js/interpolateTemplate.js.map +1 -0
  134. package/js/js/interpolations.d.ts +8 -0
  135. package/js/js/interpolations.js +17 -0
  136. package/js/js/interpolations.js.map +1 -0
  137. package/js/js/isInstance.d.ts +6 -0
  138. package/js/js/isInstance.js +10 -0
  139. package/js/js/isInstance.js.map +1 -0
  140. package/js/js/onDestroy.d.ts +2 -0
  141. package/js/js/onDestroy.js +20 -0
  142. package/js/js/onDestroy.js.map +1 -0
  143. package/js/js/onInit.d.ts +2 -0
  144. package/js/js/onInit.js +19 -0
  145. package/js/js/onInit.js.map +1 -0
  146. package/js/js/processSubjectComponent.function.d.ts +8 -0
  147. package/js/js/processSubjectComponent.function.js +53 -0
  148. package/js/js/processSubjectComponent.function.js.map +1 -0
  149. package/js/js/processSubjectValue.function.d.ts +16 -0
  150. package/js/js/processSubjectValue.function.js +122 -0
  151. package/js/js/processSubjectValue.function.js.map +1 -0
  152. package/js/js/processTagArray.d.ts +9 -0
  153. package/js/js/processTagArray.js +60 -0
  154. package/js/js/processTagArray.js.map +1 -0
  155. package/js/js/processTagResult.function.d.ts +10 -0
  156. package/js/js/processTagResult.function.js +42 -0
  157. package/js/js/processTagResult.function.js.map +1 -0
  158. package/js/js/providers.d.ts +17 -0
  159. package/js/js/providers.js +86 -0
  160. package/js/js/providers.js.map +1 -0
  161. package/js/js/redrawTag.function.d.ts +7 -0
  162. package/js/js/redrawTag.function.js +9 -0
  163. package/js/js/redrawTag.function.js.map +1 -0
  164. package/js/js/render.d.ts +1 -0
  165. package/js/js/render.js +24 -0
  166. package/js/js/render.js.map +1 -0
  167. package/js/js/renderAppToElement.d.ts +14 -0
  168. package/js/js/renderAppToElement.js +57 -0
  169. package/js/js/renderAppToElement.js.map +1 -0
  170. package/js/js/setUse.function.d.ts +23 -0
  171. package/js/js/setUse.function.js +14 -0
  172. package/js/js/setUse.function.js.map +1 -0
  173. package/js/js/state.d.ts +24 -0
  174. package/js/js/state.js +98 -0
  175. package/js/js/state.js.map +1 -0
  176. package/js/js/tag.d.ts +8 -0
  177. package/js/js/tag.js +46 -0
  178. package/js/js/tag.js.map +1 -0
  179. package/js/js/tagElement.d.ts +14 -0
  180. package/js/js/tagElement.js +57 -0
  181. package/js/js/tagElement.js.map +1 -0
  182. package/js/js/tagGateway.function.d.ts +5 -0
  183. package/js/js/tagGateway.function.js +119 -0
  184. package/js/js/tagGateway.function.js.map +1 -0
  185. package/js/js/tagRunner.d.ts +6 -0
  186. package/js/js/tagRunner.js +19 -0
  187. package/js/js/tagRunner.js.map +1 -0
  188. package/js/js/templater.utils.d.ts +28 -0
  189. package/js/js/templater.utils.js +99 -0
  190. package/js/js/templater.utils.js.map +1 -0
  191. package/js/js/updateTag.utils.d.ts +6 -0
  192. package/js/js/updateTag.utils.js +84 -0
  193. package/js/js/updateTag.utils.js.map +1 -0
  194. package/js/js/wait.d.ts +1 -0
  195. package/js/js/wait.js +8 -0
  196. package/js/js/wait.js.map +1 -0
  197. package/js/onDestroy.d.ts +2 -0
  198. package/js/onDestroy.js +20 -0
  199. package/js/onDestroy.js.map +1 -0
  200. package/js/onInit.d.ts +2 -0
  201. package/js/onInit.js +19 -0
  202. package/js/onInit.js.map +1 -0
  203. package/js/processSubjectComponent.function.d.ts +8 -0
  204. package/js/processSubjectComponent.function.js +53 -0
  205. package/js/processSubjectComponent.function.js.map +1 -0
  206. package/js/processSubjectValue.function.d.ts +16 -0
  207. package/js/processSubjectValue.function.js +122 -0
  208. package/js/processSubjectValue.function.js.map +1 -0
  209. package/js/processTagArray.d.ts +9 -0
  210. package/js/processTagArray.js +60 -0
  211. package/js/processTagArray.js.map +1 -0
  212. package/js/processTagResult.function.d.ts +10 -0
  213. package/js/processTagResult.function.js +39 -0
  214. package/js/processTagResult.function.js.map +1 -0
  215. package/js/providers.d.ts +17 -0
  216. package/js/providers.js +86 -0
  217. package/js/providers.js.map +1 -0
  218. package/js/redrawTag.function.d.ts +7 -0
  219. package/js/redrawTag.function.js +8 -0
  220. package/js/redrawTag.function.js.map +1 -0
  221. package/js/render.d.ts +1 -0
  222. package/js/render.js +17 -0
  223. package/js/render.js.map +1 -0
  224. package/js/renderAppToElement.d.ts +14 -0
  225. package/js/renderAppToElement.js +57 -0
  226. package/js/renderAppToElement.js.map +1 -0
  227. package/js/setUse.function.d.ts +23 -0
  228. package/js/setUse.function.js +14 -0
  229. package/js/setUse.function.js.map +1 -0
  230. package/js/state.d.ts +24 -0
  231. package/js/state.js +98 -0
  232. package/js/state.js.map +1 -0
  233. package/js/tag.d.ts +7 -0
  234. package/js/tag.js +46 -0
  235. package/js/tag.js.map +1 -0
  236. package/js/tagElement.d.ts +14 -0
  237. package/js/tagElement.js +57 -0
  238. package/js/tagElement.js.map +1 -0
  239. package/js/tagGateway.function.d.ts +14 -0
  240. package/js/tagGateway.function.js +138 -0
  241. package/js/tagGateway.function.js.map +1 -0
  242. package/js/tagRunner.d.ts +6 -0
  243. package/js/tagRunner.js +19 -0
  244. package/js/tagRunner.js.map +1 -0
  245. package/js/templater.utils.d.ts +27 -0
  246. package/js/templater.utils.js +98 -0
  247. package/js/templater.utils.js.map +1 -0
  248. package/js/updateTag.utils.d.ts +6 -0
  249. package/js/updateTag.utils.js +102 -0
  250. package/js/updateTag.utils.js.map +1 -0
  251. package/js/wait.d.ts +1 -0
  252. package/js/wait.js +8 -0
  253. package/js/wait.js.map +1 -0
  254. package/package.json +1 -1
@@ -0,0 +1,67 @@
1
+ import { TagSupport } from "./getTagSupport.js";
2
+ import { Provider } from "./providers.js";
3
+ import { Subscription } from "./Subject.js";
4
+ import { Counts } from "./interpolateTemplate.js";
5
+ import { State } from "./state.js";
6
+ export declare const variablePrefix = "__tagvar";
7
+ export declare const escapeVariable: string;
8
+ export declare const escapeSearch: RegExp;
9
+ export type Context = {
10
+ [index: string]: any;
11
+ };
12
+ export type TagMemory = Record<string, any> & {
13
+ context: Context;
14
+ state: State;
15
+ providers: Provider[];
16
+ };
17
+ export declare class Tag {
18
+ strings: string[];
19
+ values: any[];
20
+ isTag: boolean;
21
+ clones: (Element | Text | ChildNode)[];
22
+ cloneSubs: Subscription[];
23
+ children: Tag[];
24
+ tagSupport: TagSupport;
25
+ ownerTag?: Tag;
26
+ insertBefore?: Element;
27
+ appElement?: Element;
28
+ arrayValue?: any[];
29
+ constructor(strings: string[], values: any[]);
30
+ beforeRedraw(): void;
31
+ afterRender(): void;
32
+ /** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
33
+ key(arrayValue: any[]): this;
34
+ destroy(options?: DestroyOptions): Promise<number>;
35
+ destroySubscriptions(): void;
36
+ destroyClones({ stagger }?: DestroyOptions): Promise<number>;
37
+ updateByTag(tag: Tag): void;
38
+ lastTemplateString: string | undefined;
39
+ /** A method of passing down the same render method */
40
+ setSupport(tagSupport: TagSupport): void;
41
+ updateConfig(strings: string[], values: any[]): void;
42
+ getTemplate(): {
43
+ string: string;
44
+ strings: string[];
45
+ values: any[];
46
+ context: Context;
47
+ };
48
+ isLikeTag(tag: Tag): boolean;
49
+ update(): Context;
50
+ updateValues(values: any[]): Context;
51
+ updateContext(context: Context): Context;
52
+ getAppElement(): Tag;
53
+ /** Used during HMR only where static content itself could have been edited */
54
+ rebuild(): void;
55
+ buildBeforeElement(insertBefore: Element, options?: ElementBuildOptions): (ChildNode | Element)[];
56
+ }
57
+ type DestroyOptions = {
58
+ depth?: number;
59
+ stagger: number;
60
+ byParent?: boolean;
61
+ };
62
+ export type ElementBuildOptions = {
63
+ counts: Counts;
64
+ forceElement?: boolean;
65
+ depth: number;
66
+ };
67
+ export {};
@@ -0,0 +1,241 @@
1
+ import { getSubjectFunction, setValueRedraw } from "./Tag.utils.js";
2
+ import { ValueSubject } from "./ValueSubject.js";
3
+ import { runAfterRender, runBeforeDestroy, runBeforeRedraw } from "./tagRunner.js";
4
+ import { isSubjectInstance, isTagComponent, isTagInstance } from "./isInstance.js";
5
+ import { buildClones } from "./render.js";
6
+ import { interpolateElement } from "./interpolateElement.js";
7
+ import { afterElmBuild } from "./interpolateTemplate.js";
8
+ import { elementDestroyCheck } from "./elementDestroyCheck.function.js";
9
+ import { updateExistingValue } from "./updateTag.utils.js";
10
+ export const variablePrefix = '__tagvar';
11
+ export const escapeVariable = '--' + variablePrefix + '--';
12
+ const prefixSearch = new RegExp(variablePrefix, 'g');
13
+ export const escapeSearch = new RegExp(escapeVariable, 'g');
14
+ export class Tag {
15
+ strings;
16
+ values;
17
+ isTag = true;
18
+ clones = []; // elements on document
19
+ cloneSubs = []; // subscriptions created by clones
20
+ children = []; // tags on me
21
+ tagSupport;
22
+ // only present when a child of a tag
23
+ ownerTag;
24
+ insertBefore;
25
+ appElement; // only seen on this.getAppElement().appElement
26
+ // present only when an array. Populated by this.key()
27
+ arrayValue;
28
+ constructor(strings, values) {
29
+ this.strings = strings;
30
+ this.values = values;
31
+ }
32
+ beforeRedraw() {
33
+ runBeforeRedraw(this.tagSupport, this);
34
+ }
35
+ afterRender() {
36
+ runAfterRender(this.tagSupport, this);
37
+ }
38
+ /** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
39
+ key(arrayValue) {
40
+ this.arrayValue = arrayValue;
41
+ return this;
42
+ }
43
+ async destroy(options = {
44
+ depth: 0,
45
+ stagger: 0,
46
+ byParent: false, // TODO: Replace with depth control. Only destroy clones of direct children
47
+ }) {
48
+ const depth = options.depth || 0;
49
+ runBeforeDestroy(this.tagSupport, this);
50
+ this.destroySubscriptions();
51
+ const promises = this.children.map((kid) => kid.destroy({ ...options, byParent: true, depth: depth + 1 }));
52
+ if (depth <= 0) {
53
+ options.stagger = await this.destroyClones(options);
54
+ }
55
+ if (this.ownerTag) {
56
+ this.ownerTag.children = this.ownerTag.children.filter(child => child !== this);
57
+ }
58
+ await Promise.all(promises);
59
+ return options.stagger;
60
+ }
61
+ destroySubscriptions() {
62
+ this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
63
+ this.cloneSubs.length = 0;
64
+ }
65
+ async destroyClones({ stagger } = {
66
+ stagger: 0,
67
+ }) {
68
+ const promises = this.clones.reverse().map((clone, index) => {
69
+ let promise = Promise.resolve();
70
+ if (clone.ondestroy) {
71
+ promise = elementDestroyCheck(clone, stagger);
72
+ }
73
+ promise.then(() => {
74
+ clone.parentNode?.removeChild(clone);
75
+ const ownerTag = this.ownerTag;
76
+ if (ownerTag) {
77
+ // Sometimes my clones were first registered to my owner, remove them
78
+ ownerTag.clones = ownerTag.clones.filter(compareClone => compareClone !== clone);
79
+ }
80
+ });
81
+ return promise;
82
+ });
83
+ await Promise.all(promises);
84
+ // this.clones.length = 0
85
+ return stagger;
86
+ }
87
+ updateByTag(tag) {
88
+ this.updateConfig(tag.strings, tag.values);
89
+ this.tagSupport.templater = tag.tagSupport.templater;
90
+ }
91
+ lastTemplateString = undefined; // used to compare templates for updates
92
+ /** A method of passing down the same render method */
93
+ setSupport(tagSupport) {
94
+ this.tagSupport = tagSupport;
95
+ this.tagSupport.mutatingRender = tagSupport.mutatingRender;
96
+ }
97
+ updateConfig(strings, values) {
98
+ this.strings = strings;
99
+ this.updateValues(values);
100
+ }
101
+ getTemplate() {
102
+ // TODO: treat interpolation hack here
103
+ const string = this.lastTemplateString = this.strings.map((string, index) => {
104
+ const safeString = string.replace(prefixSearch, escapeVariable);
105
+ const endString = safeString + (this.values.length > index ? `{${variablePrefix}${index}}` : '');
106
+ // const trimString = index === 0 || index === this.strings.length-1 ? endString.trim() : endString
107
+ const trimString = endString.replace(/>\s*/g, '>').replace(/\s*</g, '<');
108
+ return trimString;
109
+ }).join('');
110
+ return {
111
+ string,
112
+ strings: this.strings,
113
+ values: this.values,
114
+ context: this.tagSupport?.memory.context || {},
115
+ };
116
+ }
117
+ isLikeTag(tag) {
118
+ const { string } = tag.getTemplate();
119
+ if (string !== this.lastTemplateString) {
120
+ return false;
121
+ }
122
+ if (tag.values.length !== this.values.length) {
123
+ return false;
124
+ }
125
+ const allVarsMatch = tag.values.every((value, index) => {
126
+ const compareTo = this.values[index];
127
+ const isFunctions = value instanceof Function && compareTo instanceof Function;
128
+ if (isFunctions) {
129
+ const stringMatch = value.toString() === compareTo.toString();
130
+ if (stringMatch) {
131
+ return true;
132
+ }
133
+ return false;
134
+ }
135
+ const tag = value;
136
+ if (isTagInstance(tag) && isTagInstance(compareTo)) {
137
+ tag.ownerTag = this; // let children know I own them
138
+ this.children.push(tag); // record children I created
139
+ tag.lastTemplateString || tag.getTemplate().string; // ensure last template string is generated
140
+ if (tag.isLikeTag(compareTo)) {
141
+ return true;
142
+ }
143
+ return false;
144
+ }
145
+ return true;
146
+ });
147
+ if (allVarsMatch) {
148
+ return true;
149
+ }
150
+ return false;
151
+ }
152
+ update() {
153
+ return this.updateContext(this.tagSupport.memory.context);
154
+ }
155
+ updateValues(values) {
156
+ this.values = values;
157
+ return this.updateContext(this.tagSupport.memory.context);
158
+ }
159
+ updateContext(context) {
160
+ this.strings.map((_string, index) => {
161
+ const variableName = variablePrefix + index;
162
+ const hasValue = this.values.length > index;
163
+ const value = this.values[index];
164
+ // is something already there?
165
+ const existing = context[variableName];
166
+ if (existing) {
167
+ return updateExistingValue(existing, value, this);
168
+ }
169
+ // 🆕 First time values below
170
+ if (isTagComponent(value)) {
171
+ const existing = context[variableName] = new ValueSubject(value);
172
+ setValueRedraw(value, existing, this);
173
+ return;
174
+ }
175
+ if (value instanceof Function) {
176
+ context[variableName] = getSubjectFunction(value, this);
177
+ return;
178
+ }
179
+ if (!hasValue) {
180
+ return; // more strings than values, stop here
181
+ }
182
+ if (isTagInstance(value)) {
183
+ value.ownerTag = this;
184
+ this.children.push(value);
185
+ }
186
+ if (isSubjectInstance(value)) {
187
+ context[variableName] = value;
188
+ return;
189
+ }
190
+ context[variableName] = new ValueSubject(value);
191
+ });
192
+ return context;
193
+ }
194
+ getAppElement() {
195
+ let tag = this;
196
+ while (tag.ownerTag) {
197
+ tag = tag.ownerTag;
198
+ }
199
+ return tag;
200
+ }
201
+ /** Used during HMR only where static content itself could have been edited */
202
+ rebuild() {
203
+ const insertBefore = this.insertBefore;
204
+ if (!insertBefore) {
205
+ const err = new Error('Cannot rebuild. Previous insertBefore element is not defined on tag');
206
+ err.tag = this;
207
+ throw err;
208
+ }
209
+ this.buildBeforeElement(insertBefore, {
210
+ forceElement: true,
211
+ counts: { added: 0, removed: 0 },
212
+ depth: this.tagSupport.depth,
213
+ });
214
+ }
215
+ buildBeforeElement(insertBefore, options = {
216
+ forceElement: false,
217
+ counts: { added: 0, removed: 0 },
218
+ depth: 0,
219
+ }) {
220
+ this.insertBefore = insertBefore;
221
+ const context = this.update();
222
+ const template = this.getTemplate();
223
+ // const ownerTag = this.ownerTag
224
+ const temporary = document.createElement('div');
225
+ temporary.id = 'tag-temp-holder';
226
+ // render content with a first child that we can know is our first element
227
+ temporary.innerHTML = '<div id="top-element-insert-after"></div>' + template.string;
228
+ // const clonesBefore = this.clones.map(clone => clone)
229
+ const intClones = interpolateElement(temporary, context, this, // this.ownerTag || this,
230
+ { forceElement: options.forceElement, depth: options.depth });
231
+ this.clones.length = 0;
232
+ const clones = buildClones(temporary, insertBefore);
233
+ this.clones.push(...clones);
234
+ if (intClones.length) {
235
+ this.clones = this.clones.filter(cloneFilter => !intClones.find(clone => clone === cloneFilter));
236
+ }
237
+ this.clones.forEach(clone => afterElmBuild(clone, options));
238
+ return this.clones;
239
+ }
240
+ }
241
+ //# sourceMappingURL=Tag.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { TagSupport } from "./getTagSupport.js";
2
+ import { ValueSubject } from "./ValueSubject.js";
3
+ import { Subject } from "./Subject.js";
4
+ import { Tag } from "./Tag.class.js";
5
+ import { TemplaterResult } from "./templater.utils.js";
6
+ export type TagSubject = Subject<TemplaterResult> & {
7
+ tagSupport: TagSupport;
8
+ tag: Tag;
9
+ };
10
+ export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject<unknown>;
11
+ export declare function setValueRedraw(templater: TemplaterResult, // latest tag function to call for rendering
12
+ existing: TagSubject, ownerTag: Tag): void;
@@ -0,0 +1,31 @@
1
+ import { ValueSubject } from "./ValueSubject.js";
2
+ import { redrawTag } from "./redrawTag.function.js";
3
+ import { bindSubjectCallback } from "./bindSubjectCallback.function.js";
4
+ export function getSubjectFunction(value, tag) {
5
+ return new ValueSubject(bindSubjectCallback(value, tag));
6
+ }
7
+ export function setValueRedraw(templater, // latest tag function to call for rendering
8
+ existing, ownerTag) {
9
+ // redraw does not communicate to parent
10
+ templater.redraw = (force // forces redraw on children
11
+ ) => {
12
+ const existingTag = existing.tag;
13
+ const { remit, retag } = redrawTag(existingTag, templater, ownerTag);
14
+ existing.tagSupport = retag.tagSupport;
15
+ if (!remit) {
16
+ return;
17
+ }
18
+ existing.set(templater);
19
+ if (force) {
20
+ const context = existingTag.tagSupport.memory.context;
21
+ Object.values(context).forEach((item) => {
22
+ if (!item.value?.isTemplater) {
23
+ return;
24
+ }
25
+ item.value.redraw();
26
+ });
27
+ }
28
+ return retag;
29
+ };
30
+ }
31
+ //# sourceMappingURL=Tag.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.utils.js","sourceRoot":"","sources":["../ts/Tag.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAIvE,MAAM,UAAU,kBAAkB,CAChC,KAAU,EACV,GAAQ;IAER,OAAO,IAAI,YAAY,CAAE,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAE,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAA0B,EAAE,4CAA4C;AACxE,QAAoB,EACpB,QAAa;IAEb,wCAAwC;IACxC,SAAS,CAAC,MAAM,GAAG,CACjB,KAAe,CAAC,4BAA4B;MAC5C,EAAE;QACF,MAAM,WAAW,GAAoB,QAAQ,CAAC,GAAG,CAAA;QACjD,MAAM,EAAC,KAAK,EAAE,KAAK,EAAC,GAAG,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QAElE,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAEtC,IAAG,CAAC,KAAK,EAAE,CAAC;YACV,OAAM;QACR,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAEvB,IAAG,KAAK,EAAE,CAAC;YACT,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAA;YACrD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC3C,IAAG,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;oBAC5B,OAAM;gBACR,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;YACrB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Subject } from './Subject.js';
2
+ export declare class ValueSubject<T> extends Subject<T> {
3
+ value: any;
4
+ constructor(initialValue: any);
5
+ subscribe(callback: any): import("./Subject.js").Subscription;
6
+ }
@@ -0,0 +1,15 @@
1
+ import { Subject } from './Subject.js';
2
+ export class ValueSubject extends Subject {
3
+ value;
4
+ constructor(initialValue) {
5
+ super();
6
+ this.value = initialValue;
7
+ }
8
+ subscribe(callback) {
9
+ const unsubscribe = super.subscribe(callback);
10
+ // Call the callback immediately with the current value
11
+ callback(this.value);
12
+ return unsubscribe;
13
+ }
14
+ }
15
+ //# sourceMappingURL=ValueSubject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValueSubject.js","sourceRoot":"","sources":["../ts/ValueSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,OAAO,YAAgB,SAAQ,OAAU;IAC7C,KAAK,CAAK;IAEV,YAAY,YAAiB;QAC3B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,KAAK,GAAG,YAAY,CAAA;IAC3B,CAAC;IAED,SAAS,CAAC,QAAa;QACrB,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAE7C,uDAAuD;QACvD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEpB,OAAO,WAAW,CAAA;IACpB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import { Tag } from "./Tag.class.js";
2
+ export declare function bindSubjectCallback(value: (...args: any[]) => any, tag: Tag): {
3
+ (element: Element, args: any[]): Promise<string> | undefined;
4
+ tagFunction: (...args: any[]) => any;
5
+ };
@@ -0,0 +1,19 @@
1
+ export function bindSubjectCallback(value, tag) {
2
+ function subjectFunction(element, args) {
3
+ const renderCount = tag.tagSupport.memory.renderCount;
4
+ const method = value.bind(element);
5
+ const callbackResult = method(...args);
6
+ if (renderCount !== tag.tagSupport.memory.renderCount) {
7
+ return; // already rendered
8
+ }
9
+ tag.tagSupport.render();
10
+ if (callbackResult instanceof Promise) {
11
+ return callbackResult.then(() => tag.tagSupport.render() && 'no-data-ever');
12
+ }
13
+ return Promise.resolve(callbackResult).then(() => 'no-data-ever');
14
+ }
15
+ // link back to original. Mostly used for <div oninit ondestroy> animations
16
+ subjectFunction.tagFunction = value;
17
+ return subjectFunction;
18
+ }
19
+ //# sourceMappingURL=bindSubjectCallback.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindSubjectCallback.function.js","sourceRoot":"","sources":["../ts/bindSubjectCallback.function.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CACjC,KAA8B,EAC9B,GAAQ;IAER,SAAS,eAAe,CACtB,OAAgB,EAChB,IAAW;QAEX,MAAM,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAA;QAErD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;QAEtC,IAAG,WAAW,KAAK,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACrD,OAAM,CAAC,mBAAmB;QAC5B,CAAC;QAED,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,CAAA;QAEvB,IAAG,cAAc,YAAY,OAAO,EAAE,CAAC;YACrC,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,cAAc,CAAC,CAAA;QAC7E,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;IACnE,CAAC;IAED,2EAA2E;IAC3E,eAAe,CAAC,WAAW,GAAG,KAAK,CAAA;IAEnC,OAAO,eAAe,CAAA;AACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function deepClone(obj: any, visited?: WeakMap<WeakKey, any>): any;
2
+ export declare function deepEqual(obj1: any, obj2: any): boolean;
@@ -0,0 +1,76 @@
1
+ export function deepClone(obj, visited = new WeakMap()) {
2
+ // If obj is a primitive type or null, return it directly
3
+ if (obj === null || typeof obj !== 'object') {
4
+ return obj;
5
+ }
6
+ // If obj is already visited, return the cloned reference
7
+ if (visited.has(obj)) {
8
+ return visited.get(obj);
9
+ }
10
+ // Handle special cases like Date and RegExp
11
+ if (obj instanceof Date) {
12
+ return new Date(obj);
13
+ }
14
+ if (obj instanceof RegExp) {
15
+ return new RegExp(obj);
16
+ }
17
+ // Create an empty object or array with the same prototype
18
+ const clone = Array.isArray(obj) ? [] : Object.create(Object.getPrototypeOf(obj));
19
+ // Register the cloned object to avoid cyclic references
20
+ visited.set(obj, clone);
21
+ // Clone each property or element of the object or array
22
+ if (Array.isArray(obj)) {
23
+ for (let i = 0; i < obj.length; i++) {
24
+ clone[i] = deepClone(obj[i], visited);
25
+ }
26
+ }
27
+ else {
28
+ for (const key in obj) {
29
+ if (obj.hasOwnProperty(key)) {
30
+ clone[key] = deepClone(obj[key], visited);
31
+ }
32
+ }
33
+ }
34
+ return clone;
35
+ }
36
+ export function deepEqual(obj1, obj2) {
37
+ if (obj1 === obj2) {
38
+ return true;
39
+ }
40
+ if (typeof obj1 !== 'object' ||
41
+ typeof obj2 !== 'object' ||
42
+ obj1 === null ||
43
+ obj2 === null) {
44
+ return false;
45
+ }
46
+ const keys1 = Object.keys(obj1);
47
+ const keys2 = Object.keys(obj2);
48
+ if (keys1.length !== keys2.length) {
49
+ return false;
50
+ }
51
+ for (const key of keys1) {
52
+ if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {
53
+ if (obj1[key] instanceof Function && obj2[key] instanceof Function && obj1[key].toString() === obj2[key].toString()) {
54
+ continue;
55
+ }
56
+ return false;
57
+ }
58
+ }
59
+ // Check if obj1 and obj2 are both arrays
60
+ if (Array.isArray(obj1) && Array.isArray(obj2)) {
61
+ if (obj1.length !== obj2.length) {
62
+ return false;
63
+ }
64
+ for (let i = 0; i < obj1.length; i++) {
65
+ if (!deepEqual(obj1[i], obj2[i])) {
66
+ return false;
67
+ }
68
+ }
69
+ }
70
+ else if (Array.isArray(obj1) || Array.isArray(obj2)) {
71
+ // One is an array, and the other is not
72
+ return false;
73
+ }
74
+ return true;
75
+ }
76
+ //# sourceMappingURL=deepFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepFunctions.js","sourceRoot":"","sources":["../ts/deepFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function elementDestroyCheck(nextSibling: Element & {
2
+ ondestroy?: (event: Event) => any;
3
+ }, stagger: number): any;
@@ -0,0 +1,17 @@
1
+ export function elementDestroyCheck(nextSibling, stagger) {
2
+ const onDestroyDoubleWrap = nextSibling.ondestroy;
3
+ if (!onDestroyDoubleWrap) {
4
+ return;
5
+ }
6
+ const onDestroyWrap = onDestroyDoubleWrap.tagFunction;
7
+ if (!onDestroyWrap) {
8
+ return;
9
+ }
10
+ const onDestroy = onDestroyWrap.tagFunction;
11
+ if (!onDestroy) {
12
+ return;
13
+ }
14
+ const event = { target: nextSibling, stagger };
15
+ return onDestroy(event);
16
+ }
17
+ //# sourceMappingURL=elementDestroyCheck.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementDestroyCheck.function.js","sourceRoot":"","sources":["../ts/elementDestroyCheck.function.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CACjC,WAA0D,EAC1D,OAAe;IAEf,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,CAAA;IACjD,IAAG,CAAC,mBAAmB,EAAE,CAAC;QACxB,OAAM;IACR,CAAC;IAED,MAAM,aAAa,GAAI,mBAA2B,CAAC,WAAW,CAAA;IAC9D,IAAG,CAAC,aAAa,EAAE,CAAC;QAClB,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAA;IAC3C,IAAG,CAAC,SAAS,EAAE,CAAC;QACd,OAAM;IACR,CAAC;IAED,MAAM,KAAK,GAAG,EAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAqB,CAAA;IAChE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Counts } from "./interpolateTemplate.js";
2
+ export declare function elementInitCheck(nextSibling: Element | ChildNode, counts: Counts): void;
@@ -0,0 +1,18 @@
1
+ export function elementInitCheck(nextSibling, counts) {
2
+ const onInitDoubleWrap = nextSibling.oninit;
3
+ if (!onInitDoubleWrap) {
4
+ return;
5
+ }
6
+ const onInitWrap = onInitDoubleWrap.tagFunction;
7
+ if (!onInitWrap) {
8
+ return;
9
+ }
10
+ const onInit = onInitWrap.tagFunction;
11
+ if (!onInit) {
12
+ return;
13
+ }
14
+ const event = { target: nextSibling, stagger: counts.added };
15
+ onInit(event);
16
+ ++counts.added;
17
+ }
18
+ //# sourceMappingURL=elementInitCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementInitCheck.js","sourceRoot":"","sources":["../ts/elementInitCheck.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB,CAC9B,WAAgC,EAChC,MAAc;IAEd,MAAM,gBAAgB,GAAI,WAAmB,CAAC,MAAM,CAAA;IACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpB,OAAM;IACV,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAA;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAM;IACV,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAA;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAM;IACV,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAsB,CAAA;IAChF,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,EAAE,MAAM,CAAC,KAAK,CAAA;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ type Callback = <T>(...args: unknown[]) => T;
2
+ export declare let getCallback: () => (callback: Callback) => () => void;
3
+ export {};
@@ -0,0 +1,50 @@
1
+ import { setUse } from "./setUse.function.js";
2
+ import { getStateValue } from "./state.js";
3
+ export let getCallback = () => (callback) => () => {
4
+ throw new Error('The real callback function was called and that should never occur');
5
+ };
6
+ setUse({
7
+ beforeRender: (tagSupport) => initMemory(tagSupport),
8
+ beforeRedraw: (tagSupport) => initMemory(tagSupport),
9
+ // afterRender: (tagSupport: TagSupport) => {},
10
+ });
11
+ function updateState(stateFrom, stateTo) {
12
+ stateFrom.forEach((state, index) => {
13
+ const fromValue = getStateValue(state);
14
+ const callback = stateTo[index].callback;
15
+ if (callback) {
16
+ callback(fromValue); // set the value
17
+ }
18
+ stateTo[index].lastValue = fromValue; // record the value
19
+ });
20
+ }
21
+ function initMemory(tagSupport) {
22
+ getCallback = () => {
23
+ const oldState = setUse.memory.stateConfig.array;
24
+ const callbackMaker = (callback) => {
25
+ const trigger = (...args) => triggerStateUpdate(tagSupport, callback, oldState, ...args);
26
+ return trigger;
27
+ };
28
+ return callbackMaker;
29
+ };
30
+ }
31
+ function triggerStateUpdate(tagSupport, callback, oldState, ...args) {
32
+ const state = tagSupport.memory.state;
33
+ const newest = state.newest;
34
+ // ensure that the oldest has the latest values first
35
+ updateState(newest, oldState);
36
+ // run the callback
37
+ const promise = callback(...args);
38
+ // send the oldest state changes into the newest
39
+ updateState(oldState, newest);
40
+ tagSupport.render();
41
+ // TODO: turn back on below
42
+ if (promise instanceof Promise) {
43
+ promise.finally(() => {
44
+ // send the oldest state changes into the newest
45
+ updateState(oldState, newest);
46
+ tagSupport.render();
47
+ });
48
+ }
49
+ }
50
+ //# sourceMappingURL=getCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getCallback.js","sourceRoot":"","sources":["../ts/getCallback.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAA2B,aAAa,EAAE,MAAM,YAAY,CAAA;AAInE,MAAM,CAAC,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,GAAS,EAAE;IAChE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;AACtF,CAAC,CAAA;AAED,MAAM,CAAC;IACL,YAAY,EAAE,CAAC,UAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAChE,YAAY,EAAE,CAAC,UAAsB,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IAChE,+CAA+C;CAChD,CAAC,CAAA;AAEF,SAAS,WAAW,CAClB,SAA2B,EAC3B,OAAyB;IAEzB,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAA;QAExC,IAAG,QAAQ,EAAE,CAAC;YACZ,QAAQ,CAAE,SAAS,CAAE,CAAA,CAAC,gBAAgB;QACxC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA,CAAC,mBAAmB;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC;AAKD,SAAS,UAAU,CAAE,UAAsB;IACzC,WAAW,GAAG,GAAG,EAAE;QACjB,MAAM,QAAQ,GAAqB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAA;QAElE,MAAM,aAAa,GAAkB,CACnC,QAAkB,EAClB,EAAE;YACF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAA;YAC/F,OAAO,OAAO,CAAA;QAChB,CAAC,CAAA;QAED,OAAO,aAAa,CAAA;IACtB,CAAC,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,UAAsB,EACtB,QAAkB,EAClB,QAA0B,EAC1B,GAAG,IAAW;IAEd,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAc,CAAA;IAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAE3B,qDAAqD;IACrD,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAE7B,mBAAmB;IACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;IAEjC,gDAAgD;IAChD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE7B,UAAU,CAAC,MAAM,EAAE,CAAA;IAEnB,2BAA2B;IAC3B,IAAG,OAAO,YAAY,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACnB,gDAAgD;YAChD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YAE7B,UAAU,CAAC,MAAM,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}