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,64 +1,64 @@
1
- import { __extends } from "tslib";
2
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- var Render = /** @class */ (function (_super) {
4
- __extends(Render, _super);
5
- function Render() {
6
- return _super !== null && _super.apply(this, arguments) || this;
7
- }
8
- Render.run = function (scroller) {
9
- var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, viewport = scroller.viewport, routines = scroller.routines;
10
- scroller.logger.stat('before new items render');
11
- if (scroll.positionBeforeAsync === null) {
12
- scroll.positionBeforeAsync = viewport.scrollPosition;
13
- }
14
- render.cancel = routines.render(function () {
15
- render.cancel = null;
16
- if (Render.doRender(scroller)) {
17
- workflow.call({
18
- process: Render.process,
19
- status: render.noSize ? ProcessStatus.done : ProcessStatus.next,
20
- payload: { process: cycle.initiator }
21
- });
22
- }
23
- else {
24
- workflow.call({
25
- process: Render.process,
26
- status: ProcessStatus.error,
27
- payload: { error: 'Can\'t associate item with element' }
28
- });
29
- }
30
- });
31
- };
32
- Render.doRender = function (scroller) {
33
- var _a = scroller.state, fetch = _a.fetch, render = _a.render, viewport = scroller.viewport, buffer = scroller.buffer, logger = scroller.logger;
34
- render.positionBefore = viewport.scrollPosition;
35
- if (!fetch.isCheck) {
36
- render.sizeBefore = viewport.getScrollableSize();
37
- if (!fetch.items.every(function (item) {
38
- return Render.processElement(scroller, item);
39
- })) {
40
- return false;
41
- }
42
- }
43
- buffer.checkDefaultSize();
44
- render.sizeAfter = viewport.getScrollableSize();
45
- logger.stat('after new items render');
46
- logger.log(function () { return render.noSize ? 'viewport size has not been changed' : void 0; });
47
- return true;
48
- };
49
- Render.processElement = function (scroller, item) {
50
- var viewport = scroller.viewport, buffer = scroller.buffer;
51
- var element = viewport.findItemElementById(item.nodeId);
52
- if (!element) {
53
- return false;
54
- }
55
- item.element = element;
56
- item.makeVisible();
57
- item.setSize(buffer.getSizeByIndex(item.$index));
58
- buffer.cacheItem(item);
59
- return true;
60
- };
61
- return Render;
62
- }(BaseProcessFactory(CommonProcess.render)));
63
- export default Render;
1
+ import { __extends } from "tslib";
2
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
+ var Render = /** @class */ (function (_super) {
4
+ __extends(Render, _super);
5
+ function Render() {
6
+ return _super !== null && _super.apply(this, arguments) || this;
7
+ }
8
+ Render.run = function (scroller) {
9
+ var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, viewport = scroller.viewport, routines = scroller.routines;
10
+ scroller.logger.stat('before new items render');
11
+ if (scroll.positionBeforeAsync === null) {
12
+ scroll.positionBeforeAsync = viewport.scrollPosition;
13
+ }
14
+ render.cancel = routines.render(function () {
15
+ render.cancel = null;
16
+ if (Render.doRender(scroller)) {
17
+ workflow.call({
18
+ process: Render.process,
19
+ status: render.noSize ? ProcessStatus.done : ProcessStatus.next,
20
+ payload: { process: cycle.initiator }
21
+ });
22
+ }
23
+ else {
24
+ workflow.call({
25
+ process: Render.process,
26
+ status: ProcessStatus.error,
27
+ payload: { error: 'Can\'t associate item with element' }
28
+ });
29
+ }
30
+ });
31
+ };
32
+ Render.doRender = function (scroller) {
33
+ var _a = scroller.state, fetch = _a.fetch, render = _a.render, viewport = scroller.viewport, buffer = scroller.buffer, logger = scroller.logger;
34
+ render.positionBefore = viewport.scrollPosition;
35
+ if (!fetch.isCheck) {
36
+ render.sizeBefore = viewport.getScrollableSize();
37
+ if (!fetch.items.every(function (item) {
38
+ return Render.processElement(scroller, item);
39
+ })) {
40
+ return false;
41
+ }
42
+ }
43
+ buffer.checkDefaultSize();
44
+ render.sizeAfter = viewport.getScrollableSize();
45
+ logger.stat('after new items render');
46
+ logger.log(function () { return render.noSize ? 'viewport size has not been changed' : void 0; });
47
+ return true;
48
+ };
49
+ Render.processElement = function (scroller, item) {
50
+ var viewport = scroller.viewport, buffer = scroller.buffer;
51
+ var element = viewport.findItemElementById(item.nodeId);
52
+ if (!element) {
53
+ return false;
54
+ }
55
+ item.element = element;
56
+ item.makeVisible();
57
+ item.setSize(buffer.getSizeByIndex(item.$index));
58
+ buffer.cacheItem(item);
59
+ return true;
60
+ };
61
+ return Render;
62
+ }(BaseProcessFactory(CommonProcess.render)));
63
+ export default Render;
64
64
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/processes/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Item } from '../classes/item';\n\nexport default class Render extends BaseProcessFactory(CommonProcess.render) {\n\n static run(scroller: Scroller): void {\n const { workflow, state: { cycle, render, scroll }, viewport, routines } = scroller;\n scroller.logger.stat('before new items render');\n if (scroll.positionBeforeAsync === null) {\n scroll.positionBeforeAsync = viewport.scrollPosition;\n }\n render.cancel = routines.render(() => {\n render.cancel = null;\n if (Render.doRender(scroller)) {\n workflow.call({\n process: Render.process,\n status: render.noSize ? ProcessStatus.done : ProcessStatus.next,\n payload: { process: cycle.initiator }\n });\n } else {\n workflow.call({\n process: Render.process,\n status: ProcessStatus.error,\n payload: { error: 'Can\\'t associate item with element' }\n });\n }\n });\n }\n\n static doRender(scroller: Scroller): boolean {\n const { state: { fetch, render }, viewport, buffer, logger } = scroller;\n render.positionBefore = viewport.scrollPosition;\n if (!fetch.isCheck) {\n render.sizeBefore = viewport.getScrollableSize();\n if (!fetch.items.every(item =>\n Render.processElement(scroller, item)\n )) {\n return false;\n }\n }\n buffer.checkDefaultSize();\n render.sizeAfter = viewport.getScrollableSize();\n logger.stat('after new items render');\n logger.log(() => render.noSize ? 'viewport size has not been changed' : void 0);\n return true;\n }\n\n static processElement(scroller: Scroller, item: Item): boolean {\n const { viewport, buffer } = scroller;\n const element = viewport.findItemElementById(item.nodeId);\n if (!element) {\n return false;\n }\n item.element = element as HTMLElement;\n item.makeVisible();\n item.setSize(buffer.getSizeByIndex(item.$index));\n buffer.cacheItem(item);\n return true;\n }\n\n}\n"]}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/processes/render.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Item } from '../classes/item';\r\n\r\nexport default class Render extends BaseProcessFactory(CommonProcess.render) {\r\n\r\n static run(scroller: Scroller): void {\r\n const { workflow, state: { cycle, render, scroll }, viewport, routines } = scroller;\r\n scroller.logger.stat('before new items render');\r\n if (scroll.positionBeforeAsync === null) {\r\n scroll.positionBeforeAsync = viewport.scrollPosition;\r\n }\r\n render.cancel = routines.render(() => {\r\n render.cancel = null;\r\n if (Render.doRender(scroller)) {\r\n workflow.call({\r\n process: Render.process,\r\n status: render.noSize ? ProcessStatus.done : ProcessStatus.next,\r\n payload: { process: cycle.initiator }\r\n });\r\n } else {\r\n workflow.call({\r\n process: Render.process,\r\n status: ProcessStatus.error,\r\n payload: { error: 'Can\\'t associate item with element' }\r\n });\r\n }\r\n });\r\n }\r\n\r\n static doRender(scroller: Scroller): boolean {\r\n const { state: { fetch, render }, viewport, buffer, logger } = scroller;\r\n render.positionBefore = viewport.scrollPosition;\r\n if (!fetch.isCheck) {\r\n render.sizeBefore = viewport.getScrollableSize();\r\n if (!fetch.items.every(item =>\r\n Render.processElement(scroller, item)\r\n )) {\r\n return false;\r\n }\r\n }\r\n buffer.checkDefaultSize();\r\n render.sizeAfter = viewport.getScrollableSize();\r\n logger.stat('after new items render');\r\n logger.log(() => render.noSize ? 'viewport size has not been changed' : void 0);\r\n return true;\r\n }\r\n\r\n static processElement(scroller: Scroller, item: Item): boolean {\r\n const { viewport, buffer } = scroller;\r\n const element = viewport.findItemElementById(item.nodeId);\r\n if (!element) {\r\n return false;\r\n }\r\n item.element = element as HTMLElement;\r\n item.makeVisible();\r\n item.setSize(buffer.getSizeByIndex(item.$index));\r\n buffer.cacheItem(item);\r\n return true;\r\n }\r\n\r\n}\r\n"]}
@@ -1,108 +1,108 @@
1
- import { __assign, __extends } from "tslib";
2
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- import { Direction } from '../inputs/index';
4
- var Scroll = /** @class */ (function (_super) {
5
- __extends(Scroll, _super);
6
- function Scroll() {
7
- return _super !== null && _super.apply(this, arguments) || this;
8
- }
9
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
- Scroll.run = function (scroller, payload) {
11
- var workflow = scroller.workflow, viewport = scroller.viewport;
12
- var position = viewport.scrollPosition;
13
- if (Scroll.onSynthetic(scroller, position)) {
14
- return;
15
- }
16
- Scroll.onThrottle(scroller, position, function () {
17
- return Scroll.onScroll(scroller, workflow);
18
- });
19
- };
20
- Scroll.onSynthetic = function (scroller, position) {
21
- var scroll = scroller.state.scroll;
22
- var synthPos = scroll.syntheticPosition;
23
- if (synthPos !== null) {
24
- if (scroll.syntheticFulfill) {
25
- scroll.syntheticPosition = null;
26
- }
27
- if (!scroll.syntheticFulfill || synthPos === position) {
28
- scroller.logger.log(function () { return [
29
- 'skipping scroll', position,
30
- "[".concat(scroll.syntheticFulfill ? '' : 'pre-', "synthetic]")
31
- ]; });
32
- return true;
33
- }
34
- scroller.logger.log(function () { return [
35
- 'synthetic scroll has been fulfilled:', position, position < synthPos ? '<' : '>', synthPos
36
- ]; });
37
- }
38
- return false;
39
- };
40
- Scroll.onThrottle = function (scroller, position, done) {
41
- var scroll = scroller.state.scroll, throttle = scroller.settings.throttle, logger = scroller.logger;
42
- scroll.current = Scroll.getScrollEvent(position, scroll.previous);
43
- var _a = scroll.current, direction = _a.direction, time = _a.time;
44
- var timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;
45
- var delta = throttle - timeDiff;
46
- var shouldDelay = isFinite(delta) && delta > 0;
47
- var alreadyDelayed = !!scroll.scrollTimer;
48
- logger.log(function () { return [
49
- direction === Direction.backward ? '\u2934' : '\u2935',
50
- position,
51
- shouldDelay ? (timeDiff + 'ms') : '0ms',
52
- shouldDelay ? (alreadyDelayed ? 'delayed' : "/ ".concat(delta, "ms delay")) : ''
53
- ]; });
54
- if (!shouldDelay) {
55
- if (scroll.scrollTimer) {
56
- clearTimeout(scroll.scrollTimer);
57
- scroll.scrollTimer = null;
58
- }
59
- done();
60
- return;
61
- }
62
- if (!alreadyDelayed) {
63
- scroll.scrollTimer = setTimeout(function () {
64
- logger.log(function () {
65
- var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);
66
- return [
67
- curr.direction === Direction.backward ? '\u2934' : '\u2935',
68
- curr.position,
69
- (curr.time - time) + 'ms',
70
- 'triggered by timer set on',
71
- position
72
- ];
73
- });
74
- scroll.scrollTimer = null;
75
- done();
76
- }, delta);
77
- }
78
- };
79
- Scroll.getScrollEvent = function (position, previous) {
80
- var time = Number(new Date());
81
- var direction = Direction.forward;
82
- if (previous) {
83
- if (position === previous.position) {
84
- direction = previous.direction;
85
- }
86
- else if (position < previous.position) {
87
- direction = Direction.backward;
88
- }
89
- }
90
- return { position: position, direction: direction, time: time };
91
- };
92
- Scroll.onScroll = function (scroller, workflow) {
93
- var _a = scroller.state, scroll = _a.scroll, cycle = _a.cycle;
94
- scroll.previous = __assign({}, scroll.current);
95
- scroll.current = null;
96
- if (cycle.busy.get()) {
97
- scroller.logger.log(function () { return ['skipping scroll', scroll.previous.position, '[pending]']; });
98
- return;
99
- }
100
- workflow.call({
101
- process: Scroll.process,
102
- status: ProcessStatus.next
103
- });
104
- };
105
- return Scroll;
106
- }(BaseProcessFactory(CommonProcess.scroll)));
107
- export default Scroll;
1
+ import { __assign, __extends } from "tslib";
2
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
+ import { Direction } from '../inputs/index';
4
+ var Scroll = /** @class */ (function (_super) {
5
+ __extends(Scroll, _super);
6
+ function Scroll() {
7
+ return _super !== null && _super.apply(this, arguments) || this;
8
+ }
9
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
10
+ Scroll.run = function (scroller, payload) {
11
+ var workflow = scroller.workflow, viewport = scroller.viewport;
12
+ var position = viewport.scrollPosition;
13
+ if (Scroll.onSynthetic(scroller, position)) {
14
+ return;
15
+ }
16
+ Scroll.onThrottle(scroller, position, function () {
17
+ return Scroll.onScroll(scroller, workflow);
18
+ });
19
+ };
20
+ Scroll.onSynthetic = function (scroller, position) {
21
+ var scroll = scroller.state.scroll;
22
+ var synthPos = scroll.syntheticPosition;
23
+ if (synthPos !== null) {
24
+ if (scroll.syntheticFulfill) {
25
+ scroll.syntheticPosition = null;
26
+ }
27
+ if (!scroll.syntheticFulfill || synthPos === position) {
28
+ scroller.logger.log(function () { return [
29
+ 'skipping scroll', position,
30
+ "[".concat(scroll.syntheticFulfill ? '' : 'pre-', "synthetic]")
31
+ ]; });
32
+ return true;
33
+ }
34
+ scroller.logger.log(function () { return [
35
+ 'synthetic scroll has been fulfilled:', position, position < synthPos ? '<' : '>', synthPos
36
+ ]; });
37
+ }
38
+ return false;
39
+ };
40
+ Scroll.onThrottle = function (scroller, position, done) {
41
+ var scroll = scroller.state.scroll, throttle = scroller.settings.throttle, logger = scroller.logger;
42
+ scroll.current = Scroll.getScrollEvent(position, scroll.previous);
43
+ var _a = scroll.current, direction = _a.direction, time = _a.time;
44
+ var timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;
45
+ var delta = throttle - timeDiff;
46
+ var shouldDelay = isFinite(delta) && delta > 0;
47
+ var alreadyDelayed = !!scroll.scrollTimer;
48
+ logger.log(function () { return [
49
+ direction === Direction.backward ? '\u2934' : '\u2935',
50
+ position,
51
+ shouldDelay ? (timeDiff + 'ms') : '0ms',
52
+ shouldDelay ? (alreadyDelayed ? 'delayed' : "/ ".concat(delta, "ms delay")) : ''
53
+ ]; });
54
+ if (!shouldDelay) {
55
+ if (scroll.scrollTimer) {
56
+ clearTimeout(scroll.scrollTimer);
57
+ scroll.scrollTimer = null;
58
+ }
59
+ done();
60
+ return;
61
+ }
62
+ if (!alreadyDelayed) {
63
+ scroll.scrollTimer = setTimeout(function () {
64
+ logger.log(function () {
65
+ var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);
66
+ return [
67
+ curr.direction === Direction.backward ? '\u2934' : '\u2935',
68
+ curr.position,
69
+ (curr.time - time) + 'ms',
70
+ 'triggered by timer set on',
71
+ position
72
+ ];
73
+ });
74
+ scroll.scrollTimer = null;
75
+ done();
76
+ }, delta);
77
+ }
78
+ };
79
+ Scroll.getScrollEvent = function (position, previous) {
80
+ var time = Number(new Date());
81
+ var direction = Direction.forward;
82
+ if (previous) {
83
+ if (position === previous.position) {
84
+ direction = previous.direction;
85
+ }
86
+ else if (position < previous.position) {
87
+ direction = Direction.backward;
88
+ }
89
+ }
90
+ return { position: position, direction: direction, time: time };
91
+ };
92
+ Scroll.onScroll = function (scroller, workflow) {
93
+ var _a = scroller.state, scroll = _a.scroll, cycle = _a.cycle;
94
+ scroll.previous = __assign({}, scroll.current);
95
+ scroll.current = null;
96
+ if (cycle.busy.get()) {
97
+ scroller.logger.log(function () { return ['skipping scroll', scroll.previous.position, '[pending]']; });
98
+ return;
99
+ }
100
+ workflow.call({
101
+ process: Scroll.process,
102
+ status: ProcessStatus.next
103
+ });
104
+ };
105
+ return Scroll;
106
+ }(BaseProcessFactory(CommonProcess.scroll)));
107
+ export default Scroll;
108
108
  //# sourceMappingURL=scroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/processes/scroll.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\nimport { Direction } from '../inputs/index';\nimport { ScrollEventData, ScrollerWorkflow } from '../interfaces/index';\n\nexport default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static run(scroller: Scroller, payload?: { event?: Event }): void {\n const { workflow, viewport } = scroller;\n const position = viewport.scrollPosition;\n\n if (Scroll.onSynthetic(scroller, position)) {\n return;\n }\n\n Scroll.onThrottle(scroller, position, () =>\n Scroll.onScroll(scroller, workflow)\n );\n }\n\n static onSynthetic(scroller: Scroller, position: number): boolean {\n const { scroll } = scroller.state;\n const synthPos = scroll.syntheticPosition;\n if (synthPos !== null) {\n if (scroll.syntheticFulfill) {\n scroll.syntheticPosition = null;\n }\n if (!scroll.syntheticFulfill || synthPos === position) {\n scroller.logger.log(() => [\n 'skipping scroll', position, `[${scroll.syntheticFulfill ? '' : 'pre-'}synthetic]`\n ]);\n return true;\n }\n scroller.logger.log(() => [\n 'synthetic scroll has been fulfilled:', position, position < synthPos ? '<' : '>', synthPos\n ]);\n }\n return false;\n }\n\n static onThrottle(scroller: Scroller, position: number, done: () => void): void {\n const { state: { scroll }, settings: { throttle }, logger } = scroller;\n scroll.current = Scroll.getScrollEvent(position, scroll.previous);\n const { direction, time } = scroll.current;\n const timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;\n const delta = throttle - timeDiff;\n const shouldDelay = isFinite(delta) && delta > 0;\n const alreadyDelayed = !!scroll.scrollTimer;\n logger.log(() => [\n direction === Direction.backward ? '\\u2934' : '\\u2935',\n position,\n shouldDelay ? (timeDiff + 'ms') : '0ms',\n shouldDelay ? (alreadyDelayed ? 'delayed' : `/ ${delta}ms delay`) : ''\n ]);\n if (!shouldDelay) {\n if (scroll.scrollTimer) {\n clearTimeout(scroll.scrollTimer);\n scroll.scrollTimer = null;\n }\n done();\n return;\n }\n if (!alreadyDelayed) {\n scroll.scrollTimer = setTimeout(() => {\n logger.log(() => {\n const curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);\n return [\n curr.direction === Direction.backward ? '\\u2934' : '\\u2935',\n curr.position,\n (curr.time - time) + 'ms',\n 'triggered by timer set on',\n position\n ];\n });\n scroll.scrollTimer = null;\n done();\n }, delta);\n }\n }\n\n static getScrollEvent(position: number, previous: ScrollEventData | null): ScrollEventData {\n const time = Number(new Date());\n let direction: Direction | null = Direction.forward;\n if (previous) {\n if (position === previous.position) {\n direction = previous.direction;\n } else if (position < previous.position) {\n direction = Direction.backward;\n }\n }\n return { position, direction, time };\n }\n\n static onScroll(scroller: Scroller, workflow: ScrollerWorkflow): void {\n const { state: { scroll, cycle } } = scroller;\n scroll.previous = { ...(scroll.current as ScrollEventData) };\n scroll.current = null;\n\n if (cycle.busy.get()) {\n scroller.logger.log(() => ['skipping scroll', (scroll.previous as ScrollEventData).position, '[pending]']);\n return;\n }\n\n workflow.call({\n process: Scroll.process,\n status: ProcessStatus.next\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/processes/scroll.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Direction } from '../inputs/index';\r\nimport { ScrollEventData, ScrollerWorkflow } from '../interfaces/index';\r\n\r\nexport default class Scroll extends BaseProcessFactory(CommonProcess.scroll) {\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n static run(scroller: Scroller, payload?: { event?: Event }): void {\r\n const { workflow, viewport } = scroller;\r\n const position = viewport.scrollPosition;\r\n\r\n if (Scroll.onSynthetic(scroller, position)) {\r\n return;\r\n }\r\n\r\n Scroll.onThrottle(scroller, position, () =>\r\n Scroll.onScroll(scroller, workflow)\r\n );\r\n }\r\n\r\n static onSynthetic(scroller: Scroller, position: number): boolean {\r\n const { scroll } = scroller.state;\r\n const synthPos = scroll.syntheticPosition;\r\n if (synthPos !== null) {\r\n if (scroll.syntheticFulfill) {\r\n scroll.syntheticPosition = null;\r\n }\r\n if (!scroll.syntheticFulfill || synthPos === position) {\r\n scroller.logger.log(() => [\r\n 'skipping scroll', position, `[${scroll.syntheticFulfill ? '' : 'pre-'}synthetic]`\r\n ]);\r\n return true;\r\n }\r\n scroller.logger.log(() => [\r\n 'synthetic scroll has been fulfilled:', position, position < synthPos ? '<' : '>', synthPos\r\n ]);\r\n }\r\n return false;\r\n }\r\n\r\n static onThrottle(scroller: Scroller, position: number, done: () => void): void {\r\n const { state: { scroll }, settings: { throttle }, logger } = scroller;\r\n scroll.current = Scroll.getScrollEvent(position, scroll.previous);\r\n const { direction, time } = scroll.current;\r\n const timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;\r\n const delta = throttle - timeDiff;\r\n const shouldDelay = isFinite(delta) && delta > 0;\r\n const alreadyDelayed = !!scroll.scrollTimer;\r\n logger.log(() => [\r\n direction === Direction.backward ? '\\u2934' : '\\u2935',\r\n position,\r\n shouldDelay ? (timeDiff + 'ms') : '0ms',\r\n shouldDelay ? (alreadyDelayed ? 'delayed' : `/ ${delta}ms delay`) : ''\r\n ]);\r\n if (!shouldDelay) {\r\n if (scroll.scrollTimer) {\r\n clearTimeout(scroll.scrollTimer);\r\n scroll.scrollTimer = null;\r\n }\r\n done();\r\n return;\r\n }\r\n if (!alreadyDelayed) {\r\n scroll.scrollTimer = setTimeout(() => {\r\n logger.log(() => {\r\n const curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);\r\n return [\r\n curr.direction === Direction.backward ? '\\u2934' : '\\u2935',\r\n curr.position,\r\n (curr.time - time) + 'ms',\r\n 'triggered by timer set on',\r\n position\r\n ];\r\n });\r\n scroll.scrollTimer = null;\r\n done();\r\n }, delta);\r\n }\r\n }\r\n\r\n static getScrollEvent(position: number, previous: ScrollEventData | null): ScrollEventData {\r\n const time = Number(new Date());\r\n let direction: Direction | null = Direction.forward;\r\n if (previous) {\r\n if (position === previous.position) {\r\n direction = previous.direction;\r\n } else if (position < previous.position) {\r\n direction = Direction.backward;\r\n }\r\n }\r\n return { position, direction, time };\r\n }\r\n\r\n static onScroll(scroller: Scroller, workflow: ScrollerWorkflow): void {\r\n const { state: { scroll, cycle } } = scroller;\r\n scroll.previous = { ...(scroll.current as ScrollEventData) };\r\n scroll.current = null;\r\n\r\n if (cycle.busy.get()) {\r\n scroller.logger.log(() => ['skipping scroll', (scroll.previous as ScrollEventData).position, '[pending]']);\r\n return;\r\n }\r\n\r\n workflow.call({\r\n process: Scroll.process,\r\n status: ProcessStatus.next\r\n });\r\n }\r\n\r\n}\r\n"]}
