vscroll 1.5.3 → 1.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 (335) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +283 -273
  3. package/dist/bundles/vscroll.esm5.js +5558 -5525
  4. package/dist/bundles/vscroll.esm5.js.map +1 -1
  5. package/dist/bundles/vscroll.esm5.min.js +2 -2
  6. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.js +5045 -5015
  8. package/dist/bundles/vscroll.esm6.js.map +1 -1
  9. package/dist/bundles/vscroll.esm6.min.js +2 -2
  10. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.js +5559 -5526
  12. package/dist/bundles/vscroll.umd.js.map +1 -1
  13. package/dist/bundles/vscroll.umd.min.js +2 -2
  14. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/context.js +43 -43
  16. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/props.js +268 -268
  18. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  19. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  20. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  21. package/dist/esm2015/classes/adapter.js +455 -442
  22. package/dist/esm2015/classes/adapter.js.map +1 -1
  23. package/dist/esm2015/classes/buffer/cache.js +246 -246
  24. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  25. package/dist/esm2015/classes/buffer/checkCall.js +48 -48
  26. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  27. package/dist/esm2015/classes/buffer/defaultSize.js +127 -127
  28. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  29. package/dist/esm2015/classes/buffer.js +342 -342
  30. package/dist/esm2015/classes/buffer.js.map +1 -1
  31. package/dist/esm2015/classes/datasource.js +28 -28
  32. package/dist/esm2015/classes/domRoutines.js +166 -166
  33. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  34. package/dist/esm2015/classes/item.js +61 -61
  35. package/dist/esm2015/classes/item.js.map +1 -1
  36. package/dist/esm2015/classes/logger.js +186 -186
  37. package/dist/esm2015/classes/logger.js.map +1 -1
  38. package/dist/esm2015/classes/paddings.js +72 -72
  39. package/dist/esm2015/classes/reactive.js +54 -54
  40. package/dist/esm2015/classes/reactive.js.map +1 -1
  41. package/dist/esm2015/classes/settings.js +39 -39
  42. package/dist/esm2015/classes/settings.js.map +1 -1
  43. package/dist/esm2015/classes/state/clip.js +16 -16
  44. package/dist/esm2015/classes/state/clip.js.map +1 -1
  45. package/dist/esm2015/classes/state/cycle.js +60 -60
  46. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  47. package/dist/esm2015/classes/state/fetch.js +122 -122
  48. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  49. package/dist/esm2015/classes/state/render.js +14 -14
  50. package/dist/esm2015/classes/state/render.js.map +1 -1
  51. package/dist/esm2015/classes/state/scroll.js +30 -30
  52. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  53. package/dist/esm2015/classes/state.js +59 -59
  54. package/dist/esm2015/classes/viewport.js +72 -72
  55. package/dist/esm2015/classes/viewport.js.map +1 -1
  56. package/dist/esm2015/index.js +8 -8
  57. package/dist/esm2015/index.js.map +1 -1
  58. package/dist/esm2015/inputs/adapter.js +230 -230
  59. package/dist/esm2015/inputs/adapter.js.map +1 -1
  60. package/dist/esm2015/inputs/common.js +11 -11
  61. package/dist/esm2015/inputs/common.js.map +1 -1
  62. package/dist/esm2015/inputs/datasource.js +20 -20
  63. package/dist/esm2015/inputs/datasource.js.map +1 -1
  64. package/dist/esm2015/inputs/index.js +6 -6
  65. package/dist/esm2015/inputs/index.js.map +1 -1
  66. package/dist/esm2015/inputs/settings.js +146 -146
  67. package/dist/esm2015/inputs/settings.js.map +1 -1
  68. package/dist/esm2015/inputs/validation.js +374 -374
  69. package/dist/esm2015/inputs/validation.js.map +1 -1
  70. package/dist/esm2015/interfaces/adapter.js +1 -1
  71. package/dist/esm2015/interfaces/datasource.js +1 -1
  72. package/dist/esm2015/interfaces/datasource.js.map +1 -1
  73. package/dist/esm2015/interfaces/index.js +1 -1
  74. package/dist/esm2015/interfaces/index.js.map +1 -1
  75. package/dist/esm2015/interfaces/item.js +1 -1
  76. package/dist/esm2015/interfaces/item.js.map +1 -1
  77. package/dist/esm2015/interfaces/process.js +1 -1
  78. package/dist/esm2015/interfaces/routines.js +1 -1
  79. package/dist/esm2015/interfaces/routines.js.map +1 -1
  80. package/dist/esm2015/interfaces/settings.js +1 -1
  81. package/dist/esm2015/interfaces/state.js +1 -1
  82. package/dist/esm2015/interfaces/validation.js +1 -1
  83. package/dist/esm2015/interfaces/validation.js.map +1 -1
  84. package/dist/esm2015/interfaces/workflow.js +1 -1
  85. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  86. package/dist/esm2015/processes/adapter/append.js +35 -35
  87. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  88. package/dist/esm2015/processes/adapter/check.js +32 -32
  89. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  90. package/dist/esm2015/processes/adapter/clip.js +12 -12
  91. package/dist/esm2015/processes/adapter/clip.js.map +1 -1
  92. package/dist/esm2015/processes/adapter/fix.js +77 -77
  93. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  94. package/dist/esm2015/processes/adapter/insert.js +73 -73
  95. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  96. package/dist/esm2015/processes/adapter/reload.js +19 -20
  97. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  98. package/dist/esm2015/processes/adapter/remove.js +102 -102
  99. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  100. package/dist/esm2015/processes/adapter/replace.js +39 -39
  101. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  102. package/dist/esm2015/processes/adapter/reset.js +35 -35
  103. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  104. package/dist/esm2015/processes/adapter/update.js +43 -43
  105. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  106. package/dist/esm2015/processes/adjust.js +141 -141
  107. package/dist/esm2015/processes/clip.js +49 -49
  108. package/dist/esm2015/processes/end.js +52 -52
  109. package/dist/esm2015/processes/end.js.map +1 -1
  110. package/dist/esm2015/processes/fetch.js +91 -90
  111. package/dist/esm2015/processes/fetch.js.map +1 -1
  112. package/dist/esm2015/processes/index.js +23 -23
  113. package/dist/esm2015/processes/init.js +14 -14
  114. package/dist/esm2015/processes/init.js.map +1 -1
  115. package/dist/esm2015/processes/misc/base.js +30 -30
  116. package/dist/esm2015/processes/misc/base.js.map +1 -1
  117. package/dist/esm2015/processes/misc/enums.js +35 -35
  118. package/dist/esm2015/processes/misc/enums.js.map +1 -1
  119. package/dist/esm2015/processes/misc/index.js +2 -2
  120. package/dist/esm2015/processes/misc/index.js.map +1 -1
  121. package/dist/esm2015/processes/postFetch.js +64 -64
  122. package/dist/esm2015/processes/postFetch.js.map +1 -1
  123. package/dist/esm2015/processes/preClip.js +85 -85
  124. package/dist/esm2015/processes/preClip.js.map +1 -1
  125. package/dist/esm2015/processes/preFetch.js +240 -240
  126. package/dist/esm2015/processes/preFetch.js.map +1 -1
  127. package/dist/esm2015/processes/render.js +54 -54
  128. package/dist/esm2015/processes/render.js.map +1 -1
  129. package/dist/esm2015/processes/scroll.js +97 -97
  130. package/dist/esm2015/processes/scroll.js.map +1 -1
  131. package/dist/esm2015/processes/start.js +11 -11
  132. package/dist/esm2015/processes/start.js.map +1 -1
  133. package/dist/esm2015/scroller.js +76 -69
  134. package/dist/esm2015/scroller.js.map +1 -1
  135. package/dist/esm2015/version.js +4 -4
  136. package/dist/esm2015/version.js.map +1 -1
  137. package/dist/esm2015/workflow-transducer.js +210 -210
  138. package/dist/esm2015/workflow-transducer.js.map +1 -1
  139. package/dist/esm2015/workflow.js +161 -151
  140. package/dist/esm2015/workflow.js.map +1 -1
  141. package/dist/esm5/classes/adapter/context.js +50 -50
  142. package/dist/esm5/classes/adapter/context.js.map +1 -1
  143. package/dist/esm5/classes/adapter/props.js +268 -268
  144. package/dist/esm5/classes/adapter/props.js.map +1 -1
  145. package/dist/esm5/classes/adapter/wanted.js +29 -29
  146. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  147. package/dist/esm5/classes/adapter.js +504 -490
  148. package/dist/esm5/classes/adapter.js.map +1 -1
  149. package/dist/esm5/classes/buffer/cache.js +260 -260
  150. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  151. package/dist/esm5/classes/buffer/checkCall.js +56 -56
  152. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  153. package/dist/esm5/classes/buffer/defaultSize.js +145 -145
  154. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  155. package/dist/esm5/classes/buffer.js +409 -409
  156. package/dist/esm5/classes/buffer.js.map +1 -1
  157. package/dist/esm5/classes/datasource.js +37 -37
  158. package/dist/esm5/classes/domRoutines.js +182 -182
  159. package/dist/esm5/classes/domRoutines.js.map +1 -1
  160. package/dist/esm5/classes/item.js +76 -76
  161. package/dist/esm5/classes/item.js.map +1 -1
  162. package/dist/esm5/classes/logger.js +210 -210
  163. package/dist/esm5/classes/logger.js.map +1 -1
  164. package/dist/esm5/classes/paddings.js +80 -80
  165. package/dist/esm5/classes/reactive.js +69 -69
  166. package/dist/esm5/classes/reactive.js.map +1 -1
  167. package/dist/esm5/classes/settings.js +47 -47
  168. package/dist/esm5/classes/settings.js.map +1 -1
  169. package/dist/esm5/classes/state/clip.js +22 -22
  170. package/dist/esm5/classes/state/clip.js.map +1 -1
  171. package/dist/esm5/classes/state/cycle.js +75 -75
  172. package/dist/esm5/classes/state/cycle.js.map +1 -1
  173. package/dist/esm5/classes/state/fetch.js +148 -148
  174. package/dist/esm5/classes/state/fetch.js.map +1 -1
  175. package/dist/esm5/classes/state/render.js +20 -20
  176. package/dist/esm5/classes/state/render.js.map +1 -1
  177. package/dist/esm5/classes/state/scroll.js +32 -32
  178. package/dist/esm5/classes/state/scroll.js.map +1 -1
  179. package/dist/esm5/classes/state.js +66 -66
  180. package/dist/esm5/classes/viewport.js +79 -79
  181. package/dist/esm5/classes/viewport.js.map +1 -1
  182. package/dist/esm5/index.js +8 -8
  183. package/dist/esm5/index.js.map +1 -1
  184. package/dist/esm5/inputs/adapter.js +231 -231
  185. package/dist/esm5/inputs/adapter.js.map +1 -1
  186. package/dist/esm5/inputs/common.js +11 -11
  187. package/dist/esm5/inputs/common.js.map +1 -1
  188. package/dist/esm5/inputs/datasource.js +21 -21
  189. package/dist/esm5/inputs/datasource.js.map +1 -1
  190. package/dist/esm5/inputs/index.js +6 -6
  191. package/dist/esm5/inputs/index.js.map +1 -1
  192. package/dist/esm5/inputs/settings.js +147 -147
  193. package/dist/esm5/inputs/settings.js.map +1 -1
  194. package/dist/esm5/inputs/validation.js +396 -396
  195. package/dist/esm5/inputs/validation.js.map +1 -1
  196. package/dist/esm5/interfaces/adapter.js +1 -1
  197. package/dist/esm5/interfaces/datasource.js +1 -1
  198. package/dist/esm5/interfaces/datasource.js.map +1 -1
  199. package/dist/esm5/interfaces/index.js +1 -1
  200. package/dist/esm5/interfaces/index.js.map +1 -1
  201. package/dist/esm5/interfaces/item.js +1 -1
  202. package/dist/esm5/interfaces/item.js.map +1 -1
  203. package/dist/esm5/interfaces/process.js +1 -1
  204. package/dist/esm5/interfaces/routines.js +1 -1
  205. package/dist/esm5/interfaces/routines.js.map +1 -1
  206. package/dist/esm5/interfaces/settings.js +1 -1
  207. package/dist/esm5/interfaces/state.js +1 -1
  208. package/dist/esm5/interfaces/validation.js +1 -1
  209. package/dist/esm5/interfaces/validation.js.map +1 -1
  210. package/dist/esm5/interfaces/workflow.js +1 -1
  211. package/dist/esm5/interfaces/workflow.js.map +1 -1
  212. package/dist/esm5/processes/adapter/append.js +43 -43
  213. package/dist/esm5/processes/adapter/append.js.map +1 -1
  214. package/dist/esm5/processes/adapter/check.js +39 -39
  215. package/dist/esm5/processes/adapter/check.js.map +1 -1
  216. package/dist/esm5/processes/adapter/clip.js +19 -19
  217. package/dist/esm5/processes/adapter/clip.js.map +1 -1
  218. package/dist/esm5/processes/adapter/fix.js +89 -89
  219. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  220. package/dist/esm5/processes/adapter/insert.js +81 -81
  221. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  222. package/dist/esm5/processes/adapter/reload.js +26 -27
  223. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  224. package/dist/esm5/processes/adapter/remove.js +115 -115
  225. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  226. package/dist/esm5/processes/adapter/replace.js +47 -47
  227. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  228. package/dist/esm5/processes/adapter/reset.js +42 -42
  229. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  230. package/dist/esm5/processes/adapter/update.js +59 -59
  231. package/dist/esm5/processes/adapter/update.js.map +1 -1
  232. package/dist/esm5/processes/adjust.js +152 -152
  233. package/dist/esm5/processes/clip.js +60 -60
  234. package/dist/esm5/processes/end.js +63 -63
  235. package/dist/esm5/processes/end.js.map +1 -1
  236. package/dist/esm5/processes/fetch.js +102 -101
  237. package/dist/esm5/processes/fetch.js.map +1 -1
  238. package/dist/esm5/processes/index.js +23 -23
  239. package/dist/esm5/processes/init.js +21 -21
  240. package/dist/esm5/processes/init.js.map +1 -1
  241. package/dist/esm5/processes/misc/base.js +44 -44
  242. package/dist/esm5/processes/misc/base.js.map +1 -1
  243. package/dist/esm5/processes/misc/enums.js +35 -35
  244. package/dist/esm5/processes/misc/enums.js.map +1 -1
  245. package/dist/esm5/processes/misc/index.js +2 -2
  246. package/dist/esm5/processes/misc/index.js.map +1 -1
  247. package/dist/esm5/processes/postFetch.js +73 -73
  248. package/dist/esm5/processes/postFetch.js.map +1 -1
  249. package/dist/esm5/processes/preClip.js +94 -94
  250. package/dist/esm5/processes/preClip.js.map +1 -1
  251. package/dist/esm5/processes/preFetch.js +247 -247
  252. package/dist/esm5/processes/preFetch.js.map +1 -1
  253. package/dist/esm5/processes/render.js +63 -63
  254. package/dist/esm5/processes/render.js.map +1 -1
  255. package/dist/esm5/processes/scroll.js +107 -107
  256. package/dist/esm5/processes/scroll.js.map +1 -1
  257. package/dist/esm5/processes/start.js +18 -18
  258. package/dist/esm5/processes/start.js.map +1 -1
  259. package/dist/esm5/scroller.js +82 -73
  260. package/dist/esm5/scroller.js.map +1 -1
  261. package/dist/esm5/version.js +4 -4
  262. package/dist/esm5/version.js.map +1 -1
  263. package/dist/esm5/workflow-transducer.js +212 -212
  264. package/dist/esm5/workflow-transducer.js.map +1 -1
  265. package/dist/esm5/workflow.js +186 -176
  266. package/dist/esm5/workflow.js.map +1 -1
  267. package/dist/typings/classes/adapter/context.d.ts +4 -4
  268. package/dist/typings/classes/adapter/props.d.ts +47 -47
  269. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  270. package/dist/typings/classes/adapter.d.ts +74 -64
  271. package/dist/typings/classes/buffer/cache.d.ts +95 -95
  272. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  273. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  274. package/dist/typings/classes/buffer.d.ts +64 -64
  275. package/dist/typings/classes/datasource.d.ts +27 -27
  276. package/dist/typings/classes/domRoutines.d.ts +33 -33
  277. package/dist/typings/classes/item.d.ts +28 -28
  278. package/dist/typings/classes/logger.d.ts +28 -28
  279. package/dist/typings/classes/paddings.d.ts +22 -22
  280. package/dist/typings/classes/reactive.d.ts +21 -21
  281. package/dist/typings/classes/settings.d.ts +119 -119
  282. package/dist/typings/classes/state/clip.d.ts +9 -9
  283. package/dist/typings/classes/state/cycle.d.ts +29 -29
  284. package/dist/typings/classes/state/fetch.d.ts +62 -62
  285. package/dist/typings/classes/state/render.d.ts +9 -9
  286. package/dist/typings/classes/state/scroll.d.ts +16 -16
  287. package/dist/typings/classes/state.d.ts +27 -27
  288. package/dist/typings/classes/viewport.d.ts +32 -32
  289. package/dist/typings/index.d.ts +9 -9
  290. package/dist/typings/inputs/adapter.d.ts +5 -5
  291. package/dist/typings/inputs/common.d.ts +9 -9
  292. package/dist/typings/inputs/datasource.d.ts +7 -7
  293. package/dist/typings/inputs/index.d.ts +6 -6
  294. package/dist/typings/inputs/settings.d.ts +41 -41
  295. package/dist/typings/inputs/validation.d.ts +83 -83
  296. package/dist/typings/interfaces/adapter.d.ts +156 -156
  297. package/dist/typings/interfaces/datasource.d.ts +26 -26
  298. package/dist/typings/interfaces/index.d.ts +10 -10
  299. package/dist/typings/interfaces/item.d.ts +8 -8
  300. package/dist/typings/interfaces/process.d.ts +35 -35
  301. package/dist/typings/interfaces/routines.d.ts +157 -157
  302. package/dist/typings/interfaces/settings.d.ts +31 -31
  303. package/dist/typings/interfaces/state.d.ts +22 -22
  304. package/dist/typings/interfaces/validation.d.ts +33 -33
  305. package/dist/typings/interfaces/workflow.d.ts +53 -53
  306. package/dist/typings/processes/adapter/append.d.ts +14 -14
  307. package/dist/typings/processes/adapter/check.d.ts +6 -6
  308. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  309. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  310. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  311. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  312. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  313. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  314. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  315. package/dist/typings/processes/adapter/update.d.ts +8 -8
  316. package/dist/typings/processes/adjust.d.ts +10 -10
  317. package/dist/typings/processes/clip.d.ts +7 -7
  318. package/dist/typings/processes/end.d.ts +10 -10
  319. package/dist/typings/processes/fetch.d.ts +18 -18
  320. package/dist/typings/processes/index.d.ts +23 -23
  321. package/dist/typings/processes/init.d.ts +7 -7
  322. package/dist/typings/processes/misc/base.d.ts +4 -4
  323. package/dist/typings/processes/misc/enums.d.ts +32 -32
  324. package/dist/typings/processes/misc/index.d.ts +2 -2
  325. package/dist/typings/processes/postFetch.d.ts +8 -8
  326. package/dist/typings/processes/preClip.d.ts +12 -12
  327. package/dist/typings/processes/preFetch.d.ts +17 -17
  328. package/dist/typings/processes/render.d.ts +9 -9
  329. package/dist/typings/processes/scroll.d.ts +13 -13
  330. package/dist/typings/processes/start.d.ts +6 -6
  331. package/dist/typings/scroller.d.ts +26 -26
  332. package/dist/typings/version.d.ts +5 -5
  333. package/dist/typings/workflow-transducer.d.ts +2 -2
  334. package/dist/typings/workflow.d.ts +29 -28
  335. package/package.json +68 -68
