vscroll 1.6.3 → 1.8.0

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 (363) hide show
  1. package/dist/bundles/vscroll.esm5.js +5854 -5705
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +5341 -5194
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +5858 -5710
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/adapter/context.js +44 -43
  14. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/props.js +300 -300
  16. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  18. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  19. package/dist/esm2015/classes/adapter.js +486 -487
  20. package/dist/esm2015/classes/adapter.js.map +1 -1
  21. package/dist/esm2015/classes/buffer/cache.js +249 -246
  22. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  23. package/dist/esm2015/classes/buffer/checkCall.js +47 -48
  24. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  25. package/dist/esm2015/classes/buffer/defaultSize.js +128 -127
  26. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  27. package/dist/esm2015/classes/buffer.js +343 -342
  28. package/dist/esm2015/classes/buffer.js.map +1 -1
  29. package/dist/esm2015/classes/datasource.js +36 -24
  30. package/dist/esm2015/classes/datasource.js.map +1 -1
  31. package/dist/esm2015/classes/domRoutines.js +160 -160
  32. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  33. package/dist/esm2015/classes/item.js +61 -61
  34. package/dist/esm2015/classes/item.js.map +1 -1
  35. package/dist/esm2015/classes/logger.js +229 -186
  36. package/dist/esm2015/classes/logger.js.map +1 -1
  37. package/dist/esm2015/classes/paddings.js +76 -72
  38. package/dist/esm2015/classes/paddings.js.map +1 -1
  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 +124 -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 +64 -62
  54. package/dist/esm2015/classes/state.js.map +1 -1
  55. package/dist/esm2015/classes/viewport.js +74 -72
  56. package/dist/esm2015/classes/viewport.js.map +1 -1
  57. package/dist/esm2015/index.js +9 -9
  58. package/dist/esm2015/index.js.map +1 -1
  59. package/dist/esm2015/inputs/adapter.js +262 -242
  60. package/dist/esm2015/inputs/adapter.js.map +1 -1
  61. package/dist/esm2015/inputs/common.js +11 -11
  62. package/dist/esm2015/inputs/common.js.map +1 -1
  63. package/dist/esm2015/inputs/datasource.js +20 -20
  64. package/dist/esm2015/inputs/datasource.js.map +1 -1
  65. package/dist/esm2015/inputs/index.js +7 -7
  66. package/dist/esm2015/inputs/index.js.map +1 -1
  67. package/dist/esm2015/inputs/settings.js +151 -146
  68. package/dist/esm2015/inputs/settings.js.map +1 -1
  69. package/dist/esm2015/inputs/validation.js +365 -374
  70. package/dist/esm2015/inputs/validation.js.map +1 -1
  71. package/dist/esm2015/inputs/workflow.js +30 -30
  72. package/dist/esm2015/inputs/workflow.js.map +1 -1
  73. package/dist/esm2015/interfaces/adapter.js +1 -1
  74. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  75. package/dist/esm2015/interfaces/datasource.js +1 -1
  76. package/dist/esm2015/interfaces/datasource.js.map +1 -1
  77. package/dist/esm2015/interfaces/index.js +1 -1
  78. package/dist/esm2015/interfaces/index.js.map +1 -1
  79. package/dist/esm2015/interfaces/item.js +1 -1
  80. package/dist/esm2015/interfaces/item.js.map +1 -1
  81. package/dist/esm2015/interfaces/process.js +1 -1
  82. package/dist/esm2015/interfaces/process.js.map +1 -1
  83. package/dist/esm2015/interfaces/routines.js +1 -1
  84. package/dist/esm2015/interfaces/routines.js.map +1 -1
  85. package/dist/esm2015/interfaces/settings.js +1 -1
  86. package/dist/esm2015/interfaces/settings.js.map +1 -1
  87. package/dist/esm2015/interfaces/state.js +1 -1
  88. package/dist/esm2015/interfaces/state.js.map +1 -1
  89. package/dist/esm2015/interfaces/validation.js +1 -1
  90. package/dist/esm2015/interfaces/validation.js.map +1 -1
  91. package/dist/esm2015/interfaces/workflow.js +1 -1
  92. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  93. package/dist/esm2015/processes/adapter/append.js +37 -36
  94. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  95. package/dist/esm2015/processes/adapter/check.js +33 -32
  96. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  97. package/dist/esm2015/processes/adapter/clip.js +12 -12
  98. package/dist/esm2015/processes/adapter/clip.js.map +1 -1
  99. package/dist/esm2015/processes/adapter/fix.js +79 -77
  100. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  101. package/dist/esm2015/processes/adapter/insert.js +74 -73
  102. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  103. package/dist/esm2015/processes/adapter/pause.js +22 -22
  104. package/dist/esm2015/processes/adapter/pause.js.map +1 -1
  105. package/dist/esm2015/processes/adapter/reload.js +19 -19
  106. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  107. package/dist/esm2015/processes/adapter/remove.js +105 -102
  108. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  109. package/dist/esm2015/processes/adapter/replace.js +39 -39
  110. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  111. package/dist/esm2015/processes/adapter/reset.js +35 -35
  112. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  113. package/dist/esm2015/processes/adapter/update.js +44 -43
  114. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  115. package/dist/esm2015/processes/adjust.js +146 -141
  116. package/dist/esm2015/processes/adjust.js.map +1 -1
  117. package/dist/esm2015/processes/clip.js +49 -49
  118. package/dist/esm2015/processes/clip.js.map +1 -1
  119. package/dist/esm2015/processes/end.js +53 -52
  120. package/dist/esm2015/processes/end.js.map +1 -1
  121. package/dist/esm2015/processes/fetch.js +93 -91
  122. package/dist/esm2015/processes/fetch.js.map +1 -1
  123. package/dist/esm2015/processes/index.js +24 -24
  124. package/dist/esm2015/processes/index.js.map +1 -1
  125. package/dist/esm2015/processes/init.js +14 -14
  126. package/dist/esm2015/processes/init.js.map +1 -1
  127. package/dist/esm2015/processes/misc/base.js +29 -30
  128. package/dist/esm2015/processes/misc/base.js.map +1 -1
  129. package/dist/esm2015/processes/misc/enums.js +36 -36
  130. package/dist/esm2015/processes/misc/enums.js.map +1 -1
  131. package/dist/esm2015/processes/misc/index.js +2 -2
  132. package/dist/esm2015/processes/misc/index.js.map +1 -1
  133. package/dist/esm2015/processes/postFetch.js +66 -65
  134. package/dist/esm2015/processes/postFetch.js.map +1 -1
  135. package/dist/esm2015/processes/preClip.js +86 -85
  136. package/dist/esm2015/processes/preClip.js.map +1 -1
  137. package/dist/esm2015/processes/preFetch.js +253 -240
  138. package/dist/esm2015/processes/preFetch.js.map +1 -1
  139. package/dist/esm2015/processes/render.js +56 -54
  140. package/dist/esm2015/processes/render.js.map +1 -1
  141. package/dist/esm2015/processes/scroll.js +106 -97
  142. package/dist/esm2015/processes/scroll.js.map +1 -1
  143. package/dist/esm2015/processes/start.js +11 -11
  144. package/dist/esm2015/processes/start.js.map +1 -1
  145. package/dist/esm2015/scroller.js +91 -86
  146. package/dist/esm2015/scroller.js.map +1 -1
  147. package/dist/esm2015/version.js +4 -4
  148. package/dist/esm2015/version.js.map +1 -1
  149. package/dist/esm2015/workflow-transducer.js +219 -218
  150. package/dist/esm2015/workflow-transducer.js.map +1 -1
  151. package/dist/esm2015/workflow.js +185 -174
  152. package/dist/esm2015/workflow.js.map +1 -1
  153. package/dist/esm5/classes/adapter/context.js +51 -50
  154. package/dist/esm5/classes/adapter/context.js.map +1 -1
  155. package/dist/esm5/classes/adapter/props.js +300 -300
  156. package/dist/esm5/classes/adapter/props.js.map +1 -1
  157. package/dist/esm5/classes/adapter/wanted.js +29 -29
  158. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  159. package/dist/esm5/classes/adapter.js +538 -535
  160. package/dist/esm5/classes/adapter.js.map +1 -1
  161. package/dist/esm5/classes/buffer/cache.js +262 -260
  162. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  163. package/dist/esm5/classes/buffer/checkCall.js +53 -56
  164. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  165. package/dist/esm5/classes/buffer/defaultSize.js +146 -145
  166. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  167. package/dist/esm5/classes/buffer.js +410 -409
  168. package/dist/esm5/classes/buffer.js.map +1 -1
  169. package/dist/esm5/classes/datasource.js +47 -31
  170. package/dist/esm5/classes/datasource.js.map +1 -1
  171. package/dist/esm5/classes/domRoutines.js +165 -165
  172. package/dist/esm5/classes/domRoutines.js.map +1 -1
  173. package/dist/esm5/classes/item.js +76 -76
  174. package/dist/esm5/classes/item.js.map +1 -1
  175. package/dist/esm5/classes/logger.js +251 -210
  176. package/dist/esm5/classes/logger.js.map +1 -1
  177. package/dist/esm5/classes/paddings.js +84 -80
  178. package/dist/esm5/classes/paddings.js.map +1 -1
  179. package/dist/esm5/classes/reactive.js +69 -69
  180. package/dist/esm5/classes/reactive.js.map +1 -1
  181. package/dist/esm5/classes/settings.js +47 -47
  182. package/dist/esm5/classes/settings.js.map +1 -1
  183. package/dist/esm5/classes/state/clip.js +22 -22
  184. package/dist/esm5/classes/state/clip.js.map +1 -1
  185. package/dist/esm5/classes/state/cycle.js +75 -75
  186. package/dist/esm5/classes/state/cycle.js.map +1 -1
  187. package/dist/esm5/classes/state/fetch.js +150 -148
  188. package/dist/esm5/classes/state/fetch.js.map +1 -1
  189. package/dist/esm5/classes/state/render.js +20 -20
  190. package/dist/esm5/classes/state/render.js.map +1 -1
  191. package/dist/esm5/classes/state/scroll.js +32 -32
  192. package/dist/esm5/classes/state/scroll.js.map +1 -1
  193. package/dist/esm5/classes/state.js +71 -69
  194. package/dist/esm5/classes/state.js.map +1 -1
  195. package/dist/esm5/classes/viewport.js +80 -79
  196. package/dist/esm5/classes/viewport.js.map +1 -1
  197. package/dist/esm5/index.js +9 -9
  198. package/dist/esm5/index.js.map +1 -1
  199. package/dist/esm5/inputs/adapter.js +263 -243
  200. package/dist/esm5/inputs/adapter.js.map +1 -1
  201. package/dist/esm5/inputs/common.js +11 -11
  202. package/dist/esm5/inputs/common.js.map +1 -1
  203. package/dist/esm5/inputs/datasource.js +21 -21
  204. package/dist/esm5/inputs/datasource.js.map +1 -1
  205. package/dist/esm5/inputs/index.js +7 -7
  206. package/dist/esm5/inputs/index.js.map +1 -1
  207. package/dist/esm5/inputs/settings.js +152 -147
  208. package/dist/esm5/inputs/settings.js.map +1 -1
  209. package/dist/esm5/inputs/validation.js +399 -396
  210. package/dist/esm5/inputs/validation.js.map +1 -1
  211. package/dist/esm5/inputs/workflow.js +31 -31
  212. package/dist/esm5/inputs/workflow.js.map +1 -1
  213. package/dist/esm5/interfaces/adapter.js +1 -1
  214. package/dist/esm5/interfaces/adapter.js.map +1 -1
  215. package/dist/esm5/interfaces/datasource.js +1 -1
  216. package/dist/esm5/interfaces/datasource.js.map +1 -1
  217. package/dist/esm5/interfaces/index.js +1 -1
  218. package/dist/esm5/interfaces/index.js.map +1 -1
  219. package/dist/esm5/interfaces/item.js +1 -1
  220. package/dist/esm5/interfaces/item.js.map +1 -1
  221. package/dist/esm5/interfaces/process.js +1 -1
  222. package/dist/esm5/interfaces/process.js.map +1 -1
  223. package/dist/esm5/interfaces/routines.js +1 -1
  224. package/dist/esm5/interfaces/routines.js.map +1 -1
  225. package/dist/esm5/interfaces/settings.js +1 -1
  226. package/dist/esm5/interfaces/settings.js.map +1 -1
  227. package/dist/esm5/interfaces/state.js +1 -1
  228. package/dist/esm5/interfaces/state.js.map +1 -1
  229. package/dist/esm5/interfaces/validation.js +1 -1
  230. package/dist/esm5/interfaces/validation.js.map +1 -1
  231. package/dist/esm5/interfaces/workflow.js +1 -1
  232. package/dist/esm5/interfaces/workflow.js.map +1 -1
  233. package/dist/esm5/processes/adapter/append.js +45 -44
  234. package/dist/esm5/processes/adapter/append.js.map +1 -1
  235. package/dist/esm5/processes/adapter/check.js +40 -39
  236. package/dist/esm5/processes/adapter/check.js.map +1 -1
  237. package/dist/esm5/processes/adapter/clip.js +19 -19
  238. package/dist/esm5/processes/adapter/clip.js.map +1 -1
  239. package/dist/esm5/processes/adapter/fix.js +91 -89
  240. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  241. package/dist/esm5/processes/adapter/insert.js +82 -81
  242. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  243. package/dist/esm5/processes/adapter/pause.js +29 -29
  244. package/dist/esm5/processes/adapter/pause.js.map +1 -1
  245. package/dist/esm5/processes/adapter/reload.js +26 -26
  246. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  247. package/dist/esm5/processes/adapter/remove.js +116 -115
  248. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  249. package/dist/esm5/processes/adapter/replace.js +47 -47
  250. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  251. package/dist/esm5/processes/adapter/reset.js +42 -42
  252. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  253. package/dist/esm5/processes/adapter/update.js +64 -59
  254. package/dist/esm5/processes/adapter/update.js.map +1 -1
  255. package/dist/esm5/processes/adjust.js +157 -152
  256. package/dist/esm5/processes/adjust.js.map +1 -1
  257. package/dist/esm5/processes/clip.js +60 -60
  258. package/dist/esm5/processes/clip.js.map +1 -1
  259. package/dist/esm5/processes/end.js +64 -63
  260. package/dist/esm5/processes/end.js.map +1 -1
  261. package/dist/esm5/processes/fetch.js +104 -102
  262. package/dist/esm5/processes/fetch.js.map +1 -1
  263. package/dist/esm5/processes/index.js +24 -24
  264. package/dist/esm5/processes/index.js.map +1 -1
  265. package/dist/esm5/processes/init.js +21 -21
  266. package/dist/esm5/processes/init.js.map +1 -1
  267. package/dist/esm5/processes/misc/base.js +43 -44
  268. package/dist/esm5/processes/misc/base.js.map +1 -1
  269. package/dist/esm5/processes/misc/enums.js +36 -36
  270. package/dist/esm5/processes/misc/enums.js.map +1 -1
  271. package/dist/esm5/processes/misc/index.js +2 -2
  272. package/dist/esm5/processes/misc/index.js.map +1 -1
  273. package/dist/esm5/processes/postFetch.js +73 -74
  274. package/dist/esm5/processes/postFetch.js.map +1 -1
  275. package/dist/esm5/processes/preClip.js +95 -94
  276. package/dist/esm5/processes/preClip.js.map +1 -1
  277. package/dist/esm5/processes/preFetch.js +259 -247
  278. package/dist/esm5/processes/preFetch.js.map +1 -1
  279. package/dist/esm5/processes/render.js +63 -63
  280. package/dist/esm5/processes/render.js.map +1 -1
  281. package/dist/esm5/processes/scroll.js +113 -107
  282. package/dist/esm5/processes/scroll.js.map +1 -1
  283. package/dist/esm5/processes/start.js +18 -18
  284. package/dist/esm5/processes/start.js.map +1 -1
  285. package/dist/esm5/scroller.js +104 -100
  286. package/dist/esm5/scroller.js.map +1 -1
  287. package/dist/esm5/version.js +4 -4
  288. package/dist/esm5/version.js.map +1 -1
  289. package/dist/esm5/workflow-transducer.js +221 -220
  290. package/dist/esm5/workflow-transducer.js.map +1 -1
  291. package/dist/esm5/workflow.js +204 -198
  292. package/dist/esm5/workflow.js.map +1 -1
  293. package/dist/typings/classes/adapter/context.d.ts +4 -4
  294. package/dist/typings/classes/adapter/props.d.ts +52 -52
  295. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  296. package/dist/typings/classes/adapter.d.ts +79 -79
  297. package/dist/typings/classes/buffer/cache.d.ts +94 -95
  298. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  299. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  300. package/dist/typings/classes/buffer.d.ts +64 -64
  301. package/dist/typings/classes/datasource.d.ts +11 -11
  302. package/dist/typings/classes/domRoutines.d.ts +36 -36
  303. package/dist/typings/classes/item.d.ts +28 -28
  304. package/dist/typings/classes/logger.d.ts +32 -28
  305. package/dist/typings/classes/paddings.d.ts +22 -22
  306. package/dist/typings/classes/reactive.d.ts +21 -21
  307. package/dist/typings/classes/settings.d.ts +126 -119
  308. package/dist/typings/classes/state/clip.d.ts +9 -9
  309. package/dist/typings/classes/state/cycle.d.ts +29 -29
  310. package/dist/typings/classes/state/fetch.d.ts +62 -62
  311. package/dist/typings/classes/state/render.d.ts +9 -9
  312. package/dist/typings/classes/state/scroll.d.ts +16 -16
  313. package/dist/typings/classes/state.d.ts +29 -29
  314. package/dist/typings/classes/viewport.d.ts +32 -32
  315. package/dist/typings/index.d.ts +10 -10
  316. package/dist/typings/inputs/adapter.d.ts +5 -5
  317. package/dist/typings/inputs/common.d.ts +9 -9
  318. package/dist/typings/inputs/datasource.d.ts +7 -7
  319. package/dist/typings/inputs/index.d.ts +7 -7
  320. package/dist/typings/inputs/settings.d.ts +42 -41
  321. package/dist/typings/inputs/validation.d.ts +82 -83
  322. package/dist/typings/inputs/workflow.d.ts +9 -9
  323. package/dist/typings/interfaces/adapter.d.ts +164 -164
  324. package/dist/typings/interfaces/datasource.d.ts +28 -28
  325. package/dist/typings/interfaces/index.d.ts +10 -10
  326. package/dist/typings/interfaces/item.d.ts +8 -8
  327. package/dist/typings/interfaces/process.d.ts +35 -35
  328. package/dist/typings/interfaces/routines.d.ts +166 -166
  329. package/dist/typings/interfaces/settings.d.ts +32 -31
  330. package/dist/typings/interfaces/state.d.ts +24 -24
  331. package/dist/typings/interfaces/validation.d.ts +33 -33
  332. package/dist/typings/interfaces/workflow.d.ts +53 -53
  333. package/dist/typings/processes/adapter/append.d.ts +14 -14
  334. package/dist/typings/processes/adapter/check.d.ts +6 -6
  335. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  336. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  337. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  338. package/dist/typings/processes/adapter/pause.d.ts +8 -8
  339. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  340. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  341. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  342. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  343. package/dist/typings/processes/adapter/update.d.ts +8 -8
  344. package/dist/typings/processes/adjust.d.ts +10 -10
  345. package/dist/typings/processes/clip.d.ts +7 -7
  346. package/dist/typings/processes/end.d.ts +10 -10
  347. package/dist/typings/processes/fetch.d.ts +18 -18
  348. package/dist/typings/processes/index.d.ts +24 -24
  349. package/dist/typings/processes/init.d.ts +7 -7
  350. package/dist/typings/processes/misc/base.d.ts +4 -4
  351. package/dist/typings/processes/misc/enums.d.ts +33 -33
  352. package/dist/typings/processes/misc/index.d.ts +2 -2
  353. package/dist/typings/processes/postFetch.d.ts +8 -8
  354. package/dist/typings/processes/preClip.d.ts +12 -12
  355. package/dist/typings/processes/preFetch.d.ts +17 -17
  356. package/dist/typings/processes/render.d.ts +9 -9
  357. package/dist/typings/processes/scroll.d.ts +13 -13
  358. package/dist/typings/processes/start.d.ts +6 -6
  359. package/dist/typings/scroller.d.ts +26 -26
  360. package/dist/typings/version.d.ts +5 -5
  361. package/dist/typings/workflow-transducer.d.ts +2 -2
  362. package/dist/typings/workflow.d.ts +30 -29
  363. package/package.json +72 -69
