taggedjs 2.3.27 → 2.3.30

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 (399) hide show
  1. package/index.js +1 -1
  2. package/js/CustomError.d.ts +7 -0
  3. package/js/CustomError.js +9 -0
  4. package/js/CustomError.js.map +1 -0
  5. package/js/Errors.d.ts +14 -0
  6. package/js/Errors.js +21 -0
  7. package/js/Errors.js.map +1 -0
  8. package/js/Errors2.d.ts +14 -0
  9. package/js/Errors2.js +21 -0
  10. package/js/Errors2.js.map +1 -0
  11. package/js/Subject.d.ts +3 -2
  12. package/js/Subject.js +11 -7
  13. package/js/Subject.js.map +1 -1
  14. package/js/Tag.class.d.ts +6 -8
  15. package/js/Tag.class.js +35 -63
  16. package/js/Tag.class.js.map +1 -1
  17. package/js/Tag.utils.d.ts +9 -5
  18. package/js/Tag.utils.js +4 -16
  19. package/js/Tag.utils.js.map +1 -1
  20. package/js/TagSupport.class.d.ts +23 -0
  21. package/js/TagSupport.class.js +86 -0
  22. package/js/TagSupport.class.js.map +1 -0
  23. package/js/ValueSubject.d.ts +2 -2
  24. package/js/ValueSubject.js +3 -3
  25. package/js/ValueSubject.js.map +1 -1
  26. package/js/bindSubjectCallback.function.d.ts +6 -3
  27. package/js/bindSubjectCallback.function.js +25 -13
  28. package/js/bindSubjectCallback.function.js.map +1 -1
  29. package/js/deepFunctions.js +9 -4
  30. package/js/deepFunctions.js.map +1 -1
  31. package/js/elementDestroyCheck.function.d.ts +3 -3
  32. package/js/elementDestroyCheck.function.js.map +1 -1
  33. package/js/elementInitCheck.d.ts +1 -1
  34. package/js/elementInitCheck.js +4 -4
  35. package/js/elementInitCheck.js.map +1 -1
  36. package/js/gateway/loadTagGateway.function.d.ts +2 -2
  37. package/js/gateway/loadTagGateway.function.js.map +1 -1
  38. package/js/gateway/tagGateway.function.d.ts +3 -2
  39. package/js/gateway/tagGateway.function.js.map +1 -1
  40. package/js/gateway/tagGateway.utils.d.ts +4 -3
  41. package/js/gateway/tagGateway.utils.js +5 -7
  42. package/js/gateway/tagGateway.utils.js.map +1 -1
  43. package/js/getCallback.js +1 -1
  44. package/js/getCallback.js.map +1 -1
  45. package/js/getTagSupport.d.ts +1 -2
  46. package/js/getTagSupport.js +7 -11
  47. package/js/getTagSupport.js.map +1 -1
  48. package/js/hasTagSupportChanged.function.d.ts +7 -0
  49. package/js/hasTagSupportChanged.function.js +76 -0
  50. package/js/hasTagSupportChanged.function.js.map +1 -0
  51. package/js/index.d.ts +17 -7
  52. package/js/index.js +16 -7
  53. package/js/index.js.map +1 -1
  54. package/js/interpolateAttributes.js +24 -16
  55. package/js/interpolateAttributes.js.map +1 -1
  56. package/js/interpolateContentTemplates.d.ts +1 -1
  57. package/js/interpolateContentTemplates.js +8 -10
  58. package/js/interpolateContentTemplates.js.map +1 -1
  59. package/js/interpolateElement.d.ts +2 -0
  60. package/js/interpolateElement.js +1 -8
  61. package/js/interpolateElement.js.map +1 -1
  62. package/js/interpolateTemplate.d.ts +3 -3
  63. package/js/interpolateTemplate.js +18 -13
  64. package/js/interpolateTemplate.js.map +1 -1
  65. package/js/isInstance.d.ts +3 -2
  66. package/js/isInstance.js +3 -0
  67. package/js/isInstance.js.map +1 -1
  68. package/js/onDestroy.js +0 -3
  69. package/js/onDestroy.js.map +1 -1
  70. package/js/onInit.js +0 -4
  71. package/js/onInit.js.map +1 -1
  72. package/js/processNewValue.function.d.ts +2 -0
  73. package/js/processNewValue.function.js +29 -0
  74. package/js/processNewValue.function.js.map +1 -0
  75. package/js/processRegularValue.function.d.ts +7 -0
  76. package/js/processRegularValue.function.js +21 -0
  77. package/js/processRegularValue.function.js.map +1 -0
  78. package/js/processSubjectComponent.function.js +5 -21
  79. package/js/processSubjectComponent.function.js.map +1 -1
  80. package/js/processSubjectValue.function.d.ts +6 -6
  81. package/js/processSubjectValue.function.js +33 -48
  82. package/js/processSubjectValue.function.js.map +1 -1
  83. package/js/processTagArray.d.ts +1 -0
  84. package/js/processTagArray.js +60 -24
  85. package/js/processTagArray.js.map +1 -1
  86. package/js/processTagResult.function.d.ts +1 -2
  87. package/js/processTagResult.function.js +1 -17
  88. package/js/processTagResult.function.js.map +1 -1
  89. package/js/propState.function.d.ts +2 -0
  90. package/js/propState.function.js +3 -0
  91. package/js/propState.function.js.map +1 -0
  92. package/js/provider.utils.d.ts +2 -0
  93. package/js/provider.utils.js +34 -0
  94. package/js/provider.utils.js.map +1 -0
  95. package/js/providers.d.ts +2 -1
  96. package/js/providers.js +2 -2
  97. package/js/providers.js.map +1 -1
  98. package/js/redrawTag.function.d.ts +3 -2
  99. package/js/redrawTag.function.js +2 -4
  100. package/js/redrawTag.function.js.map +1 -1
  101. package/js/set.function.d.ts +23 -0
  102. package/{_js/state.js → js/set.function.js} +60 -64
  103. package/js/set.function.js.map +1 -0
  104. package/js/setLet.function.d.ts +3 -0
  105. package/js/setLet.function.js +31 -0
  106. package/js/setLet.function.js.map +1 -0
  107. package/js/setProp.function.d.ts +3 -0
  108. package/js/setProp.function.js +34 -0
  109. package/js/setProp.function.js.map +1 -0
  110. package/js/setUse.function.d.ts +2 -2
  111. package/js/state.d.ts +8 -6
  112. package/js/state.js +35 -15
  113. package/js/state.js.map +1 -1
  114. package/js/tag.d.ts +11 -6
  115. package/js/tag.js +84 -11
  116. package/js/tag.js.map +1 -1
  117. package/js/tagElement.d.ts +3 -2
  118. package/js/tagElement.js +21 -22
  119. package/js/tagElement.js.map +1 -1
  120. package/js/tagRunner.d.ts +1 -1
  121. package/js/templater.utils.d.ts +4 -5
  122. package/js/templater.utils.js +27 -24
  123. package/js/templater.utils.js.map +1 -1
  124. package/js/updateExistingTag.function.d.ts +4 -0
  125. package/js/updateExistingTag.function.js +15 -0
  126. package/js/updateExistingTag.function.js.map +1 -0
  127. package/js/updateExistingTagComponent.function.d.ts +4 -0
  128. package/js/updateExistingTagComponent.function.js +56 -0
  129. package/js/updateExistingTagComponent.function.js.map +1 -0
  130. package/js/updateExistingValue.function.d.ts +10 -0
  131. package/js/updateExistingValue.function.js +112 -0
  132. package/js/updateExistingValue.function.js.map +1 -0
  133. package/js/updateTag.utils.d.ts +1 -0
  134. package/js/updateTag.utils.js +5 -79
  135. package/js/updateTag.utils.js.map +1 -1
  136. package/js/watch.function.d.ts +3 -0
  137. package/js/watch.function.js +19 -0
  138. package/js/watch.function.js.map +1 -0
  139. package/package.json +1 -1
  140. package/_js/Clones.type.d.ts +0 -1
  141. package/_js/Clones.type.js +0 -2
  142. package/_js/Clones.type.js.map +0 -1
  143. package/_js/ElementTarget.interface.d.ts +0 -7
  144. package/_js/ElementTarget.interface.js +0 -2
  145. package/_js/ElementTarget.interface.js.map +0 -1
  146. package/_js/ElementTargetEvent.interface.d.ts +0 -6
  147. package/_js/ElementTargetEvent.interface.js +0 -2
  148. package/_js/ElementTargetEvent.interface.js.map +0 -1
  149. package/_js/Props.d.ts +0 -1
  150. package/_js/Props.js +0 -2
  151. package/_js/Props.js.map +0 -1
  152. package/_js/Subject.d.ts +0 -17
  153. package/_js/Subject.js +0 -43
  154. package/_js/Subject.js.map +0 -1
  155. package/_js/Tag.class.d.ts +0 -69
  156. package/_js/Tag.class.js +0 -258
  157. package/_js/Tag.class.js.map +0 -1
  158. package/_js/Tag.utils.d.ts +0 -12
  159. package/_js/Tag.utils.js +0 -31
  160. package/_js/Tag.utils.js.map +0 -1
  161. package/_js/ValueSubject.d.ts +0 -6
  162. package/_js/ValueSubject.js +0 -15
  163. package/_js/ValueSubject.js.map +0 -1
  164. package/_js/bindSubjectCallback.function.d.ts +0 -5
  165. package/_js/bindSubjectCallback.function.js +0 -19
  166. package/_js/bindSubjectCallback.function.js.map +0 -1
  167. package/_js/deepFunctions.d.ts +0 -2
  168. package/_js/deepFunctions.js +0 -76
  169. package/_js/deepFunctions.js.map +0 -1
  170. package/_js/elementDestroyCheck.function.d.ts +0 -3
  171. package/_js/elementDestroyCheck.function.js +0 -17
  172. package/_js/elementDestroyCheck.function.js.map +0 -1
  173. package/_js/elementInitCheck.d.ts +0 -2
  174. package/_js/elementInitCheck.js +0 -18
  175. package/_js/elementInitCheck.js.map +0 -1
  176. package/_js/gateway/gateway.web.component.d.ts +0 -11
  177. package/_js/gateway/gateway.web.component.js +0 -20
  178. package/_js/gateway/gateway.web.component.js.map +0 -1
  179. package/_js/gateway/index.d.ts +0 -3
  180. package/_js/gateway/index.js +0 -4
  181. package/_js/gateway/index.js.map +0 -1
  182. package/_js/gateway/loadTagGateway.function.d.ts +0 -2
  183. package/_js/gateway/loadTagGateway.function.js +0 -18
  184. package/_js/gateway/loadTagGateway.function.js.map +0 -1
  185. package/_js/gateway/tagGateway.function.d.ts +0 -4
  186. package/_js/gateway/tagGateway.function.js +0 -49
  187. package/_js/gateway/tagGateway.function.js.map +0 -1
  188. package/_js/gateway/tagGateway.utils.d.ts +0 -21
  189. package/_js/gateway/tagGateway.utils.js +0 -139
  190. package/_js/gateway/tagGateway.utils.js.map +0 -1
  191. package/_js/getCallback.d.ts +0 -3
  192. package/_js/getCallback.js +0 -50
  193. package/_js/getCallback.js.map +0 -1
  194. package/_js/getTagSupport.d.ts +0 -21
  195. package/_js/getTagSupport.js +0 -110
  196. package/_js/getTagSupport.js.map +0 -1
  197. package/_js/html.d.ts +0 -2
  198. package/_js/html.js +0 -5
  199. package/_js/html.js.map +0 -1
  200. package/_js/index.d.ts +0 -20
  201. package/_js/index.js +0 -25
  202. package/_js/index.js.map +0 -1
  203. package/_js/inputAttribute.d.ts +0 -1
  204. package/_js/inputAttribute.js +0 -19
  205. package/_js/inputAttribute.js.map +0 -1
  206. package/_js/interpolateAttributes.d.ts +0 -4
  207. package/_js/interpolateAttributes.js +0 -135
  208. package/_js/interpolateAttributes.js.map +0 -1
  209. package/_js/interpolateContentTemplates.d.ts +0 -6
  210. package/_js/interpolateContentTemplates.js +0 -54
  211. package/_js/interpolateContentTemplates.js.map +0 -1
  212. package/_js/interpolateElement.d.ts +0 -9
  213. package/_js/interpolateElement.js +0 -39
  214. package/_js/interpolateElement.js.map +0 -1
  215. package/_js/interpolateTemplate.d.ts +0 -17
  216. package/_js/interpolateTemplate.js +0 -64
  217. package/_js/interpolateTemplate.js.map +0 -1
  218. package/_js/interpolations.d.ts +0 -7
  219. package/_js/interpolations.js +0 -18
  220. package/_js/interpolations.js.map +0 -1
  221. package/_js/isInstance.d.ts +0 -6
  222. package/_js/isInstance.js +0 -10
  223. package/_js/isInstance.js.map +0 -1
  224. package/_js/js/Clones.type.d.ts +0 -1
  225. package/_js/js/Clones.type.js +0 -2
  226. package/_js/js/Clones.type.js.map +0 -1
  227. package/_js/js/Props.d.ts +0 -1
  228. package/_js/js/Props.js +0 -2
  229. package/_js/js/Props.js.map +0 -1
  230. package/_js/js/Subject.d.ts +0 -17
  231. package/_js/js/Subject.js +0 -43
  232. package/_js/js/Subject.js.map +0 -1
  233. package/_js/js/Tag.class.d.ts +0 -67
  234. package/_js/js/Tag.class.js +0 -241
  235. package/_js/js/Tag.class.js.map +0 -1
  236. package/_js/js/Tag.utils.d.ts +0 -12
  237. package/_js/js/Tag.utils.js +0 -31
  238. package/_js/js/Tag.utils.js.map +0 -1
  239. package/_js/js/ValueSubject.d.ts +0 -6
  240. package/_js/js/ValueSubject.js +0 -15
  241. package/_js/js/ValueSubject.js.map +0 -1
  242. package/_js/js/bindSubjectCallback.function.d.ts +0 -5
  243. package/_js/js/bindSubjectCallback.function.js +0 -19
  244. package/_js/js/bindSubjectCallback.function.js.map +0 -1
  245. package/_js/js/deepFunctions.d.ts +0 -2
  246. package/_js/js/deepFunctions.js +0 -76
  247. package/_js/js/deepFunctions.js.map +0 -1
  248. package/_js/js/elementDestroyCheck.function.d.ts +0 -3
  249. package/_js/js/elementDestroyCheck.function.js +0 -17
  250. package/_js/js/elementDestroyCheck.function.js.map +0 -1
  251. package/_js/js/elementInitCheck.d.ts +0 -2
  252. package/_js/js/elementInitCheck.js +0 -18
  253. package/_js/js/elementInitCheck.js.map +0 -1
  254. package/_js/js/getCallback.d.ts +0 -3
  255. package/_js/js/getCallback.js +0 -50
  256. package/_js/js/getCallback.js.map +0 -1
  257. package/_js/js/getTagSupport.d.ts +0 -22
  258. package/_js/js/getTagSupport.js +0 -116
  259. package/_js/js/getTagSupport.js.map +0 -1
  260. package/_js/js/html.d.ts +0 -2
  261. package/_js/js/html.js +0 -5
  262. package/_js/js/html.js.map +0 -1
  263. package/_js/js/index.d.ts +0 -19
  264. package/_js/js/index.js +0 -24
  265. package/_js/js/index.js.map +0 -1
  266. package/_js/js/inputAttribute.d.ts +0 -1
  267. package/_js/js/inputAttribute.js +0 -19
  268. package/_js/js/inputAttribute.js.map +0 -1
  269. package/_js/js/interpolateAttributes.d.ts +0 -4
  270. package/_js/js/interpolateAttributes.js +0 -127
  271. package/_js/js/interpolateAttributes.js.map +0 -1
  272. package/_js/js/interpolateContentTemplates.d.ts +0 -5
  273. package/_js/js/interpolateContentTemplates.js +0 -57
  274. package/_js/js/interpolateContentTemplates.js.map +0 -1
  275. package/_js/js/interpolateElement.d.ts +0 -9
  276. package/_js/js/interpolateElement.js +0 -32
  277. package/_js/js/interpolateElement.js.map +0 -1
  278. package/_js/js/interpolateTemplate.d.ts +0 -17
  279. package/_js/js/interpolateTemplate.js +0 -64
  280. package/_js/js/interpolateTemplate.js.map +0 -1
  281. package/_js/js/interpolations.d.ts +0 -8
  282. package/_js/js/interpolations.js +0 -17
  283. package/_js/js/interpolations.js.map +0 -1
  284. package/_js/js/isInstance.d.ts +0 -6
  285. package/_js/js/isInstance.js +0 -10
  286. package/_js/js/isInstance.js.map +0 -1
  287. package/_js/js/onDestroy.d.ts +0 -2
  288. package/_js/js/onDestroy.js +0 -20
  289. package/_js/js/onDestroy.js.map +0 -1
  290. package/_js/js/onInit.d.ts +0 -2
  291. package/_js/js/onInit.js +0 -19
  292. package/_js/js/onInit.js.map +0 -1
  293. package/_js/js/processSubjectComponent.function.d.ts +0 -8
  294. package/_js/js/processSubjectComponent.function.js +0 -53
  295. package/_js/js/processSubjectComponent.function.js.map +0 -1
  296. package/_js/js/processSubjectValue.function.d.ts +0 -16
  297. package/_js/js/processSubjectValue.function.js +0 -122
  298. package/_js/js/processSubjectValue.function.js.map +0 -1
  299. package/_js/js/processTagArray.d.ts +0 -9
  300. package/_js/js/processTagArray.js +0 -60
  301. package/_js/js/processTagArray.js.map +0 -1
  302. package/_js/js/processTagResult.function.d.ts +0 -10
  303. package/_js/js/processTagResult.function.js +0 -42
  304. package/_js/js/processTagResult.function.js.map +0 -1
  305. package/_js/js/providers.d.ts +0 -17
  306. package/_js/js/providers.js +0 -86
  307. package/_js/js/providers.js.map +0 -1
  308. package/_js/js/redrawTag.function.d.ts +0 -7
  309. package/_js/js/redrawTag.function.js +0 -9
  310. package/_js/js/redrawTag.function.js.map +0 -1
  311. package/_js/js/render.d.ts +0 -1
  312. package/_js/js/render.js +0 -24
  313. package/_js/js/render.js.map +0 -1
  314. package/_js/js/renderAppToElement.d.ts +0 -14
  315. package/_js/js/renderAppToElement.js +0 -57
  316. package/_js/js/renderAppToElement.js.map +0 -1
  317. package/_js/js/setUse.function.d.ts +0 -23
  318. package/_js/js/setUse.function.js +0 -14
  319. package/_js/js/setUse.function.js.map +0 -1
  320. package/_js/js/state.d.ts +0 -24
  321. package/_js/js/state.js +0 -98
  322. package/_js/js/state.js.map +0 -1
  323. package/_js/js/tag.d.ts +0 -8
  324. package/_js/js/tag.js +0 -46
  325. package/_js/js/tag.js.map +0 -1
  326. package/_js/js/tagElement.d.ts +0 -14
  327. package/_js/js/tagElement.js +0 -57
  328. package/_js/js/tagElement.js.map +0 -1
  329. package/_js/js/tagGateway.function.d.ts +0 -5
  330. package/_js/js/tagGateway.function.js +0 -119
  331. package/_js/js/tagGateway.function.js.map +0 -1
  332. package/_js/js/tagRunner.d.ts +0 -6
  333. package/_js/js/tagRunner.js +0 -19
  334. package/_js/js/tagRunner.js.map +0 -1
  335. package/_js/js/templater.utils.d.ts +0 -28
  336. package/_js/js/templater.utils.js +0 -99
  337. package/_js/js/templater.utils.js.map +0 -1
  338. package/_js/js/updateTag.utils.d.ts +0 -6
  339. package/_js/js/updateTag.utils.js +0 -84
  340. package/_js/js/updateTag.utils.js.map +0 -1
  341. package/_js/js/wait.d.ts +0 -1
  342. package/_js/js/wait.js +0 -8
  343. package/_js/js/wait.js.map +0 -1
  344. package/_js/onDestroy.d.ts +0 -2
  345. package/_js/onDestroy.js +0 -20
  346. package/_js/onDestroy.js.map +0 -1
  347. package/_js/onInit.d.ts +0 -2
  348. package/_js/onInit.js +0 -19
  349. package/_js/onInit.js.map +0 -1
  350. package/_js/processSubjectComponent.function.d.ts +0 -8
  351. package/_js/processSubjectComponent.function.js +0 -53
  352. package/_js/processSubjectComponent.function.js.map +0 -1
  353. package/_js/processSubjectValue.function.d.ts +0 -16
  354. package/_js/processSubjectValue.function.js +0 -122
  355. package/_js/processSubjectValue.function.js.map +0 -1
  356. package/_js/processTagArray.d.ts +0 -9
  357. package/_js/processTagArray.js +0 -60
  358. package/_js/processTagArray.js.map +0 -1
  359. package/_js/processTagResult.function.d.ts +0 -10
  360. package/_js/processTagResult.function.js +0 -40
  361. package/_js/processTagResult.function.js.map +0 -1
  362. package/_js/providers.d.ts +0 -17
  363. package/_js/providers.js +0 -86
  364. package/_js/providers.js.map +0 -1
  365. package/_js/redrawTag.function.d.ts +0 -7
  366. package/_js/redrawTag.function.js +0 -8
  367. package/_js/redrawTag.function.js.map +0 -1
  368. package/_js/render.d.ts +0 -1
  369. package/_js/render.js +0 -17
  370. package/_js/render.js.map +0 -1
  371. package/_js/renderAppToElement.d.ts +0 -14
  372. package/_js/renderAppToElement.js +0 -57
  373. package/_js/renderAppToElement.js.map +0 -1
  374. package/_js/setUse.function.d.ts +0 -23
  375. package/_js/setUse.function.js +0 -14
  376. package/_js/setUse.function.js.map +0 -1
  377. package/_js/state.d.ts +0 -21
  378. package/_js/state.js.map +0 -1
  379. package/_js/tag.d.ts +0 -7
  380. package/_js/tag.js +0 -46
  381. package/_js/tag.js.map +0 -1
  382. package/_js/tagElement.d.ts +0 -14
  383. package/_js/tagElement.js +0 -57
  384. package/_js/tagElement.js.map +0 -1
  385. package/_js/tagGateway.function.d.ts +0 -14
  386. package/_js/tagGateway.function.js +0 -138
  387. package/_js/tagGateway.function.js.map +0 -1
  388. package/_js/tagRunner.d.ts +0 -6
  389. package/_js/tagRunner.js +0 -19
  390. package/_js/tagRunner.js.map +0 -1
  391. package/_js/templater.utils.d.ts +0 -27
  392. package/_js/templater.utils.js +0 -98
  393. package/_js/templater.utils.js.map +0 -1
  394. package/_js/updateTag.utils.d.ts +0 -6
  395. package/_js/updateTag.utils.js +0 -102
  396. package/_js/updateTag.utils.js.map +0 -1
  397. package/_js/wait.d.ts +0 -1
  398. package/_js/wait.js +0 -8
  399. package/_js/wait.js.map +0 -1
