taggedjs 2.3.25 → 2.3.26

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 (315) hide show
  1. package/_js/ElementTarget.interface.d.ts +7 -0
  2. package/_js/ElementTarget.interface.js +2 -0
  3. package/_js/ElementTarget.interface.js.map +1 -0
  4. package/_js/ElementTargetEvent.interface.d.ts +6 -0
  5. package/_js/ElementTargetEvent.interface.js +2 -0
  6. package/_js/ElementTargetEvent.interface.js.map +1 -0
  7. package/_js/Tag.class.d.ts +69 -0
  8. package/_js/Tag.class.js +258 -0
  9. package/_js/Tag.class.js.map +1 -0
  10. package/_js/elementInitCheck.js.map +1 -0
  11. package/_js/gateway/gateway.web.component.d.ts +11 -0
  12. package/_js/gateway/gateway.web.component.js +20 -0
  13. package/_js/gateway/gateway.web.component.js.map +1 -0
  14. package/_js/gateway/index.d.ts +3 -0
  15. package/_js/gateway/index.js +4 -0
  16. package/_js/gateway/index.js.map +1 -0
  17. package/_js/gateway/loadTagGateway.function.d.ts +2 -0
  18. package/_js/gateway/loadTagGateway.function.js +18 -0
  19. package/_js/gateway/loadTagGateway.function.js.map +1 -0
  20. package/_js/gateway/tagGateway.function.d.ts +4 -0
  21. package/_js/gateway/tagGateway.function.js +49 -0
  22. package/_js/gateway/tagGateway.function.js.map +1 -0
  23. package/_js/gateway/tagGateway.utils.d.ts +21 -0
  24. package/_js/gateway/tagGateway.utils.js +139 -0
  25. package/_js/gateway/tagGateway.utils.js.map +1 -0
  26. package/_js/getCallback.d.ts +3 -0
  27. package/_js/getTagSupport.d.ts +21 -0
  28. package/_js/getTagSupport.js +110 -0
  29. package/_js/getTagSupport.js.map +1 -0
  30. package/_js/index.d.ts +20 -0
  31. package/_js/index.js +25 -0
  32. package/_js/index.js.map +1 -0
  33. package/_js/inputAttribute.js +19 -0
  34. package/_js/inputAttribute.js.map +1 -0
  35. package/_js/interpolateAttributes.js +135 -0
  36. package/_js/interpolateAttributes.js.map +1 -0
  37. package/_js/interpolateContentTemplates.d.ts +6 -0
  38. package/_js/interpolateContentTemplates.js +54 -0
  39. package/_js/interpolateContentTemplates.js.map +1 -0
  40. package/_js/interpolateElement.d.ts +9 -0
  41. package/_js/interpolateElement.js +39 -0
  42. package/_js/interpolateElement.js.map +1 -0
  43. package/_js/interpolations.d.ts +7 -0
  44. package/_js/interpolations.js +18 -0
  45. package/_js/interpolations.js.map +1 -0
  46. package/_js/js/Clones.type.d.ts +1 -0
  47. package/_js/js/Clones.type.js +2 -0
  48. package/_js/js/Clones.type.js.map +1 -0
  49. package/_js/js/Props.d.ts +1 -0
  50. package/_js/js/Props.js +2 -0
  51. package/_js/js/Props.js.map +1 -0
  52. package/_js/js/Subject.d.ts +17 -0
  53. package/_js/js/Subject.js +43 -0
  54. package/_js/js/Subject.js.map +1 -0
  55. package/_js/js/Tag.utils.d.ts +12 -0
  56. package/_js/js/Tag.utils.js +31 -0
  57. package/_js/js/Tag.utils.js.map +1 -0
  58. package/_js/js/ValueSubject.d.ts +6 -0
  59. package/_js/js/ValueSubject.js +15 -0
  60. package/_js/js/ValueSubject.js.map +1 -0
  61. package/_js/js/bindSubjectCallback.function.d.ts +5 -0
  62. package/_js/js/bindSubjectCallback.function.js +19 -0
  63. package/_js/js/bindSubjectCallback.function.js.map +1 -0
  64. package/_js/js/deepFunctions.d.ts +2 -0
  65. package/_js/js/deepFunctions.js +76 -0
  66. package/_js/js/deepFunctions.js.map +1 -0
  67. package/_js/js/elementDestroyCheck.function.d.ts +3 -0
  68. package/_js/js/elementDestroyCheck.function.js +17 -0
  69. package/_js/js/elementDestroyCheck.function.js.map +1 -0
  70. package/_js/js/elementInitCheck.d.ts +2 -0
  71. package/_js/js/elementInitCheck.js +18 -0
  72. package/_js/js/getCallback.js +50 -0
  73. package/_js/js/getCallback.js.map +1 -0
  74. package/_js/js/html.d.ts +2 -0
  75. package/_js/js/html.js +5 -0
  76. package/_js/js/html.js.map +1 -0
  77. package/_js/js/inputAttribute.d.ts +1 -0
  78. package/_js/js/interpolateAttributes.d.ts +4 -0
  79. package/_js/js/interpolateTemplate.d.ts +17 -0
  80. package/_js/js/interpolateTemplate.js +64 -0
  81. package/_js/js/interpolateTemplate.js.map +1 -0
  82. package/_js/js/isInstance.d.ts +6 -0
  83. package/_js/js/isInstance.js +10 -0
  84. package/_js/js/isInstance.js.map +1 -0
  85. package/_js/onDestroy.d.ts +2 -0
  86. package/_js/onDestroy.js +20 -0
  87. package/_js/onDestroy.js.map +1 -0
  88. package/_js/onInit.d.ts +2 -0
  89. package/_js/onInit.js +19 -0
  90. package/_js/onInit.js.map +1 -0
  91. package/_js/processSubjectComponent.function.d.ts +8 -0
  92. package/_js/processSubjectComponent.function.js +53 -0
  93. package/_js/processSubjectComponent.function.js.map +1 -0
  94. package/_js/processSubjectValue.function.d.ts +16 -0
  95. package/_js/processSubjectValue.function.js +122 -0
  96. package/_js/processSubjectValue.function.js.map +1 -0
  97. package/_js/processTagArray.d.ts +9 -0
  98. package/_js/processTagArray.js +60 -0
  99. package/_js/processTagArray.js.map +1 -0
  100. package/_js/processTagResult.function.d.ts +10 -0
  101. package/_js/processTagResult.function.js +40 -0
  102. package/_js/processTagResult.function.js.map +1 -0
  103. package/_js/providers.d.ts +17 -0
  104. package/_js/providers.js +86 -0
  105. package/_js/providers.js.map +1 -0
  106. package/_js/redrawTag.function.d.ts +7 -0
  107. package/_js/redrawTag.function.js +8 -0
  108. package/_js/redrawTag.function.js.map +1 -0
  109. package/_js/render.d.ts +1 -0
  110. package/_js/render.js +17 -0
  111. package/_js/render.js.map +1 -0
  112. package/_js/renderAppToElement.d.ts +14 -0
  113. package/_js/renderAppToElement.js +57 -0
  114. package/_js/renderAppToElement.js.map +1 -0
  115. package/_js/setUse.function.d.ts +23 -0
  116. package/_js/setUse.function.js +14 -0
  117. package/_js/setUse.function.js.map +1 -0
  118. package/_js/state.d.ts +21 -0
  119. package/_js/state.js +129 -0
  120. package/_js/state.js.map +1 -0
  121. package/_js/tag.d.ts +7 -0
  122. package/_js/tag.js +46 -0
  123. package/_js/tag.js.map +1 -0
  124. package/_js/tagElement.d.ts +14 -0
  125. package/_js/tagElement.js +57 -0
  126. package/_js/tagElement.js.map +1 -0
  127. package/_js/tagGateway.function.d.ts +14 -0
  128. package/_js/tagGateway.function.js +138 -0
  129. package/_js/tagGateway.function.js.map +1 -0
  130. package/_js/tagRunner.d.ts +6 -0
  131. package/_js/tagRunner.js +19 -0
  132. package/_js/tagRunner.js.map +1 -0
  133. package/_js/templater.utils.d.ts +27 -0
  134. package/_js/templater.utils.js +98 -0
  135. package/_js/templater.utils.js.map +1 -0
  136. package/_js/updateTag.utils.d.ts +6 -0
  137. package/_js/updateTag.utils.js +102 -0
  138. package/_js/updateTag.utils.js.map +1 -0
  139. package/index.js +1 -1
  140. package/js/ElementTarget.interface.d.ts +7 -0
  141. package/js/ElementTarget.interface.js +2 -0
  142. package/js/ElementTarget.interface.js.map +1 -0
  143. package/js/ElementTargetEvent.interface.d.ts +6 -0
  144. package/js/ElementTargetEvent.interface.js +2 -0
  145. package/js/ElementTargetEvent.interface.js.map +1 -0
  146. package/js/Tag.class.js +5 -5
  147. package/js/Tag.class.js.map +1 -1
  148. package/js/Tag.utils.d.ts +3 -2
  149. package/js/Tag.utils.js +4 -1
  150. package/js/Tag.utils.js.map +1 -1
  151. package/js/bindSubjectCallback.function.js +1 -0
  152. package/js/bindSubjectCallback.function.js.map +1 -1
  153. package/js/elementInitCheck.js.map +1 -1
  154. package/js/gateway/gateway.web.component.d.ts +1 -1
  155. package/js/gateway/gateway.web.component.js +1 -1
  156. package/js/gateway/gateway.web.component.js.map +1 -1
  157. package/js/gateway/index.d.ts +1 -1
  158. package/js/gateway/index.js +1 -0
  159. package/js/gateway/index.js.map +1 -1
  160. package/js/gateway/loadTagGateway.function.d.ts +1 -1
  161. package/js/gateway/loadTagGateway.function.js +1 -1
  162. package/js/gateway/loadTagGateway.function.js.map +1 -1
  163. package/js/gateway/tagGateway.function.d.ts +1 -28
  164. package/js/gateway/tagGateway.function.js +1 -139
  165. package/js/gateway/tagGateway.function.js.map +1 -1
  166. package/js/gateway/tagGateway.utils.d.ts +21 -0
  167. package/js/gateway/tagGateway.utils.js +139 -0
  168. package/js/gateway/tagGateway.utils.js.map +1 -0
  169. package/js/getCallback.d.ts +1 -1
  170. package/js/index.d.ts +1 -0
  171. package/js/index.js +1 -0
  172. package/js/index.js.map +1 -1
  173. package/js/interpolateAttributes.js +7 -4
  174. package/js/interpolateAttributes.js.map +1 -1
  175. package/js/processSubjectValue.function.d.ts +8 -1
  176. package/js/processSubjectValue.function.js +12 -5
  177. package/js/processSubjectValue.function.js.map +1 -1
  178. package/js/processTagArray.d.ts +10 -1
  179. package/js/processTagArray.js +9 -3
  180. package/js/processTagArray.js.map +1 -1
  181. package/js/processTagResult.function.d.ts +3 -1
  182. package/js/processTagResult.function.js +14 -10
  183. package/js/processTagResult.function.js.map +1 -1
  184. package/js/state.d.ts +3 -7
  185. package/js/state.js +27 -17
  186. package/js/state.js.map +1 -1
  187. package/js/tagElement.js +5 -2
  188. package/js/tagElement.js.map +1 -1
  189. package/js/updateTag.utils.d.ts +2 -1
  190. package/js/updateTag.utils.js +56 -11
  191. package/js/updateTag.utils.js.map +1 -1
  192. package/package.json +1 -1
  193. /package/{js/js → _js}/Clones.type.d.ts +0 -0
  194. /package/{js/js → _js}/Clones.type.js +0 -0
  195. /package/{js/js → _js}/Clones.type.js.map +0 -0
  196. /package/{js/js → _js}/Props.d.ts +0 -0
  197. /package/{js/js → _js}/Props.js +0 -0
  198. /package/{js/js → _js}/Props.js.map +0 -0
  199. /package/{js/js → _js}/Subject.d.ts +0 -0
  200. /package/{js/js → _js}/Subject.js +0 -0
  201. /package/{js/js → _js}/Subject.js.map +0 -0
  202. /package/{js/js → _js}/Tag.utils.d.ts +0 -0
  203. /package/{js/js → _js}/Tag.utils.js +0 -0
  204. /package/{js/js → _js}/Tag.utils.js.map +0 -0
  205. /package/{js/js → _js}/ValueSubject.d.ts +0 -0
  206. /package/{js/js → _js}/ValueSubject.js +0 -0
  207. /package/{js/js → _js}/ValueSubject.js.map +0 -0
  208. /package/{js/js → _js}/bindSubjectCallback.function.d.ts +0 -0
  209. /package/{js/js → _js}/bindSubjectCallback.function.js +0 -0
  210. /package/{js/js → _js}/bindSubjectCallback.function.js.map +0 -0
  211. /package/{js/js → _js}/deepFunctions.d.ts +0 -0
  212. /package/{js/js → _js}/deepFunctions.js +0 -0
  213. /package/{js/js → _js}/deepFunctions.js.map +0 -0
  214. /package/{js/js → _js}/elementDestroyCheck.function.d.ts +0 -0
  215. /package/{js/js → _js}/elementDestroyCheck.function.js +0 -0
  216. /package/{js/js → _js}/elementDestroyCheck.function.js.map +0 -0
  217. /package/{js/js → _js}/elementInitCheck.d.ts +0 -0
  218. /package/{js/js → _js}/elementInitCheck.js +0 -0
  219. /package/{js/js → _js}/getCallback.js +0 -0
  220. /package/{js/js → _js}/getCallback.js.map +0 -0
  221. /package/{js/js → _js}/html.d.ts +0 -0
  222. /package/{js/js → _js}/html.js +0 -0
  223. /package/{js/js → _js}/html.js.map +0 -0
  224. /package/{js/js → _js}/inputAttribute.d.ts +0 -0
  225. /package/{js/js → _js}/interpolateAttributes.d.ts +0 -0
  226. /package/{js/js → _js}/interpolateTemplate.d.ts +0 -0
  227. /package/{js/js → _js}/interpolateTemplate.js +0 -0
  228. /package/{js/js → _js}/interpolateTemplate.js.map +0 -0
  229. /package/{js/js → _js}/isInstance.d.ts +0 -0
  230. /package/{js/js → _js}/isInstance.js +0 -0
  231. /package/{js/js → _js}/isInstance.js.map +0 -0
  232. /package/{js → _js}/js/Tag.class.d.ts +0 -0
  233. /package/{js → _js}/js/Tag.class.js +0 -0
  234. /package/{js → _js}/js/Tag.class.js.map +0 -0
  235. /package/{js → _js}/js/elementInitCheck.js.map +0 -0
  236. /package/{js → _js}/js/getCallback.d.ts +0 -0
  237. /package/{js → _js}/js/getTagSupport.d.ts +0 -0
  238. /package/{js → _js}/js/getTagSupport.js +0 -0
  239. /package/{js → _js}/js/getTagSupport.js.map +0 -0
  240. /package/{js → _js}/js/index.d.ts +0 -0
  241. /package/{js → _js}/js/index.js +0 -0
  242. /package/{js → _js}/js/index.js.map +0 -0
  243. /package/{js → _js}/js/inputAttribute.js +0 -0
  244. /package/{js → _js}/js/inputAttribute.js.map +0 -0
  245. /package/{js → _js}/js/interpolateAttributes.js +0 -0
  246. /package/{js → _js}/js/interpolateAttributes.js.map +0 -0
  247. /package/{js → _js}/js/interpolateContentTemplates.d.ts +0 -0
  248. /package/{js → _js}/js/interpolateContentTemplates.js +0 -0
  249. /package/{js → _js}/js/interpolateContentTemplates.js.map +0 -0
  250. /package/{js → _js}/js/interpolateElement.d.ts +0 -0
  251. /package/{js → _js}/js/interpolateElement.js +0 -0
  252. /package/{js → _js}/js/interpolateElement.js.map +0 -0
  253. /package/{js → _js}/js/interpolations.d.ts +0 -0
  254. /package/{js → _js}/js/interpolations.js +0 -0
  255. /package/{js → _js}/js/interpolations.js.map +0 -0
  256. /package/{js → _js}/js/onDestroy.d.ts +0 -0
  257. /package/{js → _js}/js/onDestroy.js +0 -0
  258. /package/{js → _js}/js/onDestroy.js.map +0 -0
  259. /package/{js → _js}/js/onInit.d.ts +0 -0
  260. /package/{js → _js}/js/onInit.js +0 -0
  261. /package/{js → _js}/js/onInit.js.map +0 -0
  262. /package/{js → _js}/js/processSubjectComponent.function.d.ts +0 -0
  263. /package/{js → _js}/js/processSubjectComponent.function.js +0 -0
  264. /package/{js → _js}/js/processSubjectComponent.function.js.map +0 -0
  265. /package/{js → _js}/js/processSubjectValue.function.d.ts +0 -0
  266. /package/{js → _js}/js/processSubjectValue.function.js +0 -0
  267. /package/{js → _js}/js/processSubjectValue.function.js.map +0 -0
  268. /package/{js → _js}/js/processTagArray.d.ts +0 -0
  269. /package/{js → _js}/js/processTagArray.js +0 -0
  270. /package/{js → _js}/js/processTagArray.js.map +0 -0
  271. /package/{js → _js}/js/processTagResult.function.d.ts +0 -0
  272. /package/{js → _js}/js/processTagResult.function.js +0 -0
  273. /package/{js → _js}/js/processTagResult.function.js.map +0 -0
  274. /package/{js → _js}/js/providers.d.ts +0 -0
  275. /package/{js → _js}/js/providers.js +0 -0
  276. /package/{js → _js}/js/providers.js.map +0 -0
  277. /package/{js → _js}/js/redrawTag.function.d.ts +0 -0
  278. /package/{js → _js}/js/redrawTag.function.js +0 -0
  279. /package/{js → _js}/js/redrawTag.function.js.map +0 -0
  280. /package/{js → _js}/js/render.d.ts +0 -0
  281. /package/{js → _js}/js/render.js +0 -0
  282. /package/{js → _js}/js/render.js.map +0 -0
  283. /package/{js → _js}/js/renderAppToElement.d.ts +0 -0
  284. /package/{js → _js}/js/renderAppToElement.js +0 -0
  285. /package/{js → _js}/js/renderAppToElement.js.map +0 -0
  286. /package/{js → _js}/js/setUse.function.d.ts +0 -0
  287. /package/{js → _js}/js/setUse.function.js +0 -0
  288. /package/{js → _js}/js/setUse.function.js.map +0 -0
  289. /package/{js → _js}/js/state.d.ts +0 -0
  290. /package/{js → _js}/js/state.js +0 -0
  291. /package/{js → _js}/js/state.js.map +0 -0
  292. /package/{js → _js}/js/tag.d.ts +0 -0
  293. /package/{js → _js}/js/tag.js +0 -0
  294. /package/{js → _js}/js/tag.js.map +0 -0
  295. /package/{js → _js}/js/tagElement.d.ts +0 -0
  296. /package/{js → _js}/js/tagElement.js +0 -0
  297. /package/{js → _js}/js/tagElement.js.map +0 -0
  298. /package/{js → _js}/js/tagGateway.function.d.ts +0 -0
  299. /package/{js → _js}/js/tagGateway.function.js +0 -0
  300. /package/{js → _js}/js/tagGateway.function.js.map +0 -0
  301. /package/{js → _js}/js/tagRunner.d.ts +0 -0
  302. /package/{js → _js}/js/tagRunner.js +0 -0
  303. /package/{js → _js}/js/tagRunner.js.map +0 -0
  304. /package/{js → _js}/js/templater.utils.d.ts +0 -0
  305. /package/{js → _js}/js/templater.utils.js +0 -0
  306. /package/{js → _js}/js/templater.utils.js.map +0 -0
  307. /package/{js → _js}/js/updateTag.utils.d.ts +0 -0
  308. /package/{js → _js}/js/updateTag.utils.js +0 -0
  309. /package/{js → _js}/js/updateTag.utils.js.map +0 -0
  310. /package/{js → _js}/js/wait.d.ts +0 -0
  311. /package/{js → _js}/js/wait.js +0 -0
  312. /package/{js → _js}/js/wait.js.map +0 -0
  313. /package/{js → _js}/wait.d.ts +0 -0
  314. /package/{js → _js}/wait.js +0 -0
  315. /package/{js → _js}/wait.js.map +0 -0