@@ -1,142 +1,147 @@
1
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
- import End from './end';
3
- export default class Adjust extends BaseProcessFactory(CommonProcess.adjust) {
4
- static run(scroller) {
5
- const { workflow, viewport, state: { scroll } } = scroller;
6
- scroll.positionBeforeAdjust = viewport.scrollPosition;
7
- Adjust.setPaddings(scroller);
8
- scroll.positionAfterAdjust = viewport.scrollPosition;
9
- // scroll position adjustments
10
- const position = Adjust.calculatePosition(scroller);
11
- // additional adjustment if the position can't be reached during the initial cycle
12
- Adjust.setAdditionalForwardPadding(scroller, position);
13
- // set new position using animation frame
14
- Adjust.setPosition(scroller, position, () => workflow.call({
15
- process: Adjust.process,
16
- status: ProcessStatus.done
17
- }));
18
- }
19
- static setPaddings(scroller) {
20
- const { viewport, buffer, settings: { inverse }, state: { fetch } } = scroller;
21
- const firstItem = buffer.getFirstVisibleItem();
22
- const lastItem = buffer.getLastVisibleItem();
23
- let first, last;
24
- if (firstItem && lastItem) {
25
- first = firstItem.$index;
26
- last = lastItem.$index;
27
- }
28
- else {
29
- first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;
30
- last = first - 1;
31
- }
32
- const { forward, backward } = viewport.paddings;
33
- let index, bwdSize = 0, fwdSize = 0;
34
- // new backward and forward paddings size
35
- for (index = buffer.finiteAbsMinIndex; index < first; index++) {
36
- bwdSize += buffer.getSizeByIndex(index);
37
- }
38
- for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
39
- fwdSize += buffer.getSizeByIndex(index);
40
- }
41
- // lack of items case
42
- const bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
43
- const scrollSize = bwdSize + bufferSize + fwdSize;
44
- const viewportSizeDiff = viewport.getSize() - scrollSize;
45
- if (viewportSizeDiff > 0) {
46
- if (inverse) {
47
- bwdSize += viewportSizeDiff;
48
- }
49
- else {
50
- fwdSize += viewportSizeDiff;
51
- }
52
- scroller.logger.log(() => inverse ? 'backward' : 'forward' + ` padding will be increased by ${viewportSizeDiff} to fill the viewport`);
53
- }
54
- backward.size = bwdSize;
55
- forward.size = fwdSize;
56
- scroller.logger.stat('after paddings adjustments');
57
- }
58
- static calculatePosition(scroller) {
59
- const { viewport, buffer, state: { fetch, render, scroll } } = scroller;
60
- let position = viewport.paddings.backward.size;
61
- // increase the position to meet the expectation of the first visible item
62
- if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
63
- scroller.logger.log(`first index = ${fetch.firstVisible.index}, delta = ${fetch.firstVisible.delta}`);
64
- const shouldCheckPreSizeExpectation = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
65
- buffer.items.forEach(item => {
66
- // 1) shift of the buffered items before the first visible item
67
- if (item.$index < fetch.firstVisible.index) {
68
- position += item.size;
69
- return;
70
- }
71
- // 2) delta of the first visible item
72
- if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
73
- position -= fetch.firstVisible.delta;
74
- }
75
- // 3) difference between expected and real sizes of fetched items after the first visible
76
- if (shouldCheckPreSizeExpectation && item.preSize && fetch.items.includes(item)) {
77
- position += item.size - item.preSize;
78
- }
79
- });
80
- }
81
- // slow fetch/render case
82
- if (scroll.positionBeforeAsync !== null) {
83
- const diff = render.positionBefore - scroll.positionBeforeAsync;
84
- if (diff !== 0) {
85
- scroller.logger.log(`shift position due to fetch-render difference (${diff})`);
86
- position += diff;
87
- }
88
- }
89
- // increase the position due to viewport's offset
90
- if (viewport.offset > 0 && (position || fetch.positions.before)) {
91
- position += viewport.offset;
92
- }
93
- return Math.round(position);
94
- }
95
- static setAdditionalForwardPadding(scroller, position) {
96
- const { viewport, buffer, state: { cycle } } = scroller;
97
- if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
98
- return;
99
- }
100
- const diff = position - viewport.getMaxScrollPosition();
101
- if (diff <= 0) {
102
- return;
103
- }
104
- const last = buffer.getLastVisibleItem();
105
- if (!last) {
106
- return;
107
- }
108
- let size = 0;
109
- let index = last.$index + 1;
110
- while (size <= diff && index <= buffer.absMaxIndex) {
111
- size += buffer.getSizeByIndex(index++);
112
- }
113
- const shift = Math.min(size, diff);
114
- if (shift) {
115
- viewport.paddings.forward.size += shift;
116
- scroller.logger.log(`increase fwd padding due to lack of items (${diff} -> ${shift})`);
117
- }
118
- }
119
- static setPosition(scroller, position, done) {
120
- const { state: { scroll }, viewport, routines } = scroller;
121
- if (!scroll.hasPositionChanged(position)) {
122
- return done();
123
- }
124
- scroll.syntheticPosition = position;
125
- scroll.syntheticFulfill = false;
126
- scroll.cancelAnimation = routines.animate(() => {
127
- scroll.cancelAnimation = null;
128
- const inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
129
- let diffLog = '';
130
- if (inertiaDiff > 0) {
131
- position -= inertiaDiff;
132
- scroll.syntheticPosition = position;
133
- diffLog = ` (-${inertiaDiff})`;
134
- }
135
- scroll.syntheticFulfill = true;
136
- viewport.scrollPosition = position;
137
- scroller.logger.stat('after scroll adjustment' + diffLog);
138
- done();
139
- });
140
- }
141
- }
1
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
+ import End from './end';
3
+ export default class Adjust extends BaseProcessFactory(CommonProcess.adjust) {
4
+ static run(scroller) {
5
+ const { workflow, viewport, state } = scroller;
6
+ state.scroll.positionBeforeAdjust = viewport.scrollPosition;
7
+ Adjust.setPaddings(scroller);
8
+ state.scroll.positionAfterAdjust = viewport.scrollPosition;
9
+ // scroll position adjustments
10
+ const position = Adjust.calculatePosition(scroller);
11
+ // additional adjustment if the position can't be reached during the initial cycle
12
+ Adjust.setAdditionalForwardPadding(scroller, position);
13
+ // set new position using animation frame
14
+ Adjust.setPosition(scroller, position, () => workflow.call({
15
+ process: Adjust.process,
16
+ status: ProcessStatus.done
17
+ }));
18
+ }
19
+ static setPaddings(scroller) {
20
+ const { viewport, buffer, settings, state } = scroller;
21
+ const firstItem = buffer.getFirstVisibleItem();
22
+ const lastItem = buffer.getLastVisibleItem();
23
+ let first, last;
24
+ if (firstItem && lastItem) {
25
+ first = firstItem.$index;
26
+ last = lastItem.$index;
27
+ }
28
+ else {
29
+ const { fetch } = state;
30
+ first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;
31
+ last = first - 1;
32
+ }
33
+ const { forward, backward } = viewport.paddings;
34
+ let index, bwdSize = 0, fwdSize = 0;
35
+ // new backward and forward paddings size
36
+ for (index = buffer.finiteAbsMinIndex; index < first; index++) {
37
+ bwdSize += buffer.getSizeByIndex(index);
38
+ }
39
+ for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
40
+ fwdSize += buffer.getSizeByIndex(index);
41
+ }
42
+ // lack of items case
43
+ const bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
44
+ const scrollSize = bwdSize + bufferSize + fwdSize;
45
+ const viewportSizeDiff = viewport.getSize() - scrollSize;
46
+ if (viewportSizeDiff > 0) {
47
+ if (settings.inverse) {
48
+ bwdSize += viewportSizeDiff;
49
+ }
50
+ else {
51
+ fwdSize += viewportSizeDiff;
52
+ }
53
+ scroller.logger.log(() => settings.inverse
54
+ ? 'backward'
55
+ : 'forward' + ` padding will be increased by ${viewportSizeDiff} to fill the viewport`);
56
+ }
57
+ backward.size = bwdSize;
58
+ forward.size = fwdSize;
59
+ scroller.logger.stat('after paddings adjustments');
60
+ }
61
+ static calculatePosition(scroller) {
62
+ const { viewport, buffer, state } = scroller;
63
+ const { fetch, render, scroll } = state;
64
+ let position = viewport.paddings.backward.size;
65
+ // increase the position to meet the expectation of the first visible item
66
+ if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
67
+ scroller.logger.log(`first index = ${fetch.firstVisible.index}, delta = ${fetch.firstVisible.delta}`);
68
+ const shouldCheckPreSizeExpectation = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
69
+ buffer.items.forEach(item => {
70
+ // 1) shift of the buffered items before the first visible item
71
+ if (item.$index < fetch.firstVisible.index) {
72
+ position += item.size;
73
+ return;
74
+ }
75
+ // 2) delta of the first visible item
76
+ if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
77
+ position -= fetch.firstVisible.delta;
78
+ }
79
+ // 3) difference between expected and real sizes of fetched items after the first visible
80
+ if (shouldCheckPreSizeExpectation && item.preSize && fetch.items.includes(item)) {
81
+ position += item.size - item.preSize;
82
+ }
83
+ });
84
+ }
85
+ // slow fetch/render case
86
+ if (scroll.positionBeforeAsync !== null) {
87
+ const diff = render.positionBefore - scroll.positionBeforeAsync;
88
+ if (diff !== 0) {
89
+ scroller.logger.log(`shift position due to fetch-render difference (${diff})`);
90
+ position += diff;
91
+ }
92
+ }
93
+ // increase the position due to viewport's offset
94
+ if (viewport.offset > 0 && (position || fetch.positions.before)) {
95
+ position += viewport.offset;
96
+ }
97
+ return Math.round(position);
98
+ }
99
+ static setAdditionalForwardPadding(scroller, position) {
100
+ const { viewport, buffer, state } = scroller;
101
+ if (!state.cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
102
+ return;
103
+ }
104
+ const diff = position - viewport.getMaxScrollPosition();
105
+ if (diff <= 0) {
106
+ return;
107
+ }
108
+ const last = buffer.getLastVisibleItem();
109
+ if (!last) {
110
+ return;
111
+ }
112
+ let size = 0;
113
+ let index = last.$index + 1;
114
+ while (size <= diff && index <= buffer.absMaxIndex) {
115
+ size += buffer.getSizeByIndex(index++);
116
+ }
117
+ const shift = Math.min(size, diff);
118
+ if (shift) {
119
+ viewport.paddings.forward.size += shift;
120
+ scroller.logger.log(`increase fwd padding due to lack of items (${diff} -> ${shift})`);
121
+ }
122
+ }
123
+ static setPosition(scroller, position, done) {
124
+ const { state, viewport, routines } = scroller;
125
+ const { scroll } = state;
126
+ if (!scroll.hasPositionChanged(position)) {
127
+ return done();
128
+ }
129
+ scroll.syntheticPosition = position;
130
+ scroll.syntheticFulfill = false;
131
+ scroll.cancelAnimation = routines.animate(() => {
132
+ scroll.cancelAnimation = null;
133
+ const inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
134
+ let diffLog = '';
135
+ if (inertiaDiff > 0) {
136
+ position -= inertiaDiff;
137
+ scroll.syntheticPosition = position;
138
+ diffLog = ` (-${inertiaDiff})`;
139
+ }
140
+ scroll.syntheticFulfill = true;
141
+ viewport.scrollPosition = position;
142
+ scroller.logger.stat('after scroll adjustment' + diffLog);
143
+ done();
144
+ });
145
+ }
146
+ }
142
147
  //# sourceMappingURL=adjust.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adjust.js","sourceRoot":"","sources":["../../../src/processes/adjust.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport End from './end';\r\n\r\nexport default class Adjust extends BaseProcessFactory(CommonProcess.adjust) {\r\n\r\n static run(scroller: Scroller): void {\r\n const { workflow, viewport, state: { scroll } } = scroller;\r\n\r\n scroll.positionBeforeAdjust = viewport.scrollPosition;\r\n Adjust.setPaddings(scroller);\r\n scroll.positionAfterAdjust = viewport.scrollPosition;\r\n\r\n // scroll position adjustments\r\n const position = Adjust.calculatePosition(scroller);\r\n\r\n // additional adjustment if the position can't be reached during the initial cycle\r\n Adjust.setAdditionalForwardPadding(scroller, position);\r\n\r\n // set new position using animation frame\r\n Adjust.setPosition(scroller, position, () =>\r\n workflow.call({\r\n process: Adjust.process,\r\n status: ProcessStatus.done\r\n })\r\n );\r\n }\r\n\r\n static setPaddings(scroller: Scroller): void {\r\n const { viewport, buffer, settings: { inverse }, state: { fetch } } = scroller;\r\n const firstItem = buffer.getFirstVisibleItem();\r\n const lastItem = buffer.getLastVisibleItem();\r\n let first, last;\r\n if (firstItem && lastItem) {\r\n first = firstItem.$index;\r\n last = lastItem.$index;\r\n } else {\r\n first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;\r\n last = first - 1;\r\n }\r\n const { forward, backward } = viewport.paddings;\r\n let index, bwdSize = 0, fwdSize = 0;\r\n\r\n // new backward and forward paddings size\r\n for (index = buffer.finiteAbsMinIndex; index < first; index++) {\r\n bwdSize += buffer.getSizeByIndex(index);\r\n }\r\n for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {\r\n fwdSize += buffer.getSizeByIndex(index);\r\n }\r\n\r\n // lack of items case\r\n const bufferSize = viewport.getScrollableSize() - forward.size - backward.size;\r\n const scrollSize = bwdSize + bufferSize + fwdSize;\r\n const viewportSizeDiff = viewport.getSize() - scrollSize;\r\n if (viewportSizeDiff > 0) {\r\n if (inverse) {\r\n bwdSize += viewportSizeDiff;\r\n } else {\r\n fwdSize += viewportSizeDiff;\r\n }\r\n scroller.logger.log(() =>\r\n inverse ? 'backward' : 'forward' + ` padding will be increased by ${viewportSizeDiff} to fill the viewport`\r\n );\r\n }\r\n\r\n backward.size = bwdSize;\r\n forward.size = fwdSize;\r\n\r\n scroller.logger.stat('after paddings adjustments');\r\n }\r\n\r\n static calculatePosition(scroller: Scroller): number {\r\n const { viewport, buffer, state: { fetch, render, scroll } } = scroller;\r\n let position = viewport.paddings.backward.size;\r\n\r\n // increase the position to meet the expectation of the first visible item\r\n if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {\r\n scroller.logger.log(`first index = ${fetch.firstVisible.index}, delta = ${fetch.firstVisible.delta}`);\r\n const shouldCheckPreSizeExpectation = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);\r\n buffer.items.forEach(item => {\r\n // 1) shift of the buffered items before the first visible item\r\n if (item.$index < fetch.firstVisible.index) {\r\n position += item.size;\r\n return;\r\n }\r\n // 2) delta of the first visible item\r\n if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {\r\n position -= fetch.firstVisible.delta;\r\n }\r\n // 3) difference between expected and real sizes of fetched items after the first visible\r\n if (shouldCheckPreSizeExpectation && item.preSize && fetch.items.includes(item)) {\r\n position += item.size - item.preSize;\r\n }\r\n });\r\n }\r\n\r\n // slow fetch/render case\r\n if (scroll.positionBeforeAsync !== null) {\r\n const diff = render.positionBefore - scroll.positionBeforeAsync;\r\n if (diff !== 0) {\r\n scroller.logger.log(`shift position due to fetch-render difference (${diff})`);\r\n position += diff;\r\n }\r\n }\r\n\r\n // increase the position due to viewport's offset\r\n if (viewport.offset > 0 && (position || fetch.positions.before)) {\r\n position += viewport.offset;\r\n }\r\n\r\n return Math.round(position);\r\n }\r\n\r\n static setAdditionalForwardPadding(scroller: Scroller, position: number): void {\r\n const { viewport, buffer, state: { cycle } } = scroller;\r\n if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {\r\n return;\r\n }\r\n const diff = position - viewport.getMaxScrollPosition();\r\n if (diff <= 0) {\r\n return;\r\n }\r\n const last = buffer.getLastVisibleItem();\r\n if (!last) {\r\n return;\r\n }\r\n let size = 0;\r\n let index = last.$index + 1;\r\n while (size <= diff && index <= buffer.absMaxIndex) {\r\n size += buffer.getSizeByIndex(index++);\r\n }\r\n const shift = Math.min(size, diff);\r\n if (shift) {\r\n viewport.paddings.forward.size += shift;\r\n scroller.logger.log(`increase fwd padding due to lack of items (${diff} -> ${shift})`);\r\n }\r\n }\r\n\r\n static setPosition(scroller: Scroller, position: number, done: () => void): void {\r\n const { state: { scroll }, viewport, routines } = scroller;\r\n if (!scroll.hasPositionChanged(position)) {\r\n return done();\r\n }\r\n scroll.syntheticPosition = position;\r\n scroll.syntheticFulfill = false;\r\n\r\n scroll.cancelAnimation = routines.animate(() => {\r\n scroll.cancelAnimation = null;\r\n const inertiaDiff = (scroll.positionAfterAdjust as number) - viewport.scrollPosition;\r\n let diffLog = '';\r\n if (inertiaDiff > 0) {\r\n position -= inertiaDiff;\r\n scroll.syntheticPosition = position;\r\n diffLog = ` (-${inertiaDiff})`;\r\n }\r\n scroll.syntheticFulfill = true;\r\n viewport.scrollPosition = position;\r\n scroller.logger.stat('after scroll adjustment' + diffLog);\r\n done();\r\n });\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"adjust.js","sourceRoot":"","sources":["../../../src/processes/adjust.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport End from './end';\n\nexport default class Adjust extends BaseProcessFactory(CommonProcess.adjust) {\n static run(scroller: Scroller): void {\n const { workflow, viewport, state } = scroller;\n\n state.scroll.positionBeforeAdjust = viewport.scrollPosition;\n Adjust.setPaddings(scroller);\n state.scroll.positionAfterAdjust = viewport.scrollPosition;\n\n // scroll position adjustments\n const position = Adjust.calculatePosition(scroller);\n\n // additional adjustment if the position can't be reached during the initial cycle\n Adjust.setAdditionalForwardPadding(scroller, position);\n\n // set new position using animation frame\n Adjust.setPosition(scroller, position, () =>\n workflow.call({\n process: Adjust.process,\n status: ProcessStatus.done\n })\n );\n }\n\n static setPaddings(scroller: Scroller): void {\n const { viewport, buffer, settings, state } = scroller;\n const firstItem = buffer.getFirstVisibleItem();\n const lastItem = buffer.getLastVisibleItem();\n let first, last;\n if (firstItem && lastItem) {\n first = firstItem.$index;\n last = lastItem.$index;\n } else {\n const { fetch } = state;\n first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;\n last = first - 1;\n }\n const { forward, backward } = viewport.paddings;\n let index,\n bwdSize = 0,\n fwdSize = 0;\n\n // new backward and forward paddings size\n for (index = buffer.finiteAbsMinIndex; index < first; index++) {\n bwdSize += buffer.getSizeByIndex(index);\n }\n for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {\n fwdSize += buffer.getSizeByIndex(index);\n }\n\n // lack of items case\n const bufferSize = viewport.getScrollableSize() - forward.size - backward.size;\n const scrollSize = bwdSize + bufferSize + fwdSize;\n const viewportSizeDiff = viewport.getSize() - scrollSize;\n if (viewportSizeDiff > 0) {\n if (settings.inverse) {\n bwdSize += viewportSizeDiff;\n } else {\n fwdSize += viewportSizeDiff;\n }\n scroller.logger.log(() =>\n settings.inverse\n ? 'backward'\n : 'forward' + ` padding will be increased by ${viewportSizeDiff} to fill the viewport`\n );\n }\n\n backward.size = bwdSize;\n forward.size = fwdSize;\n\n scroller.logger.stat('after paddings adjustments');\n }\n\n static calculatePosition(scroller: Scroller): number {\n const { viewport, buffer, state } = scroller;\n const { fetch, render, scroll } = state;\n let position = viewport.paddings.backward.size;\n\n // increase the position to meet the expectation of the first visible item\n if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {\n scroller.logger.log(\n `first index = ${fetch.firstVisible.index}, delta = ${fetch.firstVisible.delta}`\n );\n const shouldCheckPreSizeExpectation = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);\n buffer.items.forEach(item => {\n // 1) shift of the buffered items before the first visible item\n if (item.$index < fetch.firstVisible.index) {\n position += item.size;\n return;\n }\n // 2) delta of the first visible item\n if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {\n position -= fetch.firstVisible.delta;\n }\n // 3) difference between expected and real sizes of fetched items after the first visible\n if (shouldCheckPreSizeExpectation && item.preSize && fetch.items.includes(item)) {\n position += item.size - item.preSize;\n }\n });\n }\n\n // slow fetch/render case\n if (scroll.positionBeforeAsync !== null) {\n const diff = render.positionBefore - scroll.positionBeforeAsync;\n if (diff !== 0) {\n scroller.logger.log(`shift position due to fetch-render difference (${diff})`);\n position += diff;\n }\n }\n\n // increase the position due to viewport's offset\n if (viewport.offset > 0 && (position || fetch.positions.before)) {\n position += viewport.offset;\n }\n\n return Math.round(position);\n }\n\n static setAdditionalForwardPadding(scroller: Scroller, position: number): void {\n const { viewport, buffer, state } = scroller;\n if (!state.cycle.isInitial || !End.shouldContinueRun(scroller, null)) {\n return;\n }\n const diff = position - viewport.getMaxScrollPosition();\n if (diff <= 0) {\n return;\n }\n const last = buffer.getLastVisibleItem();\n if (!last) {\n return;\n }\n let size = 0;\n let index = last.$index + 1;\n while (size <= diff && index <= buffer.absMaxIndex) {\n size += buffer.getSizeByIndex(index++);\n }\n const shift = Math.min(size, diff);\n if (shift) {\n viewport.paddings.forward.size += shift;\n scroller.logger.log(`increase fwd padding due to lack of items (${diff} -> ${shift})`);\n }\n }\n\n static setPosition(scroller: Scroller, position: number, done: () => void): void {\n const { state, viewport, routines } = scroller;\n const { scroll } = state;\n if (!scroll.hasPositionChanged(position)) {\n return done();\n }\n scroll.syntheticPosition = position;\n scroll.syntheticFulfill = false;\n\n scroll.cancelAnimation = routines.animate(() => {\n scroll.cancelAnimation = null;\n const inertiaDiff = (scroll.positionAfterAdjust as number) - viewport.scrollPosition;\n let diffLog = '';\n if (inertiaDiff > 0) {\n position -= inertiaDiff;\n scroll.syntheticPosition = position;\n diffLog = ` (-${inertiaDiff})`;\n }\n scroll.syntheticFulfill = true;\n viewport.scrollPosition = position;\n scroller.logger.stat('after scroll adjustment' + diffLog);\n done();\n });\n }\n}\n"]}