@@ -1,177 +1,187 @@
1
- import { __read, __spreadArray } from "tslib";
2
- import { Scroller } from './scroller';
3
- import { runStateMachine } from './workflow-transducer';
4
- import { Reactive } from './classes/reactive';
5
- import { CommonProcess, ProcessStatus as Status, } from './processes/index';
6
- var Workflow = /** @class */ (function () {
7
- function Workflow(_a) {
8
- var _this = this;
9
- var element = _a.element, datasource = _a.datasource, consumer = _a.consumer, run = _a.run, Routines = _a.Routines;
10
- this.isInitialized = false;
11
- this.initTimer = null;
12
- this.adapterRun$ = new Reactive();
13
- this.cyclesDone = 0;
14
- this.interruptionCount = 0;
15
- this.errors = [];
16
- this.offScroll = function () { return null; };
17
- this.propagateChanges = run;
18
- this.stateMachineMethods = {
19
- run: this.runProcess(),
20
- interrupt: this.interrupt.bind(this),
21
- done: this.done.bind(this),
22
- onError: this.onError.bind(this)
23
- };
24
- this.scroller = new Scroller({
25
- element: element,
26
- datasource: datasource,
27
- consumer: consumer,
28
- workflow: this.getUpdater(),
29
- Routines: Routines
30
- });
31
- if (this.scroller.settings.initializeDelay) {
32
- this.initTimer = setTimeout(function () {
33
- _this.initTimer = null;
34
- _this.init();
35
- }, this.scroller.settings.initializeDelay);
36
- }
37
- else {
38
- this.init();
39
- }
40
- }
41
- Workflow.prototype.init = function () {
42
- var _this = this;
43
- this.scroller.init(this.adapterRun$);
44
- this.isInitialized = true;
45
- // run the Workflow
46
- this.callWorkflow({
47
- process: CommonProcess.init,
48
- status: Status.start
49
- });
50
- // set up scroll event listener
51
- var routines = this.scroller.routines;
52
- var onScrollHandler = function (event) { return _this.callWorkflow({
53
- process: CommonProcess.scroll,
54
- status: Status.start,
55
- payload: { event: event }
56
- }); };
57
- this.offScroll = routines.onScroll(onScrollHandler);
58
- };
59
- Workflow.prototype.changeItems = function (items) {
60
- this.propagateChanges(items);
61
- };
62
- Workflow.prototype.callWorkflow = function (processSubject) {
63
- if (!this.isInitialized) {
64
- return;
65
- }
66
- var process = processSubject.process, status = processSubject.status;
67
- if (process && process.startsWith('adapter') && status !== Status.next) {
68
- this.adapterRun$.set(processSubject);
69
- }
70
- this.process(processSubject);
71
- };
72
- Workflow.prototype.getUpdater = function () {
73
- return {
74
- call: this.callWorkflow.bind(this),
75
- onDataChanged: this.changeItems.bind(this),
76
- };
77
- };
78
- Workflow.prototype.process = function (data) {
79
- var status = data.status, process = data.process, payload = data.payload;
80
- if (this.scroller.settings.logProcessRun) {
81
- this.scroller.logger.log(function () { return __spreadArray(__spreadArray(__spreadArray([
82
- '%cfire%c'
83
- ], ['color: #cc7777;', 'color: #000000;'], false), [
84
- process,
85
- "\"".concat(status, "\"")
86
- ], false), __read((payload !== void 0 ? [payload] : [])), false); });
87
- }
88
- this.scroller.logger.logProcess(data);
89
- if (process === CommonProcess.end) {
90
- this.scroller.finalize();
91
- }
92
- runStateMachine({
93
- input: data,
94
- methods: this.stateMachineMethods
95
- });
96
- };
97
- Workflow.prototype.runProcess = function () {
98
- var _this = this;
99
- return function (_a) {
100
- var run = _a.run, process = _a.process, name = _a.name;
101
- return function () {
102
- var args = [];
103
- for (var _i = 0; _i < arguments.length; _i++) {
104
- args[_i] = arguments[_i];
105
- }
106
- if (_this.scroller.settings.logProcessRun) {
107
- _this.scroller.logger.log(function () { return __spreadArray(__spreadArray(__spreadArray([
108
- '%crun%c'
109
- ], ['color: #333399;', 'color: #000000;'], false), [
110
- process || name
111
- ], false), __read(args), false); });
112
- }
113
- run.apply(void 0, __spreadArray([_this.scroller], __read(args), false));
114
- };
115
- };
116
- };
117
- Workflow.prototype.onError = function (process, payload) {
118
- var message = payload && String(payload.error) || '';
119
- var _a = this.scroller.state, time = _a.time, cycle = _a.cycle;
120
- this.errors.push({
121
- process: process,
122
- message: message,
123
- time: time,
124
- loop: cycle.loopIdNext
125
- });
126
- this.scroller.logger.logError(message);
127
- };
128
- Workflow.prototype.interrupt = function (_a) {
129
- var _this = this;
130
- var process = _a.process, finalize = _a.finalize, datasource = _a.datasource;
131
- if (finalize) {
132
- var _b = this.scroller, workflow = _b.workflow, logger_1 = _b.logger;
133
- // we are going to create a new reference for the scroller.workflow object
134
- // calling the old version of the scroller.workflow by any outstanding async processes will be skipped
135
- workflow.call = function (p) {
136
- return logger_1.log('[skip wf call]');
137
- };
138
- workflow.call.interrupted = true;
139
- this.scroller.workflow = this.getUpdater();
140
- this.interruptionCount++;
141
- logger_1.log(function () { return "workflow had been interrupted by the ".concat(process, " process (").concat(_this.interruptionCount, ")"); });
142
- }
143
- if (datasource) { // Scroller re-initialization case
144
- this.scroller.adapter.relax(function () {
145
- _this.scroller.logger.log('new Scroller instantiation');
146
- var scroller = new Scroller({ datasource: datasource, scroller: _this.scroller });
147
- _this.scroller.dispose();
148
- _this.scroller = scroller;
149
- _this.scroller.init();
150
- });
151
- }
152
- };
153
- Workflow.prototype.done = function () {
154
- var _a = this.scroller, state = _a.state, logger = _a.logger;
155
- this.cyclesDone++;
156
- logger.logCycle(false);
157
- state.endWorkflowCycle(this.cyclesDone + 1);
158
- this.finalize();
159
- };
160
- Workflow.prototype.dispose = function () {
161
- var _this = this;
162
- if (this.initTimer) {
163
- clearTimeout(this.initTimer);
164
- }
165
- this.offScroll();
166
- this.adapterRun$.dispose();
167
- this.scroller.dispose(true);
168
- Object.getOwnPropertyNames(this).forEach(function (prop) {
169
- delete _this[prop];
170
- });
171
- };
172
- Workflow.prototype.finalize = function () {
173
- };
174
- return Workflow;
175
- }());
176
- export { Workflow };
1
+ import { __read, __spreadArray } from "tslib";
2
+ import { Scroller } from './scroller';
3
+ import { runStateMachine } from './workflow-transducer';
4
+ import { Reactive } from './classes/reactive';
5
+ import { CommonProcess, ProcessStatus as Status, } from './processes/index';
6
+ var Workflow = /** @class */ (function () {
7
+ function Workflow(_a) {
8
+ var _this = this;
9
+ var element = _a.element, datasource = _a.datasource, consumer = _a.consumer, run = _a.run, Routines = _a.Routines;
10
+ this.isInitialized = false;
11
+ this.disposed = false;
12
+ this.initTimer = null;
13
+ this.adapterRun$ = new Reactive();
14
+ this.cyclesDone = 0;
15
+ this.interruptionCount = 0;
16
+ this.errors = [];
17
+ this.offScroll = function () { return null; };
18
+ this.propagateChanges = run;
19
+ this.stateMachineMethods = {
20
+ run: this.runProcess(),
21
+ interrupt: this.interrupt.bind(this),
22
+ done: this.done.bind(this),
23
+ onError: this.onError.bind(this)
24
+ };
25
+ this.scroller = new Scroller({
26
+ element: element,
27
+ datasource: datasource,
28
+ consumer: consumer,
29
+ workflow: this.getUpdater(),
30
+ Routines: Routines
31
+ });
32
+ if (this.scroller.settings.initializeDelay) {
33
+ this.initTimer = setTimeout(function () {
34
+ _this.initTimer = null;
35
+ _this.init();
36
+ }, this.scroller.settings.initializeDelay);
37
+ }
38
+ else {
39
+ this.init();
40
+ }
41
+ }
42
+ Workflow.prototype.init = function () {
43
+ var _this = this;
44
+ this.scroller.init(this.adapterRun$);
45
+ // set up scroll event listener
46
+ var routines = this.scroller.routines;
47
+ var onScrollHandler = function (event) { return _this.callWorkflow({
48
+ process: CommonProcess.scroll,
49
+ status: Status.start,
50
+ payload: { event: event }
51
+ }); };
52
+ this.offScroll = routines.onScroll(onScrollHandler);
53
+ // run the Workflow
54
+ this.isInitialized = true;
55
+ this.callWorkflow({
56
+ process: CommonProcess.init,
57
+ status: Status.start
58
+ });
59
+ };
60
+ Workflow.prototype.changeItems = function (items) {
61
+ this.propagateChanges(items);
62
+ };
63
+ Workflow.prototype.callWorkflow = function (processSubject) {
64
+ if (!this.isInitialized) {
65
+ return;
66
+ }
67
+ var process = processSubject.process, status = processSubject.status;
68
+ if (process && process.startsWith('adapter') && status !== Status.next) {
69
+ this.adapterRun$.set(processSubject);
70
+ }
71
+ this.process(processSubject);
72
+ };
73
+ Workflow.prototype.getUpdater = function () {
74
+ return {
75
+ call: this.callWorkflow.bind(this),
76
+ onDataChanged: this.changeItems.bind(this),
77
+ };
78
+ };
79
+ Workflow.prototype.process = function (data) {
80
+ var status = data.status, process = data.process, payload = data.payload;
81
+ if (this.scroller.settings.logProcessRun) {
82
+ this.scroller.logger.log(function () { return __spreadArray(__spreadArray(__spreadArray([
83
+ '%cfire%c'
84
+ ], ['color: #cc7777;', 'color: #000000;'], false), [
85
+ process,
86
+ "\"".concat(status, "\"")
87
+ ], false), __read((payload !== void 0 ? [payload] : [])), false); });
88
+ }
89
+ this.scroller.logger.logProcess(data);
90
+ if (process === CommonProcess.end) {
91
+ this.scroller.finalize();
92
+ }
93
+ runStateMachine({
94
+ input: data,
95
+ methods: this.stateMachineMethods
96
+ });
97
+ };
98
+ Workflow.prototype.runProcess = function () {
99
+ var _this = this;
100
+ return function (_a) {
101
+ var run = _a.run, process = _a.process, name = _a.name;
102
+ return function () {
103
+ var args = [];
104
+ for (var _i = 0; _i < arguments.length; _i++) {
105
+ args[_i] = arguments[_i];
106
+ }
107
+ if (_this.scroller.settings.logProcessRun) {
108
+ _this.scroller.logger.log(function () { return __spreadArray(__spreadArray(__spreadArray([
109
+ '%crun%c'
110
+ ], ['color: #333399;', 'color: #000000;'], false), [
111
+ process || name
112
+ ], false), __read(args), false); });
113
+ }
114
+ run.apply(void 0, __spreadArray([_this.scroller], __read(args), false));
115
+ };
116
+ };
117
+ };
118
+ Workflow.prototype.onError = function (process, payload) {
119
+ var message = payload && String(payload.error) || '';
120
+ var _a = this.scroller.state, time = _a.time, cycle = _a.cycle;
121
+ this.errors.push({
122
+ process: process,
123
+ message: message,
124
+ time: time,
125
+ loop: cycle.loopIdNext
126
+ });
127
+ this.scroller.logger.logError(message);
128
+ };
129
+ Workflow.prototype.interrupt = function (_a) {
130
+ var _this = this;
131
+ var process = _a.process, finalize = _a.finalize, datasource = _a.datasource;
132
+ if (finalize) {
133
+ var _b = this.scroller, workflow = _b.workflow, logger_1 = _b.logger;
134
+ // we are going to create a new reference for the scroller.workflow object
135
+ // calling the old version of the scroller.workflow by any outstanding async processes will be skipped
136
+ workflow.call = function (_) {
137
+ return logger_1.log('[skip wf call]');
138
+ };
139
+ workflow.call.interrupted = true;
140
+ this.scroller.workflow = this.getUpdater();
141
+ this.interruptionCount++;
142
+ logger_1.log(function () { return "workflow had been interrupted by the ".concat(process, " process (").concat(_this.interruptionCount, ")"); });
143
+ }
144
+ if (datasource) { // Scroller re-initialization case
145
+ var reInit = function () {
146
+ _this.scroller.logger.log('new Scroller instantiation');
147
+ var scroller = new Scroller({ datasource: datasource, scroller: _this.scroller });
148
+ _this.scroller.dispose();
149
+ _this.scroller = scroller;
150
+ _this.scroller.init();
151
+ };
152
+ if (this.scroller.state.cycle.busy.get()) {
153
+ // todo: think about immediate re-initialization even is there are pending processes
154
+ this.scroller.adapter.relax(reInit.bind(this));
155
+ }
156
+ else {
157
+ reInit();
158
+ }
159
+ }
160
+ };
161
+ Workflow.prototype.done = function () {
162
+ var _a = this.scroller, state = _a.state, logger = _a.logger;
163
+ this.cyclesDone++;
164
+ logger.logCycle(false);
165
+ state.endWorkflowCycle(this.cyclesDone + 1);
166
+ this.finalize();
167
+ };
168
+ Workflow.prototype.dispose = function () {
169
+ var _this = this;
170
+ this.scroller.logger.log(function () { return 'disposing workflow'; });
171
+ if (this.initTimer) {
172
+ clearTimeout(this.initTimer);
173
+ }
174
+ this.offScroll();
175
+ this.adapterRun$.dispose();
176
+ this.scroller.dispose(true);
177
+ Object.getOwnPropertyNames(this).forEach(function (prop) {
178
+ delete _this[prop];
179
+ });
180
+ this.disposed = true;
181
+ };
182
+ Workflow.prototype.finalize = function () {
183
+ };
184
+ return Workflow;
185
+ }());
186
+ export { Workflow };
177
187
  //# sourceMappingURL=workflow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from './scroller';\nimport { runStateMachine } from './workflow-transducer';\nimport { Reactive } from './classes/reactive';\nimport { Item } from './classes/item';\nimport { CommonProcess, ProcessStatus as Status, } from './processes/index';\nimport {\n WorkflowParams,\n ProcessName,\n ProcessPayload,\n ProcessClass,\n ProcessSubject,\n WorkflowError,\n InterruptParams,\n StateMachineMethods,\n ScrollerWorkflow,\n} from './interfaces/index';\n\nexport class Workflow<ItemData = unknown> {\n\n isInitialized: boolean;\n initTimer: ReturnType<typeof setTimeout> | null;\n adapterRun$: Reactive<ProcessSubject>;\n cyclesDone: number;\n interruptionCount: number;\n errors: WorkflowError[];\n\n private offScroll: () => void;\n readonly propagateChanges: WorkflowParams<ItemData>['run'];\n readonly stateMachineMethods: StateMachineMethods<ItemData>;\n\n scroller: Scroller<ItemData>;\n\n constructor({ element, datasource, consumer, run, Routines }: WorkflowParams<ItemData>) {\n this.isInitialized = false;\n this.initTimer = null;\n this.adapterRun$ = new Reactive();\n this.cyclesDone = 0;\n this.interruptionCount = 0;\n this.errors = [];\n this.offScroll = () => null;\n this.propagateChanges = run;\n this.stateMachineMethods = {\n run: this.runProcess(),\n interrupt: this.interrupt.bind(this),\n done: this.done.bind(this),\n onError: this.onError.bind(this)\n };\n\n this.scroller = new Scroller<ItemData>({\n element, datasource, consumer, workflow: this.getUpdater(), Routines\n });\n\n if (this.scroller.settings.initializeDelay) {\n this.initTimer = setTimeout(() => {\n this.initTimer = null;\n this.init();\n }, this.scroller.settings.initializeDelay);\n } else {\n this.init();\n }\n }\n\n init(): void {\n this.scroller.init(this.adapterRun$);\n this.isInitialized = true;\n\n // run the Workflow\n this.callWorkflow({\n process: CommonProcess.init,\n status: Status.start\n });\n\n // set up scroll event listener\n const { routines } = this.scroller;\n const onScrollHandler: EventListener =\n event => this.callWorkflow({\n process: CommonProcess.scroll,\n status: Status.start,\n payload: { event }\n });\n this.offScroll = routines.onScroll(onScrollHandler);\n }\n\n changeItems(items: Item<ItemData>[]): void {\n this.propagateChanges(items);\n }\n\n callWorkflow(processSubject: ProcessSubject): void {\n if (!this.isInitialized) {\n return;\n }\n const { process, status } = processSubject;\n if (process && process.startsWith('adapter') && status !== Status.next) {\n this.adapterRun$.set(processSubject);\n }\n this.process(processSubject);\n }\n\n getUpdater(): ScrollerWorkflow<ItemData> {\n return {\n call: this.callWorkflow.bind(this),\n onDataChanged: this.changeItems.bind(this),\n };\n }\n\n process(data: ProcessSubject): void {\n const { status, process, payload } = data;\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%cfire%c', ...['color: #cc7777;', 'color: #000000;'],\n process, `\"${status}\"`, ...(payload !== void 0 ? [payload] : [])\n ]);\n }\n this.scroller.logger.logProcess(data);\n\n if (process === CommonProcess.end) {\n this.scroller.finalize();\n }\n runStateMachine({\n input: data,\n methods: this.stateMachineMethods as StateMachineMethods<unknown>\n });\n }\n\n runProcess() {\n return ({ run, process, name }: ProcessClass) =>\n (...args: unknown[]): void => {\n if (this.scroller.settings.logProcessRun) {\n this.scroller.logger.log(() => [\n '%crun%c', ...['color: #333399;', 'color: #000000;'],\n process || name, ...args\n ]);\n }\n run(this.scroller as Scroller, ...args);\n };\n }\n\n onError(process: ProcessName, payload?: ProcessPayload): void {\n const message: string = payload && String(payload.error) || '';\n const { time, cycle } = this.scroller.state;\n this.errors.push({\n process,\n message,\n time,\n loop: cycle.loopIdNext\n });\n this.scroller.logger.logError(message);\n }\n\n interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void {\n if (finalize) {\n const { workflow, logger } = this.scroller;\n // we are going to create a new reference for the scroller.workflow object\n // calling the old version of the scroller.workflow by any outstanding async processes will be skipped\n workflow.call = (p: ProcessSubject) => // eslint-disable-line @typescript-eslint/no-unused-vars\n logger.log('[skip wf call]');\n workflow.call.interrupted = true;\n this.scroller.workflow = this.getUpdater();\n this.interruptionCount++;\n logger.log(() => `workflow had been interrupted by the ${process} process (${this.interruptionCount})`);\n }\n if (datasource) { // Scroller re-initialization case\n this.scroller.adapter.relax(() => {\n this.scroller.logger.log('new Scroller instantiation');\n const scroller = new Scroller<ItemData>({ datasource, scroller: this.scroller });\n this.scroller.dispose();\n this.scroller = scroller;\n this.scroller.init();\n });\n }\n }\n\n done(): void {\n const { state, logger } = this.scroller;\n this.cyclesDone++;\n logger.logCycle(false);\n state.endWorkflowCycle(this.cyclesDone + 1);\n this.finalize();\n }\n\n dispose(): void {\n if (this.initTimer) {\n clearTimeout(this.initTimer);\n }\n this.offScroll();\n this.adapterRun$.dispose();\n this.scroller.dispose(true);\n Object.getOwnPropertyNames(this).forEach(prop => {\n delete (this as Record<string, unknown>)[prop];\n });\n }\n\n finalize(): void {\n }\n\n}\n"]}
