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 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/processes/adapter/update.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { Item } from '../../classes/item';\nimport { Direction } from '../../inputs/index';\nimport { AdapterUpdateOptions } from '../../interfaces/index';\n\nexport default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {\n\n static run(scroller: Scroller, options: AdapterUpdateOptions): void {\n const { params } = Update.parseInput(scroller, options);\n if (!params) {\n return;\n }\n\n const shouldUpdate = Update.doUpdate(scroller, params);\n\n scroller.workflow.call({\n process: Update.process,\n status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doUpdate(scroller: Scroller, params: AdapterUpdateOptions): boolean {\n const { buffer, viewport, state: { fetch }, routines, logger } = scroller;\n if (!buffer.items) {\n logger.log(() => 'no items in Buffer');\n return false;\n }\n const { item: firstItem, index: firstIndex, diff: firstItemDiff } =\n viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\n\n const { trackedIndex, toRemove } = buffer.updateItems(\n params.predicate,\n (index, data) => new Item(index, data, routines),\n firstIndex,\n !!params.fixRight\n );\n\n let delta = 0;\n const trackedItem = buffer.get(trackedIndex);\n if (firstItem && firstItem === trackedItem) {\n delta = - buffer.getSizeByIndex(trackedIndex) + firstItemDiff;\n }\n\n toRemove.forEach(item => item.hide());\n logger.log(() => toRemove.length\n ? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'\n : 'no items to remove'\n );\n if (toRemove.length) { // insertions will be processed on render\n buffer.checkDefaultSize();\n }\n\n const toRender = buffer.items.filter(({ toInsert }) => toInsert);\n logger.log(() => toRender.length\n ? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'\n : 'no items to render'\n );\n\n fetch.update(trackedIndex, delta, toRender, toRemove);\n return !!toRemove.length || !!toRender.length;\n }\n\n}\n"]}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/processes/adapter/update.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { Item } from '../../classes/item';\r\nimport { Direction } from '../../inputs/index';\r\nimport { AdapterUpdateOptions } from '../../interfaces/index';\r\n\r\nexport default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {\r\n\r\n static run(scroller: Scroller, options: AdapterUpdateOptions): void {\r\n const { params } = Update.parseInput(scroller, options);\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const shouldUpdate = Update.doUpdate(scroller, params);\r\n\r\n scroller.workflow.call({\r\n process: Update.process,\r\n status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n static doUpdate(scroller: Scroller, params: AdapterUpdateOptions): boolean {\r\n const { buffer, viewport, state: { fetch }, routines, logger } = scroller;\r\n if (!buffer.items) {\r\n logger.log(() => 'no items in Buffer');\r\n return false;\r\n }\r\n const { item: firstItem, index: firstIndex, diff: firstItemDiff } =\r\n viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\r\n\r\n const { trackedIndex, toRemove } = buffer.updateItems(\r\n params.predicate,\r\n (index, data) => new Item(index, data, routines),\r\n firstIndex,\r\n !!params.fixRight\r\n );\r\n\r\n let delta = 0;\r\n const trackedItem = buffer.get(trackedIndex);\r\n if (firstItem && firstItem === trackedItem) {\r\n delta = - buffer.getSizeByIndex(trackedIndex) + firstItemDiff;\r\n }\r\n\r\n toRemove.forEach(item => item.hide());\r\n logger.log(() => toRemove.length\r\n ? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'\r\n : 'no items to remove'\r\n );\r\n if (toRemove.length) { // insertions will be processed on render\r\n buffer.checkDefaultSize();\r\n }\r\n\r\n const toRender = buffer.items.filter(({ toInsert }) => toInsert);\r\n logger.log(() => toRender.length\r\n ? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'\r\n : 'no items to render'\r\n );\r\n\r\n fetch.update(trackedIndex, delta, toRender, toRemove);\r\n return !!toRemove.length || !!toRender.length;\r\n }\r\n\r\n}\r\n"]}
@@ -1,153 +1,153 @@
1
- import { __extends } from "tslib";
2
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- import End from './end';
4
- var Adjust = /** @class */ (function (_super) {
5
- __extends(Adjust, _super);
6
- function Adjust() {
7
- return _super !== null && _super.apply(this, arguments) || this;
8
- }
9
- Adjust.run = function (scroller) {
10
- var workflow = scroller.workflow, viewport = scroller.viewport, scroll = scroller.state.scroll;
11
- scroll.positionBeforeAdjust = viewport.scrollPosition;
12
- Adjust.setPaddings(scroller);
13
- scroll.positionAfterAdjust = viewport.scrollPosition;
14
- // scroll position adjustments
15
- var position = Adjust.calculatePosition(scroller);
16
- // additional adjustment if the position can't be reached during the initial cycle
17
- Adjust.setAdditionalForwardPadding(scroller, position);
18
- // set new position using animation frame
19
- Adjust.setPosition(scroller, position, function () {
20
- return workflow.call({
21
- process: Adjust.process,
22
- status: ProcessStatus.done
23
- });
24
- });
25
- };
26
- Adjust.setPaddings = function (scroller) {
27
- var viewport = scroller.viewport, buffer = scroller.buffer, inverse = scroller.settings.inverse, fetch = scroller.state.fetch;
28
- var firstItem = buffer.getFirstVisibleItem();
29
- var lastItem = buffer.getLastVisibleItem();
30
- var first, last;
31
- if (firstItem && lastItem) {
32
- first = firstItem.$index;
33
- last = lastItem.$index;
34
- }
35
- else {
36
- first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;
37
- last = first - 1;
38
- }
39
- var _a = viewport.paddings, forward = _a.forward, backward = _a.backward;
40
- var index, bwdSize = 0, fwdSize = 0;
41
- // new backward and forward paddings size
42
- for (index = buffer.finiteAbsMinIndex; index < first; index++) {
43
- bwdSize += buffer.getSizeByIndex(index);
44
- }
45
- for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
46
- fwdSize += buffer.getSizeByIndex(index);
47
- }
48
- // lack of items case
49
- var bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
50
- var scrollSize = bwdSize + bufferSize + fwdSize;
51
- var viewportSizeDiff = viewport.getSize() - scrollSize;
52
- if (viewportSizeDiff > 0) {
53
- if (inverse) {
54
- bwdSize += viewportSizeDiff;
55
- }
56
- else {
57
- fwdSize += viewportSizeDiff;
58
- }
59
- scroller.logger.log(function () {
60
- return inverse ? 'backward' : 'forward' + " padding will be increased by ".concat(viewportSizeDiff, " to fill the viewport");
61
- });
62
- }
63
- backward.size = bwdSize;
64
- forward.size = fwdSize;
65
- scroller.logger.stat('after paddings adjustments');
66
- };
67
- Adjust.calculatePosition = function (scroller) {
68
- var viewport = scroller.viewport, buffer = scroller.buffer, _a = scroller.state, fetch = _a.fetch, render = _a.render, scroll = _a.scroll;
69
- var position = viewport.paddings.backward.size;
70
- // increase the position to meet the expectation of the first visible item
71
- if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
72
- scroller.logger.log("first index = ".concat(fetch.firstVisible.index, ", delta = ").concat(fetch.firstVisible.delta));
73
- var shouldCheckPreSizeExpectation_1 = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
74
- buffer.items.forEach(function (item) {
75
- // 1) shift of the buffered items before the first visible item
76
- if (item.$index < fetch.firstVisible.index) {
77
- position += item.size;
78
- return;
79
- }
80
- // 2) delta of the first visible item
81
- if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
82
- position -= fetch.firstVisible.delta;
83
- }
84
- // 3) difference between expected and real sizes of fetched items after the first visible
85
- if (shouldCheckPreSizeExpectation_1 && item.preSize && fetch.items.includes(item)) {
86
- position += item.size - item.preSize;
87
- }
88
- });
89
- }
90
- // slow fetch/render case
91
- if (scroll.positionBeforeAsync !== null) {
92
- var diff = render.positionBefore - scroll.positionBeforeAsync;
93
- if (diff !== 0) {
94
- scroller.logger.log("shift position due to fetch-render difference (".concat(diff, ")"));
95
- position += diff;
96
- }
97
- }
98
- // increase the position due to viewport's offset
99
- if (viewport.offset > 0 && (position || fetch.positions.before)) {
100
- position += viewport.offset;
101
- }
102
- return Math.round(position);
103
- };
104
- Adjust.setAdditionalForwardPadding = function (scroller, position) {
105
- var viewport = scroller.viewport, buffer = scroller.buffer, cycle = scroller.state.cycle;
106
- if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
107
- return;
108
- }
109
- var diff = position - viewport.getMaxScrollPosition();
110
- if (diff <= 0) {
111
- return;
112
- }
113
- var last = buffer.getLastVisibleItem();
114
- if (!last) {
115
- return;
116
- }
117
- var size = 0;
118
- var index = last.$index + 1;
119
- while (size <= diff && index <= buffer.absMaxIndex) {
120
- size += buffer.getSizeByIndex(index++);
121
- }
122
- var shift = Math.min(size, diff);
123
- if (shift) {
124
- viewport.paddings.forward.size += shift;
125
- scroller.logger.log("increase fwd padding due to lack of items (".concat(diff, " -> ").concat(shift, ")"));
126
- }
127
- };
128
- Adjust.setPosition = function (scroller, position, done) {
129
- var scroll = scroller.state.scroll, viewport = scroller.viewport, routines = scroller.routines;
130
- if (!scroll.hasPositionChanged(position)) {
131
- return done();
132
- }
133
- scroll.syntheticPosition = position;
134
- scroll.syntheticFulfill = false;
135
- scroll.cancelAnimation = routines.animate(function () {
136
- scroll.cancelAnimation = null;
137
- var inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
138
- var diffLog = '';
139
- if (inertiaDiff > 0) {
140
- position -= inertiaDiff;
141
- scroll.syntheticPosition = position;
142
- diffLog = " (-".concat(inertiaDiff, ")");
143
- }
144
- scroll.syntheticFulfill = true;
145
- viewport.scrollPosition = position;
146
- scroller.logger.stat('after scroll adjustment' + diffLog);
147
- done();
148
- });
149
- };
150
- return Adjust;
151
- }(BaseProcessFactory(CommonProcess.adjust)));
152
- export default Adjust;
1
+ import { __extends } from "tslib";
2
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
+ import End from './end';
4
+ var Adjust = /** @class */ (function (_super) {
5
+ __extends(Adjust, _super);
6
+ function Adjust() {
7
+ return _super !== null && _super.apply(this, arguments) || this;
8
+ }
9
+ Adjust.run = function (scroller) {
10
+ var workflow = scroller.workflow, viewport = scroller.viewport, scroll = scroller.state.scroll;
11
+ scroll.positionBeforeAdjust = viewport.scrollPosition;
12
+ Adjust.setPaddings(scroller);
13
+ scroll.positionAfterAdjust = viewport.scrollPosition;
14
+ // scroll position adjustments
15
+ var position = Adjust.calculatePosition(scroller);
16
+ // additional adjustment if the position can't be reached during the initial cycle
17
+ Adjust.setAdditionalForwardPadding(scroller, position);
18
+ // set new position using animation frame
19
+ Adjust.setPosition(scroller, position, function () {
20
+ return workflow.call({
21
+ process: Adjust.process,
22
+ status: ProcessStatus.done
23
+ });
24
+ });
25
+ };
26
+ Adjust.setPaddings = function (scroller) {
27
+ var viewport = scroller.viewport, buffer = scroller.buffer, inverse = scroller.settings.inverse, fetch = scroller.state.fetch;
28
+ var firstItem = buffer.getFirstVisibleItem();
29
+ var lastItem = buffer.getLastVisibleItem();
30
+ var first, last;
31
+ if (firstItem && lastItem) {
32
+ first = firstItem.$index;
33
+ last = lastItem.$index;
34
+ }
35
+ else {
36
+ first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;
37
+ last = first - 1;
38
+ }
39
+ var _a = viewport.paddings, forward = _a.forward, backward = _a.backward;
40
+ var index, bwdSize = 0, fwdSize = 0;
41
+ // new backward and forward paddings size
42
+ for (index = buffer.finiteAbsMinIndex; index < first; index++) {
43
+ bwdSize += buffer.getSizeByIndex(index);
44
+ }
45
+ for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
46
+ fwdSize += buffer.getSizeByIndex(index);
47
+ }
48
+ // lack of items case
49
+ var bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
50
+ var scrollSize = bwdSize + bufferSize + fwdSize;
51
+ var viewportSizeDiff = viewport.getSize() - scrollSize;
52
+ if (viewportSizeDiff > 0) {
53
+ if (inverse) {
54
+ bwdSize += viewportSizeDiff;
55
+ }
56
+ else {
57
+ fwdSize += viewportSizeDiff;
58
+ }
59
+ scroller.logger.log(function () {
60
+ return inverse ? 'backward' : 'forward' + " padding will be increased by ".concat(viewportSizeDiff, " to fill the viewport");
61
+ });
62
+ }
63
+ backward.size = bwdSize;
64
+ forward.size = fwdSize;
65
+ scroller.logger.stat('after paddings adjustments');
66
+ };
67
+ Adjust.calculatePosition = function (scroller) {
68
+ var viewport = scroller.viewport, buffer = scroller.buffer, _a = scroller.state, fetch = _a.fetch, render = _a.render, scroll = _a.scroll;
69
+ var position = viewport.paddings.backward.size;
70
+ // increase the position to meet the expectation of the first visible item
71
+ if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
72
+ scroller.logger.log("first index = ".concat(fetch.firstVisible.index, ", delta = ").concat(fetch.firstVisible.delta));
73
+ var shouldCheckPreSizeExpectation_1 = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
74
+ buffer.items.forEach(function (item) {
75
+ // 1) shift of the buffered items before the first visible item
76
+ if (item.$index < fetch.firstVisible.index) {
77
+ position += item.size;
78
+ return;
79
+ }
80
+ // 2) delta of the first visible item
81
+ if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
82
+ position -= fetch.firstVisible.delta;
83
+ }
84
+ // 3) difference between expected and real sizes of fetched items after the first visible
85
+ if (shouldCheckPreSizeExpectation_1 && item.preSize && fetch.items.includes(item)) {
86
+ position += item.size - item.preSize;
87
+ }
88
+ });
89
+ }
90
+ // slow fetch/render case
91
+ if (scroll.positionBeforeAsync !== null) {
92
+ var diff = render.positionBefore - scroll.positionBeforeAsync;
93
+ if (diff !== 0) {
94
+ scroller.logger.log("shift position due to fetch-render difference (".concat(diff, ")"));
95
+ position += diff;
96
+ }
97
+ }
98
+ // increase the position due to viewport's offset
99
+ if (viewport.offset > 0 && (position || fetch.positions.before)) {
100
+ position += viewport.offset;
101
+ }
102
+ return Math.round(position);
103
+ };
104
+ Adjust.setAdditionalForwardPadding = function (scroller, position) {
105
+ var viewport = scroller.viewport, buffer = scroller.buffer, cycle = scroller.state.cycle;
106
+ if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
107
+ return;
108
+ }
109
+ var diff = position - viewport.getMaxScrollPosition();
110
+ if (diff <= 0) {
111
+ return;
112
+ }
113
+ var last = buffer.getLastVisibleItem();
114
+ if (!last) {
115
+ return;
116
+ }
117
+ var size = 0;
118
+ var index = last.$index + 1;
119
+ while (size <= diff && index <= buffer.absMaxIndex) {
120
+ size += buffer.getSizeByIndex(index++);
121
+ }
122
+ var shift = Math.min(size, diff);
123
+ if (shift) {
124
+ viewport.paddings.forward.size += shift;
125
+ scroller.logger.log("increase fwd padding due to lack of items (".concat(diff, " -> ").concat(shift, ")"));
126
+ }
127
+ };
128
+ Adjust.setPosition = function (scroller, position, done) {
129
+ var scroll = scroller.state.scroll, viewport = scroller.viewport, routines = scroller.routines;
130
+ if (!scroll.hasPositionChanged(position)) {
131
+ return done();
132
+ }
133
+ scroll.syntheticPosition = position;
134
+ scroll.syntheticFulfill = false;
135
+ scroll.cancelAnimation = routines.animate(function () {
136
+ scroll.cancelAnimation = null;
137
+ var inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
138
+ var diffLog = '';
139
+ if (inertiaDiff > 0) {
140
+ position -= inertiaDiff;
141
+ scroll.syntheticPosition = position;
142
+ diffLog = " (-".concat(inertiaDiff, ")");
143
+ }
144
+ scroll.syntheticFulfill = true;
145
+ viewport.scrollPosition = position;
146
+ scroller.logger.stat('after scroll adjustment' + diffLog);
147
+ done();
148
+ });
149
+ };
150
+ return Adjust;
151
+ }(BaseProcessFactory(CommonProcess.adjust)));
152
+ export default Adjust;
153
153
  //# sourceMappingURL=adjust.js.map
