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
@@ -0,0 +1,14 @@
1
+ const tagUse = [];
2
+ export function setUse(use) {
3
+ // must provide defaults
4
+ const useMe = {
5
+ beforeRender: use.beforeRender || (() => undefined),
6
+ beforeRedraw: use.beforeRedraw || (() => undefined),
7
+ afterRender: use.afterRender || (() => undefined),
8
+ beforeDestroy: use.beforeDestroy || (() => undefined),
9
+ };
10
+ setUse.tagUse.push(useMe);
11
+ }
12
+ setUse.tagUse = tagUse;
13
+ setUse.memory = {};
14
+ //# sourceMappingURL=setUse.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setUse.function.js","sourceRoot":"","sources":["../ts/setUse.function.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAa,EAAE,CAAA;AAsB3B,MAAM,UAAU,MAAM,CAAC,GAAe;IACpC,wBAAwB;IACxB,MAAM,KAAK,GAAW;QACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACjD,aAAa,EAAE,GAAG,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KACtD,CAAA;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;AACtB,MAAM,CAAC,MAAM,GAAG,EAAkD,CAAA"}
package/js/js/state.d.ts CHANGED
@@ -1,21 +1,24 @@
1
- import { TagSupport } from "./getTagSupport.js";
2
1
  export type StateConfig = ((x?: any) => [any, any]);
