taggedjs 2.5.4 → 2.5.6

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 (243) hide show
  1. package/bundle.js +3378 -2966
  2. package/bundle.js.map +1 -1
  3. package/js/Props.d.ts +1 -1
  4. package/js/Tag.class.d.ts +1 -1
  5. package/js/TemplaterResult.class.d.ts +14 -8
  6. package/js/TemplaterResult.class.js +13 -3
  7. package/js/TemplaterResult.class.js.map +1 -1
  8. package/js/afterInterpolateElement.function.d.ts +2 -2
  9. package/js/alterProps.function.d.ts +2 -3
  10. package/js/alterProps.function.js +6 -7
  11. package/js/alterProps.function.js.map +1 -1
  12. package/js/checkDestroyPrevious.function.d.ts +3 -3
  13. package/js/checkDestroyPrevious.function.js +2 -2
  14. package/js/checkDestroyPrevious.function.js.map +1 -1
  15. package/js/cloneValueArray.function.d.ts +1 -1
  16. package/js/destroy.support.d.ts +1 -1
  17. package/js/destroyTag.function.d.ts +1 -1
  18. package/js/hasTagSupportChanged.function.d.ts +1 -1
  19. package/js/index.d.ts +15 -12
  20. package/js/index.js +15 -12
  21. package/js/index.js.map +1 -1
  22. package/js/insertAfter.function.d.ts +1 -1
  23. package/js/interpolations/Clones.type.d.ts +3 -0
  24. package/js/interpolations/Clones.type.js +2 -0
  25. package/js/interpolations/Clones.type.js.map +1 -0
  26. package/js/interpolations/ElementTargetEvent.interface.d.ts +6 -0
  27. package/js/interpolations/ElementTargetEvent.interface.js +2 -0
  28. package/js/interpolations/ElementTargetEvent.interface.js.map +1 -0
  29. package/js/interpolations/afterInterpolateElement.function.d.ts +4 -0
  30. package/js/interpolations/afterInterpolateElement.function.js +12 -0
  31. package/js/interpolations/afterInterpolateElement.function.js.map +1 -0
  32. package/js/interpolations/bindSubjectCallback.function.d.ts +1 -1
  33. package/js/interpolations/bindSubjectCallback.function.js +11 -9
  34. package/js/interpolations/bindSubjectCallback.function.js.map +1 -1
  35. package/js/interpolations/interpolateAttributes.d.ts +2 -2
  36. package/js/interpolations/interpolateContentTemplates.d.ts +2 -2
  37. package/js/interpolations/interpolateElement.d.ts +2 -2
  38. package/js/interpolations/interpolateElement.js +1 -1
  39. package/js/interpolations/interpolateElement.js.map +1 -1
  40. package/js/interpolations/interpolateTemplate.d.ts +4 -4
  41. package/js/interpolations/interpolateTemplate.js +19 -4
  42. package/js/interpolations/interpolateTemplate.js.map +1 -1
  43. package/js/interpolations/processAttribute.function.d.ts +2 -2
  44. package/js/interpolations/scanTextAreaValue.function.d.ts +2 -2
  45. package/js/isInstance.d.ts +2 -2
  46. package/js/isInstance.js +2 -1
  47. package/js/isInstance.js.map +1 -1
  48. package/js/isLikeTags.function.d.ts +2 -1
  49. package/js/isLikeTags.function.js +3 -0
  50. package/js/isLikeTags.function.js.map +1 -1
  51. package/js/processNewValue.function.d.ts +1 -1
  52. package/js/processNewValue.function.js +1 -1
  53. package/js/processNewValue.function.js.map +1 -1
  54. package/js/processSubjectComponent.function.d.ts +1 -1
  55. package/js/processSubjectComponent.function.js +1 -1
  56. package/js/processSubjectComponent.function.js.map +1 -1
  57. package/js/processSubjectValue.function.d.ts +2 -2
  58. package/js/processSubjectValue.function.js +2 -2
  59. package/js/processSubjectValue.function.js.map +1 -1
  60. package/js/processTag.function.d.ts +1 -1
  61. package/js/processTag.function.js +1 -1
  62. package/js/processTag.function.js.map +1 -1
  63. package/js/processTagArray.d.ts +1 -1
  64. package/js/processTagArray.js +2 -2
  65. package/js/processTagArray.js.map +1 -1
  66. package/js/processTagResult.function.d.ts +2 -2
  67. package/js/render.d.ts +1 -1
  68. package/js/render.js +6 -5
  69. package/js/render.js.map +1 -1
  70. package/js/renderExistingTag.function.d.ts +1 -1
  71. package/js/renderExistingTag.function.js +3 -4
  72. package/js/renderExistingTag.function.js.map +1 -1
  73. package/js/renderSubjectComponent.function.d.ts +1 -1
  74. package/js/renderSubjectComponent.function.js +1 -1
  75. package/js/renderSubjectComponent.function.js.map +1 -1
  76. package/js/renderTagOnly.function.d.ts +4 -0
  77. package/js/renderTagOnly.function.js +39 -0
  78. package/js/renderTagOnly.function.js.map +1 -0
  79. package/js/renderTagSupport.function.d.ts +1 -1
  80. package/js/renderTagSupport.function.js +1 -1
  81. package/js/renderTagSupport.function.js.map +1 -1
  82. package/js/renderWithSupport.function.d.ts +2 -3
  83. package/js/renderWithSupport.function.js +4 -36
  84. package/js/renderWithSupport.function.js.map +1 -1
  85. package/js/state/callbackMaker.function.d.ts +3 -2
  86. package/js/state/callbackMaker.function.js +40 -18
  87. package/js/state/callbackMaker.function.js.map +1 -1
  88. package/js/state/children.d.ts +1 -0
  89. package/js/state/children.js +14 -0
  90. package/js/state/children.js.map +1 -0
  91. package/js/state/index.d.ts +2 -1
  92. package/js/state/index.js +2 -1
  93. package/js/state/index.js.map +1 -1
  94. package/js/state/provider.utils.d.ts +1 -1
  95. package/js/state/provider.utils.js +7 -7
  96. package/js/state/provider.utils.js.map +1 -1
  97. package/js/state/providers.d.ts +4 -2
  98. package/js/state/providers.js +56 -47
  99. package/js/state/providers.js.map +1 -1
  100. package/js/state/setUse.function.d.ts +9 -8
  101. package/js/state/setUse.function.js.map +1 -1
  102. package/js/state/state.function.js +17 -0
  103. package/js/state/state.function.js.map +1 -1
  104. package/js/state/state.utils.d.ts +1 -1
  105. package/js/state/state.utils.js +38 -24
  106. package/js/state/state.utils.js.map +1 -1
  107. package/js/state/subject.function.d.ts +12 -0
  108. package/js/state/subject.function.js +23 -0
  109. package/js/state/subject.function.js.map +1 -0
  110. package/js/state/syncStates.function.d.ts +2 -0
  111. package/js/state/syncStates.function.js +11 -0
  112. package/js/state/syncStates.function.js.map +1 -0
  113. package/js/state/watch.function.d.ts +20 -3
  114. package/js/state/watch.function.js +106 -10
  115. package/js/state/watch.function.js.map +1 -1
  116. package/js/subject/Subject.class.d.ts +9 -3
  117. package/js/subject/Subject.class.js +20 -54
  118. package/js/subject/Subject.class.js.map +1 -1
  119. package/js/subject/Subject.utils.d.ts +6 -3
  120. package/js/subject/Subject.utils.js +51 -3
  121. package/js/subject/Subject.utils.js.map +1 -1
  122. package/js/subject/ValueSubject.d.ts +2 -2
  123. package/js/subject/combineLatest.function.js +10 -2
  124. package/js/subject/combineLatest.function.js.map +1 -1
  125. package/js/subject/subject.cancel.d.ts +2 -0
  126. package/js/subject/subject.cancel.js +3 -0
  127. package/js/subject/subject.cancel.js.map +1 -0
  128. package/js/subject/will.functions.d.ts +1 -1
  129. package/js/subject.types.d.ts +2 -2
  130. package/js/tag/Tag.class.d.ts +43 -0
  131. package/js/tag/Tag.class.js +27 -0
  132. package/js/tag/Tag.class.js.map +1 -0
  133. package/js/tag/TagSupport.class.d.ts +58 -0
  134. package/js/tag/TagSupport.class.js +306 -0
  135. package/js/tag/TagSupport.class.js.map +1 -0
  136. package/js/tag/checkDestroyPrevious.function.d.ts +8 -0
  137. package/js/tag/checkDestroyPrevious.function.js +83 -0
  138. package/js/tag/checkDestroyPrevious.function.js.map +1 -0
  139. package/js/tag/cloneValueArray.function.d.ts +2 -0
  140. package/js/tag/cloneValueArray.function.js +19 -0
  141. package/js/tag/cloneValueArray.function.js.map +1 -0
  142. package/js/tag/destroy.support.d.ts +6 -0
  143. package/js/tag/destroy.support.js +10 -0
  144. package/js/tag/destroy.support.js.map +1 -0
  145. package/js/tag/destroyTag.function.d.ts +3 -0
  146. package/js/tag/destroyTag.function.js +12 -0
  147. package/js/tag/destroyTag.function.js.map +1 -0
  148. package/js/tag/elementDestroyCheck.function.d.ts +3 -0
  149. package/js/tag/elementDestroyCheck.function.js +17 -0
  150. package/js/tag/elementDestroyCheck.function.js.map +1 -0
  151. package/js/tag/getSupportInCycle.function.d.ts +1 -0
  152. package/js/tag/getSupportInCycle.function.js +5 -0
  153. package/js/tag/getSupportInCycle.function.js.map +1 -0
  154. package/js/tag/hasPropChanges.function.d.ts +9 -0
  155. package/js/tag/hasPropChanges.function.js +80 -0
  156. package/js/tag/hasPropChanges.function.js.map +1 -0
  157. package/js/tag/hasTagSupportChanged.function.d.ts +4 -0
  158. package/js/tag/hasTagSupportChanged.function.js +23 -0
  159. package/js/tag/hasTagSupportChanged.function.js.map +1 -0
  160. package/js/tag/html.d.ts +4 -0
  161. package/js/tag/html.js +5 -0
  162. package/js/tag/html.js.map +1 -0
  163. package/js/tag/isLikeTags.function.d.ts +5 -0
  164. package/js/tag/isLikeTags.function.js +42 -0
  165. package/js/tag/isLikeTags.function.js.map +1 -0
  166. package/js/tag/render/renderExistingTag.function.d.ts +7 -0
  167. package/js/tag/render/renderExistingTag.function.js +32 -0
  168. package/js/tag/render/renderExistingTag.function.js.map +1 -0
  169. package/js/tag/render/renderSubjectComponent.function.d.ts +3 -0
  170. package/js/tag/render/renderSubjectComponent.function.js +14 -0
  171. package/js/tag/render/renderSubjectComponent.function.js.map +1 -0
  172. package/js/tag/render/renderTagOnly.function.d.ts +3 -0
  173. package/js/tag/render/renderTagOnly.function.js +41 -0
  174. package/js/tag/render/renderTagOnly.function.js.map +1 -0
  175. package/js/tag/render/renderTagSupport.function.d.ts +4 -0
  176. package/js/tag/render/renderTagSupport.function.js +37 -0
  177. package/js/tag/render/renderTagSupport.function.js.map +1 -0
  178. package/js/tag/render/renderWithSupport.function.d.ts +5 -0
  179. package/js/tag/render/renderWithSupport.function.js +31 -0
  180. package/js/tag/render/renderWithSupport.function.js.map +1 -0
  181. package/js/tag/setTagPlaceholder.function.d.ts +4 -0
  182. package/js/tag/setTagPlaceholder.function.js +12 -0
  183. package/js/tag/setTagPlaceholder.function.js.map +1 -0
  184. package/js/tag/tag.d.ts +26 -0
  185. package/js/tag/tag.js +121 -0
  186. package/js/tag/tag.js.map +1 -0
  187. package/js/tag/tagElement.d.ts +9 -0
  188. package/js/tag/tagElement.js +60 -0
  189. package/js/tag/tagElement.js.map +1 -0
  190. package/js/tag/tagRunner.d.ts +5 -0
  191. package/js/tag/tagRunner.js +28 -0
  192. package/js/tag/tagRunner.js.map +1 -0
  193. package/js/tag/update/processNewValue.function.d.ts +3 -0
  194. package/js/tag/update/processNewValue.function.js +42 -0
  195. package/js/tag/update/processNewValue.function.js.map +1 -0
  196. package/js/tag/update/processRegularValue.function.d.ts +5 -0
  197. package/js/tag/update/processRegularValue.function.js +15 -0
  198. package/js/tag/update/processRegularValue.function.js.map +1 -0
  199. package/js/tag/update/processSubjectComponent.function.d.ts +9 -0
  200. package/js/tag/update/processSubjectComponent.function.js +35 -0
  201. package/js/tag/update/processSubjectComponent.function.js.map +1 -0
  202. package/js/tag/update/processSubjectValue.function.d.ts +27 -0
  203. package/js/tag/update/processSubjectValue.function.js +55 -0
  204. package/js/tag/update/processSubjectValue.function.js.map +1 -0
  205. package/js/tag/update/processTag.function.d.ts +11 -0
  206. package/js/tag/update/processTag.function.js +46 -0
  207. package/js/tag/update/processTag.function.js.map +1 -0
  208. package/js/tag/update/processTagArray.d.ts +22 -0
  209. package/js/tag/update/processTagArray.js +122 -0
  210. package/js/tag/update/processTagArray.js.map +1 -0
  211. package/js/tag/update/processTagResult.function.d.ts +11 -0
  212. package/js/tag/update/processTagResult.function.js +30 -0
  213. package/js/tag/update/processTagResult.function.js.map +1 -0
  214. package/js/tag/update/updateContextItem.function.d.ts +3 -0
  215. package/js/tag/update/updateContextItem.function.js +44 -0
  216. package/js/tag/update/updateContextItem.function.js.map +1 -0
  217. package/js/tag/update/updateExistingTagComponent.function.d.ts +5 -0
  218. package/js/tag/update/updateExistingTagComponent.function.js +116 -0
  219. package/js/tag/update/updateExistingTagComponent.function.js.map +1 -0
  220. package/js/tag/update/updateExistingValue.function.d.ts +4 -0
  221. package/js/tag/update/updateExistingValue.function.js +137 -0
  222. package/js/tag/update/updateExistingValue.function.js.map +1 -0
  223. package/js/tag/updates/processNewValue.function.d.ts +3 -0
  224. package/js/tag/updates/processNewValue.function.js +43 -0
  225. package/js/tag/updates/processNewValue.function.js.map +1 -0
  226. package/js/tag.js +1 -1
  227. package/js/tag.js.map +1 -1
  228. package/js/tagElement.d.ts +1 -1
  229. package/js/tagElement.js +1 -1
  230. package/js/tagElement.js.map +1 -1
  231. package/js/tagRunner.d.ts +1 -1
  232. package/js/updateBeforeTemplate.function.d.ts +1 -1
  233. package/js/updateBeforeTemplate.function.js.map +1 -1
  234. package/js/updateContextItem.function.d.ts +1 -1
  235. package/js/updateContextItem.function.js +1 -1
  236. package/js/updateContextItem.function.js.map +1 -1
  237. package/js/updateExistingTagComponent.function.d.ts +2 -2
  238. package/js/updateExistingTagComponent.function.js +3 -3
  239. package/js/updateExistingTagComponent.function.js.map +1 -1
  240. package/js/updateExistingValue.function.d.ts +3 -3
  241. package/js/updateExistingValue.function.js +6 -6
  242. package/js/updateExistingValue.function.js.map +1 -1
  243. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ import { hasPropChanges } from "./hasPropChanges.function";