@@ -1,89 +1,50 @@
1
+ import { StateMismatchError } from "./errors.js";
1
2
  import { setUse } from "./setUse.function.js";
2
3
  // TODO: rename
3
4
  setUse.memory.stateConfig = {
4
5
  array: [], // state memory on the first render
5
6
  rearray: [], // state memory to be used before the next render
6
7
  };
7
- /** Used for variables that need to remain the same variable during render passes */
8
- export function state0(defaultValue, getSetMethod) {
9
- const config = setUse.memory.stateConfig;
10
- const restate = config.rearray[config.array.length];
11
- if (restate) {
12
- const oldValue = getStateValue(restate);
13
- config.array.push({
14
- callback: getSetMethod,
15
- lastValue: oldValue,
16
- defaultValue: restate.defaultValue,
17
- });
18
- return oldValue; // return old value instead
19
- }
20
- const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
21
- const initValue = defaultFn();
22
- config.array.push({
23
- callback: getSetMethod,
24
- lastValue: initValue,
25
- defaultValue: initValue,
26
- });
27
- return initValue;
28
- }
29
- export function state(defaultValue) {
30
- console.log('----------------');
31
- const config = setUse.memory.stateConfig;
32
- let getSetMethod;
33
- const restate = config.rearray[config.array.length];
34
- if (restate) {
35
- let oldValue = getStateValue(restate);
36
- getSetMethod = (x => [oldValue, oldValue = x]);
37
- const push = {
38
- callback: getSetMethod,
39
- lastValue: oldValue,
40
- defaultValue: restate.defaultValue,
41
- };
42
- config.array.push(push);
43
- return (y) => {
44
- push.callback = y || (x => [oldValue, oldValue = x]);
45
- return oldValue;
46
- };
47
- }
48
- const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
49
- let initValue = defaultFn();
50
- getSetMethod = (x => [initValue, initValue = x]);
51
- const push = {
52
- callback: getSetMethod,
53
- lastValue: initValue,
54
- defaultValue: initValue,
55
- };
56
- config.array.push(push);
8
+ export function makeStateResult(initValue, push) {
57
9
  // return initValue
58
- return (y) => {
10
+ const result = (y) => {
59
11
  push.callback = y || (x => [initValue, initValue = x]);
60
12
  return initValue;
61
13
  };
14
+ return result;
15
+ }
16
+ const waitingStates = [];
17
+ export function onNextStateOnly(callback) {
18
+ const config = setUse.memory.stateConfig;
19
+ if (!config.rearray.length) {
20
+ callback();
21
+ return;
22
+ }
23
+ waitingStates.push(callback);
62
24
  }
63
25
  setUse({
64
26
  beforeRender: (tagSupport) => initState(tagSupport),
65
27
  beforeRedraw: (tagSupport) => initState(tagSupport),
66
- afterRender: (tagSupport, tag) => {
28
+ afterRender: (tagSupport) => {
67
29
  const state = tagSupport.memory.state;
68
30
  const config = setUse.memory.stateConfig;
69
31
  if (config.rearray.length) {
70
32
  if (config.rearray.length !== config.array.length) {
71
33
  const message = `States lengths mismatched ${config.rearray.length} !== ${config.array.length}`;
72
- console.error(message, {
34
+ const error = new StateMismatchError(message, {
73
35
  oldStates: config.array,
74
36
  newStates: config.rearray,
75
37
  component: tagSupport.templater?.wrapper.original
76
38
  });
77
- throw new Error(message);
39
+ throw error;
78
40
  }
79
41
  }
80
- // config.rearray.length = 0 // clean up any previous runs
81
42
  config.rearray = []; // clean up any previous runs
82
- // state.newest.length = 0
83
- // state.newest.push(...config.array) as any
84
43
  state.newest = [...config.array];
85
44
  // config.array.length = 0
86
45
  config.array = [];
46
+ waitingStates.forEach(callback => callback());
47
+ waitingStates.length = 0;
87
48
  }
88
49
  });
89
50
  export function getStateValue(
@@ -97,11 +58,11 @@ state) {
97
58
  const [oldValue] = oldState;
98
59
  const [checkValue] = callback(oldValue); // set back to original value
99
60
  if (checkValue !== StateEchoBack) {
100
- const message = 'State property not used correctly.\n\n' +
101
- 'For "let" state use `let name = state(default, x => [name, name = x])`\n\n' +
102
- 'For "const" state use `const name = state(default)`\n\n' +
103
- 'Problem function:\n' + state + '\n';
104
- // console.error(message, {callback, oldState, oldValue, checkValue})
61
+ const message = 'State property not used correctly. Second item in array is not setting value as expected.\n\n' +
62
+ 'For "let" state use `let name = state(default)(x => [name, name = x])`\n\n' +
63
+ 'For "const" state use `const name = state(default)()`\n\n' +
64
+ 'Problem state:\n' + (callback ? callback.toString() : JSON.stringify(state)) + '\n';
65
+ console.error(message, { state, callback, oldState, oldValue, checkValue });
105
66
  throw new Error(message);
106
67
  }
107
68
  return oldValue;
@@ -111,14 +72,21 @@ export class StateEchoBack {
111
72
  function initState(tagSupport) {
112
73
  const state = tagSupport.memory.state;
113
74
  const config = setUse.memory.stateConfig;
75
+ // TODO: This guard may no longer be needed
114
76
  if (config.rearray.length) {
115
77
  const message = 'last array not cleared';
116
78
  console.error(message, {
117
79
  config,
118
80
  component: tagSupport.templater?.wrapper.original,
119
81
  state,
82
+ expectedClearArray: config.rearray,
83
+ });
84
+ throw new StateMismatchError(message, {
85
+ config,
86
+ component: tagSupport.templater?.wrapper.original,
87
+ state,
88
+ expectedClearArray: config.rearray,
120
89
  });
121
- throw message;
122
90
  }
123
91
  // TODO: this maybe redundant and not needed
124
92
  config.rearray = []; // .length = 0
@@ -126,4 +94,32 @@ function initState(tagSupport) {
126
94
  config.rearray.push(...state.newest);
127
95
  }
128
96
  }
129
- //# sourceMappingURL=state.js.map
97
+ /** Used for variables that need to remain the same variable during render passes */
98
+ export function set(defaultValue) {
99
+ const config = setUse.memory.stateConfig;
100
+ let getSetMethod;
101
+ const restate = config.rearray[config.array.length];
102
+ if (restate) {
103
+ let oldValue = getStateValue(restate);
104
+ getSetMethod = ((x) => [oldValue, oldValue = x]);
105
+ const push = {
106
+ callback: getSetMethod,
107
+ lastValue: oldValue,
108
+ defaultValue: restate.defaultValue,
109
+ };
110
+ config.array.push(push);
111
+ return oldValue;
112
+ }
113
+ // State first time run
114
+ const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
115
+ let initValue = defaultFn();
116
+ getSetMethod = ((x) => [initValue, initValue = x]);
117
+ const push = {
118
+ callback: getSetMethod,
119
+ lastValue: initValue,
120
+ defaultValue: initValue,
121
+ };
122
+ config.array.push(push);
123
+ return initValue;
124
+ }
125
+ //# sourceMappingURL=set.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.function.js","sourceRoot":"","sources":["../ts/set.function.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { GetSet } from "./set.function.js";
2
+ /** Used for variables that need to remain the same variable during render passes */
3
+ export declare function setLet<T>(defaultValue: T | (() => T)): ((getSet: GetSet<T>) => T);
@@ -0,0 +1,31 @@
1
+ import { getStateValue, makeStateResult } from "./set.function.js";
2
+ import { setUse } from "./setUse.function.js";
3
+ /** Used for variables that need to remain the same variable during render passes */
4
+ export function setLet(defaultValue) {
5
+ const config = setUse.memory.stateConfig;
6
+ let getSetMethod;
7
+ const restate = config.rearray[config.array.length];
8
+ if (restate) {
9
+ let oldValue = getStateValue(restate);
10
+ getSetMethod = ((x) => [oldValue, oldValue = x]);
11
+ const push = {
12
+ callback: getSetMethod,
13
+ lastValue: oldValue,
14
+ defaultValue: restate.defaultValue,
15
+ };
16
+ config.array.push(push);
17
+ return makeStateResult(oldValue, push);
18
+ }
19
+ // State first time run
20
+ const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
21
+ let initValue = defaultFn();
22
+ getSetMethod = ((x) => [initValue, initValue = x]);
23
+ const push = {
24
+ callback: getSetMethod,
25
+ lastValue: initValue,
26
+ defaultValue: initValue,
27
+ };
28
+ config.array.push(push);
29
+ return makeStateResult(initValue, push);
30
+ }
31
+ //# sourceMappingURL=setLet.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setLet.function.js","sourceRoot":"","sources":["../ts/setLet.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,oFAAoF;AACpF,MAAM,UAAU,MAAM,CACpB,YAA2B;IAE3B,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAChD,IAAI,YAA4B,CAAA;IAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,IAAG,OAAO,EAAE,CAAC;QACX,IAAI,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAM,CAAA;QAE1C,YAAY,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAA;QACnD,MAAM,IAAI,GAAuB;YAC/B,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,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IACxC,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,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,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { GetSet } from "./set.function.js";
2
+ /** Used for variables that need to remain the same variable during render passes */
3
+ export declare function setProp<T>(getSet: GetSet<any>): T;
@@ -0,0 +1,34 @@
1
+ import { getStateValue } from "./set.function.js";
2
+ import { setUse } from "./setUse.function.js";
3
+ /** Used for variables that need to remain the same variable during render passes */
4
+ export function setProp(getSet) {
5
+ const config = setUse.memory.stateConfig;
6
+ const [propValue] = getSet(undefined);
7
+ getSet(propValue); // restore original value instead of undefined
8
+ const restate = config.rearray[config.array.length];
9
+ if (restate) {
10
+ let watchValue = restate.watch;
11
+ let oldValue = getStateValue(restate);
12
+ const push = {
13
+ callback: getSet,
14
+ lastValue: oldValue,
15
+ watch: restate.watch,
16
+ };
17
+ // has the prop value changed?
18
+ if (propValue != watchValue) {
19
+ push.watch = propValue;
20
+ oldValue = push.lastValue = propValue;
21
+ }
22
+ config.array.push(push);
23
+ getSet(oldValue);
24
+ return oldValue;
25
+ }
26
+ const push = {
27
+ callback: getSet,
28
+ lastValue: propValue,
29
+ watch: propValue,
30
+ };
31
+ config.array.push(push);
32
+ return propValue;
33
+ }
34
+ //# sourceMappingURL=setProp.function.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setProp.function.js","sourceRoot":"","sources":["../ts/setProp.function.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgD,aAAa,EAAmB,MAAM,mBAAmB,CAAA;AAChH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,oFAAoF;AACpF,MAAM,UAAU,OAAO,CACrB,MAAmB;IAEnB,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,WAAW,CAAA;IAEhD,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAc,CAAC,CAAA;IAC1C,MAAM,CAAC,SAAS,CAAC,CAAA,CAAC,8CAA8C;IAEhE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnD,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,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,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,6 +1,6 @@
1
1
  import { Tag } from "./Tag.class.js";
2
- import { TagSupport } from "./getTagSupport";
3
- import { Config } from "./state";
2
+ import { TagSupport } from "./TagSupport.class.js";
3
+ import { Config } from "./set.function.js";
4
4
  interface TagUse {
5
5
  beforeRender: (tagSupport: TagSupport, ownerTag: Tag) => void;
6
6
  beforeRedraw: (tagSupport: TagSupport, tag: Tag) => void;
package/js/state.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export type StateConfig = (x?: any) => [any, any];
2
- type StateConfigItem = {
3
- callback?: StateConfig;
1
+ export type StateConfig<T> = (x: T) => [T, T];
2
+ type StateConfigItem<T> = {
3
+ callback?: StateConfig<T>;
4
4
  lastValue?: any;
5
5
  defaultValue?: any;
6
6
  };
7
- export type StateConfigArray = StateConfigItem[];
7
+ export type StateConfigArray = StateConfigItem<any>[];
8
8
  export type Config = {
9
9
  array: StateConfigArray;
10
10
  rearray: StateConfigArray;
@@ -12,9 +12,11 @@ export type Config = {
12
12
  export type State = {
13
13
  newest: StateConfigArray;
14
14
  };
15
+ export type GetSet<T> = (y: T) => [T, T];
15
16
  /** Used for variables that need to remain the same variable during render passes */
16
- export declare function state<T>(defaultValue: T | (() => T)): (x?: (y: T) => [T, T]) => T;
17
- export declare function getStateValue(state: StateConfigItem): any;
17
+ export declare function state<T>(defaultValue: T | (() => T)): ((getSet?: GetSet<T>) => T);
18
+ export declare function onNextStateOnly(callback: () => unknown): void;
19
+ export declare function getStateValue<T>(state: StateConfigItem<T>): any;
18
20
  export declare class StateEchoBack {
19
21
  }
20
22
  export {};
package/js/state.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { StateMismatchError } from "./errors.js";
1
2
  import { setUse } from "./setUse.function.js";
2
3
  // TODO: rename
3
4
  setUse.memory.stateConfig = {
@@ -11,32 +12,43 @@ export function state(defaultValue) {
11
12
  const restate = config.rearray[config.array.length];
12
13
  if (restate) {
13
14
  let oldValue = getStateValue(restate);
14
- getSetMethod = (x => [oldValue, oldValue = x]);
15
+ getSetMethod = ((x) => [oldValue, oldValue = x]);
15
16
  const push = {
16
17
  callback: getSetMethod,
17
18
  lastValue: oldValue,
18
19
  defaultValue: restate.defaultValue,
19
20
  };
20
21
  config.array.push(push);
21
- return (y) => {
22
- push.callback = y || (x => [oldValue, oldValue = x]);
23
- return oldValue;
24
- };
22
+ return makeStateResult(oldValue, push);
25
23
  }
24
+ // State first time run
26
25
  const defaultFn = defaultValue instanceof Function ? defaultValue : () => defaultValue;
27
26
  let initValue = defaultFn();
28
- getSetMethod = (x => [initValue, initValue = x]);
27
+ getSetMethod = ((x) => [initValue, initValue = x]);
29
28
  const push = {
30
29
  callback: getSetMethod,
31
30
  lastValue: initValue,
32
31
  defaultValue: initValue,
33
32
  };
34
33
  config.array.push(push);
34
+ return makeStateResult(initValue, push);
35
+ }
36
+ function makeStateResult(initValue, push) {
35
37
  // return initValue
36
- return (y) => {
38
+ const result = (y) => {
37
39
  push.callback = y || (x => [initValue, initValue = x]);
38
40
  return initValue;
39
41
  };
42
+ return result;
43
+ }
44
+ const waitingStates = [];
45
+ export function onNextStateOnly(callback) {
46
+ const config = setUse.memory.stateConfig;
47
+ if (!config.rearray.length) {
48
+ callback();
49
+ return;
50
+ }
51
+ waitingStates.push(callback);
40
52
  }
41
53
  setUse({
42
54
  beforeRender: (tagSupport) => initState(tagSupport),
@@ -47,12 +59,12 @@ setUse({
47
59
  if (config.rearray.length) {
48
60
  if (config.rearray.length !== config.array.length) {
49
61
  const message = `States lengths mismatched ${config.rearray.length} !== ${config.array.length}`;
50
- console.error(message, {
62
+ const error = new StateMismatchError(message, {
51
63
  oldStates: config.array,
52
64
  newStates: config.rearray,
53
65
  component: tagSupport.templater?.wrapper.original
54
66
  });
55
- throw new Error(message);
67
+ throw error;
56
68
  }
57
69
  }
58
70
  // config.rearray.length = 0 // clean up any previous runs
@@ -62,6 +74,8 @@ setUse({
62
74
  state.newest = [...config.array];
63
75
  // config.array.length = 0
64
76
  config.array = [];
77
+ waitingStates.forEach(callback => callback());
78
+ waitingStates.length = 0;
65
79
  }
66
80
  });
67
81
  export function getStateValue(
@@ -75,11 +89,11 @@ state) {
75
89
  const [oldValue] = oldState;
76
90
  const [checkValue] = callback(oldValue); // set back to original value
77
91
  if (checkValue !== StateEchoBack) {
78
- const message = 'State property not used correctly.\n\n' +
79
- 'For "let" state use `let name = state(default, x => [name, name = x])`\n\n' +
80
- 'For "const" state use `const name = state(default)`\n\n' +
81
- 'Problem function:\n' + state + '\n';
82
- // console.error(message, {callback, oldState, oldValue, checkValue})
92
+ const message = 'State property not used correctly. Second item in array is not setting value as expected.\n\n' +
93
+ 'For "let" state use `let name = state(default)(x => [name, name = x])`\n\n' +
94
+ 'For "const" state use `const name = state(default)()`\n\n' +
95
+ 'Problem state:\n' + (callback ? callback.toString() : JSON.stringify(state)) + '\n';
96
+ console.error(message, { state, callback, oldState, oldValue, checkValue });
83
97
  throw new Error(message);
84
98
  }
85
99
  return oldValue;
@@ -96,8 +110,14 @@ function initState(tagSupport) {
96
110
  config,
97
111
  component: tagSupport.templater?.wrapper.original,
98
112
  state,
113
+ expectedClearArray: config.rearray,
114
+ });
115
+ throw new StateMismatchError(message, {
116
+ config,
117
+ component: tagSupport.templater?.wrapper.original,
118
+ state,
119
+ expectedClearArray: config.rearray,
99
120
  });
100
- throw message;
101
121
  }
102
122
  // TODO: this maybe redundant and not needed
103
123
  config.rearray = []; // .length = 0
package/js/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../ts/state.ts"],"names":[],"mappings":"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"}
package/js/tag.d.ts CHANGED
@@ -1,7 +1,12 @@
1
1
  import { Tag } from "./Tag.class.js";
2
- import { TagComponent } from "./templater.utils.js";
3
- export declare const tags: TagComponent[];
4
- export type TagEnv = {
5
- children?: Tag;
6
- };
7
- export declare function tag<T>(tagComponent: T | TagComponent): T;
2
+ import { ValueSubject } from "./ValueSubject.js";
3
+ export type TagChildren = ValueSubject<Tag[]>;
4
+ export type TagChildrenInput = Tag[] | Tag | TagChildren;
5
+ export type TagComponentArg<T extends any[]> = (...args: T) => Tag;
6
+ type FirstArgOptional<T extends any[]> = T['length'] extends 0 ? true : false;
7
+ export type TagComponentBase<T extends any[]> = (arg: FirstArgOptional<T> extends true ? (T[0] | void) : T[0], children?: TagChildrenInput) => Tag;
8
+ export declare const tags: TagComponentBase<any>[];
9
+ export type TagComponent = TagComponentBase<[any?, TagChildren?]> | TagComponentBase<[]>;
10
+ /** Wraps a tag component in a state manager and always push children to last argument as any array */
11
+ export declare function tag<T extends any[]>(tagComponent: TagComponentArg<T>): (TagComponentBase<T>);
12
+ export {};
package/js/tag.js CHANGED
@@ -1,23 +1,81 @@
1
- import { isTagInstance } from "./isInstance.js";
1
+ import { isSubjectInstance, isTagArray, isTagInstance } from "./isInstance.js";
2
2
  import { setUse } from "./setUse.function.js";
3
- import { TemplaterResult, getNewProps } from "./templater.utils.js";
3
+ import { TemplaterResult, alterProps } from "./templater.utils.js";
4
+ import { ValueSubject } from "./ValueSubject.js";
5
+ import { runTagCallback } from "./bindSubjectCallback.function.js";
6
+ import { deepClone } from "./deepFunctions.js";
7
+ import { TagSupport } from "./TagSupport.class.js";
4
8
  export const tags = [];
5
9
  let tagCount = 0;
10
+ /** Wraps a tag component in a state manager and always push children to last argument as any array */
11
+ // export function tag<T>(a: T): T;
6
12
  export function tag(tagComponent) {
7
13
  const result = (function tagWrapper(props, children) {
8
- const isPropTag = isTagInstance(props);
9
- const templater = new TemplaterResult(props);
10
- const newProps = getNewProps(props, templater);
11
- let argProps = newProps;
14
+ const isPropTag = isTagInstance(props) || isTagArray(props);
12
15
  if (isPropTag) {
13
16
  children = props;
14
- argProps = noPropsGiven;
17
+ props = undefined;
15
18
  }
19
+ const { childSubject, madeSubject } = kidsToTagArraySubject(children);
20
+ childSubject.isChildSubject = true;
21
+ const templater = new TemplaterResult(props, childSubject);
16
22
  function innerTagWrap() {
17
23
  const originalFunction = innerTagWrap.original;
18
- const props = templater.tagSupport.props; // argProps
19
- const tag = originalFunction(props, children);
20
- tag.setSupport(templater.tagSupport);
24
+ const oldTagSetup = templater.tagSupport;
25
+ const oldest = templater.oldest;
26
+ let props = oldTagSetup.propsConfig.latest;
27
+ let castedProps = alterProps(props, templater);
28
+ // CALL ORIGINAL COMPONENT FUNCTION
29
+ const tag = originalFunction(castedProps, childSubject);
30
+ if (oldTagSetup.mutatingRender === TagSupport.prototype.mutatingRender) {
31
+ oldTagSetup.oldest = tag;
32
+ // tag.tagSupport = oldTagSetup
33
+ oldTagSetup.mutatingRender = () => {
34
+ const exit = oldTagSetup.renderExistingTag(tag, templater);
35
+ if (exit) {
36
+ return tag;
37
+ }
38
+ if (tag.ownerTag) {
39
+ const newest = tag.ownerTag.tagSupport.render();
40
+ tag.ownerTag.tagSupport.newest = newest;
41
+ return tag;
42
+ }
43
+ return tag;
44
+ };
45
+ }
46
+ tag.tagSupport = new TagSupport(templater, oldTagSetup.children);
47
+ const clonedProps = deepClone(castedProps); // castedProps
48
+ tag.tagSupport.propsConfig = {
49
+ latest: props, // castedProps
50
+ latestCloned: clonedProps,
51
+ clonedProps: clonedProps,
52
+ lastClonedKidValues: tag.tagSupport.propsConfig.lastClonedKidValues,
53
+ };
54
+ tag.tagSupport.memory = oldTagSetup.memory;
55
+ tag.tagSupport.mutatingRender = oldTagSetup.mutatingRender;
56
+ oldTagSetup.newest = tag;
57
+ oldTagSetup.propsConfig = { ...tag.tagSupport.propsConfig };
58
+ if (oldest) {
59
+ oldest.tagSupport.propsConfig = { ...tag.tagSupport.propsConfig };
60
+ }
61
+ if (madeSubject) {
62
+ childSubject.value.forEach(kid => {
63
+ kid.values.forEach((value, index) => {
64
+ if (!(value instanceof Function)) {
65
+ return;
66
+ }
67
+ if (kid.values[index].isChildOverride) {
68
+ return; // already overwritten
69
+ }
70
+ // all functions need to report to me
71
+ kid.values[index] = function (...args) {
72
+ runTagCallback(value, tag.ownerTag, this, args);
73
+ // runTagCallback(value, tag, this, args)
74
+ };
75
+ kid.values[index].isChildOverride = true;
76
+ });
77
+ });
78
+ }
21
79
  return tag;
22
80
  }
23
81
  innerTagWrap.original = tagComponent;
@@ -31,6 +89,21 @@ export function tag(tagComponent) {
31
89
  tags.push(tagComponent);
32
90
  return result;
33
91
  }
92
+ function kidsToTagArraySubject(children) {
93
+ if (isSubjectInstance(children)) {
94
+ return { childSubject: children, madeSubject: false };
95
+ }
96
+ const kidArray = children;
97
+ if (isTagArray(kidArray)) {
98
+ return { childSubject: new ValueSubject(children), madeSubject: true };
99
+ }
100
+ const kid = children;
101
+ if (kid) {
102
+ kid.arrayValue = 0;
103
+ return { childSubject: new ValueSubject([kid]), madeSubject: true };
104
+ }
105
+ return { childSubject: new ValueSubject([]), madeSubject: true };
106
+ }
34
107
  function updateResult(result, tagComponent) {
35
108
  result.isTag = true;
36
109
  result.original = tagComponent;
@@ -38,7 +111,7 @@ function updateResult(result, tagComponent) {
38
111
  function updateComponent(tagComponent) {
39
112
  tagComponent.tags = tags;
40
113
  tagComponent.setUse = setUse;
41
- tagComponent.tagIndex = ++tagCount;
114
+ tagComponent.tagIndex = ++tagCount; // needed for things like HMR
42
115
  }
43
116
  class NoPropsGiven {
44
117
  }
package/js/tag.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,OAAO,EAAgB,eAAe,EAAW,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAE1F,MAAM,CAAC,MAAM,IAAI,GAAmB,EAAE,CAAA;AAEtC,IAAI,QAAQ,GAAG,CAAC,CAAA;AAWhB,MAAM,UAAU,GAAG,CACjB,YAA8B;IAE9B,MAAM,MAAM,GAAG,CAAC,SAAS,UAAU,CACjC,KAA8B,EAC9B,QAAc;QAEd,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QACtC,MAAM,SAAS,GAAoB,IAAI,eAAe,CAAC,KAAK,CAAC,CAAA;QAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAE9C,IAAI,QAAQ,GAAG,QAAQ,CAAA;QACvB,IAAG,SAAS,EAAE,CAAC;YACb,QAAQ,GAAG,KAAY,CAAA;YACvB,QAAQ,GAAG,YAAY,CAAA;QACzB,CAAC;QAED,SAAS,YAAY;YACnB,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAwB,CAAA;YAC9D,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAA,CAAC,WAAW;YACpD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YAC7C,GAAG,CAAC,UAAU,CAAE,SAAS,CAAC,UAAU,CAAE,CAAA;YACtC,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,YAAY,CAAC,QAAQ,GAAG,YAAY,CAAA;QAGpC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;QACvB,SAAS,CAAC,OAAO,GAAG,YAAuB,CAAA;QAE3C,OAAO,SAAS,CAAA;IAClB,CAAC,CAAM,CAAA,CAAC,4EAA4E;IAEpF,YAAY,CAAC,MAAM,EAAE,YAA4B,CAAC,CAAA;IAElD,0CAA0C;IAC1C,eAAe,CAAC,YAAY,CAAC,CAAA;IAC7B,IAAI,CAAC,IAAI,CAAC,YAA4B,CAAC,CAAA;IAEvC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CACnB,MAAW,EACX,YAA0B;IAE1B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAA;AAChC,CAAC;AAED,SAAS,eAAe,CACtB,YAAiB;IAEjB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAA;IACxB,YAAY,CAAC,MAAM,GAAG,MAAM,CAAA;IAC5B,YAAY,CAAC,QAAQ,GAAG,EAAE,QAAQ,CAAA;AACpC,CAAC;AACD,MAAM,YAAY;CAAG;AACrB,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"tag.js","sourceRoot":"","sources":["../ts/tag.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
- import { TagSupport } from "./getTagSupport.js";
2
- import { TagComponent, TemplaterResult } from "./templater.utils.js";
1
+ import { TagSupport } from "./TagSupport.class.js";
2
+ import { TemplaterResult } from "./templater.utils.js";
3
3
  import { Tag } from "./Tag.class.js";
4
+ import { TagComponent } from "./tag.js";
4
5
  export declare function tagElement(app: TagComponent, // (...args: unknown[]) => TemplaterResult,
5
6
  element: HTMLElement | Element, props: unknown): {
6
7
  tag: Tag;