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,78 +1,78 @@
1
- import { AdapterMethods } from '../../inputs/index';
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- const { [AdapterProcess.fix]: FixParams } = AdapterMethods;
4
- export default class Fix extends BaseAdapterProcessFactory(AdapterProcess.fix) {
5
- static run(scroller, options) {
6
- const { workflow } = scroller;
7
- const { data, params } = Fix.parseInput(scroller, options);
8
- if (!params) {
9
- return;
10
- }
11
- Object.entries(data.params).forEach(([key, value]) => {
12
- if (value.isSet && value.isValid) {
13
- Fix.runByType(scroller, key, value.value, data);
14
- }
15
- });
16
- workflow.call({
17
- process: Fix.process,
18
- status: ProcessStatus.done
19
- });
20
- }
21
- static runByType(scroller, token, value, methodData) {
22
- switch (token) {
23
- case FixParams.scrollPosition:
24
- return Fix.setScrollPosition(scroller, value);
25
- case FixParams.minIndex:
26
- return Fix.setMinIndex(scroller, value);
27
- case FixParams.maxIndex:
28
- return Fix.setMaxIndex(scroller, value);
29
- case FixParams.updater:
30
- return Fix.updateItems(scroller, value);
31
- case FixParams.scrollToItem:
32
- if (methodData.params) {
33
- const scrollToItemOpt = methodData.params[FixParams.scrollToItemOpt];
34
- const options = scrollToItemOpt ? scrollToItemOpt.value : void 0;
35
- return Fix.scrollToItem(scroller, value, options);
36
- }
37
- return;
38
- case FixParams.scrollToItemOpt:
39
- return;
40
- }
41
- }
42
- static setScrollPosition({ viewport }, value) {
43
- let result = value;
44
- if (value === -Infinity) {
45
- result = 0;
46
- }
47
- else if (value === Infinity) {
48
- result = viewport.getScrollableSize();
49
- }
50
- viewport.setPosition(result);
51
- }
52
- static setMinIndex({ buffer, settings }, value) {
53
- settings.minIndex = value;
54
- buffer.absMinIndex = value;
55
- }
56
- static setMaxIndex({ buffer, settings }, value) {
57
- settings.maxIndex = value;
58
- buffer.absMaxIndex = value;
59
- }
60
- static updateItems({ buffer, logger }, value) {
61
- let updateReference = false;
62
- const updater = () => updateReference = true;
63
- buffer.items.forEach(item => value(item.get(), updater));
64
- if (updateReference) {
65
- logger.log(() => 'update Buffer.items reference');
66
- buffer.items = [...buffer.items];
67
- }
68
- }
69
- static scrollToItem(scroller, value, options) {
70
- const found = scroller.buffer.items.find(item => value(item.get()));
71
- if (!found) {
72
- scroller.logger.log(() => 'scrollToItem cancelled, item not found');
73
- return;
74
- }
75
- found.scrollTo(options);
76
- }
77
- }
1
+ import { AdapterMethods } from '../../inputs/index';
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ const { [AdapterProcess.fix]: FixParams } = AdapterMethods;
4
+ export default class Fix extends BaseAdapterProcessFactory(AdapterProcess.fix) {
5
+ static run(scroller, options) {
6
+ const { workflow } = scroller;
7
+ const { data, params } = Fix.parseInput(scroller, options);
8
+ if (!params) {
9
+ return;
10
+ }
11
+ Object.entries(data.params).forEach(([key, value]) => {
12
+ if (value.isSet && value.isValid) {
13
+ Fix.runByType(scroller, key, value.value, data);
14
+ }
15
+ });
16
+ workflow.call({
17
+ process: Fix.process,
18
+ status: ProcessStatus.done
19
+ });
20
+ }
21
+ static runByType(scroller, token, value, methodData) {
22
+ switch (token) {
23
+ case FixParams.scrollPosition:
24
+ return Fix.setScrollPosition(scroller, value);
25
+ case FixParams.minIndex:
26
+ return Fix.setMinIndex(scroller, value);
27
+ case FixParams.maxIndex:
28
+ return Fix.setMaxIndex(scroller, value);
29
+ case FixParams.updater:
30
+ return Fix.updateItems(scroller, value);
31
+ case FixParams.scrollToItem:
32
+ if (methodData.params) {
33
+ const scrollToItemOpt = methodData.params[FixParams.scrollToItemOpt];
34
+ const options = scrollToItemOpt ? scrollToItemOpt.value : void 0;
35
+ return Fix.scrollToItem(scroller, value, options);
36
+ }
37
+ return;
38
+ case FixParams.scrollToItemOpt:
39
+ return;
40
+ }
41
+ }
42
+ static setScrollPosition({ viewport }, value) {
43
+ let result = value;
44
+ if (value === -Infinity) {
45
+ result = 0;
46
+ }
47
+ else if (value === Infinity) {
48
+ result = viewport.getScrollableSize();
49
+ }
50
+ viewport.setPosition(result);
51
+ }
52
+ static setMinIndex({ buffer, settings }, value) {
53
+ settings.minIndex = value;
54
+ buffer.absMinIndex = value;
55
+ }
56
+ static setMaxIndex({ buffer, settings }, value) {
57
+ settings.maxIndex = value;
58
+ buffer.absMaxIndex = value;
59
+ }
60
+ static updateItems({ buffer, logger }, value) {
61
+ let updateReference = false;
62
+ const updater = () => updateReference = true;
63
+ buffer.items.forEach(item => value(item.get(), updater));
64
+ if (updateReference) {
65
+ logger.log(() => 'update Buffer.items reference');
66
+ buffer.items = [...buffer.items];
67
+ }
68
+ }
69
+ static scrollToItem(scroller, value, options) {
70
+ const found = scroller.buffer.items.find(item => value(item.get()));
71
+ if (!found) {
72
+ scroller.logger.log(() => 'scrollToItem cancelled, item not found');
73
+ return;
74
+ }
75
+ found.scrollTo(options);
76
+ }
77
+ }
78
78
  //# sourceMappingURL=fix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../../src/processes/adapter/fix.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\nimport { AdapterMethods } from '../../inputs/index';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport {\n ItemsPredicate,\n ItemsUpdater,\n AdapterFixOptions,\n IValidatedData,\n} from '../../interfaces/index';\n\nconst { [AdapterProcess.fix]: FixParams } = AdapterMethods;\n\nexport default class Fix extends BaseAdapterProcessFactory(AdapterProcess.fix) {\n\n static run(scroller: Scroller, options: AdapterFixOptions): void {\n const { workflow } = scroller;\n\n const { data, params } = Fix.parseInput(scroller, options);\n if (!params) {\n return;\n }\n\n Object.entries(data.params).forEach(([key, value]) => {\n if (value.isSet && value.isValid) {\n Fix.runByType(scroller, key, value.value, data);\n }\n });\n\n workflow.call({\n process: Fix.process,\n status: ProcessStatus.done\n });\n }\n\n static runByType(scroller: Scroller, token: string, value: unknown, methodData: IValidatedData): void {\n switch (token) {\n case FixParams.scrollPosition:\n return Fix.setScrollPosition(scroller, value as number);\n case FixParams.minIndex:\n return Fix.setMinIndex(scroller, value as number);\n case FixParams.maxIndex:\n return Fix.setMaxIndex(scroller, value as number);\n case FixParams.updater:\n return Fix.updateItems(scroller, value as ItemsUpdater);\n case FixParams.scrollToItem:\n if (methodData.params) {\n const scrollToItemOpt = methodData.params[FixParams.scrollToItemOpt];\n const options = scrollToItemOpt ? scrollToItemOpt.value as AdapterFixOptions['scrollToItemOpt'] : void 0;\n return Fix.scrollToItem(scroller, value as ItemsPredicate, options);\n }\n return;\n case FixParams.scrollToItemOpt:\n return;\n }\n }\n\n static setScrollPosition({ viewport }: Scroller, value: number): void {\n let result = value;\n if (value === -Infinity) {\n result = 0;\n } else if (value === Infinity) {\n result = viewport.getScrollableSize();\n }\n viewport.setPosition(result);\n }\n\n static setMinIndex({ buffer, settings }: Scroller, value: number): void {\n settings.minIndex = value;\n buffer.absMinIndex = value;\n }\n\n static setMaxIndex({ buffer, settings }: Scroller, value: number): void {\n settings.maxIndex = value;\n buffer.absMaxIndex = value;\n }\n\n static updateItems({ buffer, logger }: Scroller, value: ItemsUpdater): void {\n let updateReference = false;\n const updater = () => updateReference = true;\n buffer.items.forEach(item => value(item.get(), updater));\n if (updateReference) {\n logger.log(() => 'update Buffer.items reference');\n buffer.items = [...buffer.items];\n }\n }\n\n static scrollToItem(scroller: Scroller, value: ItemsPredicate, options?: boolean | ScrollIntoViewOptions): void {\n const found = scroller.buffer.items.find(item => value(item.get()));\n if (!found) {\n scroller.logger.log(() => 'scrollToItem cancelled, item not found');\n return;\n }\n found.scrollTo(options);\n }\n\n}\n"]}
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../../src/processes/adapter/fix.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport { AdapterMethods } from '../../inputs/index';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport {\r\n ItemsPredicate,\r\n ItemsUpdater,\r\n AdapterFixOptions,\r\n IValidatedData,\r\n} from '../../interfaces/index';\r\n\r\nconst { [AdapterProcess.fix]: FixParams } = AdapterMethods;\r\n\r\nexport default class Fix extends BaseAdapterProcessFactory(AdapterProcess.fix) {\r\n\r\n static run(scroller: Scroller, options: AdapterFixOptions): void {\r\n const { workflow } = scroller;\r\n\r\n const { data, params } = Fix.parseInput(scroller, options);\r\n if (!params) {\r\n return;\r\n }\r\n\r\n Object.entries(data.params).forEach(([key, value]) => {\r\n if (value.isSet && value.isValid) {\r\n Fix.runByType(scroller, key, value.value, data);\r\n }\r\n });\r\n\r\n workflow.call({\r\n process: Fix.process,\r\n status: ProcessStatus.done\r\n });\r\n }\r\n\r\n static runByType(scroller: Scroller, token: string, value: unknown, methodData: IValidatedData): void {\r\n switch (token) {\r\n case FixParams.scrollPosition:\r\n return Fix.setScrollPosition(scroller, value as number);\r\n case FixParams.minIndex:\r\n return Fix.setMinIndex(scroller, value as number);\r\n case FixParams.maxIndex:\r\n return Fix.setMaxIndex(scroller, value as number);\r\n case FixParams.updater:\r\n return Fix.updateItems(scroller, value as ItemsUpdater);\r\n case FixParams.scrollToItem:\r\n if (methodData.params) {\r\n const scrollToItemOpt = methodData.params[FixParams.scrollToItemOpt];\r\n const options = scrollToItemOpt ? scrollToItemOpt.value as AdapterFixOptions['scrollToItemOpt'] : void 0;\r\n return Fix.scrollToItem(scroller, value as ItemsPredicate, options);\r\n }\r\n return;\r\n case FixParams.scrollToItemOpt:\r\n return;\r\n }\r\n }\r\n\r\n static setScrollPosition({ viewport }: Scroller, value: number): void {\r\n let result = value;\r\n if (value === -Infinity) {\r\n result = 0;\r\n } else if (value === Infinity) {\r\n result = viewport.getScrollableSize();\r\n }\r\n viewport.setPosition(result);\r\n }\r\n\r\n static setMinIndex({ buffer, settings }: Scroller, value: number): void {\r\n settings.minIndex = value;\r\n buffer.absMinIndex = value;\r\n }\r\n\r\n static setMaxIndex({ buffer, settings }: Scroller, value: number): void {\r\n settings.maxIndex = value;\r\n buffer.absMaxIndex = value;\r\n }\r\n\r\n static updateItems({ buffer, logger }: Scroller, value: ItemsUpdater): void {\r\n let updateReference = false;\r\n const updater = () => updateReference = true;\r\n buffer.items.forEach(item => value(item.get(), updater));\r\n if (updateReference) {\r\n logger.log(() => 'update Buffer.items reference');\r\n buffer.items = [...buffer.items];\r\n }\r\n }\r\n\r\n static scrollToItem(scroller: Scroller, value: ItemsPredicate, options?: boolean | ScrollIntoViewOptions): void {\r\n const found = scroller.buffer.items.find(item => value(item.get()));\r\n if (!found) {\r\n scroller.logger.log(() => 'scrollToItem cancelled, item not found');\r\n return;\r\n }\r\n found.scrollTo(options);\r\n }\r\n\r\n}\r\n"]}
@@ -1,74 +1,74 @@
1
- import Update from './update';
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- import { Item } from '../../classes/item';
4
- import { Direction } from '../../inputs/index';
5
- export default class Insert extends BaseAdapterProcessFactory(AdapterProcess.insert) {
6
- static run(scroller, options) {
7
- const { params } = Insert.parseInput(scroller, options);
8
- if (!params) {
9
- return;
10
- }
11
- const shouldInsert = Insert.doInsert(scroller, params);
12
- scroller.workflow.call({
13
- process: Insert.process,
14
- status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
15
- });
16
- }
17
- static doInsert(scroller, params) {
18
- if (!Insert.insertEmpty(scroller, params)) {
19
- if (!Insert.insertInBuffer(scroller, params)) {
20
- if (!Insert.insertVirtually(scroller, params)) {
21
- return false;
22
- }
23
- }
24
- }
25
- return true;
26
- }
27
- static insertEmpty(scroller, params) {
28
- const { buffer, routines, state: { fetch } } = scroller;
29
- if (buffer.size) {
30
- return false;
31
- }
32
- const { beforeIndex, afterIndex, items, decrease } = params;
33
- if (!buffer.fillEmpty(items, beforeIndex, afterIndex, !!decrease, (index, data) => new Item(index, data, routines))) {
34
- return false;
35
- }
36
- fetch.fill(buffer.items, buffer.startIndex);
37
- return true;
38
- }
39
- static insertInBuffer(scroller, params) {
40
- const { before, after, beforeIndex, afterIndex, items, decrease } = params;
41
- const indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);
42
- if (isNaN(indexToInsert)) {
43
- return false;
44
- }
45
- const isBackward = Number.isInteger(beforeIndex) || before;
46
- const updateOptions = {
47
- predicate: ({ $index, data }) => {
48
- if (indexToInsert === $index) {
49
- return isBackward ? [...items, data] : [data, ...items];
50
- }
51
- return true;
52
- },
53
- fixRight: decrease
54
- };
55
- return Update.doUpdate(scroller, updateOptions);
56
- }
57
- static insertVirtually(scroller, params) {
58
- const { beforeIndex, afterIndex, items, decrease } = params;
59
- const { buffer, state: { fetch }, viewport } = scroller;
60
- const direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;
61
- const indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex);
62
- if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {
63
- return false;
64
- }
65
- const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
66
- fetch.firstVisible.index = index;
67
- if (!isNaN(index)) {
68
- fetch.simulate = true;
69
- fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
70
- }
71
- return true;
72
- }
73
- }
1
+ import Update from './update';
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ import { Item } from '../../classes/item';
4
+ import { Direction } from '../../inputs/index';
5
+ export default class Insert extends BaseAdapterProcessFactory(AdapterProcess.insert) {
6
+ static run(scroller, options) {
7
+ const { params } = Insert.parseInput(scroller, options);
8
+ if (!params) {
9
+ return;
10
+ }
11
+ const shouldInsert = Insert.doInsert(scroller, params);
12
+ scroller.workflow.call({
13
+ process: Insert.process,
14
+ status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
15
+ });
16
+ }
17
+ static doInsert(scroller, params) {
18
+ if (!Insert.insertEmpty(scroller, params)) {
19
+ if (!Insert.insertInBuffer(scroller, params)) {
20
+ if (!Insert.insertVirtually(scroller, params)) {
21
+ return false;
22
+ }
23
+ }
24
+ }
25
+ return true;
26
+ }
27
+ static insertEmpty(scroller, params) {
28
+ const { buffer, routines, state: { fetch } } = scroller;
29
+ if (buffer.size) {
30
+ return false;
31
+ }
32
+ const { beforeIndex, afterIndex, items, decrease } = params;
33
+ if (!buffer.fillEmpty(items, beforeIndex, afterIndex, !!decrease, (index, data) => new Item(index, data, routines))) {
34
+ return false;
35
+ }
36
+ fetch.fill(buffer.items, buffer.startIndex);
37
+ return true;
38
+ }
39
+ static insertInBuffer(scroller, params) {
40
+ const { before, after, beforeIndex, afterIndex, items, decrease } = params;
41
+ const indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);
42
+ if (isNaN(indexToInsert)) {
43
+ return false;
44
+ }
45
+ const isBackward = Number.isInteger(beforeIndex) || before;
46
+ const updateOptions = {
47
+ predicate: ({ $index, data }) => {
48
+ if (indexToInsert === $index) {
49
+ return isBackward ? [...items, data] : [data, ...items];
50
+ }
51
+ return true;
52
+ },
53
+ fixRight: decrease
54
+ };
55
+ return Update.doUpdate(scroller, updateOptions);
56
+ }
57
+ static insertVirtually(scroller, params) {
58
+ const { beforeIndex, afterIndex, items, decrease } = params;
59
+ const { buffer, state: { fetch }, viewport } = scroller;
60
+ const direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;
61
+ const indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex);
62
+ if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {
63
+ return false;
64
+ }
65
+ const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
66
+ fetch.firstVisible.index = index;
67
+ if (!isNaN(index)) {
68
+ fetch.simulate = true;
69
+ fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
70
+ }
71
+ return true;
72
+ }
73
+ }
74
74
  //# sourceMappingURL=insert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/processes/adapter/insert.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\nimport Update from './update';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { Item } from '../../classes/item';\nimport { Direction } from '../../inputs/index';\nimport { AdapterInsertOptions, AdapterUpdateOptions } from '../../interfaces/index';\n\nexport default class Insert extends BaseAdapterProcessFactory(AdapterProcess.insert) {\n\n static run(scroller: Scroller, options: AdapterInsertOptions): void {\n const { params } = Insert.parseInput(scroller, options);\n if (!params) {\n return;\n }\n const shouldInsert = Insert.doInsert(scroller, params);\n\n scroller.workflow.call({\n process: Insert.process,\n status: shouldInsert ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doInsert(scroller: Scroller, params: AdapterInsertOptions): boolean {\n if (!Insert.insertEmpty(scroller, params)) {\n if (!Insert.insertInBuffer(scroller, params)) {\n if (!Insert.insertVirtually(scroller, params)) {\n return false;\n }\n }\n }\n return true;\n }\n\n static insertEmpty(scroller: Scroller, params: AdapterInsertOptions): boolean {\n const { buffer, routines, state: { fetch } } = scroller;\n if (buffer.size) {\n return false;\n }\n const { beforeIndex, afterIndex, items, decrease } = params;\n if (!buffer.fillEmpty(\n items, beforeIndex, afterIndex, !!decrease,\n (index, data) => new Item(index, data, routines)\n )) {\n return false;\n }\n fetch.fill(buffer.items, buffer.startIndex);\n\n return true;\n }\n\n static insertInBuffer(scroller: Scroller, params: AdapterInsertOptions): boolean {\n const { before, after, beforeIndex, afterIndex, items, decrease } = params;\n const indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);\n\n if (isNaN(indexToInsert)) {\n return false;\n }\n const isBackward = Number.isInteger(beforeIndex) || before;\n\n const updateOptions: AdapterUpdateOptions = {\n predicate: ({ $index, data }) => {\n if (indexToInsert === $index) {\n return isBackward ? [...items, data] : [data, ...items];\n }\n return true;\n },\n fixRight: decrease\n };\n\n return Update.doUpdate(scroller, updateOptions);\n }\n\n static insertVirtually(scroller: Scroller, params: AdapterInsertOptions): boolean {\n const { beforeIndex, afterIndex, items, decrease } = params;\n const { buffer, state: { fetch }, viewport } = scroller;\n const direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;\n const indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex) as number;\n\n if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {\n return false;\n }\n\n const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\n fetch.firstVisible.index = index;\n if (!isNaN(index)) {\n fetch.simulate = true;\n fetch.firstVisible.delta = - buffer.getSizeByIndex(index) + diff;\n }\n\n return true;\n }\n\n}\n"]}
