taggedjs 2.5.4 → 2.5.5

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 (237) hide show
  1. package/bundle.js +3353 -2960
  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/renderExistingTag.function.d.ts +1 -1
  69. package/js/renderExistingTag.function.js +3 -4
  70. package/js/renderExistingTag.function.js.map +1 -1
  71. package/js/renderSubjectComponent.function.d.ts +1 -1
  72. package/js/renderSubjectComponent.function.js +1 -1
  73. package/js/renderSubjectComponent.function.js.map +1 -1
  74. package/js/renderTagOnly.function.d.ts +4 -0
  75. package/js/renderTagOnly.function.js +39 -0
  76. package/js/renderTagOnly.function.js.map +1 -0
  77. package/js/renderTagSupport.function.d.ts +1 -1
  78. package/js/renderTagSupport.function.js +1 -1
  79. package/js/renderTagSupport.function.js.map +1 -1
  80. package/js/renderWithSupport.function.d.ts +2 -3
  81. package/js/renderWithSupport.function.js +4 -36
  82. package/js/renderWithSupport.function.js.map +1 -1
  83. package/js/state/callbackMaker.function.d.ts +3 -2
  84. package/js/state/callbackMaker.function.js +37 -18
  85. package/js/state/callbackMaker.function.js.map +1 -1
  86. package/js/state/children.d.ts +1 -0
  87. package/js/state/children.js +14 -0
  88. package/js/state/children.js.map +1 -0
  89. package/js/state/index.d.ts +1 -1
  90. package/js/state/index.js +1 -1
  91. package/js/state/index.js.map +1 -1
  92. package/js/state/provider.utils.d.ts +1 -1
  93. package/js/state/provider.utils.js +7 -7
  94. package/js/state/provider.utils.js.map +1 -1
  95. package/js/state/providers.d.ts +4 -2
  96. package/js/state/providers.js +54 -47
  97. package/js/state/providers.js.map +1 -1
  98. package/js/state/setUse.function.d.ts +9 -8
  99. package/js/state/setUse.function.js.map +1 -1
  100. package/js/state/state.function.js +17 -0
  101. package/js/state/state.function.js.map +1 -1
  102. package/js/state/state.utils.d.ts +1 -1
  103. package/js/state/state.utils.js +38 -24
  104. package/js/state/state.utils.js.map +1 -1
  105. package/js/state/syncStates.function.d.ts +2 -0
  106. package/js/state/syncStates.function.js +11 -0
  107. package/js/state/syncStates.function.js.map +1 -0
  108. package/js/state/watch.function.d.ts +20 -3
  109. package/js/state/watch.function.js +106 -10
  110. package/js/state/watch.function.js.map +1 -1
  111. package/js/subject/Subject.class.d.ts +8 -1
  112. package/js/subject/Subject.class.js +29 -53
  113. package/js/subject/Subject.class.js.map +1 -1
  114. package/js/subject/Subject.utils.d.ts +6 -3
  115. package/js/subject/Subject.utils.js +51 -3
  116. package/js/subject/Subject.utils.js.map +1 -1
  117. package/js/subject/ValueSubject.d.ts +2 -2
  118. package/js/subject/combineLatest.function.js +10 -2
  119. package/js/subject/combineLatest.function.js.map +1 -1
  120. package/js/subject/subject.cancel.d.ts +2 -0
  121. package/js/subject/subject.cancel.js +3 -0
  122. package/js/subject/subject.cancel.js.map +1 -0
  123. package/js/subject/will.functions.d.ts +1 -1
  124. package/js/subject.types.d.ts +2 -2
  125. package/js/tag/Tag.class.d.ts +43 -0
  126. package/js/tag/Tag.class.js +27 -0
  127. package/js/tag/Tag.class.js.map +1 -0
  128. package/js/tag/TagSupport.class.d.ts +58 -0
  129. package/js/tag/TagSupport.class.js +321 -0
  130. package/js/tag/TagSupport.class.js.map +1 -0
  131. package/js/tag/checkDestroyPrevious.function.d.ts +8 -0
  132. package/js/tag/checkDestroyPrevious.function.js +83 -0
  133. package/js/tag/checkDestroyPrevious.function.js.map +1 -0
  134. package/js/tag/cloneValueArray.function.d.ts +2 -0
  135. package/js/tag/cloneValueArray.function.js +19 -0
  136. package/js/tag/cloneValueArray.function.js.map +1 -0
  137. package/js/tag/destroy.support.d.ts +6 -0
  138. package/js/tag/destroy.support.js +10 -0
  139. package/js/tag/destroy.support.js.map +1 -0
  140. package/js/tag/destroyTag.function.d.ts +3 -0
  141. package/js/tag/destroyTag.function.js +12 -0
  142. package/js/tag/destroyTag.function.js.map +1 -0
  143. package/js/tag/elementDestroyCheck.function.d.ts +3 -0
  144. package/js/tag/elementDestroyCheck.function.js +17 -0
  145. package/js/tag/elementDestroyCheck.function.js.map +1 -0
  146. package/js/tag/getSupportInCycle.function.d.ts +1 -0
  147. package/js/tag/getSupportInCycle.function.js +5 -0
  148. package/js/tag/getSupportInCycle.function.js.map +1 -0
  149. package/js/tag/hasPropChanges.function.d.ts +9 -0
  150. package/js/tag/hasPropChanges.function.js +80 -0
  151. package/js/tag/hasPropChanges.function.js.map +1 -0
  152. package/js/tag/hasTagSupportChanged.function.d.ts +4 -0
  153. package/js/tag/hasTagSupportChanged.function.js +23 -0
  154. package/js/tag/hasTagSupportChanged.function.js.map +1 -0
  155. package/js/tag/html.d.ts +4 -0
  156. package/js/tag/html.js +5 -0
  157. package/js/tag/html.js.map +1 -0
  158. package/js/tag/isLikeTags.function.d.ts +5 -0
  159. package/js/tag/isLikeTags.function.js +42 -0
  160. package/js/tag/isLikeTags.function.js.map +1 -0
  161. package/js/tag/render/renderExistingTag.function.d.ts +7 -0
  162. package/js/tag/render/renderExistingTag.function.js +45 -0
  163. package/js/tag/render/renderExistingTag.function.js.map +1 -0
  164. package/js/tag/render/renderSubjectComponent.function.d.ts +3 -0
  165. package/js/tag/render/renderSubjectComponent.function.js +14 -0
  166. package/js/tag/render/renderSubjectComponent.function.js.map +1 -0
  167. package/js/tag/render/renderTagOnly.function.d.ts +3 -0
  168. package/js/tag/render/renderTagOnly.function.js +41 -0
  169. package/js/tag/render/renderTagOnly.function.js.map +1 -0
  170. package/js/tag/render/renderTagSupport.function.d.ts +4 -0
  171. package/js/tag/render/renderTagSupport.function.js +37 -0
  172. package/js/tag/render/renderTagSupport.function.js.map +1 -0
  173. package/js/tag/render/renderWithSupport.function.d.ts +5 -0
  174. package/js/tag/render/renderWithSupport.function.js +31 -0
  175. package/js/tag/render/renderWithSupport.function.js.map +1 -0
  176. package/js/tag/setTagPlaceholder.function.d.ts +4 -0
  177. package/js/tag/setTagPlaceholder.function.js +12 -0
  178. package/js/tag/setTagPlaceholder.function.js.map +1 -0
  179. package/js/tag/tag.d.ts +26 -0
  180. package/js/tag/tag.js +121 -0
  181. package/js/tag/tag.js.map +1 -0
  182. package/js/tag/tagElement.d.ts +9 -0
  183. package/js/tag/tagElement.js +58 -0
  184. package/js/tag/tagElement.js.map +1 -0
  185. package/js/tag/tagRunner.d.ts +5 -0
  186. package/js/tag/tagRunner.js +28 -0
  187. package/js/tag/tagRunner.js.map +1 -0
  188. package/js/tag/update/processNewValue.function.d.ts +3 -0
  189. package/js/tag/update/processNewValue.function.js +42 -0
  190. package/js/tag/update/processNewValue.function.js.map +1 -0
  191. package/js/tag/update/processRegularValue.function.d.ts +5 -0
  192. package/js/tag/update/processRegularValue.function.js +15 -0
  193. package/js/tag/update/processRegularValue.function.js.map +1 -0
  194. package/js/tag/update/processSubjectComponent.function.d.ts +9 -0
  195. package/js/tag/update/processSubjectComponent.function.js +35 -0
  196. package/js/tag/update/processSubjectComponent.function.js.map +1 -0
  197. package/js/tag/update/processSubjectValue.function.d.ts +27 -0
  198. package/js/tag/update/processSubjectValue.function.js +55 -0
  199. package/js/tag/update/processSubjectValue.function.js.map +1 -0
  200. package/js/tag/update/processTag.function.d.ts +11 -0
  201. package/js/tag/update/processTag.function.js +46 -0
  202. package/js/tag/update/processTag.function.js.map +1 -0
  203. package/js/tag/update/processTagArray.d.ts +22 -0
  204. package/js/tag/update/processTagArray.js +120 -0
  205. package/js/tag/update/processTagArray.js.map +1 -0
  206. package/js/tag/update/processTagResult.function.d.ts +11 -0
  207. package/js/tag/update/processTagResult.function.js +30 -0
  208. package/js/tag/update/processTagResult.function.js.map +1 -0
  209. package/js/tag/update/updateContextItem.function.d.ts +3 -0
  210. package/js/tag/update/updateContextItem.function.js +44 -0
  211. package/js/tag/update/updateContextItem.function.js.map +1 -0
  212. package/js/tag/update/updateExistingTagComponent.function.d.ts +5 -0
  213. package/js/tag/update/updateExistingTagComponent.function.js +116 -0
  214. package/js/tag/update/updateExistingTagComponent.function.js.map +1 -0
  215. package/js/tag/update/updateExistingValue.function.d.ts +4 -0
  216. package/js/tag/update/updateExistingValue.function.js +135 -0
  217. package/js/tag/update/updateExistingValue.function.js.map +1 -0
  218. package/js/tag/updates/processNewValue.function.d.ts +3 -0
  219. package/js/tag/updates/processNewValue.function.js +43 -0
  220. package/js/tag/updates/processNewValue.function.js.map +1 -0
  221. package/js/tag.js +1 -1
  222. package/js/tag.js.map +1 -1
  223. package/js/tagElement.d.ts +1 -1
  224. package/js/tagElement.js +1 -1
  225. package/js/tagElement.js.map +1 -1
  226. package/js/tagRunner.d.ts +1 -1
  227. package/js/updateBeforeTemplate.function.d.ts +1 -1
  228. package/js/updateContextItem.function.d.ts +1 -1
  229. package/js/updateContextItem.function.js +1 -1
  230. package/js/updateContextItem.function.js.map +1 -1
  231. package/js/updateExistingTagComponent.function.d.ts +2 -2
  232. package/js/updateExistingTagComponent.function.js +3 -3
  233. package/js/updateExistingTagComponent.function.js.map +1 -1
  234. package/js/updateExistingValue.function.d.ts +3 -3
  235. package/js/updateExistingValue.function.js +6 -6
  236. package/js/updateExistingValue.function.js.map +1 -1
  237. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/state/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../ts/state/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -1,2 +1,2 @@