3
- export type StateConfigArray = StateConfig[];
4
- export type State = {
5
- newest: StateConfigArray;
6
- oldest?: StateConfigArray;
7
- };
8
- export type StateTagSupport = TagSupport & {
9
- state?: State;
2
+ type StateConfigItem = {
3
+ callback?: StateConfig;
4
+ lastValue?: any;
5
+ defaultValue?: any;
10
6
  };
11
- export declare const config: {
7
+ export type StateConfigArray = StateConfigItem[];
8
+ export type Config = {
12
9
  array: StateConfigArray;
13
10
  rearray: StateConfigArray;
14
11
  };
12
+ export type State = {
13
+ newest: StateConfigArray;
14
+ };
15
15
  /**
16
16
  * @template T
17
17
  * @param {T} defaultValue
18
18
  * @returns {T}
19
19
  */
20
- export declare function state<T>(defaultValue: T, getSetMethod?: (x: T) => [T, T]): T;
21
- export declare function getStateValue(state: StateConfig): any;
20
+ export declare function state<T>(defaultValue: T | (() => T), getSetMethod?: (x: T) => [T, T]): T;
21
+ export declare function getStateValue(state: StateConfigItem): any;
22
+ export declare class StateEchoBack {
23
+ }
24
+ export {};
package/js/js/state.js CHANGED
@@ -1,7 +1,8 @@
1
- import { setUse } from "./tagRunner.js";
2
- export const config = {
3
- array: [],
4
- rearray: [],
1
+ import { setUse } from "./setUse.function.js";
2
+ // TODO: rename
3
+ setUse.memory.stateConfig = {
4
+ array: [], // state memory on the first render
5
+ rearray: [], // state memory to be used before the next render
5
6
  };
6
7
  /**
7
8
  * @template T
@@ -9,47 +10,63 @@ export const config = {
9
10
  * @returns {T}
10
11
  */
11
12
  export function state(defaultValue, getSetMethod) {
13
+ const config = setUse.memory.stateConfig;
12
14
  const restate = config.rearray[config.array.length];
13
15
  if (restate) {
14
16
  const oldValue = getStateValue(restate);
15
- config.array.push(getSetMethod);
17
+ config.array.push({
18
+ callback: getSetMethod,
19
+ lastValue: oldValue,
20
+ defaultValue: restate.defaultValue,
21
+ });
16
22
  return oldValue; // return old value instead
17
23
  }
18
- config.array.push(getSetMethod);
19
- return defaultValue;
24
+ const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
25
+ const initValue = defaultFn();
26
+ config.array.push({
27
+ callback: getSetMethod,
28
+ lastValue: initValue,
29
+ defaultValue: initValue,
30
+ });
31
+ return initValue;
20
32
  }
21
33
  setUse({
22
- beforeRender: (tagSupport) => {
23
- tagSupport.state = tagSupport.state || {
24
- newest: [], // oldest: [],
25
- };
26
- },
27
- beforeRedraw: (tagSupport) => {
28
- const state = tagSupport.state;
29
- config.rearray.length = 0;
30
- if (state?.newest.length) {
31
- // state.oldest = [...state.newest]
32
- config.rearray.push(...state.newest);
33
- }
34
- },
35
- afterRender: (tagSupport) => {
34
+ beforeRender: (tagSupport) => initState(tagSupport),
35
+ beforeRedraw: (tagSupport) => initState(tagSupport),
36
+ afterRender: (tagSupport, tag) => {
37
+ const state = tagSupport.memory.state;
38
+ const config = setUse.memory.stateConfig;
36
39
  if (config.rearray.length) {
37
40
  if (config.rearray.length !== config.array.length) {
38
- throw new Error(`States lengths mismatched ${config.rearray.length} !== ${config.array.length}`);
41
+ const message = `States lengths mismatched ${config.rearray.length} !== ${config.array.length}`;
42
+ console.error(message, {
43
+ oldStates: config.array,
44
+ newStates: config.rearray,
45
+ component: tagSupport.templater?.wrapper.original
46
+ });
47
+ throw new Error(message);
39
48
  }
40
49
  }
41
- config.rearray.length = 0; // clean up any previous runs
42
- const state = tagSupport.state;
43
- state.newest.length = 0;
44
- state.newest.push(...config.array);
45
- state.oldest = state.oldest || [...config.array]; // always preserve oldest
46
- config.array.length = 0;
50
+ // config.rearray.length = 0 // clean up any previous runs
51
+ config.rearray = []; // clean up any previous runs
52
+ // state.newest.length = 0
53
+ // state.newest.push(...config.array) as any
54
+ state.newest = [...config.array];
55
+ // config.array.length = 0
56
+ config.array = [];
47
57
  }
48
58
  });
49
- export function getStateValue(state) {
50
- const [oldValue] = state(EchoBack); // get value and set to undefined
51
- const [checkValue] = state(oldValue); // set back to original value
52
- if (checkValue !== EchoBack) {
59
+ export function getStateValue(
60
+ // state: StateConfig,
61
+ state) {
62
+ const callback = state.callback;
63
+ if (!callback) {
64
+ return state.defaultValue;
65
+ }
66
+ const oldState = callback(StateEchoBack); // get value and set to undefined
67
+ const [oldValue] = oldState;
68
+ const [checkValue] = callback(oldValue); // set back to original value
69
+ if (checkValue !== StateEchoBack) {
53
70
  const error = new Error('State property not used correctly.\n\n' +
54
71
  'For "let" state use `let name = state(default, x => [name, name = x])`\n\n' +
55
72
  'For "const" state use `const name = state(default)`\n\n' +
@@ -58,6 +75,24 @@ export function getStateValue(state) {
58
75
  }
59
76
  return oldValue;
60
77
  }
61
- class EchoBack {
78
+ export class StateEchoBack {
79
+ }
80
+ function initState(tagSupport) {
81
+ const state = tagSupport.memory.state;
82
+ const config = setUse.memory.stateConfig;
83
+ if (config.rearray.length) {
84
+ const message = 'last array not cleared';
85
+ console.error(message, {
86
+ config,
87
+ component: tagSupport.templater?.wrapper.original,
88
+ state,
89
+ });
90
+ throw message;
91
+ }
92
+ // TODO: this maybe redundant and not needed
93
+ config.rearray = []; // .length = 0
94
+ if (state?.newest.length) {
95
+ config.rearray.push(...state.newest);
96
+ }
62
97
  }
63
98
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAevC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,EAAsB;IAC7B,OAAO,EAAE,EAAsB;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,UAAU,KAAK,CACnB,YAAe,EACf,YAA+B;IAE/B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,IAAG,OAAO,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAE,YAAmB,CAAE,CAAA;QACxC,OAAO,QAAQ,CAAA,CAAC,2BAA2B;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAmB,CAAC,CAAA;IACtC,OAAO,YAAY,CAAA;AACrB,CAAC;AAED,MAAM,CAAC;IACL,YAAY,EAAE,CAAC,UAA2B,EAAE,EAAE;QAC5C,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI;YACrC,MAAM,EAAE,EAAE,EAAC,cAAc;SAC1B,CAAA;IACH,CAAC;IACD,YAAY,EAAE,CACZ,UAA2B,EAC3B,EAAE;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;QAC9B,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;QACzB,IAAG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;YACxB,mCAAmC;YACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IACD,WAAW,EAAE,CACX,UAA2B,EAC3B,EAAE;QACF,IAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,IAAG,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;YAClG,CAAC;QACH,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,6BAA6B;QAEvD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAc,CAAA;QACvC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;QACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAQ,CAAA;QACzC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA,CAAC,yBAAyB;QAC1E,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;IACzB,CAAC;CACF,CAAC,CAAA;AAGF,MAAM,UAAU,aAAa,CAAC,KAAkB;IAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA,CAAC,iCAAiC;IACpE,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,CAAE,QAAQ,CAAE,CAAA,CAAC,6BAA6B;IAEpE,IAAG,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,wCAAwC;YACxC,4EAA4E;YAC5E,yDAAyD;YACzD,qBAAqB,GAAG,KAAK,GAAE,IAAI,CAAC,CAAA;QACtC,MAAM,KAAK,CAAA;IACb,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,QAAQ;CAAG"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"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"}
package/js/js/tag.d.ts CHANGED
@@ -1,17 +1,8 @@
1
1
  import { Tag } from "./Tag.class.js";
2
- export type Props = unknown;
3
- export type Wrapper = () => Tag;
4
- export declare class TemplaterResult {
5
- props: Props;
6
- newProps: Props;
7
- cloneProps: Props;
8
- tagged: boolean;
9
- wrapper: Wrapper;
10
- newest?: Tag;
11
- oldest?: Tag;
12
- redraw?: () => Tag | undefined;
13
- }
14
- type TagResult = (props: Props, // props or children
15
- children?: Tag) => Tag;
16
- export declare function tag<T>(tagComponent: T | TagResult): T;
17
- export {};
2
+ import { TagComponent } from "./templater.utils.js";
3
+ export declare const tags: TagComponent[];
4
+ export type TagEnv = {
5
+ parentNode: HTMLElement | Element;
6
+ children?: Tag;
7
+ };
8
+ export declare function tag<T>(tagComponent: T | TagComponent): T;
package/js/js/tag.js CHANGED
@@ -1,57 +1,46 @@
1
- import { Tag } from "./Tag.class.js";
2
- import { deepClone } from "./deepFunctions.js";
3
- export class TemplaterResult {
4
- props;
5
- newProps;
6
- cloneProps;
7
- tagged;
8
- wrapper;
9
- newest;
10
- oldest;
11
- redraw;
12
- }
1
+ import { isTagInstance } from "./isInstance.js";
2
+ import { setUse } from "./setUse.function.js";
3
+ import { TemplaterResult, getNewProps } from "./templater.utils.js";
4
+ export const tags = [];
5
+ let tagCount = 0;
13
6
  export function tag(tagComponent) {
14
- return ((props, children) => {
15
- const callback = (toCall, callWith) => {
16
- const callbackResult = toCall(...callWith);
17
- templater.newest?.ownerTag?.tagSupport.render();
18
- return callbackResult;
19
- };
20
- const isPropTag = props instanceof Tag;
21
- const watchProps = isPropTag ? 0 : props;
22
- const newProps = resetFunctionProps(watchProps, callback);
7
+ const result = (function tagWrapper(props, tagEnv) {
8
+ const isPropTag = isTagInstance(props);
9
+ const templater = new TemplaterResult(props);
10
+ const newProps = getNewProps(props, templater);
23
11
  let argProps = newProps;
24
12
  if (isPropTag) {
25
- children = props;
13
+ tagEnv.children = props;
26
14
  argProps = noPropsGiven;
27
15
  }
28
- const wrapper = () => tagComponent(argProps, children);
29
- const templater = new TemplaterResult();
16
+ function innerTagWrap() {
17
+ const originalFunction = innerTagWrap.original;
18
+ const props = templater.tagSupport.props; // argProps
19
+ const tag = originalFunction(props, tagEnv);
20
+ tag.setSupport(templater.tagSupport);
21
+ return tag;
22
+ }
23
+ innerTagWrap.original = tagComponent;
30
24
  templater.tagged = true;
31
- templater.props = props; // used to call function
32
- templater.newProps = newProps;
33
- templater.cloneProps = deepClone(newProps);
34
- templater.wrapper = wrapper;
25
+ templater.wrapper = innerTagWrap;
35
26
  return templater;
36
27
  }); // we override the function provided and pretend original is what's returned
28
+ updateResult(result, tagComponent);
29
+ // group tags together and have hmr pickup
30
+ updateComponent(tagComponent);
31
+ tags.push(tagComponent);
32
+ return result;
33
+ }
34
+ function updateResult(result, tagComponent) {
35
+ result.isTag = true;
36
+ result.original = tagComponent;
37
+ }
38
+ function updateComponent(tagComponent) {
39
+ tagComponent.tags = tags;
40
+ tagComponent.setUse = setUse;
41
+ tagComponent.tagIndex = ++tagCount;
37
42
  }
38
43
  class NoPropsGiven {
39
44
  }
40
45
  const noPropsGiven = new NoPropsGiven();
41
- function resetFunctionProps(props, callback) {
42
- if (typeof (props) !== 'object') {
43
- return props;
44
- }
45
- const newProps = { ...props };
46
- Object.entries(newProps).forEach(([name, value]) => {
47
- if (value instanceof Function) {
48
- newProps[name] = (...args) => {
49
- return callback(value, args);
50
- };
51
- return;
52
- }
53
- newProps[name] = value;
54
- });
55
- return newProps;
56
- }
57
46
  //# sourceMappingURL=tag.js.map
package/js/js/tag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAM9C,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAO;IACZ,QAAQ,CAAO;IACf,UAAU,CAAO;IACjB,MAAM,CAAU;IAChB,OAAO,CAAU;IAEjB,MAAM,CAAM;IACZ,MAAM,CAAM;IACZ,MAAM,CAAwB;CAC/B;AAOD,MAAM,UAAU,GAAG,CACjB,YAA2B;IAE3B,OAAO,CAAC,CAAC,KAAmB,EAAE,QAAc,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,CAAC,MAAW,EAAE,QAAa,EAAE,EAAE;YAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAA;YAC1C,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,CAAA;YAC/C,OAAO,cAAc,CAAA;QACvB,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,KAAK,YAAY,GAAG,CAAA;QACtC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACxC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEzD,IAAI,QAAQ,GAAG,QAAQ,CAAA;QACvB,IAAG,SAAS,EAAE,CAAC;YACb,QAAQ,GAAG,KAAK,CAAA;YAChB,QAAQ,GAAG,YAAY,CAAA;QACzB,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,EAAE,CAAE,YAA0B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAErE,MAAM,SAAS,GAAoB,IAAI,eAAe,EAAE,CAAA;QACxD,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;QACvB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,wBAAwB;QAChD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC7B,SAAS,CAAC,UAAU,GAAG,SAAS,CAAE,QAAQ,CAAE,CAAA;QAC5C,SAAS,CAAC,OAAO,GAAG,OAAO,CAAA;QAE3B,OAAO,SAAS,CAAA;IAClB,CAAC,CAAM,CAAA,CAAC,4EAA4E;AACtF,CAAC;AAED,MAAM,YAAY;CAAG;AACrB,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;AAEvC,SAAS,kBAAkB,CACzB,KAAU,EACV,QAAa;IAEb,IAAG,OAAM,CAAC,KAAK,CAAC,KAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,EAAC,GAAG,KAAK,EAAC,CAAA;IAE3B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;QACjD,IAAG,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;gBAClC,OAAO,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC9B,CAAC,CAAA;YACD,OAAM;QACR,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAgB,eAAe,EAAW,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAE1F,MAAM,CAAC,MAAM,IAAI,GAAmB,EAAE,CAAA;AAEtC,IAAI,QAAQ,GAAG,CAAC,CAAA;AAOhB,MAAM,UAAU,GAAG,CACjB,YAA8B;IAE9B,MAAM,MAAM,GAAG,CAAC,SAAS,UAAU,CACjC,KAA8B,EAC9B,MAAc;QAEd,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,SAAS,GAAoB,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAE9C,IAAI,QAAQ,GAAG,QAAQ,CAAA;QACvB,IAAG,SAAS,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,GAAG,KAAY,CAAA;YAC9B,QAAQ,GAAG,YAAY,CAAA;QACzB,CAAC;QAED,SAAS,YAAY;YACnB,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAwB,CAAA;YAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAA,CAAC,WAAW;YACpD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC3C,GAAG,CAAC,UAAU,CAAE,SAAS,CAAC,UAAU,CAAE,CAAA;YACtC,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAA;QAGpC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;QACvB,SAAS,CAAC,OAAO,GAAG,YAAuB,CAAA;QAE3C,OAAO,SAAS,CAAA;IAClB,CAAC,CAAM,CAAA,CAAC,4EAA4E;IAEpF,YAAY,CAAC,MAAM,EAAE,YAA4B,CAAC,CAAA;IAElD,0CAA0C;IAC1C,eAAe,CAAC,YAAY,CAAC,CAAA;IAC7B,IAAI,CAAC,IAAI,CAAC,YAA4B,CAAC,CAAA;IAEvC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,MAAW,EACX,YAA0B;IAE1B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAA;AAChC,CAAC;AAED,SAAS,eAAe,CACtB,YAAiB;IAEjB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAA;IACxB,YAAY,CAAC,MAAM,GAAG,MAAM,CAAA;IAC5B,YAAY,CAAC,QAAQ,GAAG,EAAE,QAAQ,CAAA;AACpC,CAAC;AACD,MAAM,YAAY;CAAG;AACrB,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { TagSupport } from "./getTagSupport.js";
2
+ import { TagComponent, TemplaterResult } from "./templater.utils.js";
3
+ import { Tag } from "./Tag.class.js";
4
+ export declare function tagElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
5
+ element: HTMLElement | Element, props: unknown): {
6
+ tag: Tag;
7
+ tags: TagComponent[];
8
+ };
9
+ export declare function applyTagUpdater(wrapper: TemplaterResult): {
10
+ tag: Tag;
11
+ tagSupport: TagSupport;
12
+ };
13
+ /** Overwrites arguments.tagSupport.mutatingRender */
14
+ export declare function addAppTagRender(tagSupport: TagSupport, tag: Tag): void;
@@ -0,0 +1,57 @@
1
+ import { runBeforeRender } from "./tagRunner.js";
2
+ const appElements = [];
3
+ export function tagElement(app, // (...args: unknown[]) => TemplaterResult,
4
+ element, props) {
5
+ const appElmIndex = appElements.findIndex(appElm => appElm.element === element);
6
+ if (appElmIndex >= 0) {
7
+ appElements[appElmIndex].tag.destroy();
8
+ appElements.splice(appElmIndex, 1);
9
+ console.warn('Found and destroyed app element already rendered to element', { element });
10
+ }
11
+ // Create the app which returns [props, runOneTimeFunction]
12
+ const wrapper = app(props, { parentNode: element });
13
+ // have a function setup and call the tagWrapper with (props, {update, async, on})
14
+ const result = applyTagUpdater(wrapper);
15
+ const { tag, tagSupport } = result;
16
+ tag.appElement = element;
17
+ addAppTagRender(tagSupport, tag);
18
+ // const context = tag.updateValues(tag.values)
19
+ const templateElm = document.createElement('template');
20
+ templateElm.setAttribute('tag-detail', 'app-template-placeholder');
21
+ element.appendChild(templateElm);
22
+ tag.buildBeforeElement(templateElm);
23
+ element.setUse = app.original.setUse;
24
+ appElements.push({ element, tag });
25
+ return { tag, tags: app.original.tags };
26
+ }
27
+ export function applyTagUpdater(wrapper) {
28
+ const tagSupport = wrapper.tagSupport; // getTagSupport(0, wrapper)
29
+ runBeforeRender(tagSupport, undefined);
30
+ // Call the apps function for our tag templater
31
+ // const templater = tagSupport.templater as TemplaterResult
32
+ const tag = wrapper.wrapper(); // templater.wrapper()
33
+ tag.tagSupport = tagSupport;
34
+ tag.afterRender();
35
+ return { tag, tagSupport };
36
+ }
37
+ /** Overwrites arguments.tagSupport.mutatingRender */
38
+ export function addAppTagRender(tagSupport, tag) {
39
+ let lastTag;
40
+ tagSupport.mutatingRender = () => {
41
+ tag.beforeRedraw();
42
+ const templater = tagSupport.templater; // wrapper
43
+ const fromTag = lastTag = templater.wrapper();
44
+ // tagSupport.props = fromTag.tagSupport.props
45
+ tagSupport.latestProps = fromTag.tagSupport.props;
46
+ tagSupport.latestClonedProps = fromTag.tagSupport.clonedProps;
47
+ fromTag.setSupport(tagSupport);
48
+ tag.afterRender();
49
+ tag.updateByTag(fromTag);
50
+ if (lastTag) {
51
+ lastTag.destroy({ stagger: 0 });
52
+ }
53
+ tagSupport.newest = fromTag;
54
+ return lastTag;
55
+ };
56
+ }
57
+ //# sourceMappingURL=tagElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagElement.js","sourceRoot":"","sources":["../ts/tagElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TagComponent } from "./templater.utils.js";
2
+ export declare function destroyGateways(): void;
3
+ export declare const tagGateway: (component: TagComponent) => {
4
+ id: string;
5
+ };
@@ -0,0 +1,119 @@
1
+ import { redrawTag } from "./redrawTag.function.js";
2
+ import { tagElement } from "./tagElement.js";
3
+ const gateways = {};
4
+ export function destroyGateways() {
5
+ Object.entries(gateways).forEach(([id, gateway]) => checkGateway(gateway));
6
+ }
7
+ function checkGateway(gateway) {
8
+ const { id, observer, tag } = gateway;
9
+ if (document.getElementById(id)) {
10
+ return true;
11
+ }
12
+ observer.disconnect();
13
+ tag.destroy();
14
+ delete gateways[id];
15
+ return false;
16
+ }
17
+ export const tagGateway = function tagGateway(component) {
18
+ const componentString = functionToHtmlId(component);
19
+ const id = '__tagTemplate_' + componentString;
20
+ let intervalId;
21
+ let found = false;
22
+ function findElement() {
23
+ intervalId = setInterval(() => {
24
+ const elements = document.querySelectorAll('#' + id);
25
+ if (!elements.length) {
26
+ return;
27
+ }
28
+ // Element has been found, load
29
+ clearInterval(intervalId);
30
+ found = true;
31
+ elements.forEach(element => {
32
+ const updateTag = element.updateTag;
33
+ if (updateTag) {
34
+ updateTag();
35
+ return;
36
+ }
37
+ const props = parsePropsString(element);
38
+ try {
39
+ const { tag } = tagElement(component, element, props);
40
+ watchElement(id, element, tag);
41
+ }
42
+ catch (err) {
43
+ console.warn('Failed to render component to element', { component, element, props });
44
+ throw err;
45
+ }
46
+ });
47
+ }, 10);
48
+ }
49
+ findElement();
50
+ setTimeout(() => {
51
+ if (found) {
52
+ return;
53
+ }
54
+ clearInterval(intervalId);
55
+ throw new Error(`TaggedJs Element ${id} not found`);
56
+ }, 2000);
57
+ return { id };
58
+ };
59
+ function parsePropsString(element) {
60
+ const propsString = element.getAttribute('props');
61
+ if (!propsString) {
62
+ return;
63
+ }
64
+ let props = {};
65
+ try {
66
+ return JSON.parse(propsString);
67
+ }
68
+ catch (err) {
69
+ console.warn('Failed to parse props on element', { element, propsString, props });
70
+ throw err;
71
+ }
72
+ }
73
+ function watchElement(id, targetNode, tag) {
74
+ let lastTag = tag;
75
+ const observer = new MutationObserver((mutationsList, observer) => {
76
+ if (!checkGateway(gateway)) {
77
+ return;
78
+ }
79
+ for (const mutation of mutationsList) {
80
+ if (mutation.type === 'attributes') {
81
+ updateTag();
82
+ }
83
+ }
84
+ });
85
+ function updateTag() {
86
+ const templater = tag.tagSupport.templater;
87
+ const oldProps = templater.tagSupport.props;
88
+ templater.tagSupport.props = parsePropsString(targetNode);
89
+ const isSameProps = JSON.stringify(oldProps) === JSON.stringify(templater.tagSupport.props);
90
+ if (isSameProps) {
91
+ return; // no reason to update, same props
92
+ }
93
+ templater.tagSupport.latestProps = templater.tagSupport.props;
94
+ const result = redrawTag(lastTag, templater);
95
+ // update records
96
+ gateway.tag = lastTag = result.retag;
97
+ }
98
+ ;
99
+ targetNode.updateTag = updateTag;
100
+ const gateway = { id, tag, observer };
101
+ gateways[id] = gateway;
102
+ // Configure the observer to watch for changes in child nodes and attributes
103
+ const config = { attributes: true };
104
+ // Start observing the target node for specified changes
105
+ observer.observe(targetNode, config);
106
+ }
107
+ function functionToHtmlId(func) {
108
+ // Convert function to string
109
+ let funcString = func.toString();
110
+ // Remove spaces and replace special characters with underscores
111
+ let cleanedString = funcString.replace(/\s+/g, '_')
112
+ .replace(/[^\w\d]/g, '_');
113
+ // Ensure the ID starts with a letter
114
+ if (!/^[a-zA-Z]/.test(cleanedString)) {
115
+ cleanedString = 'fn_' + cleanedString;
116
+ }
117
+ return cleanedString;
118
+ }
119
+ //# sourceMappingURL=tagGateway.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagGateway.function.js","sourceRoot":"","sources":["../ts/tagGateway.function.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,6 @@
1
1
  import { Tag } from "./Tag.class.js";
2
2
  import { TagSupport } from "./getTagSupport";
3
- interface TagUse {
4
- beforeRender: (tagSupport: TagSupport, tag?: Tag) => void;
5
- beforeRedraw: (tagSupport: TagSupport, tag: Tag) => void;
6
- afterRender: (tagSupport: TagSupport, tag: Tag) => void;
7
- }
8
- export declare const tagUse: TagUse[];
9
- export declare function runBeforeRender(tagSupport: TagSupport, tag?: Tag): void;
3
+ export declare function runBeforeRender(tagSupport: TagSupport, tagOwner: Tag): void;
10
4
  export declare function runAfterRender(tagSupport: TagSupport, tag: Tag): void;
11
5
  export declare function runBeforeRedraw(tagSupport: TagSupport, tag: Tag): void;
12
- export declare function setUse(use: {
13
- beforeRender?: (tagSupport: TagSupport, tag?: Tag) => void;
14
- beforeRedraw?: (tagSupport: TagSupport, tag: Tag) => void;
15
- afterRender?: (tagSupport: TagSupport, tag: Tag) => void;
16
- }): void;
17
- export {};
6
+ export declare function runBeforeDestroy(tagSupport: TagSupport, tag: Tag): void;
@@ -1,19 +1,19 @@
1
- export const tagUse = [];
2
- export function runBeforeRender(tagSupport, tag) {
3
- tagUse.forEach(tagUse => tagUse.beforeRender(tagSupport, tag));
1
+ // TODO: This should be more like `new TaggedJs().use({})`
2
+ import { setUse } from "./setUse.function.js";
3
+ // Life cycle 1
4
+ export function runBeforeRender(tagSupport, tagOwner) {
5
+ setUse.tagUse.forEach(tagUse => tagUse.beforeRender(tagSupport, tagOwner));
4
6
  }
7
+ // Life cycle 2
5
8
  export function runAfterRender(tagSupport, tag) {
6
- tagUse.forEach(tagUse => tagUse.afterRender(tagSupport, tag));
9
+ setUse.tagUse.forEach(tagUse => tagUse.afterRender(tagSupport, tag));
7
10
  }
11
+ // Life cycle 3
8
12
  export function runBeforeRedraw(tagSupport, tag) {
9
- tagUse.forEach(tagUse => tagUse.beforeRedraw(tagSupport, tag));
13
+ setUse.tagUse.forEach(tagUse => tagUse.beforeRedraw(tagSupport, tag));
10
14
  }
11
- export function setUse(use) {
12
- const useMe = {
13
- beforeRender: use.beforeRender || (() => undefined),
14
- beforeRedraw: use.beforeRedraw || (() => undefined),
15
- afterRender: use.afterRender || (() => undefined),
16
- };
17
- tagUse.push(useMe);
15
+ // Life cycle 4 - end of life
16
+ export function runBeforeDestroy(tagSupport, tag) {
17
+ setUse.tagUse.forEach(tagUse => tagUse.beforeDestroy(tagSupport, tag));
18
18
  }
19
19
  //# sourceMappingURL=tagRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tagRunner.js","sourceRoot":"","sources":["../ts/tagRunner.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,MAAM,GAAa,EAAE,CAAA;AAElC,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,GAAS;IAET,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAItB;IACC,MAAM,KAAK,GAAW;QACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;QACnD,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;KAClD,CAAA;IAED,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"tagRunner.js","sourceRoot":"","sources":["../ts/tagRunner.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAI1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,QAAa;IAEb,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC5E,CAAC;AAED,eAAe;AACf,MAAM,UAAU,cAAc,CAC5B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AACtE,CAAC;AAED,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AACvE,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAC9B,UAAsB,EACtB,GAAQ;IAER,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;AACxE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Tag } from "./Tag.class.js";
2
+ import { TagSupport } from "./getTagSupport.js";
3
+ import { Props } from "./Props.js";
4
+ import { TagEnv } from "./tag.js";
5
+ export type Wrapper = (() => Tag) & {
6
+ original: () => Tag;
7
+ };
8
+ export declare class TemplaterResult {
9
+ tagged: boolean;
10
+ wrapper: Wrapper;
11
+ newest?: Tag;
12
+ oldest?: Tag;
13
+ tagSupport: TagSupport;
14
+ constructor(props: Props);
15
+ redraw?: (force?: boolean) => Tag | undefined;
16
+ isTemplater: boolean;
17
+ forceRenderTemplate(tagSupport: TagSupport, ownerTag: Tag): Tag;
18
+ renderWithSupport(tagSupport: TagSupport, existingTag: Tag | undefined, ownerTag?: Tag): {
19
+ remit: boolean;
20
+ retag: Tag;
21
+ };
22
+ }
23
+ export interface TemplateRedraw extends TemplaterResult {
24
+ redraw: () => Tag | undefined;
25
+ }
26
+ export type TagComponent = (props: Props, // props or children
27
+ tagEnv: TagEnv) => Tag;
28
+ export declare function getNewProps(props: Props, templater: TemplaterResult): any;