@@ -1,50 +1,50 @@
1
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
- import { Direction } from '../inputs/index';
3
- export default class Clip extends BaseProcessFactory(CommonProcess.clip) {
4
- static run(scroller) {
5
- const { workflow } = scroller;
6
- Clip.doClip(scroller);
7
- workflow.call({
8
- process: Clip.process,
9
- status: ProcessStatus.next
10
- });
11
- }
12
- static doClip(scroller) {
13
- const { buffer, viewport: { paddings }, state: { clip }, logger } = scroller;
14
- const size = { [Direction.backward]: 0, [Direction.forward]: 0 };
15
- logger.stat(`before clip (${++clip.callCount})`);
16
- const itemsToRemove = buffer.items.filter(item => {
17
- if (!item.toRemove) {
18
- return false;
19
- }
20
- item.hide();
21
- size[item.removeDirection] += item.size;
22
- return true;
23
- });
24
- if (itemsToRemove.length) {
25
- if (size[Direction.backward]) {
26
- paddings.byDirection(Direction.backward).size += size[Direction.backward];
27
- }
28
- if (size[Direction.forward]) {
29
- paddings.byDirection(Direction.forward).size += size[Direction.forward];
30
- }
31
- if (scroller.settings.onBeforeClip) {
32
- scroller.settings.onBeforeClip(itemsToRemove.map(item => item.get()));
33
- }
34
- }
35
- buffer.clip();
36
- logger.log(() => {
37
- const list = itemsToRemove.map(({ $index }) => $index);
38
- return list.length
39
- ? [
40
- `clipped ${list.length} item(s) from Buffer` +
41
- (size.backward ? `, +${size.backward} fwd px` : '') +
42
- (size.forward ? `, +${size.forward} bwd px` : '') +
43
- `, range: [${list[0]}..${list[list.length - 1]}]`
44
- ]
45
- : 'clipped 0 items from Buffer';
46
- });
47
- logger.stat('after clip');
48
- }
49
- }
1
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
+ import { Direction } from '../inputs/index';
3
+ export default class Clip extends BaseProcessFactory(CommonProcess.clip) {
4
+ static run(scroller) {
5
+ const { workflow } = scroller;
6
+ Clip.doClip(scroller);
7
+ workflow.call({
8
+ process: Clip.process,
9
+ status: ProcessStatus.next
10
+ });
11
+ }
12
+ static doClip(scroller) {
13
+ const { buffer, viewport, state, logger } = scroller;
14
+ const size = { [Direction.backward]: 0, [Direction.forward]: 0 };
15
+ logger.stat(`before clip (${++state.clip.callCount})`);
16
+ const itemsToRemove = buffer.items.filter(item => {
17
+ if (!item.toRemove) {
18
+ return false;
19
+ }
20
+ item.hide();
21
+ size[item.removeDirection] += item.size;
22
+ return true;
23
+ });
24
+ if (itemsToRemove.length) {
25
+ if (size[Direction.backward]) {
26
+ viewport.paddings.byDirection(Direction.backward).size += size[Direction.backward];
27
+ }
28
+ if (size[Direction.forward]) {
29
+ viewport.paddings.byDirection(Direction.forward).size += size[Direction.forward];
30
+ }
31
+ if (scroller.settings.onBeforeClip) {
32
+ scroller.settings.onBeforeClip(itemsToRemove.map(item => item.get()));
33
+ }
34
+ }
35
+ buffer.clip();
36
+ logger.log(() => {
37
+ const list = itemsToRemove.map(({ $index }) => $index);
38
+ return list.length
39
+ ? [
40
+ `clipped ${list.length} item(s) from Buffer` +
41
+ (size.backward ? `, +${size.backward} fwd px` : '') +
42
+ (size.forward ? `, +${size.forward} bwd px` : '') +
43
+ `, range: [${list[0]}..${list[list.length - 1]}]`
44
+ ]
45
+ : 'clipped 0 items from Buffer';
46
+ });
47
+ logger.stat('after clip');
48
+ }
49
+ }
50
50
  //# sourceMappingURL=clip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../src/processes/clip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC;IAEtE,MAAM,CAAC,GAAG,CAAC,QAAkB;QAC3B,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtB,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,QAAkB;QAC9B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC7E,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAEjE,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEjD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,OAAO,KAAK,CAAC;aACd;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,MAAM,EAAE;YACxB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC5B,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC3E;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAC3B,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;aACzE;YACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAClC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;aACvE;SACF;QAED,MAAM,CAAC,IAAI,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;YACd,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,MAAM;gBAChB,CAAC,CAAC;oBACA,WAAW,IAAI,CAAC,MAAM,sBAAsB;wBAC5C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjD,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;iBAClD;gBACD,CAAC,CAAC,6BAA6B,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;CAEF","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport default class Clip extends BaseProcessFactory(CommonProcess.clip) {\r\n\r\n static run(scroller: Scroller): void {\r\n const { workflow } = scroller;\r\n\r\n Clip.doClip(scroller);\r\n\r\n workflow.call({\r\n process: Clip.process,\r\n status: ProcessStatus.next\r\n });\r\n }\r\n\r\n static doClip(scroller: Scroller): void {\r\n const { buffer, viewport: { paddings }, state: { clip }, logger } = scroller;\r\n const size = { [Direction.backward]: 0, [Direction.forward]: 0 };\r\n\r\n logger.stat(`before clip (${++clip.callCount})`);\r\n\r\n const itemsToRemove = buffer.items.filter(item => {\r\n if (!item.toRemove) {\r\n return false;\r\n }\r\n item.hide();\r\n size[item.removeDirection] += item.size;\r\n return true;\r\n });\r\n\r\n if (itemsToRemove.length) {\r\n if (size[Direction.backward]) {\r\n paddings.byDirection(Direction.backward).size += size[Direction.backward];\r\n }\r\n if (size[Direction.forward]) {\r\n paddings.byDirection(Direction.forward).size += size[Direction.forward];\r\n }\r\n if (scroller.settings.onBeforeClip) {\r\n scroller.settings.onBeforeClip(itemsToRemove.map(item => item.get()));\r\n }\r\n }\r\n\r\n buffer.clip();\r\n\r\n logger.log(() => {\r\n const list = itemsToRemove.map(({ $index }) => $index);\r\n return list.length\r\n ? [\r\n `clipped ${list.length} item(s) from Buffer` +\r\n (size.backward ? `, +${size.backward} fwd px` : '') +\r\n (size.forward ? `, +${size.forward} bwd px` : '') +\r\n `, range: [${list[0]}..${list[list.length - 1]}]`\r\n ]\r\n : 'clipped 0 items from Buffer';\r\n });\r\n\r\n logger.stat('after clip');\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../src/processes/clip.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\n\nexport default class Clip extends BaseProcessFactory(CommonProcess.clip) {\n static run(scroller: Scroller): void {\n const { workflow } = scroller;\n\n Clip.doClip(scroller);\n\n workflow.call({\n process: Clip.process,\n status: ProcessStatus.next\n });\n }\n\n static doClip(scroller: Scroller): void {\n const { buffer, viewport, state, logger } = scroller;\n const size = { [Direction.backward]: 0, [Direction.forward]: 0 };\n\n logger.stat(`before clip (${++state.clip.callCount})`);\n\n const itemsToRemove = buffer.items.filter(item => {\n if (!item.toRemove) {\n return false;\n }\n item.hide();\n size[item.removeDirection] += item.size;\n return true;\n });\n\n if (itemsToRemove.length) {\n if (size[Direction.backward]) {\n viewport.paddings.byDirection(Direction.backward).size += size[Direction.backward];\n }\n if (size[Direction.forward]) {\n viewport.paddings.byDirection(Direction.forward).size += size[Direction.forward];\n }\n if (scroller.settings.onBeforeClip) {\n scroller.settings.onBeforeClip(itemsToRemove.map(item => item.get()));\n }\n }\n\n buffer.clip();\n\n logger.log(() => {\n const list = itemsToRemove.map(({ $index }) => $index);\n return list.length\n ? [\n `clipped ${list.length} item(s) from Buffer` +\n (size.backward ? `, +${size.backward} fwd px` : '') +\n (size.forward ? `, +${size.forward} bwd px` : '') +\n `, range: [${list[0]}..${list[list.length - 1]}]`\n ]\n : 'clipped 0 items from Buffer';\n });\n\n logger.stat('after clip');\n }\n}\n"]}
