vscroll 1.6.2 → 1.7.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 (321) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/dist/bundles/vscroll.esm5.js +5704 -5694
  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 +5193 -5183
  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 +5712 -5703
  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 +300 -300
  18. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  19. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  20. package/dist/esm2015/classes/adapter.js +487 -487
  21. package/dist/esm2015/classes/adapter.js.map +1 -1
  22. package/dist/esm2015/classes/buffer/cache.js +246 -246
  23. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  24. package/dist/esm2015/classes/buffer/checkCall.js +48 -48
  25. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  26. package/dist/esm2015/classes/buffer/defaultSize.js +127 -127
  27. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  28. package/dist/esm2015/classes/buffer.js +342 -342
  29. package/dist/esm2015/classes/buffer.js.map +1 -1
  30. package/dist/esm2015/classes/datasource.js +23 -24
  31. package/dist/esm2015/classes/datasource.js.map +1 -1
  32. package/dist/esm2015/classes/domRoutines.js +160 -160
  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/paddings.js.map +1 -1
  40. package/dist/esm2015/classes/reactive.js +54 -54
  41. package/dist/esm2015/classes/reactive.js.map +1 -1
  42. package/dist/esm2015/classes/settings.js +39 -39
  43. package/dist/esm2015/classes/settings.js.map +1 -1
  44. package/dist/esm2015/classes/state/clip.js +16 -16
  45. package/dist/esm2015/classes/state/clip.js.map +1 -1
  46. package/dist/esm2015/classes/state/cycle.js +60 -60
  47. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  48. package/dist/esm2015/classes/state/fetch.js +122 -122
  49. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  50. package/dist/esm2015/classes/state/render.js +14 -14
  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 +62 -62
  54. package/dist/esm2015/classes/state.js.map +1 -1
  55. package/dist/esm2015/classes/viewport.js +72 -72
  56. package/dist/esm2015/classes/viewport.js.map +1 -1
  57. package/dist/esm2015/index.js +9 -9
  58. package/dist/esm2015/inputs/adapter.js +242 -232
  59. package/dist/esm2015/inputs/adapter.js.map +1 -1
  60. package/dist/esm2015/inputs/common.js +11 -11
  61. package/dist/esm2015/inputs/datasource.js +20 -20
  62. package/dist/esm2015/inputs/index.js +7 -7
  63. package/dist/esm2015/inputs/settings.js +146 -146
  64. package/dist/esm2015/inputs/validation.js +371 -374
  65. package/dist/esm2015/inputs/validation.js.map +1 -1
  66. package/dist/esm2015/inputs/workflow.js +30 -30
  67. package/dist/esm2015/interfaces/adapter.js +1 -1
  68. package/dist/esm2015/interfaces/adapter.js.map +1 -1
  69. package/dist/esm2015/interfaces/datasource.js +1 -1
  70. package/dist/esm2015/interfaces/index.js +1 -1
  71. package/dist/esm2015/interfaces/item.js +1 -1
  72. package/dist/esm2015/interfaces/process.js +1 -1
  73. package/dist/esm2015/interfaces/process.js.map +1 -1
  74. package/dist/esm2015/interfaces/routines.js +1 -1
  75. package/dist/esm2015/interfaces/settings.js +1 -1
  76. package/dist/esm2015/interfaces/state.js +1 -1
  77. package/dist/esm2015/interfaces/validation.js +1 -1
  78. package/dist/esm2015/interfaces/workflow.js +1 -1
  79. package/dist/esm2015/processes/adapter/append.js +36 -35
  80. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  81. package/dist/esm2015/processes/adapter/check.js +32 -32
  82. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  83. package/dist/esm2015/processes/adapter/clip.js +12 -12
  84. package/dist/esm2015/processes/adapter/fix.js +77 -77
  85. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  86. package/dist/esm2015/processes/adapter/insert.js +73 -73
  87. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  88. package/dist/esm2015/processes/adapter/pause.js +22 -22
  89. package/dist/esm2015/processes/adapter/pause.js.map +1 -1
  90. package/dist/esm2015/processes/adapter/reload.js +19 -19
  91. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  92. package/dist/esm2015/processes/adapter/remove.js +102 -102
  93. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  94. package/dist/esm2015/processes/adapter/replace.js +39 -39
  95. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  96. package/dist/esm2015/processes/adapter/reset.js +35 -35
  97. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  98. package/dist/esm2015/processes/adapter/update.js +43 -43
  99. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  100. package/dist/esm2015/processes/adjust.js +141 -141
  101. package/dist/esm2015/processes/adjust.js.map +1 -1
  102. package/dist/esm2015/processes/clip.js +49 -49
  103. package/dist/esm2015/processes/clip.js.map +1 -1
  104. package/dist/esm2015/processes/end.js +52 -52
  105. package/dist/esm2015/processes/end.js.map +1 -1
  106. package/dist/esm2015/processes/fetch.js +91 -91
  107. package/dist/esm2015/processes/fetch.js.map +1 -1
  108. package/dist/esm2015/processes/index.js +24 -24
  109. package/dist/esm2015/processes/init.js +14 -14
  110. package/dist/esm2015/processes/misc/base.js +30 -30
  111. package/dist/esm2015/processes/misc/base.js.map +1 -1
  112. package/dist/esm2015/processes/misc/enums.js +36 -36
  113. package/dist/esm2015/processes/misc/index.js +2 -2
  114. package/dist/esm2015/processes/postFetch.js +65 -65
  115. package/dist/esm2015/processes/postFetch.js.map +1 -1
  116. package/dist/esm2015/processes/preClip.js +85 -85
  117. package/dist/esm2015/processes/preClip.js.map +1 -1
  118. package/dist/esm2015/processes/preFetch.js +240 -240
  119. package/dist/esm2015/processes/preFetch.js.map +1 -1
  120. package/dist/esm2015/processes/render.js +54 -54
  121. package/dist/esm2015/processes/render.js.map +1 -1
  122. package/dist/esm2015/processes/scroll.js +97 -97
  123. package/dist/esm2015/processes/scroll.js.map +1 -1
  124. package/dist/esm2015/processes/start.js +11 -11
  125. package/dist/esm2015/scroller.js +86 -86
  126. package/dist/esm2015/scroller.js.map +1 -1
  127. package/dist/esm2015/version.js +4 -4
  128. package/dist/esm2015/version.js.map +1 -1
  129. package/dist/esm2015/workflow-transducer.js +218 -218
  130. package/dist/esm2015/workflow-transducer.js.map +1 -1
  131. package/dist/esm2015/workflow.js +174 -174
  132. package/dist/esm2015/workflow.js.map +1 -1
  133. package/dist/esm5/classes/adapter/context.js +50 -50
  134. package/dist/esm5/classes/adapter/context.js.map +1 -1
  135. package/dist/esm5/classes/adapter/props.js +300 -300
  136. package/dist/esm5/classes/adapter/wanted.js +29 -29
  137. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  138. package/dist/esm5/classes/adapter.js +535 -535
  139. package/dist/esm5/classes/adapter.js.map +1 -1
  140. package/dist/esm5/classes/buffer/cache.js +260 -260
  141. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  142. package/dist/esm5/classes/buffer/checkCall.js +56 -56
  143. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  144. package/dist/esm5/classes/buffer/defaultSize.js +145 -145
  145. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  146. package/dist/esm5/classes/buffer.js +409 -409
  147. package/dist/esm5/classes/buffer.js.map +1 -1
  148. package/dist/esm5/classes/datasource.js +30 -31
  149. package/dist/esm5/classes/datasource.js.map +1 -1
  150. package/dist/esm5/classes/domRoutines.js +165 -165
  151. package/dist/esm5/classes/domRoutines.js.map +1 -1
  152. package/dist/esm5/classes/item.js +76 -76
  153. package/dist/esm5/classes/item.js.map +1 -1
  154. package/dist/esm5/classes/logger.js +210 -210
  155. package/dist/esm5/classes/logger.js.map +1 -1
  156. package/dist/esm5/classes/paddings.js +80 -80
  157. package/dist/esm5/classes/paddings.js.map +1 -1
  158. package/dist/esm5/classes/reactive.js +69 -69
  159. package/dist/esm5/classes/reactive.js.map +1 -1
  160. package/dist/esm5/classes/settings.js +47 -47
  161. package/dist/esm5/classes/settings.js.map +1 -1
  162. package/dist/esm5/classes/state/clip.js +22 -22
  163. package/dist/esm5/classes/state/clip.js.map +1 -1
  164. package/dist/esm5/classes/state/cycle.js +75 -75
  165. package/dist/esm5/classes/state/cycle.js.map +1 -1
  166. package/dist/esm5/classes/state/fetch.js +148 -148
  167. package/dist/esm5/classes/state/fetch.js.map +1 -1
  168. package/dist/esm5/classes/state/render.js +20 -20
  169. package/dist/esm5/classes/state/scroll.js +32 -32
  170. package/dist/esm5/classes/state/scroll.js.map +1 -1
  171. package/dist/esm5/classes/state.js +69 -69
  172. package/dist/esm5/classes/state.js.map +1 -1
  173. package/dist/esm5/classes/viewport.js +79 -79
  174. package/dist/esm5/classes/viewport.js.map +1 -1
  175. package/dist/esm5/index.js +9 -9
  176. package/dist/esm5/inputs/adapter.js +243 -233
  177. package/dist/esm5/inputs/adapter.js.map +1 -1
  178. package/dist/esm5/inputs/common.js +11 -11
  179. package/dist/esm5/inputs/datasource.js +21 -21
  180. package/dist/esm5/inputs/index.js +7 -7
  181. package/dist/esm5/inputs/settings.js +147 -147
  182. package/dist/esm5/inputs/validation.js +393 -396
  183. package/dist/esm5/inputs/validation.js.map +1 -1
  184. package/dist/esm5/inputs/workflow.js +31 -31
  185. package/dist/esm5/interfaces/adapter.js +1 -1
  186. package/dist/esm5/interfaces/adapter.js.map +1 -1
  187. package/dist/esm5/interfaces/datasource.js +1 -1
  188. package/dist/esm5/interfaces/index.js +1 -1
  189. package/dist/esm5/interfaces/item.js +1 -1
  190. package/dist/esm5/interfaces/process.js +1 -1
  191. package/dist/esm5/interfaces/process.js.map +1 -1
  192. package/dist/esm5/interfaces/routines.js +1 -1
  193. package/dist/esm5/interfaces/settings.js +1 -1
  194. package/dist/esm5/interfaces/state.js +1 -1
  195. package/dist/esm5/interfaces/validation.js +1 -1
  196. package/dist/esm5/interfaces/workflow.js +1 -1
  197. package/dist/esm5/processes/adapter/append.js +44 -43
  198. package/dist/esm5/processes/adapter/append.js.map +1 -1
  199. package/dist/esm5/processes/adapter/check.js +39 -39
  200. package/dist/esm5/processes/adapter/check.js.map +1 -1
  201. package/dist/esm5/processes/adapter/clip.js +19 -19
  202. package/dist/esm5/processes/adapter/fix.js +89 -89
  203. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  204. package/dist/esm5/processes/adapter/insert.js +81 -81
  205. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  206. package/dist/esm5/processes/adapter/pause.js +29 -29
  207. package/dist/esm5/processes/adapter/pause.js.map +1 -1
  208. package/dist/esm5/processes/adapter/reload.js +26 -26
  209. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  210. package/dist/esm5/processes/adapter/remove.js +115 -115
  211. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  212. package/dist/esm5/processes/adapter/replace.js +47 -47
  213. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  214. package/dist/esm5/processes/adapter/reset.js +42 -42
  215. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  216. package/dist/esm5/processes/adapter/update.js +59 -59
  217. package/dist/esm5/processes/adapter/update.js.map +1 -1
  218. package/dist/esm5/processes/adjust.js +152 -152
  219. package/dist/esm5/processes/adjust.js.map +1 -1
  220. package/dist/esm5/processes/clip.js +60 -60
  221. package/dist/esm5/processes/clip.js.map +1 -1
  222. package/dist/esm5/processes/end.js +63 -63
  223. package/dist/esm5/processes/end.js.map +1 -1
  224. package/dist/esm5/processes/fetch.js +102 -102
  225. package/dist/esm5/processes/fetch.js.map +1 -1
  226. package/dist/esm5/processes/index.js +24 -24
  227. package/dist/esm5/processes/init.js +21 -21
  228. package/dist/esm5/processes/misc/base.js +44 -44
  229. package/dist/esm5/processes/misc/base.js.map +1 -1
  230. package/dist/esm5/processes/misc/enums.js +36 -36
  231. package/dist/esm5/processes/misc/index.js +2 -2
  232. package/dist/esm5/processes/postFetch.js +74 -74
  233. package/dist/esm5/processes/postFetch.js.map +1 -1
  234. package/dist/esm5/processes/preClip.js +94 -94
  235. package/dist/esm5/processes/preClip.js.map +1 -1
  236. package/dist/esm5/processes/preFetch.js +247 -247
  237. package/dist/esm5/processes/preFetch.js.map +1 -1
  238. package/dist/esm5/processes/render.js +63 -63
  239. package/dist/esm5/processes/render.js.map +1 -1
  240. package/dist/esm5/processes/scroll.js +107 -107
  241. package/dist/esm5/processes/scroll.js.map +1 -1
  242. package/dist/esm5/processes/start.js +18 -18
  243. package/dist/esm5/scroller.js +100 -100
  244. package/dist/esm5/scroller.js.map +1 -1
  245. package/dist/esm5/version.js +4 -4
  246. package/dist/esm5/version.js.map +1 -1
  247. package/dist/esm5/workflow-transducer.js +220 -220
  248. package/dist/esm5/workflow-transducer.js.map +1 -1
  249. package/dist/esm5/workflow.js +198 -198
  250. package/dist/esm5/workflow.js.map +1 -1
  251. package/dist/typings/classes/adapter/context.d.ts +4 -4
  252. package/dist/typings/classes/adapter/props.d.ts +52 -52
  253. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  254. package/dist/typings/classes/adapter.d.ts +79 -79
  255. package/dist/typings/classes/buffer/cache.d.ts +95 -95
  256. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  257. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  258. package/dist/typings/classes/buffer.d.ts +64 -64
  259. package/dist/typings/classes/datasource.d.ts +11 -11
  260. package/dist/typings/classes/domRoutines.d.ts +36 -36
  261. package/dist/typings/classes/item.d.ts +28 -28
  262. package/dist/typings/classes/logger.d.ts +28 -28
  263. package/dist/typings/classes/paddings.d.ts +22 -22
  264. package/dist/typings/classes/reactive.d.ts +21 -21
  265. package/dist/typings/classes/settings.d.ts +119 -119
  266. package/dist/typings/classes/state/clip.d.ts +9 -9
  267. package/dist/typings/classes/state/cycle.d.ts +29 -29
  268. package/dist/typings/classes/state/fetch.d.ts +62 -62
  269. package/dist/typings/classes/state/render.d.ts +9 -9
  270. package/dist/typings/classes/state/scroll.d.ts +16 -16
  271. package/dist/typings/classes/state.d.ts +29 -29
  272. package/dist/typings/classes/viewport.d.ts +32 -32
  273. package/dist/typings/index.d.ts +10 -10
  274. package/dist/typings/inputs/adapter.d.ts +5 -5
  275. package/dist/typings/inputs/common.d.ts +9 -9
  276. package/dist/typings/inputs/datasource.d.ts +7 -7
  277. package/dist/typings/inputs/index.d.ts +7 -7
  278. package/dist/typings/inputs/settings.d.ts +41 -41
  279. package/dist/typings/inputs/validation.d.ts +82 -83
  280. package/dist/typings/inputs/workflow.d.ts +9 -9
  281. package/dist/typings/interfaces/adapter.d.ts +164 -161
  282. package/dist/typings/interfaces/datasource.d.ts +28 -28
  283. package/dist/typings/interfaces/index.d.ts +10 -10
  284. package/dist/typings/interfaces/item.d.ts +8 -8
  285. package/dist/typings/interfaces/process.d.ts +35 -35
  286. package/dist/typings/interfaces/routines.d.ts +166 -166
  287. package/dist/typings/interfaces/settings.d.ts +31 -31
  288. package/dist/typings/interfaces/state.d.ts +24 -24
  289. package/dist/typings/interfaces/validation.d.ts +33 -33
  290. package/dist/typings/interfaces/workflow.d.ts +53 -53
  291. package/dist/typings/processes/adapter/append.d.ts +14 -14
  292. package/dist/typings/processes/adapter/check.d.ts +6 -6
  293. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  294. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  295. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  296. package/dist/typings/processes/adapter/pause.d.ts +8 -8
  297. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  298. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  299. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  300. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  301. package/dist/typings/processes/adapter/update.d.ts +8 -8
  302. package/dist/typings/processes/adjust.d.ts +10 -10
  303. package/dist/typings/processes/clip.d.ts +7 -7
  304. package/dist/typings/processes/end.d.ts +10 -10
  305. package/dist/typings/processes/fetch.d.ts +18 -18
  306. package/dist/typings/processes/index.d.ts +24 -24
  307. package/dist/typings/processes/init.d.ts +7 -7
  308. package/dist/typings/processes/misc/base.d.ts +4 -4
  309. package/dist/typings/processes/misc/enums.d.ts +33 -33
  310. package/dist/typings/processes/misc/index.d.ts +2 -2
  311. package/dist/typings/processes/postFetch.d.ts +8 -8
  312. package/dist/typings/processes/preClip.d.ts +12 -12
  313. package/dist/typings/processes/preFetch.d.ts +17 -17
  314. package/dist/typings/processes/render.d.ts +9 -9
  315. package/dist/typings/processes/scroll.d.ts +13 -13
  316. package/dist/typings/processes/start.d.ts +6 -6
  317. package/dist/typings/scroller.d.ts +26 -26
  318. package/dist/typings/version.d.ts +5 -5
  319. package/dist/typings/workflow-transducer.d.ts +2 -2
  320. package/dist/typings/workflow.d.ts +29 -29
  321. package/package.json +19 -18
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/classes/adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from './logger';\r\nimport { Buffer } from './buffer';\r\nimport { Reactive } from './reactive';\r\nimport {\r\n AdapterPropName,\r\n AdapterPropType,\r\n EMPTY_ITEM,\r\n getDefaultAdapterProps,\r\n methodPausedResult,\r\n methodPreResult,\r\n reactiveConfigStorage\r\n} from './adapter/props';\r\nimport { wantedUtils } from './adapter/wanted';\r\nimport { Viewport } from './viewport';\r\nimport { Direction } from '../inputs/index';\r\nimport { AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport {\r\n WorkflowGetter,\r\n IAdapterProp,\r\n AdapterMethodResult,\r\n IAdapter,\r\n ItemAdapter,\r\n ItemsPredicate,\r\n AdapterPrependOptions,\r\n AdapterAppendOptions,\r\n AdapterRemoveOptions,\r\n AdapterClipOptions,\r\n AdapterInsertOptions,\r\n AdapterReplaceOptions,\r\n AdapterUpdateOptions,\r\n AdapterFixOptions,\r\n ScrollerWorkflow,\r\n IDatasourceOptional,\r\n IPackages,\r\n IBufferInfo,\r\n State,\r\n ProcessSubject,\r\n} from '../interfaces/index';\r\n\r\ntype MethodResolver = (...args: unknown[]) => Promise<AdapterMethodResult>;\r\ntype InitializationParams<Item> = {\r\n buffer: Buffer<Item>,\r\n state: State,\r\n viewport: Viewport,\r\n logger: Logger,\r\n adapterRun$?: Reactive<ProcessSubject>,\r\n getWorkflow?: WorkflowGetter<Item>\r\n}\r\n\r\nconst ADAPTER_PROPS_STUB = getDefaultAdapterProps();\r\nconst ALLOWED_METHODS_WHEN_PAUSED = ADAPTER_PROPS_STUB.filter(v => !!v.allowedWhenPaused).map(v => v.name);\r\n\r\nconst _has = (obj: unknown, prop: string): boolean =>\r\n !!obj && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\nconst convertAppendArgs = <Item>(prepend: boolean, options: unknown, eof?: boolean) => {\r\n let result = options as AdapterAppendOptions<Item> & AdapterPrependOptions<Item>;\r\n if (!_has(options, 'items')) {\r\n const items = !Array.isArray(options) ? [options] : options;\r\n result = prepend ? { items, bof: eof } : { items, eof: eof };\r\n }\r\n return result;\r\n};\r\n\r\nconst convertRemoveArgs = <Item>(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>) => {\r\n if (!(_has(options, 'predicate') || _has(options, 'indexes'))) {\r\n const predicate = options as ItemsPredicate<Item>;\r\n options = { predicate };\r\n }\r\n return options;\r\n};\r\n\r\nexport class Adapter<Item = unknown> implements IAdapter<Item> {\r\n private externalContext: IAdapter<Item>;\r\n private logger: Logger;\r\n private getWorkflow: WorkflowGetter<Item>;\r\n private reloadCounter: number;\r\n private source: { [key: string]: Reactive<unknown> } = {}; // for Reactive props\r\n private box: { [key: string]: unknown } = {}; // for Scalars over Reactive props\r\n private demand: { [key: string]: unknown } = {}; // for Scalars on demand\r\n private disposed: boolean;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n setFirstOrLastVisible = (_: { first?: boolean, last?: boolean, workflow?: ScrollerWorkflow }) => { };\r\n\r\n get workflow(): ScrollerWorkflow<Item> {\r\n return this.getWorkflow();\r\n }\r\n get reloadCount(): number {\r\n return this.reloadCounter;\r\n }\r\n get reloadId(): string {\r\n return this.id + '.' + this.reloadCounter;\r\n }\r\n\r\n id: number;\r\n mock: boolean;\r\n augmented: boolean;\r\n version: string;\r\n init: boolean;\r\n init$: Reactive<boolean>;\r\n packageInfo: IPackages;\r\n itemsCount: number;\r\n bufferInfo: IBufferInfo;\r\n isLoading: boolean;\r\n isLoading$: Reactive<boolean>;\r\n loopPending: boolean;\r\n loopPending$: Reactive<boolean>;\r\n firstVisible: ItemAdapter<Item>;\r\n firstVisible$: Reactive<ItemAdapter<Item>>;\r\n lastVisible: ItemAdapter<Item>;\r\n lastVisible$: Reactive<ItemAdapter<Item>>;\r\n bof: boolean;\r\n bof$: Reactive<boolean>;\r\n eof: boolean;\r\n eof$: Reactive<boolean>;\r\n paused: boolean;\r\n paused$: Reactive<boolean>;\r\n\r\n private relax$: Reactive<AdapterMethodResult> | null;\r\n private relaxRun: Promise<AdapterMethodResult> | null;\r\n\r\n private getPromisifiedMethod(method: MethodResolver, args: unknown[]) {\r\n return new Promise<AdapterMethodResult>(resolve => {\r\n if (this.relax$) {\r\n this.relax$.once(value => resolve(value));\r\n }\r\n method.apply(this, args);\r\n });\r\n }\r\n\r\n private getWorkflowRunnerMethod(method: MethodResolver, name: AdapterPropName) {\r\n return (...args: unknown[]): Promise<AdapterMethodResult> => {\r\n if (!this.relax$) {\r\n this.logger?.log?.(() => 'scroller is not initialized: ' + name + ' method is ignored');\r\n return Promise.resolve(methodPreResult);\r\n }\r\n if (this.paused && !ALLOWED_METHODS_WHEN_PAUSED.includes(name)) {\r\n this.logger?.log?.(() => 'scroller is paused: ' + name + ' method is ignored');\r\n return Promise.resolve(methodPausedResult);\r\n\r\n }\r\n return this.getPromisifiedMethod(method, args);\r\n };\r\n }\r\n\r\n constructor(context: IAdapter<Item> | null, getWorkflow: WorkflowGetter<Item>, logger: Logger) {\r\n this.getWorkflow = getWorkflow;\r\n this.logger = logger;\r\n this.relax$ = null;\r\n this.relaxRun = null;\r\n this.reloadCounter = 0;\r\n const contextId = context?.id || -1;\r\n\r\n // public context (if exists) should provide access to Reactive props config by id\r\n const reactivePropsStore = context && reactiveConfigStorage.get(context.id) || {};\r\n\r\n // the Adapter initialization should not trigger \"wanted\" props setting;\r\n // after the initialization is completed, \"wanted\" functionality must be unblocked\r\n wantedUtils.setBlock(true, contextId);\r\n\r\n // make array of the original values from public context if present\r\n const adapterProps = context\r\n ? ADAPTER_PROPS_STUB.map(prop => {\r\n let value = context[prop.name];\r\n // if context is augmented, we need to replace external reactive props with inner ones\r\n if (context.augmented) {\r\n const reactiveProp = reactivePropsStore[prop.name];\r\n if (reactiveProp) {\r\n value = reactiveProp.default as Reactive<boolean>; // boolean doesn't matter here\r\n }\r\n }\r\n return ({ ...prop, value });\r\n })\r\n : getDefaultAdapterProps();\r\n\r\n // restore default reactive props if they were configured\r\n Object.entries(reactivePropsStore).forEach(([key, value]) => {\r\n const prop = adapterProps.find(({ name }) => name === key);\r\n if (prop && value) {\r\n prop.value = value.default;\r\n }\r\n });\r\n\r\n // Scalar permanent props\r\n adapterProps\r\n .filter(({ type, permanent }) => type === AdapterPropType.Scalar && permanent)\r\n .forEach(({ name, value }: IAdapterProp) =>\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => value\r\n })\r\n );\r\n\r\n // Reactive props: store original values in \"source\" container, to avoid extra .get() calls on scalar twins set\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Reactive)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.source[name] = value as Reactive<unknown>;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.source[name]\r\n });\r\n });\r\n\r\n // for \"wanted\" props that can be explicitly requested for the first time after the Adapter initialization,\r\n // an implicit calculation of the initial value is required;\r\n // so this method should be called when accessing the \"wanted\" props through one of the following getters\r\n const processWanted = (prop: IAdapterProp) => {\r\n if (wantedUtils.setBox(prop, contextId)) {\r\n if ([AdapterPropName.firstVisible, AdapterPropName.firstVisible$].some(n => n === prop.name)) {\r\n this.setFirstOrLastVisible({ first: true });\r\n } else if ([AdapterPropName.lastVisible, AdapterPropName.lastVisible$].some(n => n === prop.name)) {\r\n this.setFirstOrLastVisible({ last: true });\r\n }\r\n }\r\n };\r\n\r\n // Scalar props that have Reactive twins\r\n // 1) reactive props (from \"source\") should be triggered on set\r\n // 2) scalars should use \"box\" container on get\r\n // 3) \"wanted\" scalars should also run wanted-related logic on get\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && !!prop.reactive)\r\n .forEach((prop: IAdapterProp) => {\r\n const { name, value, reactive } = prop;\r\n this.box[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n set: (newValue: unknown) => {\r\n if (newValue !== this.box[name]) {\r\n this.box[name] = newValue;\r\n this.source[reactive as AdapterPropName].set(newValue);\r\n // need to emit new value through the configured reactive prop if present\r\n const reactiveProp = reactivePropsStore[reactive as AdapterPropName];\r\n if (reactiveProp) {\r\n reactiveProp.emit(reactiveProp.source, newValue);\r\n }\r\n }\r\n },\r\n get: () => {\r\n processWanted(prop);\r\n return this.box[name];\r\n }\r\n });\r\n });\r\n\r\n // Scalar props on-demand\r\n // these scalars should use \"demand\" container\r\n // setting defaults should be overridden on init()\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && prop.onDemand)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.demand[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.demand[name]\r\n });\r\n });\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n // Adapter public context augmentation\r\n adapterProps\r\n .forEach((prop: IAdapterProp) => {\r\n const { name, type, permanent } = prop;\r\n let value = (this as IAdapter)[name];\r\n if (type === AdapterPropType.Function) {\r\n value = (value as () => void).bind(this);\r\n } else if (type === AdapterPropType.WorkflowRunner) {\r\n value = this.getWorkflowRunnerMethod(value as MethodResolver, name);\r\n } else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {\r\n value = (context as IAdapter)[name];\r\n } else if (name === AdapterPropName.augmented) {\r\n value = true;\r\n }\r\n const nonPermanentScalar = !permanent && type === AdapterPropType.Scalar;\r\n Object.defineProperty(context, name, {\r\n configurable: true,\r\n get: () => {\r\n processWanted(prop); // consider accessing \"wanted\" Reactive props\r\n if (nonPermanentScalar) {\r\n return (this as IAdapter)[name]; // non-permanent Scalars should be taken in runtime\r\n }\r\n return value; // other props (Reactive/Functions/WorkflowRunners) can be defined once\r\n }\r\n });\r\n });\r\n\r\n this.externalContext = context;\r\n wantedUtils.setBlock(false, contextId);\r\n }\r\n\r\n initialize(\r\n { buffer, state, viewport, logger, adapterRun$, getWorkflow }: InitializationParams<Item>\r\n ): void {\r\n // buffer\r\n Object.defineProperty(this.demand, AdapterPropName.itemsCount, {\r\n get: () => buffer.getVisibleItemsCount()\r\n });\r\n Object.defineProperty(this.demand, AdapterPropName.bufferInfo, {\r\n get: (): IBufferInfo => ({\r\n firstIndex: buffer.firstIndex,\r\n lastIndex: buffer.lastIndex,\r\n minIndex: buffer.minIndex,\r\n maxIndex: buffer.maxIndex,\r\n absMinIndex: buffer.absMinIndex,\r\n absMaxIndex: buffer.absMaxIndex,\r\n defaultSize: buffer.defaultSize,\r\n })\r\n });\r\n this.bof = buffer.bof.get();\r\n buffer.bof.on(bof => this.bof = bof);\r\n this.eof = buffer.eof.get();\r\n buffer.eof.on(eof => this.eof = eof);\r\n\r\n // state\r\n Object.defineProperty(this.demand, AdapterPropName.packageInfo, {\r\n get: () => state.packageInfo\r\n });\r\n this.loopPending = state.cycle.innerLoop.busy.get();\r\n state.cycle.innerLoop.busy.on(busy => this.loopPending = busy);\r\n this.isLoading = state.cycle.busy.get();\r\n state.cycle.busy.on(busy => this.isLoading = busy);\r\n this.paused = state.paused.get();\r\n state.paused.on(paused => this.paused = paused);\r\n\r\n //viewport\r\n this.setFirstOrLastVisible = ({ first, last, workflow }) => {\r\n if ((!first && !last) || workflow?.call?.interrupted) {\r\n return;\r\n }\r\n const token = first ? AdapterPropName.firstVisible : AdapterPropName.lastVisible;\r\n if (!wantedUtils.getBox(this.externalContext?.id)?.[token]) {\r\n return;\r\n }\r\n if (buffer.items.some(({ element }) => !element)) {\r\n logger.log('skipping first/lastVisible set because not all buffered items are rendered at this moment');\r\n return;\r\n }\r\n const direction = first ? Direction.backward : Direction.forward;\r\n const { item } = viewport.getEdgeVisibleItem(buffer.items, direction);\r\n if (!item || item.element !== this[token].element) {\r\n this[token] = (item ? item.get() : EMPTY_ITEM) as ItemAdapter<Item>;\r\n }\r\n };\r\n\r\n // logger\r\n this.logger = logger;\r\n\r\n // self-pending subscription; set up only on the very first init\r\n if (adapterRun$) {\r\n if (!this.relax$) {\r\n this.relax$ = new Reactive();\r\n }\r\n const relax$ = this.relax$;\r\n adapterRun$.on(({ status, payload }) => {\r\n let unSubRelax = () => { };\r\n if (status === ProcessStatus.start) {\r\n unSubRelax = this.isLoading$.on(value => {\r\n if (!value) {\r\n unSubRelax();\r\n relax$.set({ success: true, immediate: false, details: null });\r\n }\r\n });\r\n } else if (status === ProcessStatus.done || status === ProcessStatus.error) {\r\n unSubRelax();\r\n relax$.set({\r\n success: status !== ProcessStatus.error,\r\n immediate: true,\r\n details: status === ProcessStatus.error && payload ? String(payload.error) : null\r\n });\r\n }\r\n });\r\n }\r\n\r\n // workflow getter\r\n if (getWorkflow) {\r\n this.getWorkflow = getWorkflow;\r\n }\r\n\r\n // init\r\n this.init = true;\r\n }\r\n\r\n dispose(): void {\r\n if (this.relax$) {\r\n this.relax$.dispose();\r\n }\r\n if (this.externalContext) {\r\n this.resetContext();\r\n }\r\n Object.getOwnPropertyNames(this).forEach(prop => {\r\n delete (this as Record<string, unknown>)[prop];\r\n });\r\n this.disposed = true;\r\n }\r\n\r\n resetContext(): void {\r\n const reactiveStore = reactiveConfigStorage.get(this.externalContext?.id);\r\n ADAPTER_PROPS_STUB\r\n .forEach(({ type, permanent, name, value }) => {\r\n // assign initial values to non-reactive non-permanent props\r\n if (type !== AdapterPropType.Reactive && !permanent) {\r\n Object.defineProperty(this.externalContext, name, {\r\n configurable: true,\r\n get: () => value\r\n });\r\n }\r\n // reset reactive props\r\n if (type === AdapterPropType.Reactive && reactiveStore) {\r\n const property = reactiveStore[name];\r\n if (property) {\r\n property.default.reset();\r\n property.emit(property.source, property.default.get());\r\n }\r\n }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reset(options?: IDatasourceOptional): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reset', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reset,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reload(options?: number | string): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reload', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reload,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n append(_options: AdapterAppendOptions<Item> | unknown, eof?: boolean): any {\r\n const options = convertAppendArgs(false, _options, eof); // support old signature\r\n this.logger.logAdapterMethod('append', [options.items, options.eof]);\r\n this.workflow.call({\r\n process: AdapterProcess.append,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prepend(_options: AdapterPrependOptions<Item> | unknown, bof?: boolean): any {\r\n const options = convertAppendArgs(true, _options, bof); // support old signature\r\n this.logger.logAdapterMethod('prepend', [options.items, options.bof]);\r\n this.workflow.call({\r\n process: AdapterProcess.prepend,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n check(): any {\r\n this.logger.logAdapterMethod('check');\r\n this.workflow.call({\r\n process: AdapterProcess.check,\r\n status: ProcessStatus.start\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n remove(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>): any {\r\n options = convertRemoveArgs(options); // support old signature\r\n this.logger.logAdapterMethod('remove', options);\r\n this.workflow.call({\r\n process: AdapterProcess.remove,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clip(options?: AdapterClipOptions): any {\r\n this.logger.logAdapterMethod('clip', options);\r\n this.workflow.call({\r\n process: AdapterProcess.clip,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n insert(options: AdapterInsertOptions<Item>): any {\r\n this.logger.logAdapterMethod('insert', options);\r\n this.workflow.call({\r\n process: AdapterProcess.insert,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n replace(options: AdapterReplaceOptions<Item>): any {\r\n this.logger.logAdapterMethod('replace', options);\r\n this.workflow.call({\r\n process: AdapterProcess.replace,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n update(options: AdapterUpdateOptions<Item>): any {\r\n this.logger.logAdapterMethod('update', options);\r\n this.workflow.call({\r\n process: AdapterProcess.update,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n pause(): any {\r\n this.logger.logAdapterMethod('pause');\r\n this.workflow.call({\r\n process: AdapterProcess.pause,\r\n status: ProcessStatus.start\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n resume(): any {\r\n this.logger.logAdapterMethod('resume');\r\n this.workflow.call({\r\n process: AdapterProcess.pause,\r\n status: ProcessStatus.start,\r\n payload: { options: { resume: true } }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n fix(options: AdapterFixOptions<Item>): any {\r\n this.logger.logAdapterMethod('fix', options);\r\n this.workflow.call({\r\n process: AdapterProcess.fix,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n relaxUnchained(callback: (() => void) | undefined, reloadId: string): Promise<AdapterMethodResult> {\r\n const runCallback = () => typeof callback === 'function' && reloadId === this.reloadId && callback();\r\n if (!this.isLoading) {\r\n runCallback();\r\n }\r\n return new Promise<boolean>(resolve => {\r\n if (!this.isLoading) {\r\n resolve(true);\r\n return;\r\n }\r\n this.isLoading$.once(() => {\r\n runCallback();\r\n resolve(false);\r\n });\r\n }).then(immediate => {\r\n if (this.disposed) {\r\n return {\r\n immediate,\r\n success: false,\r\n details: 'Adapter was disposed'\r\n };\r\n }\r\n const success = reloadId === this.reloadId;\r\n this.logger?.log?.(() => !success ? `relax promise cancelled due to ${reloadId} != ${this.reloadId}` : void 0);\r\n return {\r\n immediate,\r\n success,\r\n details: !success ? 'Interrupted by reload or reset' : null\r\n };\r\n });\r\n }\r\n\r\n relax(callback?: () => void): Promise<AdapterMethodResult> {\r\n const reloadId = this.reloadId;\r\n this.logger.logAdapterMethod('relax', callback, ` of ${reloadId}`);\r\n if (!this.init) {\r\n return Promise.resolve(methodPreResult);\r\n }\r\n return this.relaxRun = this.relaxRun\r\n ? this.relaxRun.then(() => this.relaxUnchained(callback, reloadId))\r\n : this.relaxUnchained(callback, reloadId).then((result) => {\r\n this.relaxRun = null;\r\n return result;\r\n });\r\n }\r\n\r\n showLog(): void {\r\n this.logger.logAdapterMethod('showLog');\r\n this.logger.logForce();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/classes/adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from './logger';\r\nimport { Buffer } from './buffer';\r\nimport { Reactive } from './reactive';\r\nimport {\r\n AdapterPropName,\r\n AdapterPropType,\r\n EMPTY_ITEM,\r\n getDefaultAdapterProps,\r\n methodPausedResult,\r\n methodPreResult,\r\n reactiveConfigStorage\r\n} from './adapter/props';\r\nimport { wantedUtils } from './adapter/wanted';\r\nimport { Viewport } from './viewport';\r\nimport { Direction } from '../inputs/index';\r\nimport { AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport {\r\n WorkflowGetter,\r\n IAdapterProp,\r\n AdapterMethodResult,\r\n IAdapter,\r\n ItemAdapter,\r\n ItemsPredicate,\r\n AdapterPrependOptions,\r\n AdapterAppendOptions,\r\n AdapterRemoveOptions,\r\n AdapterClipOptions,\r\n AdapterInsertOptions,\r\n AdapterReplaceOptions,\r\n AdapterUpdateOptions,\r\n AdapterFixOptions,\r\n ScrollerWorkflow,\r\n IDatasourceOptional,\r\n IPackages,\r\n IBufferInfo,\r\n State,\r\n ProcessSubject,\r\n} from '../interfaces/index';\r\n\r\ntype MethodResolver = (...args: unknown[]) => Promise<AdapterMethodResult>;\r\ntype InitializationParams<Item> = {\r\n buffer: Buffer<Item>,\r\n state: State,\r\n viewport: Viewport,\r\n logger: Logger,\r\n adapterRun$?: Reactive<ProcessSubject>,\r\n getWorkflow?: WorkflowGetter<Item>\r\n}\r\n\r\nconst ADAPTER_PROPS_STUB = getDefaultAdapterProps();\r\nconst ALLOWED_METHODS_WHEN_PAUSED = ADAPTER_PROPS_STUB.filter(v => !!v.allowedWhenPaused).map(v => v.name);\r\n\r\nconst _has = (obj: unknown, prop: string): boolean =>\r\n !!obj && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, prop);\r\n\r\nconst convertAppendArgs = <Item>(prepend: boolean, options: unknown, eof?: boolean) => {\r\n let result = options as AdapterAppendOptions<Item> & AdapterPrependOptions<Item>;\r\n if (!_has(options, 'items')) {\r\n const items = !Array.isArray(options) ? [options] : options;\r\n result = prepend ? { items, bof: eof } : { items, eof: eof };\r\n }\r\n return result;\r\n};\r\n\r\nconst convertRemoveArgs = <Item>(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>) => {\r\n if (!(_has(options, 'predicate') || _has(options, 'indexes'))) {\r\n const predicate = options as ItemsPredicate<Item>;\r\n options = { predicate };\r\n }\r\n return options;\r\n};\r\n\r\nexport class Adapter<Item = unknown> implements IAdapter<Item> {\r\n private externalContext: IAdapter<Item>;\r\n private logger: Logger;\r\n private getWorkflow: WorkflowGetter<Item>;\r\n private reloadCounter: number;\r\n private source: { [key: string]: Reactive<unknown> } = {}; // for Reactive props\r\n private box: { [key: string]: unknown } = {}; // for Scalars over Reactive props\r\n private demand: { [key: string]: unknown } = {}; // for Scalars on demand\r\n private disposed: boolean;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n setFirstOrLastVisible = (_: { first?: boolean, last?: boolean, workflow?: ScrollerWorkflow }) => { };\r\n\r\n get workflow(): ScrollerWorkflow<Item> {\r\n return this.getWorkflow();\r\n }\r\n get reloadCount(): number {\r\n return this.reloadCounter;\r\n }\r\n get reloadId(): string {\r\n return this.id + '.' + this.reloadCounter;\r\n }\r\n\r\n id: number;\r\n mock: boolean;\r\n augmented: boolean;\r\n version: string;\r\n init: boolean;\r\n init$: Reactive<boolean>;\r\n packageInfo: IPackages;\r\n itemsCount: number;\r\n bufferInfo: IBufferInfo;\r\n isLoading: boolean;\r\n isLoading$: Reactive<boolean>;\r\n loopPending: boolean;\r\n loopPending$: Reactive<boolean>;\r\n firstVisible: ItemAdapter<Item>;\r\n firstVisible$: Reactive<ItemAdapter<Item>>;\r\n lastVisible: ItemAdapter<Item>;\r\n lastVisible$: Reactive<ItemAdapter<Item>>;\r\n bof: boolean;\r\n bof$: Reactive<boolean>;\r\n eof: boolean;\r\n eof$: Reactive<boolean>;\r\n paused: boolean;\r\n paused$: Reactive<boolean>;\r\n\r\n private relax$: Reactive<AdapterMethodResult> | null;\r\n private relaxRun: Promise<AdapterMethodResult> | null;\r\n\r\n private getPromisifiedMethod(method: MethodResolver, args: unknown[]) {\r\n return new Promise<AdapterMethodResult>(resolve => {\r\n if (this.relax$) {\r\n this.relax$.once(value => resolve(value));\r\n }\r\n method.apply(this, args);\r\n });\r\n }\r\n\r\n private getWorkflowRunnerMethod(method: MethodResolver, name: AdapterPropName) {\r\n return (...args: unknown[]): Promise<AdapterMethodResult> => {\r\n if (!this.relax$) {\r\n this.logger?.log?.(() => 'scroller is not initialized: ' + name + ' method is ignored');\r\n return Promise.resolve(methodPreResult);\r\n }\r\n if (this.paused && !ALLOWED_METHODS_WHEN_PAUSED.includes(name)) {\r\n this.logger?.log?.(() => 'scroller is paused: ' + name + ' method is ignored');\r\n return Promise.resolve(methodPausedResult);\r\n\r\n }\r\n return this.getPromisifiedMethod(method, args);\r\n };\r\n }\r\n\r\n constructor(context: IAdapter<Item> | null, getWorkflow: WorkflowGetter<Item>, logger: Logger) {\r\n this.getWorkflow = getWorkflow;\r\n this.logger = logger;\r\n this.relax$ = null;\r\n this.relaxRun = null;\r\n this.reloadCounter = 0;\r\n const contextId = context?.id || -1;\r\n\r\n // public context (if exists) should provide access to Reactive props config by id\r\n const reactivePropsStore = context && reactiveConfigStorage.get(context.id) || {};\r\n\r\n // the Adapter initialization should not trigger \"wanted\" props setting;\r\n // after the initialization is completed, \"wanted\" functionality must be unblocked\r\n wantedUtils.setBlock(true, contextId);\r\n\r\n // make array of the original values from public context if present\r\n const adapterProps = context\r\n ? ADAPTER_PROPS_STUB.map(prop => {\r\n let value = context[prop.name];\r\n // if context is augmented, we need to replace external reactive props with inner ones\r\n if (context.augmented) {\r\n const reactiveProp = reactivePropsStore[prop.name];\r\n if (reactiveProp) {\r\n value = reactiveProp.default as Reactive<boolean>; // boolean doesn't matter here\r\n }\r\n }\r\n return ({ ...prop, value });\r\n })\r\n : getDefaultAdapterProps();\r\n\r\n // restore default reactive props if they were configured\r\n Object.entries(reactivePropsStore).forEach(([key, value]) => {\r\n const prop = adapterProps.find(({ name }) => name === key);\r\n if (prop && value) {\r\n prop.value = value.default;\r\n }\r\n });\r\n\r\n // Scalar permanent props\r\n adapterProps\r\n .filter(({ type, permanent }) => type === AdapterPropType.Scalar && permanent)\r\n .forEach(({ name, value }: IAdapterProp) =>\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => value\r\n })\r\n );\r\n\r\n // Reactive props: store original values in \"source\" container, to avoid extra .get() calls on scalar twins set\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Reactive)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.source[name] = value as Reactive<unknown>;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.source[name]\r\n });\r\n });\r\n\r\n // for \"wanted\" props that can be explicitly requested for the first time after the Adapter initialization,\r\n // an implicit calculation of the initial value is required;\r\n // so this method should be called when accessing the \"wanted\" props through one of the following getters\r\n const processWanted = (prop: IAdapterProp) => {\r\n if (wantedUtils.setBox(prop, contextId)) {\r\n if ([AdapterPropName.firstVisible, AdapterPropName.firstVisible$].some(n => n === prop.name)) {\r\n this.setFirstOrLastVisible({ first: true });\r\n } else if ([AdapterPropName.lastVisible, AdapterPropName.lastVisible$].some(n => n === prop.name)) {\r\n this.setFirstOrLastVisible({ last: true });\r\n }\r\n }\r\n };\r\n\r\n // Scalar props that have Reactive twins\r\n // 1) reactive props (from \"source\") should be triggered on set\r\n // 2) scalars should use \"box\" container on get\r\n // 3) \"wanted\" scalars should also run wanted-related logic on get\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && !!prop.reactive)\r\n .forEach((prop: IAdapterProp) => {\r\n const { name, value, reactive } = prop;\r\n this.box[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n set: (newValue: unknown) => {\r\n if (newValue !== this.box[name]) {\r\n this.box[name] = newValue;\r\n this.source[reactive as AdapterPropName].set(newValue);\r\n // need to emit new value through the configured reactive prop if present\r\n const reactiveProp = reactivePropsStore[reactive as AdapterPropName];\r\n if (reactiveProp) {\r\n reactiveProp.emit(reactiveProp.source, newValue);\r\n }\r\n }\r\n },\r\n get: () => {\r\n processWanted(prop);\r\n return this.box[name];\r\n }\r\n });\r\n });\r\n\r\n // Scalar props on-demand\r\n // these scalars should use \"demand\" container\r\n // setting defaults should be overridden on init()\r\n adapterProps\r\n .filter(prop => prop.type === AdapterPropType.Scalar && prop.onDemand)\r\n .forEach(({ name, value }: IAdapterProp) => {\r\n this.demand[name] = value;\r\n Object.defineProperty(this, name, {\r\n configurable: true,\r\n get: () => this.demand[name]\r\n });\r\n });\r\n\r\n if (!context) {\r\n return;\r\n }\r\n\r\n // Adapter public context augmentation\r\n adapterProps\r\n .forEach((prop: IAdapterProp) => {\r\n const { name, type, permanent } = prop;\r\n let value = (this as IAdapter)[name];\r\n if (type === AdapterPropType.Function) {\r\n value = (value as () => void).bind(this);\r\n } else if (type === AdapterPropType.WorkflowRunner) {\r\n value = this.getWorkflowRunnerMethod(value as MethodResolver, name);\r\n } else if (type === AdapterPropType.Reactive && reactivePropsStore[name]) {\r\n value = (context as IAdapter)[name];\r\n } else if (name === AdapterPropName.augmented) {\r\n value = true;\r\n }\r\n const nonPermanentScalar = !permanent && type === AdapterPropType.Scalar;\r\n Object.defineProperty(context, name, {\r\n configurable: true,\r\n get: () => {\r\n processWanted(prop); // consider accessing \"wanted\" Reactive props\r\n if (nonPermanentScalar) {\r\n return (this as IAdapter)[name]; // non-permanent Scalars should be taken in runtime\r\n }\r\n return value; // other props (Reactive/Functions/WorkflowRunners) can be defined once\r\n }\r\n });\r\n });\r\n\r\n this.externalContext = context;\r\n wantedUtils.setBlock(false, contextId);\r\n }\r\n\r\n initialize(\r\n { buffer, state, viewport, logger, adapterRun$, getWorkflow }: InitializationParams<Item>\r\n ): void {\r\n // buffer\r\n Object.defineProperty(this.demand, AdapterPropName.itemsCount, {\r\n get: () => buffer.getVisibleItemsCount()\r\n });\r\n Object.defineProperty(this.demand, AdapterPropName.bufferInfo, {\r\n get: (): IBufferInfo => ({\r\n firstIndex: buffer.firstIndex,\r\n lastIndex: buffer.lastIndex,\r\n minIndex: buffer.minIndex,\r\n maxIndex: buffer.maxIndex,\r\n absMinIndex: buffer.absMinIndex,\r\n absMaxIndex: buffer.absMaxIndex,\r\n defaultSize: buffer.defaultSize,\r\n })\r\n });\r\n this.bof = buffer.bof.get();\r\n buffer.bof.on(bof => this.bof = bof);\r\n this.eof = buffer.eof.get();\r\n buffer.eof.on(eof => this.eof = eof);\r\n\r\n // state\r\n Object.defineProperty(this.demand, AdapterPropName.packageInfo, {\r\n get: () => state.packageInfo\r\n });\r\n this.loopPending = state.cycle.innerLoop.busy.get();\r\n state.cycle.innerLoop.busy.on(busy => this.loopPending = busy);\r\n this.isLoading = state.cycle.busy.get();\r\n state.cycle.busy.on(busy => this.isLoading = busy);\r\n this.paused = state.paused.get();\r\n state.paused.on(paused => this.paused = paused);\r\n\r\n //viewport\r\n this.setFirstOrLastVisible = ({ first, last, workflow }) => {\r\n if ((!first && !last) || workflow?.call?.interrupted) {\r\n return;\r\n }\r\n const token = first ? AdapterPropName.firstVisible : AdapterPropName.lastVisible;\r\n if (!wantedUtils.getBox(this.externalContext?.id)?.[token]) {\r\n return;\r\n }\r\n if (buffer.items.some(({ element }) => !element)) {\r\n logger.log('skipping first/lastVisible set because not all buffered items are rendered at this moment');\r\n return;\r\n }\r\n const direction = first ? Direction.backward : Direction.forward;\r\n const { item } = viewport.getEdgeVisibleItem(buffer.items, direction);\r\n if (!item || item.element !== this[token].element) {\r\n this[token] = (item ? item.get() : EMPTY_ITEM) as ItemAdapter<Item>;\r\n }\r\n };\r\n\r\n // logger\r\n this.logger = logger;\r\n\r\n // self-pending subscription; set up only on the very first init\r\n if (adapterRun$) {\r\n if (!this.relax$) {\r\n this.relax$ = new Reactive();\r\n }\r\n const relax$ = this.relax$;\r\n adapterRun$.on(({ status, payload }) => {\r\n let unSubRelax = () => { };\r\n if (status === ProcessStatus.start) {\r\n unSubRelax = this.isLoading$.on(value => {\r\n if (!value) {\r\n unSubRelax();\r\n relax$.set({ success: true, immediate: false, details: null });\r\n }\r\n });\r\n } else if (status === ProcessStatus.done || status === ProcessStatus.error) {\r\n unSubRelax();\r\n relax$.set({\r\n success: status !== ProcessStatus.error,\r\n immediate: true,\r\n details: status === ProcessStatus.error && payload ? String(payload.error) : null\r\n });\r\n }\r\n });\r\n }\r\n\r\n // workflow getter\r\n if (getWorkflow) {\r\n this.getWorkflow = getWorkflow;\r\n }\r\n\r\n // init\r\n this.init = true;\r\n }\r\n\r\n dispose(): void {\r\n if (this.relax$) {\r\n this.relax$.dispose();\r\n }\r\n if (this.externalContext) {\r\n this.resetContext();\r\n }\r\n Object.getOwnPropertyNames(this).forEach(prop => {\r\n delete (this as Record<string, unknown>)[prop];\r\n });\r\n this.disposed = true;\r\n }\r\n\r\n resetContext(): void {\r\n const reactiveStore = reactiveConfigStorage.get(this.externalContext?.id);\r\n ADAPTER_PROPS_STUB\r\n .forEach(({ type, permanent, name, value }) => {\r\n // assign initial values to non-reactive non-permanent props\r\n if (type !== AdapterPropType.Reactive && !permanent) {\r\n Object.defineProperty(this.externalContext, name, {\r\n configurable: true,\r\n get: () => value\r\n });\r\n }\r\n // reset reactive props\r\n if (type === AdapterPropType.Reactive && reactiveStore) {\r\n const property = reactiveStore[name];\r\n if (property) {\r\n property.default.reset();\r\n property.emit(property.source, property.default.get());\r\n }\r\n }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reset(options?: IDatasourceOptional): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reset', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reset,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n reload(options?: number | string): any {\r\n this.reloadCounter++;\r\n this.logger.logAdapterMethod('reload', options, ` of ${this.reloadId}`);\r\n this.workflow.call({\r\n process: AdapterProcess.reload,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n append(_options: AdapterAppendOptions<Item> | unknown, eof?: boolean): any {\r\n const options = convertAppendArgs(false, _options, eof); // support old signature\r\n this.logger.logAdapterMethod('append', [options.items, options.eof]);\r\n this.workflow.call({\r\n process: AdapterProcess.append,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n prepend(_options: AdapterPrependOptions<Item> | unknown, bof?: boolean): any {\r\n const options = convertAppendArgs(true, _options, bof); // support old signature\r\n this.logger.logAdapterMethod('prepend', [options.items, options.bof]);\r\n this.workflow.call({\r\n process: AdapterProcess.prepend,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n check(): any {\r\n this.logger.logAdapterMethod('check');\r\n this.workflow.call({\r\n process: AdapterProcess.check,\r\n status: ProcessStatus.start\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n remove(options: AdapterRemoveOptions<Item> | ItemsPredicate<Item>): any {\r\n options = convertRemoveArgs(options); // support old signature\r\n this.logger.logAdapterMethod('remove', options);\r\n this.workflow.call({\r\n process: AdapterProcess.remove,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n clip(options?: AdapterClipOptions): any {\r\n this.logger.logAdapterMethod('clip', options);\r\n this.workflow.call({\r\n process: AdapterProcess.clip,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n insert(options: AdapterInsertOptions<Item>): any {\r\n this.logger.logAdapterMethod('insert', options);\r\n this.workflow.call({\r\n process: AdapterProcess.insert,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n replace(options: AdapterReplaceOptions<Item>): any {\r\n this.logger.logAdapterMethod('replace', options);\r\n this.workflow.call({\r\n process: AdapterProcess.replace,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n update(options: AdapterUpdateOptions<Item>): any {\r\n this.logger.logAdapterMethod('update', options);\r\n this.workflow.call({\r\n process: AdapterProcess.update,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n pause(): any {\r\n this.logger.logAdapterMethod('pause');\r\n this.workflow.call({\r\n process: AdapterProcess.pause,\r\n status: ProcessStatus.start\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n resume(): any {\r\n this.logger.logAdapterMethod('resume');\r\n this.workflow.call({\r\n process: AdapterProcess.pause,\r\n status: ProcessStatus.start,\r\n payload: { options: { resume: true } }\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n fix(options: AdapterFixOptions<Item>): any {\r\n this.logger.logAdapterMethod('fix', options);\r\n this.workflow.call({\r\n process: AdapterProcess.fix,\r\n status: ProcessStatus.start,\r\n payload: { options }\r\n });\r\n }\r\n\r\n relaxUnchained(callback: (() => void) | undefined, reloadId: string): Promise<AdapterMethodResult> {\r\n const runCallback = () => typeof callback === 'function' && reloadId === this.reloadId && callback();\r\n if (!this.isLoading) {\r\n runCallback();\r\n }\r\n return new Promise<boolean>(resolve => {\r\n if (!this.isLoading) {\r\n resolve(true);\r\n return;\r\n }\r\n this.isLoading$.once(() => {\r\n runCallback();\r\n resolve(false);\r\n });\r\n }).then(immediate => {\r\n if (this.disposed) {\r\n return {\r\n immediate,\r\n success: false,\r\n details: 'Adapter was disposed'\r\n };\r\n }\r\n const success = reloadId === this.reloadId;\r\n this.logger?.log?.(() => !success ? `relax promise cancelled due to ${reloadId} != ${this.reloadId}` : void 0);\r\n return {\r\n immediate,\r\n success,\r\n details: !success ? 'Interrupted by reload or reset' : null\r\n };\r\n });\r\n }\r\n\r\n relax(callback?: () => void): Promise<AdapterMethodResult> {\r\n const reloadId = this.reloadId;\r\n this.logger.logAdapterMethod('relax', callback, ` of ${reloadId}`);\r\n if (!this.init) {\r\n return Promise.resolve(methodPreResult);\r\n }\r\n return this.relaxRun = this.relaxRun\r\n ? this.relaxRun.then(() => this.relaxUnchained(callback, reloadId))\r\n : this.relaxUnchained(callback, reloadId).then((result) => {\r\n this.relaxRun = null;\r\n return result;\r\n });\r\n }\r\n\r\n showLog(): void {\r\n this.logger.logAdapterMethod('showLog');\r\n this.logger.logForce();\r\n }\r\n}\r\n"]}