@@ -0,0 +1,7 @@
1
+ export interface ElementTargetEvent extends Event {
2
+ target: HTMLElement;
3
+ }
4
+ export interface InputElementTargetEvent extends Event {
5
+ target: HTMLElement;
6
+ value: string | null;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ElementTarget.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementTarget.interface.js","sourceRoot":"","sources":["../ts/ElementTarget.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export interface ElementTargetEvent extends Event {
2
+ target: HTMLElement;
3
+ }
4
+ export interface InputElementTargetEvent extends Event {
5
+ target: HTMLInputElement;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ElementTargetEvent.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ElementTargetEvent.interface.js","sourceRoot":"","sources":["../ts/ElementTargetEvent.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
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
+ import { InterpolatedTemplates } from "./interpolations.js";
7
+ export declare const variablePrefix = "__tagvar";
8
+ export declare const escapeVariable: string;
9
+ export declare const escapeSearch: RegExp;
10
+ export type Context = {
11
+ [index: string]: any;
12
+ };
13
+ export type TagMemory = Record<string, any> & {
14
+ context: Context;
15
+ state: State;
16
+ providers: Provider[];
17
+ };
18
+ export interface TagTemplate {
19
+ interpolation: InterpolatedTemplates;
20
+ string: string;
21
+ strings: string[];
22
+ values: unknown[];
23
+ context: Context;
24
+ }
25
+ export declare class Tag {
26
+ strings: string[];
27
+ values: any[];
28
+ isTag: boolean;
29
+ clones: (Element | Text | ChildNode)[];
30
+ cloneSubs: Subscription[];
31
+ children: Tag[];
32
+ tagSupport: TagSupport;
33
+ ownerTag?: Tag;
34
+ insertBefore?: Element;
35
+ appElement?: Element;
36
+ arrayValue?: unknown;
37
+ constructor(strings: string[], values: any[]);
38
+ beforeRedraw(): void;
39
+ afterRender(): void;
40
+ /** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
41
+ key(arrayValue: unknown): this;
42
+ destroy(options?: DestroyOptions): Promise<number>;
43
+ destroySubscriptions(): void;
44
+ destroyClones({ stagger }?: DestroyOptions): Promise<number>;
45
+ updateByTag(tag: Tag): void;
46
+ lastTemplateString: string | undefined;
47
+ /** A method of passing down the same render method */
48
+ setSupport(tagSupport: TagSupport): void;
49
+ updateConfig(strings: string[], values: any[]): void;
50
+ getTemplate(): TagTemplate;
51
+ isLikeTag(tag: Tag): boolean;
52
+ update(): Context;
53
+ updateValues(values: any[]): Context;
54
+ updateContext(context: Context): Context;
55
+ getAppElement(): Tag;
56
+ /** Used during HMR only where static content itself could have been edited */
57
+ rebuild(): void;
58
+ buildBeforeElement(insertBefore: Element, options?: ElementBuildOptions): (ChildNode | Element)[];
59
+ }
60
+ type DestroyOptions = {
61
+ stagger: number;
62
+ byParent?: boolean;
63
+ };
64
+ export type ElementBuildOptions = {
65
+ counts: Counts;
66
+ forceElement?: boolean;
67
+ };
68
+ export declare function processNewValue(hasValue: boolean, value: any, context: Context, variableName: string, tag: Tag): void;
69
+ export {};
@@ -0,0 +1,258 @@
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, interpolateString } 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
+ stagger: 0,
45
+ byParent: false, // Only destroy clones of direct children
46
+ }) {
47
+ // the isComponent check maybe able to be removed
48
+ const isComponent = this.tagSupport ? true : false;
49
+ if (isComponent) {
50
+ runBeforeDestroy(this.tagSupport, this);
51
+ }
52
+ this.destroySubscriptions();
53
+ const promises = this.children.map((kid) => kid.destroy({ ...options, byParent: true }));
54
+ if (!options.byParent) {
55
+ options.stagger = await this.destroyClones(options);
56
+ }
57
+ if (this.ownerTag) {
58
+ this.ownerTag.children = this.ownerTag.children.filter(child => child !== this);
59
+ }
60
+ await Promise.all(promises);
61
+ return options.stagger;
62
+ }
63
+ destroySubscriptions() {
64
+ this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
65
+ this.cloneSubs.length = 0;
66
+ }
67
+ async destroyClones({ stagger } = {
68
+ stagger: 0,
69
+ }) {
70
+ const promises = this.clones.reverse().map((clone, index) => {
71
+ let promise = Promise.resolve();
72
+ if (clone.ondestroy) {
73
+ promise = elementDestroyCheck(clone, stagger);
74
+ }
75
+ promise.then(() => {
76
+ clone.parentNode?.removeChild(clone);
77
+ const ownerTag = this.ownerTag;
78
+ if (ownerTag) {
79
+ // Sometimes my clones were first registered to my owner, remove them
80
+ ownerTag.clones = ownerTag.clones.filter(compareClone => compareClone !== clone);
81
+ }
82
+ });
83
+ return promise;
84
+ });
85
+ await Promise.all(promises);
86
+ // this.clones.length = 0
87
+ return stagger;
88
+ }
89
+ updateByTag(tag) {
90
+ this.updateConfig(tag.strings, tag.values);
91
+ this.tagSupport.templater = tag.tagSupport.templater;
92
+ }
93
+ lastTemplateString = undefined; // used to compare templates for updates
94
+ /** A method of passing down the same render method */
95
+ setSupport(tagSupport) {
96
+ this.tagSupport = tagSupport;
97
+ this.tagSupport.mutatingRender = tagSupport.mutatingRender;
98
+ }
99
+ updateConfig(strings, values) {
100
+ this.strings = strings;
101
+ this.updateValues(values);
102
+ }
103
+ getTemplate() {
104
+ const string = this.strings.map((string, index) => {
105
+ const safeString = string.replace(prefixSearch, escapeVariable);
106
+ const endString = safeString + (this.values.length > index ? `{${variablePrefix}${index}}` : '');
107
+ // const trimString = index === 0 || index === this.strings.length-1 ? endString.trim() : endString
108
+ const trimString = endString.replace(/>\s*/g, '>').replace(/\s*</g, '<');
109
+ return trimString;
110
+ }).join('');
111
+ const interpolation = interpolateString(string);
112
+ this.lastTemplateString = interpolation.string;
113
+ return {
114
+ interpolation,
115
+ // string,
116
+ string: interpolation.string,
117
+ strings: this.strings,
118
+ values: this.values,
119
+ context: this.tagSupport?.memory.context || {},
120
+ };
121
+ }
122
+ isLikeTag(tag) {
123
+ const { string } = tag.getTemplate();
124
+ if (string !== this.lastTemplateString) {
125
+ console.log('string !== this.lastTemplateString', { string, lastTemplateString: this.lastTemplateString });
126
+ }
127
+ if (string !== this.lastTemplateString) {
128
+ console.log('ejected here - 5');
129
+ return false;
130
+ }
131
+ if (tag.values.length !== this.values.length) {
132
+ console.log('length', tag.values.length, this.values.length);
133
+ }
134
+ if (tag.values.length !== this.values.length) {
135
+ console.log('ejected here - 4');
136
+ return false;
137
+ }
138
+ const allVarsMatch = tag.values.every((value, index) => {
139
+ const compareTo = this.values[index];
140
+ const isFunctions = value instanceof Function && compareTo instanceof Function;
141
+ if (isFunctions) {
142
+ const stringMatch = value.toString() === compareTo.toString();
143
+ if (stringMatch) {
144
+ return true;
145
+ }
146
+ console.log('ejected here - 3');
147
+ return false;
148
+ }
149
+ const tag = value;
150
+ if (isTagInstance(tag) && isTagInstance(compareTo)) {
151
+ tag.ownerTag = this; // let children know I own them
152
+ this.children.push(tag); // record children I created
153
+ tag.lastTemplateString || tag.getTemplate().string; // ensure last template string is generated
154
+ if (tag.isLikeTag(compareTo)) {
155
+ return true;
156
+ }
157
+ console.log('ejected here - 0');
158
+ return false;
159
+ }
160
+ return true;
161
+ });
162
+ if (allVarsMatch) {
163
+ return true;
164
+ }
165
+ console.log('ejected here - 1');
166
+ return false;
167
+ }
168
+ update() {
169
+ return this.updateContext(this.tagSupport.memory.context);
170
+ }
171
+ updateValues(values) {
172
+ this.values = values;
173
+ return this.updateContext(this.tagSupport.memory.context);
174
+ }
175
+ updateContext(context) {
176
+ this.strings.map((_string, index) => {
177
+ const variableName = variablePrefix + index;
178
+ const hasValue = this.values.length > index;
179
+ const value = this.values[index];
180
+ // is something already there?
181
+ const existing = context[variableName];
182
+ if (existing) {
183
+ return updateExistingValue(existing, value, this, variableName);
184
+ }
185
+ // 🆕 First time values below
186
+ processNewValue(hasValue, value, context, variableName, this);
187
+ });
188
+ return context;
189
+ }
190
+ getAppElement() {
191
+ let tag = this;
192
+ while (tag.ownerTag) {
193
+ tag = tag.ownerTag;
194
+ }
195
+ return tag;
196
+ }
197
+ /** Used during HMR only where static content itself could have been edited */
198
+ rebuild() {
199
+ const insertBefore = this.insertBefore;
200
+ if (!insertBefore) {
201
+ const err = new Error('Cannot rebuild. Previous insertBefore element is not defined on tag');
202
+ err.tag = this;
203
+ throw err;
204
+ }
205
+ this.buildBeforeElement(insertBefore, {
206
+ forceElement: true,
207
+ counts: { added: 0, removed: 0 },
208
+ });
209
+ }
210
+ buildBeforeElement(insertBefore, options = {
211
+ forceElement: false,
212
+ counts: { added: 0, removed: 0 },
213
+ }) {
214
+ this.insertBefore = insertBefore;
215
+ const context = this.update();
216
+ const template = this.getTemplate();
217
+ // const ownerTag = this.ownerTag
218
+ const temporary = document.createElement('div');
219
+ temporary.id = 'tag-temp-holder';
220
+ // render content with a first child that we can know is our first element
221
+ temporary.innerHTML = `<template tag-wrap="22">${template.string}</template>`;
222
+ // const clonesBefore = this.clones.map(clone => clone)
223
+ const intClones = interpolateElement(temporary, context, template, this, // this.ownerTag || this,
224
+ { forceElement: options.forceElement });
225
+ this.clones.length = 0;
226
+ const clones = buildClones(temporary, insertBefore);
227
+ this.clones.push(...clones);
228
+ if (intClones.length) {
229
+ this.clones = this.clones.filter(cloneFilter => !intClones.find(clone => clone === cloneFilter));
230
+ }
231
+ this.clones.forEach(clone => afterElmBuild(clone, options));
232
+ return this.clones;
233
+ }
234
+ }
235
+ export function processNewValue(hasValue, value, context, variableName, tag) {
236
+ if (isTagComponent(value)) {
237
+ const existing = context[variableName] = new ValueSubject(value);
238
+ setValueRedraw(value, existing, tag);
239
+ return;
240
+ }
241
+ if (value instanceof Function) {
242
+ context[variableName] = getSubjectFunction(value, tag);
243
+ return;
244
+ }
245
+ if (!hasValue) {
246
+ return; // more strings than values, stop here
247
+ }
248
+ if (isTagInstance(value)) {
249
+ value.ownerTag = tag;
250
+ tag.children.push(value);
251
+ }
252
+ if (isSubjectInstance(value)) {
253
+ context[variableName] = value;
254
+ return;
255
+ }
256
+ context[variableName] = new ValueSubject(value);
257
+ }
258
+ //# sourceMappingURL=Tag.class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/E,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAG1D,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAA;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,cAAc,GAAG,IAAI,CAAA;AAE1D,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;AAiB3D,MAAM,OAAO,GAAG;IAkBL;IACA;IAlBT,KAAK,GAAG,IAAI,CAAA;IAEZ,MAAM,GAAmC,EAAE,CAAA,CAAC,uBAAuB;IACnE,SAAS,GAAmB,EAAE,CAAA,CAAC,kCAAkC;IACjE,QAAQ,GAAU,EAAE,CAAA,CAAC,aAAa;IAElC,UAAU,CAAa;IAEvB,qCAAqC;IACrC,QAAQ,CAAM;IACd,YAAY,CAAU;IACtB,UAAU,CAAU,CAAC,+CAA+C;IAEpE,sDAAsD;IACtD,UAAU,CAAU;IAEpB,YACS,OAAiB,EACjB,MAAa;QADb,YAAO,GAAP,OAAO,CAAU;QACjB,WAAM,GAAN,MAAM,CAAO;IACnB,CAAC;IAEJ,YAAY;QACV,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,WAAW;QACT,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACvC,CAAC;IAED,mFAAmF;IACnF,GAAG,CAAC,UAAmB;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,OAAO,CACX,UAA0B;QACxB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,KAAK,EAAE,yCAAyC;KAC3D;QAED,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;QAClD,IAAG,WAAW,EAAE,CAAC;YACf,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QACzC,CAAC;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,CAAA;QAEtF,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAG,CAAC;YACvB,OAAO,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACrD,CAAC;QAED,IAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAE3B,OAAO,OAAO,CAAC,OAAO,CAAA;IACxB,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAC1D,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,EAAC,OAAO,KAAoB;QAC1B,OAAO,EAAE,CAAC;KACX;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,KAAa,EAAE,EAAE;YACvE,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;YAE/B,IAAI,KAAK,CAAC,SAAS,EAAG,CAAC;gBACrB,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;YAC/C,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChB,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;gBAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;gBAC9B,IAAG,QAAQ,EAAE,CAAC;oBACZ,qEAAqE;oBACrE,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,CAAA;gBAClF,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC3B,yBAAyB;QAEzB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,WAAW,CAAC,GAAQ;QAClB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAA;IACtD,CAAC;IAED,kBAAkB,GAAuB,SAAS,CAAA,CAAC,wCAAwC;IAE3F,sDAAsD;IACtD,UAAU,CAAC,UAAsB;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAA;IAC5D,CAAC;IAED,YAAY,CAAC,OAAiB,EAAE,MAAa;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAChD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAA;YAC/D,MAAM,SAAS,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAChG,mGAAmG;YACnG,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAC,GAAG,CAAC,CAAA;YACtE,OAAO,UAAU,CAAA;QACnB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEX,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAA;QAC9C,OAAO;YACL,aAAa;YACb,UAAU;YACV,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;SAC/C,CAAA;IACH,CAAC;IAED,SAAS,CAAC,GAAQ;QAChB,MAAM,EAAC,MAAM,EAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;QAClC,IAAG,MAAM,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,EAAC,MAAM,EAAE,kBAAkB,EAAC,IAAI,CAAC,kBAAkB,EAAC,CAAC,CAAA;QACzG,CAAC;QACD,IAAG,MAAM,KAAK,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAC/B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAG,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9D,CAAC;QACD,IAAG,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YAC/B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpC,MAAM,WAAW,GAAG,KAAK,YAAY,QAAQ,IAAI,SAAS,YAAY,QAAQ,CAAA;YAE9E,IAAG,WAAW,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAA;gBAC7D,IAAG,WAAW,EAAE,CAAC;oBACf,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;gBAC/B,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,GAAG,GAAG,KAAY,CAAA;YACxB,IAAG,aAAa,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAA,CAAC,+BAA+B;gBACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAC,oCAAoC;gBAC5D,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,CAAA,CAAC,2CAA2C;gBAE9F,IAAG,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAA;gBACb,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;gBAC/B,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;QAEF,IAAG,YAAY,EAAE,CAAC;YAChB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,aAAa,CAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAE,CAAA;IAC7D,CAAC;IAED,YAAY,CAAC,MAAa;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;IAED,aAAa,CAAC,OAAgB;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;YAClC,MAAM,YAAY,GAAG,cAAc,GAAG,KAAK,CAAA;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAA;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAEhC,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAe,CAAA;YAEpD,IAAG,QAAQ,EAAE,CAAC;gBACZ,OAAO,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;YACjE,CAAC;YAED,6BAA6B;YAE7B,eAAe,CACb,QAAQ,EACR,KAAK,EACL,OAAO,EACP,YAAY,EACZ,IAAI,CACL,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,aAAa;QACX,IAAI,GAAG,GAAQ,IAAI,CAAA;QAEnB,OAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;YACnB,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAA;QACpB,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,8EAA8E;IAC9E,OAAO;QACL,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACtC,IAAG,CAAC,YAAY,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAC3F;YAAC,GAAW,CAAC,GAAG,GAAG,IAAI,CAAA;YACxB,MAAM,GAAG,CAAA;QACX,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;YACpC,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAC;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,kBAAkB,CAChB,YAAqB,EACrB,UAA+B;QAC7B,YAAY,EAAE,KAAK;QACnB,MAAM,EAAE,EAAC,KAAK,EAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAC;KAC9B;QAED,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAEhC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACnC,iCAAiC;QAEjC,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC/C,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAA;QAChC,0EAA0E;QAC1E,SAAS,CAAC,SAAS,GAAG,2BAA2B,QAAQ,CAAC,MAAM,aAAa,CAAA;QAE7E,uDAAuD;QACvD,MAAM,SAAS,GAAG,kBAAkB,CAClC,SAAS,EACT,OAAO,EACP,QAAQ,EACR,IAAI,EAAE,yBAAyB;QAC/B,EAAC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAC,CACrC,CAAA;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QACtB,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAE,GAAG,MAAM,CAAE,CAAA;QAE7B,IAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAA;QACjG,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAE3D,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF;AAYD,MAAM,UAAU,eAAe,CAC7B,QAAiB,EACjB,KAAU,EACV,OAAgB,EAChB,YAAoB,EACpB,GAAQ;IAER,IAAG,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,CAAe,CAAA;QAC9E,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;QACpC,OAAM;IACR,CAAC;IAED,IAAG,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QACtD,OAAM;IACR,CAAC;IAED,IAAG,CAAC,QAAQ,EAAE,CAAC;QACb,OAAM,CAAC,sCAAsC;IAC/C,CAAC;IAED,IAAG,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAA;QACpB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,IAAG,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,YAAY,CAAC,GAAG,KAAK,CAAA;QAC7B,OAAM;IACR,CAAC;IAED,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAA;AACjD,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementInitCheck.js","sourceRoot":"","sources":["../ts/elementInitCheck.ts"],"names":[],"mappings":"AAGA,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,EAAwC,CAAA;IAClG,MAAM,CAAC,KAAK,CAAC,CAAA;IACb,EAAE,MAAM,CAAC,KAAK,CAAA;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Gateway } from "./tagGateway.utils.js";
2
+ /** <tag-element id="" props="json-string" />
3
+ * For Angular @NgModule({schemas: [CUSTOM_ELEMENTS_SCHEMA]}) is required
4
+ */
5
+ export declare class TagElement extends HTMLElement {
6
+ gateway: Gateway;
7
+ constructor();
8
+ disconnectedCallback(): void;
9
+ }
10
+ /** Call me one time */
11
+ export declare function initWebComponents(): void;
@@ -0,0 +1,20 @@
1
+ import { checkByElement, destroyGateway } from "./tagGateway.utils.js";
2
+ /** <tag-element id="" props="json-string" />
3
+ * For Angular @NgModule({schemas: [CUSTOM_ELEMENTS_SCHEMA]}) is required
4
+ */
5
+ export class TagElement extends HTMLElement {
6
+ gateway;
7
+ constructor() {
8
+ super();
9
+ // attributes are not available right away
10
+ setTimeout(() => this.gateway = checkByElement(this), 0);
11
+ }
12
+ disconnectedCallback() {
13
+ destroyGateway(this.gateway);
14
+ }
15
+ }
16
+ /** Call me one time */
17
+ export function initWebComponents() {
18
+ customElements.define('tag-element', TagElement);
19
+ }
20
+ //# sourceMappingURL=gateway.web.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.web.component.js","sourceRoot":"","sources":["../../ts/gateway/gateway.web.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,cAAc,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE/E;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,WAAW;IACzC,OAAO,CAAU;IAEjB;QACE,KAAK,EAAE,CAAA;QACP,0CAA0C;QAC1C,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,oBAAoB;QAClB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;CACF;AAED,uBAAuB;AACvB,MAAM,UAAU,iBAAiB;IAC/B,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { loadTagGateway } from "./loadTagGateway.function.js";
2
+ export { initWebComponents } from "./gateway.web.component.js";
3
+ export { tagGateway } from "./tagGateway.function.js";
@@ -0,0 +1,4 @@
1
+ export { loadTagGateway } from "./loadTagGateway.function.js";
2
+ export { initWebComponents } from "./gateway.web.component.js";
3
+ export { tagGateway } from "./tagGateway.function.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { TagComponent } from "../index.js";
2
+ export declare function loadTagGateway(component: TagComponent): string;
@@ -0,0 +1,18 @@
1
+ import { initWebComponents } from "./gateway.web.component.js";
2
+ import { gatewayTagIds, getTagId } from "./tagGateway.utils.js";
3
+ let hasInitWebComponents = false;
4
+ export function loadTagGateway(component) {
5
+ if (!hasInitWebComponents) {
6
+ try {
7
+ initWebComponents();
8
+ }
9
+ catch (err) {
10
+ throw err;
11
+ }
12
+ hasInitWebComponents = true;
13
+ }
14
+ const id = getTagId(component);
15
+ gatewayTagIds[id] = component;
16
+ return id;
17
+ }
18
+ //# sourceMappingURL=loadTagGateway.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadTagGateway.function.js","sourceRoot":"","sources":["../../ts/gateway/loadTagGateway.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE/D,IAAI,oBAAoB,GAAG,KAAK,CAAA;AAEhC,MAAM,UAAU,cAAc,CAAC,SAAuB;IACpD,IAAG,CAAC,oBAAoB,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,iBAAiB,EAAE,CAAA;QACrB,CAAC;QAAC,OAAM,GAAG,EAAE,CAAC;YACZ,MAAM,GAAG,CAAA;QACX,CAAC;QAED,oBAAoB,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC9B,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { TagComponent } from "../index.js";
2
+ export declare const tagGateway: (component: TagComponent) => {
3
+ id: string;
4
+ };
@@ -0,0 +1,49 @@
1
+ import { checkElement, getTagId } from "./tagGateway.utils.js";
2
+ const namedTimeouts = {};
3
+ export const tagGateway = function tagGateway(component) {
4
+ const id = getTagId(component);
5
+ if (namedTimeouts[id]) {
6
+ return namedTimeouts[id];
7
+ }
8
+ let intervalId;
9
+ let hitCount = 0;
10
+ const interval = 5;
11
+ function findElements() {
12
+ const elements = checkTagElementsById(id, component);
13
+ if (!elements.length) {
14
+ return elements.length;
15
+ }
16
+ // Element has been found, load
17
+ if (intervalId) {
18
+ clearInterval(intervalId);
19
+ }
20
+ delete namedTimeouts[id];
21
+ return elements.length;
22
+ }
23
+ function findElement() {
24
+ intervalId = setInterval(() => {
25
+ hitCount = hitCount + interval;
26
+ if (hitCount >= 2000) {
27
+ clearInterval(intervalId);
28
+ throw new Error(`TaggedJs Element ${id} not found`);
29
+ }
30
+ findElements();
31
+ }, interval);
32
+ }
33
+ const elementCounts = findElements();
34
+ if (elementCounts) {
35
+ return { id };
36
+ }
37
+ findElement();
38
+ namedTimeouts[id] = { id };
39
+ return namedTimeouts[id];
40
+ };
41
+ function checkTagElementsById(id, component) {
42
+ const elements = document.querySelectorAll('#' + id);
43
+ return checkTagElements(id, elements, component);
44
+ }
45
+ function checkTagElements(id, elements, component) {
46
+ elements.forEach(element => checkElement(id, element, component));
47
+ return elements;
48
+ }
49
+ //# sourceMappingURL=tagGateway.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagGateway.function.js","sourceRoot":"","sources":["../../ts/gateway/tagGateway.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE9D,MAAM,aAAa,GAAwB,EAAE,CAAA;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,UAAU,CAC3C,SAAuB;IAEvB,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAE9B,IAAG,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,aAAa,CAAC,EAAE,CAAC,CAAA;IAC1B,CAAC;IAED,IAAI,UAA0B,CAAA;IAC9B,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,QAAQ,GAAG,CAAC,CAAA;IAElB,SAAS,YAAY;QACnB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QAEpD,IAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,QAAQ,CAAC,MAAM,CAAA;QACxB,CAAC;QAED,+BAA+B;QAC/B,IAAG,UAAU,EAAE,CAAC;YACd,aAAa,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,aAAa,CAAC,EAAE,CAAC,CAAA;QAExB,OAAO,QAAQ,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,SAAS,WAAW;QAClB,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;YAE9B,IAAG,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACpB,aAAa,CAAC,UAAU,CAAC,CAAA;gBACzB,MAAM,IAAI,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;YACrD,CAAC;YAED,YAAY,EAAE,CAAA;QAChB,CAAC,EAAE,QAAQ,CAAC,CAAA;IACd,CAAC;IAED,MAAM,aAAa,GAAG,YAAY,EAAE,CAAA;IACpC,IAAG,aAAa,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,CAAA;IACf,CAAC;IAED,WAAW,EAAE,CAAA;IAEb,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAA;IAE1B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,SAAS,oBAAoB,CAC3B,EAAU,EACV,SAAuB;IAEvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;IACpD,OAAO,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAU,EACV,QAA6B,EAC7B,SAAuB;IAEvB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;IAEjE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { TagComponent, Tag } from "../index.js";
2
+ export declare const gatewayTagIds: {
3
+ [id: string]: TagComponent;
4
+ };
5
+ export declare function checkAllGateways(): void;
6
+ export declare function checkGateways(gateways: Gateway[]): void;
7
+ export declare function destroyGateway(gateway: Gateway): void;
8
+ export declare function getTagId(component: TagComponent): string;
9
+ export type EventData = {
10
+ detail: Record<string, any>;
11
+ };
12
+ export type Gateway = {
13
+ tag: Tag;
14
+ id: string;
15
+ observer: MutationObserver;
16
+ element: HTMLElement;
17
+ component: TagComponent;
18
+ updateTag: () => unknown;
19
+ };
20
+ export declare function checkByElement(element: HTMLElement | Element): Gateway;
21
+ export declare function checkElement(id: string, element: Element, component: TagComponent): Gateway;