vscroll 1.6.3 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/dist/bundles/vscroll.esm5.js +5854 -5705
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +5341 -5194
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +5858 -5710
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/adapter/context.js +44 -43
  14. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/props.js +300 -300
  16. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  18. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  19. package/dist/esm2015/classes/adapter.js +486 -487
  20. package/dist/esm2015/classes/adapter.js.map +1 -1
  21. package/dist/esm2015/classes/buffer/cache.js +249 -246
  22. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  23. package/dist/esm2015/classes/buffer/checkCall.js +47 -48
  24. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  25. package/dist/esm2015/classes/buffer/defaultSize.js +128 -127
  26. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  27. package/dist/esm2015/classes/buffer.js +343 -342
  28. package/dist/esm2015/classes/buffer.js.map +1 -1
  29. package/dist/esm2015/classes/datasource.js +36 -24
  30. package/dist/esm2015/classes/datasource.js.map +1 -1
  31. package/dist/esm2015/classes/domRoutines.js +160 -160
  32. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  33. package/dist/esm2015/classes/item.js +61 -61
  34. package/dist/esm2015/classes/item.js.map +1 -1
  35. package/dist/esm2015/classes/logger.js +229 -186
  36. package/dist/esm2015/classes/logger.js.map +1 -1
  37. package/dist/esm2015/classes/paddings.js +76 -72
  38. package/dist/esm2015/classes/paddings.js.map +1 -1
  39. package/dist/esm2015/classes/reactive.js +54 -54
  40. package/dist/esm2015/classes/reactive.js.map +1 -1
  41. package/dist/esm2015/classes/settings.js +39 -39
  42. package/dist/esm2015/classes/settings.js.map +1 -1
  43. package/dist/esm2015/classes/state/clip.js +16 -16
  44. package/dist/esm2015/classes/state/clip.js.map +1 -1
  45. package/dist/esm2015/classes/state/cycle.js +60 -60
  46. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  47. package/dist/esm2015/classes/state/fetch.js +124 -122
  48. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  49. package/dist/esm2015/classes/state/render.js +14 -14
  50. package/dist/esm2015/classes/state/render.js.map +1 -1
  51. package/dist/esm2015/classes/state/scroll.js +30 -30
  52. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  53. package/dist/esm2015/classes/state.js +64 -62
  54. package/dist/esm2015/classes/state.js.map +1 -1
  55. package/dist/esm2015/classes/viewport.js +74 -72
  56. package/dist/esm2015/classes/viewport.js.map +1 -1
  57. package/dist/esm2015/index.js +9 -9
  58. package/dist/esm2015/index.js.map +1 -1
  59. package/dist/esm2015/inputs/adapter.js +262 -242
  60. package/dist/esm2015/inputs/adapter.js.map +1 -1
  61. package/dist/esm2015/inputs/common.js +11 -11
  62. package/dist/esm2015/inputs/common.js.map +1 -1
  63. package/dist/esm2015/inputs/datasource.js +20 -20
  64. package/dist/esm2015/inputs/datasource.js.map +1 -1
  65. package/dist/esm2015/inputs/index.js +7 -7
  66. package/dist/esm2015/inputs/index.js.map +1 -1
  67. package/dist/esm2015/inputs/settings.js +151 -146
  68. package/dist/esm2015/inputs/settings.js.map +1 -1
  69. package/dist/esm2015/inputs/validation.js +365 -374
  70. package/dist/esm2015/inputs/validation.js.map +1 -1
  71. package/dist/esm2015/inputs/workflow.js +30 -30
  72. package/dist/esm2015/inputs/workflow.js.map +1 -1
  73. package/dist/esm2015/interfaces/adapter.js +1 -1
  74. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  75. package/dist/esm2015/interfaces/datasource.js +1 -1
  76. package/dist/esm2015/interfaces/datasource.js.map +1 -1
  77. package/dist/esm2015/interfaces/index.js +1 -1
  78. package/dist/esm2015/interfaces/index.js.map +1 -1
  79. package/dist/esm2015/interfaces/item.js +1 -1
  80. package/dist/esm2015/interfaces/item.js.map +1 -1
  81. package/dist/esm2015/interfaces/process.js +1 -1
  82. package/dist/esm2015/interfaces/process.js.map +1 -1
  83. package/dist/esm2015/interfaces/routines.js +1 -1
  84. package/dist/esm2015/interfaces/routines.js.map +1 -1
  85. package/dist/esm2015/interfaces/settings.js +1 -1
  86. package/dist/esm2015/interfaces/settings.js.map +1 -1
  87. package/dist/esm2015/interfaces/state.js +1 -1
  88. package/dist/esm2015/interfaces/state.js.map +1 -1
  89. package/dist/esm2015/interfaces/validation.js +1 -1
  90. package/dist/esm2015/interfaces/validation.js.map +1 -1
  91. package/dist/esm2015/interfaces/workflow.js +1 -1
  92. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  93. package/dist/esm2015/processes/adapter/append.js +37 -36
  94. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  95. package/dist/esm2015/processes/adapter/check.js +33 -32
  96. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  97. package/dist/esm2015/processes/adapter/clip.js +12 -12
  98. package/dist/esm2015/processes/adapter/clip.js.map +1 -1
  99. package/dist/esm2015/processes/adapter/fix.js +79 -77
  100. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  101. package/dist/esm2015/processes/adapter/insert.js +74 -73
  102. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  103. package/dist/esm2015/processes/adapter/pause.js +22 -22
  104. package/dist/esm2015/processes/adapter/pause.js.map +1 -1
  105. package/dist/esm2015/processes/adapter/reload.js +19 -19
  106. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  107. package/dist/esm2015/processes/adapter/remove.js +105 -102
  108. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  109. package/dist/esm2015/processes/adapter/replace.js +39 -39
  110. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  111. package/dist/esm2015/processes/adapter/reset.js +35 -35
  112. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  113. package/dist/esm2015/processes/adapter/update.js +44 -43
  114. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  115. package/dist/esm2015/processes/adjust.js +146 -141
  116. package/dist/esm2015/processes/adjust.js.map +1 -1
  117. package/dist/esm2015/processes/clip.js +49 -49
  118. package/dist/esm2015/processes/clip.js.map +1 -1
  119. package/dist/esm2015/processes/end.js +53 -52
  120. package/dist/esm2015/processes/end.js.map +1 -1
  121. package/dist/esm2015/processes/fetch.js +93 -91
  122. package/dist/esm2015/processes/fetch.js.map +1 -1
  123. package/dist/esm2015/processes/index.js +24 -24
  124. package/dist/esm2015/processes/index.js.map +1 -1
  125. package/dist/esm2015/processes/init.js +14 -14
  126. package/dist/esm2015/processes/init.js.map +1 -1
  127. package/dist/esm2015/processes/misc/base.js +29 -30
  128. package/dist/esm2015/processes/misc/base.js.map +1 -1
  129. package/dist/esm2015/processes/misc/enums.js +36 -36
  130. package/dist/esm2015/processes/misc/enums.js.map +1 -1
  131. package/dist/esm2015/processes/misc/index.js +2 -2
  132. package/dist/esm2015/processes/misc/index.js.map +1 -1
  133. package/dist/esm2015/processes/postFetch.js +66 -65
  134. package/dist/esm2015/processes/postFetch.js.map +1 -1
  135. package/dist/esm2015/processes/preClip.js +86 -85
  136. package/dist/esm2015/processes/preClip.js.map +1 -1
  137. package/dist/esm2015/processes/preFetch.js +253 -240
  138. package/dist/esm2015/processes/preFetch.js.map +1 -1
  139. package/dist/esm2015/processes/render.js +56 -54
  140. package/dist/esm2015/processes/render.js.map +1 -1
  141. package/dist/esm2015/processes/scroll.js +106 -97
  142. package/dist/esm2015/processes/scroll.js.map +1 -1
  143. package/dist/esm2015/processes/start.js +11 -11
  144. package/dist/esm2015/processes/start.js.map +1 -1
  145. package/dist/esm2015/scroller.js +91 -86
  146. package/dist/esm2015/scroller.js.map +1 -1
  147. package/dist/esm2015/version.js +4 -4
  148. package/dist/esm2015/version.js.map +1 -1
  149. package/dist/esm2015/workflow-transducer.js +219 -218
  150. package/dist/esm2015/workflow-transducer.js.map +1 -1
  151. package/dist/esm2015/workflow.js +185 -174
  152. package/dist/esm2015/workflow.js.map +1 -1
  153. package/dist/esm5/classes/adapter/context.js +51 -50
  154. package/dist/esm5/classes/adapter/context.js.map +1 -1
  155. package/dist/esm5/classes/adapter/props.js +300 -300
  156. package/dist/esm5/classes/adapter/props.js.map +1 -1
  157. package/dist/esm5/classes/adapter/wanted.js +29 -29
  158. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  159. package/dist/esm5/classes/adapter.js +538 -535
  160. package/dist/esm5/classes/adapter.js.map +1 -1
  161. package/dist/esm5/classes/buffer/cache.js +262 -260
  162. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  163. package/dist/esm5/classes/buffer/checkCall.js +53 -56
  164. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  165. package/dist/esm5/classes/buffer/defaultSize.js +146 -145
  166. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  167. package/dist/esm5/classes/buffer.js +410 -409
  168. package/dist/esm5/classes/buffer.js.map +1 -1
  169. package/dist/esm5/classes/datasource.js +47 -31
  170. package/dist/esm5/classes/datasource.js.map +1 -1
  171. package/dist/esm5/classes/domRoutines.js +165 -165
  172. package/dist/esm5/classes/domRoutines.js.map +1 -1
  173. package/dist/esm5/classes/item.js +76 -76
  174. package/dist/esm5/classes/item.js.map +1 -1
  175. package/dist/esm5/classes/logger.js +251 -210
  176. package/dist/esm5/classes/logger.js.map +1 -1
  177. package/dist/esm5/classes/paddings.js +84 -80
  178. package/dist/esm5/classes/paddings.js.map +1 -1
  179. package/dist/esm5/classes/reactive.js +69 -69
  180. package/dist/esm5/classes/reactive.js.map +1 -1
  181. package/dist/esm5/classes/settings.js +47 -47
  182. package/dist/esm5/classes/settings.js.map +1 -1
  183. package/dist/esm5/classes/state/clip.js +22 -22
  184. package/dist/esm5/classes/state/clip.js.map +1 -1
  185. package/dist/esm5/classes/state/cycle.js +75 -75
  186. package/dist/esm5/classes/state/cycle.js.map +1 -1
  187. package/dist/esm5/classes/state/fetch.js +150 -148
  188. package/dist/esm5/classes/state/fetch.js.map +1 -1
  189. package/dist/esm5/classes/state/render.js +20 -20
  190. package/dist/esm5/classes/state/render.js.map +1 -1
  191. package/dist/esm5/classes/state/scroll.js +32 -32
  192. package/dist/esm5/classes/state/scroll.js.map +1 -1
  193. package/dist/esm5/classes/state.js +71 -69
  194. package/dist/esm5/classes/state.js.map +1 -1
  195. package/dist/esm5/classes/viewport.js +80 -79
  196. package/dist/esm5/classes/viewport.js.map +1 -1
  197. package/dist/esm5/index.js +9 -9
  198. package/dist/esm5/index.js.map +1 -1
  199. package/dist/esm5/inputs/adapter.js +263 -243
  200. package/dist/esm5/inputs/adapter.js.map +1 -1
  201. package/dist/esm5/inputs/common.js +11 -11
  202. package/dist/esm5/inputs/common.js.map +1 -1
  203. package/dist/esm5/inputs/datasource.js +21 -21
  204. package/dist/esm5/inputs/datasource.js.map +1 -1
  205. package/dist/esm5/inputs/index.js +7 -7
  206. package/dist/esm5/inputs/index.js.map +1 -1
  207. package/dist/esm5/inputs/settings.js +152 -147
  208. package/dist/esm5/inputs/settings.js.map +1 -1
  209. package/dist/esm5/inputs/validation.js +399 -396
  210. package/dist/esm5/inputs/validation.js.map +1 -1
  211. package/dist/esm5/inputs/workflow.js +31 -31
  212. package/dist/esm5/inputs/workflow.js.map +1 -1
  213. package/dist/esm5/interfaces/adapter.js +1 -1
  214. package/dist/esm5/interfaces/adapter.js.map +1 -1
  215. package/dist/esm5/interfaces/datasource.js +1 -1
  216. package/dist/esm5/interfaces/datasource.js.map +1 -1
  217. package/dist/esm5/interfaces/index.js +1 -1
  218. package/dist/esm5/interfaces/index.js.map +1 -1
  219. package/dist/esm5/interfaces/item.js +1 -1
  220. package/dist/esm5/interfaces/item.js.map +1 -1
  221. package/dist/esm5/interfaces/process.js +1 -1
  222. package/dist/esm5/interfaces/process.js.map +1 -1
  223. package/dist/esm5/interfaces/routines.js +1 -1
  224. package/dist/esm5/interfaces/routines.js.map +1 -1
  225. package/dist/esm5/interfaces/settings.js +1 -1
  226. package/dist/esm5/interfaces/settings.js.map +1 -1
  227. package/dist/esm5/interfaces/state.js +1 -1
  228. package/dist/esm5/interfaces/state.js.map +1 -1
  229. package/dist/esm5/interfaces/validation.js +1 -1
  230. package/dist/esm5/interfaces/validation.js.map +1 -1
  231. package/dist/esm5/interfaces/workflow.js +1 -1
  232. package/dist/esm5/interfaces/workflow.js.map +1 -1
  233. package/dist/esm5/processes/adapter/append.js +45 -44
  234. package/dist/esm5/processes/adapter/append.js.map +1 -1
  235. package/dist/esm5/processes/adapter/check.js +40 -39
  236. package/dist/esm5/processes/adapter/check.js.map +1 -1
  237. package/dist/esm5/processes/adapter/clip.js +19 -19
  238. package/dist/esm5/processes/adapter/clip.js.map +1 -1
  239. package/dist/esm5/processes/adapter/fix.js +91 -89
  240. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  241. package/dist/esm5/processes/adapter/insert.js +82 -81
  242. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  243. package/dist/esm5/processes/adapter/pause.js +29 -29
  244. package/dist/esm5/processes/adapter/pause.js.map +1 -1
  245. package/dist/esm5/processes/adapter/reload.js +26 -26
  246. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  247. package/dist/esm5/processes/adapter/remove.js +116 -115
  248. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  249. package/dist/esm5/processes/adapter/replace.js +47 -47
  250. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  251. package/dist/esm5/processes/adapter/reset.js +42 -42
  252. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  253. package/dist/esm5/processes/adapter/update.js +64 -59
  254. package/dist/esm5/processes/adapter/update.js.map +1 -1
  255. package/dist/esm5/processes/adjust.js +157 -152
  256. package/dist/esm5/processes/adjust.js.map +1 -1
  257. package/dist/esm5/processes/clip.js +60 -60
  258. package/dist/esm5/processes/clip.js.map +1 -1
  259. package/dist/esm5/processes/end.js +64 -63
  260. package/dist/esm5/processes/end.js.map +1 -1
  261. package/dist/esm5/processes/fetch.js +104 -102
  262. package/dist/esm5/processes/fetch.js.map +1 -1
  263. package/dist/esm5/processes/index.js +24 -24
  264. package/dist/esm5/processes/index.js.map +1 -1
  265. package/dist/esm5/processes/init.js +21 -21
  266. package/dist/esm5/processes/init.js.map +1 -1
  267. package/dist/esm5/processes/misc/base.js +43 -44
  268. package/dist/esm5/processes/misc/base.js.map +1 -1
  269. package/dist/esm5/processes/misc/enums.js +36 -36
  270. package/dist/esm5/processes/misc/enums.js.map +1 -1
  271. package/dist/esm5/processes/misc/index.js +2 -2
  272. package/dist/esm5/processes/misc/index.js.map +1 -1
  273. package/dist/esm5/processes/postFetch.js +73 -74
  274. package/dist/esm5/processes/postFetch.js.map +1 -1
  275. package/dist/esm5/processes/preClip.js +95 -94
  276. package/dist/esm5/processes/preClip.js.map +1 -1
  277. package/dist/esm5/processes/preFetch.js +259 -247
  278. package/dist/esm5/processes/preFetch.js.map +1 -1
  279. package/dist/esm5/processes/render.js +63 -63
  280. package/dist/esm5/processes/render.js.map +1 -1
  281. package/dist/esm5/processes/scroll.js +113 -107
  282. package/dist/esm5/processes/scroll.js.map +1 -1
  283. package/dist/esm5/processes/start.js +18 -18
  284. package/dist/esm5/processes/start.js.map +1 -1
  285. package/dist/esm5/scroller.js +104 -100
  286. package/dist/esm5/scroller.js.map +1 -1
  287. package/dist/esm5/version.js +4 -4
  288. package/dist/esm5/version.js.map +1 -1
  289. package/dist/esm5/workflow-transducer.js +221 -220
  290. package/dist/esm5/workflow-transducer.js.map +1 -1
  291. package/dist/esm5/workflow.js +204 -198
  292. package/dist/esm5/workflow.js.map +1 -1
  293. package/dist/typings/classes/adapter/context.d.ts +4 -4
  294. package/dist/typings/classes/adapter/props.d.ts +52 -52
  295. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  296. package/dist/typings/classes/adapter.d.ts +79 -79
  297. package/dist/typings/classes/buffer/cache.d.ts +94 -95
  298. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  299. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  300. package/dist/typings/classes/buffer.d.ts +64 -64
  301. package/dist/typings/classes/datasource.d.ts +11 -11
  302. package/dist/typings/classes/domRoutines.d.ts +36 -36
  303. package/dist/typings/classes/item.d.ts +28 -28
  304. package/dist/typings/classes/logger.d.ts +32 -28
  305. package/dist/typings/classes/paddings.d.ts +22 -22
  306. package/dist/typings/classes/reactive.d.ts +21 -21
  307. package/dist/typings/classes/settings.d.ts +126 -119
  308. package/dist/typings/classes/state/clip.d.ts +9 -9
  309. package/dist/typings/classes/state/cycle.d.ts +29 -29
  310. package/dist/typings/classes/state/fetch.d.ts +62 -62
  311. package/dist/typings/classes/state/render.d.ts +9 -9
  312. package/dist/typings/classes/state/scroll.d.ts +16 -16
  313. package/dist/typings/classes/state.d.ts +29 -29
  314. package/dist/typings/classes/viewport.d.ts +32 -32
  315. package/dist/typings/index.d.ts +10 -10
  316. package/dist/typings/inputs/adapter.d.ts +5 -5
  317. package/dist/typings/inputs/common.d.ts +9 -9
  318. package/dist/typings/inputs/datasource.d.ts +7 -7
  319. package/dist/typings/inputs/index.d.ts +7 -7
  320. package/dist/typings/inputs/settings.d.ts +42 -41
  321. package/dist/typings/inputs/validation.d.ts +82 -83
  322. package/dist/typings/inputs/workflow.d.ts +9 -9
  323. package/dist/typings/interfaces/adapter.d.ts +164 -164
  324. package/dist/typings/interfaces/datasource.d.ts +28 -28
  325. package/dist/typings/interfaces/index.d.ts +10 -10
  326. package/dist/typings/interfaces/item.d.ts +8 -8
  327. package/dist/typings/interfaces/process.d.ts +35 -35
  328. package/dist/typings/interfaces/routines.d.ts +166 -166
  329. package/dist/typings/interfaces/settings.d.ts +32 -31
  330. package/dist/typings/interfaces/state.d.ts +24 -24
  331. package/dist/typings/interfaces/validation.d.ts +33 -33
  332. package/dist/typings/interfaces/workflow.d.ts +53 -53
  333. package/dist/typings/processes/adapter/append.d.ts +14 -14
  334. package/dist/typings/processes/adapter/check.d.ts +6 -6
  335. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  336. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  337. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  338. package/dist/typings/processes/adapter/pause.d.ts +8 -8
  339. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  340. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  341. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  342. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  343. package/dist/typings/processes/adapter/update.d.ts +8 -8
  344. package/dist/typings/processes/adjust.d.ts +10 -10
  345. package/dist/typings/processes/clip.d.ts +7 -7
  346. package/dist/typings/processes/end.d.ts +10 -10
  347. package/dist/typings/processes/fetch.d.ts +18 -18
  348. package/dist/typings/processes/index.d.ts +24 -24
  349. package/dist/typings/processes/init.d.ts +7 -7
  350. package/dist/typings/processes/misc/base.d.ts +4 -4
  351. package/dist/typings/processes/misc/enums.d.ts +33 -33
  352. package/dist/typings/processes/misc/index.d.ts +2 -2
  353. package/dist/typings/processes/postFetch.d.ts +8 -8
  354. package/dist/typings/processes/preClip.d.ts +12 -12
  355. package/dist/typings/processes/preFetch.d.ts +17 -17
  356. package/dist/typings/processes/render.d.ts +9 -9
  357. package/dist/typings/processes/scroll.d.ts +13 -13
  358. package/dist/typings/processes/start.d.ts +6 -6
  359. package/dist/typings/scroller.d.ts +26 -26
  360. package/dist/typings/version.d.ts +5 -5
  361. package/dist/typings/workflow-transducer.d.ts +2 -2
  362. package/dist/typings/workflow.d.ts +30 -29
  363. package/package.json +72 -69