@@ -1,61 +1,61 @@
1
- import { __extends } from "tslib";
2
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- import { Direction } from '../inputs/index';
4
- var Clip = /** @class */ (function (_super) {
5
- __extends(Clip, _super);
6
- function Clip() {
7
- return _super !== null && _super.apply(this, arguments) || this;
8
- }
9
- Clip.run = function (scroller) {
10
- var workflow = scroller.workflow;
11
- Clip.doClip(scroller);
12
- workflow.call({
13
- process: Clip.process,
14
- status: ProcessStatus.next
15
- });
16
- };
17
- Clip.doClip = function (scroller) {
18
- var _a;
19
- var buffer = scroller.buffer, paddings = scroller.viewport.paddings, clip = scroller.state.clip, logger = scroller.logger;
20
- var size = (_a = {}, _a[Direction.backward] = 0, _a[Direction.forward] = 0, _a);
21
- logger.stat("before clip (".concat(++clip.callCount, ")"));
22
- var itemsToRemove = buffer.items.filter(function (item) {
23
- if (!item.toRemove) {
24
- return false;
25
- }
26
- item.hide();
27
- size[item.removeDirection] += item.size;
28
- return true;
29
- });
30
- if (itemsToRemove.length) {
31
- if (size[Direction.backward]) {
32
- paddings.byDirection(Direction.backward).size += size[Direction.backward];
33
- }
34
- if (size[Direction.forward]) {
35
- paddings.byDirection(Direction.forward).size += size[Direction.forward];
36
- }
37
- if (scroller.settings.onBeforeClip) {
38
- scroller.settings.onBeforeClip(itemsToRemove.map(function (item) { return item.get(); }));
39
- }
40
- }
41
- buffer.clip();
42
- logger.log(function () {
43
- var list = itemsToRemove.map(function (_a) {
44
- var $index = _a.$index;
45
- return $index;
46
- });
47
- return list.length
48
- ? [
49
- "clipped ".concat(list.length, " item(s) from Buffer") +
50
- (size.backward ? ", +".concat(size.backward, " fwd px") : '') +
51
- (size.forward ? ", +".concat(size.forward, " bwd px") : '') +
52
- ", range: [".concat(list[0], "..").concat(list[list.length - 1], "]")
53
- ]
54
- : 'clipped 0 items from Buffer';
55
- });
56
- logger.stat('after clip');
57
- };
58
- return Clip;
59
- }(BaseProcessFactory(CommonProcess.clip)));
60
- export default Clip;
1
+ import { __extends } from "tslib";
2
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
+ import { Direction } from '../inputs/index';
4
+ var Clip = /** @class */ (function (_super) {
5
+ __extends(Clip, _super);
6
+ function Clip() {
7
+ return _super !== null && _super.apply(this, arguments) || this;
8
+ }
9
+ Clip.run = function (scroller) {
10
+ var workflow = scroller.workflow;
11
+ Clip.doClip(scroller);
12
+ workflow.call({
13
+ process: Clip.process,
14
+ status: ProcessStatus.next
15
+ });
16
+ };
17
+ Clip.doClip = function (scroller) {
18
+ var _a;
19
+ var buffer = scroller.buffer, paddings = scroller.viewport.paddings, clip = scroller.state.clip, logger = scroller.logger;
20
+ var size = (_a = {}, _a[Direction.backward] = 0, _a[Direction.forward] = 0, _a);
21
+ logger.stat("before clip (".concat(++clip.callCount, ")"));
22
+ var itemsToRemove = buffer.items.filter(function (item) {
23
+ if (!item.toRemove) {
24
+ return false;
25
+ }
26
+ item.hide();
27
+ size[item.removeDirection] += item.size;
28
+ return true;
29
+ });
30
+ if (itemsToRemove.length) {
31
+ if (size[Direction.backward]) {
32
+ paddings.byDirection(Direction.backward).size += size[Direction.backward];
33
+ }
34
+ if (size[Direction.forward]) {
35
+ paddings.byDirection(Direction.forward).size += size[Direction.forward];
36
+ }
37
+ if (scroller.settings.onBeforeClip) {
38
+ scroller.settings.onBeforeClip(itemsToRemove.map(function (item) { return item.get(); }));
39
+ }
40
+ }
41
+ buffer.clip();
42
+ logger.log(function () {
43
+ var list = itemsToRemove.map(function (_a) {
44
+ var $index = _a.$index;
45
+ return $index;
46
+ });
47
+ return list.length
48
+ ? [
49
+ "clipped ".concat(list.length, " item(s) from Buffer") +
50
+ (size.backward ? ", +".concat(size.backward, " fwd px") : '') +
51
+ (size.forward ? ", +".concat(size.forward, " bwd px") : '') +
52
+ ", range: [".concat(list[0], "..").concat(list[list.length - 1], "]")
53
+ ]
54
+ : 'clipped 0 items from Buffer';
55
+ });
56
+ logger.stat('after clip');
57
+ };
58
+ return Clip;
59
+ }(BaseProcessFactory(CommonProcess.clip)));
60
+ export default Clip;
61
61
  //# sourceMappingURL=clip.js.map
