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,536 +1,539 @@
1
- import { __assign, __read } from "tslib";
2
- import { Reactive } from './reactive';
3
- import { AdapterPropName, AdapterPropType, EMPTY_ITEM, getDefaultAdapterProps, methodPausedResult, methodPreResult, reactiveConfigStorage } from './adapter/props';
4
- import { wantedUtils } from './adapter/wanted';
5
- import { Direction } from '../inputs/index';
6
- import { AdapterProcess, ProcessStatus } from '../processes/index';
7
- var ADAPTER_PROPS_STUB = getDefaultAdapterProps();
8
- var ALLOWED_METHODS_WHEN_PAUSED = ADAPTER_PROPS_STUB.filter(function (v) { return !!v.allowedWhenPaused; }).map(function (v) { return v.name; });
9
- var _has = function (obj, prop) {
10
- return !!obj && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, prop);
11
- };
12
- var convertAppendArgs = function (prepend, options, eof) {
13
- var result = options;
14
- if (!_has(options, 'items')) {
15
- var items = !Array.isArray(options) ? [options] : options;
16
- result = prepend ? { items: items, bof: eof } : { items: items, eof: eof };
17
- }
18
- return result;
19
- };
20
- var convertRemoveArgs = function (options) {
21
- if (!(_has(options, 'predicate') || _has(options, 'indexes'))) {
22
- var predicate = options;
23
- options = { predicate: predicate };
24
- }
25
- return options;
26
- };
27
- var Adapter = /** @class */ (function () {
28
- function Adapter(context, getWorkflow, logger) {
29
- var _this = this;
30
- this.source = {}; // for Reactive props
31
- this.box = {}; // for Scalars over Reactive props
32
- this.demand = {}; // for Scalars on demand
33
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
34
- this.setFirstOrLastVisible = function (_) { };
35
- this.getWorkflow = getWorkflow;
36
- this.logger = logger;
37
- this.relax$ = null;
38
- this.relaxRun = null;
39
- this.reloadCounter = 0;
40
- var contextId = (context === null || context === void 0 ? void 0 : context.id) || -1;
41
- // public context (if exists) should provide access to Reactive props config by id
42
- var reactivePropsStore = context && reactiveConfigStorage.get(context.id) || {};
43
- // the Adapter initialization should not trigger "wanted" props setting;
44
- // after the initialization is completed, "wanted" functionality must be unblocked
45
- wantedUtils.setBlock(true, contextId);
46
- // make array of the original values from public context if present
47
- var adapterProps = context
48
- ? ADAPTER_PROPS_STUB.map(function (prop) {
49
- var value = context[prop.name];
50
- // if context is augmented, we need to replace external reactive props with inner ones
51
- if (context.augmented) {
52
- var reactiveProp = reactivePropsStore[prop.name];
53
- if (reactiveProp) {
54
- value = reactiveProp.default; // boolean doesn't matter here
55
- }
56
- }
57
- return (__assign(__assign({}, prop), { value: value }));
58
- })
59
- : getDefaultAdapterProps();
60
- // restore default reactive props if they were configured
61
- Object.entries(reactivePropsStore).forEach(function (_a) {
62
- var _b = __read(_a, 2), key = _b[0], value = _b[1];
63
- var prop = adapterProps.find(function (_a) {
64
- var name = _a.name;
65
- return name === key;
66
- });
67
- if (prop && value) {
68
- prop.value = value.default;
69
- }
70
- });
71
- // Scalar permanent props
72
- adapterProps
73
- .filter(function (_a) {
74
- var type = _a.type, permanent = _a.permanent;
75
- return type === AdapterPropType.Scalar && permanent;
76
- })
77
- .forEach(function (_a) {
78
- var name = _a.name, value = _a.value;
79
- return Object.defineProperty(_this, name, {
80
- configurable: true,
81
- get: function () { return value; }
82
- });
83
- });
84
- // Reactive props: store original values in "source" container, to avoid extra .get() calls on scalar twins set
85
- adapterProps
86
- .filter(function (prop) { return prop.type === AdapterPropType.Reactive; })
87
- .forEach(function (_a) {
88
- var name = _a.name, value = _a.value;
89
- _this.source[name] = value;
90
- Object.defineProperty(_this, name, {
91
- configurable: true,
92
- get: function () { return _this.source[name]; }
93
- });
94
- });
95
- // for "wanted" props that can be explicitly requested for the first time after the Adapter initialization,
96
- // an implicit calculation of the initial value is required;
97
- // so this method should be called when accessing the "wanted" props through one of the following getters
98
- var processWanted = function (prop) {
99
- if (wantedUtils.setBox(prop, contextId)) {
100
- if ([AdapterPropName.firstVisible, AdapterPropName.firstVisible$].some(function (n) { return n === prop.name; })) {
101
- _this.setFirstOrLastVisible({ first: true });
102
- }
103
- else if ([AdapterPropName.lastVisible, AdapterPropName.lastVisible$].some(function (n) { return n === prop.name; })) {
104
- _this.setFirstOrLastVisible({ last: true });
105
- }
106
- }
107
- };
108
- // Scalar props that have Reactive twins
109
- // 1) reactive props (from "source") should be triggered on set
110
- // 2) scalars should use "box" container on get
111
- // 3) "wanted" scalars should also run wanted-related logic on get
112
- adapterProps
113
- .filter(function (prop) { return prop.type === AdapterPropType.Scalar && !!prop.reactive; })
114
- .forEach(function (prop) {
115
- var name = prop.name, value = prop.value, reactive = prop.reactive;
116
- _this.box[name] = value;
117
- Object.defineProperty(_this, name, {
118
- configurable: true,
119
- set: function (newValue) {
120
- if (newValue !== _this.box[name]) {
121
- _this.box[name] = newValue;
122
- _this.source[reactive].set(newValue);
123
- // need to emit new value through the configured reactive prop if present
124
- var reactiveProp = reactivePropsStore[reactive];
125
- if (reactiveProp) {
126
- reactiveProp.emit(reactiveProp.source, newValue);
127
- }
128
- }
129
- },
130
- get: function () {
131
- processWanted(prop);
132
- return _this.box[name];
133
- }
134
- });
135
- });
136
- // Scalar props on-demand
137
- // these scalars should use "demand" container
138
- // setting defaults should be overridden on init()
139
- adapterProps
140
- .filter(function (prop) { return prop.type === AdapterPropType.Scalar && prop.onDemand; })
141
- .forEach(function (_a) {
142
- var name = _a.name, value = _a.value;
143
- _this.demand[name] = value;
144
- Object.defineProperty(_this, name, {
145
- configurable: true,
146
- get: function () { return _this.demand[name]; }
147
- });
148
- });
149
- if (!context) {
150
- return;
151
- }
152
- // Adapter public context augmentation
153
- adapterProps
154
- .forEach(function (prop) {
155
- var name = prop.name, type = prop.type, permanent = prop.permanent;
156
- var value = _this[name];
157
- if (type === AdapterPropType.Function) {
158
- value = value.bind(_this);
159
- }
160
- else if (type === AdapterPropType.WorkflowRunner) {
161
- value = _this.getWorkflowRunnerMethod(value, name);
162
- }
163
- else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {
164
- value = context[name];
165
- }
166
- else if (name === AdapterPropName.augmented) {
167
- value = true;
168
- }
169
- var nonPermanentScalar = !permanent && type === AdapterPropType.Scalar;
170
- Object.defineProperty(context, name, {
171
- configurable: true,
172
- get: function () {
173
- processWanted(prop); // consider accessing "wanted" Reactive props
174
- if (nonPermanentScalar) {
175
- return _this[name]; // non-permanent Scalars should be taken in runtime
176
- }
177
- return value; // other props (Reactive/Functions/WorkflowRunners) can be defined once
178
- }
179
- });
180
- });
181
- this.externalContext = context;
182
- wantedUtils.setBlock(false, contextId);
183
- }
184
- Object.defineProperty(Adapter.prototype, "workflow", {
185
- get: function () {
186
- return this.getWorkflow();
187
- },
188
- enumerable: false,
189
- configurable: true
190
- });
191
- Object.defineProperty(Adapter.prototype, "reloadCount", {
192
- get: function () {
193
- return this.reloadCounter;
194
- },
195
- enumerable: false,
196
- configurable: true
197
- });
198
- Object.defineProperty(Adapter.prototype, "reloadId", {
199
- get: function () {
200
- return this.id + '.' + this.reloadCounter;
201
- },
202
- enumerable: false,
203
- configurable: true
204
- });
205
- Adapter.prototype.getPromisifiedMethod = function (method, args) {
206
- var _this = this;
207
- return new Promise(function (resolve) {
208
- if (_this.relax$) {
209
- _this.relax$.once(function (value) { return resolve(value); });
210
- }
211
- method.apply(_this, args);
212
- });
213
- };
214
- Adapter.prototype.getWorkflowRunnerMethod = function (method, name) {
215
- var _this = this;
216
- return function () {
217
- var _a, _b, _c, _d;
218
- var args = [];
219
- for (var _i = 0; _i < arguments.length; _i++) {
220
- args[_i] = arguments[_i];
221
- }
222
- if (!_this.relax$) {
223
- (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.call(_a, function () { return 'scroller is not initialized: ' + name + ' method is ignored'; });
224
- return Promise.resolve(methodPreResult);
225
- }
226
- if (_this.paused && !ALLOWED_METHODS_WHEN_PAUSED.includes(name)) {
227
- (_d = (_c = _this.logger) === null || _c === void 0 ? void 0 : _c.log) === null || _d === void 0 ? void 0 : _d.call(_c, function () { return 'scroller is paused: ' + name + ' method is ignored'; });
228
- return Promise.resolve(methodPausedResult);
229
- }
230
- return _this.getPromisifiedMethod(method, args);
231
- };
232
- };
233
- Adapter.prototype.initialize = function (_a) {
234
- var _this = this;
235
- var buffer = _a.buffer, state = _a.state, viewport = _a.viewport, logger = _a.logger, adapterRun$ = _a.adapterRun$, getWorkflow = _a.getWorkflow;
236
- // buffer
237
- Object.defineProperty(this.demand, AdapterPropName.itemsCount, {
238
- get: function () { return buffer.getVisibleItemsCount(); }
239
- });
240
- Object.defineProperty(this.demand, AdapterPropName.bufferInfo, {
241
- get: function () { return ({
242
- firstIndex: buffer.firstIndex,
243
- lastIndex: buffer.lastIndex,
244
- minIndex: buffer.minIndex,
245
- maxIndex: buffer.maxIndex,
246
- absMinIndex: buffer.absMinIndex,
247
- absMaxIndex: buffer.absMaxIndex,
248
- defaultSize: buffer.defaultSize,
249
- }); }
250
- });
251
- this.bof = buffer.bof.get();
252
- buffer.bof.on(function (bof) { return _this.bof = bof; });
253
- this.eof = buffer.eof.get();
254
- buffer.eof.on(function (eof) { return _this.eof = eof; });
255
- // state
256
- Object.defineProperty(this.demand, AdapterPropName.packageInfo, {
257
- get: function () { return state.packageInfo; }
258
- });
259
- this.loopPending = state.cycle.innerLoop.busy.get();
260
- state.cycle.innerLoop.busy.on(function (busy) { return _this.loopPending = busy; });
261
- this.isLoading = state.cycle.busy.get();
262
- state.cycle.busy.on(function (busy) { return _this.isLoading = busy; });
263
- this.paused = state.paused.get();
264
- state.paused.on(function (paused) { return _this.paused = paused; });
265
- //viewport
266
- this.setFirstOrLastVisible = function (_a) {
267
- var _b, _c, _d;
268
- var first = _a.first, last = _a.last, workflow = _a.workflow;
269
- if ((!first && !last) || ((_b = workflow === null || workflow === void 0 ? void 0 : workflow.call) === null || _b === void 0 ? void 0 : _b.interrupted)) {
270
- return;
271
- }
272
- var token = first ? AdapterPropName.firstVisible : AdapterPropName.lastVisible;
273
- if (!((_d = wantedUtils.getBox((_c = _this.externalContext) === null || _c === void 0 ? void 0 : _c.id)) === null || _d === void 0 ? void 0 : _d[token])) {
274
- return;
275
- }
276
- if (buffer.items.some(function (_a) {
277
- var element = _a.element;
278
- return !element;
279
- })) {
280
- logger.log('skipping first/lastVisible set because not all buffered items are rendered at this moment');
281
- return;
282
- }
283
- var direction = first ? Direction.backward : Direction.forward;
284
- var item = viewport.getEdgeVisibleItem(buffer.items, direction).item;
285
- if (!item || item.element !== _this[token].element) {
286
- _this[token] = (item ? item.get() : EMPTY_ITEM);
287
- }
288
- };
289
- // logger
290
- this.logger = logger;
291
- // self-pending subscription; set up only on the very first init
292
- if (adapterRun$) {
293
- if (!this.relax$) {
294
- this.relax$ = new Reactive();
295
- }
296
- var relax$_1 = this.relax$;
297
- adapterRun$.on(function (_a) {
298
- var status = _a.status, payload = _a.payload;
299
- var unSubRelax = function () { };
300
- if (status === ProcessStatus.start) {
301
- unSubRelax = _this.isLoading$.on(function (value) {
302
- if (!value) {
303
- unSubRelax();
304
- relax$_1.set({ success: true, immediate: false, details: null });
305
- }
306
- });
307
- }
308
- else if (status === ProcessStatus.done || status === ProcessStatus.error) {
309
- unSubRelax();
310
- relax$_1.set({
311
- success: status !== ProcessStatus.error,
312
- immediate: true,
313
- details: status === ProcessStatus.error && payload ? String(payload.error) : null
314
- });
315
- }
316
- });
317
- }
318
- // workflow getter
319
- if (getWorkflow) {
320
- this.getWorkflow = getWorkflow;
321
- }
322
- // init
323
- this.init = true;
324
- };
325
- Adapter.prototype.dispose = function () {
326
- var _this = this;
327
- if (this.relax$) {
328
- this.relax$.dispose();
329
- }
330
- if (this.externalContext) {
331
- this.resetContext();
332
- }
333
- Object.getOwnPropertyNames(this).forEach(function (prop) {
334
- delete _this[prop];
335
- });
336
- this.disposed = true;
337
- };
338
- Adapter.prototype.resetContext = function () {
339
- var _this = this;
340
- var _a;
341
- var reactiveStore = reactiveConfigStorage.get((_a = this.externalContext) === null || _a === void 0 ? void 0 : _a.id);
342
- ADAPTER_PROPS_STUB
343
- .forEach(function (_a) {
344
- var type = _a.type, permanent = _a.permanent, name = _a.name, value = _a.value;
345
- // assign initial values to non-reactive non-permanent props
346
- if (type !== AdapterPropType.Reactive && !permanent) {
347
- Object.defineProperty(_this.externalContext, name, {
348
- configurable: true,
349
- get: function () { return value; }
350
- });
351
- }
352
- // reset reactive props
353
- if (type === AdapterPropType.Reactive && reactiveStore) {
354
- var property = reactiveStore[name];
355
- if (property) {
356
- property.default.reset();
357
- property.emit(property.source, property.default.get());
358
- }
359
- }
360
- });
361
- };
362
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
363
- Adapter.prototype.reset = function (options) {
364
- this.reloadCounter++;
365
- this.logger.logAdapterMethod('reset', options, " of ".concat(this.reloadId));
366
- this.workflow.call({
367
- process: AdapterProcess.reset,
368
- status: ProcessStatus.start,
369
- payload: { options: options }
370
- });
371
- };
372
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
373
- Adapter.prototype.reload = function (options) {
374
- this.reloadCounter++;
375
- this.logger.logAdapterMethod('reload', options, " of ".concat(this.reloadId));
376
- this.workflow.call({
377
- process: AdapterProcess.reload,
378
- status: ProcessStatus.start,
379
- payload: { options: options }
380
- });
381
- };
382
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
383
- Adapter.prototype.append = function (_options, eof) {
384
- var options = convertAppendArgs(false, _options, eof); // support old signature
385
- this.logger.logAdapterMethod('append', [options.items, options.eof]);
386
- this.workflow.call({
387
- process: AdapterProcess.append,
388
- status: ProcessStatus.start,
389
- payload: { options: options }
390
- });
391
- };
392
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
393
- Adapter.prototype.prepend = function (_options, bof) {
394
- var options = convertAppendArgs(true, _options, bof); // support old signature
395
- this.logger.logAdapterMethod('prepend', [options.items, options.bof]);
396
- this.workflow.call({
397
- process: AdapterProcess.prepend,
398
- status: ProcessStatus.start,
399
- payload: { options: options }
400
- });
401
- };
402
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
403
- Adapter.prototype.check = function () {
404
- this.logger.logAdapterMethod('check');
405
- this.workflow.call({
406
- process: AdapterProcess.check,
407
- status: ProcessStatus.start
408
- });
409
- };
410
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
411
- Adapter.prototype.remove = function (options) {
412
- options = convertRemoveArgs(options); // support old signature
413
- this.logger.logAdapterMethod('remove', options);
414
- this.workflow.call({
415
- process: AdapterProcess.remove,
416
- status: ProcessStatus.start,
417
- payload: { options: options }
418
- });
419
- };
420
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
421
- Adapter.prototype.clip = function (options) {
422
- this.logger.logAdapterMethod('clip', options);
423
- this.workflow.call({
424
- process: AdapterProcess.clip,
425
- status: ProcessStatus.start,
426
- payload: { options: options }
427
- });
428
- };
429
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
430
- Adapter.prototype.insert = function (options) {
431
- this.logger.logAdapterMethod('insert', options);
432
- this.workflow.call({
433
- process: AdapterProcess.insert,
434
- status: ProcessStatus.start,
435
- payload: { options: options }
436
- });
437
- };
438
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
439
- Adapter.prototype.replace = function (options) {
440
- this.logger.logAdapterMethod('replace', options);
441
- this.workflow.call({
442
- process: AdapterProcess.replace,
443
- status: ProcessStatus.start,
444
- payload: { options: options }
445
- });
446
- };
447
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
448
- Adapter.prototype.update = function (options) {
449
- this.logger.logAdapterMethod('update', options);
450
- this.workflow.call({
451
- process: AdapterProcess.update,
452
- status: ProcessStatus.start,
453
- payload: { options: options }
454
- });
455
- };
456
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
457
- Adapter.prototype.pause = function () {
458
- this.logger.logAdapterMethod('pause');
459
- this.workflow.call({
460
- process: AdapterProcess.pause,
461
- status: ProcessStatus.start
462
- });
463
- };
464
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
465
- Adapter.prototype.resume = function () {
466
- this.logger.logAdapterMethod('resume');
467
- this.workflow.call({
468
- process: AdapterProcess.pause,
469
- status: ProcessStatus.start,
470
- payload: { options: { resume: true } }
471
- });
472
- };
473
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
474
- Adapter.prototype.fix = function (options) {
475
- this.logger.logAdapterMethod('fix', options);
476
- this.workflow.call({
477
- process: AdapterProcess.fix,
478
- status: ProcessStatus.start,
479
- payload: { options: options }
480
- });
481
- };
482
- Adapter.prototype.relaxUnchained = function (callback, reloadId) {
483
- var _this = this;
484
- var runCallback = function () { return typeof callback === 'function' && reloadId === _this.reloadId && callback(); };
485
- if (!this.isLoading) {
486
- runCallback();
487
- }
488
- return new Promise(function (resolve) {
489
- if (!_this.isLoading) {
490
- resolve(true);
491
- return;
492
- }
493
- _this.isLoading$.once(function () {
494
- runCallback();
495
- resolve(false);
496
- });
497
- }).then(function (immediate) {
498
- var _a, _b;
499
- if (_this.disposed) {
500
- return {
501
- immediate: immediate,
502
- success: false,
503
- details: 'Adapter was disposed'
504
- };
505
- }
506
- var success = reloadId === _this.reloadId;
507
- (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.call(_a, function () { return !success ? "relax promise cancelled due to ".concat(reloadId, " != ").concat(_this.reloadId) : void 0; });
508
- return {
509
- immediate: immediate,
510
- success: success,
511
- details: !success ? 'Interrupted by reload or reset' : null
512
- };
513
- });
514
- };
515
- Adapter.prototype.relax = function (callback) {
516
- var _this = this;
517
- var reloadId = this.reloadId;
518
- this.logger.logAdapterMethod('relax', callback, " of ".concat(reloadId));
519
- if (!this.init) {
520
- return Promise.resolve(methodPreResult);
521
- }
522
- return this.relaxRun = this.relaxRun
523
- ? this.relaxRun.then(function () { return _this.relaxUnchained(callback, reloadId); })
524
- : this.relaxUnchained(callback, reloadId).then(function (result) {
525
- _this.relaxRun = null;
526
- return result;
527
- });
528
- };
529
- Adapter.prototype.showLog = function () {
530
- this.logger.logAdapterMethod('showLog');
531
- this.logger.logForce();
532
- };
533
- return Adapter;
534
- }());
535
- export { Adapter };
1
+ import { __assign, __read } from "tslib";
2
+ import { Reactive } from './reactive';
3
+ import { AdapterPropName, AdapterPropType, EMPTY_ITEM, getDefaultAdapterProps, methodPausedResult, methodPreResult, reactiveConfigStorage } from './adapter/props';
4
+ import { wantedUtils } from './adapter/wanted';
5
+ import { Direction } from '../inputs/index';
6
+ import { AdapterProcess, ProcessStatus } from '../processes/index';
7
+ var ADAPTER_PROPS_STUB = getDefaultAdapterProps();
8
+ var ALLOWED_METHODS_WHEN_PAUSED = ADAPTER_PROPS_STUB.filter(function (v) { return !!v.allowedWhenPaused; }).map(function (v) { return v.name; });
9
+ var _has = function (obj, prop) {
10
+ return !!obj && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, prop);
11
+ };
12
+ var convertAppendArgs = function (prepend, options, eof) {
13
+ var result = options;
14
+ if (!_has(options, 'items')) {
15
+ var items = !Array.isArray(options) ? [options] : options;
16
+ result = prepend ? { items: items, bof: eof } : { items: items, eof: eof };
17
+ }
18
+ return result;
19
+ };
20
+ var convertRemoveArgs = function (options) {
21
+ if (!(_has(options, 'predicate') || _has(options, 'indexes'))) {
22
+ var predicate = options;
23
+ options = { predicate: predicate };
24
+ }
25
+ return options;
26
+ };
27
+ var Adapter = /** @class */ (function () {
28
+ function Adapter(context, getWorkflow, logger) {
29
+ var _this = this;
30
+ this.source = {}; // for Reactive props
31
+ this.box = {}; // for Scalars over Reactive props
32
+ this.demand = {}; // for Scalars on demand
33
+ this.setFirstOrLastVisible = function (_) { };
34
+ this.getWorkflow = getWorkflow;
35
+ this.logger = logger;
36
+ this.relax$ = null;
37
+ this.relaxRun = null;
38
+ this.reloadCounter = 0;
39
+ var contextId = (context === null || context === void 0 ? void 0 : context.id) || -1;
40
+ // public context (if exists) should provide access to Reactive props config by id
41
+ var reactivePropsStore = (context && reactiveConfigStorage.get(context.id)) || {};
42
+ // the Adapter initialization should not trigger "wanted" props setting;
43
+ // after the initialization is completed, "wanted" functionality must be unblocked
44
+ wantedUtils.setBlock(true, contextId);
45
+ // make array of the original values from public context if present
46
+ var adapterProps = context
47
+ ? ADAPTER_PROPS_STUB.map(function (prop) {
48
+ var value = context[prop.name];
49
+ // if context is augmented, we need to replace external reactive props with inner ones
50
+ if (context.augmented) {
51
+ var reactiveProp = reactivePropsStore[prop.name];
52
+ if (reactiveProp) {
53
+ value = reactiveProp.default; // boolean doesn't matter here
54
+ }
55
+ }
56
+ return __assign(__assign({}, prop), { value: value });
57
+ })
58
+ : getDefaultAdapterProps();
59
+ // restore default reactive props if they were configured
60
+ Object.entries(reactivePropsStore).forEach(function (_a) {
61
+ var _b = __read(_a, 2), key = _b[0], value = _b[1];
62
+ var prop = adapterProps.find(function (_a) {
63
+ var name = _a.name;
64
+ return name === key;
65
+ });
66
+ if (prop && value) {
67
+ prop.value = value.default;
68
+ }
69
+ });
70
+ // Scalar permanent props
71
+ adapterProps
72
+ .filter(function (_a) {
73
+ var type = _a.type, permanent = _a.permanent;
74
+ return type === AdapterPropType.Scalar && permanent;
75
+ })
76
+ .forEach(function (_a) {
77
+ var name = _a.name, value = _a.value;
78
+ return Object.defineProperty(_this, name, {
79
+ configurable: true,
80
+ get: function () { return value; }
81
+ });
82
+ });
83
+ // Reactive props: store original values in "source" container, to avoid extra .get() calls on scalar twins set
84
+ adapterProps
85
+ .filter(function (prop) { return prop.type === AdapterPropType.Reactive; })
86
+ .forEach(function (_a) {
87
+ var name = _a.name, value = _a.value;
88
+ _this.source[name] = value;
89
+ Object.defineProperty(_this, name, {
90
+ configurable: true,
91
+ get: function () { return _this.source[name]; }
92
+ });
93
+ });
94
+ // for "wanted" props that can be explicitly requested for the first time after the Adapter initialization,
95
+ // an implicit calculation of the initial value is required;
96
+ // so this method should be called when accessing the "wanted" props through one of the following getters
97
+ var processWanted = function (prop) {
98
+ if (wantedUtils.setBox(prop, contextId)) {
99
+ var firstPropList = [AdapterPropName.firstVisible, AdapterPropName.firstVisible$];
100
+ var lastPropList = [AdapterPropName.lastVisible, AdapterPropName.lastVisible$];
101
+ if (firstPropList.some(function (n) { return n === prop.name; })) {
102
+ _this.setFirstOrLastVisible({ first: true });
103
+ }
104
+ else if (lastPropList.some(function (n) { return n === prop.name; })) {
105
+ _this.setFirstOrLastVisible({ last: true });
106
+ }
107
+ }
108
+ };
109
+ // Scalar props that have Reactive twins
110
+ // 1) reactive props (from "source") should be triggered on set
111
+ // 2) scalars should use "box" container on get
112
+ // 3) "wanted" scalars should also run wanted-related logic on get
113
+ adapterProps
114
+ .filter(function (prop) { return prop.type === AdapterPropType.Scalar && !!prop.reactive; })
115
+ .forEach(function (prop) {
116
+ var name = prop.name, value = prop.value, reactive = prop.reactive;
117
+ _this.box[name] = value;
118
+ Object.defineProperty(_this, name, {
119
+ configurable: true,
120
+ set: function (newValue) {
121
+ if (newValue !== _this.box[name]) {
122
+ _this.box[name] = newValue;
123
+ _this.source[reactive].set(newValue);
124
+ // need to emit new value through the configured reactive prop if present
125
+ var reactiveProp = reactivePropsStore[reactive];
126
+ if (reactiveProp) {
127
+ reactiveProp.emit(reactiveProp.source, newValue);
128
+ }
129
+ }
130
+ },
131
+ get: function () {
132
+ processWanted(prop);
133
+ return _this.box[name];
134
+ }
135
+ });
136
+ });
137
+ // Scalar props on-demand
138
+ // these scalars should use "demand" container
139
+ // setting defaults should be overridden on init()
140
+ adapterProps
141
+ .filter(function (prop) { return prop.type === AdapterPropType.Scalar && prop.onDemand; })
142
+ .forEach(function (_a) {
143
+ var name = _a.name, value = _a.value;
144
+ _this.demand[name] = value;
145
+ Object.defineProperty(_this, name, {
146
+ configurable: true,
147
+ get: function () { return _this.demand[name]; }
148
+ });
149
+ });
150
+ if (!context) {
151
+ return;
152
+ }
153
+ // Adapter public context augmentation
154
+ adapterProps.forEach(function (prop) {
155
+ var name = prop.name, type = prop.type, permanent = prop.permanent;
156
+ var value = _this[name];
157
+ if (type === AdapterPropType.Function) {
158
+ value = value.bind(_this);
159
+ }
160
+ else if (type === AdapterPropType.WorkflowRunner) {
161
+ value = _this.getWorkflowRunnerMethod(value, name);
162
+ }
163
+ else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {
164
+ value = context[name];
165
+ }
166
+ else if (name === AdapterPropName.augmented) {
167
+ value = true;
168
+ }
169
+ var nonPermanentScalar = !permanent && type === AdapterPropType.Scalar;
170
+ Object.defineProperty(context, name, {
171
+ configurable: true,
172
+ get: function () {
173
+ processWanted(prop); // consider accessing "wanted" Reactive props
174
+ if (nonPermanentScalar) {
175
+ return _this[name]; // non-permanent Scalars should be taken in runtime
176
+ }
177
+ return value; // other props (Reactive/Functions/WorkflowRunners) can be defined once
178
+ }
179
+ });
180
+ });
181
+ this.externalContext = context;
182
+ wantedUtils.setBlock(false, contextId);
183
+ }
184
+ Object.defineProperty(Adapter.prototype, "workflow", {
185
+ get: function () {
186
+ return this.getWorkflow();
187
+ },
188
+ enumerable: false,
189
+ configurable: true
190
+ });
191
+ Object.defineProperty(Adapter.prototype, "reloadCount", {
192
+ get: function () {
193
+ return this.reloadCounter;
194
+ },
195
+ enumerable: false,
196
+ configurable: true
197
+ });
198
+ Object.defineProperty(Adapter.prototype, "reloadId", {
199
+ get: function () {
200
+ return this.id + '.' + this.reloadCounter;
201
+ },
202
+ enumerable: false,
203
+ configurable: true
204
+ });
205
+ Adapter.prototype.getPromisifiedMethod = function (method, args) {
206
+ var _this = this;
207
+ return new Promise(function (resolve) {
208
+ if (_this.relax$) {
209
+ _this.relax$.once(function (value) { return resolve(value); });
210
+ }
211
+ method.apply(_this, args);
212
+ });
213
+ };
214
+ Adapter.prototype.getWorkflowRunnerMethod = function (method, name) {
215
+ var _this = this;
216
+ return function () {
217
+ var _a, _b, _c, _d;
218
+ var args = [];
219
+ for (var _i = 0; _i < arguments.length; _i++) {
220
+ args[_i] = arguments[_i];
221
+ }
222
+ if (!_this.relax$) {
223
+ (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.call(_a, function () { return 'scroller is not initialized: ' + name + ' method is ignored'; });
224
+ return Promise.resolve(methodPreResult);
225
+ }
226
+ if (_this.paused && !ALLOWED_METHODS_WHEN_PAUSED.includes(name)) {
227
+ (_d = (_c = _this.logger) === null || _c === void 0 ? void 0 : _c.log) === null || _d === void 0 ? void 0 : _d.call(_c, function () { return 'scroller is paused: ' + name + ' method is ignored'; });
228
+ return Promise.resolve(methodPausedResult);
229
+ }
230
+ return _this.getPromisifiedMethod(method, args);
231
+ };
232
+ };
233
+ Adapter.prototype.initialize = function (_a) {
234
+ var _this = this;
235
+ var buffer = _a.buffer, state = _a.state, viewport = _a.viewport, logger = _a.logger, adapterRun$ = _a.adapterRun$, getWorkflow = _a.getWorkflow;
236
+ // buffer
237
+ Object.defineProperty(this.demand, AdapterPropName.itemsCount, {
238
+ get: function () { return buffer.getVisibleItemsCount(); }
239
+ });
240
+ Object.defineProperty(this.demand, AdapterPropName.bufferInfo, {
241
+ get: function () { return ({
242
+ firstIndex: buffer.firstIndex,
243
+ lastIndex: buffer.lastIndex,
244
+ minIndex: buffer.minIndex,
245
+ maxIndex: buffer.maxIndex,
246
+ absMinIndex: buffer.absMinIndex,
247
+ absMaxIndex: buffer.absMaxIndex,
248
+ defaultSize: buffer.defaultSize
249
+ }); }
250
+ });
251
+ this.bof = buffer.bof.get();
252
+ buffer.bof.on(function (bof) { return (_this.bof = bof); });
253
+ this.eof = buffer.eof.get();
254
+ buffer.eof.on(function (eof) { return (_this.eof = eof); });
255
+ // state
256
+ Object.defineProperty(this.demand, AdapterPropName.packageInfo, {
257
+ get: function () { return state.packageInfo; }
258
+ });
259
+ this.loopPending = state.cycle.innerLoop.busy.get();
260
+ state.cycle.innerLoop.busy.on(function (busy) { return (_this.loopPending = busy); });
261
+ this.isLoading = state.cycle.busy.get();
262
+ state.cycle.busy.on(function (busy) { return (_this.isLoading = busy); });
263
+ this.paused = state.paused.get();
264
+ state.paused.on(function (paused) { return (_this.paused = paused); });
265
+ //viewport
266
+ this.setFirstOrLastVisible = function (_a) {
267
+ var _b, _c, _d;
268
+ var first = _a.first, last = _a.last, workflow = _a.workflow;
269
+ if ((!first && !last) || ((_b = workflow === null || workflow === void 0 ? void 0 : workflow.call) === null || _b === void 0 ? void 0 : _b.interrupted)) {
270
+ return;
271
+ }
272
+ var token = first ? AdapterPropName.firstVisible : AdapterPropName.lastVisible;
273
+ if (!((_d = wantedUtils.getBox((_c = _this.externalContext) === null || _c === void 0 ? void 0 : _c.id)) === null || _d === void 0 ? void 0 : _d[token])) {
274
+ return;
275
+ }
276
+ if (buffer.items.some(function (_a) {
277
+ var element = _a.element;
278
+ return !element;
279
+ })) {
280
+ logger.log('skipping first/lastVisible set because not all buffered items are rendered at this moment');
281
+ return;
282
+ }
283
+ var direction = first ? Direction.backward : Direction.forward;
284
+ var item = viewport.getEdgeVisibleItem(buffer.items, direction).item;
285
+ if (!item || item.element !== _this[token].element) {
286
+ _this[token] = (item ? item.get() : EMPTY_ITEM);
287
+ }
288
+ };
289
+ // logger
290
+ this.logger = logger;
291
+ // self-pending subscription; set up only on the very first init
292
+ if (adapterRun$) {
293
+ if (!this.relax$) {
294
+ this.relax$ = new Reactive();
295
+ }
296
+ var relax$_1 = this.relax$;
297
+ adapterRun$.on(function (_a) {
298
+ var status = _a.status, payload = _a.payload;
299
+ var unSubRelax = function () { };
300
+ if (status === ProcessStatus.start) {
301
+ unSubRelax = _this.isLoading$.on(function (value) {
302
+ if (!value) {
303
+ unSubRelax();
304
+ relax$_1.set({ success: true, immediate: false, details: null });
305
+ }
306
+ });
307
+ }
308
+ else if (status === ProcessStatus.done || status === ProcessStatus.error) {
309
+ unSubRelax();
310
+ relax$_1.set({
311
+ success: status !== ProcessStatus.error,
312
+ immediate: true,
313
+ details: status === ProcessStatus.error && payload ? String(payload.error) : null
314
+ });
315
+ }
316
+ });
317
+ }
318
+ // workflow getter
319
+ if (getWorkflow) {
320
+ this.getWorkflow = getWorkflow;
321
+ }
322
+ // init
323
+ this.init = true;
324
+ };
325
+ Adapter.prototype.dispose = function () {
326
+ var _this = this;
327
+ if (this.relax$) {
328
+ this.relax$.dispose();
329
+ }
330
+ if (this.externalContext) {
331
+ this.resetContext();
332
+ }
333
+ Object.getOwnPropertyNames(this).forEach(function (prop) {
334
+ delete _this[prop];
335
+ });
336
+ this.disposed = true;
337
+ };
338
+ Adapter.prototype.resetContext = function () {
339
+ var _this = this;
340
+ var _a;
341
+ var reactiveStore = reactiveConfigStorage.get((_a = this.externalContext) === null || _a === void 0 ? void 0 : _a.id);
342
+ ADAPTER_PROPS_STUB.forEach(function (_a) {
343
+ var type = _a.type, permanent = _a.permanent, name = _a.name, value = _a.value;
344
+ // assign initial values to non-reactive non-permanent props
345
+ if (type !== AdapterPropType.Reactive && !permanent) {
346
+ Object.defineProperty(_this.externalContext, name, {
347
+ configurable: true,
348
+ get: function () { return value; }
349
+ });
350
+ }
351
+ // reset reactive props
352
+ if (type === AdapterPropType.Reactive && reactiveStore) {
353
+ var property = reactiveStore[name];
354
+ if (property) {
355
+ property.default.reset();
356
+ property.emit(property.source, property.default.get());
357
+ }
358
+ }
359
+ });
360
+ };
361
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
362
+ Adapter.prototype.reset = function (options) {
363
+ this.reloadCounter++;
364
+ this.logger.logAdapterMethod('reset', options, " of ".concat(this.reloadId));
365
+ this.workflow.call({
366
+ process: AdapterProcess.reset,
367
+ status: ProcessStatus.start,
368
+ payload: { options: options }
369
+ });
370
+ };
371
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
372
+ Adapter.prototype.reload = function (options) {
373
+ this.reloadCounter++;
374
+ this.logger.logAdapterMethod('reload', options, " of ".concat(this.reloadId));
375
+ this.workflow.call({
376
+ process: AdapterProcess.reload,
377
+ status: ProcessStatus.start,
378
+ payload: { options: options }
379
+ });
380
+ };
381
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
382
+ Adapter.prototype.append = function (_options, eof) {
383
+ var options = convertAppendArgs(false, _options, eof); // support old signature
384
+ this.logger.logAdapterMethod('append', [options.items, options.eof]);
385
+ this.workflow.call({
386
+ process: AdapterProcess.append,
387
+ status: ProcessStatus.start,
388
+ payload: { options: options }
389
+ });
390
+ };
391
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
392
+ Adapter.prototype.prepend = function (_options, bof) {
393
+ var options = convertAppendArgs(true, _options, bof); // support old signature
394
+ this.logger.logAdapterMethod('prepend', [options.items, options.bof]);
395
+ this.workflow.call({
396
+ process: AdapterProcess.prepend,
397
+ status: ProcessStatus.start,
398
+ payload: { options: options }
399
+ });
400
+ };
401
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
402
+ Adapter.prototype.check = function () {
403
+ this.logger.logAdapterMethod('check');
404
+ this.workflow.call({
405
+ process: AdapterProcess.check,
406
+ status: ProcessStatus.start
407
+ });
408
+ };
409
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
410
+ Adapter.prototype.remove = function (options) {
411
+ options = convertRemoveArgs(options); // support old signature
412
+ this.logger.logAdapterMethod('remove', options);
413
+ this.workflow.call({
414
+ process: AdapterProcess.remove,
415
+ status: ProcessStatus.start,
416
+ payload: { options: options }
417
+ });
418
+ };
419
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
420
+ Adapter.prototype.clip = function (options) {
421
+ this.logger.logAdapterMethod('clip', options);
422
+ this.workflow.call({
423
+ process: AdapterProcess.clip,
424
+ status: ProcessStatus.start,
425
+ payload: { options: options }
426
+ });
427
+ };
428
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
429
+ Adapter.prototype.insert = function (options) {
430
+ this.logger.logAdapterMethod('insert', options);
431
+ this.workflow.call({
432
+ process: AdapterProcess.insert,
433
+ status: ProcessStatus.start,
434
+ payload: { options: options }
435
+ });
436
+ };
437
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
438
+ Adapter.prototype.replace = function (options) {
439
+ this.logger.logAdapterMethod('replace', options);
440
+ this.workflow.call({
441
+ process: AdapterProcess.replace,
442
+ status: ProcessStatus.start,
443
+ payload: { options: options }
444
+ });
445
+ };
446
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
447
+ Adapter.prototype.update = function (options) {
448
+ this.logger.logAdapterMethod('update', options);
449
+ this.workflow.call({
450
+ process: AdapterProcess.update,
451
+ status: ProcessStatus.start,
452
+ payload: { options: options }
453
+ });
454
+ };
455
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
456
+ Adapter.prototype.pause = function () {
457
+ this.logger.logAdapterMethod('pause');
458
+ this.workflow.call({
459
+ process: AdapterProcess.pause,
460
+ status: ProcessStatus.start
461
+ });
462
+ };
463
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
464
+ Adapter.prototype.resume = function () {
465
+ this.logger.logAdapterMethod('resume');
466
+ this.workflow.call({
467
+ process: AdapterProcess.pause,
468
+ status: ProcessStatus.start,
469
+ payload: { options: { resume: true } }
470
+ });
471
+ };
472
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
473
+ Adapter.prototype.fix = function (options) {
474
+ this.logger.logAdapterMethod('fix', options);
475
+ this.workflow.call({
476
+ process: AdapterProcess.fix,
477
+ status: ProcessStatus.start,
478
+ payload: { options: options }
479
+ });
480
+ };
481
+ Adapter.prototype.relaxUnchained = function (callback, reloadId) {
482
+ var _this = this;
483
+ var runCallback = function () {
484
+ return typeof callback === 'function' && reloadId === _this.reloadId && callback();
485
+ };
486
+ if (!this.isLoading) {
487
+ runCallback();
488
+ }
489
+ return new Promise(function (resolve) {
490
+ if (!_this.isLoading) {
491
+ resolve(true);
492
+ return;
493
+ }
494
+ _this.isLoading$.once(function () {
495
+ runCallback();
496
+ resolve(false);
497
+ });
498
+ }).then(function (immediate) {
499
+ var _a, _b;
500
+ if (_this.disposed) {
501
+ return {
502
+ immediate: immediate,
503
+ success: false,
504
+ details: 'Adapter was disposed'
505
+ };
506
+ }
507
+ var success = reloadId === _this.reloadId;
508
+ (_b = (_a = _this.logger) === null || _a === void 0 ? void 0 : _a.log) === null || _b === void 0 ? void 0 : _b.call(_a, function () {
509
+ return !success ? "relax promise cancelled due to ".concat(reloadId, " != ").concat(_this.reloadId) : void 0;
510
+ });
511
+ return {
512
+ immediate: immediate,
513
+ success: success,
514
+ details: !success ? 'Interrupted by reload or reset' : null
515
+ };
516
+ });
517
+ };
518
+ Adapter.prototype.relax = function (callback) {
519
+ var _this = this;
520
+ var reloadId = this.reloadId;
521
+ this.logger.logAdapterMethod('relax', callback, " of ".concat(reloadId));
522
+ if (!this.init) {
523
+ return Promise.resolve(methodPreResult);
524
+ }
525
+ return (this.relaxRun = this.relaxRun
526
+ ? this.relaxRun.then(function () { return _this.relaxUnchained(callback, reloadId); })
527
+ : this.relaxUnchained(callback, reloadId).then(function (result) {
528
+ _this.relaxRun = null;
529
+ return result;
530
+ }));
531
+ };
532
+ Adapter.prototype.showLog = function () {
533
+ this.logger.logAdapterMethod('showLog');
534
+ this.logger.logForce();
535
+ };
536
+ return Adapter;
537
+ }());
538
+ export { Adapter };
536
539
  //# sourceMappingURL=adapter.js.map