@@ -1,343 +1,344 @@
1
- import { Cache } from './buffer/cache';
2
- import { CheckBufferCall } from './buffer/checkCall';
3
- import { Reactive } from './reactive';
4
- import { Direction } from '../inputs/index';
5
- export class Buffer {
6
- constructor(settings, onDataChanged, logger) {
7
- this._items = [];
8
- this.logger = logger;
9
- this.changeItems = onDataChanged;
10
- this.bof = new Reactive(false);
11
- this.eof = new Reactive(false);
12
- this.cache = new Cache(settings, logger);
13
- this.checkCall = new CheckBufferCall(this, logger);
14
- this.startIndexUser = settings.startIndex;
15
- this.minIndexUser = settings.minIndex;
16
- this.maxIndexUser = settings.maxIndex;
17
- this.reset(true);
18
- }
19
- dispose() {
20
- this.bof.dispose();
21
- this.eof.dispose();
22
- this._items.forEach(item => item.dispose());
23
- this._items = [];
24
- }
25
- reset(force, startIndex) {
26
- this.items.forEach(item => item.hide());
27
- this.pristine = true;
28
- this.items = [];
29
- this.cache.reset(force);
30
- this.absMinIndex = this.minIndexUser;
31
- this.absMaxIndex = this.maxIndexUser;
32
- this.setCurrentStartIndex(startIndex);
33
- this.bof.set(false);
34
- this.eof.set(false);
35
- this.pristine = false;
36
- }
37
- setCurrentStartIndex(newStartIndex) {
38
- const min = this.minIndexUser;
39
- const max = this.maxIndexUser;
40
- const start = this.startIndexUser;
41
- let index = Number(newStartIndex);
42
- if (Number.isNaN(index)) {
43
- this.logger.log(() => `fallback startIndex to settings.startIndex (${start})`);
44
- index = start;
45
- }
46
- if (index < min) {
47
- this.logger.log(() => `setting startIndex to settings.minIndex (${min}) because ${index} < ${min}`);
48
- index = min;
49
- }
50
- if (index > max) {
51
- this.logger.log(() => `setting startIndex to settings.maxIndex (${max}) because ${index} > ${max}`);
52
- index = max;
53
- }
54
- this.startIndex = index;
55
- }
56
- set items(items) {
57
- this._items = items;
58
- this.changeItems(items);
59
- if (!this.pristine) {
60
- this.checkBOF();
61
- this.checkEOF();
62
- }
63
- }
64
- get items() {
65
- return this._items;
66
- }
67
- set absMinIndex(value) {
68
- if (this._absMinIndex !== value) {
69
- this._absMinIndex = Number.isFinite(this._absMaxIndex) && value > this._absMaxIndex ? this._absMaxIndex : value;
70
- }
71
- if (!this.pristine) {
72
- this.checkBOF();
73
- }
74
- }
75
- get absMinIndex() {
76
- return this._absMinIndex;
77
- }
78
- set absMaxIndex(value) {
79
- if (this._absMaxIndex !== value) {
80
- this._absMaxIndex = Number.isFinite(this._absMinIndex) && value < this._absMinIndex ? this._absMinIndex : value;
81
- }
82
- if (!this.pristine) {
83
- this.checkEOF();
84
- }
85
- }
86
- get absMaxIndex() {
87
- return this._absMaxIndex;
88
- }
89
- checkBOF() {
90
- // since bof has no setter, need to call checkBOF() on items and absMinIndex change
91
- const bof = this.items.length
92
- ? (this.items[0].$index === this.absMinIndex)
93
- : isFinite(this.absMinIndex);
94
- this.bof.set(bof);
95
- }
96
- checkEOF() {
97
- // since eof has no setter, need to call checkEOF() on items and absMaxIndex change
98
- const eof = this.items.length
99
- ? (this.items[this.items.length - 1].$index === this.absMaxIndex)
100
- : isFinite(this.absMaxIndex);
101
- this.eof.set(eof);
102
- }
103
- get size() {
104
- return this._items.length;
105
- }
106
- get cacheSize() {
107
- return this.cache.size;
108
- }
109
- get defaultSize() {
110
- return this.cache.getDefaultSize();
111
- }
112
- get minIndex() {
113
- return isFinite(this.cache.minIndex) ? this.cache.minIndex : this.startIndex;
114
- }
115
- get maxIndex() {
116
- return isFinite(this.cache.maxIndex) ? this.cache.maxIndex : this.startIndex;
117
- }
118
- get firstIndex() {
119
- return this.items.length ? this.items[0].$index : NaN;
120
- }
121
- get lastIndex() {
122
- return this.items.length ? this.items[this.items.length - 1].$index : NaN;
123
- }
124
- get finiteAbsMinIndex() {
125
- return isFinite(this.absMinIndex) ? this.absMinIndex : this.minIndex;
126
- }
127
- get finiteAbsMaxIndex() {
128
- return isFinite(this.absMaxIndex) ? this.absMaxIndex : this.maxIndex;
129
- }
130
- get($index) {
131
- return this.items.find(item => item.$index === $index);
132
- }
133
- setItems(items) {
134
- if (!this.items.length) {
135
- this.items = [...items];
136
- }
137
- else if (this.items[0].$index > items[items.length - 1].$index) {
138
- this.items = [...items, ...this.items];
139
- }
140
- else if (items[0].$index > this.items[this.items.length - 1].$index) {
141
- this.items = [...this.items, ...items];
142
- }
143
- else {
144
- return false;
145
- }
146
- return true;
147
- }
148
- clip() {
149
- this.items = this.items.filter(({ toRemove }) => !toRemove);
150
- }
151
- getIndexToInsert(predicate, before, after) {
152
- return this.checkCall.insertInBuffer(predicate, before, after);
153
- }
154
- shiftExtremum(amount, fixRight) {
155
- if (!fixRight) {
156
- this.absMaxIndex += amount;
157
- }
158
- else {
159
- this.absMinIndex -= amount;
160
- this.startIndex -= amount;
161
- }
162
- if (this.startIndex > this.absMaxIndex) {
163
- this.startIndex = this.absMaxIndex;
164
- }
165
- else if (this.startIndex < this.absMinIndex) {
166
- this.startIndex = this.absMinIndex;
167
- }
168
- }
169
- insertVirtually(items, index, direction, fixRight) {
170
- if (!this.checkCall.insertVirtual(items, index, direction)) {
171
- return false;
172
- }
173
- let shift = 0;
174
- if (index <= this.firstIndex && !fixRight) {
175
- shift = items.length;
176
- }
177
- else if (index >= this.lastIndex && fixRight) {
178
- shift = -items.length;
179
- }
180
- if (shift) {
181
- this.items.forEach(item => item.updateIndex(item.$index + shift));
182
- this.cache.insertItems(items, index, direction, fixRight);
183
- this.items = [...this.items];
184
- }
185
- this.shiftExtremum(items.length, fixRight);
186
- return true;
187
- }
188
- removeVirtually(indexes, fixRight) {
189
- const length = this.items.length;
190
- let shifted = false;
191
- for (let i = fixRight ? length - 1 : 0; fixRight ? i >= 0 : i < length; fixRight ? i-- : i++) {
192
- const item = this.items[i];
193
- const diff = indexes.reduce((acc, index) => acc + (fixRight
194
- ? (item.$index < index ? 1 : 0)
195
- : (item.$index > index ? -1 : 0)), 0);
196
- shifted = shifted || !!diff;
197
- item.updateIndex(item.$index + diff);
198
- }
199
- this.shiftExtremum(-indexes.length, fixRight);
200
- if (shifted) {
201
- this.items = [...this.items];
202
- }
203
- this.cache.removeItems(indexes, fixRight);
204
- }
205
- fillEmpty(items, beforeIndex, afterIndex, fixRight, generator) {
206
- if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {
207
- return false;
208
- }
209
- const before = Number.isInteger(beforeIndex);
210
- const index = (before ? beforeIndex : afterIndex);
211
- const shift = (fixRight ? items.length : (before ? 1 : 0));
212
- this.items = items.map((data, i) => generator(index + i + (!before ? 1 : 0) - shift, data));
213
- this._absMinIndex = this.items[0].$index;
214
- this._absMaxIndex = this.items[this.size - 1].$index;
215
- if (this.startIndex <= this.absMinIndex) {
216
- this.startIndex = this.absMinIndex;
217
- }
218
- else if (this.startIndex > this.absMaxIndex) {
219
- this.startIndex = this.absMaxIndex;
220
- }
221
- return true;
222
- }
223
- updateItems(predicate, generator, indexToTrack, fixRight) {
224
- if (!this.size || Number.isNaN(this.firstIndex)) {
225
- return { trackedIndex: NaN, toRemove: [] };
226
- }
227
- let trackedIndex = indexToTrack;
228
- let index = fixRight ? this.lastIndex : this.firstIndex;
229
- const items = [];
230
- const diff = fixRight ? -1 : 1;
231
- const limit = this.size - 1;
232
- const beforeMap = new Map(); // need to persist original $indexes
233
- const updateArray = Array.prototype[fixRight ? 'unshift' : 'push'];
234
- for (let i = fixRight ? limit : 0; fixRight ? i >= 0 : i <= limit; i += diff) {
235
- const item = this.items[i];
236
- beforeMap.set(item.$index, item);
237
- const result = predicate(item);
238
- // if predicate result is falsy or empty array -> delete
239
- if (!result || (Array.isArray(result) && !result.length)) {
240
- item.toRemove = true;
241
- trackedIndex += item.$index >= indexToTrack ? (fixRight ? 1 : 0) : (fixRight ? 0 : -1);
242
- this.shiftExtremum(-1, fixRight);
243
- continue;
244
- }
245
- // if predicate result is truthy but not array -> leave
246
- if (!Array.isArray(result)) {
247
- item.updateIndex(index);
248
- updateArray.call(items, item);
249
- index += diff;
250
- continue;
251
- }
252
- // if predicate result is non-empty array -> insert/replace
253
- if (item.$index < indexToTrack) {
254
- trackedIndex += fixRight ? 0 : result.length - 1;
255
- }
256
- else if (item.$index > indexToTrack) {
257
- trackedIndex += fixRight ? 1 - result.length : 0;
258
- }
259
- let toRemove = true;
260
- const newItems = [];
261
- (fixRight ? [...result].reverse() : result).forEach((data, i) => {
262
- let newItem;
263
- if (item.data === data) {
264
- if (indexToTrack === item.$index) {
265
- trackedIndex = index + i * diff;
266
- }
267
- item.updateIndex(index + i * diff);
268
- newItem = item;
269
- toRemove = false; // insert case
270
- }
271
- else {
272
- newItem = generator(index + i * diff, data);
273
- newItem.toInsert = true;
274
- }
275
- updateArray.call(newItems, newItem);
276
- });
277
- item.toRemove = toRemove;
278
- updateArray.call(items, ...newItems);
279
- index += diff * result.length;
280
- if (result.length > 1) {
281
- this.shiftExtremum(result.length - 1, fixRight);
282
- }
283
- }
284
- const toRemove = this.items.filter(item => item.toRemove);
285
- const itemsBefore = Array.from(beforeMap)
286
- .map(([$index, { size, toRemove }]) => ({ $index, size, toRemove }))
287
- .sort((a, b) => a.$index - b.$index);
288
- this.items = items;
289
- this.cache.updateSubset(itemsBefore, items, fixRight);
290
- if (this.finiteAbsMinIndex === this.finiteAbsMaxIndex) {
291
- trackedIndex = NaN;
292
- }
293
- else if (trackedIndex > this.finiteAbsMaxIndex) {
294
- trackedIndex = this.finiteAbsMaxIndex;
295
- }
296
- else if (trackedIndex < this.finiteAbsMinIndex) {
297
- trackedIndex = this.finiteAbsMinIndex;
298
- }
299
- return { trackedIndex, toRemove };
300
- }
301
- cacheItem(item) {
302
- this.cache.add(item);
303
- }
304
- getFirstVisibleItemIndex() {
305
- const length = this.items.length;
306
- for (let i = 0; i < length; i++) {
307
- if (!this.items[i].invisible) {
308
- return i;
309
- }
310
- }
311
- return -1;
312
- }
313
- getLastVisibleItemIndex() {
314
- for (let i = this.items.length - 1; i >= 0; i--) {
315
- if (!this.items[i].invisible) {
316
- return i;
317
- }
318
- }
319
- return -1;
320
- }
321
- getFirstVisibleItem() {
322
- const index = this.getFirstVisibleItemIndex();
323
- return index >= 0 ? this.items[index] : void 0;
324
- }
325
- getLastVisibleItem() {
326
- const index = this.getLastVisibleItemIndex();
327
- return index >= 0 ? this.items[index] : void 0;
328
- }
329
- getEdgeVisibleItem(direction, opposite) {
330
- return direction === (!opposite ? Direction.forward : Direction.backward) ?
331
- this.getLastVisibleItem() : this.getFirstVisibleItem();
332
- }
333
- getVisibleItemsCount() {
334
- return this.items.reduce((acc, item) => acc + (item.invisible ? 0 : 1), 0);
335
- }
336
- getSizeByIndex(index) {
337
- return this.cache.getSizeByIndex(index);
338
- }
339
- checkDefaultSize() {
340
- return this.cache.recalculateDefaultSize();
341
- }
342
- }
1
+ import { Cache } from './buffer/cache';
2
+ import { CheckBufferCall } from './buffer/checkCall';
3
+ import { Reactive } from './reactive';
4
+ import { Direction } from '../inputs/index';
5
+ export class Buffer {
6
+ constructor(settings, onDataChanged, logger) {
7
+ this._items = [];
8
+ this.logger = logger;
9
+ this.changeItems = onDataChanged;
10
+ this.bof = new Reactive(false);
11
+ this.eof = new Reactive(false);
12
+ this.cache = new Cache(settings, logger);
13
+ this.checkCall = new CheckBufferCall(this, logger);
14
+ this.startIndexUser = settings.startIndex;
15
+ this.minIndexUser = settings.minIndex;
16
+ this.maxIndexUser = settings.maxIndex;
17
+ this.reset(true);
18
+ }
19
+ dispose() {
20
+ this.bof.dispose();
21
+ this.eof.dispose();
22
+ this._items.forEach(item => item.dispose());
23
+ this._items = [];
24
+ }
25
+ reset(force, startIndex) {
26
+ this.items.forEach(item => item.hide());
27
+ this.pristine = true;
28
+ this.items = [];
29
+ this.cache.reset(force);
30
+ this.absMinIndex = this.minIndexUser;
31
+ this.absMaxIndex = this.maxIndexUser;
32
+ this.setCurrentStartIndex(startIndex);
33
+ this.bof.set(false);
34
+ this.eof.set(false);
35
+ this.pristine = false;
36
+ }
37
+ setCurrentStartIndex(newStartIndex) {
38
+ const min = this.minIndexUser;
39
+ const max = this.maxIndexUser;
40
+ const start = this.startIndexUser;
41
+ let index = Number(newStartIndex);
42
+ if (Number.isNaN(index)) {
43
+ this.logger.log(() => `fallback startIndex to settings.startIndex (${start})`);
44
+ index = start;
45
+ }
46
+ if (index < min) {
47
+ this.logger.log(() => `setting startIndex to settings.minIndex (${min}) because ${index} < ${min}`);
48
+ index = min;
49
+ }
50
+ if (index > max) {
51
+ this.logger.log(() => `setting startIndex to settings.maxIndex (${max}) because ${index} > ${max}`);
52
+ index = max;
53
+ }
54
+ this.startIndex = index;
55
+ }
56
+ set items(items) {
57
+ this._items = items;
58
+ this.changeItems(items);
59
+ if (!this.pristine) {
60
+ this.checkBOF();
61
+ this.checkEOF();
62
+ }
63
+ }
64
+ get items() {
65
+ return this._items;
66
+ }
67
+ set absMinIndex(value) {
68
+ if (this._absMinIndex !== value) {
69
+ this._absMinIndex =
70
+ Number.isFinite(this._absMaxIndex) && value > this._absMaxIndex ? this._absMaxIndex : value;
71
+ }
72
+ if (!this.pristine) {
73
+ this.checkBOF();
74
+ }
75
+ }
76
+ get absMinIndex() {
77
+ return this._absMinIndex;
78
+ }
79
+ set absMaxIndex(value) {
80
+ if (this._absMaxIndex !== value) {
81
+ this._absMaxIndex =
82
+ Number.isFinite(this._absMinIndex) && value < this._absMinIndex ? this._absMinIndex : value;
83
+ }
84
+ if (!this.pristine) {
85
+ this.checkEOF();
86
+ }
87
+ }
88
+ get absMaxIndex() {
89
+ return this._absMaxIndex;
90
+ }
91
+ checkBOF() {
92
+ // since bof has no setter, need to call checkBOF() on items and absMinIndex change
93
+ const bof = this.items.length
94
+ ? this.items[0].$index === this.absMinIndex
95
+ : isFinite(this.absMinIndex);
96
+ this.bof.set(bof);
97
+ }
98
+ checkEOF() {
99
+ // since eof has no setter, need to call checkEOF() on items and absMaxIndex change
100
+ const eof = this.items.length
101
+ ? this.items[this.items.length - 1].$index === this.absMaxIndex
102
+ : isFinite(this.absMaxIndex);
103
+ this.eof.set(eof);
104
+ }
105
+ get size() {
106
+ return this._items.length;
107
+ }
108
+ get cacheSize() {
109
+ return this.cache.size;
110
+ }
111
+ get defaultSize() {
112
+ return this.cache.getDefaultSize();
113
+ }
114
+ get minIndex() {
115
+ return isFinite(this.cache.minIndex) ? this.cache.minIndex : this.startIndex;
116
+ }
117
+ get maxIndex() {
118
+ return isFinite(this.cache.maxIndex) ? this.cache.maxIndex : this.startIndex;
119
+ }
120
+ get firstIndex() {
121
+ return this.items.length ? this.items[0].$index : NaN;
122
+ }
123
+ get lastIndex() {
124
+ return this.items.length ? this.items[this.items.length - 1].$index : NaN;
125
+ }
126
+ get finiteAbsMinIndex() {
127
+ return isFinite(this.absMinIndex) ? this.absMinIndex : this.minIndex;
128
+ }
129
+ get finiteAbsMaxIndex() {
130
+ return isFinite(this.absMaxIndex) ? this.absMaxIndex : this.maxIndex;
131
+ }
132
+ get($index) {
133
+ return this.items.find(item => item.$index === $index);
134
+ }
135
+ setItems(items) {
136
+ if (!this.items.length) {
137
+ this.items = [...items];
138
+ }
139
+ else if (this.items[0].$index > items[items.length - 1].$index) {
140
+ this.items = [...items, ...this.items];
141
+ }
142
+ else if (items[0].$index > this.items[this.items.length - 1].$index) {
143
+ this.items = [...this.items, ...items];
144
+ }
145
+ else {
146
+ return false;
147
+ }
148
+ return true;
149
+ }
150
+ clip() {
151
+ this.items = this.items.filter(({ toRemove }) => !toRemove);
152
+ }
153
+ getIndexToInsert(predicate, before, after) {
154
+ return this.checkCall.insertInBuffer(predicate, before, after);
155
+ }
156
+ shiftExtremum(amount, fixRight) {
157
+ if (!fixRight) {
158
+ this.absMaxIndex += amount;
159
+ }
160
+ else {
161
+ this.absMinIndex -= amount;
162
+ this.startIndex -= amount;
163
+ }
164
+ if (this.startIndex > this.absMaxIndex) {
165
+ this.startIndex = this.absMaxIndex;
166
+ }
167
+ else if (this.startIndex < this.absMinIndex) {
168
+ this.startIndex = this.absMinIndex;
169
+ }
170
+ }
171
+ insertVirtually(items, index, direction, fixRight) {
172
+ if (!this.checkCall.insertVirtual(items, index, direction)) {
173
+ return false;
174
+ }
175
+ let shift = 0;
176
+ if (index <= this.firstIndex && !fixRight) {
177
+ shift = items.length;
178
+ }
179
+ else if (index >= this.lastIndex && fixRight) {
180
+ shift = -items.length;
181
+ }
182
+ if (shift) {
183
+ this.items.forEach(item => item.updateIndex(item.$index + shift));
184
+ this.cache.insertItems(items, index, direction, fixRight);
185
+ this.items = [...this.items];
186
+ }
187
+ this.shiftExtremum(items.length, fixRight);
188
+ return true;
189
+ }
190
+ removeVirtually(indexes, fixRight) {
191
+ const length = this.items.length;
192
+ let shifted = false;
193
+ for (let i = fixRight ? length - 1 : 0; fixRight ? i >= 0 : i < length; fixRight ? i-- : i++) {
194
+ const item = this.items[i];
195
+ const diff = indexes.reduce((acc, index) => acc + (fixRight ? (item.$index < index ? 1 : 0) : item.$index > index ? -1 : 0), 0);
196
+ shifted = shifted || !!diff;
197
+ item.updateIndex(item.$index + diff);
198
+ }
199
+ this.shiftExtremum(-indexes.length, fixRight);
200
+ if (shifted) {
201
+ this.items = [...this.items];
202
+ }
203
+ this.cache.removeItems(indexes, fixRight);
204
+ }
205
+ fillEmpty(items, beforeIndex, afterIndex, fixRight, generator) {
206
+ if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {
207
+ return false;
208
+ }
209
+ const before = Number.isInteger(beforeIndex);
210
+ const index = (before ? beforeIndex : afterIndex);
211
+ const shift = fixRight ? items.length : before ? 1 : 0;
212
+ this.items = items.map((data, i) => generator(index + i + (!before ? 1 : 0) - shift, data));
213
+ this._absMinIndex = this.items[0].$index;
214
+ this._absMaxIndex = this.items[this.size - 1].$index;
215
+ if (this.startIndex <= this.absMinIndex) {
216
+ this.startIndex = this.absMinIndex;
217
+ }
218
+ else if (this.startIndex > this.absMaxIndex) {
219
+ this.startIndex = this.absMaxIndex;
220
+ }
221
+ return true;
222
+ }
223
+ updateItems(predicate, generator, indexToTrack, fixRight) {
224
+ if (!this.size || Number.isNaN(this.firstIndex)) {
225
+ return { trackedIndex: NaN, toRemove: [] };
226
+ }
227
+ let trackedIndex = indexToTrack;
228
+ let index = fixRight ? this.lastIndex : this.firstIndex;
229
+ const items = [];
230
+ const diff = fixRight ? -1 : 1;
231
+ const limit = this.size - 1;
232
+ const beforeMap = new Map(); // need to persist original $indexes
233
+ const updateArray = Array.prototype[fixRight ? 'unshift' : 'push'];
234
+ for (let i = fixRight ? limit : 0; fixRight ? i >= 0 : i <= limit; i += diff) {
235
+ const item = this.items[i];
236
+ beforeMap.set(item.$index, item);
237
+ const result = predicate(item);
238
+ // if predicate result is falsy or empty array -> delete
239
+ if (!result || (Array.isArray(result) && !result.length)) {
240
+ item.toRemove = true;
241
+ trackedIndex += item.$index >= indexToTrack ? (fixRight ? 1 : 0) : fixRight ? 0 : -1;
242
+ this.shiftExtremum(-1, fixRight);
243
+ continue;
244
+ }
245
+ // if predicate result is truthy but not array -> leave
246
+ if (!Array.isArray(result)) {
247
+ item.updateIndex(index);
248
+ updateArray.call(items, item);
249
+ index += diff;
250
+ continue;
251
+ }
252
+ // if predicate result is non-empty array -> insert/replace
253
+ if (item.$index < indexToTrack) {
254
+ trackedIndex += fixRight ? 0 : result.length - 1;
255
+ }
256
+ else if (item.$index > indexToTrack) {
257
+ trackedIndex += fixRight ? 1 - result.length : 0;
258
+ }
259
+ let toRemove = true;
260
+ const newItems = [];
261
+ (fixRight ? [...result].reverse() : result).forEach((data, i) => {
262
+ let newItem;
263
+ if (item.data === data) {
264
+ if (indexToTrack === item.$index) {
265
+ trackedIndex = index + i * diff;
266
+ }
267
+ item.updateIndex(index + i * diff);
268
+ newItem = item;
269
+ toRemove = false; // insert case
270
+ }
271
+ else {
272
+ newItem = generator(index + i * diff, data);
273
+ newItem.toInsert = true;
274
+ }
275
+ updateArray.call(newItems, newItem);
276
+ });
277
+ item.toRemove = toRemove;
278
+ updateArray.call(items, ...newItems);
279
+ index += diff * result.length;
280
+ if (result.length > 1) {
281
+ this.shiftExtremum(result.length - 1, fixRight);
282
+ }
283
+ }
284
+ const toRemove = this.items.filter(item => item.toRemove);
285
+ const itemsBefore = Array.from(beforeMap)
286
+ .map(([$index, { size, toRemove }]) => ({ $index, size, toRemove }))
287
+ .sort((a, b) => a.$index - b.$index);
288
+ this.items = items;
289
+ this.cache.updateSubset(itemsBefore, items, fixRight);
290
+ if (this.finiteAbsMinIndex === this.finiteAbsMaxIndex) {
291
+ trackedIndex = NaN;
292
+ }
293
+ else if (trackedIndex > this.finiteAbsMaxIndex) {
294
+ trackedIndex = this.finiteAbsMaxIndex;
295
+ }
296
+ else if (trackedIndex < this.finiteAbsMinIndex) {
297
+ trackedIndex = this.finiteAbsMinIndex;
298
+ }
299
+ return { trackedIndex, toRemove };
300
+ }
301
+ cacheItem(item) {
302
+ this.cache.add(item);
303
+ }
304
+ getFirstVisibleItemIndex() {
305
+ const length = this.items.length;
306
+ for (let i = 0; i < length; i++) {
307
+ if (!this.items[i].invisible) {
308
+ return i;
309
+ }
310
+ }
311
+ return -1;
312
+ }
313
+ getLastVisibleItemIndex() {
314
+ for (let i = this.items.length - 1; i >= 0; i--) {
315
+ if (!this.items[i].invisible) {
316
+ return i;
317
+ }
318
+ }
319
+ return -1;
320
+ }
321
+ getFirstVisibleItem() {
322
+ const index = this.getFirstVisibleItemIndex();
323
+ return index >= 0 ? this.items[index] : void 0;
324
+ }
325
+ getLastVisibleItem() {
326
+ const index = this.getLastVisibleItemIndex();
327
+ return index >= 0 ? this.items[index] : void 0;
328
+ }
329
+ getEdgeVisibleItem(direction, opposite) {
330
+ return direction === (!opposite ? Direction.forward : Direction.backward)
331
+ ? this.getLastVisibleItem()
332
+ : this.getFirstVisibleItem();
333
+ }
334
+ getVisibleItemsCount() {
335
+ return this.items.reduce((acc, item) => acc + (item.invisible ? 0 : 1), 0);
336
+ }
337
+ getSizeByIndex(index) {
338
+ return this.cache.getSizeByIndex(index);
339
+ }
340
+ checkDefaultSize() {
341
+ return this.cache.recalculateDefaultSize();
342
+ }
343
+ }
343
344
  //# sourceMappingURL=buffer.js.map