1
+ {"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/workflow.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from './scroller';\r\nimport { runStateMachine } from './workflow-transducer';\r\nimport { Reactive } from './classes/reactive';\r\nimport { Item } from './classes/item';\r\nimport { CommonProcess, ProcessStatus as Status, } from './processes/index';\r\nimport {\r\n WorkflowParams,\r\n ProcessName,\r\n ProcessPayload,\r\n ProcessClass,\r\n ProcessSubject,\r\n WorkflowError,\r\n InterruptParams,\r\n StateMachineMethods,\r\n ScrollerWorkflow,\r\n} from './interfaces/index';\r\n\r\nexport class Workflow<ItemData = unknown> {\r\n\r\n isInitialized: boolean;\r\n disposed: boolean;\r\n initTimer: ReturnType<typeof setTimeout> | null;\r\n adapterRun$: Reactive<ProcessSubject>;\r\n cyclesDone: number;\r\n interruptionCount: number;\r\n errors: WorkflowError[];\r\n\r\n private offScroll: () => void;\r\n readonly propagateChanges: WorkflowParams<ItemData>['run'];\r\n readonly stateMachineMethods: StateMachineMethods<ItemData>;\r\n\r\n scroller: Scroller<ItemData>;\r\n\r\n constructor({ element, datasource, consumer, run, Routines }: WorkflowParams<ItemData>) {\r\n this.isInitialized = false;\r\n this.disposed = false;\r\n this.initTimer = null;\r\n this.adapterRun$ = new Reactive();\r\n this.cyclesDone = 0;\r\n this.interruptionCount = 0;\r\n this.errors = [];\r\n this.offScroll = () => null;\r\n this.propagateChanges = run;\r\n this.stateMachineMethods = {\r\n run: this.runProcess(),\r\n interrupt: this.interrupt.bind(this),\r\n done: this.done.bind(this),\r\n onError: this.onError.bind(this)\r\n };\r\n\r\n this.scroller = new Scroller<ItemData>({\r\n element, datasource, consumer, workflow: this.getUpdater(), Routines\r\n });\r\n\r\n if (this.scroller.settings.initializeDelay) {\r\n this.initTimer = setTimeout(() => {\r\n this.initTimer = null;\r\n this.init();\r\n }, this.scroller.settings.initializeDelay);\r\n } else {\r\n this.init();\r\n }\r\n }\r\n\r\n init(): void {\r\n this.scroller.init(this.adapterRun$);\r\n\r\n // set up scroll event listener\r\n const { routines } = this.scroller;\r\n const onScrollHandler: EventListener =\r\n event => this.callWorkflow({\r\n process: CommonProcess.scroll,\r\n status: Status.start,\r\n payload: { event }\r\n });\r\n this.offScroll = routines.onScroll(onScrollHandler);\r\n\r\n // run the Workflow\r\n this.isInitialized = true;\r\n this.callWorkflow({\r\n process: CommonProcess.init,\r\n status: Status.start\r\n });\r\n }\r\n\r\n changeItems(items: Item<ItemData>[]): void {\r\n this.propagateChanges(items);\r\n }\r\n\r\n callWorkflow(processSubject: ProcessSubject): void {\r\n if (!this.isInitialized) {\r\n return;\r\n }\r\n const { process, status } = processSubject;\r\n if (process && process.startsWith('adapter') && status !== Status.next) {\r\n this.adapterRun$.set(processSubject);\r\n }\r\n this.process(processSubject);\r\n }\r\n\r\n getUpdater(): ScrollerWorkflow<ItemData> {\r\n return {\r\n call: this.callWorkflow.bind(this),\r\n onDataChanged: this.changeItems.bind(this),\r\n };\r\n }\r\n\r\n process(data: ProcessSubject): void {\r\n const { status, process, payload } = data;\r\n if (this.scroller.settings.logProcessRun) {\r\n this.scroller.logger.log(() => [\r\n '%cfire%c', ...['color: #cc7777;', 'color: #000000;'],\r\n process, `\"${status}\"`, ...(payload !== void 0 ? [payload] : [])\r\n ]);\r\n }\r\n this.scroller.logger.logProcess(data);\r\n\r\n if (process === CommonProcess.end) {\r\n this.scroller.finalize();\r\n }\r\n runStateMachine({\r\n input: data,\r\n methods: this.stateMachineMethods as StateMachineMethods<unknown>\r\n });\r\n }\r\n\r\n runProcess() {\r\n return ({ run, process, name }: ProcessClass) =>\r\n (...args: unknown[]): void => {\r\n if (this.scroller.settings.logProcessRun) {\r\n this.scroller.logger.log(() => [\r\n '%crun%c', ...['color: #333399;', 'color: #000000;'],\r\n process || name, ...args\r\n ]);\r\n }\r\n run(this.scroller as Scroller, ...args);\r\n };\r\n }\r\n\r\n onError(process: ProcessName, payload?: ProcessPayload): void {\r\n const message: string = payload && String(payload.error) || '';\r\n const { time, cycle } = this.scroller.state;\r\n this.errors.push({\r\n process,\r\n message,\r\n time,\r\n loop: cycle.loopIdNext\r\n });\r\n this.scroller.logger.logError(message);\r\n }\r\n\r\n interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void {\r\n if (finalize) {\r\n const { workflow, logger } = this.scroller;\r\n // we are going to create a new reference for the scroller.workflow object\r\n // calling the old version of the scroller.workflow by any outstanding async processes will be skipped\r\n workflow.call = (_: ProcessSubject) => // eslint-disable-line @typescript-eslint/no-unused-vars\r\n logger.log('[skip wf call]');\r\n workflow.call.interrupted = true;\r\n this.scroller.workflow = this.getUpdater();\r\n this.interruptionCount++;\r\n logger.log(() => `workflow had been interrupted by the ${process} process (${this.interruptionCount})`);\r\n }\r\n if (datasource) { // Scroller re-initialization case\r\n const reInit = () => {\r\n this.scroller.logger.log('new Scroller instantiation');\r\n const scroller = new Scroller<ItemData>({ datasource, scroller: this.scroller });\r\n this.scroller.dispose();\r\n this.scroller = scroller;\r\n this.scroller.init();\r\n };\r\n if (this.scroller.state.cycle.busy.get()) {\r\n // todo: think about immediate re-initialization even is there are pending processes\r\n this.scroller.adapter.relax(reInit.bind(this));\r\n } else {\r\n reInit();\r\n }\r\n }\r\n }\r\n\r\n done(): void {\r\n const { state, logger } = this.scroller;\r\n this.cyclesDone++;\r\n logger.logCycle(false);\r\n state.endWorkflowCycle(this.cyclesDone + 1);\r\n this.finalize();\r\n }\r\n\r\n dispose(): void {\r\n this.scroller.logger.log(() => 'disposing workflow');\r\n if (this.initTimer) {\r\n clearTimeout(this.initTimer);\r\n }\r\n this.offScroll();\r\n this.adapterRun$.dispose();\r\n this.scroller.dispose(true);\r\n Object.getOwnPropertyNames(this).forEach(prop => {\r\n delete (this as Record<string, unknown>)[prop];\r\n });\r\n this.disposed = true;\r\n }\r\n\r\n finalize(): void {\r\n }\r\n\r\n}\r\n"]}
@@ -1,4 +1,4 @@
1
- import { IAdapterConfig } from '../../interfaces/index';
2
- export declare class AdapterContext {
3
- constructor(config: IAdapterConfig);
4
- }
1
+ import { IAdapterConfig } from '../../interfaces/index';
2
+ export declare class AdapterContext {
3
+ constructor(config: IAdapterConfig);
4
+ }
@@ -1,47 +1,47 @@
1
- import { IAdapterProp, ItemAdapter, AdapterMethodResult, IReactivePropsStore } from '../../interfaces/index';
2
- export declare enum AdapterPropName {
3
- id = "id",
4
- mock = "mock",
5
- augmented = "augmented",
6
- version = "version",
7
- init = "init",
8
- init$ = "init$",
9
- packageInfo = "packageInfo",
10
- itemsCount = "itemsCount",
11
- bufferInfo = "bufferInfo",
12
- isLoading = "isLoading",
13
- isLoading$ = "isLoading$",
14
- loopPending = "loopPending",
15
- loopPending$ = "loopPending$",
16
- firstVisible = "firstVisible",
17
- firstVisible$ = "firstVisible$",
18
- lastVisible = "lastVisible",
19
- lastVisible$ = "lastVisible$",
20
- bof = "bof",
21
- bof$ = "bof$",
22
- eof = "eof",
23
- eof$ = "eof$",
24
- reset = "reset",
25
- reload = "reload",
26
- append = "append",
27
- prepend = "prepend",
28
- check = "check",
29
- remove = "remove",
30
- clip = "clip",
31
- insert = "insert",
32
- replace = "replace",
33
- update = "update",
34
- fix = "fix",
35
- relax = "relax",
36
- showLog = "showLog"
37
- }
38
- export declare enum AdapterPropType {
39
- Scalar = 0,
40
- Reactive = 1,
41
- WorkflowRunner = 2,
42
- Function = 3
43
- }
44
- export declare const methodPreResult: AdapterMethodResult;
45
- export declare const EMPTY_ITEM: ItemAdapter<unknown>;
46
- export declare const getDefaultAdapterProps: () => IAdapterProp[];
47
- export declare const reactiveConfigStorage: Map<number, IReactivePropsStore>;
1
+ import { IAdapterProp, ItemAdapter, AdapterMethodResult, IReactivePropsStore } from '../../interfaces/index';
2
+ export declare enum AdapterPropName {
3
+ id = "id",
4
+ mock = "mock",
5
+ augmented = "augmented",
6
+ version = "version",
7
+ init = "init",
8
+ init$ = "init$",
9
+ packageInfo = "packageInfo",
10
+ itemsCount = "itemsCount",
11
+ bufferInfo = "bufferInfo",
12
+ isLoading = "isLoading",
13
+ isLoading$ = "isLoading$",
14
+ loopPending = "loopPending",
15
+ loopPending$ = "loopPending$",
16
+ firstVisible = "firstVisible",
17
+ firstVisible$ = "firstVisible$",
18
+ lastVisible = "lastVisible",
19
+ lastVisible$ = "lastVisible$",
20
+ bof = "bof",
21
+ bof$ = "bof$",
22
+ eof = "eof",
23
+ eof$ = "eof$",
24
+ reset = "reset",
25
+ reload = "reload",
26
+ append = "append",
27
+ prepend = "prepend",
28
+ check = "check",
29
+ remove = "remove",
30
+ clip = "clip",
31
+ insert = "insert",
32
+ replace = "replace",
33
+ update = "update",
34
+ fix = "fix",
35
+ relax = "relax",
36
+ showLog = "showLog"
37
+ }
38
+ export declare enum AdapterPropType {
39
+ Scalar = 0,
40
+ Reactive = 1,
41
+ WorkflowRunner = 2,
42
+ Function = 3
43
+ }
44
+ export declare const methodPreResult: AdapterMethodResult;
45
+ export declare const EMPTY_ITEM: ItemAdapter<unknown>;
46
+ export declare const getDefaultAdapterProps: () => IAdapterProp[];
47
+ export declare const reactiveConfigStorage: Map<number, IReactivePropsStore>;
@@ -1,14 +1,14 @@
1
- import { IAdapterProp } from '../../interfaces/index';
2
- interface IWanted {
3
- box: {
4
- [key: string]: boolean;
5
- };
6
- block: boolean;
7
- }
8
- export declare const wantedUtils: {
9
- getBox: (id?: number | undefined) => IWanted['box'] | undefined;
10
- setBox: ({ name, wanted }: IAdapterProp, id?: number | undefined) => boolean;
11
- setBlock: (value: boolean, id?: number | undefined) => void;
12
- };
13
- export declare const wantedStorage: Map<number, IWanted>;
14
- export {};
1
+ import { IAdapterProp } from '../../interfaces/index';
2
+ interface IWanted {
3
+ box: {
4
+ [key: string]: boolean;
5
+ };
6
+ block: boolean;
7
+ }
8
+ export declare const wantedUtils: {
9
+ getBox: (id?: number | undefined) => IWanted['box'] | undefined;
10
+ setBox: ({ name, wanted }: IAdapterProp, id?: number | undefined) => boolean;
11
+ setBlock: (value: boolean, id?: number | undefined) => void;
12
+ };
13
+ export declare const wantedStorage: Map<number, IWanted>;
14
+ export {};