@@ -1,19 +1,19 @@
1
- import { __extends } from "tslib";
2
- import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
- var Start = /** @class */ (function (_super) {
4
- __extends(Start, _super);
5
- function Start() {
6
- return _super !== null && _super.apply(this, arguments) || this;
7
- }
8
- Start.run = function (scroller) {
9
- var payload = scroller.state.startInnerLoop();
10
- scroller.workflow.call({
11
- process: Start.process,
12
- status: ProcessStatus.next,
13
- payload: payload
14
- });
15
- };
16
- return Start;
17
- }(BaseProcessFactory(CommonProcess.start)));
18
- export default Start;
1
+ import { __extends } from "tslib";
2
+ import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';
3
+ var Start = /** @class */ (function (_super) {
4
+ __extends(Start, _super);
5
+ function Start() {
6
+ return _super !== null && _super.apply(this, arguments) || this;
7
+ }
8
+ Start.run = function (scroller) {
9
+ var payload = scroller.state.startInnerLoop();
10
+ scroller.workflow.call({
11
+ process: Start.process,
12
+ status: ProcessStatus.next,
13
+ payload: payload
14
+ });
15
+ };
16
+ return Start;
17
+ }(BaseProcessFactory(CommonProcess.start)));
18
+ export default Start;
19
19
  //# sourceMappingURL=start.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/processes/start.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhF;IAAmC,yBAAuC;IAA1E;;IAYA,CAAC;IAVQ,SAAG,GAAV,UAAW,QAAkB;QAC3B,IAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAEhD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC;IAEH,YAAC;AAAD,CAAC,AAZD,CAAmC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,GAYzE","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\nimport { Scroller } from '../scroller';\n\nexport default class Start extends BaseProcessFactory(CommonProcess.start) {\n\n static run(scroller: Scroller): void {\n const payload = scroller.state.startInnerLoop();\n\n scroller.workflow.call({\n process: Start.process,\n status: ProcessStatus.next,\n payload\n });\n }\n\n}\n"]}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/processes/start.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGhF;IAAmC,yBAAuC;IAA1E;;IAYA,CAAC;IAVQ,SAAG,GAAV,UAAW,QAAkB;QAC3B,IAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAEhD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO,SAAA;SACR,CAAC,CAAC;IACL,CAAC;IAEH,YAAC;AAAD,CAAC,AAZD,CAAmC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,GAYzE","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\n\r\nexport default class Start extends BaseProcessFactory(CommonProcess.start) {\r\n\r\n static run(scroller: Scroller): void {\r\n const payload = scroller.state.startInnerLoop();\r\n\r\n scroller.workflow.call({\r\n process: Start.process,\r\n status: ProcessStatus.next,\r\n payload\r\n });\r\n }\r\n\r\n}\r\n"]}