2
+ export function hasTagSupportChanged(oldTagSupport, newTagSupport, newTemplater) {
3
+ const latestProps = newTemplater.props; // newTagSupport.propsConfig.latest
4
+ const pastCloneProps = oldTagSupport.propsConfig.latestCloned;
5
+ const propsChanged = hasPropChanges(latestProps, pastCloneProps);
6
+ // if no changes detected, no need to continue to rendering further tags
7
+ if (propsChanged) {
8
+ return propsChanged;
9
+ }
10
+ const kidsChanged = hasKidsChanged(oldTagSupport, newTagSupport);
11
+ // we already know props didn't change and if kids didn't either, than don't render
12
+ return kidsChanged;
13
+ }
14
+ export function hasKidsChanged(oldTagSupport, newTagSupport) {
15
+ const oldCloneKidValues = oldTagSupport.propsConfig.lastClonedKidValues;
16
+ const newClonedKidValues = newTagSupport.propsConfig.lastClonedKidValues;
17
+ const everySame = oldCloneKidValues.every((set, index) => {
18
+ const x = newClonedKidValues[index];
19
+ return set.every((item, index) => item === x[index]);
20
+ });
21
+ return everySame ? false : 9;
22
+ }
23
+ //# sourceMappingURL=hasTagSupportChanged.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasTagSupportChanged.function.js","sourceRoot":"","sources":["../../ts/tag/hasTagSupportChanged.function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,UAAU,oBAAoB,CAClC,aAA6B,EAC7B,aAA6B,EAC7B,YAA6B;IAE7B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAA,CAAC,mCAAmC;IAC1E,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,YAAY,CAAA;IAC7D,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;IAEhE,wEAAwE;IACxE,IAAG,YAAY,EAAE,CAAC;QAChB,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;IAEhE,mFAAmF;IACnF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,aAA6B,EAC7B,aAA6B;IAE7B,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAA;IACvE,MAAM,kBAAkB,GAAG,aAAa,CAAC,WAAW,CAAC,mBAAmB,CAAA;IAExE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACnC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { InputElementTargetEvent } from "../interpolations/ElementTargetEvent.interface";
2
+ import { Tag } from "./Tag.class";
3
+ export type TagValues = (((e: InputElementTargetEvent) => any) | number | string | boolean | null | undefined | Object)[];
4
+ export declare function html(strings: string[] | TemplateStringsArray, ...values: TagValues): Tag;
package/js/tag/html.js ADDED
@@ -0,0 +1,5 @@
1
+ import { Tag } from "./Tag.class";
2
+ export function html(strings, ...values) {
3
+ return new Tag(strings, values);
4
+ }
5
+ //# sourceMappingURL=html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../ts/tag/html.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AAIjC,MAAM,UAAU,IAAI,CAClB,OAAwC,EACxC,GAAG,MAAiB;IAEpB,OAAO,IAAI,GAAG,CAAC,OAAmB,EAAE,MAAM,CAAC,CAAA;AAC7C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Tag } from "./Tag.class";
2
+ import { TagSupport } from "./TagSupport.class";
3
+ export declare function isLikeTags(tagSupport0: TagSupport | Tag, // new
4
+ tagSupport1: TagSupport): Boolean;
5
+ export declare function isLikeValueSets(values0: any[], values1: any[]): boolean;
@@ -0,0 +1,42 @@
1
+ export function isLikeTags(tagSupport0, // new
2
+ tagSupport1) {
3
+ const templater0 = tagSupport0.templater;
4
+ const templater1 = tagSupport1.templater;
5
+ const tag0 = templater0?.tag || tagSupport0;
6
+ const tag1 = templater1.tag;
7
+ const strings0 = tag0.strings;
8
+ const strings1 = tagSupport1.strings || tag1.strings;
9
+ if (strings0.length !== strings1.length) {
10
+ return false;
11
+ }
12
+ const everyStringMatched = strings0.every((string, index) => strings1[index] === string);
13
+ if (!everyStringMatched) {
14
+ return false;
15
+ }
16
+ const values0 = tagSupport0.values || tag0.values;
17
+ const values1 = tagSupport1.values || tag1.values;
18
+ return isLikeValueSets(values0, values1);
19
+ }
20
+ export function isLikeValueSets(values0, values1) {
21
+ const valuesLengthsMatch = values0.length === values1.length;
22
+ if (!valuesLengthsMatch) {
23
+ return false;
24
+ }
25
+ const allVarsMatch = values1.every((value, index) => {
26
+ const compareTo = values0[index];
27
+ const isFunctions = value instanceof Function && compareTo instanceof Function;
28
+ if (isFunctions) {
29
+ const stringMatch = value.toString() === compareTo.toString();
30
+ if (stringMatch) {
31
+ return true;
32
+ }
33
+ return false;
34
+ }
35
+ return true; // deepEqual(value, compareTo)
36
+ });
37
+ if (allVarsMatch) {
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ //# sourceMappingURL=isLikeTags.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isLikeTags.function.js","sourceRoot":"","sources":["../../ts/tag/isLikeTags.function.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,UAAU,CACxB,WAA6B,EAAE,MAAM;AACrC,WAAuB;IAEvB,MAAM,UAAU,GAAG,WAAW,CAAC,SAAwC,CAAA;IACvE,MAAM,UAAU,GAAG,WAAW,CAAC,SAA4B,CAAA;IAE3D,MAAM,IAAI,GAAG,UAAU,EAAE,GAAG,IAAK,WAAmB,CAAA;IACpD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAU,CAAA;IAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAA;IACpD,IAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,EAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,CAAA;IACvF,IAAG,CAAC,kBAAkB,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;IACjD,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAa,EAAE,OAAa;IAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAA;IAC5D,IAAG,CAAC,kBAAkB,EAAE,CAAC;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAC,EAAE;QACjD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAChC,MAAM,WAAW,GAAG,KAAK,YAAY,QAAQ,IAAI,SAAS,YAAY,QAAQ,CAAA;QAE9E,IAAG,WAAW,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAA;YAC7D,IAAG,WAAW,EAAE,CAAC;gBACf,OAAO,IAAI,CAAA;YACb,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA,CAAC,8BAA8B;IAC5C,CAAC,CAAC,CAAA;IAEF,IAAG,YAAY,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { BaseTagSupport, TagSupport } from '../TagSupport.class';
2
+ import { TagSubject } from '../../subject.types';
3
+ /** Returns true when rendering owner is not needed. Returns false when rendering owner should occur */
4
+ export declare function renderExistingTag(oldestSupport: TagSupport, // oldest with elements on html
5
+ newSupport: TagSupport, // new to be rendered
6
+ ownerSupport: BaseTagSupport, // ownerSupport
7
+ subject: TagSubject): TagSupport;
@@ -0,0 +1,32 @@
1
+ import { providersChangeCheck } from '../../state/provider.utils';
2
+ import { isLikeTags } from '../isLikeTags.function';
3
+ import { renderWithSupport } from './renderWithSupport.function';
4
+ /** Returns true when rendering owner is not needed. Returns false when rendering owner should occur */
5
+ export function renderExistingTag(oldestSupport, // oldest with elements on html
6
+ newSupport, // new to be rendered
7
+ ownerSupport, // ownerSupport
8
+ subject) {
9
+ const lastSupport = subject.tagSupport;
10
+ const global = lastSupport.global;
11
+ // share point between renders
12
+ newSupport.global = global;
13
+ const preRenderCount = global.renderCount;
14
+ providersChangeCheck(oldestSupport);
15
+ // When the providers were checked, a render to myself occurred and I do not need to re-render again
16
+ const prevSupport = global.newest;
17
+ if (preRenderCount !== global.renderCount) {
18
+ oldestSupport.updateBy(prevSupport);
19
+ return prevSupport; // already rendered during triggered events
20
+ }
21
+ const toRedrawTag = prevSupport || lastSupport || global.oldest;
22
+ const reSupport = renderWithSupport(newSupport, toRedrawTag, subject, ownerSupport);
23
+ const oldest = global.oldest || oldestSupport;
24
+ reSupport.global.oldest = oldest;
25
+ // TODO: renderWithSupport already does an isLikeTags compare
26
+ if (isLikeTags(prevSupport, reSupport)) {
27
+ subject.tagSupport = reSupport;
28
+ oldest.updateBy(reSupport);
29
+ }
30
+ return reSupport;
31
+ }
32
+ //# sourceMappingURL=renderExistingTag.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderExistingTag.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderExistingTag.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,uGAAuG;AACvG,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EAAE,+BAA+B;AAC1D,UAAsB,EAAE,qBAAqB;AAC7C,YAA4B,EAAE,eAAe;AAC7C,OAAmB;IAEnB,MAAM,WAAW,GAAG,OAAO,CAAC,UAAwB,CAAA;IACpD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;IAEjC,8BAA8B;IAC9B,UAAU,CAAC,MAAM,GAAG,MAAM,CAAA;IAE1B,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAA;IACzC,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAEnC,oGAAoG;IACpG,MAAM,WAAW,GAAG,MAAM,CAAC,MAAoB,CAAA;IAC/C,IAAG,cAAc,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;QACzC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACnC,OAAO,WAAW,CAAA,CAAC,2CAA2C;IAChE,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,CAAA;IAE/D,MAAM,SAAS,GAAG,iBAAiB,CACjC,UAAU,EACV,WAAW,EACX,OAAO,EACP,YAA0B,CAC3B,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,aAAa,CAAA;IAC7C,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;IAEhC,6DAA6D;IAC7D,IAAG,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAA;QAC9B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC5B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TagSubject } from '../../subject.types';
2
+ import { TagSupport } from '../TagSupport.class';
3
+ export declare function renderSubjectComponent(subject: TagSubject, reSupport: TagSupport, ownerSupport: TagSupport): TagSupport;
@@ -0,0 +1,14 @@
1
+ import { renderWithSupport } from './renderWithSupport.function';
2
+ export function renderSubjectComponent(subject, reSupport, ownerSupport) {
3
+ const preClones = ownerSupport.clones.map(clone => clone);
4
+ reSupport = renderWithSupport(reSupport, subject.tagSupport, // existing tag
5
+ subject, ownerSupport);
6
+ reSupport.global.newest = reSupport;
7
+ if (ownerSupport.clones.length > preClones.length) {
8
+ const myClones = ownerSupport.clones.filter(fClone => !preClones.find(clone => clone === fClone));
9
+ reSupport.clones.push(...myClones);
10
+ }
11
+ ownerSupport.childTags.push(reSupport);
12
+ return reSupport;
13
+ }
14
+ //# sourceMappingURL=renderSubjectComponent.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderSubjectComponent.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderSubjectComponent.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAIhE,MAAM,UAAU,sBAAsB,CACpC,OAAmB,EACnB,SAAqB,EACrB,YAAwB;IAExB,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAEzD,SAAS,GAAG,iBAAiB,CAC3B,SAAS,EACT,OAAO,CAAC,UAAU,EAAE,eAAe;IACnC,OAAO,EACP,YAAY,CACb,CAAA;IAED,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAEnC,IAAG,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAA;QACjG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAEtC,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TagSupport } from '../TagSupport.class';
2
+ import { TagSubject } from '../../subject.types';
3
+ export declare function renderTagOnly(newTagSupport: TagSupport, lastSupport: TagSupport | undefined, subject: TagSubject, ownerSupport?: TagSupport): TagSupport;
@@ -0,0 +1,41 @@
1
+ import { runBeforeRedraw, runBeforeRender } from '../tagRunner';
2
+ import { setUse } from '../../state';
3
+ import { runAfterRender } from '../tagRunner';
4
+ export function renderTagOnly(newTagSupport, lastSupport, subject, ownerSupport) {
5
+ const oldRenderCount = newTagSupport.global.renderCount;
6
+ beforeWithRender(newTagSupport, ownerSupport, lastSupport);
7
+ const templater = newTagSupport.templater;
8
+ // NEW TAG CREATED HERE
9
+ const wrapper = templater.wrapper;
10
+ let reSupport = wrapper(newTagSupport, subject);
11
+ /* AFTER */
12
+ runAfterRender(newTagSupport, ownerSupport);
13
+ // When we rendered, only 1 render should have taken place OTHERWISE rendering caused another render and that is the latest instead
14
+ if (reSupport.global.renderCount > oldRenderCount + 1) {
15
+ return newTagSupport.global.newest;
16
+ }
17
+ newTagSupport.global.newest = reSupport;
18
+ return reSupport;
19
+ }
20
+ function beforeWithRender(tagSupport, // new
21
+ ownerSupport, lastSupport) {
22
+ const lastOwnerSupport = lastSupport?.ownerTagSupport;
23
+ const runtimeOwnerSupport = lastOwnerSupport || ownerSupport;
24
+ if (lastSupport) {
25
+ const lastState = lastSupport.memory.state;
26
+ const memory = tagSupport.memory;
27
+ // memory.state.length = 0
28
+ // memory.state.push(...lastState)
29
+ memory.state = [...lastState];
30
+ tagSupport.global = lastSupport.global;
31
+ runBeforeRedraw(tagSupport, lastSupport);
32
+ }
33
+ else {
34
+ // first time render
35
+ runBeforeRender(tagSupport, runtimeOwnerSupport);
36
+ // TODO: Logic below most likely could live within providers.ts inside the runBeforeRender function
37
+ const providers = setUse.memory.providerConfig;
38
+ providers.ownerSupport = runtimeOwnerSupport;
39
+ }
40
+ }
41
+ //# sourceMappingURL=renderTagOnly.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTagOnly.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderTagOnly.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAI7C,MAAM,UAAU,aAAa,CAC3B,aAAyB,EACzB,WAAmC,EACnC,OAAmB,EACnB,YAAyB;IAEzB,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,WAAW,CAAA;IAEvD,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,CAAA;IAE1D,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAA;IAEzC,uBAAuB;IACvB,MAAM,OAAO,GAAG,SAAS,CAAC,OAAkB,CAAA;IAC5C,IAAI,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAC/C,WAAW;IAEX,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;IAE3C,mIAAmI;IACnI,IAAG,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,cAAc,GAAG,CAAC,EAAE,CAAC;QACrD,OAAO,aAAa,CAAC,MAAM,CAAC,MAAoB,CAAA;IAClD,CAAC;IAED,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAA;IAEvC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,gBAAgB,CACvB,UAA0B,EAAE,MAAM;AAClC,YAAyB,EACzB,WAAwB;IAExB,MAAM,gBAAgB,GAAG,WAAW,EAAE,eAAe,CAAA;IACrD,MAAM,mBAAmB,GAA2B,gBAAgB,IAAI,YAAY,CAAA;IAEpF,IAAG,WAAW,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAA;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,0BAA0B;QAC1B,kCAAkC;QAClC,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,SAAS,CAAC,CAAA;QAC7B,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;QAEtC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;IAC1C,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,eAAe,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAA;QAEhD,mGAAmG;QACnG,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAA;QAC9C,SAAS,CAAC,YAAY,GAAG,mBAAmB,CAAA;IAC9C,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { TagSupport } from '../TagSupport.class';
2
+ /** Main function used by all other callers to render/update display of a tag component */
3
+ export declare function renderTagSupport(tagSupport: TagSupport, // must be latest/newest state render
4
+ renderUp: boolean): TagSupport;
@@ -0,0 +1,37 @@
1
+ import { deepEqual } from '../../deepFunctions';
2
+ import { renderExistingTag } from './renderExistingTag.function';
3
+ /** Main function used by all other callers to render/update display of a tag component */
4
+ export function renderTagSupport(tagSupport, // must be latest/newest state render
5
+ renderUp) {
6
+ const global = tagSupport.global;
7
+ const templater = tagSupport.templater;
8
+ // is it just a vanilla tag, not component?
9
+ if (!templater.wrapper) { // || isTagTemplater(templater)
10
+ const ownerTag = tagSupport.ownerTagSupport;
11
+ ++global.renderCount;
12
+ return renderTagSupport(ownerTag, true);
13
+ }
14
+ const subject = tagSupport.subject;
15
+ let ownerSupport;
16
+ let selfPropChange = false;
17
+ const shouldRenderUp = renderUp && tagSupport;
18
+ if (shouldRenderUp) {
19
+ ownerSupport = tagSupport.ownerTagSupport;
20
+ if (ownerSupport) {
21
+ const nowProps = templater.props;
22
+ const latestProps = tagSupport.propsConfig.latestCloned;
23
+ selfPropChange = !nowProps.every((props, index) => deepEqual(props, latestProps[index]));
24
+ }
25
+ }
26
+ const oldest = tagSupport.global.oldest;
27
+ const tag = renderExistingTag(oldest, tagSupport, ownerSupport, // useTagSupport,
28
+ subject);
29
+ const renderOwner = ownerSupport && selfPropChange;
30
+ if (renderOwner) {
31
+ const ownerTagSupport = ownerSupport;
32
+ renderTagSupport(ownerTagSupport, true);
33
+ return tag;
34
+ }
35
+ return tag;
36
+ }
37
+ //# sourceMappingURL=renderTagSupport.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTagSupport.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderTagSupport.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAGhE,0FAA0F;AAC1F,MAAM,UAAU,gBAAgB,CAC9B,UAAsB,EAAE,qCAAqC;AAC7D,QAAiB;IAEjB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;IAEtC,2CAA2C;IAE3C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAG,CAAC,CAAA,gCAAgC;QACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,eAA6B,CAAA;QACzD,EAAE,MAAM,CAAC,WAAW,CAAA;QACpB,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAA;IAElC,IAAI,YAAoC,CAAA;IACxC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,MAAM,cAAc,GAAG,QAAQ,IAAI,UAAU,CAAA;IAE7C,IAAG,cAAc,EAAE,CAAC;QAClB,YAAY,GAAG,UAAU,CAAC,eAAe,CAAA;QACzC,IAAG,YAAY,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAc,CAAA;YACzC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAA;YACvD,cAAc,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC1F,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAoB,CAAA;IACrD,MAAM,GAAG,GAAG,iBAAiB,CAC3B,MAAM,EACN,UAAU,EACV,YAA0B,EAAE,iBAAiB;IAC7C,OAAO,CACR,CAAA;IAED,MAAM,WAAW,GAAG,YAAY,IAAI,cAAc,CAAA;IAClD,IAAG,WAAW,EAAE,CAAC;QACf,MAAM,eAAe,GAAG,YAA0B,CAAA;QAElD,gBAAgB,CACd,eAAe,EACf,IAAI,CACL,CAAA;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { TagSupport } from '../TagSupport.class';
2
+ import { TagSubject } from '../../subject.types';
3
+ export declare function renderWithSupport(newTagSupport: TagSupport, lastSupport: TagSupport | undefined, // previous
4
+ subject: TagSubject, // events & memory
5
+ ownerSupport?: TagSupport): TagSupport;
@@ -0,0 +1,31 @@
1
+ import { isLikeTags } from '../isLikeTags.function';
2
+ import { destroyTagMemory } from '../destroyTag.function';
3
+ import { renderTagOnly } from './renderTagOnly.function';
4
+ export function renderWithSupport(newTagSupport, lastSupport, // previous
5
+ subject, // events & memory
6
+ ownerSupport) {
7
+ const reSupport = renderTagOnly(newTagSupport, lastSupport, subject, ownerSupport);
8
+ const isLikeTag = !lastSupport || isLikeTags(lastSupport, reSupport);
9
+ if (!isLikeTag) {
10
+ destroyUnlikeTags(lastSupport, reSupport, subject);
11
+ }
12
+ const lastOwnerSupport = lastSupport?.ownerTagSupport;
13
+ reSupport.ownerTagSupport = (ownerSupport || lastOwnerSupport);
14
+ return reSupport;
15
+ }
16
+ function destroyUnlikeTags(lastSupport, // old
17
+ reSupport, // new
18
+ subject) {
19
+ const oldGlobal = lastSupport.global;
20
+ const insertBefore = oldGlobal.insertBefore;
21
+ destroyTagMemory(lastSupport);
22
+ // when a tag is destroyed, disconnect the globals
23
+ reSupport.global = { ...oldGlobal }; // break memory references
24
+ const global = reSupport.global;
25
+ global.insertBefore = insertBefore;
26
+ global.deleted = false;
27
+ delete global.oldest;
28
+ delete global.newest;
29
+ delete subject.tagSupport;
30
+ }
31
+ //# sourceMappingURL=renderWithSupport.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderWithSupport.function.js","sourceRoot":"","sources":["../../../ts/tag/render/renderWithSupport.function.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,MAAM,UAAU,iBAAiB,CAC/B,aAAyB,EACzB,WAAmC,EAAE,WAAW;AAChD,OAAmB,EAAE,kBAAkB;AACvC,YAAyB;IAEzB,MAAM,SAAS,GAAG,aAAa,CAC7B,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAClD,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACpE,IAAG,CAAC,SAAS,EAAE,CAAC;QACd,iBAAiB,CACf,WAAW,EACX,SAAS,EACT,OAAO,CACR,CAAA;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,WAAW,EAAE,eAAe,CAAA;IACrD,SAAS,CAAC,eAAe,GAAG,CAAC,YAAY,IAAI,gBAAgB,CAAe,CAAA;IAE5E,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,iBAAiB,CACxB,WAAuB,EAAE,MAAM;AAC/B,SAAqB,EAAE,MAAM;AAC7B,OAAmB;IAEnB,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAA;IACpC,MAAM,YAAY,GAAG,SAAS,CAAC,YAAuB,CAAA;IAEtD,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAE7B,kDAAkD;IAClD,SAAS,CAAC,MAAM,GAAG,EAAC,GAAG,SAAS,EAAC,CAAA,CAAC,0BAA0B;IAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAA;IAE/B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAA;IAEtB,OAAO,MAAM,CAAC,MAAM,CAAA;IACpB,OAAO,MAAM,CAAC,MAAM,CAAA;IACpB,OAAQ,OAAyB,CAAC,UAAU,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { InsertBefore } from '../interpolations/Clones.type';
2
+ import { TagGlobal } from '../TemplaterResult.class';
3
+ export declare function setTagPlaceholder(global: TagGlobal): Text;
4
+ export declare function swapInsertBefore(insertBefore: InsertBefore): Text;
@@ -0,0 +1,12 @@
1
+ export function setTagPlaceholder(global) {
2
+ const insertBefore = global.insertBefore;
3
+ return global.placeholder = swapInsertBefore(insertBefore);
4
+ }
5
+ export function swapInsertBefore(insertBefore) {
6
+ const placeholder = document.createTextNode('');
7
+ const parentNode = insertBefore.parentNode;
8
+ parentNode.insertBefore(placeholder, insertBefore);
9
+ parentNode.removeChild(insertBefore);
10
+ return placeholder;
11
+ }
12
+ //# sourceMappingURL=setTagPlaceholder.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setTagPlaceholder.function.js","sourceRoot":"","sources":["../../ts/tag/setTagPlaceholder.function.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAC/B,MAAiB;IAEjB,MAAM,YAAY,GAAG,MAAM,CAAC,YAA4B,CAAA;IACxD,OAAO,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,YAA0B;IAE1B,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,UAAwB,CAAA;IACxD,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IAClD,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;IACpC,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Tag } from './Tag.class';
2
+ import { TemplaterResult } from '../TemplaterResult.class';
3
+ import { ValueSubject } from '../subject/ValueSubject';
4
+ export type TagChildren = ValueSubject<Tag[]> & {
5
+ lastArray?: Tag[];
6
+ };
7
+ export type TagChildrenInput = Tag[] | Tag | TagChildren;
8
+ type FirstArgOptional<T extends any[]> = T['length'] extends 0 ? true : false;
9
+ export type TagComponentBase<T extends any[]> = (arg: FirstArgOptional<T> extends true ? (T[0] | void) : T[0], children?: TagChildrenInput) => Tag;
10
+ export declare const tags: TagWrapper<any>[];
11
+ export type TagComponent = TagComponentBase<[any?, TagChildren?]> | TagComponentBase<[]>;
12
+ export type TagWrapper<T> = ((...props: T[]) => TemplaterResult) & {
13
+ original: (...args: any[]) => any;
14
+ compareTo: string;
15
+ isTag: boolean;
16
+ };
17
+ export type TagMaker = ((...args: any[]) => Tag) | ((...args: any[]) => (...args: any[]) => Tag);
18
+ /** Wraps a tag component in a state manager and always push children to last argument as an array */
19
+ export declare function tag<T>(tagComponent: T): T & {
20
+ original: Function;
21
+ };
22
+ export declare function kidsToTagArraySubject(children?: TagChildrenInput): {
23
+ childSubject: ValueSubject<Tag[]>;
24
+ madeSubject: boolean;
25
+ };
26
+ export {};
package/js/tag/tag.js ADDED
@@ -0,0 +1,121 @@
1
+ import { isSubjectInstance, isTagArray } from '../isInstance';
2
+ import { setUse } from '../state';
3
+ import { TemplaterResult } from '../TemplaterResult.class';
4
+ import { runTagCallback } from '../interpolations/bindSubjectCallback.function';
5
+ import { deepClone } from '../deepFunctions';
6
+ import { TagSupport } from './TagSupport.class';
7
+ import { alterProps } from '../alterProps.function';
8
+ import { ValueSubject } from '../subject/ValueSubject';
9
+ // export const tags: TagComponentBase<any>[] = []
10
+ export const tags = [];
11
+ let tagCount = 0;
12
+ /** Wraps a tag component in a state manager and always push children to last argument as an array */
13
+ // export function tag<T>(a: T): T;
14
+ export function tag(tagComponent) {
15
+ /** function developer triggers */
16
+ const parentWrap = (function tagWrapper(...props) {
17
+ const templater = new TemplaterResult(props);
18
+ // attach memory back to original function that contains developer display logic
19
+ const innerTagWrap = getTagWrap(templater, parentWrap);
20
+ if (!innerTagWrap.parentWrap) {
21
+ innerTagWrap.parentWrap = parentWrap;
22
+ }
23
+ templater.tagged = true;
24
+ templater.wrapper = innerTagWrap;
25
+ return templater;
26
+ }) // we override the function provided and pretend original is what's returned
27
+ ;
28
+ parentWrap.original = tagComponent;
29
+ parentWrap.compareTo = tagComponent.toString();
30
+ updateResult(parentWrap, tagComponent);
31
+ // group tags together and have hmr pickup
32
+ updateComponent(tagComponent);
33
+ tags.push(parentWrap);
34
+ return parentWrap;
35
+ }
36
+ export function kidsToTagArraySubject(children) {
37
+ if (isSubjectInstance(children)) {
38
+ return { childSubject: children, madeSubject: false };
39
+ }
40
+ const kidArray = children;
41
+ if (isTagArray(kidArray)) {
42
+ return { childSubject: new ValueSubject(children), madeSubject: true };
43
+ }
44
+ const kid = children;
45
+ if (kid) {
46
+ kid.memory.arrayValue = 0;
47
+ return { childSubject: new ValueSubject([kid]), madeSubject: true };
48
+ }
49
+ return {
50
+ childSubject: new ValueSubject([]),
51
+ madeSubject: true // was converted into a subject
52
+ };
53
+ }
54
+ function updateResult(result, tagComponent) {
55
+ result.isTag = true;
56
+ result.original = tagComponent;
57
+ }
58
+ function updateComponent(tagComponent) {
59
+ tagComponent.tags = tags;
60
+ tagComponent.setUse = setUse;
61
+ tagComponent.tagIndex = tagCount++; // needed for things like HMR
62
+ }
63
+ /** creates/returns a function that when called then calls the original component function
64
+ * Gets used as templater.wrapper()
65
+ */
66
+ function getTagWrap(templater, result) {
67
+ // this function gets called by taggedjs
68
+ const wrapper = function (newTagSupport, subject) {
69
+ const global = newTagSupport.global;
70
+ ++global.renderCount;
71
+ const childSubject = templater.children;
72
+ const lastArray = global.oldest?.templater.children.lastArray;
73
+ if (lastArray) {
74
+ childSubject.lastArray = lastArray;
75
+ }
76
+ // result.original
77
+ const originalFunction = result.original; // (innerTagWrap as any).original as unknown as TagComponent
78
+ let props = templater.props;
79
+ let castedProps = props.map(props => alterProps(props, newTagSupport.ownerTagSupport));
80
+ const latestCloned = props.map(props => deepClone(props)); // castedProps
81
+ // CALL ORIGINAL COMPONENT FUNCTION
82
+ let tag = originalFunction(...castedProps);
83
+ if (tag instanceof Function) {
84
+ tag = tag();
85
+ }
86
+ tag.templater = templater;
87
+ templater.tag = tag;
88
+ const tagSupport = new TagSupport(templater, newTagSupport.ownerTagSupport, subject, global.renderCount);
89
+ tagSupport.global = global;
90
+ tagSupport.propsConfig = {
91
+ latest: props,
92
+ latestCloned,
93
+ lastClonedKidValues: tagSupport.propsConfig.lastClonedKidValues,
94
+ };
95
+ tagSupport.memory = newTagSupport.memory; // state handover
96
+ if (templater.madeChildIntoSubject) {
97
+ childSubject.value.forEach(kid => {
98
+ kid.values.forEach((value, index) => {
99
+ if (!(value instanceof Function)) {
100
+ return;
101
+ }
102
+ const valuesValue = kid.values[index];
103
+ if (valuesValue.isChildOverride) {
104
+ return; // already overwritten
105
+ }
106
+ // all functions need to report to me
107
+ kid.values[index] = function (...args) {
108
+ const ownerSupport = tagSupport.ownerTagSupport;
109
+ return runTagCallback(value, // callback
110
+ ownerSupport, this, // bindTo
111
+ args);
112
+ };
113
+ valuesValue.isChildOverride = true;
114
+ });
115
+ });
116
+ }
117
+ return tagSupport;
118
+ };
119
+ return wrapper;
120
+ }
121
+ //# sourceMappingURL=tag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../../ts/tag/tag.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { TagSupport } from './TagSupport.class';
2
+ import { TemplaterResult } from '../TemplaterResult.class';
3
+ import { TagComponent, TagMaker } from './tag';
4
+ export declare function tagElement(app: TagMaker, // (...args: unknown[]) => TemplaterResult,
5
+ element: HTMLElement | Element, props?: unknown): {
6
+ tagSupport: TagSupport;
7
+ tags: TagComponent[];
8
+ };
9
+ export declare function runWrapper(templater: TemplaterResult): TagSupport;
@@ -0,0 +1,60 @@
1
+ import { BaseTagSupport } from './TagSupport.class';
2
+ import { runAfterRender, runBeforeRender } from './tagRunner';
3
+ import { ValueSubject } from '../subject/ValueSubject';
4
+ const appElements = [];
5
+ export function tagElement(
6
+ // app: TagComponent, // (...args: unknown[]) => TemplaterResult,
7
+ app, // (...args: unknown[]) => TemplaterResult,
8
+ element, props) {
9
+ const appElmIndex = appElements.findIndex(appElm => appElm.element === element);
10
+ if (appElmIndex >= 0) {
11
+ appElements[appElmIndex].tagSupport.destroy();
12
+ appElements.splice(appElmIndex, 1);
13
+ // an element already had an app on it
14
+ console.warn('Found and destroyed app element already rendered to element', { element });
15
+ }
16
+ // Create the app which returns [props, runOneTimeFunction]
17
+ const wrapper = app(props);
18
+ // have a function setup and call the tagWrapper with (props, {update, async, on})
19
+ const tagSupport = runWrapper(wrapper);
20
+ // TODO: is the below needed?
21
+ tagSupport.appElement = element;
22
+ tagSupport.isApp = true;
23
+ tagSupport.global.isApp = true;
24
+ const templateElm = document.createElement('template');
25
+ templateElm.setAttribute('id', 'app-tag-' + appElements.length);
26
+ templateElm.setAttribute('app-tag-detail', appElements.length.toString());
27
+ const fragment = document.createDocumentFragment();
28
+ fragment.appendChild(templateElm);
29
+ element.destroy = async () => {
30
+ await tagSupport.destroy();
31
+ const insertBefore = tagSupport.global.insertBefore;
32
+ const parentNode = insertBefore.parentNode;
33
+ parentNode.removeChild(insertBefore);
34
+ };
35
+ tagSupport.buildBeforeElement(templateElm);
36
+ tagSupport.global.oldest = tagSupport;
37
+ tagSupport.global.newest = tagSupport;
38
+ element.setUse = app.original.setUse;
39
+ appElements.push({ element, tagSupport });
40
+ element.appendChild(fragment);
41
+ return {
42
+ tagSupport,
43
+ tags: app.original.tags,
44
+ };
45
+ }
46
+ export function runWrapper(templater) {
47
+ let newSupport = {};
48
+ const subject = new ValueSubject(newSupport);
49
+ newSupport = new BaseTagSupport(templater, subject);
50
+ // newSupport.ownerTagSupport = newSupport
51
+ subject.set(templater);
52
+ subject.tagSupport = newSupport;
53
+ runBeforeRender(newSupport, undefined);
54
+ // Call the apps function for our tag templater
55
+ const wrapper = templater.wrapper;
56
+ const tagSupport = wrapper(newSupport, subject);
57
+ runAfterRender(newSupport, tagSupport);
58
+ return tagSupport;
59
+ }
60
+ //# sourceMappingURL=tagElement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagElement.js","sourceRoot":"","sources":["../../ts/tag/tagElement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { BaseTagSupport, TagSupport } from './TagSupport.class';
2
+ export declare function runBeforeRender(tagSupport: BaseTagSupport, ownerSupport?: TagSupport): void;
3
+ export declare function runAfterRender(tagSupport: BaseTagSupport, ownerTagSupport?: TagSupport): void;
4
+ export declare function runBeforeRedraw(tagSupport: BaseTagSupport, ownerTagSupport: TagSupport): void;
5
+ export declare function runBeforeDestroy(tagSupport: BaseTagSupport, ownerTagSupport: TagSupport): void;
@@ -0,0 +1,28 @@
1
+ // TODO: This should be more like `new TaggedJs().use({})`
2
+ import { setUse } from '../state';
3
+ import { Subject } from '../subject';
4
+ import { getSupportInCycle } from './getSupportInCycle.function';
5
+ // Emits event at the end of a tag being rendered. Use tagClosed$.toPromise() to render a tag after a current tag is done rendering
6
+ setUse.memory.tagClosed$ = new Subject(undefined, subscription => {
7
+ if (!getSupportInCycle()) {
8
+ subscription.next(); // we are not currently processing so process now
9
+ }
10
+ });
11
+ // Life cycle 1
12
+ export function runBeforeRender(tagSupport, ownerSupport) {
13
+ setUse.tagUse.forEach(tagUse => tagUse.beforeRender(tagSupport, ownerSupport));
14
+ }
15
+ // Life cycle 2
16
+ export function runAfterRender(tagSupport, ownerTagSupport) {
17
+ setUse.tagUse.forEach(tagUse => tagUse.afterRender(tagSupport, ownerTagSupport));
18
+ setUse.memory.tagClosed$.next(ownerTagSupport);
19
+ }
20
+ // Life cycle 3
21
+ export function runBeforeRedraw(tagSupport, ownerTagSupport) {
22
+ setUse.tagUse.forEach(tagUse => tagUse.beforeRedraw(tagSupport, ownerTagSupport));
23
+ }
24
+ // Life cycle 4 - end of life
25
+ export function runBeforeDestroy(tagSupport, ownerTagSupport) {
26
+ setUse.tagUse.forEach(tagUse => tagUse.beforeDestroy(tagSupport, ownerTagSupport));
27
+ }
28
+ //# sourceMappingURL=tagRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagRunner.js","sourceRoot":"","sources":["../../ts/tag/tagRunner.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAG1D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,mIAAmI;AACnI,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,OAAO,CAAa,SAAS,EAAE,YAAY,CAAC,EAAE;IAC3E,IAAI,CAAC,iBAAiB,EAAE,EAAG,CAAC;QAC1B,YAAY,CAAC,IAAI,EAAE,CAAA,CAAC,iDAAiD;IACvE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAA0B,EAC1B,YAAyB;IAEzB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAA;AAChF,CAAC;AAED,eAAe;AACf,MAAM,UAAU,cAAc,CAC5B,UAA0B,EAC1B,eAA4B;IAE5B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;IAChF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AAChD,CAAC;AAED,eAAe;AACf,MAAM,UAAU,eAAe,CAC7B,UAA0B,EAC1B,eAA2B;IAE3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;AACnF,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAC9B,UAA0B,EAC1B,eAA2B;IAE3B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;AACpF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TagSupport } from '../TagSupport.class';
2
+ import { InterpolateSubject, TemplateValue } from './processSubjectValue.function';
3
+ export declare function processNewValue(hasValue: boolean, value: TemplateValue, ownerSupport: TagSupport): InterpolateSubject;