1
+ {"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/processes/adapter/insert.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,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,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;gBAC5C,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;oBAC7C,OAAO,KAAK,CAAC;iBACd;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,QAAkB,EAAE,MAA4B;QACjE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,QAAQ,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,SAAS,CACnB,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,EAC1C,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CACjD,EAAE;YACD,OAAO,KAAK,CAAC;SACd;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAkB,EAAE,MAA4B;QACpE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC3E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QAEjG,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE;YACxB,OAAO,KAAK,CAAC;SACd;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC;QAE3D,MAAM,aAAa,GAAyB;YAC1C,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC9B,IAAI,aAAa,KAAK,MAAM,EAAE;oBAC5B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;iBACzD;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,QAAQ,EAAE,QAAQ;SACnB,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,QAAkB,EAAE,MAA4B;QACrE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAC5D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;QACzF,MAAM,aAAa,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAW,CAAC;QAE9F,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE;YACxE,OAAO,KAAK,CAAC;SACd;QAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtF,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACjB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,CAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;SAClE;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport Update from './update';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { Item } from '../../classes/item';\r\nimport { Direction } from '../../inputs/index';\r\nimport { AdapterInsertOptions, AdapterUpdateOptions } from '../../interfaces/index';\r\n\r\nexport default class Insert extends BaseAdapterProcessFactory(AdapterProcess.insert) {\r\n\r\n static run(scroller: Scroller, options: AdapterInsertOptions): void {\r\n const { params } = Insert.parseInput(scroller, options);\r\n if (!params) {\r\n return;\r\n }\r\n const shouldInsert = Insert.doInsert(scroller, params);\r\n\r\n scroller.workflow.call({\r\n process: Insert.process,\r\n status: shouldInsert ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n static doInsert(scroller: Scroller, params: AdapterInsertOptions): boolean {\r\n if (!Insert.insertEmpty(scroller, params)) {\r\n if (!Insert.insertInBuffer(scroller, params)) {\r\n if (!Insert.insertVirtually(scroller, params)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n static insertEmpty(scroller: Scroller, params: AdapterInsertOptions): boolean {\r\n const { buffer, routines, state: { fetch } } = scroller;\r\n if (buffer.size) {\r\n return false;\r\n }\r\n const { beforeIndex, afterIndex, items, decrease } = params;\r\n if (!buffer.fillEmpty(\r\n items, beforeIndex, afterIndex, !!decrease,\r\n (index, data) => new Item(index, data, routines)\r\n )) {\r\n return false;\r\n }\r\n fetch.fill(buffer.items, buffer.startIndex);\r\n\r\n return true;\r\n }\r\n\r\n static insertInBuffer(scroller: Scroller, params: AdapterInsertOptions): boolean {\r\n const { before, after, beforeIndex, afterIndex, items, decrease } = params;\r\n const indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);\r\n\r\n if (isNaN(indexToInsert)) {\r\n return false;\r\n }\r\n const isBackward = Number.isInteger(beforeIndex) || before;\r\n\r\n const updateOptions: AdapterUpdateOptions = {\r\n predicate: ({ $index, data }) => {\r\n if (indexToInsert === $index) {\r\n return isBackward ? [...items, data] : [data, ...items];\r\n }\r\n return true;\r\n },\r\n fixRight: decrease\r\n };\r\n\r\n return Update.doUpdate(scroller, updateOptions);\r\n }\r\n\r\n static insertVirtually(scroller: Scroller, params: AdapterInsertOptions): boolean {\r\n const { beforeIndex, afterIndex, items, decrease } = params;\r\n const { buffer, state: { fetch }, viewport } = scroller;\r\n const direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;\r\n const indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex) as number;\r\n\r\n if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {\r\n return false;\r\n }\r\n\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.simulate = true;\r\n fetch.firstVisible.delta = - buffer.getSizeByIndex(index) + diff;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n}\r\n"]}
@@ -1,21 +1,20 @@
1
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
- export default class Reload extends BaseAdapterProcessFactory(AdapterProcess.reload) {
3
- static run(scroller, reloadIndex) {
4
- const { viewport, state, buffer } = scroller;
5
- const { params } = Reload.parseInput(scroller, { reloadIndex }, true);
6
- buffer.reset(false, params ? params.reloadIndex : void 0);
7
- viewport.reset(buffer.startIndex);
8
- const payload = {};
9
- if (state.cycle.busy.get()) {
10
- state.scroll.stop();
11
- payload.finalize = true;
12
- state.cycle.interrupter = Reload.process;
13
- }
14
- scroller.workflow.call({
15
- process: Reload.process,
16
- status: ProcessStatus.next,
17
- payload
18
- });
19
- }
20
- }
1
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
+ export default class Reload extends BaseAdapterProcessFactory(AdapterProcess.reload) {
3
+ static run(scroller, reloadIndex) {
4
+ const { viewport, state, buffer } = scroller;
5
+ const { params } = Reload.parseInput(scroller, { reloadIndex }, true);
6
+ buffer.reset(false, params ? params.reloadIndex : void 0);
7
+ viewport.reset(buffer.startIndex);
8
+ const payload = {};
9
+ if (state.cycle.busy.get()) {
10
+ payload.finalize = true;
11
+ state.cycle.interrupter = Reload.process;
12
+ }
13
+ scroller.workflow.call({
14
+ process: Reload.process,
15
+ status: ProcessStatus.next,
16
+ payload
17
+ });
18
+ }
19
+ }
21
20
  //# sourceMappingURL=reload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../../../src/processes/adapter/reload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;IAElF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,WAAmB;QAChD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAE7C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAEtE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAElC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;YAC1B,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;SAC1C;QAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { ProcessPayload } from '../../interfaces/index';\n\nexport default class Reload extends BaseAdapterProcessFactory(AdapterProcess.reload) {\n\n static run(scroller: Scroller, reloadIndex: number): void {\n const { viewport, state, buffer } = scroller;\n\n const { params } = Reload.parseInput(scroller, { reloadIndex }, true);\n\n buffer.reset(false, params ? params.reloadIndex : void 0);\n viewport.reset(buffer.startIndex);\n\n const payload: ProcessPayload = {};\n if (state.cycle.busy.get()) {\n state.scroll.stop();\n payload.finalize = true;\n state.cycle.interrupter = Reload.process;\n }\n\n scroller.workflow.call({\n process: Reload.process,\n status: ProcessStatus.next,\n payload\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../../../src/processes/adapter/reload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;IAElF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,WAAmB;QAChD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAE7C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAEtE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAElC,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;SAC1C;QAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { ProcessPayload } from '../../interfaces/index';\r\n\r\nexport default class Reload extends BaseAdapterProcessFactory(AdapterProcess.reload) {\r\n\r\n static run(scroller: Scroller, reloadIndex: number): void {\r\n const { viewport, state, buffer } = scroller;\r\n\r\n const { params } = Reload.parseInput(scroller, { reloadIndex }, true);\r\n\r\n buffer.reset(false, params ? params.reloadIndex : void 0);\r\n viewport.reset(buffer.startIndex);\r\n\r\n const payload: ProcessPayload = {};\r\n if (state.cycle.busy.get()) {\r\n payload.finalize = true;\r\n state.cycle.interrupter = Reload.process;\r\n }\r\n\r\n scroller.workflow.call({\r\n process: Reload.process,\r\n status: ProcessStatus.next,\r\n payload\r\n });\r\n }\r\n\r\n}\r\n"]}