@@ -1,74 +1,83 @@
1
- import { DatasourceGeneric, makeDatasource } from './classes/datasource';
2
- import { Settings } from './classes/settings';
3
- import { Logger } from './classes/logger';
4
- import { Routines } from './classes/domRoutines';
5
- import { Viewport } from './classes/viewport';
6
- import { Buffer } from './classes/buffer';
7
- import { State } from './classes/state';
8
- import { Adapter } from './classes/adapter';
9
- import { validate, DATASOURCE } from './inputs/index';
10
- import core from './version';
11
- export var INVALID_DATASOURCE_PREFIX = 'Invalid datasource:';
12
- var instanceCount = 0;
13
- var Scroller = /** @class */ (function () {
14
- function Scroller(_a) {
15
- var datasource = _a.datasource, consumer = _a.consumer, element = _a.element, workflow = _a.workflow, CustomRoutines = _a.Routines, scroller = _a.scroller;
16
- var get = validate(datasource, DATASOURCE).params.get;
17
- if (!get.isValid) {
18
- throw new Error("".concat(INVALID_DATASOURCE_PREFIX, " ").concat(get.errors[0]));
19
- }
20
- var packageInfo = scroller ? scroller.state.packageInfo : { consumer: consumer, core: core };
21
- element = scroller ? scroller.routines.element : element;
22
- workflow = scroller ? scroller.workflow : workflow;
23
- this.workflow = workflow;
24
- this.settings = new Settings(datasource.settings, datasource.devSettings, ++instanceCount);
25
- this.logger = new Logger(this, packageInfo, datasource.adapter);
26
- this.routines = new Routines(element, this.settings, CustomRoutines);
27
- this.state = new State(packageInfo, this.settings, scroller ? scroller.state : void 0);
28
- this.buffer = new Buffer(this.settings, workflow.onDataChanged, this.logger);
29
- this.viewport = new Viewport(this.settings, this.routines, this.state, this.logger);
30
- this.logger.object('vscroll settings object', this.settings, true);
31
- this.initDatasource(datasource, scroller);
32
- }
33
- Scroller.prototype.initDatasource = function (datasource, scroller) {
34
- var _this = this;
35
- if (scroller) { // scroller re-instantiating case
36
- this.datasource = datasource;
37
- this.adapter = scroller.adapter;
38
- // todo: what about (this.settings.adapter !== scroller.setting.adapter) case?
39
- return;
40
- }
41
- // scroller is being instantiated for the first time
42
- var constructed = datasource instanceof DatasourceGeneric;
43
- var mockAdapter = !constructed && !this.settings.adapter;
44
- if (constructed) { // datasource is already instantiated
45
- this.datasource = datasource;
46
- }
47
- else { // datasource as POJO
48
- var DS = makeDatasource(function () { return ({ mock: mockAdapter }); });
49
- this.datasource = new DS(datasource);
50
- if (this.settings.adapter) {
51
- datasource.adapter = this.datasource.adapter;
52
- }
53
- }
54
- var publicContext = !mockAdapter ? this.datasource.adapter : null;
55
- this.adapter = new Adapter(publicContext, function () { return _this.workflow; }, this.logger);
56
- };
57
- Scroller.prototype.init = function (adapterRun$) {
58
- this.viewport.reset(this.buffer.startIndex);
59
- this.logger.stat('initialization');
60
- this.adapter.initialize(this.buffer, this.state, this.viewport, this.logger, adapterRun$);
61
- };
62
- Scroller.prototype.dispose = function (forever) {
63
- if (forever) { // Adapter is not re-instantiated on reset
64
- this.adapter.dispose();
65
- }
66
- this.buffer.dispose();
67
- this.state.dispose();
68
- };
69
- Scroller.prototype.finalize = function () {
70
- };
71
- return Scroller;
72
- }());
73
- export { Scroller };
1
+ import { DatasourceGeneric, makeDatasource } from './classes/datasource';
2
+ import { Settings } from './classes/settings';
3
+ import { Logger } from './classes/logger';
4
+ import { Routines } from './classes/domRoutines';
5
+ import { Viewport } from './classes/viewport';
6
+ import { Buffer } from './classes/buffer';
7
+ import { State } from './classes/state';
8
+ import { Adapter } from './classes/adapter';
9
+ import { validate, DATASOURCE } from './inputs/index';
10
+ import core from './version';
11
+ export var INVALID_DATASOURCE_PREFIX = 'Invalid datasource:';
12
+ var instanceCount = 0;
13
+ var Scroller = /** @class */ (function () {
14
+ function Scroller(_a) {
15
+ var datasource = _a.datasource, consumer = _a.consumer, element = _a.element, workflow = _a.workflow, CustomRoutines = _a.Routines, scroller = _a.scroller;
16
+ var get = validate(datasource, DATASOURCE).params.get;
17
+ if (!get.isValid) {
18
+ throw new Error("".concat(INVALID_DATASOURCE_PREFIX, " ").concat(get.errors[0]));
19
+ }
20
+ var packageInfo = scroller ? scroller.state.packageInfo : { consumer: consumer, core: core };
21
+ element = scroller ? scroller.routines.element : element;
22
+ workflow = scroller ? scroller.workflow : workflow;
23
+ this.workflow = workflow;
24
+ this.settings = new Settings(datasource.settings, datasource.devSettings, ++instanceCount);
25
+ this.logger = new Logger(this, packageInfo, datasource.adapter);
26
+ this.routines = new Routines(element, this.settings, CustomRoutines);
27
+ this.state = new State(packageInfo, this.settings, scroller ? scroller.state : void 0);
28
+ this.buffer = new Buffer(this.settings, workflow.onDataChanged, this.logger);
29
+ this.viewport = new Viewport(this.settings, this.routines, this.state, this.logger);
30
+ this.logger.object('vscroll settings object', this.settings, true);
31
+ this.initDatasource(datasource, scroller);
32
+ }
33
+ Scroller.prototype.initDatasource = function (datasource, scroller) {
34
+ var _this = this;
35
+ if (scroller) { // scroller re-instantiating case
36
+ this.datasource = datasource;
37
+ this.adapter = scroller.adapter;
38
+ // todo: what about (this.settings.adapter !== scroller.setting.adapter) case?
39
+ return;
40
+ }
41
+ // scroller is being instantiated for the first time
42
+ var constructed = datasource instanceof DatasourceGeneric;
43
+ var mockAdapter = !constructed && !this.settings.adapter;
44
+ if (constructed) { // datasource is already instantiated
45
+ this.datasource = datasource;
46
+ }
47
+ else { // datasource as POJO
48
+ var DS = makeDatasource(function () { return ({ mock: mockAdapter }); });
49
+ this.datasource = new DS(datasource);
50
+ if (this.settings.adapter) {
51
+ datasource.adapter = this.datasource.adapter;
52
+ }
53
+ }
54
+ var publicContext = !mockAdapter ? this.datasource.adapter : null;
55
+ this.adapter = new Adapter(publicContext, function () { return _this.workflow; }, this.logger);
56
+ };
57
+ Scroller.prototype.init = function (adapterRun$) {
58
+ var _this = this;
59
+ this.viewport.reset(this.buffer.startIndex);
60
+ this.logger.stat('initialization');
61
+ this.adapter.initialize({
62
+ buffer: this.buffer,
63
+ state: this.state,
64
+ viewport: this.viewport,
65
+ logger: this.logger,
66
+ adapterRun$: adapterRun$,
67
+ getWorkflow: function () { return _this.workflow; }
68
+ });
69
+ };
70
+ Scroller.prototype.dispose = function (forever) {
71
+ this.logger.log(function () { return 'disposing scroller' + (forever ? ' (forever)' : ''); });
72
+ if (forever) { // Adapter is not re-instantiated on reset
73
+ this.adapter.dispose();
74
+ }
75
+ this.buffer.dispose();
76
+ this.state.dispose();
77
+ };
78
+ Scroller.prototype.finalize = function () {
79
+ };
80
+ return Scroller;
81
+ }());
82
+ export { Scroller };
74
83
  //# sourceMappingURL=scroller.js.map