@@ -1,64 +1,64 @@
1
- import { __assign, __extends } from "tslib";
2
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- var isInterrupted = function (_a) {
4
- var call = _a.call;
5
- return !!call.interrupted;
6
- };
7
- var End = /** @class */ (function (_super) {
8
- __extends(End, _super);
9
- function End() {
10
- return _super !== null && _super.apply(this, arguments) || this;
11
- }
12
- End.run = function (scroller, _a) {
13
- var _b = _a === void 0 ? {} : _a, error = _b.error;
14
- var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
15
- if (!error && !interrupter) {
16
- // set out params accessible via Adapter
17
- End.calculateParams(scroller);
18
- }
19
- // explicit interruption for we don't want to go through the inner loop finalizing
20
- if (isInterrupted(workflow)) {
21
- workflow.call({ process: End.process, status: ProcessStatus.done });
22
- return;
23
- }
24
- var next = End.shouldContinueRun(scroller, error);
25
- scroller.state.endInnerLoop();
26
- workflow.call({
27
- process: End.process,
28
- status: next ? ProcessStatus.next : ProcessStatus.done,
29
- payload: __assign({}, (interrupter ? { process: interrupter } : {}))
30
- });
31
- };
32
- End.calculateParams = function (scroller) {
33
- var adapter = scroller.adapter, workflow = scroller.workflow;
34
- adapter.setFirstOrLastVisible({ first: true, workflow: workflow });
35
- adapter.setFirstOrLastVisible({ last: true, workflow: workflow });
36
- };
37
- End.shouldContinueRun = function (scroller, error) {
38
- var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch, render = _a.render;
39
- // Adapter.reload or Adapter.reset
40
- if (cycle.interrupter) {
41
- return true;
42
- }
43
- // critical error
44
- if (error) {
45
- return false;
46
- }
47
- // Adapter.check
48
- if (fetch.simulate && fetch.isCheck && !render.noSize) {
49
- return true;
50
- }
51
- // Adapter.remove or Adapter.update with clip
52
- if (fetch.simulate && fetch.doRemove) {
53
- return true;
54
- }
55
- // common inner loop (App start, scroll, Adapter.clip) with full fetch
56
- if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
57
- return true;
58
- }
59
- return false;
60
- };
61
- return End;
62
- }(BaseProcessFactory(CommonProcess.end)));
63
- export default End;
1
+ import { __assign, __extends } from "tslib";
2
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
+ var isInterrupted = function (_a) {
4
+ var call = _a.call;
5
+ return !!call.interrupted;
6
+ };
7
+ var End = /** @class */ (function (_super) {
8
+ __extends(End, _super);
9
+ function End() {
10
+ return _super !== null && _super.apply(this, arguments) || this;
11
+ }
12
+ End.run = function (scroller, _a) {
13
+ var _b = _a === void 0 ? {} : _a, error = _b.error;
14
+ var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
15
+ if (!error && !interrupter) {
16
+ // set out params accessible via Adapter
17
+ End.calculateParams(scroller);
18
+ }
19
+ // explicit interruption for we don't want to go through the inner loop finalizing
20
+ if (isInterrupted(workflow)) {
21
+ workflow.call({ process: End.process, status: ProcessStatus.done });
22
+ return;
23
+ }
24
+ var next = End.shouldContinueRun(scroller, error);
25
+ scroller.state.endInnerLoop();
26
+ workflow.call({
27
+ process: End.process,
28
+ status: next ? ProcessStatus.next : ProcessStatus.done,
29
+ payload: __assign({}, (interrupter ? { process: interrupter } : {}))
30
+ });
31
+ };
32
+ End.calculateParams = function (scroller) {
33
+ var adapter = scroller.adapter, workflow = scroller.workflow;
34
+ adapter.setFirstOrLastVisible({ first: true, workflow: workflow });
35
+ adapter.setFirstOrLastVisible({ last: true, workflow: workflow });
36
+ };
37
+ End.shouldContinueRun = function (scroller, error) {
38
+ var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch, render = _a.render;
39
+ // Adapter.reload or Adapter.reset
40
+ if (cycle.interrupter) {
41
+ return true;
42
+ }
43
+ // critical error
44
+ if (error) {
45
+ return false;
46
+ }
47
+ // Adapter.check
48
+ if (fetch.simulate && fetch.isCheck && !render.noSize) {
49
+ return true;
50
+ }
51
+ // Adapter.remove or Adapter.update with clip
52
+ if (fetch.simulate && fetch.doRemove) {
53
+ return true;
54
+ }
55
+ // common inner loop (App start, scroll, Adapter.clip) with full fetch
56
+ if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
57
+ return true;
58
+ }
59
+ return false;
60
+ };
61
+ return End;
62
+ }(BaseProcessFactory(CommonProcess.end)));
63
+ export default End;
64
64
  //# 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,IAAM,aAAa,GAAG,UAAC,EAA0B;QAAxB,IAAI,UAAA;IAAkC,OAAA,CAAC,CAAC,IAAI,CAAC,WAAW;AAAlB,CAAkB,CAAC;AAElF;IAAiC,uBAAqC;IAAtE;;IA0DA,CAAC;IAxDQ,OAAG,GAAV,UAAW,QAAkB,EAAE,EAAmC;YAAnC,qBAAiC,EAAE,KAAA,EAAjC,KAAK,WAAA;QAC5B,IAAA,QAAQ,GAAwC,QAAQ,SAAhD,EAAoB,WAAW,GAAS,QAAQ,wBAAjB,CAAkB;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,IAAM,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,eAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAEM,mBAAe,GAAtB,UAAuB,QAAkB;QAC/B,IAAA,OAAO,GAAe,QAAQ,QAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAEvC,OAAO,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEM,qBAAiB,GAAxB,UAAyB,QAAkB,EAAE,KAAc;QACnD,IAAA,KAA2B,QAAQ,CAAC,KAAK,EAAvC,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAmB,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;IAEH,UAAC;AAAD,CAAC,AA1DD,CAAiC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,GA0DrE","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\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\n const { workflow, state: { cycle: { interrupter } } } = scroller;\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}\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,IAAM,aAAa,GAAG,UAAC,EAA0B;QAAxB,IAAI,UAAA;IAAkC,OAAA,CAAC,CAAC,IAAI,CAAC,WAAW;AAAlB,CAAkB,CAAC;AAElF;IAAiC,uBAAqC;IAAtE;;IA0DA,CAAC;IAxDQ,OAAG,GAAV,UAAW,QAAkB,EAAE,EAAmC;YAAnC,qBAAiC,EAAE,KAAA,EAAjC,KAAK,WAAA;QAC5B,IAAA,QAAQ,GAAwC,QAAQ,SAAhD,EAAoB,WAAW,GAAS,QAAQ,wBAAjB,CAAkB;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,IAAM,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,eAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAEM,mBAAe,GAAtB,UAAuB,QAAkB;QAC/B,IAAA,OAAO,GAAe,QAAQ,QAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAEvC,OAAO,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEM,qBAAiB,GAAxB,UAAyB,QAAkB,EAAE,KAAc;QACnD,IAAA,KAA2B,QAAQ,CAAC,KAAK,EAAvC,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,MAAM,YAAmB,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;IAEH,UAAC;AAAD,CAAC,AA1DD,CAAiC,kBAAkB,CAAC,aAAa,CAAC,GAAG,CAAC,GA0DrE","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"]}