taggedjs 2.1.2 → 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 (228) 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 +7 -2
  9. package/js/Subject.js +15 -10
  10. package/js/Subject.js.map +1 -1
  11. package/js/Tag.class.d.ts +37 -13
  12. package/js/Tag.class.js +133 -99
  13. package/js/Tag.class.js.map +1 -1
  14. package/js/Tag.utils.d.ts +8 -20
  15. package/js/Tag.utils.js +17 -88
  16. package/js/Tag.utils.js.map +1 -1
  17. package/js/ValueSubject.d.ts +1 -1
  18. package/js/ValueSubject.js.map +1 -1
  19. package/js/bindSubjectCallback.function.d.ts +5 -0
  20. package/js/bindSubjectCallback.function.js +19 -0
  21. package/js/bindSubjectCallback.function.js.map +1 -0
  22. package/js/elementDestroyCheck.function.d.ts +3 -0
  23. package/js/elementDestroyCheck.function.js +17 -0
  24. package/js/elementDestroyCheck.function.js.map +1 -0
  25. package/js/elementInitCheck.js.map +1 -1
  26. package/js/gateway/gateway.web.component.d.ts +11 -0
  27. package/js/gateway/gateway.web.component.js +20 -0
  28. package/js/gateway/gateway.web.component.js.map +1 -0
  29. package/js/gateway/index.d.ts +3 -0
  30. package/js/gateway/index.js +3 -0
  31. package/js/gateway/index.js.map +1 -0
  32. package/js/gateway/loadTagGateway.function.d.ts +2 -0
  33. package/js/gateway/loadTagGateway.function.js +18 -0
  34. package/js/gateway/loadTagGateway.function.js.map +1 -0
  35. package/js/gateway/tagGateway.function.d.ts +31 -0
  36. package/js/gateway/tagGateway.function.js +187 -0
  37. package/js/gateway/tagGateway.function.js.map +1 -0
  38. package/js/getCallback.js +39 -42
  39. package/js/getCallback.js.map +1 -1
  40. package/js/getTagSupport.d.ts +18 -17
  41. package/js/getTagSupport.js +104 -15
  42. package/js/getTagSupport.js.map +1 -1
  43. package/js/html.d.ts +1 -1
  44. package/js/html.js.map +1 -1
  45. package/js/index.d.ts +16 -7
  46. package/js/index.js +20 -8
  47. package/js/index.js.map +1 -1
  48. package/js/inputAttribute.js +3 -3
  49. package/js/inputAttribute.js.map +1 -1
  50. package/js/interpolateAttributes.d.ts +2 -1
  51. package/js/interpolateAttributes.js +126 -60
  52. package/js/interpolateAttributes.js.map +1 -1
  53. package/js/interpolateContentTemplates.d.ts +4 -1
  54. package/js/interpolateContentTemplates.js +32 -25
  55. package/js/interpolateContentTemplates.js.map +1 -1
  56. package/js/interpolateElement.d.ts +8 -13
  57. package/js/interpolateElement.js +26 -22
  58. package/js/interpolateElement.js.map +1 -1
  59. package/js/interpolateTemplate.d.ts +15 -19
  60. package/js/interpolateTemplate.js +33 -231
  61. package/js/interpolateTemplate.js.map +1 -1
  62. package/js/interpolations.d.ts +3 -2
  63. package/js/interpolations.js +2 -1
  64. package/js/interpolations.js.map +1 -1
  65. package/js/isInstance.d.ts +6 -0
  66. package/js/isInstance.js +10 -0
  67. package/js/isInstance.js.map +1 -0
  68. package/js/js/Clones.type.d.ts +1 -0
  69. package/js/js/Clones.type.js +2 -0
  70. package/js/js/Clones.type.js.map +1 -0
  71. package/js/js/Props.d.ts +1 -0
  72. package/js/js/Props.js +2 -0
  73. package/js/js/Props.js.map +1 -0
  74. package/js/js/Subject.d.ts +7 -2
  75. package/js/js/Subject.js +15 -10
  76. package/js/js/Subject.js.map +1 -1
  77. package/js/js/Tag.class.d.ts +27 -5
  78. package/js/js/Tag.class.js +109 -81
  79. package/js/js/Tag.class.js.map +1 -1
  80. package/js/js/Tag.utils.d.ts +8 -20
  81. package/js/js/Tag.utils.js +17 -88
  82. package/js/js/Tag.utils.js.map +1 -1
  83. package/js/js/ValueSubject.d.ts +1 -1
  84. package/js/js/ValueSubject.js.map +1 -1
  85. package/js/js/bindSubjectCallback.function.d.ts +5 -0
  86. package/js/js/bindSubjectCallback.function.js +19 -0
  87. package/js/js/bindSubjectCallback.function.js.map +1 -0
  88. package/js/js/elementDestroyCheck.function.d.ts +3 -0
  89. package/js/js/elementDestroyCheck.function.js +17 -0
  90. package/js/js/elementDestroyCheck.function.js.map +1 -0
  91. package/js/js/elementInitCheck.js.map +1 -1
  92. package/js/js/getCallback.js +39 -42
  93. package/js/js/getCallback.js.map +1 -1
  94. package/js/js/getTagSupport.d.ts +19 -17
  95. package/js/js/getTagSupport.js +111 -15
  96. package/js/js/getTagSupport.js.map +1 -1
  97. package/js/js/html.d.ts +1 -1
  98. package/js/js/html.js.map +1 -1
  99. package/js/js/index.d.ts +16 -7
  100. package/js/js/index.js +20 -8
  101. package/js/js/index.js.map +1 -1
  102. package/js/js/interpolateAttributes.d.ts +2 -1
  103. package/js/js/interpolateAttributes.js +118 -60
  104. package/js/js/interpolateAttributes.js.map +1 -1
  105. package/js/js/interpolateContentTemplates.d.ts +3 -1
  106. package/js/js/interpolateContentTemplates.js +32 -22
  107. package/js/js/interpolateContentTemplates.js.map +1 -1
  108. package/js/js/interpolateElement.d.ts +7 -12
  109. package/js/js/interpolateElement.js +18 -21
  110. package/js/js/interpolateElement.js.map +1 -1
  111. package/js/js/interpolateTemplate.d.ts +15 -19
  112. package/js/js/interpolateTemplate.js +33 -231
  113. package/js/js/interpolateTemplate.js.map +1 -1
  114. package/js/js/interpolations.d.ts +3 -1
  115. package/js/js/interpolations.js +3 -3
  116. package/js/js/interpolations.js.map +1 -1
  117. package/js/js/isInstance.d.ts +6 -0
  118. package/js/js/isInstance.js +10 -0
  119. package/js/js/isInstance.js.map +1 -0
  120. package/js/js/onDestroy.d.ts +2 -0
  121. package/js/js/onDestroy.js +20 -0
  122. package/js/js/onDestroy.js.map +1 -0
  123. package/js/js/onInit.d.ts +0 -4
  124. package/js/js/onInit.js +12 -10
  125. package/js/js/onInit.js.map +1 -1
  126. package/js/js/processSubjectComponent.function.d.ts +8 -0
  127. package/js/js/processSubjectComponent.function.js +53 -0
  128. package/js/js/processSubjectComponent.function.js.map +1 -0
  129. package/js/js/processSubjectValue.function.d.ts +16 -0
  130. package/js/js/processSubjectValue.function.js +122 -0
  131. package/js/js/processSubjectValue.function.js.map +1 -0
  132. package/js/js/processTagArray.d.ts +5 -1
  133. package/js/js/processTagArray.js +21 -10
  134. package/js/js/processTagArray.js.map +1 -1
  135. package/js/js/processTagResult.function.d.ts +10 -0
  136. package/js/js/processTagResult.function.js +42 -0
  137. package/js/js/processTagResult.function.js.map +1 -0
  138. package/js/js/providers.d.ts +4 -12
  139. package/js/js/providers.js +28 -20
  140. package/js/js/providers.js.map +1 -1
  141. package/js/js/redrawTag.function.d.ts +7 -0
  142. package/js/js/redrawTag.function.js +9 -0
  143. package/js/js/redrawTag.function.js.map +1 -0
  144. package/js/js/render.d.ts +1 -6
  145. package/js/js/render.js +8 -15
  146. package/js/js/render.js.map +1 -1
  147. package/js/js/renderAppToElement.d.ts +8 -2
  148. package/js/js/renderAppToElement.js +40 -21
  149. package/js/js/renderAppToElement.js.map +1 -1
  150. package/js/js/setUse.function.d.ts +23 -0
  151. package/js/js/setUse.function.js +14 -0
  152. package/js/js/setUse.function.js.map +1 -0
  153. package/js/js/state.d.ts +14 -11
  154. package/js/js/state.js +68 -33
  155. package/js/js/state.js.map +1 -1
  156. package/js/js/tag.d.ts +7 -16
  157. package/js/js/tag.js +33 -44
  158. package/js/js/tag.js.map +1 -1
  159. package/js/js/tagElement.d.ts +14 -0
  160. package/js/js/tagElement.js +57 -0
  161. package/js/js/tagElement.js.map +1 -0
  162. package/js/js/tagGateway.function.d.ts +5 -0
  163. package/js/js/tagGateway.function.js +119 -0
  164. package/js/js/tagGateway.function.js.map +1 -0
  165. package/js/js/tagRunner.d.ts +2 -13
  166. package/js/js/tagRunner.js +12 -12
  167. package/js/js/tagRunner.js.map +1 -1
  168. package/js/js/templater.utils.d.ts +28 -0
  169. package/js/js/templater.utils.js +99 -0
  170. package/js/js/templater.utils.js.map +1 -0
  171. package/js/js/updateTag.utils.d.ts +6 -0
  172. package/js/js/updateTag.utils.js +84 -0
  173. package/js/js/updateTag.utils.js.map +1 -0
  174. package/js/onDestroy.d.ts +2 -0
  175. package/js/onDestroy.js +20 -0
  176. package/js/onDestroy.js.map +1 -0
  177. package/js/onInit.d.ts +0 -4
  178. package/js/onInit.js +12 -10
  179. package/js/onInit.js.map +1 -1
  180. package/js/processSubjectComponent.function.d.ts +8 -0
  181. package/js/processSubjectComponent.function.js +53 -0
  182. package/js/processSubjectComponent.function.js.map +1 -0
  183. package/js/processSubjectValue.function.d.ts +16 -0
  184. package/js/processSubjectValue.function.js +122 -0
  185. package/js/processSubjectValue.function.js.map +1 -0
  186. package/js/processTagArray.d.ts +5 -1
  187. package/js/processTagArray.js +21 -10
  188. package/js/processTagArray.js.map +1 -1
  189. package/js/processTagResult.function.d.ts +10 -0
  190. package/js/processTagResult.function.js +39 -0
  191. package/js/processTagResult.function.js.map +1 -0
  192. package/js/providers.d.ts +4 -12
  193. package/js/providers.js +28 -20
  194. package/js/providers.js.map +1 -1
  195. package/js/redrawTag.function.d.ts +7 -0
  196. package/js/redrawTag.function.js +8 -0
  197. package/js/redrawTag.function.js.map +1 -0
  198. package/js/render.d.ts +1 -6
  199. package/js/render.js +5 -19
  200. package/js/render.js.map +1 -1
  201. package/js/renderAppToElement.d.ts +8 -2
  202. package/js/renderAppToElement.js +40 -21
  203. package/js/renderAppToElement.js.map +1 -1
  204. package/js/setUse.function.d.ts +23 -0
  205. package/js/setUse.function.js +14 -0
  206. package/js/setUse.function.js.map +1 -0
  207. package/js/state.d.ts +14 -11
  208. package/js/state.js +68 -33
  209. package/js/state.js.map +1 -1
  210. package/js/tag.d.ts +6 -16
  211. package/js/tag.js +32 -43
  212. package/js/tag.js.map +1 -1
  213. package/js/tagElement.d.ts +14 -0
  214. package/js/tagElement.js +57 -0
  215. package/js/tagElement.js.map +1 -0
  216. package/js/tagGateway.function.d.ts +14 -0
  217. package/js/tagGateway.function.js +138 -0
  218. package/js/tagGateway.function.js.map +1 -0
  219. package/js/tagRunner.d.ts +2 -13
  220. package/js/tagRunner.js +12 -12
  221. package/js/tagRunner.js.map +1 -1
  222. package/js/templater.utils.d.ts +27 -0
  223. package/js/templater.utils.js +98 -0
  224. package/js/templater.utils.js.map +1 -0
  225. package/js/updateTag.utils.d.ts +6 -0
  226. package/js/updateTag.utils.js +102 -0
  227. package/js/updateTag.utils.js.map +1 -0
  228. package/package.json +1 -1