1
- import { TagSupport } from '../TagSupport.class';
1
+ import { TagSupport } from '../tag/TagSupport.class';
2
2
  export declare function providersChangeCheck(tagSupport: TagSupport): void;
@@ -1,17 +1,17 @@
1
1
  import { deepClone, deepEqual } from '../deepFunctions';
2
- import { renderTagSupport } from '../renderTagSupport.function';
2
+ import { renderTagSupport } from '../tag/render/renderTagSupport.function';
3
3
  export function providersChangeCheck(tagSupport) {
4
4
  const global = tagSupport.global;
5
5
  const providersWithChanges = global.providers.filter(provider => !deepEqual(provider.instance, provider.clone));
6
6
  // reset clones
7
7
  providersWithChanges.forEach(provider => {
8
- const appElement = tagSupport.getAppElement();
9
- handleProviderChanges(appElement, provider);
8
+ const appSupport = tagSupport.getAppTagSupport();
9
+ handleProviderChanges(appSupport, provider);
10
10
  provider.clone = deepClone(provider.instance);
11
11
  });
12
12
  }
13
- function handleProviderChanges(appElement, provider) {
14
- const tagsWithProvider = getTagsWithProvider(appElement, provider);
13
+ function handleProviderChanges(appSupport, provider) {
14
+ const tagsWithProvider = getTagsWithProvider(appSupport, provider);
15
15
  tagsWithProvider.forEach(({ tagSupport, renderCount, provider }) => {
16
16
  if (tagSupport.global.deleted) {
17
17
  return; // i was deleted after another tag processed
@@ -19,14 +19,14 @@ function handleProviderChanges(appElement, provider) {
19
19
  const notRendered = renderCount === tagSupport.global.renderCount;
20
20
  if (notRendered) {
21
21
  provider.clone = deepClone(provider.instance);
22
- renderTagSupport(tagSupport, false);
22
+ return renderTagSupport(tagSupport, false);
23
23
  }
24
24
  });
25
25
  }
26
26
  function getTagsWithProvider(tagSupport, provider, memory = []) {
27
27
  const global = tagSupport.global;
28
28
  const compare = global.providers;
29
- const hasProvider = compare.find(xProvider => xProvider.constructMethod === provider.constructMethod);
29
+ const hasProvider = compare.find(xProvider => xProvider.constructMethod.compareTo === provider.constructMethod.compareTo);
30
30
  if (hasProvider) {
31
31
  memory.push({
32
32
  tagSupport,
@@ -1 +1 @@
1
- {"version":3,"file":"provider.utils.js","sourceRoot":"","sources":["../../ts/state/provider.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG/D,MAAM,UAAU,oBAAoB,CAClC,UAAsB;IAEtB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAC9D,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAC9C,CAAA;IAED,eAAe;IACf,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACtC,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAA;QAE7C,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE3C,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAsB,EACtB,QAAkB;IAElB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAElE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAC,EAAE,EAAE;QAC/D,IAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAM,CAAC,4CAA4C;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,KAAK,UAAU,CAAC,MAAM,CAAC,WAAW,CAAA;QACjE,IAAG,WAAW,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7C,gBAAgB,CACd,UAAU,EACV,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAsB,EACtB,QAAkB,EAClB,SAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAA;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,KAAK,QAAQ,CAAC,eAAe,CACpE,CAAA;IAED,IAAG,WAAW,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,UAAU;YACV,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CACvD,KAAK,EACL,QAAQ,EACR,MAAM,CACP,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"provider.utils.js","sourceRoot":"","sources":["../../ts/state/provider.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAA;AAG1E,MAAM,UAAU,oBAAoB,CAClC,UAAsB;IAEtB,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAC9D,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAC9C,CAAA;IAED,eAAe;IACf,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACtC,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAA;QAEhD,qBAAqB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAE3C,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAsB,EACtB,QAAkB;IAElB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAElE,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAC,EAAE,EAAE;QAC/D,IAAG,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAM,CAAC,4CAA4C;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,KAAK,UAAU,CAAC,MAAM,CAAC,WAAW,CAAA;QACjE,IAAG,WAAW,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7C,OAAO,gBAAgB,CACrB,UAAU,EACV,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAsB,EACtB,QAAkB,EAClB,SAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAA;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,KAAK,QAAQ,CAAC,eAAe,CAAC,SAAS,CACxF,CAAA;IAED,IAAG,WAAW,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC;YACV,UAAU;YACV,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CACvD,KAAK,EACL,QAAQ,EACR,MAAM,CACP,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,8 +1,9 @@
1
- import { TagSupport } from '../TagSupport.class';
1
+ import { TagSupport } from '../tag/TagSupport.class';
2
2
  export type Provider = {
3
3
  constructMethod: any;
4
4
  instance: any;
5
5
  clone: any;
6
+ stateDiff: number;
6
7
  };
7
8
  type ProviderConstructor<T> = (new (...args: any[]) => T) | (() => T);
8
9
  export type ProviderConfig = {
@@ -11,8 +12,9 @@ export type ProviderConfig = {
11
12
  };
12
13
  type functionProvider<T> = () => T;
13
14
  type classProvider<T> = new (...args: any[]) => T;
15
+ type Construct<T> = classProvider<T> | functionProvider<T>;
14
16
  export declare const providers: {
15
- create: <T>(constructMethod: classProvider<T> | functionProvider<T>) => T;
17
+ create: <T>(constructMethod: Construct<T>) => T;
16
18
  /**
17
19
  * @template T
18
20
  * @param {(new (...args: any[]) => T) | () => T} constructor
@@ -5,35 +5,40 @@ setUse.memory.providerConfig = {
5
5
  providers: [],
6
6
  ownerSupport: undefined,
7
7
  };
8
- function get(constructMethod) {
9
- const config = setUse.memory.providerConfig;
10
- const providers = config.providers;
11
- return providers.find(provider => provider.constructMethod === constructMethod);
12
- }
13
8
  export const providers = {
14
9
  create: (constructMethod) => {
15
- const existing = get(constructMethod);
16
- if (existing) {
17
- existing.clone = deepClone(existing.instance);
18
- // fake calling state the same number of previous times
19
- for (let x = 0; x < existing.stateDiff; ++x) {
20
- state(existing.stateDiff);
10
+ const cm = constructMethod;
11
+ const compareTo = cm.compareTo = cm.compareTo || cm.toString();
12
+ const stateDiffMemory = state(() => ({ stateDiff: 0, provider: undefined }));
13
+ if (stateDiffMemory.stateDiff) {
14
+ for (let x = stateDiffMemory.stateDiff; x > 0; --x) {
15
+ state(undefined);
21
16
  }
22
- return state(existing.stateDiff);
17
+ const result = state(undefined);
18
+ stateDiffMemory.provider.constructMethod.compareTo = compareTo;
19
+ return result;
23
20
  }
24
- const oldStateCount = setUse.memory.stateConfig.array.length;
25
- // Providers with provider requirements just need to use providers.create() and providers.inject()
26
- const instance = 'prototype' in constructMethod ? new constructMethod() : constructMethod();
27
- const stateDiff = setUse.memory.stateConfig.array.length - oldStateCount;
28
- const config = setUse.memory.providerConfig;
29
- config.providers.push({
30
- constructMethod,
31
- instance,
32
- clone: deepClone(instance),
33
- stateDiff,
21
+ const result = state(() => {
22
+ const memory = setUse.memory;
23
+ const stateConfig = memory.stateConfig;
24
+ const oldStateCount = stateConfig.array.length;
25
+ // Providers with provider requirements just need to use providers.create() and providers.inject()
26
+ const instance = 'prototype' in constructMethod ? new constructMethod() : constructMethod();
27
+ const stateDiff = stateConfig.array.length - oldStateCount;
28
+ const config = memory.providerConfig;
29
+ const provider = {
30
+ constructMethod,
31
+ instance,
32
+ clone: deepClone(instance),
33
+ stateDiff,
34
+ };
35
+ stateDiffMemory.provider = provider;
36
+ config.providers.push(provider);
37
+ stateDiffMemory.stateDiff = stateDiff;
38
+ return instance;
34
39
  });
35
- state(() => instance); // tie provider to a state for rendering change checking
36
- return instance;
40
+ stateDiffMemory.provider.constructMethod.compareTo = compareTo;
41
+ return result;
37
42
  },
38
43
  /**
39
44
  * @template T
@@ -41,31 +46,33 @@ export const providers = {
41
46
  * @returns {T}
42
47
  */
43
48
  inject: (constructor) => {
44
- const oldValue = get(constructor);
45
- if (oldValue) {
46
- return oldValue.instance;
47
- }
48
- const config = setUse.memory.providerConfig;
49
- let owner = {
50
- ownerTagSupport: config.ownerSupport
51
- };
52
- while (owner.ownerTagSupport) {
53
- const ownerProviders = owner.ownerTagSupport.global.providers;
54
- const provider = ownerProviders.find(provider => {
55
- if (provider.constructMethod === constructor) {
56
- return true;
49
+ // find once, return same every time after
50
+ return state(() => {
51
+ const config = setUse.memory.providerConfig;
52
+ const cm = constructor;
53
+ const compareTo = cm.compareTo = cm.compareTo || constructor.toString();
54
+ let owner = {
55
+ ownerTagSupport: config.ownerSupport
56
+ };
57
+ while (owner.ownerTagSupport) {
58
+ const ownerProviders = owner.ownerTagSupport.global.providers;
59
+ const provider = ownerProviders.find(provider => {
60
+ const constructorMatch = provider.constructMethod.compareTo === compareTo;
61
+ if (constructorMatch) {
62
+ return true;
63
+ }
64
+ });
65
+ if (provider) {
66
+ provider.clone = deepClone(provider.instance); // keep a copy of the latest before any change occur
67
+ config.providers.push(provider);
68
+ return provider.instance;
57
69
  }
58
- });
59
- if (provider) {
60
- provider.clone = deepClone(provider.instance); // keep a copy of the latest before any change occur
61
- config.providers.push(provider);
62
- return provider.instance;
70
+ owner = owner.ownerTagSupport; // cause reloop checking next parent
63
71
  }
64
- owner = owner.ownerTagSupport; // cause reloop
65
- }
66
- const msg = `Could not inject provider: ${constructor.name} ${constructor}`;
67
- console.warn(`${msg}. Available providers`, config.providers);
68
- throw new Error(msg);
72
+ const msg = `Could not inject provider: ${constructor.name} ${constructor}`;
73
+ console.warn(`${msg}. Available providers`, config.providers);
74
+ throw new Error(msg);
75
+ });
69
76
  }
70
77
  };
71
78
  setUse({
@@ -1 +1 @@
1
- {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../ts/state/providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../ts/state/providers.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,26 @@
1
- import { BaseTagSupport, TagSupport } from '../TagSupport.class';
1
+ import { BaseTagSupport, TagSupport } from '../tag/TagSupport.class';
2
2
  import { ProviderConfig } from './providers';
3
3
  import { Config } from './state.utils';
4
4
  interface TagUse {
5
5
  beforeRender: (tagSupport: BaseTagSupport, ownerTag?: TagSupport) => void;
6
6
  beforeRedraw: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
7
- afterRender: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
7
+ afterRender: (tagSupport: BaseTagSupport, ownerTagSupport?: TagSupport) => void;
8
8
  beforeDestroy: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
9
9
  }
10
10
  export type UseOptions = {
11
11
  beforeRender?: (tagSupport: BaseTagSupport, ownerTag?: TagSupport) => void;
12
12
  beforeRedraw?: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
13
- afterRender?: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
13
+ afterRender?: (tagSupport: BaseTagSupport, ownerTagSupport?: TagSupport) => void;
14
14
  beforeDestroy?: (tagSupport: BaseTagSupport, tag: TagSupport) => void;
15
15
  };
16
16
  export declare function setUse(use: UseOptions): void;
17
17
  export declare namespace setUse {
18
18
  var tagUse: TagUse[];
19
- var memory: Record<string, any> & {
20
- stateConfig: Config;
21
- providerConfig: ProviderConfig;
22
- currentSupport: TagSupport;
23
- };
19
+ var memory: UseMemory;
24
20
  }
21
+ type UseMemory = (Record<string, any> & {
22
+ stateConfig: Config;
23
+ providerConfig: ProviderConfig;
24
+ currentSupport: TagSupport;
25
+ });
25
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"setUse.function.js","sourceRoot":"","sources":["../../ts/state/setUse.function.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAa,EAAE,CAAA;AAyB3B,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,EAId,CAAA"}
1
+ {"version":3,"file":"setUse.function.js","sourceRoot":"","sources":["../../ts/state/setUse.function.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAa,EAAE,CAAA;AAyB3B,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,EAAe,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { setUse } from './setUse.function';
2
2
  import { getStateValue } from './state.utils';
3
+ import { syncStates } from './syncStates.function';
3
4
  /** Used for variables that need to remain the same variable during render passes */
4
5
  export function state(defaultValue) {
5
6
  const config = setUse.memory.stateConfig;
@@ -21,6 +22,22 @@ export function state(defaultValue) {
21
22
  // State first time run
22
23
  const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
23
24
  let initValue = defaultFn();
25
+ // the state is actually intended to be a function
26
+ if (initValue instanceof Function) {
27
+ const oldState = config.array;
28
+ const tagSupport = config.tagSupport;
29
+ const original = initValue;
30
+ initValue = ((...args) => {
31
+ const global = tagSupport.global;
32
+ const newest = global.newest;
33
+ const newState = newest.memory.state;
34
+ syncStates(newState, oldState);
35
+ const result = original(...args);
36
+ syncStates(oldState, newState);
37
+ return result;
38
+ });
39
+ initValue.original = original;
40
+ }
24
41
  getSetMethod = ((x) => [initValue, initValue = x]);
25
42
  const push = {
26
43
  get: () => getStateValue(push),
@@ -1 +1 @@
1
- {"version":3,"file":"state.function.js","sourceRoot":"","sources":["../../ts/state/state.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAA+C,aAAa,EAAE,MAAM,eAAe,CAAA;AAE1F,oFAAoF;AACpF,MAAM,UAAU,KAAK,CACnB,YAA2B;IAE3B,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,IAAI,YAA4B,CAAA;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAgB,CAAA;IAEvC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,IAAI,GAAuB;YAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;YACnC,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAA;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,YAAY,YAAY,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAA;IACtF,IAAI,SAAS,GAAG,SAAS,EAAE,CAAA;IAE3B,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;IACrD,MAAM,IAAI,GAAuB;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;QACnC,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,SAAS;KACxB,CAAA;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"state.function.js","sourceRoot":"","sources":["../../ts/state/state.function.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAA+C,aAAa,EAAE,MAAM,eAAe,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,oFAAoF;AACpF,MAAM,UAAU,KAAK,CACnB,YAA2B;IAE3B,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,IAAI,YAA4B,CAAA;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAgB,CAAA;IAEvC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,IAAI,GAAuB;YAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;YACnC,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAA;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,YAAY,YAAY,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,CAAA;IACtF,IAAI,SAAS,GAAG,SAAS,EAAE,CAAA;IAE3B,kDAAkD;IAClD,IAAG,SAAS,YAAY,QAAQ,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAA;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAwB,CAAA;QAClD,MAAM,QAAQ,GAAG,SAAS,CAAA;QAE1B,SAAS,GAAG,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAoB,CAAA;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAA;YAEpC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAA;YAEhC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAE9B,OAAO,MAAM,CAAA;QACf,CAAC,CAAQ,CAER;QAAC,SAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzC,CAAC;IAED,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAA;IACrD,MAAM,IAAI,GAAuB;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;QACnC,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,SAAS;QACpB,YAAY,EAAE,SAAS;KACxB,CAAA;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { BaseTagSupport } from '../TagSupport.class';
1
+ import { BaseTagSupport } from '../tag/TagSupport.class';
2
2
  export type StateConfig<T> = (x: T) => [T, T];
3
3
  export type StateConfigItem<T> = {
4
4
  get: () => T;
@@ -15,21 +15,24 @@ setUse({
15
15
  const rearray = config.rearray;
16
16
  if (rearray.length) {
17
17
  if (rearray.length !== config.array.length) {
18
- const message = `States lengths has changed ${rearray.length} !== ${config.array.length}. Typically occurs when a function is intended to be wrapped with a tag() call`;
18
+ const message = `States lengths have changed ${rearray.length} !== ${config.array.length}. State tracking requires the same amount of function calls every render. Typically this errors is thrown when a state like function call occurs only for certain conditions or when a function is intended to be wrapped with a tag() call`;
19
19
  const wrapper = tagSupport.templater?.wrapper;
20
20
  const details = {
21
21
  oldStates: config.array,
22
22
  newStates: config.rearray,
23
- tagFunction: wrapper.original,
23
+ tagFunction: wrapper.parentWrap.original,
24
24
  };
25
25
  const error = new StateMismatchError(message, details);
26
26
  console.warn(message, details);
27
27
  throw error;
28
28
  }
29
29
  }
30
+ const cTagConfig = config.tagSupport;
30
31
  delete config.rearray; // clean up any previous runs
31
32
  delete config.tagSupport;
32
- memory.state = config.array; // [...config.array]
33
+ memory.state.length = 0;
34
+ memory.state.push(...config.array);
35
+ // memory.state = config.array // [...config.array]
33
36
  memory.state.forEach(item => item.lastValue = getStateValue(item)); // set last values
34
37
  config.array = [];
35
38
  }
@@ -60,9 +63,11 @@ function initState(tagSupport) {
60
63
  const state = memory.state;
61
64
  const config = setUse.memory.stateConfig;
62
65
  // TODO: This guard may no longer be needed
66
+ /*
63
67
  if (config.rearray) {
64
- checkStateMismatch(tagSupport, config, state);
68
+ checkStateMismatch(tagSupport, config, state)
65
69
  }
70
+ */
66
71
  config.rearray = [];
67
72
  if (state?.length) {
68
73
  state.forEach(state => getStateValue(state));
@@ -70,25 +75,34 @@ function initState(tagSupport) {
70
75
  }
71
76
  config.tagSupport = tagSupport;
72
77
  }
73
- function checkStateMismatch(tagSupport, config, state) {
74
- const wrapper = tagSupport.templater?.wrapper;
75
- const wasWrapper = config.tagSupport?.templater.wrapper;
76
- const message = 'last state not cleared. Possibly in the middle of rendering one component and another is trying to render';
77
- if (!wasWrapper) {
78
- return; // its not a component or was not a component before
79
- }
80
- console.error(message, {
81
- config,
82
- tagFunction: wrapper.original,
83
- wasInMiddleOf: wasWrapper.original,
84
- state,
85
- expectedClearArray: config.rearray,
86
- });
87
- throw new StateMismatchError(message, {
88
- config,
89
- tagFunction: wrapper.original,
90
- state,
91
- expectedClearArray: config.rearray,
92
- });
78
+ /*
79
+ function checkStateMismatch(
80
+ tagSupport: BaseTagSupport,
81
+ config: Config,
82
+ state: State,
83
+ ) {
84
+ const wrapper = tagSupport.templater?.wrapper as Wrapper
85
+ const wasWrapper = config.tagSupport?.templater.wrapper as Wrapper
86
+ const message = 'last state not cleared. Possibly in the middle of rendering one component and another is trying to render'
87
+
88
+ if(!wasWrapper) {
89
+ return // its not a component or was not a component before
90
+ }
91
+
92
+ console.error(message, {
93
+ config,
94
+ tagFunction: wrapper.parentWrap.original,
95
+ wasInMiddleOf: wasWrapper.parentWrap.original,
96
+ state,
97
+ expectedClearArray: config.rearray,
98
+ })
99
+
100
+ throw new StateMismatchError(message, {
101
+ config,
102
+ tagFunction: wrapper.parentWrap.original,
103
+ state,
104
+ expectedClearArray: config.rearray,
105
+ })
93
106
  }
107
+ */
94
108
  //# sourceMappingURL=state.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.utils.js","sourceRoot":"","sources":["../../ts/state/state.utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.utils.js","sourceRoot":"","sources":["../../ts/state/state.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { State } from "./state.utils";
2
+ export declare function syncStates(stateFrom: State, stateTo: State): void;
@@ -0,0 +1,11 @@
1
+ export function syncStates(stateFrom, stateTo) {
2
+ stateFrom.forEach((state, index) => {
3
+ const fromValue = state.get();
4
+ const callback = stateTo[index].callback;
5
+ if (callback) {
6
+ callback(fromValue); // set the value
7
+ }
8
+ stateTo[index].lastValue = fromValue; // record the value
9
+ });
10
+ }
11
+ //# sourceMappingURL=syncStates.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncStates.function.js","sourceRoot":"","sources":["../../ts/state/syncStates.function.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CACxB,SAAgB,EAChB,OAAc;IAEd,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAA;QAExC,IAAG,QAAQ,EAAE,CAAC;YACZ,QAAQ,CAAE,SAAS,CAAE,CAAA,CAAC,gBAAgB;QACxC,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA,CAAC,mBAAmB;IAC1D,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,8 +1,25 @@
1
- export type WatchCallback = (currentValues: any[], previousValues: any[] | undefined) => unknown | ((currentValues: any[]) => unknown) | (() => unknown);
1
+ import { Subject } from '../subject';
2
+ export type WatchCallback<T> = (currentValues: any[], previousValues: any[] | undefined) => T | ((currentValues: any[]) => T) | (() => T);
3
+ type WatchOperators<T> = {
4
+ setup: WatchSetup<T>;
5
+ /** When an item in watch array changes, callback function will be triggered. Does not trigger on initial watch setup. */
6
+ noInit: (<T>(currentValues: any[], callback: WatchCallback<T>) => T | undefined) & MasterWatch<T>;
7
+ /** When an item in watch array changes, callback function will be triggered */
8
+ asSubject: (<T>(currentValues: any[], callback: WatchCallback<T>) => Subject<T>) & MasterWatch<T>;
9
+ /** When an item in watch array changes and all values are truthy then callback function will be triggered */
10
+ truthy: (<T>(currentValues: any[], callback: WatchCallback<T>) => T | undefined) & MasterWatch<T>;
11
+ };
12
+ type MasterWatch<T> = ((currentValues: any[], callback: WatchCallback<T>) => T) & WatchOperators<T>;
2
13
  /**
3
- * When an item in watch array changes, callback function will be triggered. Does not trigger on initial watch setup.
14
+ * When an item in watch array changes, callback function will be triggered. Triggers on initial watch setup. TIP: try watch.noInit()
4
15
  * @param currentValues T[]
5
16
  * @param callback WatchCallback
6
17
  * @returns T[]
7
18
  */
8
- export declare function watch<T>(currentValues: T[], callback: WatchCallback): T[];
19
+ export declare const watch: MasterWatch<any>;
20
+ type WatchSetup<R> = {
21
+ init?: (currentValues: any[], previousValues: any[]) => R;
22
+ final?: (x: any) => any;
23
+ before?: (currentValues: any[]) => boolean;
24
+ };
25
+ export {};
@@ -1,25 +1,121 @@
1
- import { letState } from './letState.function';
1
+ import { ValueSubject } from '../subject';
2
+ import { getSupportInCycle } from '../tag/getSupportInCycle.function';
3
+ import { setUse } from './setUse.function';
4
+ import { state } from './state.function';
5
+ import { syncStates } from './syncStates.function';
2
6
  /**
3
- * When an item in watch array changes, callback function will be triggered. Does not trigger on initial watch setup.
7
+ * When an item in watch array changes, callback function will be triggered. Triggers on initial watch setup. TIP: try watch.noInit()
4
8
  * @param currentValues T[]
5
9
  * @param callback WatchCallback
6
10
  * @returns T[]
7
11
  */
8
- export function watch(currentValues, callback) {
9
- let previousValues = letState(undefined)(x => [previousValues, previousValues = x]);
12
+ export const watch = ((currentValues, callback) => {
13
+ return setupWatch(currentValues, callback);
14
+ });
15
+ const defaultFinally = (x) => x;
16
+ function newWatch(setup) {
17
+ const method = (currentValues, callback) => {
18
+ return setupWatch(currentValues, callback, setup);
19
+ };
20
+ method.setup = setup;
21
+ defineOnMethod(() => method, method);
22
+ return method;
23
+ }
24
+ /**
25
+ * puts above functionality together
26
+ * @param currentValues values being watched
27
+ * @param callback (currentValue, previousValues) => resolveToValue
28
+ * @param param2
29
+ * @returns
30
+ */
31
+ const setupWatch = (currentValues, callback, { init, before = () => true, final = defaultFinally, } = {}) => {
32
+ let previous = state({
33
+ pastResult: undefined,
34
+ values: undefined,
35
+ });
36
+ const previousValues = previous.values;
10
37
  // First time running watch?
11
38
  if (previousValues === undefined) {
12
- // callback(currentValues, previousValues) // do not call during init
13
- previousValues = currentValues;
14
- return currentValues;
39
+ if (!before(currentValues)) {
40
+ previous.values = currentValues;
41
+ return previous.pastResult; // do not continue
42
+ }
43
+ const castedInit = init || callback;
44
+ const result = castedInit(currentValues, previousValues);
45
+ previous.pastResult = final(result);
46
+ previous.values = currentValues;
47
+ return previous.pastResult;
15
48
  }
16
49
  const allExact = currentValues.every((item, index) => item === previousValues[index]);
17
50
  if (allExact) {
18
- return currentValues;
51
+ return previous.pastResult;
52
+ }
53
+ if (!before(currentValues)) {
54
+ previous.values = currentValues;
55
+ return previous.pastResult; // do not continue
19
56
  }
20
- callback(currentValues, previousValues);
57
+ const result = callback(currentValues, previousValues);
58
+ previous.pastResult = final(result);
21
59
  previousValues.length = 0;
22
60
  previousValues.push(...currentValues);
23
- return currentValues;
61
+ return previous.pastResult;
62
+ };
63
+ function defineOnMethod(getWatch, attachTo) {
64
+ Object.defineProperty(attachTo, 'noInit', {
65
+ get() {
66
+ const watch = getWatch();
67
+ watch.setup.init = () => undefined;
68
+ return watch;
69
+ },
70
+ });
71
+ Object.defineProperty(attachTo, 'asSubject', {
72
+ get() {
73
+ const oldWatch = getWatch();
74
+ const method = (currentValues, callback) => {
75
+ const originalState = state(() => getSupportInCycle().memory.state);
76
+ const subject = state(() => new ValueSubject(undefined));
77
+ setupWatch(currentValues, (currentValues, previousValues) => {
78
+ const setTo = callback(currentValues, previousValues);
79
+ if (originalState.length) {
80
+ const newestState = setUse.memory.stateConfig.array;
81
+ syncStates(newestState, originalState);
82
+ }
83
+ subject.set(setTo);
84
+ }, oldWatch.setup);
85
+ return subject;
86
+ };
87
+ method.setup = oldWatch.setup;
88
+ defineOnMethod(() => method, method);
89
+ return method;
90
+ /*
91
+ method.setup = setup
92
+
93
+ defineOnMethod(() => method as any, method)
94
+
95
+ return method as any
96
+
97
+
98
+ const oldWatch = getWatch()
99
+ const watch = newWatch( oldWatch.setup )
100
+ // const watch = getWatch()
101
+
102
+ const subject = state(() => new Subject())
103
+ watch.setup.final = (x: any) => {
104
+ subject.set(x)
105
+ return subject
106
+ }
107
+ return watch
108
+ */
109
+ },
110
+ });
111
+ Object.defineProperty(attachTo, 'truthy', {
112
+ get() {
113
+ const watch = getWatch();
114
+ watch.setup.before = (currentValues) => currentValues.every(x => x);
115
+ return watch;
116
+ },
117
+ });
118
+ return attachTo;
24
119
  }
120
+ defineOnMethod(() => newWatch({}), watch);
25
121
  //# sourceMappingURL=watch.function.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.function.js","sourceRoot":"","sources":["../../ts/state/watch.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAO9C;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CACnB,aAAkB,EAClB,QAAuB;IAEvB,IAAI,cAAc,GAAG,QAAQ,CAAC,SAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC,CAAA;IAE5G,4BAA4B;IAC5B,IAAG,cAAc,KAAK,SAAS,EAAE,CAAC;QAChC,qEAAqE;QACrE,cAAc,GAAG,aAAa,CAAA;QAC9B,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAM,cAAwB,CAAC,KAAK,CAAC,CAAC,CAAA;IAChG,IAAG,QAAQ,EAAE,CAAC;QACZ,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;IACvC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;IACzB,cAAc,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAA;IAErC,OAAO,aAAa,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"watch.function.js","sourceRoot":"","sources":["../../ts/state/watch.function.ts"],"names":[],"mappings":"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"}