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
package/js/providers.d.ts CHANGED
@@ -1,21 +1,12 @@
1
- import { Tag } from "./Tag.class.js";
2
1
  export type Provider = {
3
2
  constructMethod: any;
4
3
  instance: any;
5
4
  clone: any;
6
5
  };
7
- export declare const config: {
8
- providers: Provider[];
9
- currentTag: Tag | undefined;
10
- ownerTag: Tag | undefined;
11
- };
6
+ type functionProvider = <T>() => T;
7
+ type classProvider = new <T>(...args: any[]) => T;
12
8
  export declare const providers: {
13
- /**
14
- * @template T
15
- * @param {(new (...args: any[]) => T) | () => T} constructor
16
- * @returns {T}
17
- */
18
- create: (constructMethod: any) => any;
9
+ create: <T>(constructMethod: classProvider | functionProvider) => T;
19
10
  /**
20
11
  * @template T
21
12
  * @param {(new (...args: any[]) => T) | () => T} constructor
@@ -23,3 +14,4 @@ export declare const providers: {
23
14
  */
24
15
  inject: (constructor: any) => any;
25
16
  };
17
+ export {};
package/js/providers.js CHANGED
@@ -1,19 +1,17 @@
1
1
  import { deepClone } from "./deepFunctions.js";