@@ -1,8 +1,13 @@
1
1
  export type Subscription = (() => void) & {
2
2
  unsubscribe: () => any;
3
3
  };
4
- type Subscriber = () => any;
5
- export declare class Subject {
4
+ type Subscriber = (value?: any) => any;
5
+ export interface SubjectLike {
6
+ subscribe: (callback: (value?: any) => any) => any;
7
+ isSubject?: boolean;
8
+ }
9
+ export declare class Subject<T> implements SubjectLike {
10
+ isSubject: boolean;
6
11
  subscribers: Subscriber[];
7
12
  value?: any;
8
13
  subscribe(callback: Subscriber): Subscription;
package/js/js/Subject.js CHANGED
@@ -1,18 +1,23 @@
1
1
  export class Subject {
2
+ isSubject = true;
2
3
  subscribers = [];
3
4
  value;
4
5
  // unsubcount = 0 // 🔬 testing
5
6
  subscribe(callback) {
6
7
  this.subscribers.push(callback);
7
- Subject.globalSubs.push(callback); // 🔬 testing
8
- ++Subject.globalSubCount;
8
+ SubjectClass.globalSubs.push(callback); // 🔬 testing
9
+ SubjectClass.globalSubCount$.set(SubjectClass.globalSubCount$.value + 1);
9
10
  const unsubscribe = () => {
10
- removeSubFromArray(this.subscribers, callback);
11
- removeSubFromArray(Subject.globalSubs, callback); // 🔬 testing
12
- --Subject.globalSubCount;
11
+ unsubscribe.unsubscribe();
13
12
  };
14
13
  // Return a function to unsubscribe from the BehaviorSubject
15
- unsubscribe.unsubscribe = unsubscribe;
14
+ unsubscribe.unsubscribe = () => {
15
+ removeSubFromArray(this.subscribers, callback);
16
+ removeSubFromArray(SubjectClass.globalSubs, callback); // 🔬 testing
17
+ SubjectClass.globalSubCount$.set(SubjectClass.globalSubCount$.value - 1);
18
+ // any double unsubscribes will be ignored
19
+ unsubscribe.unsubscribe = () => undefined;
20
+ };
16
21
  return unsubscribe;
17
22
  }
18
23
  set(value) {
@@ -31,8 +36,8 @@ function removeSubFromArray(subscribers, callback) {
31
36
  subscribers.splice(index, 1);
32
37
  }
33
38
  }
34
- ;
35
- Subject.globalSubCount = 0 // for ease of debugging
36
- ;
37
- Subject.globalSubs = []; // 🔬 testing
39
+ const SubjectClass = Subject;
40
+ SubjectClass.globalSubs = []; // 🔬 for testing
41
+ SubjectClass.globalSubCount$ = new Subject(); // for ease of debugging
42
+ SubjectClass.globalSubCount$.set(0);
38
43
  //# sourceMappingURL=Subject.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Subject.js","sourceRoot":"","sources":["../ts/Subject.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,OAAO;IAClB,WAAW,GAAiB,EAAE,CAAA;IAC9B,KAAK,CAAM;IACX,+BAA+B;IAE/B,SAAS,CAAC,QAAoB;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9B;QAAC,OAAe,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,aAAa;QAEzD,EAAG,OAAe,CAAC,cAAc,CAAA;QAEjC,MAAM,WAAW,GAAiB,GAAG,EAAE;YACrC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC9C,kBAAkB,CAAE,OAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA,CAAC,aAAa;YACvE,EAAG,OAAe,CAAC,cAAc,CAAA;QACnC,CAAC,CAAA;QAED,4DAA4D;QAC5D,WAAW,CAAC,WAAW,GAAG,WAAW,CAAA;QAErC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,KAAU;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,4CAA4C;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YACzC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAA;CAChB;AAED,SAAS,kBAAkB,CACzB,WAAyB,EACzB,QAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,CAAC;AAAC,OAAe,CAAC,cAAc,GAAG,CAAC,CAAC,wBAAwB;CAC5D;AAAC,OAAe,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,aAAa"}
1
+ {"version":3,"file":"Subject.js","sourceRoot":"","sources":["../ts/Subject.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,OAAO;IAClB,SAAS,GAAG,IAAI,CAAA;IAChB,WAAW,GAAiB,EAAE,CAAA;IAC9B,KAAK,CAAM;IACX,+BAA+B;IAE/B,SAAS,CAAC,QAAoB;QAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA,CAAC,aAAa;QACpD,YAAY,CAAC,eAAe,CAAC,GAAG,CAAE,YAAY,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAE,CAAA;QAE1E,MAAM,WAAW,GAAiB,GAAG,EAAE;YACrC,WAAW,CAAC,WAAW,EAAE,CAAA;QAC3B,CAAC,CAAA;QAED,4DAA4D;QAC5D,WAAW,CAAC,WAAW,GAAG,GAAG,EAAE;YAC7B,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;YAC9C,kBAAkB,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA,CAAC,aAAa;YACnE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAE,YAAY,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,CAAE,CAAA;YAE1E,0CAA0C;YAC1C,WAAW,CAAC,WAAW,GAAG,GAAG,EAAE,CAAC,SAAS,CAAA;QAC3C,CAAC,CAAA;QAED,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,KAAU;QACZ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAElB,4CAA4C;QAC5C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE;YACzC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAA;CAChB;AAED,SAAS,kBAAkB,CACzB,WAAyB,EACzB,QAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC9B,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,OAGpB,CAAA;AACD,YAAY,CAAC,UAAU,GAAG,EAAE,CAAA,CAAC,iBAAiB;AAC9C,YAAY,CAAC,eAAe,GAAG,IAAI,OAAO,EAAE,CAAA,CAAC,wBAAwB;AACrE,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA"}
@@ -1,31 +1,39 @@
1
1
  import { TagSupport } from "./getTagSupport.js";
2
2
  import { Provider } from "./providers.js";
3
3
  import { Subscription } from "./Subject.js";
4
- export declare const variablePrefix = "__tagVar";
4
+ import { Counts } from "./interpolateTemplate.js";
5
+ import { State } from "./state.js";
6
+ export declare const variablePrefix = "__tagvar";
5
7
  export declare const escapeVariable: string;
6
8
  export declare const escapeSearch: RegExp;
7
9
  export type Context = {
8
10
  [index: string]: any;
9
11
  };
12
+ export type TagMemory = Record<string, any> & {
13
+ context: Context;
14
+ state: State;
15
+ providers: Provider[];
16
+ };
10
17
  export declare class Tag {
11
18
  strings: string[];
12
19
  values: any[];
13
- context: Context;
20
+ isTag: boolean;
14
21
  clones: (Element | Text | ChildNode)[];
15
22
  cloneSubs: Subscription[];
16
23
  children: Tag[];
17
24
  tagSupport: TagSupport;
18
25
  ownerTag?: Tag;
26
+ insertBefore?: Element;
27
+ appElement?: Element;
19
28
  arrayValue?: any[];
20
29
  constructor(strings: string[], values: any[]);
21
- providers: Provider[];
22
30
  beforeRedraw(): void;
23
31
  afterRender(): void;
24
32
  /** Used for array, such as array.map(), calls aka array.map(x => html``.key(x)) */
25
33
  key(arrayValue: any[]): this;
26
- destroy(stagger?: number, byParent?: boolean): number;
34
+ destroy(options?: DestroyOptions): Promise<number>;
27
35
  destroySubscriptions(): void;
28
- destroyClones(stagger?: number): number;
36
+ destroyClones({ stagger }?: DestroyOptions): Promise<number>;
29
37
  updateByTag(tag: Tag): void;
30
38
  lastTemplateString: string | undefined;
31
39
  /** A method of passing down the same render method */
@@ -42,4 +50,18 @@ export declare class Tag {
42
50
  updateValues(values: any[]): Context;
43
51
  updateContext(context: Context): Context;
44
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)[];
45
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 {};
@@ -1,30 +1,34 @@
1
- import { bindSubjectFunction, elementDestroyCheck, getSubjectFunction, setValueRedraw } from "./Tag.utils.js";
2
- import { getTagSupport } from "./getTagSupport.js";
3
- import { isTagComponent } from "./interpolateTemplate.js";
1
+ import { getSubjectFunction, setValueRedraw } from "./Tag.utils.js";
4
2
  import { ValueSubject } from "./ValueSubject.js";
5
- import { deepEqual } from "./deepFunctions.js";
6
- import { runAfterRender, runBeforeRedraw, runBeforeRender } from "./tagRunner.js";
7
- export const variablePrefix = '__tagVar';
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';
8
11
  export const escapeVariable = '--' + variablePrefix + '--';
9
12
  const prefixSearch = new RegExp(variablePrefix, 'g');
10
13
  export const escapeSearch = new RegExp(escapeVariable, 'g');
11
14
  export class Tag {
12
15
  strings;
13
16
  values;
14
- context = {}; // populated after reading interpolated.values array converted to an object {variable0, variable:1}
17
+ isTag = true;
15
18
  clones = []; // elements on document
16
19
  cloneSubs = []; // subscriptions created by clones
17
20
  children = []; // tags on me
18
21
  tagSupport;
19
22
  // only present when a child of a tag
20
23
  ownerTag;
24
+ insertBefore;
25
+ appElement; // only seen on this.getAppElement().appElement
21
26
  // present only when an array. Populated by this.key()
22
27
  arrayValue;
23
28
  constructor(strings, values) {
24
29
  this.strings = strings;
25
30
  this.values = values;
26
31
  }
27
- providers = [];
28
32
  beforeRedraw() {
29
33
  runBeforeRedraw(this.tagSupport, this);
30
34
  }
@@ -36,27 +40,48 @@ export class Tag {
36
40
  this.arrayValue = arrayValue;
37
41
  return this;
38
42
  }
39
- destroy(stagger = 0, byParent = false) {
40
- this.children.forEach((kid, index) => kid.destroy(0, true));
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);
41
50
  this.destroySubscriptions();
42
- if (!byParent) {
43
- stagger = this.destroyClones(stagger);
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);
44
54
  }
45
- return stagger;
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;
46
60
  }
47
61
  destroySubscriptions() {
48
62
  this.cloneSubs.forEach(cloneSub => cloneSub.unsubscribe());
49
63
  this.cloneSubs.length = 0;
50
64
  }
51
- destroyClones(stagger = 0) {
52
- this.clones.reverse().forEach((clone, index) => {
65
+ async destroyClones({ stagger } = {
66
+ stagger: 0,
67
+ }) {
68
+ const promises = this.clones.reverse().map((clone, index) => {
53
69
  let promise = Promise.resolve();
54
70
  if (clone.ondestroy) {
55
71
  promise = elementDestroyCheck(clone, stagger);
56
72
  }
57
- promise.then(() => clone.parentNode.removeChild(clone));
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;
58
82
  });
59
- this.clones.length = 0;
83
+ await Promise.all(promises);
84
+ // this.clones.length = 0
60
85
  return stagger;
61
86
  }
62
87
  updateByTag(tag) {
@@ -66,9 +91,8 @@ export class Tag {
66
91
  lastTemplateString = undefined; // used to compare templates for updates
67
92
  /** A method of passing down the same render method */
68
93
  setSupport(tagSupport) {
69
- this.tagSupport = this.tagSupport || tagSupport;
70
- this.tagSupport.mutatingRender = this.tagSupport.mutatingRender || tagSupport.mutatingRender;
71
- this.children.forEach(kid => kid.setSupport(tagSupport));
94
+ this.tagSupport = tagSupport;
95
+ this.tagSupport.mutatingRender = tagSupport.mutatingRender;
72
96
  }
73
97
  updateConfig(strings, values) {
74
98
  this.strings = strings;
@@ -79,12 +103,20 @@ export class Tag {
79
103
  const string = this.lastTemplateString = this.strings.map((string, index) => {
80
104
  const safeString = string.replace(prefixSearch, escapeVariable);
81
105
  const endString = safeString + (this.values.length > index ? `{${variablePrefix}${index}}` : '');
82
- return endString;
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;
83
109
  }).join('');
84
- return { string, strings: this.strings, values: this.values, context: this.context };
110
+ return {
111
+ string,
112
+ strings: this.strings,
113
+ values: this.values,
114
+ context: this.tagSupport?.memory.context || {},
115
+ };
85
116
  }
86
117
  isLikeTag(tag) {
87
- if (tag.lastTemplateString !== this.lastTemplateString) {
118
+ const { string } = tag.getTemplate();
119
+ if (string !== this.lastTemplateString) {
88
120
  return false;
89
121
  }
90
122
  if (tag.values.length !== this.values.length) {
@@ -100,11 +132,12 @@ export class Tag {
100
132
  }
101
133
  return false;
102
134
  }
103
- if (value instanceof Tag && compareTo instanceof Tag) {
104
- value.ownerTag = this; // let children know I own them
105
- this.children.push(value); // record children I created
106
- value.lastTemplateString || value.getTemplate().string; // ensure last template string is generated
107
- if (value.isLikeTag(compareTo)) {
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)) {
108
141
  return true;
109
142
  }
110
143
  return false;
@@ -117,11 +150,11 @@ export class Tag {
117
150
  return false;
118
151
  }
119
152
  update() {
120
- return this.updateContext(this.context);
153
+ return this.updateContext(this.tagSupport.memory.context);
121
154
  }
122
155
  updateValues(values) {
123
156
  this.values = values;
124
- return this.updateContext(this.context);
157
+ return this.updateContext(this.tagSupport.memory.context);
125
158
  }
126
159
  updateContext(context) {
127
160
  this.strings.map((_string, index) => {
@@ -131,57 +164,9 @@ export class Tag {
131
164
  // is something already there?
132
165
  const existing = context[variableName];
133
166
  if (existing) {
134
- /** @type {Tag | undefined} */
135
- const ogTag = existing.value?.tag;
136
- // handle already seen tag components
137
- if (isTagComponent(value)) {
138
- const latestProps = value.cloneProps;
139
- const existingTag = existing.tag;
140
- // previously was something else, now a tag component
141
- if (!existing.tag) {
142
- setValueRedraw(value, existing, this);
143
- value.redraw(latestProps);
144
- return;
145
- }
146
- const oldTagSetup = existingTag.tagSupport;
147
- const tagSupport = value.tagSupport || oldTagSetup || getTagSupport(value);
148
- const oldCloneProps = tagSupport.templater?.cloneProps;
149
- const oldProps = tagSupport.templater?.props;
150
- if (existingTag) {
151
- const isCommonEqual = oldProps === undefined && oldProps === latestProps;
152
- const equal = isCommonEqual || deepEqual(oldCloneProps, latestProps);
153
- if (equal) {
154
- return;
155
- }
156
- }
157
- setValueRedraw(value, existing, this);
158
- oldTagSetup.templater = value;
159
- existing.value.tag = oldTagSetup.newest = value.redraw(latestProps);
160
- return;
161
- }
162
- // handle already seen tags
163
- if (ogTag) {
164
- const tagSupport = ogTag.tagSupport;
165
- const templater = value;
166
- runBeforeRender(tagSupport, ogTag);
167
- tagSupport.oldest.beforeRedraw();
168
- const retag = templater.wrapper();
169
- retag.tagSupport = tagSupport;
170
- templater.newest = retag;
171
- tagSupport.oldest.afterRender();
172
- ogTag.updateByTag(retag);
173
- existing.set(value);
174
- return;
175
- }
176
- // now its a function
177
- if (value instanceof Function) {
178
- existing.set(bindSubjectFunction(value, this));
179
- return;
180
- }
181
- existing.set(value); // let ValueSubject now of newest value
182
- return;
167
+ return updateExistingValue(existing, value, this);
183
168
  }
184
- // First time values below
169
+ // 🆕 First time values below
185
170
  if (isTagComponent(value)) {
186
171
  const existing = context[variableName] = new ValueSubject(value);
187
172
  setValueRedraw(value, existing, this);
@@ -194,10 +179,14 @@ export class Tag {
194
179
  if (!hasValue) {
195
180
  return; // more strings than values, stop here
196
181
  }
197
- if (value instanceof Tag) {
182
+ if (isTagInstance(value)) {
198
183
  value.ownerTag = this;
199
184
  this.children.push(value);
200
185
  }
186
+ if (isSubjectInstance(value)) {
187
+ context[variableName] = value;
188
+ return;
189
+ }
201
190
  context[variableName] = new ValueSubject(value);
202
191
  });
203
192
  return context;
@@ -209,5 +198,44 @@ export class Tag {
209
198
  }
210
199
  return tag;
211
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
+ }
212
240
  }
213
241
  //# sourceMappingURL=Tag.class.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tag.class.js","sourceRoot":"","sources":["../ts/Tag.class.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,12 @@
1
+ import { TagSupport } from "./getTagSupport.js";
1
2
  import { ValueSubject } from "./ValueSubject.js";
3
+ import { Subject } from "./Subject.js";
2
4
  import { Tag } from "./Tag.class.js";
3
- import { TemplaterResult } from "./tag.js";
4
- export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject;
5
- /**
6
- * @param {*} value
7
- * @param {Tag} tag
8
- * @returns
9
- */
10
- export declare function bindSubjectFunction(value: (...args: any[]) => any, tag: Tag): {
11
- (element: Element, args: any[]): any;
12
- tagFunction: (...args: any[]) => any;
5
+ import { TemplaterResult } from "./templater.utils.js";
6
+ export type TagSubject = Subject<TemplaterResult> & {
7
+ tagSupport: TagSupport;
8
+ tag: Tag;
13
9
  };
14
- /**
15
- *
16
- * @param {*} templater
17
- * @param {ExistingValue} existing
18
- * @param {Tag} ownerTag
19
- */
10
+ export declare function getSubjectFunction(value: any, tag: Tag): ValueSubject<unknown>;
20
11
  export declare function setValueRedraw(templater: TemplaterResult, // latest tag function to call for rendering
21
- existing: any, ownerTag: Tag): void;
22
- export declare function elementDestroyCheck(nextSibling: Element & {
23
- ondestroy?: () => any;
24
- }, stagger: number): any;
12
+ existing: TagSubject, ownerTag: Tag): void;
@@ -1,102 +1,31 @@
1
- import { getTagSupport } from "./getTagSupport.js";
2
- import { config as providers } from "./providers.js";
3
1
  import { ValueSubject } from "./ValueSubject.js";
4
- import { runBeforeRender } from "./tagRunner.js";
2
+ import { redrawTag } from "./redrawTag.function.js";
3
+ import { bindSubjectCallback } from "./bindSubjectCallback.function.js";
5
4
  export function getSubjectFunction(value, tag) {
6
- return new ValueSubject(bindSubjectFunction(value, tag));
5
+ return new ValueSubject(bindSubjectCallback(value, tag));
7
6
  }
8
- /**
9
- * @param {*} value
10
- * @param {Tag} tag
11
- * @returns
12
- */
13
- export function bindSubjectFunction(value, tag) {
14
- function subjectFunction(element, args) {
15
- const renderCount = tag.tagSupport.renderCount;
16
- const method = value.bind(element);
17
- const callbackResult = method(...args);
18
- if (renderCount !== tag.tagSupport.renderCount) {
19
- return; // already rendered
20
- }
21
- tag.tagSupport.render();
22
- if (callbackResult instanceof Promise) {
23
- callbackResult.then(() => {
24
- tag.tagSupport.render();
25
- });
26
- }
27
- return callbackResult;
28
- }
29
- subjectFunction.tagFunction = value;
30
- return subjectFunction;
31
- }
32
- /**
33
- *
34
- * @param {*} templater
35
- * @param {ExistingValue} existing
36
- * @param {Tag} ownerTag
37
- */
38
7
  export function setValueRedraw(templater, // latest tag function to call for rendering
39
8
  existing, ownerTag) {
40
9
  // redraw does not communicate to parent
41
- templater.redraw = () => {
42
- // Find previous variables
10
+ templater.redraw = (force // forces redraw on children
11
+ ) => {
43
12
  const existingTag = existing.tag;
44
- const tagSupport = existingTag?.tagSupport || getTagSupport(templater); // this.tagSupport
45
- // signify to other operations that a rendering has occurred so they do not need to render again
46
- ++tagSupport.renderCount;
47
- existing.tagSupport = tagSupport;
48
- // const self = this as any
49
- const self = templater;
50
- tagSupport.mutatingRender = tagSupport.mutatingRender || existing.tagSupport?.mutatingRender || ( /* TODO: we might be able to remove this last OR */self.tagSupport.mutatingRender);
51
- const runtimeOwnerTag = existingTag?.ownerTag || ownerTag;
52
- runBeforeRender(tagSupport, tagSupport.oldest);
53
- if (tagSupport.oldest) {
54
- tagSupport.oldest.beforeRedraw();
55
- }
56
- else {
57
- providers.ownerTag = runtimeOwnerTag;
58
- }
59
- const retag = templater.wrapper();
60
- retag.tagSupport = tagSupport;
61
- if (tagSupport.oldest) {
62
- tagSupport.oldest.afterRender();
63
- }
64
- else {
65
- retag.afterRender();
66
- }
67
- templater.newest = retag;
68
- retag.ownerTag = runtimeOwnerTag;
69
- const oldest = tagSupport.oldest = tagSupport.oldest || retag;
70
- tagSupport.newest = retag;
71
- const oldestTagSupport = oldest.tagSupport;
72
- oldest.tagSupport = oldestTagSupport || tagSupport;
73
- oldest.tagSupport.templater = templater;
74
- // retag.getTemplate() // cause lastTemplateString to render
75
- retag.setSupport(tagSupport);
76
- const isSameTag = existingTag && existingTag.isLikeTag(retag);
77
- // If previously was a tag and seems to be same tag, then just update current tag with new values
78
- if (isSameTag) {
79
- oldest.updateByTag(retag);
13
+ const { remit, retag } = redrawTag(existingTag, templater, ownerTag);
14
+ existing.tagSupport = retag.tagSupport;
15
+ if (!remit) {
80
16
  return;
81
17
  }
82
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
+ }
83
28
  return retag;
84
29
  };
85
30
  }
86
- export function elementDestroyCheck(nextSibling, stagger) {
87
- const onDestroyDoubleWrap = nextSibling.ondestroy; // nextSibling.getAttribute('onDestroy')
88
- if (!onDestroyDoubleWrap) {
89
- return;
90
- }
91
- const onDestroyWrap = onDestroyDoubleWrap.tagFunction;
92
- if (!onDestroyWrap) {
93
- return;
94
- }
95
- const onDestroy = onDestroyWrap.tagFunction;
96
- if (!onDestroy) {
97
- return;
98
- }
99
- const event = { target: nextSibling, stagger };
100
- return onDestroy(event);
101
- }
102
31
  //# sourceMappingURL=Tag.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tag.utils.js","sourceRoot":"","sources":["../ts/Tag.utils.ts"],"names":[],"mappings":"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"}
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"}