taggedjs 2.4.32 → 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 (255) hide show
  1. package/bundle.js +3367 -2879
  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/TagSupport.class.d.ts +1 -1
  6. package/js/TagSupport.class.js +26 -19
  7. package/js/TagSupport.class.js.map +1 -1
  8. package/js/TemplaterResult.class.d.ts +14 -12
  9. package/js/TemplaterResult.class.js +12 -58
  10. package/js/TemplaterResult.class.js.map +1 -1
  11. package/js/afterInterpolateElement.function.d.ts +2 -2
  12. package/js/alterProps.function.d.ts +3 -4
  13. package/js/alterProps.function.js +39 -16
  14. package/js/alterProps.function.js.map +1 -1
  15. package/js/checkDestroyPrevious.function.d.ts +4 -4
  16. package/js/checkDestroyPrevious.function.js +7 -5
  17. package/js/checkDestroyPrevious.function.js.map +1 -1
  18. package/js/cloneValueArray.function.d.ts +1 -1
  19. package/js/deepFunctions.js +1 -1
  20. package/js/deepFunctions.js.map +1 -1
  21. package/js/destroy.support.d.ts +1 -1
  22. package/js/destroyTag.function.d.ts +1 -1
  23. package/js/destroyTag.function.js +0 -2
  24. package/js/destroyTag.function.js.map +1 -1
  25. package/js/hasTagSupportChanged.function.d.ts +1 -1
  26. package/js/index.d.ts +18 -10
  27. package/js/index.js +17 -15
  28. package/js/index.js.map +1 -1
  29. package/js/insertAfter.function.d.ts +1 -1
  30. package/js/interpolations/Clones.type.d.ts +3 -0
  31. package/js/interpolations/Clones.type.js +2 -0
  32. package/js/interpolations/Clones.type.js.map +1 -0
  33. package/js/interpolations/ElementTargetEvent.interface.d.ts +6 -0
  34. package/js/interpolations/ElementTargetEvent.interface.js +2 -0
  35. package/js/interpolations/ElementTargetEvent.interface.js.map +1 -0
  36. package/js/interpolations/afterInterpolateElement.function.d.ts +4 -0
  37. package/js/interpolations/afterInterpolateElement.function.js +12 -0
  38. package/js/interpolations/afterInterpolateElement.function.js.map +1 -0
  39. package/js/interpolations/bindSubjectCallback.function.d.ts +1 -1
  40. package/js/interpolations/bindSubjectCallback.function.js +11 -7
  41. package/js/interpolations/bindSubjectCallback.function.js.map +1 -1
  42. package/js/interpolations/interpolateAttributes.d.ts +2 -2
  43. package/js/interpolations/interpolateAttributes.js +5 -0
  44. package/js/interpolations/interpolateAttributes.js.map +1 -1
  45. package/js/interpolations/interpolateContentTemplates.d.ts +2 -2
  46. package/js/interpolations/interpolateElement.d.ts +2 -2
  47. package/js/interpolations/interpolateElement.js +1 -1
  48. package/js/interpolations/interpolateElement.js.map +1 -1
  49. package/js/interpolations/interpolateTemplate.d.ts +4 -4
  50. package/js/interpolations/interpolateTemplate.js +19 -4
  51. package/js/interpolations/interpolateTemplate.js.map +1 -1
  52. package/js/interpolations/processAttribute.function.d.ts +2 -2
  53. package/js/interpolations/scanTextAreaValue.function.d.ts +2 -2
  54. package/js/isInstance.d.ts +2 -2
  55. package/js/isInstance.js +2 -1
  56. package/js/isInstance.js.map +1 -1
  57. package/js/isLikeTags.function.d.ts +2 -1
  58. package/js/isLikeTags.function.js +3 -0
  59. package/js/isLikeTags.function.js.map +1 -1
  60. package/js/processNewValue.function.d.ts +1 -1
  61. package/js/processNewValue.function.js +1 -1
  62. package/js/processNewValue.function.js.map +1 -1
  63. package/js/processSubjectComponent.function.d.ts +1 -1
  64. package/js/processSubjectComponent.function.js +2 -16
  65. package/js/processSubjectComponent.function.js.map +1 -1
  66. package/js/processSubjectValue.function.d.ts +2 -2
  67. package/js/processSubjectValue.function.js +2 -2
  68. package/js/processSubjectValue.function.js.map +1 -1
  69. package/js/processTag.function.d.ts +1 -1
  70. package/js/processTag.function.js +1 -1
  71. package/js/processTag.function.js.map +1 -1
  72. package/js/processTagArray.d.ts +1 -1
  73. package/js/processTagArray.js +2 -2
  74. package/js/processTagArray.js.map +1 -1
  75. package/js/processTagResult.function.d.ts +2 -2
  76. package/js/render.d.ts +1 -1
  77. package/js/renderExistingTag.function.d.ts +1 -1
  78. package/js/renderExistingTag.function.js +4 -7
  79. package/js/renderExistingTag.function.js.map +1 -1
  80. package/js/renderSubjectComponent.function.d.ts +3 -0
  81. package/js/renderSubjectComponent.function.js +14 -0
  82. package/js/renderSubjectComponent.function.js.map +1 -0
  83. package/js/renderTagOnly.function.d.ts +4 -0
  84. package/js/renderTagOnly.function.js +39 -0
  85. package/js/renderTagOnly.function.js.map +1 -0
  86. package/js/renderTagSupport.function.d.ts +3 -2
  87. package/js/renderTagSupport.function.js +7 -9
  88. package/js/renderTagSupport.function.js.map +1 -1
  89. package/js/renderWithSupport.function.d.ts +5 -0
  90. package/js/renderWithSupport.function.js +31 -0
  91. package/js/renderWithSupport.function.js.map +1 -0
  92. package/js/state/callbackMaker.function.d.ts +3 -2
  93. package/js/state/callbackMaker.function.js +37 -18
  94. package/js/state/callbackMaker.function.js.map +1 -1
  95. package/js/state/children.d.ts +1 -0
  96. package/js/state/children.js +14 -0
  97. package/js/state/children.js.map +1 -0
  98. package/js/state/index.d.ts +2 -2
  99. package/js/state/index.js +1 -1
  100. package/js/state/index.js.map +1 -1
  101. package/js/state/letState.function.js.map +1 -1
  102. package/js/state/onDestroy.js +8 -6
  103. package/js/state/onDestroy.js.map +1 -1
  104. package/js/state/onInit.js +2 -2
  105. package/js/state/onInit.js.map +1 -1
  106. package/js/state/provider.utils.d.ts +1 -1
  107. package/js/state/provider.utils.js +7 -7
  108. package/js/state/provider.utils.js.map +1 -1
  109. package/js/state/providers.d.ts +4 -2
  110. package/js/state/providers.js +56 -40
  111. package/js/state/providers.js.map +1 -1
  112. package/js/state/setProp.function.js.map +1 -1
  113. package/js/state/setUse.function.d.ts +9 -8
  114. package/js/state/setUse.function.js.map +1 -1
  115. package/js/state/state.function.js +17 -0
  116. package/js/state/state.function.js.map +1 -1
  117. package/js/state/state.utils.d.ts +5 -6
  118. package/js/state/state.utils.js +44 -27
  119. package/js/state/state.utils.js.map +1 -1
  120. package/js/state/syncStates.function.d.ts +2 -0
  121. package/js/state/syncStates.function.js +11 -0
  122. package/js/state/syncStates.function.js.map +1 -0
  123. package/js/state/watch.function.d.ts +20 -3
  124. package/js/state/watch.function.js +106 -10
  125. package/js/state/watch.function.js.map +1 -1
  126. package/js/subject/Subject.class.d.ts +10 -2
  127. package/js/subject/Subject.class.js +31 -54
  128. package/js/subject/Subject.class.js.map +1 -1
  129. package/js/subject/Subject.utils.d.ts +6 -3
  130. package/js/subject/Subject.utils.js +51 -3
  131. package/js/subject/Subject.utils.js.map +1 -1
  132. package/js/subject/ValueSubject.d.ts +2 -2
  133. package/js/subject/combineLatest.function.js +10 -2
  134. package/js/subject/combineLatest.function.js.map +1 -1
  135. package/js/subject/subject.cancel.d.ts +2 -0
  136. package/js/subject/subject.cancel.js +3 -0
  137. package/js/subject/subject.cancel.js.map +1 -0
  138. package/js/subject/will.functions.d.ts +1 -1
  139. package/js/subject.types.d.ts +2 -2
  140. package/js/tag/Tag.class.d.ts +43 -0
  141. package/js/tag/Tag.class.js +27 -0
  142. package/js/tag/Tag.class.js.map +1 -0
  143. package/js/tag/TagSupport.class.d.ts +58 -0
  144. package/js/tag/TagSupport.class.js +321 -0
  145. package/js/tag/TagSupport.class.js.map +1 -0
  146. package/js/tag/checkDestroyPrevious.function.d.ts +8 -0
  147. package/js/tag/checkDestroyPrevious.function.js +83 -0
  148. package/js/tag/checkDestroyPrevious.function.js.map +1 -0
  149. package/js/tag/cloneValueArray.function.d.ts +2 -0
  150. package/js/tag/cloneValueArray.function.js +19 -0
  151. package/js/tag/cloneValueArray.function.js.map +1 -0
  152. package/js/tag/destroy.support.d.ts +6 -0
  153. package/js/tag/destroy.support.js +10 -0
  154. package/js/tag/destroy.support.js.map +1 -0
  155. package/js/tag/destroyTag.function.d.ts +3 -0
  156. package/js/tag/destroyTag.function.js +12 -0
  157. package/js/tag/destroyTag.function.js.map +1 -0
  158. package/js/tag/elementDestroyCheck.function.d.ts +3 -0
  159. package/js/tag/elementDestroyCheck.function.js +17 -0
  160. package/js/tag/elementDestroyCheck.function.js.map +1 -0
  161. package/js/tag/getSupportInCycle.function.d.ts +1 -0
  162. package/js/tag/getSupportInCycle.function.js +5 -0
  163. package/js/tag/getSupportInCycle.function.js.map +1 -0
  164. package/js/tag/hasPropChanges.function.d.ts +9 -0
  165. package/js/tag/hasPropChanges.function.js +80 -0
  166. package/js/tag/hasPropChanges.function.js.map +1 -0
  167. package/js/tag/hasTagSupportChanged.function.d.ts +4 -0
  168. package/js/tag/hasTagSupportChanged.function.js +23 -0
  169. package/js/tag/hasTagSupportChanged.function.js.map +1 -0
  170. package/js/tag/html.d.ts +4 -0
  171. package/js/tag/html.js +5 -0
  172. package/js/tag/html.js.map +1 -0
  173. package/js/tag/isLikeTags.function.d.ts +5 -0
  174. package/js/tag/isLikeTags.function.js +42 -0
  175. package/js/tag/isLikeTags.function.js.map +1 -0
  176. package/js/tag/render/renderExistingTag.function.d.ts +7 -0
  177. package/js/tag/render/renderExistingTag.function.js +45 -0
  178. package/js/tag/render/renderExistingTag.function.js.map +1 -0
  179. package/js/tag/render/renderSubjectComponent.function.d.ts +3 -0
  180. package/js/tag/render/renderSubjectComponent.function.js +14 -0
  181. package/js/tag/render/renderSubjectComponent.function.js.map +1 -0
  182. package/js/tag/render/renderTagOnly.function.d.ts +3 -0
  183. package/js/tag/render/renderTagOnly.function.js +41 -0
  184. package/js/tag/render/renderTagOnly.function.js.map +1 -0
  185. package/js/tag/render/renderTagSupport.function.d.ts +4 -0
  186. package/js/tag/render/renderTagSupport.function.js +37 -0
  187. package/js/tag/render/renderTagSupport.function.js.map +1 -0
  188. package/js/tag/render/renderWithSupport.function.d.ts +5 -0
  189. package/js/tag/render/renderWithSupport.function.js +31 -0
  190. package/js/tag/render/renderWithSupport.function.js.map +1 -0
  191. package/js/tag/setTagPlaceholder.function.d.ts +4 -0
  192. package/js/tag/setTagPlaceholder.function.js +12 -0
  193. package/js/tag/setTagPlaceholder.function.js.map +1 -0
  194. package/js/tag/tag.d.ts +26 -0
  195. package/js/tag/tag.js +121 -0
  196. package/js/tag/tag.js.map +1 -0
  197. package/js/tag/tagElement.d.ts +9 -0
  198. package/js/tag/tagElement.js +58 -0
  199. package/js/tag/tagElement.js.map +1 -0
  200. package/js/tag/tagRunner.d.ts +5 -0
  201. package/js/tag/tagRunner.js +28 -0
  202. package/js/tag/tagRunner.js.map +1 -0
  203. package/js/tag/update/processNewValue.function.d.ts +3 -0
  204. package/js/tag/update/processNewValue.function.js +42 -0
  205. package/js/tag/update/processNewValue.function.js.map +1 -0
  206. package/js/tag/update/processRegularValue.function.d.ts +5 -0
  207. package/js/tag/update/processRegularValue.function.js +15 -0
  208. package/js/tag/update/processRegularValue.function.js.map +1 -0
  209. package/js/tag/update/processSubjectComponent.function.d.ts +9 -0
  210. package/js/tag/update/processSubjectComponent.function.js +35 -0
  211. package/js/tag/update/processSubjectComponent.function.js.map +1 -0
  212. package/js/tag/update/processSubjectValue.function.d.ts +27 -0
  213. package/js/tag/update/processSubjectValue.function.js +55 -0
  214. package/js/tag/update/processSubjectValue.function.js.map +1 -0
  215. package/js/tag/update/processTag.function.d.ts +11 -0
  216. package/js/tag/update/processTag.function.js +46 -0
  217. package/js/tag/update/processTag.function.js.map +1 -0
  218. package/js/tag/update/processTagArray.d.ts +22 -0
  219. package/js/tag/update/processTagArray.js +120 -0
  220. package/js/tag/update/processTagArray.js.map +1 -0
  221. package/js/tag/update/processTagResult.function.d.ts +11 -0
  222. package/js/tag/update/processTagResult.function.js +30 -0
  223. package/js/tag/update/processTagResult.function.js.map +1 -0
  224. package/js/tag/update/updateContextItem.function.d.ts +3 -0
  225. package/js/tag/update/updateContextItem.function.js +44 -0
  226. package/js/tag/update/updateContextItem.function.js.map +1 -0
  227. package/js/tag/update/updateExistingTagComponent.function.d.ts +5 -0
  228. package/js/tag/update/updateExistingTagComponent.function.js +116 -0
  229. package/js/tag/update/updateExistingTagComponent.function.js.map +1 -0
  230. package/js/tag/update/updateExistingValue.function.d.ts +4 -0
  231. package/js/tag/update/updateExistingValue.function.js +135 -0
  232. package/js/tag/update/updateExistingValue.function.js.map +1 -0
  233. package/js/tag/updates/processNewValue.function.d.ts +3 -0
  234. package/js/tag/updates/processNewValue.function.js +43 -0
  235. package/js/tag/updates/processNewValue.function.js.map +1 -0
  236. package/js/tag.d.ts +8 -1
  237. package/js/tag.js +3 -2
  238. package/js/tag.js.map +1 -1
  239. package/js/tagElement.d.ts +2 -2
  240. package/js/tagElement.js +7 -1
  241. package/js/tagElement.js.map +1 -1
  242. package/js/tagRunner.d.ts +2 -3
  243. package/js/tagRunner.js +6 -3
  244. package/js/tagRunner.js.map +1 -1
  245. package/js/updateBeforeTemplate.function.d.ts +1 -1
  246. package/js/updateContextItem.function.d.ts +1 -1
  247. package/js/updateContextItem.function.js +2 -3
  248. package/js/updateContextItem.function.js.map +1 -1
  249. package/js/updateExistingTagComponent.function.d.ts +2 -2
  250. package/js/updateExistingTagComponent.function.js +3 -5
  251. package/js/updateExistingTagComponent.function.js.map +1 -1
  252. package/js/updateExistingValue.function.d.ts +3 -3
  253. package/js/updateExistingValue.function.js +7 -10
  254. package/js/updateExistingValue.function.js.map +1 -1
  255. package/package.json +1 -1