@@ -1,103 +1,103 @@
1
- import Update from './update';
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- import { Direction } from '../../inputs/index';
4
- export default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {
5
- static run(scroller, options) {
6
- const { params } = Remove.parseInput(scroller, options);
7
- if (!params) {
8
- return;
9
- }
10
- const shouldRemove = Remove.doRemove(scroller, params);
11
- scroller.workflow.call({
12
- process: Remove.process,
13
- status: shouldRemove ? ProcessStatus.next : ProcessStatus.done
14
- });
15
- }
16
- static doRemove(scroller, params) {
17
- const { fetch } = scroller.state;
18
- fetch.firstVisible.index = NaN;
19
- const removed = Remove.removeBufferedItems(scroller, params);
20
- const shouldBuffered = removed.length > 0;
21
- if (shouldBuffered) {
22
- // exclude just removed in-buffer indexes
23
- if (params.indexes && params.indexes.length) {
24
- params.indexes = params.indexes.filter(i => !removed.includes(i));
25
- }
26
- // shift virtual indexes that remain
27
- if (params.indexes && params.indexes.length) {
28
- const diffLeft = (params.increase ? 1 : 0) * removed.length;
29
- const diffRight = (params.increase ? 0 : -1) * removed.length;
30
- params.indexes = params.indexes.map(index => index + (index < removed[0] ? diffLeft : diffRight));
31
- }
32
- }
33
- const shouldVirtual = Remove.removeVirtualItems(scroller, params);
34
- if (!shouldBuffered && !shouldVirtual) {
35
- return false;
36
- }
37
- scroller.logger.stat('after remove');
38
- return true;
39
- }
40
- static removeBufferedItems(scroller, options) {
41
- const { predicate, indexes, increase } = options;
42
- if (!predicate && !indexes) {
43
- return [];
44
- }
45
- const newPredicate = item => (predicate && predicate(item)) ||
46
- (!!indexes && indexes.includes(item.$index));
47
- const indexesToRemove = scroller.buffer.items.reduce((acc, item) => newPredicate(item) ? [...acc, item.$index] : acc, []);
48
- const updateOptions = {
49
- predicate: item => !newPredicate(item),
50
- fixRight: increase
51
- };
52
- Update.doUpdate(scroller, updateOptions);
53
- return indexesToRemove;
54
- }
55
- static removeVirtualItems(scroller, params) {
56
- const { indexes, increase } = params;
57
- if (!indexes || !indexes.length) {
58
- return false;
59
- }
60
- const { buffer, viewport, state: { fetch } } = scroller;
61
- // get items to remove
62
- const { finiteAbsMinIndex, firstIndex, finiteAbsMaxIndex, lastIndex } = buffer;
63
- const toRemove = [];
64
- for (let i = 0, len = indexes.length; i < len; i++) {
65
- const index = indexes[i];
66
- if (index >= finiteAbsMinIndex && !isNaN(firstIndex) && index < firstIndex) {
67
- toRemove.push(index); // backward;
68
- }
69
- else if (index <= finiteAbsMaxIndex && !isNaN(lastIndex) && index > lastIndex) {
70
- toRemove.push(index); // forward;
71
- }
72
- else {
73
- continue;
74
- }
75
- }
76
- if (!toRemove.length) {
77
- return false;
78
- }
79
- // what should be shown after remove; Buffer removal has priority
80
- if (isNaN(fetch.firstVisible.index)) {
81
- const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
82
- fetch.firstVisible.index = index;
83
- if (!isNaN(index)) {
84
- fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
85
- }
86
- }
87
- // virtual removal
88
- scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);
89
- buffer.removeVirtually(toRemove, !!increase);
90
- buffer.checkDefaultSize();
91
- Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);
92
- return true;
93
- }
94
- static shiftFirstVisibleIndex(scroller, listToRemove, increase) {
95
- const { firstVisible } = scroller.state.fetch;
96
- if (isNaN(firstVisible.index)) {
97
- return;
98
- }
99
- const shift = listToRemove.reduce((acc, index) => acc + (((increase && index > firstVisible.index) || (!increase && index < firstVisible.index)) ? 1 : 0), 0);
100
- firstVisible.index = firstVisible.index + (increase ? shift : -shift);
101
- }
102
- }
1
+ import Update from './update';
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ import { Direction } from '../../inputs/index';
4
+ export default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {
5
+ static run(scroller, options) {
6
+ const { params } = Remove.parseInput(scroller, options);
7
+ if (!params) {
8
+ return;
9
+ }
10
+ const shouldRemove = Remove.doRemove(scroller, params);
11
+ scroller.workflow.call({
12
+ process: Remove.process,
13
+ status: shouldRemove ? ProcessStatus.next : ProcessStatus.done
14
+ });
15
+ }
16
+ static doRemove(scroller, params) {
17
+ const { fetch } = scroller.state;
18
+ fetch.firstVisible.index = NaN;
19
+ const removed = Remove.removeBufferedItems(scroller, params);
20
+ const shouldBuffered = removed.length > 0;
21
+ if (shouldBuffered) {
22
+ // exclude just removed in-buffer indexes
23
+ if (params.indexes && params.indexes.length) {
24
+ params.indexes = params.indexes.filter(i => !removed.includes(i));
25
+ }
26
+ // shift virtual indexes that remain
27
+ if (params.indexes && params.indexes.length) {
28
+ const diffLeft = (params.increase ? 1 : 0) * removed.length;
29
+ const diffRight = (params.increase ? 0 : -1) * removed.length;
30
+ params.indexes = params.indexes.map(index => index + (index < removed[0] ? diffLeft : diffRight));
31
+ }
32
+ }
33
+ const shouldVirtual = Remove.removeVirtualItems(scroller, params);
34
+ if (!shouldBuffered && !shouldVirtual) {
35
+ return false;
36
+ }
37
+ scroller.logger.stat('after remove');
38
+ return true;
39
+ }
40
+ static removeBufferedItems(scroller, options) {
41
+ const { predicate, indexes, increase } = options;
42
+ if (!predicate && !indexes) {
43
+ return [];
44
+ }
45
+ const newPredicate = item => (predicate && predicate(item)) ||
46
+ (!!indexes && indexes.includes(item.$index));
47
+ const indexesToRemove = scroller.buffer.items.reduce((acc, item) => newPredicate(item) ? [...acc, item.$index] : acc, []);
48
+ const updateOptions = {
49
+ predicate: item => !newPredicate(item),
50
+ fixRight: increase
51
+ };
52
+ Update.doUpdate(scroller, updateOptions);
53
+ return indexesToRemove;
54
+ }
55
+ static removeVirtualItems(scroller, params) {
56
+ const { indexes, increase } = params;
57
+ if (!indexes || !indexes.length) {
58
+ return false;
59
+ }
60
+ const { buffer, viewport, state: { fetch } } = scroller;
61
+ // get items to remove
62
+ const { finiteAbsMinIndex, firstIndex, finiteAbsMaxIndex, lastIndex } = buffer;
63
+ const toRemove = [];
64
+ for (let i = 0, len = indexes.length; i < len; i++) {
65
+ const index = indexes[i];
66
+ if (index >= finiteAbsMinIndex && !isNaN(firstIndex) && index < firstIndex) {
67
+ toRemove.push(index); // backward;
68
+ }
69
+ else if (index <= finiteAbsMaxIndex && !isNaN(lastIndex) && index > lastIndex) {
70
+ toRemove.push(index); // forward;
71
+ }
72
+ else {
73
+ continue;
74
+ }
75
+ }
76
+ if (!toRemove.length) {
77
+ return false;
78
+ }
79
+ // what should be shown after remove; Buffer removal has priority
80
+ if (isNaN(fetch.firstVisible.index)) {
81
+ const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
82
+ fetch.firstVisible.index = index;
83
+ if (!isNaN(index)) {
84
+ fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
85
+ }
86
+ }
87
+ // virtual removal
88
+ scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);
89
+ buffer.removeVirtually(toRemove, !!increase);
90
+ buffer.checkDefaultSize();
91
+ Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);
92
+ return true;
93
+ }
94
+ static shiftFirstVisibleIndex(scroller, listToRemove, increase) {
95
+ const { firstVisible } = scroller.state.fetch;
96
+ if (isNaN(firstVisible.index)) {
97
+ return;
98
+ }
99
+ const shift = listToRemove.reduce((acc, index) => acc + (((increase && index > firstVisible.index) || (!increase && index < firstVisible.index)) ? 1 : 0), 0);
100
+ firstVisible.index = firstVisible.index + (increase ? shift : -shift);
101
+ }
102
+ }
103
103
  //# sourceMappingURL=remove.js.map