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 +1 @@
1
- {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/processes/adapter/reset.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF;IAAmC,yBAA+C;IAAlF;;IAqCA,CAAC;IAnCQ,SAAG,GAAV,UAAW,QAAkB,EAAE,OAA6B;QAClD,IAAA,UAAU,GAAuD,QAAQ,WAA/D,EAAE,MAAM,GAA+C,QAAQ,OAAvD,EAAc,QAAQ,GAAyB,QAAQ,kBAAjC,EAAa,KAAK,GAAO,QAAQ,YAAf,CAAgB;QAElF,IAAI,OAAO,EAAE;YACH,IAAA,MAAI,GAAK,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAxC,CAAyC;YACrD,IAAI,CAAC,MAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;aACR;YACD,IAAM,aAAW,GAAG,OAAO,YAAY,UAAU,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gBACtC,IAAM,KAAK,GAAG,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,UAAmD,CAAC;gBAC/D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,aAAW,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC3C,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;iBACvB;YACH,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAEzB,IAAM,OAAO,GAAmB,EAAE,UAAU,YAAA,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;YACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;SACnC;QAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC;IAEH,YAAC;AAAD,CAAC,AArCD,CAAmC,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC,GAqCjF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport { DatasourceProps } from '../../inputs/index';\r\nimport { Datasource } from '../../classes/datasource';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { IDatasourceOptional, ProcessPayload } from '../../interfaces/index';\r\n\r\nexport default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {\r\n\r\n static run(scroller: Scroller, options?: IDatasourceOptional): void {\r\n const { datasource, buffer, viewport: { paddings }, state: { cycle } } = scroller;\r\n\r\n if (options) {\r\n const { data } = Reset.parseInput(scroller, options);\r\n if (!data.isValid) {\r\n return;\r\n }\r\n const constructed = options instanceof Datasource;\r\n Object.keys(DatasourceProps).forEach(key => {\r\n const param = data.params[key];\r\n const ds = datasource as unknown as { [key: string]: unknown };\r\n if (param.isSet || (constructed && ds[key])) {\r\n ds[key] = param.value;\r\n }\r\n });\r\n }\r\n\r\n buffer.reset(true);\r\n paddings.backward.reset();\r\n paddings.forward.reset();\r\n\r\n const payload: ProcessPayload = { datasource };\r\n if (cycle.busy.get()) {\r\n payload.finalize = true;\r\n cycle.interrupter = Reset.process;\r\n }\r\n\r\n scroller.workflow.call({\r\n process: Reset.process,\r\n status: ProcessStatus.next,\r\n payload\r\n });\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/processes/adapter/reset.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF;IAAmC,yBAA+C;IAAlF;;IAkCA,CAAC;IAjCQ,SAAG,GAAV,UAAW,QAAkB,EAAE,OAA6B;QAClD,IAAA,UAAU,GAA8B,QAAQ,WAAtC,EAAE,MAAM,GAAsB,QAAQ,OAA9B,EAAE,QAAQ,GAAY,QAAQ,SAApB,EAAE,KAAK,GAAK,QAAQ,MAAb,CAAc;QACzD,IAAI,OAAO,EAAE,CAAC;YACJ,IAAA,MAAI,GAAK,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAxC,CAAyC;YACrD,IAAI,CAAC,MAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,IAAM,aAAW,GAAG,OAAO,YAAY,UAAU,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;gBACtC,IAAM,KAAK,GAAG,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAM,EAAE,GAAG,UAAmD,CAAC;gBAC/D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,aAAW,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC5C,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAElC,IAAM,OAAO,GAAmB,EAAE,UAAU,YAAA,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1C,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC;IACH,YAAC;AAAD,CAAC,AAlCD,CAAmC,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC,GAkCjF","sourcesContent":["import { Scroller } from '../../scroller';\nimport { DatasourceProps } from '../../inputs/index';\nimport { Datasource } from '../../classes/datasource';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { IDatasourceOptional, ProcessPayload } from '../../interfaces/index';\n\nexport default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {\n static run(scroller: Scroller, options?: IDatasourceOptional): void {\n const { datasource, buffer, viewport, state } = scroller;\n if (options) {\n const { data } = Reset.parseInput(scroller, options);\n if (!data.isValid) {\n return;\n }\n const constructed = options instanceof Datasource;\n Object.keys(DatasourceProps).forEach(key => {\n const param = data.params[key];\n const ds = datasource as unknown as { [key: string]: unknown };\n if (param.isSet || (constructed && ds[key])) {\n ds[key] = param.value;\n }\n });\n }\n\n buffer.reset(true);\n viewport.paddings.backward.reset();\n viewport.paddings.forward.reset();\n\n const payload: ProcessPayload = { datasource };\n if (state.cycle.busy.get()) {\n payload.finalize = true;\n state.cycle.interrupter = Reset.process;\n }\n\n scroller.workflow.call({\n process: Reset.process,\n status: ProcessStatus.next,\n payload\n });\n }\n}\n"]}
@@ -1,60 +1,65 @@
1
- import { __extends } from "tslib";
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- import { Item } from '../../classes/item';
4
- import { Direction } from '../../inputs/index';
5
- var Update = /** @class */ (function (_super) {
6
- __extends(Update, _super);
7
- function Update() {
8
- return _super !== null && _super.apply(this, arguments) || this;
9
- }
10
- Update.run = function (scroller, options) {
11
- var params = Update.parseInput(scroller, options).params;
12
- if (!params) {
13
- return;
14
- }
15
- var shouldUpdate = Update.doUpdate(scroller, params);
16
- scroller.workflow.call({
17
- process: Update.process,
18
- status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done
19
- });
20
- };
21
- Update.doUpdate = function (scroller, params) {
22
- var buffer = scroller.buffer, viewport = scroller.viewport, fetch = scroller.state.fetch, routines = scroller.routines, logger = scroller.logger;
23
- if (!buffer.items) {
24
- logger.log(function () { return 'no items in Buffer'; });
25
- return false;
26
- }
27
- var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), firstItem = _a.item, firstIndex = _a.index, firstItemDiff = _a.diff;
28
- var _b = buffer.updateItems(params.predicate, function (index, data) { return new Item(index, data, routines); }, firstIndex, !!params.fixRight), trackedIndex = _b.trackedIndex, toRemove = _b.toRemove;
29
- var delta = 0;
30
- var trackedItem = buffer.get(trackedIndex);
31
- if (firstItem && firstItem === trackedItem) {
32
- delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;
33
- }
34
- toRemove.forEach(function (item) { return item.hide(); });
35
- logger.log(function () { return toRemove.length
36
- ? 'items to remove: [' + toRemove.map(function (_a) {
37
- var $index = _a.$index;
38
- return $index;
39
- }).join(',') + ']'
40
- : 'no items to remove'; });
41
- if (toRemove.length) { // insertions will be processed on render
42
- buffer.checkDefaultSize();
43
- }
44
- var toRender = buffer.items.filter(function (_a) {
45
- var toInsert = _a.toInsert;
46
- return toInsert;
47
- });
48
- logger.log(function () { return toRender.length
49
- ? 'items to render: [' + toRender.map(function (_a) {
50
- var $index = _a.$index;
51
- return $index;
52
- }).join(',') + ']'
53
- : 'no items to render'; });
54
- fetch.update(trackedIndex, delta, toRender, toRemove);
55
- return !!toRemove.length || !!toRender.length;
56
- };
57
- return Update;
58
- }(BaseAdapterProcessFactory(AdapterProcess.update)));
59
- export default Update;
1
+ import { __extends } from "tslib";
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ import { Item } from '../../classes/item';
4
+ import { Direction } from '../../inputs/index';
5
+ var Update = /** @class */ (function (_super) {
6
+ __extends(Update, _super);
7
+ function Update() {
8
+ return _super !== null && _super.apply(this, arguments) || this;
9
+ }
10
+ Update.run = function (scroller, options) {
11
+ var params = Update.parseInput(scroller, options).params;
12
+ if (!params) {
13
+ return;
14
+ }
15
+ var shouldUpdate = Update.doUpdate(scroller, params);
16
+ scroller.workflow.call({
17
+ process: Update.process,
18
+ status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done
19
+ });
20
+ };
21
+ Update.doUpdate = function (scroller, params) {
22
+ var buffer = scroller.buffer, viewport = scroller.viewport, state = scroller.state, routines = scroller.routines, logger = scroller.logger;
23
+ if (!buffer.items) {
24
+ logger.log(function () { return 'no items in Buffer'; });
25
+ return false;
26
+ }
27
+ var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), firstItem = _a.item, firstIndex = _a.index, firstItemDiff = _a.diff;
28
+ var _b = buffer.updateItems(params.predicate, function (index, data) { return new Item(index, data, routines); }, firstIndex, !!params.fixRight), trackedIndex = _b.trackedIndex, toRemove = _b.toRemove;
29
+ var delta = 0;
30
+ var trackedItem = buffer.get(trackedIndex);
31
+ if (firstItem && firstItem === trackedItem) {
32
+ delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;
33
+ }
34
+ toRemove.forEach(function (item) { return item.hide(); });
35
+ logger.log(function () {
36
+ return toRemove.length
37
+ ? 'items to remove: [' + toRemove.map(function (_a) {
38
+ var $index = _a.$index;
39
+ return $index;
40
+ }).join(',') + ']'
41
+ : 'no items to remove';
42
+ });
43
+ if (toRemove.length) {
44
+ // insertions will be processed on render
45
+ buffer.checkDefaultSize();
46
+ }
47
+ var toRender = buffer.items.filter(function (_a) {
48
+ var toInsert = _a.toInsert;
49
+ return toInsert;
50
+ });
51
+ logger.log(function () {
52
+ return toRender.length
53
+ ? 'items to render: [' + toRender.map(function (_a) {
54
+ var $index = _a.$index;
55
+ return $index;
56
+ }).join(',') + ']'
57
+ : 'no items to render';
58
+ });
59
+ state.fetch.update(trackedIndex, delta, toRender, toRemove);
60
+ return !!toRemove.length || !!toRender.length;
61
+ };
62
+ return Update;
63
+ }(BaseAdapterProcessFactory(AdapterProcess.update)));
64
+ export default Update;
60
65
  //# sourceMappingURL=update.js.map
@@ -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';\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
+ {"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 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, routines, logger } = scroller;\n if (!buffer.items) {\n logger.log(() => 'no items in Buffer');\n return false;\n }\n const {\n item: firstItem,\n index: firstIndex,\n 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(() =>\n toRemove.length\n ? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'\n : 'no items to remove'\n );\n if (toRemove.length) {\n // insertions will be processed on render\n buffer.checkDefaultSize();\n }\n\n const toRender = buffer.items.filter(({ toInsert }) => toInsert);\n logger.log(() =>\n toRender.length\n ? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'\n : 'no items to render'\n );\n\n state.fetch.update(trackedIndex, delta, toRender, toRemove);\n return !!toRemove.length || !!toRender.length;\n }\n}\n"]}
@@ -1,153 +1,158 @@
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, state = scroller.state;
11
+ state.scroll.positionBeforeAdjust = viewport.scrollPosition;
12
+ Adjust.setPaddings(scroller);
13
+ state.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, settings = scroller.settings, state = scroller.state;
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
+ var fetch_1 = state.fetch;
37
+ first = !isNaN(fetch_1.firstVisible.index) ? fetch_1.firstVisible.index : buffer.startIndex;
38
+ last = first - 1;
39
+ }
40
+ var _a = viewport.paddings, forward = _a.forward, backward = _a.backward;
41
+ var index, bwdSize = 0, fwdSize = 0;
42
+ // new backward and forward paddings size
43
+ for (index = buffer.finiteAbsMinIndex; index < first; index++) {
44
+ bwdSize += buffer.getSizeByIndex(index);
45
+ }
46
+ for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
47
+ fwdSize += buffer.getSizeByIndex(index);
48
+ }
49
+ // lack of items case
50
+ var bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
51
+ var scrollSize = bwdSize + bufferSize + fwdSize;
52
+ var viewportSizeDiff = viewport.getSize() - scrollSize;
53
+ if (viewportSizeDiff > 0) {
54
+ if (settings.inverse) {
55
+ bwdSize += viewportSizeDiff;
56
+ }
57
+ else {
58
+ fwdSize += viewportSizeDiff;
59
+ }
60
+ scroller.logger.log(function () {
61
+ return settings.inverse
62
+ ? 'backward'
63
+ : 'forward' + " padding will be increased by ".concat(viewportSizeDiff, " to fill the viewport");
64
+ });
65
+ }
66
+ backward.size = bwdSize;
67
+ forward.size = fwdSize;
68
+ scroller.logger.stat('after paddings adjustments');
69
+ };
70
+ Adjust.calculatePosition = function (scroller) {
71
+ var viewport = scroller.viewport, buffer = scroller.buffer, state = scroller.state;
72
+ var fetch = state.fetch, render = state.render, scroll = state.scroll;
73
+ var position = viewport.paddings.backward.size;
74
+ // increase the position to meet the expectation of the first visible item
75
+ if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
76
+ scroller.logger.log("first index = ".concat(fetch.firstVisible.index, ", delta = ").concat(fetch.firstVisible.delta));
77
+ var shouldCheckPreSizeExpectation_1 = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
78
+ buffer.items.forEach(function (item) {
79
+ // 1) shift of the buffered items before the first visible item
80
+ if (item.$index < fetch.firstVisible.index) {
81
+ position += item.size;
82
+ return;
83
+ }
84
+ // 2) delta of the first visible item
85
+ if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
86
+ position -= fetch.firstVisible.delta;
87
+ }
88
+ // 3) difference between expected and real sizes of fetched items after the first visible
89
+ if (shouldCheckPreSizeExpectation_1 && item.preSize && fetch.items.includes(item)) {
90
+ position += item.size - item.preSize;
91
+ }
92
+ });
93
+ }
94
+ // slow fetch/render case
95
+ if (scroll.positionBeforeAsync !== null) {
96
+ var diff = render.positionBefore - scroll.positionBeforeAsync;
97
+ if (diff !== 0) {
98
+ scroller.logger.log("shift position due to fetch-render difference (".concat(diff, ")"));
99
+ position += diff;
100
+ }
101
+ }
102
+ // increase the position due to viewport's offset
103
+ if (viewport.offset > 0 && (position || fetch.positions.before)) {
104
+ position += viewport.offset;
105
+ }
106
+ return Math.round(position);
107
+ };
108
+ Adjust.setAdditionalForwardPadding = function (scroller, position) {
109
+ var viewport = scroller.viewport, buffer = scroller.buffer, state = scroller.state;
110
+ if (!state.cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
111
+ return;
112
+ }
113
+ var diff = position - viewport.getMaxScrollPosition();
114
+ if (diff <= 0) {
115
+ return;
116
+ }
117
+ var last = buffer.getLastVisibleItem();
118
+ if (!last) {
119
+ return;
120
+ }
121
+ var size = 0;
122
+ var index = last.$index + 1;
123
+ while (size <= diff && index <= buffer.absMaxIndex) {
124
+ size += buffer.getSizeByIndex(index++);
125
+ }
126
+ var shift = Math.min(size, diff);
127
+ if (shift) {
128
+ viewport.paddings.forward.size += shift;
129
+ scroller.logger.log("increase fwd padding due to lack of items (".concat(diff, " -> ").concat(shift, ")"));
130
+ }
131
+ };
132
+ Adjust.setPosition = function (scroller, position, done) {
133
+ var state = scroller.state, viewport = scroller.viewport, routines = scroller.routines;
134
+ var scroll = state.scroll;
135
+ if (!scroll.hasPositionChanged(position)) {
136
+ return done();
137
+ }
138
+ scroll.syntheticPosition = position;
139
+ scroll.syntheticFulfill = false;
140
+ scroll.cancelAnimation = routines.animate(function () {
141
+ scroll.cancelAnimation = null;
142
+ var inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
143
+ var diffLog = '';
144
+ if (inertiaDiff > 0) {
145
+ position -= inertiaDiff;
146
+ scroll.syntheticPosition = position;
147
+ diffLog = " (-".concat(inertiaDiff, ")");
148
+ }
149
+ scroll.syntheticFulfill = true;
150
+ viewport.scrollPosition = position;
151
+ scroller.logger.stat('after scroll adjustment' + diffLog);
152
+ done();
153
+ });
154
+ };
155
+ return Adjust;
156
+ }(BaseProcessFactory(CommonProcess.adjust)));
157
+ export default Adjust;
153
158
  //# sourceMappingURL=adjust.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adjust.js","sourceRoot":"","sources":["../../../src/processes/adjust.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB;IAAoC,0BAAwC;IAA5E;;IA+JA,CAAC;IA7JQ,UAAG,GAAV,UAAW,QAAkB;QACnB,IAAA,QAAQ,GAAkC,QAAQ,SAA1C,EAAE,QAAQ,GAAwB,QAAQ,SAAhC,EAAW,MAAM,GAAO,QAAQ,aAAf,CAAgB;QAE3D,MAAM,CAAC,oBAAoB,GAAG,QAAQ,CAAC,cAAc,CAAC;QACtD,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,mBAAmB,GAAG,QAAQ,CAAC,cAAc,CAAC;QAErD,8BAA8B;QAC9B,IAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEpD,kFAAkF;QAClF,MAAM,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEvD,yCAAyC;QACzC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE;YACrC,OAAA,QAAQ,CAAC,IAAI,CAAC;gBACZ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,aAAa,CAAC,IAAI;aAC3B,CAAC;QAHF,CAGE,CACH,CAAC;IACJ,CAAC;IAEM,kBAAW,GAAlB,UAAmB,QAAkB;QAC3B,IAAA,QAAQ,GAAsD,QAAQ,SAA9D,EAAE,MAAM,GAA8C,QAAQ,OAAtD,EAAc,OAAO,GAAyB,QAAQ,iBAAjC,EAAa,KAAK,GAAO,QAAQ,YAAf,CAAgB;QAC/E,IAAM,SAAS,GAAG,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/C,IAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,KAAK,EAAE,IAAI,CAAC;QAChB,IAAI,SAAS,IAAI,QAAQ,EAAE;YACzB,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;YACzB,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;SACxB;aAAM;YACL,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;YACxF,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;SAClB;QACK,IAAA,KAAwB,QAAQ,CAAC,QAAQ,EAAvC,OAAO,aAAA,EAAE,QAAQ,cAAsB,CAAC;QAChD,IAAI,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;QAEpC,yCAAyC;QACzC,KAAK,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7D,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACzC;QACD,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,EAAE;YACjE,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SACzC;QAED,qBAAqB;QACrB,IAAM,UAAU,GAAG,QAAQ,CAAC,iBAAiB,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC/E,IAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;QAClD,IAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC;QACzD,IAAI,gBAAgB,GAAG,CAAC,EAAE;YACxB,IAAI,OAAO,EAAE;gBACX,OAAO,IAAI,gBAAgB,CAAC;aAC7B;iBAAM;gBACL,OAAO,IAAI,gBAAgB,CAAC;aAC7B;YACD,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;gBAClB,OAAA,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,GAAG,wCAAiC,gBAAgB,0BAAuB;YAA3G,CAA2G,CAC5G,CAAC;SACH;QAED,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;QACxB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;QAEvB,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACrD,CAAC;IAEM,wBAAiB,GAAxB,UAAyB,QAAkB;QACjC,IAAA,QAAQ,GAA+C,QAAQ,SAAvD,EAAE,MAAM,GAAuC,QAAQ,OAA/C,EAAE,KAAqC,QAAQ,MAAb,EAAvB,KAAK,WAAA,EAAE,MAAM,YAAA,EAAE,MAAM,YAAE,CAAc;QACxE,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAE/C,0EAA0E;QAC1E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YACjE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,wBAAiB,KAAK,CAAC,YAAY,CAAC,KAAK,uBAAa,KAAK,CAAC,YAAY,CAAC,KAAK,CAAE,CAAC,CAAC;YACtG,IAAM,+BAA6B,GAAG,KAAK,CAAC,6BAA6B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5F,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;gBACvB,+DAA+D;gBAC/D,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC1C,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC;oBACtB,OAAO;iBACR;gBACD,qCAAqC;gBACrC,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;oBACxE,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;iBACtC;gBACD,yFAAyF;gBACzF,IAAI,+BAA6B,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC/E,QAAQ,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;iBACtC;YACH,CAAC,CAAC,CAAC;SACJ;QAED,yBAAyB;QACzB,IAAI,MAAM,CAAC,mBAAmB,KAAK,IAAI,EAAE;YACvC,IAAM,IAAI,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC;YAChE,IAAI,IAAI,KAAK,CAAC,EAAE;gBACd,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,yDAAkD,IAAI,MAAG,CAAC,CAAC;gBAC/E,QAAQ,IAAI,IAAI,CAAC;aAClB;SACF;QAED,iDAAiD;QACjD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC/D,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC;SAC7B;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,kCAA2B,GAAlC,UAAmC,QAAkB,EAAE,QAAgB;QAC7D,IAAA,QAAQ,GAA+B,QAAQ,SAAvC,EAAE,MAAM,GAAuB,QAAQ,OAA/B,EAAW,KAAK,GAAO,QAAQ,YAAf,CAAgB;QACxD,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YAC9D,OAAO;SACR;QACD,IAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QACxD,IAAI,IAAI,IAAI,CAAC,EAAE;YACb,OAAO;SACR;QACD,IAAM,IAAI,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO;SACR;QACD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,MAAM,CAAC,WAAW,EAAE;YAClD,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;SACxC;QACD,IAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,EAAE;YACT,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,qDAA8C,IAAI,iBAAO,KAAK,MAAG,CAAC,CAAC;SACxF;IACH,CAAC;IAEM,kBAAW,GAAlB,UAAmB,QAAkB,EAAE,QAAgB,EAAE,IAAgB;QACtD,IAAA,MAAM,GAA2B,QAAQ,aAAnC,EAAI,QAAQ,GAAe,QAAQ,SAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAC3D,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;YACxC,OAAO,IAAI,EAAE,CAAC;SACf;QACD,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC;QACpC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAEhC,MAAM,CAAC,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;YACxC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;YAC9B,IAAM,WAAW,GAAI,MAAM,CAAC,mBAA8B,GAAG,QAAQ,CAAC,cAAc,CAAC;YACrF,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,WAAW,GAAG,CAAC,EAAE;gBACnB,QAAQ,IAAI,WAAW,CAAC;gBACxB,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC;gBACpC,OAAO,GAAG,aAAM,WAAW,MAAG,CAAC;aAChC;YACD,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,QAAQ,CAAC,cAAc,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,CAAC;YAC1D,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAEH,aAAC;AAAD,CAAC,AA/JD,CAAoC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,GA+J3E","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"]}