@@ -1,30 +1,44 @@
1
1
  import { deepClone } from '../deepFunctions';
2
2
  import { setUse } from './setUse.function';
3
+ import { state } from './state.function';
3
4
  setUse.memory.providerConfig = {
4
5
  providers: [],
5
6
  ownerSupport: undefined,
6
7
  };
7
- function get(constructMethod) {
8
- const config = setUse.memory.providerConfig;
9
- const providers = config.providers;
10
- return providers.find(provider => provider.constructMethod === constructMethod);
11
- }
12
8
  export const providers = {
13
9
  create: (constructMethod) => {
14
- const existing = get(constructMethod);
15
- if (existing) {
16
- existing.clone = deepClone(existing.instance);
17
- return existing.instance;
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);
16
+ }
17
+ const result = state(undefined);
18
+ stateDiffMemory.provider.constructMethod.compareTo = compareTo;
19
+ return result;
18
20
  }
19
- // Providers with provider requirements just need to use providers.create() and providers.inject()
20
- const instance = 'prototype' in constructMethod ? new constructMethod() : constructMethod();
21
- const config = setUse.memory.providerConfig;
22
- config.providers.push({
23
- constructMethod,
24
- instance,
25
- clone: deepClone(instance)
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;
26
39
  });
27
- return instance;
40
+ stateDiffMemory.provider.constructMethod.compareTo = compareTo;
41
+ return result;
28
42
  },
