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":"remove.js","sourceRoot":"","sources":["../../../../src/processes/adapter/remove.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\nimport Update from './update';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { Direction } from '../../inputs/index';\nimport { AdapterRemoveOptions, AdapterUpdateOptions, ItemsPredicate } from '../../interfaces/index';\n\nexport default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {\n\n static run(scroller: Scroller, options: AdapterRemoveOptions): void {\n const { params } = Remove.parseInput(scroller, options);\n if (!params) {\n return;\n }\n const shouldRemove = Remove.doRemove(scroller, params);\n\n scroller.workflow.call({\n process: Remove.process,\n status: shouldRemove ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doRemove(scroller: Scroller, params: AdapterRemoveOptions): boolean {\n const { fetch } = scroller.state;\n fetch.firstVisible.index = NaN;\n const removed = Remove.removeBufferedItems(scroller, params);\n const shouldBuffered = removed.length > 0;\n if (shouldBuffered) {\n // exclude just removed in-buffer indexes\n if (params.indexes && params.indexes.length) {\n params.indexes = params.indexes.filter(i => !removed.includes(i));\n }\n // shift virtual indexes that remain\n if (params.indexes && params.indexes.length) {\n const diffLeft = (params.increase ? 1 : 0) * removed.length;\n const diffRight = (params.increase ? 0 : -1) * removed.length;\n params.indexes = params.indexes.map(index =>\n index + (index < removed[0] ? diffLeft : diffRight)\n );\n }\n }\n const shouldVirtual = Remove.removeVirtualItems(scroller, params);\n if (!shouldBuffered && !shouldVirtual) {\n return false;\n }\n scroller.logger.stat('after remove');\n return true;\n }\n\n static removeBufferedItems(scroller: Scroller, options: AdapterRemoveOptions): number[] {\n const { predicate, indexes, increase } = options;\n if (!predicate && !indexes) {\n return [];\n }\n const newPredicate: ItemsPredicate = item =>\n (predicate && predicate(item)) ||\n (!!indexes && indexes.includes(item.$index));\n\n const indexesToRemove: number[] = scroller.buffer.items.reduce((acc, item) =>\n newPredicate(item) ? [...acc, item.$index] : acc, [] as number[]\n );\n const updateOptions: AdapterUpdateOptions = {\n predicate: item => !newPredicate(item),\n fixRight: increase\n };\n Update.doUpdate(scroller, updateOptions);\n return indexesToRemove;\n }\n\n static removeVirtualItems(scroller: Scroller, params: AdapterRemoveOptions): boolean {\n const { indexes, increase } = params;\n if (!indexes || !indexes.length) {\n return false;\n }\n const { buffer, viewport, state: { fetch } } = scroller;\n\n // get items to remove\n const { finiteAbsMinIndex, firstIndex, finiteAbsMaxIndex, lastIndex } = buffer;\n const toRemove = [];\n for (let i = 0, len = indexes.length; i < len; i++) {\n const index = indexes[i];\n if (index >= finiteAbsMinIndex && !isNaN(firstIndex) && index < firstIndex) {\n toRemove.push(index); // backward;\n } else if (index <= finiteAbsMaxIndex && !isNaN(lastIndex) && index > lastIndex) {\n toRemove.push(index); // forward;\n } else {\n continue;\n }\n }\n\n if (!toRemove.length) {\n return false;\n }\n\n // what should be shown after remove; Buffer removal has priority\n if (isNaN(fetch.firstVisible.index)) {\n const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\n fetch.firstVisible.index = index;\n if (!isNaN(index)) {\n fetch.firstVisible.delta = - buffer.getSizeByIndex(index) + diff;\n }\n }\n\n // virtual removal\n scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);\n buffer.removeVirtually(toRemove, !!increase);\n buffer.checkDefaultSize();\n Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);\n\n return true;\n }\n\n static shiftFirstVisibleIndex(scroller: Scroller, listToRemove: number[], increase: boolean): void {\n const { firstVisible } = scroller.state.fetch;\n if (isNaN(firstVisible.index)) {\n return;\n }\n const shift = listToRemove.reduce((acc, index) => acc + (\n ((increase && index > firstVisible.index) || (!increase && index < firstVisible.index)) ? 1 : 0\n ), 0);\n firstVisible.index = firstVisible.index + (increase ? shift : -shift);\n }\n\n}\n"]}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/processes/adapter/remove.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;IAElF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA6B;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEvD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAkB,EAAE,MAA4B;QAC9D,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,GAAG,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1C,IAAI,cAAc,EAAE;YAClB,yCAAyC;YACzC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC3C,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE;YACD,oCAAoC;YACpC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC3C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC5D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC9D,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAC1C,KAAK,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACpD,CAAC;aACH;SACF;QACD,MAAM,aAAa,GAAG,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,cAAc,IAAI,CAAC,aAAa,EAAE;YACrC,OAAO,KAAK,CAAC;SACd;QACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,QAAkB,EAAE,OAA6B;QAC1E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACjD,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;YAC1B,OAAO,EAAE,CAAC;SACX;QACD,MAAM,YAAY,GAAmB,IAAI,CAAC,EAAE,CAC1C,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE/C,MAAM,eAAe,GAAa,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAC3E,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAc,CACjE,CAAC;QACF,MAAM,aAAa,GAAyB;YAC1C,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;YACtC,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACzC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,QAAkB,EAAE,MAA4B;QACxE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC/B,OAAO,KAAK,CAAC;SACd;QACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC;QAExD,sBAAsB;QACtB,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;QAC/E,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,KAAK,IAAI,iBAAiB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,GAAG,UAAU,EAAE;gBAC1E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;aACnC;iBAAM,IAAI,KAAK,IAAI,iBAAiB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,SAAS,EAAE;gBAC/E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;aAClC;iBAAM;gBACL,SAAS;aACV;SACF;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,OAAO,KAAK,CAAC;SACd;QAED,iEAAiE;QACjE,IAAI,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YACnC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YACtF,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,CAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;aAClE;SACF;QAED,kBAAkB;QAClB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,mBAAmB,QAAQ,CAAC,MAAM,oBAAoB,CAAC,CAAC;QAClF,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC1B,MAAM,CAAC,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,QAAkB,EAAE,YAAsB,EAAE,QAAiB;QACzF,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9C,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO;SACR;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,CACtD,CAAC,CAAC,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAChG,EAAE,CAAC,CAAC,CAAC;QACN,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport Update from './update';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { Direction } from '../../inputs/index';\r\nimport { AdapterRemoveOptions, AdapterUpdateOptions, ItemsPredicate } from '../../interfaces/index';\r\n\r\nexport default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {\r\n\r\n static run(scroller: Scroller, options: AdapterRemoveOptions): void {\r\n const { params } = Remove.parseInput(scroller, options);\r\n if (!params) {\r\n return;\r\n }\r\n const shouldRemove = Remove.doRemove(scroller, params);\r\n\r\n scroller.workflow.call({\r\n process: Remove.process,\r\n status: shouldRemove ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n static doRemove(scroller: Scroller, params: AdapterRemoveOptions): boolean {\r\n const { fetch } = scroller.state;\r\n fetch.firstVisible.index = NaN;\r\n const removed = Remove.removeBufferedItems(scroller, params);\r\n const shouldBuffered = removed.length > 0;\r\n if (shouldBuffered) {\r\n // exclude just removed in-buffer indexes\r\n if (params.indexes && params.indexes.length) {\r\n params.indexes = params.indexes.filter(i => !removed.includes(i));\r\n }\r\n // shift virtual indexes that remain\r\n if (params.indexes && params.indexes.length) {\r\n const diffLeft = (params.increase ? 1 : 0) * removed.length;\r\n const diffRight = (params.increase ? 0 : -1) * removed.length;\r\n params.indexes = params.indexes.map(index =>\r\n index + (index < removed[0] ? diffLeft : diffRight)\r\n );\r\n }\r\n }\r\n const shouldVirtual = Remove.removeVirtualItems(scroller, params);\r\n if (!shouldBuffered && !shouldVirtual) {\r\n return false;\r\n }\r\n scroller.logger.stat('after remove');\r\n return true;\r\n }\r\n\r\n static removeBufferedItems(scroller: Scroller, options: AdapterRemoveOptions): number[] {\r\n const { predicate, indexes, increase } = options;\r\n if (!predicate && !indexes) {\r\n return [];\r\n }\r\n const newPredicate: ItemsPredicate = item =>\r\n (predicate && predicate(item)) ||\r\n (!!indexes && indexes.includes(item.$index));\r\n\r\n const indexesToRemove: number[] = scroller.buffer.items.reduce((acc, item) =>\r\n newPredicate(item) ? [...acc, item.$index] : acc, [] as number[]\r\n );\r\n const updateOptions: AdapterUpdateOptions = {\r\n predicate: item => !newPredicate(item),\r\n fixRight: increase\r\n };\r\n Update.doUpdate(scroller, updateOptions);\r\n return indexesToRemove;\r\n }\r\n\r\n static removeVirtualItems(scroller: Scroller, params: AdapterRemoveOptions): boolean {\r\n const { indexes, increase } = params;\r\n if (!indexes || !indexes.length) {\r\n return false;\r\n }\r\n const { buffer, viewport, state: { fetch } } = scroller;\r\n\r\n // get items to remove\r\n const { finiteAbsMinIndex, firstIndex, finiteAbsMaxIndex, lastIndex } = buffer;\r\n const toRemove = [];\r\n for (let i = 0, len = indexes.length; i < len; i++) {\r\n const index = indexes[i];\r\n if (index >= finiteAbsMinIndex && !isNaN(firstIndex) && index < firstIndex) {\r\n toRemove.push(index); // backward;\r\n } else if (index <= finiteAbsMaxIndex && !isNaN(lastIndex) && index > lastIndex) {\r\n toRemove.push(index); // forward;\r\n } else {\r\n continue;\r\n }\r\n }\r\n\r\n if (!toRemove.length) {\r\n return false;\r\n }\r\n\r\n // what should be shown after remove; Buffer removal has priority\r\n if (isNaN(fetch.firstVisible.index)) {\r\n const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\r\n fetch.firstVisible.index = index;\r\n if (!isNaN(index)) {\r\n fetch.firstVisible.delta = - buffer.getSizeByIndex(index) + diff;\r\n }\r\n }\r\n\r\n // virtual removal\r\n scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);\r\n buffer.removeVirtually(toRemove, !!increase);\r\n buffer.checkDefaultSize();\r\n Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);\r\n\r\n return true;\r\n }\r\n\r\n static shiftFirstVisibleIndex(scroller: Scroller, listToRemove: number[], increase: boolean): void {\r\n const { firstVisible } = scroller.state.fetch;\r\n if (isNaN(firstVisible.index)) {\r\n return;\r\n }\r\n const shift = listToRemove.reduce((acc, index) => acc + (\r\n ((increase && index > firstVisible.index) || (!increase && index < firstVisible.index)) ? 1 : 0\r\n ), 0);\r\n firstVisible.index = firstVisible.index + (increase ? shift : -shift);\r\n }\r\n\r\n}\r\n"]}
@@ -1,40 +1,40 @@
1
- import Update from './update';
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- export default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {
4
- static run(scroller, options) {
5
- const { params } = Replace.parseInput(scroller, options);
6
- if (!params) {
7
- return;
8
- }
9
- const shouldReplace = Replace.doReplace(scroller, params);
10
- scroller.workflow.call({
11
- process: Replace.process,
12
- status: shouldReplace ? ProcessStatus.next : ProcessStatus.done,
13
- });
14
- }
15
- static doReplace(scroller, params) {
16
- const toRemove = scroller.buffer.items
17
- .filter(item => params.predicate(item))
18
- .map(item => item.$index);
19
- if (!toRemove.length) {
20
- scroller.logger.log('no items to be replaced');
21
- return false;
22
- }
23
- let injected = false;
24
- const updateOptions = {
25
- predicate: ({ $index }) => {
26
- if (!toRemove.includes($index)) {
27
- return true;
28
- }
29
- if (!injected) {
30
- injected = true;
31
- return params.items;
32
- }
33
- return false;
34
- },
35
- fixRight: params.fixRight
36
- };
37
- return Update.doUpdate(scroller, updateOptions);
38
- }
39
- }
1
+ import Update from './update';
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ export default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {
4
+ static run(scroller, options) {
5
+ const { params } = Replace.parseInput(scroller, options);
6
+ if (!params) {
7
+ return;
8
+ }
9
+ const shouldReplace = Replace.doReplace(scroller, params);
10
+ scroller.workflow.call({
11
+ process: Replace.process,
12
+ status: shouldReplace ? ProcessStatus.next : ProcessStatus.done,
13
+ });
14
+ }
15
+ static doReplace(scroller, params) {
16
+ const toRemove = scroller.buffer.items
17
+ .filter(item => params.predicate(item))
18
+ .map(item => item.$index);
19
+ if (!toRemove.length) {
20
+ scroller.logger.log('no items to be replaced');
21
+ return false;
22
+ }
23
+ let injected = false;
24
+ const updateOptions = {
25
+ predicate: ({ $index }) => {
26
+ if (!toRemove.includes($index)) {
27
+ return true;
28
+ }
29
+ if (!injected) {
30
+ injected = true;
31
+ return params.items;
32
+ }
33
+ return false;
34
+ },
35
+ fixRight: params.fixRight
36
+ };
37
+ return Update.doUpdate(scroller, updateOptions);
38
+ }
39
+ }
40
40
  //# sourceMappingURL=replace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"replace.js","sourceRoot":"","sources":["../../../../src/processes/adapter/replace.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,yBAAyB,CAAC,cAAc,CAAC,OAAO,CAAC;IAEpF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA8B;QAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAChE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,QAAkB,EAAE,MAA6B;QAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;aACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,aAAa,GAAyB;YAC1C,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAC9B,OAAO,IAAI,CAAC;iBACb;gBACD,IAAI,CAAC,QAAQ,EAAE;oBACb,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,MAAM,CAAC,KAAK,CAAC;iBACrB;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\nimport Update from './update';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { AdapterReplaceOptions, AdapterUpdateOptions } from '../../interfaces/index';\n\nexport default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {\n\n static run(scroller: Scroller, options: AdapterReplaceOptions): void {\n const { params } = Replace.parseInput(scroller, options);\n if (!params) {\n return;\n }\n const shouldReplace = Replace.doReplace(scroller, params);\n\n scroller.workflow.call({\n process: Replace.process,\n status: shouldReplace ? ProcessStatus.next : ProcessStatus.done,\n });\n }\n\n static doReplace(scroller: Scroller, params: AdapterReplaceOptions): boolean {\n const toRemove = scroller.buffer.items\n .filter(item => params.predicate(item))\n .map(item => item.$index);\n\n if (!toRemove.length) {\n scroller.logger.log('no items to be replaced');\n return false;\n }\n\n let injected = false;\n const updateOptions: AdapterUpdateOptions = {\n predicate: ({ $index }) => {\n if (!toRemove.includes($index)) {\n return true;\n }\n if (!injected) {\n injected = true;\n return params.items;\n }\n return false;\n },\n fixRight: params.fixRight\n };\n\n return Update.doUpdate(scroller, updateOptions);\n }\n\n}\n"]}
1
+ {"version":3,"file":"replace.js","sourceRoot":"","sources":["../../../../src/processes/adapter/replace.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,yBAAyB,CAAC,cAAc,CAAC,OAAO,CAAC;IAEpF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA8B;QAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAChE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,QAAkB,EAAE,MAA6B;QAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;aACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,aAAa,GAAyB;YAC1C,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBAC9B,OAAO,IAAI,CAAC;iBACb;gBACD,IAAI,CAAC,QAAQ,EAAE;oBACb,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,MAAM,CAAC,KAAK,CAAC;iBACrB;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport Update from './update';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { AdapterReplaceOptions, AdapterUpdateOptions } from '../../interfaces/index';\r\n\r\nexport default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {\r\n\r\n static run(scroller: Scroller, options: AdapterReplaceOptions): void {\r\n const { params } = Replace.parseInput(scroller, options);\r\n if (!params) {\r\n return;\r\n }\r\n const shouldReplace = Replace.doReplace(scroller, params);\r\n\r\n scroller.workflow.call({\r\n process: Replace.process,\r\n status: shouldReplace ? ProcessStatus.next : ProcessStatus.done,\r\n });\r\n }\r\n\r\n static doReplace(scroller: Scroller, params: AdapterReplaceOptions): boolean {\r\n const toRemove = scroller.buffer.items\r\n .filter(item => params.predicate(item))\r\n .map(item => item.$index);\r\n\r\n if (!toRemove.length) {\r\n scroller.logger.log('no items to be replaced');\r\n return false;\r\n }\r\n\r\n let injected = false;\r\n const updateOptions: AdapterUpdateOptions = {\r\n predicate: ({ $index }) => {\r\n if (!toRemove.includes($index)) {\r\n return true;\r\n }\r\n if (!injected) {\r\n injected = true;\r\n return params.items;\r\n }\r\n return false;\r\n },\r\n fixRight: params.fixRight\r\n };\r\n\r\n return Update.doUpdate(scroller, updateOptions);\r\n }\r\n\r\n}\r\n"]}
@@ -1,36 +1,36 @@
1
- import { DatasourceProps } from '../../inputs/index';
2
- import { Datasource } from '../../classes/datasource';
3
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
4
- export default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {
5
- static run(scroller, options) {
6
- const { datasource, buffer, viewport: { paddings }, state: { cycle } } = scroller;
7
- if (options) {
8
- const { data } = Reset.parseInput(scroller, options);
9
- if (!data.isValid) {
10
- return;
11
- }
12
- const constructed = options instanceof Datasource;
13
- Object.keys(DatasourceProps).forEach(key => {
14
- const param = data.params[key];
15
- const ds = datasource;
16
- if (param.isSet || (constructed && ds[key])) {
17
- ds[key] = param.value;
18
- }
19
- });
20
- }
21
- buffer.reset(true);
22
- paddings.backward.reset();
23
- paddings.forward.reset();
24
- const payload = { datasource };
25
- if (cycle.busy.get()) {
26
- payload.finalize = true;
27
- cycle.interrupter = Reset.process;
28
- }
29
- scroller.workflow.call({
30
- process: Reset.process,
31
- status: ProcessStatus.next,
32
- payload
33
- });
34
- }
35
- }
1
+ import { DatasourceProps } from '../../inputs/index';
2
+ import { Datasource } from '../../classes/datasource';
3
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
4
+ export default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {
5
+ static run(scroller, options) {
6
+ const { datasource, buffer, viewport: { paddings }, state: { cycle } } = scroller;
7
+ if (options) {
8
+ const { data } = Reset.parseInput(scroller, options);
9
+ if (!data.isValid) {
10
+ return;
11
+ }
12
+ const constructed = options instanceof Datasource;
13
+ Object.keys(DatasourceProps).forEach(key => {
14
+ const param = data.params[key];
15
+ const ds = datasource;
16
+ if (param.isSet || (constructed && ds[key])) {
17
+ ds[key] = param.value;
18
+ }
19
+ });
20
+ }
21
+ buffer.reset(true);
22
+ paddings.backward.reset();
23
+ paddings.forward.reset();
24
+ const payload = { datasource };
25
+ if (cycle.busy.get()) {
26
+ payload.finalize = true;
27
+ cycle.interrupter = Reset.process;
28
+ }
29
+ scroller.workflow.call({
30
+ process: Reset.process,
31
+ status: ProcessStatus.next,
32
+ payload
33
+ });
34
+ }
35
+ }
36
36
  //# sourceMappingURL=reset.js.map
@@ -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,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC;IAEhF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA6B;QAC1D,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC;QAElF,IAAI,OAAO,EAAE;YACX,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;aACR;YACD,MAAM,WAAW,GAAG,OAAO,YAAY,UAAU,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,EAAE,GAAG,UAAmD,CAAC;gBAC/D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,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,MAAM,OAAO,GAAmB,EAAE,UAAU,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;SACR,CAAC,CAAC;IACL,CAAC;CAEF","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\n static run(scroller: Scroller, options?: IDatasourceOptional): void {\n const { datasource, buffer, viewport: { paddings }, state: { cycle } } = scroller;\n\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 paddings.backward.reset();\n paddings.forward.reset();\n\n const payload: ProcessPayload = { datasource };\n if (cycle.busy.get()) {\n payload.finalize = true;\n cycle.interrupter = Reset.process;\n }\n\n scroller.workflow.call({\n process: Reset.process,\n status: ProcessStatus.next,\n payload\n });\n }\n\n}\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,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC;IAEhF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA6B;QAC1D,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC;QAElF,IAAI,OAAO,EAAE;YACX,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;aACR;YACD,MAAM,WAAW,GAAG,OAAO,YAAY,UAAU,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,EAAE,GAAG,UAAmD,CAAC;gBAC/D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,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,MAAM,OAAO,GAAmB,EAAE,UAAU,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;SACR,CAAC,CAAC;IACL,CAAC;CAEF","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,44 +1,44 @@
1
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
- import { Item } from '../../classes/item';
3
- import { Direction } from '../../inputs/index';
4
- export default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {
5
- static run(scroller, options) {
6
- const { params } = Update.parseInput(scroller, options);
7
- if (!params) {
8
- return;
9
- }
10
- const shouldUpdate = Update.doUpdate(scroller, params);
11
- scroller.workflow.call({
12
- process: Update.process,
13
- status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done
14
- });
15
- }
16
- static doUpdate(scroller, params) {
17
- const { buffer, viewport, state: { fetch }, routines, logger } = scroller;
18
- if (!buffer.items) {
19
- logger.log(() => 'no items in Buffer');
20
- return false;
21
- }
22
- const { item: firstItem, index: firstIndex, diff: firstItemDiff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
23
- const { trackedIndex, toRemove } = buffer.updateItems(params.predicate, (index, data) => new Item(index, data, routines), firstIndex, !!params.fixRight);
24
- let delta = 0;
25
- const trackedItem = buffer.get(trackedIndex);
26
- if (firstItem && firstItem === trackedItem) {
27
- delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;
28
- }
29
- toRemove.forEach(item => item.hide());
30
- logger.log(() => toRemove.length
31
- ? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'
32
- : 'no items to remove');
33
- if (toRemove.length) { // insertions will be processed on render
34
- buffer.checkDefaultSize();
35
- }
36
- const toRender = buffer.items.filter(({ toInsert }) => toInsert);
37
- logger.log(() => toRender.length
38
- ? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'
39
- : 'no items to render');
40
- fetch.update(trackedIndex, delta, toRender, toRemove);
41
- return !!toRemove.length || !!toRender.length;
42
- }
43
- }
1
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
+ import { Item } from '../../classes/item';
3
+ import { Direction } from '../../inputs/index';
4
+ export default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {
5
+ static run(scroller, options) {
6
+ const { params } = Update.parseInput(scroller, options);
7
+ if (!params) {
8
+ return;
9
+ }
10
+ const shouldUpdate = Update.doUpdate(scroller, params);
11
+ scroller.workflow.call({
12
+ process: Update.process,
13
+ status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done
14
+ });
15
+ }
16
+ static doUpdate(scroller, params) {
17
+ const { buffer, viewport, state: { fetch }, routines, logger } = scroller;
18
+ if (!buffer.items) {
19
+ logger.log(() => 'no items in Buffer');
20
+ return false;
21
+ }
22
+ const { item: firstItem, index: firstIndex, diff: firstItemDiff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
23
+ const { trackedIndex, toRemove } = buffer.updateItems(params.predicate, (index, data) => new Item(index, data, routines), firstIndex, !!params.fixRight);
24
+ let delta = 0;
25
+ const trackedItem = buffer.get(trackedIndex);
26
+ if (firstItem && firstItem === trackedItem) {
27
+ delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;
28
+ }
29
+ toRemove.forEach(item => item.hide());
30
+ logger.log(() => toRemove.length
31
+ ? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'
32
+ : 'no items to remove');
33
+ if (toRemove.length) { // insertions will be processed on render
34
+ buffer.checkDefaultSize();
35
+ }
36
+ const toRender = buffer.items.filter(({ toInsert }) => toInsert);
37
+ logger.log(() => toRender.length
38
+ ? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'
39
+ : 'no items to render');
40
+ fetch.update(trackedIndex, delta, toRender, toRemove);
41
+ return !!toRemove.length || !!toRender.length;
42
+ }
43
+ }
44
44
  //# 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';\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,142 +1,142 @@
1
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
- import End from './end';
3
- export default class Adjust extends BaseProcessFactory(CommonProcess.adjust) {
4
- static run(scroller) {
5
- const { workflow, viewport, state: { scroll } } = scroller;
6
- scroll.positionBeforeAdjust = viewport.scrollPosition;
7
- Adjust.setPaddings(scroller);
8
- scroll.positionAfterAdjust = viewport.scrollPosition;
9
- // scroll position adjustments
10
- const position = Adjust.calculatePosition(scroller);
11
- // additional adjustment if the position can't be reached during the initial cycle
12
- Adjust.setAdditionalForwardPadding(scroller, position);
13
- // set new position using animation frame
14
- Adjust.setPosition(scroller, position, () => workflow.call({
15
- process: Adjust.process,
16
- status: ProcessStatus.done
17
- }));
18
- }
19
- static setPaddings(scroller) {
20
- const { viewport, buffer, settings: { inverse }, state: { fetch } } = scroller;
21
- const firstItem = buffer.getFirstVisibleItem();
22
- const lastItem = buffer.getLastVisibleItem();
23
- let first, last;
24
- if (firstItem && lastItem) {
25
- first = firstItem.$index;
26
- last = lastItem.$index;
27
- }
28
- else {
29
- first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;
30
- last = first - 1;
31
- }
32
- const { forward, backward } = viewport.paddings;
33
- let index, bwdSize = 0, fwdSize = 0;
34
- // new backward and forward paddings size
35
- for (index = buffer.finiteAbsMinIndex; index < first; index++) {
36
- bwdSize += buffer.getSizeByIndex(index);
37
- }
38
- for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
39
- fwdSize += buffer.getSizeByIndex(index);
40
- }
41
- // lack of items case
42
- const bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
43
- const scrollSize = bwdSize + bufferSize + fwdSize;
44
- const viewportSizeDiff = viewport.getSize() - scrollSize;
45
- if (viewportSizeDiff > 0) {
46
- if (inverse) {
47
- bwdSize += viewportSizeDiff;
48
- }
49
- else {
50
- fwdSize += viewportSizeDiff;
51
- }
52
- scroller.logger.log(() => inverse ? 'backward' : 'forward' + ` padding will be increased by ${viewportSizeDiff} to fill the viewport`);
53
- }
54
- backward.size = bwdSize;
55
- forward.size = fwdSize;
56
- scroller.logger.stat('after paddings adjustments');
57
- }
58
- static calculatePosition(scroller) {
59
- const { viewport, buffer, state: { fetch, render, scroll } } = scroller;
60
- let position = viewport.paddings.backward.size;
61
- // increase the position to meet the expectation of the first visible item
62
- if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
63
- scroller.logger.log(`first index = ${fetch.firstVisible.index}, delta = ${fetch.firstVisible.delta}`);
64
- const shouldCheckPreSizeExpectation = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
65
- buffer.items.forEach(item => {
66
- // 1) shift of the buffered items before the first visible item
67
- if (item.$index < fetch.firstVisible.index) {
68
- position += item.size;
69
- return;
70
- }
71
- // 2) delta of the first visible item
72
- if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
73
- position -= fetch.firstVisible.delta;
74
- }
75
- // 3) difference between expected and real sizes of fetched items after the first visible
76
- if (shouldCheckPreSizeExpectation && item.preSize && fetch.items.includes(item)) {
77
- position += item.size - item.preSize;
78
- }
79
- });
80
- }
81
- // slow fetch/render case
82
- if (scroll.positionBeforeAsync !== null) {
83
- const diff = render.positionBefore - scroll.positionBeforeAsync;
84
- if (diff !== 0) {
85
- scroller.logger.log(`shift position due to fetch-render difference (${diff})`);
86
- position += diff;
87
- }
88
- }
89
- // increase the position due to viewport's offset
90
- if (viewport.offset > 0 && (position || fetch.positions.before)) {
91
- position += viewport.offset;
92
- }
93
- return Math.round(position);
94
- }
95
- static setAdditionalForwardPadding(scroller, position) {
96
- const { viewport, buffer, state: { cycle } } = scroller;
97
- if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
98
- return;
99
- }
100
- const diff = position - viewport.getMaxScrollPosition();
101
- if (diff <= 0) {
102
- return;
103
- }
104
- const last = buffer.getLastVisibleItem();
105
- if (!last) {
106
- return;
107
- }
108
- let size = 0;
109
- let index = last.$index + 1;
110
- while (size <= diff && index <= buffer.absMaxIndex) {
111
- size += buffer.getSizeByIndex(index++);
112
- }
113
- const shift = Math.min(size, diff);
114
- if (shift) {
115
- viewport.paddings.forward.size += shift;
116
- scroller.logger.log(`increase fwd padding due to lack of items (${diff} -> ${shift})`);
117
- }
118
- }
119
- static setPosition(scroller, position, done) {
120
- const { state: { scroll }, viewport, routines } = scroller;
121
- if (!scroll.hasPositionChanged(position)) {
122
- return done();
123
- }
124
- scroll.syntheticPosition = position;
125
- scroll.syntheticFulfill = false;
126
- scroll.cancelAnimation = routines.animate(() => {
127
- scroll.cancelAnimation = null;
128
- const inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
129
- let diffLog = '';
130
- if (inertiaDiff > 0) {
131
- position -= inertiaDiff;
132
- scroll.syntheticPosition = position;
133
- diffLog = ` (-${inertiaDiff})`;
134
- }
135
- scroll.syntheticFulfill = true;
136
- viewport.scrollPosition = position;
137
- scroller.logger.stat('after scroll adjustment' + diffLog);
138
- done();
139
- });
140
- }
141
- }
1
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
2
+ import End from './end';
3
+ export default class Adjust extends BaseProcessFactory(CommonProcess.adjust) {
4
+ static run(scroller) {
5
+ const { workflow, viewport, state: { scroll } } = scroller;
6
+ scroll.positionBeforeAdjust = viewport.scrollPosition;
7
+ Adjust.setPaddings(scroller);
8
+ scroll.positionAfterAdjust = viewport.scrollPosition;
9
+ // scroll position adjustments
10
+ const position = Adjust.calculatePosition(scroller);
11
+ // additional adjustment if the position can't be reached during the initial cycle
12
+ Adjust.setAdditionalForwardPadding(scroller, position);
13
+ // set new position using animation frame
14
+ Adjust.setPosition(scroller, position, () => workflow.call({
15
+ process: Adjust.process,
16
+ status: ProcessStatus.done
17
+ }));
18
+ }
19
+ static setPaddings(scroller) {
20
+ const { viewport, buffer, settings: { inverse }, state: { fetch } } = scroller;
21
+ const firstItem = buffer.getFirstVisibleItem();
22
+ const lastItem = buffer.getLastVisibleItem();
23
+ let first, last;
24
+ if (firstItem && lastItem) {
25
+ first = firstItem.$index;
26
+ last = lastItem.$index;
27
+ }
28
+ else {
29
+ first = !isNaN(fetch.firstVisible.index) ? fetch.firstVisible.index : buffer.startIndex;
30
+ last = first - 1;
31
+ }
32
+ const { forward, backward } = viewport.paddings;
33
+ let index, bwdSize = 0, fwdSize = 0;
34
+ // new backward and forward paddings size
35
+ for (index = buffer.finiteAbsMinIndex; index < first; index++) {
36
+ bwdSize += buffer.getSizeByIndex(index);
37
+ }
38
+ for (index = last + 1; index <= buffer.finiteAbsMaxIndex; index++) {
39
+ fwdSize += buffer.getSizeByIndex(index);
40
+ }
41
+ // lack of items case
42
+ const bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
43
+ const scrollSize = bwdSize + bufferSize + fwdSize;
44
+ const viewportSizeDiff = viewport.getSize() - scrollSize;
45
+ if (viewportSizeDiff > 0) {
46
+ if (inverse) {
47
+ bwdSize += viewportSizeDiff;
48
+ }
49
+ else {
50
+ fwdSize += viewportSizeDiff;
51
+ }
52
+ scroller.logger.log(() => inverse ? 'backward' : 'forward' + ` padding will be increased by ${viewportSizeDiff} to fill the viewport`);
53
+ }
54
+ backward.size = bwdSize;
55
+ forward.size = fwdSize;
56
+ scroller.logger.stat('after paddings adjustments');
57
+ }
58
+ static calculatePosition(scroller) {
59
+ const { viewport, buffer, state: { fetch, render, scroll } } = scroller;
60
+ let position = viewport.paddings.backward.size;
61
+ // increase the position to meet the expectation of the first visible item
62
+ if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
63
+ scroller.logger.log(`first index = ${fetch.firstVisible.index}, delta = ${fetch.firstVisible.delta}`);
64
+ const shouldCheckPreSizeExpectation = fetch.shouldCheckPreSizeExpectation(buffer.lastIndex);
65
+ buffer.items.forEach(item => {
66
+ // 1) shift of the buffered items before the first visible item
67
+ if (item.$index < fetch.firstVisible.index) {
68
+ position += item.size;
69
+ return;
70
+ }
71
+ // 2) delta of the first visible item
72
+ if (item.$index === fetch.firstVisible.index && fetch.firstVisible.delta) {
73
+ position -= fetch.firstVisible.delta;
74
+ }
75
+ // 3) difference between expected and real sizes of fetched items after the first visible
76
+ if (shouldCheckPreSizeExpectation && item.preSize && fetch.items.includes(item)) {
77
+ position += item.size - item.preSize;
78
+ }
79
+ });
80
+ }
81
+ // slow fetch/render case
82
+ if (scroll.positionBeforeAsync !== null) {
83
+ const diff = render.positionBefore - scroll.positionBeforeAsync;
84
+ if (diff !== 0) {
85
+ scroller.logger.log(`shift position due to fetch-render difference (${diff})`);
86
+ position += diff;
87
+ }
88
+ }
89
+ // increase the position due to viewport's offset
90
+ if (viewport.offset > 0 && (position || fetch.positions.before)) {
91
+ position += viewport.offset;
92
+ }
93
+ return Math.round(position);
94
+ }
95
+ static setAdditionalForwardPadding(scroller, position) {
96
+ const { viewport, buffer, state: { cycle } } = scroller;
97
+ if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
98
+ return;
99
+ }
100
+ const diff = position - viewport.getMaxScrollPosition();
101
+ if (diff <= 0) {
102
+ return;
103
+ }
104
+ const last = buffer.getLastVisibleItem();
105
+ if (!last) {
106
+ return;
107
+ }
108
+ let size = 0;
109
+ let index = last.$index + 1;
110
+ while (size <= diff && index <= buffer.absMaxIndex) {
111
+ size += buffer.getSizeByIndex(index++);
112
+ }
113
+ const shift = Math.min(size, diff);
114
+ if (shift) {
115
+ viewport.paddings.forward.size += shift;
116
+ scroller.logger.log(`increase fwd padding due to lack of items (${diff} -> ${shift})`);
117
+ }
118
+ }
119
+ static setPosition(scroller, position, done) {
120
+ const { state: { scroll }, viewport, routines } = scroller;
121
+ if (!scroll.hasPositionChanged(position)) {
122
+ return done();
123
+ }
124
+ scroll.syntheticPosition = position;
125
+ scroll.syntheticFulfill = false;
126
+ scroll.cancelAnimation = routines.animate(() => {
127
+ scroll.cancelAnimation = null;
128
+ const inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
129
+ let diffLog = '';
130
+ if (inertiaDiff > 0) {
131
+ position -= inertiaDiff;
132
+ scroll.syntheticPosition = position;
133
+ diffLog = ` (-${inertiaDiff})`;
134
+ }
135
+ scroll.syntheticFulfill = true;
136
+ viewport.scrollPosition = position;
137
+ scroller.logger.stat('after scroll adjustment' + diffLog);
138
+ done();
139
+ });
140
+ }
141
+ }
142
142
  //# sourceMappingURL=adjust.js.map