2
- import { setUse } from "./tagRunner.js";
3
- export const config = {
2
+ import { setUse } from "./setUse.function.js";
3
+ // TODO: rename
4
+ setUse.memory.providerConfig = {
4
5
  providers: [],
5
- currentTag: undefined,
6
+ currentTagSupport: undefined,
6
7
  ownerTag: undefined,
7
8
  };
8
9
  function get(constructMethod) {
9
- return config.providers.find(provider => provider.constructMethod === constructMethod);
10
+ const config = setUse.memory.providerConfig;
11
+ const providers = config.providers;
12
+ return providers.find(provider => provider.constructMethod === constructMethod);
10
13
  }
11
14
  export const providers = {
12
- /**
13
- * @template T
14
- * @param {(new (...args: any[]) => T) | () => T} constructor
15
- * @returns {T}
16
- */
17
15
  create: (constructMethod) => {
18
16
  const existing = get(constructMethod);
19
17
  if (existing) {
@@ -22,6 +20,7 @@ export const providers = {
22
20
  }
23
21
  // Providers with provider requirements just need to use providers.create() and providers.inject()
24
22
  const instance = constructMethod.constructor ? new constructMethod() : constructMethod();
23
+ const config = setUse.memory.providerConfig;
25
24
  config.providers.push({
26
25
  constructMethod,
27
26
  instance,
@@ -39,11 +38,12 @@ export const providers = {
39
38
  if (oldValue) {
40
39
  return oldValue.instance;
41
40
  }
41
+ const config = setUse.memory.providerConfig;
42
42
  let owner = {
43
43
  ownerTag: config.ownerTag
44
44
  };
45
45
  while (owner.ownerTag) {
46
- const ownerProviders = owner.ownerTag.providers;
46
+ const ownerProviders = owner.ownerTag.tagSupport.memory.providers;
47
47
  const provider = ownerProviders.find(provider => {
48
48
  if (provider.constructMethod === constructor) {
49
49
  return true;
@@ -56,23 +56,31 @@ export const providers = {
56
56
  }
57
57
  owner = owner.ownerTag; // cause reloop
58
58
  }
59
- const msg = `Could not inject provider: ${constructor}`;
59
+ const msg = `Could not inject provider: ${constructor.name} ${constructor}`;
60
60
  console.warn(`${msg}. Available providers`, config.providers);
61
61
  throw new Error(msg);
62
62
  }
63
63
  };
64
64
  setUse({
65
- beforeRedraw: (_tagSupport, tag) => {
66
- config.currentTag = tag;
67
- config.ownerTag = tag.ownerTag;
68
- if (tag.providers.length) {
69
- config.providers.length = 0;
70
- config.providers.push(...tag.providers);
71
- }
65
+ beforeRender: (tagSupport, ownerTag) => {
66
+ run(tagSupport, ownerTag);
67
+ },
68
+ beforeRedraw: (tagSupport, tag) => {
69
+ run(tagSupport, tag.ownerTag);
72
70
  },
73
- afterRender: (_tagSupport, tag) => {
74
- tag.providers = [...config.providers];
71
+ afterRender: (tagSupport) => {
72
+ const config = setUse.memory.providerConfig;
73
+ tagSupport.memory.providers = [...config.providers];
75
74
  config.providers.length = 0;
76
75
  }
77
76
  });
77
+ function run(tagSupport, ownerTag) {
78
+ const config = setUse.memory.providerConfig;
79
+ config.currentTagSuport = tagSupport;
80
+ config.ownerTag = ownerTag;
81
+ if (tagSupport.memory.providers.length) {
82
+ config.providers.length = 0;
83
+ config.providers.push(...tagSupport.memory.providers);
84
+ }
85
+ }
78
86
  //# sourceMappingURL=providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../ts/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../ts/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { TemplaterResult } from "./templater.utils.js";
2
+ import { Tag } from "./Tag.class.js";
3
+ export declare function redrawTag(existingTag: Tag | undefined, templater: TemplaterResult, // latest tag function to call for rendering
4
+ ownerTag?: Tag): {
5
+ remit: boolean;
6
+ retag: Tag;
7
+ };
@@ -0,0 +1,8 @@
1
+ import { getTagSupport } from "./getTagSupport.js";
2
+ export function redrawTag(existingTag, templater, // latest tag function to call for rendering
3
+ ownerTag) {
4
+ const tagSupport = existingTag?.tagSupport || getTagSupport(templater);
5
+ const result = templater.renderWithSupport(tagSupport, existingTag, ownerTag);
6
+ return result;
7
+ }
8
+ //# sourceMappingURL=redrawTag.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redrawTag.function.js","sourceRoot":"","sources":["../ts/redrawTag.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIlD,MAAM,UAAU,SAAS,CACvB,WAA4B,EAC5B,SAA0B,EAAE,4CAA4C;AACxE,QAAc;IAEd,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,IAAI,aAAa,CAAC,SAAS,CAAC,CAAA;IAEtE,MAAM,MAAM,GAAG,SAAS,CAAC,iBAAiB,CACxC,UAAU,EACV,WAAW,EACX,QAAQ,CACT,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
package/js/render.d.ts CHANGED
@@ -1,6 +1 @@
1
- import { Context, Tag } from "./Tag.class.js";
2
- export declare function buildItemTagMap(tag: Tag, template: {
3
- string: string;
4
- context: Context;
5
- }, // {string, context}
6
- insertBefore: Element): (ChildNode | Element)[];
1
+ export declare function buildClones(temporary: Element, insertBefore: Element): ChildNode[];
package/js/render.js CHANGED
@@ -1,22 +1,7 @@
1
- import { interpolateElement } from "./interpolateElement.js";
2
- export function buildItemTagMap(tag, template, // {string, context}
3
- insertBefore) {
4
- const temporary = document.createElement('div');
5
- temporary.id = 'tag-temp-holder';
6
- // render content with a first child that we can know is our first element
7
- temporary.innerHTML = '<div></div>' + template.string;
8
- const context = tag.update();
9
- interpolateElement(temporary, context, tag);
10
- const clones = buildClones(temporary, insertBefore);
11
- tag.clones.push(...clones);
12
- return clones;
13
- }
14
- function buildClones(temporary, insertBefore) {
1
+ export function buildClones(temporary, insertBefore) {
15
2
  const clones = [];
16
- const templateClone = temporary.children[0];
17
- const sibling = templateClone; // a div we added
18
- let nextSibling = sibling.nextSibling;
19
- temporary.removeChild(templateClone); // remove the div
3
+ const template = temporary.children[0];
4
+ let nextSibling = template.content.firstChild;
20
5
  while (nextSibling) {
21
6
  const nextNextSibling = nextSibling.nextSibling;
22
7
  buildSibling(nextSibling, insertBefore);
@@ -26,6 +11,7 @@ function buildClones(temporary, insertBefore) {
26
11
  return clones;
27
12
  }
28
13
  function buildSibling(nextSibling, insertBefore) {
29
- insertBefore.parentNode.insertBefore(nextSibling, insertBefore);
14
+ const parentNode = insertBefore.parentNode;
15
+ parentNode.insertBefore(nextSibling, insertBefore);
30
16
  }
31
17
  //# sourceMappingURL=render.js.map
package/js/render.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../ts/render.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAG5D,MAAM,UAAU,eAAe,CAC7B,GAAQ,EACR,QAA4C,EAAE,oBAAoB;AAClE,YAAqB;IAErB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC/C,SAAS,CAAC,EAAE,GAAG,iBAAiB,CAAA;IAEhC,0EAA0E;IAC1E,SAAS,CAAC,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAA;IAErD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAA;IAC5B,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACnD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAE,GAAG,MAAM,CAAE,CAAA;IAE5B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,WAAW,CAClB,SAAkB,EAClB,YAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,aAAa,CAAA,CAAC,iBAAiB;IAC/C,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;IACrC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA,CAAC,iBAAiB;IAEtD,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAA;QAC/C,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,WAAW,GAAG,eAAe,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,WAAsB,EACtB,YAAqB;IAEpB,YAAY,CAAC,UAAyB,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AACjF,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../ts/render.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CACzB,SAAkB,EAClB,YAAqB;IAErB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAwB,CAAA;IAC7D,IAAI,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAA;IAE7C,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAA;QAC/C,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;QACvC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACxB,WAAW,GAAG,eAAe,CAAA;IAC/B,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,WAAsB,EACtB,YAAqB;IAErB,MAAM,UAAU,GAAG,YAAY,CAAC,UAAwB,CAAA;IACxD,UAAU,CAAC,YAAY,CACrB,WAAW,EACX,YAAY,CACb,CAAA;AACH,CAAC"}
@@ -1,8 +1,14 @@
1
1
  import { TagSupport } from "./getTagSupport.js";
2
+ import { TagComponent, TemplaterResult } from "./templater.utils.js";
2
3
  import { Tag } from "./Tag.class.js";
3
- import { TemplaterResult } from "./tag.js";
4
- export declare function renderAppToElement(app: (...args: unknown[]) => TemplaterResult, element: Element, props: unknown): void;
4
+ export declare function renderAppToElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
5
+ element: Element, props: unknown): {
6
+ tag: Tag;
7
+ tags: TagComponent[];
8
+ };
5
9
  export declare function applyTagUpdater(wrapper: TemplaterResult): {
6
10
  tag: Tag;
7
11
  tagSupport: TagSupport;
8
12
  };
13
+ /** Overwrites arguments.tagSupport.mutatingRender */
14
+ export declare function addAppTagRender(tagSupport: TagSupport, tag: Tag): void;
@@ -1,38 +1,57 @@
1
- import { interpolateElement } from "./interpolateElement.js";
2
- import { getTagSupport } from "./getTagSupport.js";
3
1
  import { runBeforeRender } from "./tagRunner.js";
4
- export function renderAppToElement(app, element, props) {
2
+ const appElements = [];
3
+ export function renderAppToElement(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
+ }
5
11
  // Create the app which returns [props, runOneTimeFunction]
6
12
  const wrapper = app(props);
7
13
  // have a function setup and call the tagWrapper with (props, {update, async, on})
8
14
  const result = applyTagUpdater(wrapper);
9
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) {
10
39
  let lastTag;
11
40
  tagSupport.mutatingRender = () => {
12
- runBeforeRender(tagSupport, tag);
13
41
  tag.beforeRedraw();
14
- const fromTag = lastTag = wrapper.wrapper();
15
- fromTag.setSupport(tag.tagSupport);
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);
16
48
  tag.afterRender();
17
49
  tag.updateByTag(fromTag);
18
50
  if (lastTag) {
19
- lastTag.destroy(0);
51
+ lastTag.destroy({ stagger: 0 });
20
52
  }
53
+ tagSupport.newest = fromTag;
21
54
  return lastTag;
22
55
  };
23
- const context = tag.updateValues(tag.values);
24
- const template = tag.getTemplate();
25
- element.innerHTML = template.string;
26
- interpolateElement(element, context, tag);
27
- }
28
- export function applyTagUpdater(wrapper) {
29
- const tagSupport = getTagSupport(wrapper);
30
- runBeforeRender(tagSupport);
31
- // Call the apps function for our tag templater
32
- const templater = tagSupport.templater;
33
- const tag = templater.wrapper();
34
- tag.tagSupport = tagSupport;
35
- tag.afterRender();
36
- return { tag, tagSupport };
37
56
  }
38
57
  //# sourceMappingURL=renderAppToElement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderAppToElement.js","sourceRoot":"","sources":["../ts/renderAppToElement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAc,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,MAAM,UAAU,kBAAkB,CAChC,GAA4C,EAC5C,OAAgB,EAChB,KAAc;IAEd,2DAA2D;IAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;IAE1B,kFAAkF;IAClF,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,EAAC,GAAG,EAAE,UAAU,EAAC,GAAG,MAAM,CAAA;IAEhC,IAAI,OAAO,CAAA;IACX,UAAU,CAAC,cAAc,GAAG,GAAG,EAAE;QAC/B,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAChC,GAAG,CAAC,YAAY,EAAE,CAAA;QAElB,MAAM,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAE3C,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAClC,GAAG,CAAC,WAAW,EAAE,CAAA;QACjB,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAExB,IAAG,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IAElC,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;IACnC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;AAE3C,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAwB;IAExB,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACzC,eAAe,CAAC,UAAU,CAAC,CAAA;IAE3B,+CAA+C;IAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,SAA4B,CAAA;IACzD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,CAAA;IAE/B,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;IAC3B,GAAG,CAAC,WAAW,EAAE,CAAA;IAEjB,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"renderAppToElement.js","sourceRoot":"","sources":["../ts/renderAppToElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Tag } from "./Tag.class.js";
2
+ import { TagSupport } from "./getTagSupport";
3
+ import { Config } from "./state";
4
+ interface TagUse {
5
+ beforeRender: (tagSupport: TagSupport, ownerTag: Tag) => void;
6
+ beforeRedraw: (tagSupport: TagSupport, tag: Tag) => void;
7
+ afterRender: (tagSupport: TagSupport, tag: Tag) => void;
8
+ beforeDestroy: (tagSupport: TagSupport, tag: Tag) => void;
9
+ }
10
+ export type UseOptions = {
11
+ beforeRender?: (tagSupport: TagSupport, ownerTag: Tag) => void;
12
+ beforeRedraw?: (tagSupport: TagSupport, tag: Tag) => void;
13
+ afterRender?: (tagSupport: TagSupport, tag: Tag) => void;
14
+ beforeDestroy?: (tagSupport: TagSupport, tag: Tag) => void;
15
+ };
16
+ export declare function setUse(use: UseOptions): void;
17
+ export declare namespace setUse {
18
+ var tagUse: TagUse[];
19
+ var memory: Record<string, any> & {
20
+ stateConfig: Config;
21
+ };
22
+ }
23
+ export {};
@@ -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/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/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
package/js/state.js.map CHANGED
@@ -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":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAuB7C,eAAe;AACf,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG;IAC1B,KAAK,EAAE,EAAsB,EAAE,mCAAmC;IAClE,OAAO,EAAE,EAAsB,EAAE,iDAAiD;CACzE,CAAA;AAEX;;;;GAIG;AACH,MAAM,UAAU,KAAK,CACnB,YAA2B,EAC3B,YAA+B;IAE/B,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAEhD,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,CAAC;YAChB,QAAQ,EAAE,YAA2B;YACrC,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAA;QACF,OAAO,QAAQ,CAAA,CAAC,2BAA2B;IAC7C,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,YAAY,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAA;IACtF,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;IAE7B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAChB,QAAQ,EAAE,YAA2B;QACrC,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,SAAS;KACxB,CAAC,CAAA;IAEF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC;IACL,YAAY,EAAE,CAAC,UAAsB,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;IAC/D,YAAY,EAAE,CAAC,UAAsB,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC;IAC/D,WAAW,EAAE,CACX,UAAsB,EACtB,GAAQ,EACR,EAAE;QACF,MAAM,KAAK,GAAU,UAAU,CAAC,MAAM,CAAC,KAAK,CAAA;QAC5C,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;QAEhD,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,OAAO,GAAG,6BAA6B,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;gBAE/F,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;oBACrB,SAAS,EAAE,MAAM,CAAC,KAAK;oBACvB,SAAS,EAAE,MAAM,CAAC,OAAO;oBACzB,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ;iBAClD,CAAC,CAAA;gBAEF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,CAAC,OAAO,GAAG,EAAE,CAAA,CAAC,6BAA6B;QAEjD,0BAA0B;QAC1B,4CAA4C;QAC5C,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAEhC,0BAA0B;QAC1B,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;IACnB,CAAC;CACF,CAAC,CAAA;AAGF,MAAM,UAAU,aAAa;AAC3B,sBAAsB;AACtB,KAAsB;IAEtB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE/B,IAAG,CAAC,QAAQ,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,YAAY,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA,CAAC,iCAAiC;IAC1E,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;IAC3B,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAE,QAAQ,CAAE,CAAA,CAAC,6BAA6B;IAEvE,IAAG,UAAU,KAAK,aAAa,EAAE,CAAC;QAChC,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,OAAO,aAAa;CAAG;AAE7B,SAAS,SAAS,CAChB,UAAsB;IAEtB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,KAAc,CAAA;IAC9C,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAEhD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,wBAAwB,CAAA;QACxC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE;YACrB,MAAM;YACN,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ;YACjD,KAAK;SACN,CAAC,CAAA;QACF,MAAM,OAAO,CAAA;IACf,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,OAAO,GAAG,EAAE,CAAA,CAAC,cAAc;IAElC,IAAG,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAE,GAAG,KAAK,CAAC,MAAM,CAAE,CAAA;IACxC,CAAC;AACH,CAAC"}
package/js/tag.d.ts CHANGED
@@ -1,17 +1,7 @@
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
+ children?: Tag;
6
+ };
7
+ export declare function tag<T>(tagComponent: T | TagComponent): T;