@@ -1,53 +1,54 @@
1
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
- const isInterrupted = ({ call }) => !!call.interrupted;
3
- export default class End extends BaseProcessFactory(CommonProcess.end) {
4
- static run(scroller, { error } = {}) {
5
- const { workflow, state: { cycle: { interrupter } } } = scroller;
6
- if (!error && !interrupter) {
7
- // set out params accessible via Adapter
8
- End.calculateParams(scroller);
9
- }
10
- // explicit interruption for we don't want to go through the inner loop finalizing
11
- if (isInterrupted(workflow)) {
12
- workflow.call({ process: End.process, status: ProcessStatus.done });
13
- return;
14
- }
15
- const next = End.shouldContinueRun(scroller, error);
16
- scroller.state.endInnerLoop();
17
- workflow.call({
18
- process: End.process,
19
- status: next ? ProcessStatus.next : ProcessStatus.done,
20
- payload: Object.assign({}, (interrupter ? { process: interrupter } : {}))
21
- });
22
- }
23
- static calculateParams(scroller) {
24
- const { adapter, workflow } = scroller;
25
- adapter.setFirstOrLastVisible({ first: true, workflow });
26
- adapter.setFirstOrLastVisible({ last: true, workflow });
27
- }
28
- static shouldContinueRun(scroller, error) {
29
- const { cycle, fetch, render } = scroller.state;
30
- // Adapter.reload or Adapter.reset
31
- if (cycle.interrupter) {
32
- return true;
33
- }
34
- // critical error
35
- if (error) {
36
- return false;
37
- }
38
- // Adapter.check
39
- if (fetch.simulate && fetch.isCheck && !render.noSize) {
40
- return true;
41
- }
42
- // Adapter.remove or Adapter.update with clip
43
- if (fetch.simulate && fetch.doRemove) {
44
- return true;
45
- }
46
- // common inner loop (App start, scroll, Adapter.clip) with full fetch
47
- if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
48
- return true;
49
- }
50
- return false;
51
- }
52
- }
1
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
+ const isInterrupted = ({ call }) => !!call.interrupted;
3
+ export default class End extends BaseProcessFactory(CommonProcess.end) {
4
+ static run(scroller, { error } = {}) {
5
+ const { workflow, state } = scroller;
6
+ const { interrupter } = state.cycle;
7
+ if (!error && !interrupter) {
8
+ // set out params accessible via Adapter
9
+ End.calculateParams(scroller);
10
+ }
11
+ // explicit interruption for we don't want to go through the inner loop finalizing
12
+ if (isInterrupted(workflow)) {
13
+ workflow.call({ process: End.process, status: ProcessStatus.done });
14
+ return;
15
+ }
16
+ const next = End.shouldContinueRun(scroller, error);
17
+ scroller.state.endInnerLoop();
18
+ workflow.call({
19
+ process: End.process,
20
+ status: next ? ProcessStatus.next : ProcessStatus.done,
21
+ payload: Object.assign({}, (interrupter ? { process: interrupter } : {}))
22
+ });
23
+ }
24
+ static calculateParams(scroller) {
25
+ const { adapter, workflow } = scroller;
26
+ adapter.setFirstOrLastVisible({ first: true, workflow });
27
+ adapter.setFirstOrLastVisible({ last: true, workflow });
28
+ }
29
+ static shouldContinueRun(scroller, error) {
30
+ const { cycle, fetch, render } = scroller.state;
31
+ // Adapter.reload or Adapter.reset
32
+ if (cycle.interrupter) {
33
+ return true;
34
+ }
35
+ // critical error
36
+ if (error) {
37
+ return false;
38
+ }
39
+ // Adapter.check
40
+ if (fetch.simulate && fetch.isCheck && !render.noSize) {
41
+ return true;
42
+ }
43
+ // Adapter.remove or Adapter.update with clip
44
+ if (fetch.simulate && fetch.doRemove) {
45
+ return true;
46
+ }
47
+ // common inner loop (App start, scroll, Adapter.clip) with full fetch
48
+ if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
49
+ return true;
50
+ }
51
+ return false;
52
+ }
53
+ }
53
54
  //# sourceMappingURL=end.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhF,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC;IAEpE,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,EAAE,KAAK,KAA0B,EAAE;QAChE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC;QAEjE,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE;YAC1B,wCAAwC;YACxC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;SAC/B;QAED,kFAAkF;QAClF,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO;SACR;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;YACtD,OAAO,oBAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,QAAkB;QACvC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAEvC,OAAO,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,QAAkB,EAAE,KAAc;QACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAChD,kCAAkC;QAClC,IAAI,KAAK,CAAC,WAAW,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,iBAAiB;QACjB,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QACD,gBAAgB;QAChB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACrD,OAAO,IAAI,CAAC;SACb;QACD,6CAA6C;QAC7C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;QACD,sEAAsE;QACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE;YACtF,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CAEF","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { ScrollerWorkflow } from '../interfaces/index';\r\n\r\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\r\n\r\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\r\n\r\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\r\n const { workflow, state: { cycle: { interrupter } } } = scroller;\r\n\r\n if (!error && !interrupter) {\r\n // set out params accessible via Adapter\r\n End.calculateParams(scroller);\r\n }\r\n\r\n // explicit interruption for we don't want to go through the inner loop finalizing\r\n if (isInterrupted(workflow)) {\r\n workflow.call({ process: End.process, status: ProcessStatus.done });\r\n return;\r\n }\r\n\r\n const next = End.shouldContinueRun(scroller, error);\r\n scroller.state.endInnerLoop();\r\n\r\n workflow.call({\r\n process: End.process,\r\n status: next ? ProcessStatus.next : ProcessStatus.done,\r\n payload: { ...(interrupter ? { process: interrupter } : {}) }\r\n });\r\n }\r\n\r\n static calculateParams(scroller: Scroller): void {\r\n const { adapter, workflow } = scroller;\r\n\r\n adapter.setFirstOrLastVisible({ first: true, workflow });\r\n adapter.setFirstOrLastVisible({ last: true, workflow });\r\n }\r\n\r\n static shouldContinueRun(scroller: Scroller, error: unknown): boolean {\r\n const { cycle, fetch, render } = scroller.state;\r\n // Adapter.reload or Adapter.reset\r\n if (cycle.interrupter) {\r\n return true;\r\n }\r\n // critical error\r\n if (error) {\r\n return false;\r\n }\r\n // Adapter.check\r\n if (fetch.simulate && fetch.isCheck && !render.noSize) {\r\n return true;\r\n }\r\n // Adapter.remove or Adapter.update with clip\r\n if (fetch.simulate && fetch.doRemove) {\r\n return true;\r\n }\r\n // common inner loop (App start, scroll, Adapter.clip) with full fetch\r\n if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhF,MAAM,aAAa,GAAG,CAAC,EAAE,IAAI,EAAoB,EAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,EAAE,KAAK,KAA0B,EAAE;QAChE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QACrC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,wCAAwC;YACxC,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,kFAAkF;QAClF,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;YACtD,OAAO,oBAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,QAAkB;QACvC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAEvC,OAAO,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,QAAkB,EAAE,KAAc;QACzD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QAChD,kCAAkC;QAClC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,iBAAiB;QACjB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QACD,gBAAgB;QAChB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,6CAA6C;QAC7C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YACvF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { ScrollerWorkflow } from '../interfaces/index';\n\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\n\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\n const { workflow, state } = scroller;\n const { interrupter } = state.cycle;\n\n if (!error && !interrupter) {\n // set out params accessible via Adapter\n End.calculateParams(scroller);\n }\n\n // explicit interruption for we don't want to go through the inner loop finalizing\n if (isInterrupted(workflow)) {\n workflow.call({ process: End.process, status: ProcessStatus.done });\n return;\n }\n\n const next = End.shouldContinueRun(scroller, error);\n scroller.state.endInnerLoop();\n\n workflow.call({\n process: End.process,\n status: next ? ProcessStatus.next : ProcessStatus.done,\n payload: { ...(interrupter ? { process: interrupter } : {}) }\n });\n }\n\n static calculateParams(scroller: Scroller): void {\n const { adapter, workflow } = scroller;\n\n adapter.setFirstOrLastVisible({ first: true, workflow });\n adapter.setFirstOrLastVisible({ last: true, workflow });\n }\n\n static shouldContinueRun(scroller: Scroller, error: unknown): boolean {\n const { cycle, fetch, render } = scroller.state;\n // Adapter.reload or Adapter.reset\n if (cycle.interrupter) {\n return true;\n }\n // critical error\n if (error) {\n return false;\n }\n // Adapter.check\n if (fetch.simulate && fetch.isCheck && !render.noSize) {\n return true;\n }\n // Adapter.remove or Adapter.update with clip\n if (fetch.simulate && fetch.doRemove) {\n return true;\n }\n // common inner loop (App start, scroll, Adapter.clip) with full fetch\n if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {\n return true;\n }\n return false;\n }\n}\n"]}