29
43
  /**
30
44
  * @template T
@@ -32,31 +46,33 @@ export const providers = {
32
46
  * @returns {T}
33
47
  */
34
48
  inject: (constructor) => {
35
- const oldValue = get(constructor);
36
- if (oldValue) {
37
- return oldValue.instance;
38
- }
39
- const config = setUse.memory.providerConfig;
40
- let owner = {
41
- ownerTagSupport: config.ownerSupport
42
- };
43
- while (owner.ownerTagSupport) {
44
- const ownerProviders = owner.ownerTagSupport.global.providers;
45
- const provider = ownerProviders.find(provider => {
46
- if (provider.constructMethod === constructor) {
47
- 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;
48
69
  }
49
- });
50
- if (provider) {
51
- provider.clone = deepClone(provider.instance); // keep a copy of the latest before any change occur
52
- config.providers.push(provider);
53
- return provider.instance;
70
+ owner = owner.ownerTagSupport; // cause reloop checking next parent
54
71
  }
55
- owner = owner.ownerTagSupport; // cause reloop
56
- }
57
- const msg = `Could not inject provider: ${constructor.name} ${constructor}`;
58
- console.warn(`${msg}. Available providers`, config.providers);
59
- 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
+ });
60
76
  }
61
77
  };
62
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 +1 @@
1
- {"version":3,"file":"setProp.function.js","sourceRoot":"","sources":["../../ts/state/setProp.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqD,aAAa,EAAE,MAAM,eAAe,CAAA;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,oFAAoF;AACpF,MAAM,UAAU,OAAO,CACrB,MAAmB;IAEnB,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAA2B,CAAA;IAElD,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAc,CAAC,CAAA;IAC1C,MAAM,CAAC,SAAS,CAAC,CAAA,CAAC,8CAA8C;IAEhE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,UAAU,GAAG,OAAO,CAAC,KAAU,CAAA;QACnC,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAE1C,MAAM,IAAI,GAAuB;YAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;YACnC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAA;QAED,8BAA8B;QAC9B,IAAG,SAAS,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACtB,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QACvC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEhB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,IAAI,GAAuB;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;QACnC,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,SAAS;KACjB,CAAA;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"setProp.function.js","sourceRoot":"","sources":["../../ts/state/setProp.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,aAAa,EAAE,MAAM,eAAe,CAAA;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,oFAAoF;AACpF,MAAM,UAAU,OAAO,CACrB,MAAmB;IAEnB,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAgB,CAAA;IAEvC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAc,CAAC,CAAA;IAC1C,MAAM,CAAC,SAAS,CAAC,CAAA,CAAC,8CAA8C;IAEhE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,UAAU,GAAG,OAAO,CAAC,KAAU,CAAA;QACnC,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAE1C,MAAM,IAAI,GAAuB;YAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;YACnC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,QAAQ;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAA;QAED,8BAA8B;QAC9B,IAAG,SAAS,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACtB,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QACvC,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEvB,MAAM,CAAC,QAAQ,CAAC,CAAA;QAEhB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,IAAI,GAAuB;QAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAM;QACnC,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,SAAS;KACjB,CAAA;IACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvB,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -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
- initCurrentSupport: 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,EAA0D,aAAa,EAAE,MAAM,eAAe,CAAA;AAErG,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,OAA2B,CAAA;IAElD,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;
@@ -7,13 +7,12 @@ export type StateConfigItem<T> = {
7
7
  defaultValue?: T;
8
8
  watch?: T;
9
9
  };
10
- export type StateConfigArray = StateConfigItem<any>[];
11
10
  export type Config = {
12
- tagSupport: BaseTagSupport;
13
- array: StateConfigArray;
14
- rearray?: StateConfigArray;
11
+ tagSupport?: BaseTagSupport;
12
+ array: State;
13
+ rearray?: State;
15
14
  };
16
- export type State = StateConfigArray;
15
+ export type State = StateConfigItem<any>[];
17
16
  export type GetSet<T> = (y: T) => [T, T];
18
17
  export declare function getStateValue<T>(state: StateConfigItem<T>): T | undefined;
19
18
  export declare class StateEchoBack {
@@ -1,9 +1,8 @@
1
1
  import { StateMismatchError } from '../errors';
2
2
  import { setUse } from './setUse.function';
3
- // TODO: rename
4
3
  setUse.memory.stateConfig = {
5
4
  array: [], // state memory on the first render
6
- // rearray: [] as StateConfigArray, // state memory to be used before the next render
5
+ // rearray: [] as State,
7
6
  };
8
7
  const beforeRender = (tagSupport) => initState(tagSupport);
9
8
  setUse({
@@ -11,32 +10,34 @@ setUse({
11
10
  beforeRedraw: beforeRender,
12
11
  afterRender: (tagSupport) => {
13
12
  const memory = tagSupport.memory;
14
- const state = memory.state;
13
+ // const state: State = memory.state
15
14
  const config = setUse.memory.stateConfig;
16
15
  const rearray = config.rearray;
17
16
  if (rearray.length) {
18
17
  if (rearray.length !== config.array.length) {
19
- 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`;
20
19
  const wrapper = tagSupport.templater?.wrapper;
21
20
  const details = {
22
21
  oldStates: config.array,
23
22
  newStates: config.rearray,
24
- tagFunction: wrapper.original,
23
+ tagFunction: wrapper.parentWrap.original,
25
24
  };
26
25
  const error = new StateMismatchError(message, details);
27
26
  console.warn(message, details);
28
27
  throw error;
29
28
  }
30
29
  }
30
+ const cTagConfig = config.tagSupport;
31
31
  delete config.rearray; // clean up any previous runs
32
- memory.state = config.array; // [...config.array]
32
+ delete config.tagSupport;
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
  }
36
39
  });
37
- export function getStateValue(
38
- // state: StateConfig,
39
- state) {
40
+ export function getStateValue(state) {
40
41
  const callback = state.callback;
41
42
  if (!callback) {
42
43
  return state.defaultValue;
@@ -62,30 +63,46 @@ function initState(tagSupport) {
62
63
  const state = memory.state;
63
64
  const config = setUse.memory.stateConfig;
64
65
  // TODO: This guard may no longer be needed
66
+ /*
65
67
  if (config.rearray) {
66
- const wrapper = tagSupport.templater?.wrapper;
67
- const wasWrapper = config.tagSupport?.templater.wrapper;
68
- const message = 'last state not cleared. Possibly in the middle of rendering one component and another is trying to render';
69
- console.error(message, {
70
- config,
71
- tagFunction: wrapper.original,
72
- wasInMiddleOf: wasWrapper.original,
73
- state,
74
- expectedClearArray: config.rearray,
75
- });
76
- throw new StateMismatchError(message, {
77
- config,
78
- tagFunction: wrapper.original,
79
- state,
80
- expectedClearArray: config.rearray,
81
- });
68
+ checkStateMismatch(tagSupport, config, state)
82
69
  }
83
- // TODO: this maybe redundant and not needed
84
- config.rearray = []; // .length = 0
70
+ */
71
+ config.rearray = [];
85
72
  if (state?.length) {
86
73
  state.forEach(state => getStateValue(state));
87
74
  config.rearray.push(...state);
88
75
  }
89
76
  config.tagSupport = tagSupport;
90
77
  }
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
+ })
106
+ }
107
+ */
91
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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAqB1C,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG;IAC1B,KAAK,EAAE,EAAW,EAAE,mCAAmC;IACvD,wBAAwB;CACf,CAAA;AAIX,MAAM,YAAY,GAAG,CAAC,UAA0B,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;AAE1E,MAAM,CAAC;IACL,YAAY;IACZ,YAAY,EAAE,YAAY;IAC1B,WAAW,EAAE,CACX,UAA0B,EAC1B,EAAE;QACF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,oCAAoC;QACpC,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAA6B,CAAA;QAEpD,IAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAClB,IAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,+BAA+B,OAAO,CAAC,MAAM,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,6OAA6O,CAAA;gBACrU,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,OAAkB,CAAA;gBACxD,MAAM,OAAO,GAAG;oBACd,SAAS,EAAE,MAAM,CAAC,KAAK;oBACvB,SAAS,EAAE,MAAM,CAAC,OAAO;oBACzB,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;iBACzC,CAAA;gBACD,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,OAAO,EAAC,OAAO,CAAC,CAAA;gBACrD,OAAO,CAAC,IAAI,CAAC,OAAO,EAAC,OAAO,CAAC,CAAA;gBAC7B,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAA+B,CAAA;QACzD,OAAO,MAAM,CAAC,OAAO,CAAA,CAAC,6BAA6B;QACnD,OAAO,MAAM,CAAC,UAAU,CAAA;QAExB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAA;QACvB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAClC,mDAAmD;QACnD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA,CAAC,kBAAkB;QAErF,MAAM,CAAC,KAAK,GAAG,EAAE,CAAA;IACnB,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,aAAa,CAC3B,KAAyB;IAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE/B,IAAG,CAAC,QAAQ,EAAE,CAAC;QACb,OAAO,KAAK,CAAC,YAAY,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAoB,CAAC,CAAA,CAAC,iCAAiC;IACjF,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;IAC3B,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAE,QAAQ,CAAE,CAAA,CAAC,6BAA6B;IAEvE,IAAG,UAAU,KAAK,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,+FAA+F;YAC/G,4EAA4E;YAC5E,2DAA2D;YAC3D,kBAAkB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAE,IAAI,CAAA;QAEnF,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAC,CAAC,CAAA;QAEzE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,6BAA6B;IAE7B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,OAAO,aAAa;CAAG;AAE7B,SAAS,SAAS,CAChB,UAA0B;IAE1B,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAc,CAAA;IACnC,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAEhD,2CAA2C;IAC3C;;;;MAIE;IAEF,MAAM,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,IAAG,KAAK,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAE,GAAG,KAAK,CAAE,CAAA;IACjC,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,UAAU,CAAA;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BE"}
@@ -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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"}
@@ -1,4 +1,4 @@
1
- import { OperatorFunction, SubjectLike, SubjectSubscriber, Subscription } from "./Subject.utils";
1
+ import { OperatorFunction, SubjectLike, SubjectSubscriber, Subscription } from "./subject.utils";
2
2
  type OnSubscription<T> = (subscription: Subscription<T>) => unknown;
3
3
  export declare class Subject<T> implements SubjectLike<T> {
4
4
  value?: T | undefined;
@@ -12,7 +12,8 @@ export declare class Subject<T> implements SubjectLike<T> {
12
12
  set(value?: any): void;
13
13
  next: (value?: any) => void;
14
14
  toPromise(): Promise<T>;
15
- toCallback(callback: (x: T) => any): void;
15
+ /** like toPromise but faster */
16
+ toCallback(callback: (x: T) => any): this;
16
17
  pipe(): Subject<T>;
17
18
  pipe<A, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>): Subject<A>;
18
19
  pipe<A, B, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>): Subject<B>;
@@ -24,5 +25,12 @@ export declare class Subject<T> implements SubjectLike<T> {
24
25
  pipe<A, B, C, D, E, F, G, H, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>): Subject<H>;
25
26
  pipe<A, B, C, D, E, F, G, H, I, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>, op9: OperatorFunction<H, I, RESOLVE>): Subject<I>;
26
27
  pipe<A, B, C, D, E, F, G, H, I, RESOLVE>(op1: OperatorFunction<T, A, RESOLVE>, op2: OperatorFunction<A, B, RESOLVE>, op3: OperatorFunction<B, C, RESOLVE>, op4: OperatorFunction<C, D, RESOLVE>, op5: OperatorFunction<D, E, RESOLVE>, op6: OperatorFunction<E, F, RESOLVE>, op7: OperatorFunction<F, G, RESOLVE>, op8: OperatorFunction<G, H, RESOLVE>, op9: OperatorFunction<H, I, RESOLVE>, ...operations: OperatorFunction<any, any, any>[]): Subject<unknown>;
28
+ static all<A, B, C, D, E, F>(args: [Subject<A> | A, Subject<B> | B, Subject<C> | C, Subject<D> | D, Subject<E> | E, Subject<F> | F]): Subject<[A, B, C, D, E, F]>;
29
+ static all<A, B, C, D, E>(args: [Subject<A> | A, Subject<B> | B, Subject<C> | C, Subject<D> | D, Subject<E> | E]): Subject<[A, B, C, D, E]>;
30
+ static all<A, B, C, D>(args: [Subject<A> | A, Subject<B> | B, Subject<C> | C, Subject<D> | D]): Subject<[A, B, C, D]>;
31
+ static all<A, B, C>(args: [Subject<A> | A, Subject<B> | B, Subject<C> | C]): Subject<[A, B, C]>;
32
+ static all<A, B>(args: [Subject<A> | A, Subject<B> | B]): Subject<[A, B]>;
33
+ static all<A>(args: [Subject<A> | A]): Subject<[A]>;
34
+ static globalSubCount$: Subject<number>;
27
35
  }
28
36
  export {};