vscroll 1.5.3 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +283 -273
  3. package/dist/bundles/vscroll.esm5.js +5558 -5525
  4. package/dist/bundles/vscroll.esm5.js.map +1 -1
  5. package/dist/bundles/vscroll.esm5.min.js +2 -2
  6. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.js +5045 -5015
  8. package/dist/bundles/vscroll.esm6.js.map +1 -1
  9. package/dist/bundles/vscroll.esm6.min.js +2 -2
  10. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.js +5559 -5526
  12. package/dist/bundles/vscroll.umd.js.map +1 -1
  13. package/dist/bundles/vscroll.umd.min.js +2 -2
  14. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/context.js +43 -43
  16. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  17. package/dist/esm2015/classes/adapter/props.js +268 -268
  18. package/dist/esm2015/classes/adapter/props.js.map +1 -1
  19. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  20. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  21. package/dist/esm2015/classes/adapter.js +455 -442
  22. package/dist/esm2015/classes/adapter.js.map +1 -1
  23. package/dist/esm2015/classes/buffer/cache.js +246 -246
  24. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  25. package/dist/esm2015/classes/buffer/checkCall.js +48 -48
  26. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  27. package/dist/esm2015/classes/buffer/defaultSize.js +127 -127
  28. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  29. package/dist/esm2015/classes/buffer.js +342 -342
  30. package/dist/esm2015/classes/buffer.js.map +1 -1
  31. package/dist/esm2015/classes/datasource.js +28 -28
  32. package/dist/esm2015/classes/domRoutines.js +166 -166
  33. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  34. package/dist/esm2015/classes/item.js +61 -61
  35. package/dist/esm2015/classes/item.js.map +1 -1
  36. package/dist/esm2015/classes/logger.js +186 -186
  37. package/dist/esm2015/classes/logger.js.map +1 -1
  38. package/dist/esm2015/classes/paddings.js +72 -72
  39. package/dist/esm2015/classes/reactive.js +54 -54
  40. package/dist/esm2015/classes/reactive.js.map +1 -1
  41. package/dist/esm2015/classes/settings.js +39 -39
  42. package/dist/esm2015/classes/settings.js.map +1 -1
  43. package/dist/esm2015/classes/state/clip.js +16 -16
  44. package/dist/esm2015/classes/state/clip.js.map +1 -1
  45. package/dist/esm2015/classes/state/cycle.js +60 -60
  46. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  47. package/dist/esm2015/classes/state/fetch.js +122 -122
  48. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  49. package/dist/esm2015/classes/state/render.js +14 -14
  50. package/dist/esm2015/classes/state/render.js.map +1 -1
  51. package/dist/esm2015/classes/state/scroll.js +30 -30
  52. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  53. package/dist/esm2015/classes/state.js +59 -59
  54. package/dist/esm2015/classes/viewport.js +72 -72
  55. package/dist/esm2015/classes/viewport.js.map +1 -1
  56. package/dist/esm2015/index.js +8 -8
  57. package/dist/esm2015/index.js.map +1 -1
  58. package/dist/esm2015/inputs/adapter.js +230 -230
  59. package/dist/esm2015/inputs/adapter.js.map +1 -1
  60. package/dist/esm2015/inputs/common.js +11 -11
  61. package/dist/esm2015/inputs/common.js.map +1 -1
  62. package/dist/esm2015/inputs/datasource.js +20 -20
  63. package/dist/esm2015/inputs/datasource.js.map +1 -1
  64. package/dist/esm2015/inputs/index.js +6 -6
  65. package/dist/esm2015/inputs/index.js.map +1 -1
  66. package/dist/esm2015/inputs/settings.js +146 -146
  67. package/dist/esm2015/inputs/settings.js.map +1 -1
  68. package/dist/esm2015/inputs/validation.js +374 -374
  69. package/dist/esm2015/inputs/validation.js.map +1 -1
  70. package/dist/esm2015/interfaces/adapter.js +1 -1
  71. package/dist/esm2015/interfaces/datasource.js +1 -1
  72. package/dist/esm2015/interfaces/datasource.js.map +1 -1
  73. package/dist/esm2015/interfaces/index.js +1 -1
  74. package/dist/esm2015/interfaces/index.js.map +1 -1
  75. package/dist/esm2015/interfaces/item.js +1 -1
  76. package/dist/esm2015/interfaces/item.js.map +1 -1
  77. package/dist/esm2015/interfaces/process.js +1 -1
  78. package/dist/esm2015/interfaces/routines.js +1 -1
  79. package/dist/esm2015/interfaces/routines.js.map +1 -1
  80. package/dist/esm2015/interfaces/settings.js +1 -1
  81. package/dist/esm2015/interfaces/state.js +1 -1
  82. package/dist/esm2015/interfaces/validation.js +1 -1
  83. package/dist/esm2015/interfaces/validation.js.map +1 -1
  84. package/dist/esm2015/interfaces/workflow.js +1 -1
  85. package/dist/esm2015/interfaces/workflow.js.map +1 -1
  86. package/dist/esm2015/processes/adapter/append.js +35 -35
  87. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  88. package/dist/esm2015/processes/adapter/check.js +32 -32
  89. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  90. package/dist/esm2015/processes/adapter/clip.js +12 -12
  91. package/dist/esm2015/processes/adapter/clip.js.map +1 -1
  92. package/dist/esm2015/processes/adapter/fix.js +77 -77
  93. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  94. package/dist/esm2015/processes/adapter/insert.js +73 -73
  95. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  96. package/dist/esm2015/processes/adapter/reload.js +19 -20
  97. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  98. package/dist/esm2015/processes/adapter/remove.js +102 -102
  99. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  100. package/dist/esm2015/processes/adapter/replace.js +39 -39
  101. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  102. package/dist/esm2015/processes/adapter/reset.js +35 -35
  103. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  104. package/dist/esm2015/processes/adapter/update.js +43 -43
  105. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  106. package/dist/esm2015/processes/adjust.js +141 -141
  107. package/dist/esm2015/processes/clip.js +49 -49
  108. package/dist/esm2015/processes/end.js +52 -52
  109. package/dist/esm2015/processes/end.js.map +1 -1
  110. package/dist/esm2015/processes/fetch.js +91 -90
  111. package/dist/esm2015/processes/fetch.js.map +1 -1
  112. package/dist/esm2015/processes/index.js +23 -23
  113. package/dist/esm2015/processes/init.js +14 -14
  114. package/dist/esm2015/processes/init.js.map +1 -1
  115. package/dist/esm2015/processes/misc/base.js +30 -30
  116. package/dist/esm2015/processes/misc/base.js.map +1 -1
  117. package/dist/esm2015/processes/misc/enums.js +35 -35
  118. package/dist/esm2015/processes/misc/enums.js.map +1 -1
  119. package/dist/esm2015/processes/misc/index.js +2 -2
  120. package/dist/esm2015/processes/misc/index.js.map +1 -1
  121. package/dist/esm2015/processes/postFetch.js +64 -64
  122. package/dist/esm2015/processes/postFetch.js.map +1 -1
  123. package/dist/esm2015/processes/preClip.js +85 -85
  124. package/dist/esm2015/processes/preClip.js.map +1 -1
  125. package/dist/esm2015/processes/preFetch.js +240 -240
  126. package/dist/esm2015/processes/preFetch.js.map +1 -1
  127. package/dist/esm2015/processes/render.js +54 -54
  128. package/dist/esm2015/processes/render.js.map +1 -1
  129. package/dist/esm2015/processes/scroll.js +97 -97
  130. package/dist/esm2015/processes/scroll.js.map +1 -1
  131. package/dist/esm2015/processes/start.js +11 -11
  132. package/dist/esm2015/processes/start.js.map +1 -1
  133. package/dist/esm2015/scroller.js +76 -69
  134. package/dist/esm2015/scroller.js.map +1 -1
  135. package/dist/esm2015/version.js +4 -4
  136. package/dist/esm2015/version.js.map +1 -1
  137. package/dist/esm2015/workflow-transducer.js +210 -210
  138. package/dist/esm2015/workflow-transducer.js.map +1 -1
  139. package/dist/esm2015/workflow.js +161 -151
  140. package/dist/esm2015/workflow.js.map +1 -1
  141. package/dist/esm5/classes/adapter/context.js +50 -50
  142. package/dist/esm5/classes/adapter/context.js.map +1 -1
  143. package/dist/esm5/classes/adapter/props.js +268 -268
  144. package/dist/esm5/classes/adapter/props.js.map +1 -1
  145. package/dist/esm5/classes/adapter/wanted.js +29 -29
  146. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  147. package/dist/esm5/classes/adapter.js +504 -490
  148. package/dist/esm5/classes/adapter.js.map +1 -1
  149. package/dist/esm5/classes/buffer/cache.js +260 -260
  150. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  151. package/dist/esm5/classes/buffer/checkCall.js +56 -56
  152. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  153. package/dist/esm5/classes/buffer/defaultSize.js +145 -145
  154. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  155. package/dist/esm5/classes/buffer.js +409 -409
  156. package/dist/esm5/classes/buffer.js.map +1 -1
  157. package/dist/esm5/classes/datasource.js +37 -37
  158. package/dist/esm5/classes/domRoutines.js +182 -182
  159. package/dist/esm5/classes/domRoutines.js.map +1 -1
  160. package/dist/esm5/classes/item.js +76 -76
  161. package/dist/esm5/classes/item.js.map +1 -1
  162. package/dist/esm5/classes/logger.js +210 -210
  163. package/dist/esm5/classes/logger.js.map +1 -1
  164. package/dist/esm5/classes/paddings.js +80 -80
  165. package/dist/esm5/classes/reactive.js +69 -69
  166. package/dist/esm5/classes/reactive.js.map +1 -1
  167. package/dist/esm5/classes/settings.js +47 -47
  168. package/dist/esm5/classes/settings.js.map +1 -1
  169. package/dist/esm5/classes/state/clip.js +22 -22
  170. package/dist/esm5/classes/state/clip.js.map +1 -1
  171. package/dist/esm5/classes/state/cycle.js +75 -75
  172. package/dist/esm5/classes/state/cycle.js.map +1 -1
  173. package/dist/esm5/classes/state/fetch.js +148 -148
  174. package/dist/esm5/classes/state/fetch.js.map +1 -1
  175. package/dist/esm5/classes/state/render.js +20 -20
  176. package/dist/esm5/classes/state/render.js.map +1 -1
  177. package/dist/esm5/classes/state/scroll.js +32 -32
  178. package/dist/esm5/classes/state/scroll.js.map +1 -1
  179. package/dist/esm5/classes/state.js +66 -66
  180. package/dist/esm5/classes/viewport.js +79 -79
  181. package/dist/esm5/classes/viewport.js.map +1 -1
  182. package/dist/esm5/index.js +8 -8
  183. package/dist/esm5/index.js.map +1 -1
  184. package/dist/esm5/inputs/adapter.js +231 -231
  185. package/dist/esm5/inputs/adapter.js.map +1 -1
  186. package/dist/esm5/inputs/common.js +11 -11
  187. package/dist/esm5/inputs/common.js.map +1 -1
  188. package/dist/esm5/inputs/datasource.js +21 -21
  189. package/dist/esm5/inputs/datasource.js.map +1 -1
  190. package/dist/esm5/inputs/index.js +6 -6
  191. package/dist/esm5/inputs/index.js.map +1 -1
  192. package/dist/esm5/inputs/settings.js +147 -147
  193. package/dist/esm5/inputs/settings.js.map +1 -1
  194. package/dist/esm5/inputs/validation.js +396 -396
  195. package/dist/esm5/inputs/validation.js.map +1 -1
  196. package/dist/esm5/interfaces/adapter.js +1 -1
  197. package/dist/esm5/interfaces/datasource.js +1 -1
  198. package/dist/esm5/interfaces/datasource.js.map +1 -1
  199. package/dist/esm5/interfaces/index.js +1 -1
  200. package/dist/esm5/interfaces/index.js.map +1 -1
  201. package/dist/esm5/interfaces/item.js +1 -1
  202. package/dist/esm5/interfaces/item.js.map +1 -1
  203. package/dist/esm5/interfaces/process.js +1 -1
  204. package/dist/esm5/interfaces/routines.js +1 -1
  205. package/dist/esm5/interfaces/routines.js.map +1 -1
  206. package/dist/esm5/interfaces/settings.js +1 -1
  207. package/dist/esm5/interfaces/state.js +1 -1
  208. package/dist/esm5/interfaces/validation.js +1 -1
  209. package/dist/esm5/interfaces/validation.js.map +1 -1
  210. package/dist/esm5/interfaces/workflow.js +1 -1
  211. package/dist/esm5/interfaces/workflow.js.map +1 -1
  212. package/dist/esm5/processes/adapter/append.js +43 -43
  213. package/dist/esm5/processes/adapter/append.js.map +1 -1
  214. package/dist/esm5/processes/adapter/check.js +39 -39
  215. package/dist/esm5/processes/adapter/check.js.map +1 -1
  216. package/dist/esm5/processes/adapter/clip.js +19 -19
  217. package/dist/esm5/processes/adapter/clip.js.map +1 -1
  218. package/dist/esm5/processes/adapter/fix.js +89 -89
  219. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  220. package/dist/esm5/processes/adapter/insert.js +81 -81
  221. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  222. package/dist/esm5/processes/adapter/reload.js +26 -27
  223. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  224. package/dist/esm5/processes/adapter/remove.js +115 -115
  225. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  226. package/dist/esm5/processes/adapter/replace.js +47 -47
  227. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  228. package/dist/esm5/processes/adapter/reset.js +42 -42
  229. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  230. package/dist/esm5/processes/adapter/update.js +59 -59
  231. package/dist/esm5/processes/adapter/update.js.map +1 -1
  232. package/dist/esm5/processes/adjust.js +152 -152
  233. package/dist/esm5/processes/clip.js +60 -60
  234. package/dist/esm5/processes/end.js +63 -63
  235. package/dist/esm5/processes/end.js.map +1 -1
  236. package/dist/esm5/processes/fetch.js +102 -101
  237. package/dist/esm5/processes/fetch.js.map +1 -1
  238. package/dist/esm5/processes/index.js +23 -23
  239. package/dist/esm5/processes/init.js +21 -21
  240. package/dist/esm5/processes/init.js.map +1 -1
  241. package/dist/esm5/processes/misc/base.js +44 -44
  242. package/dist/esm5/processes/misc/base.js.map +1 -1
  243. package/dist/esm5/processes/misc/enums.js +35 -35
  244. package/dist/esm5/processes/misc/enums.js.map +1 -1
  245. package/dist/esm5/processes/misc/index.js +2 -2
  246. package/dist/esm5/processes/misc/index.js.map +1 -1
  247. package/dist/esm5/processes/postFetch.js +73 -73
  248. package/dist/esm5/processes/postFetch.js.map +1 -1
  249. package/dist/esm5/processes/preClip.js +94 -94
  250. package/dist/esm5/processes/preClip.js.map +1 -1
  251. package/dist/esm5/processes/preFetch.js +247 -247
  252. package/dist/esm5/processes/preFetch.js.map +1 -1
  253. package/dist/esm5/processes/render.js +63 -63
  254. package/dist/esm5/processes/render.js.map +1 -1
  255. package/dist/esm5/processes/scroll.js +107 -107
  256. package/dist/esm5/processes/scroll.js.map +1 -1
  257. package/dist/esm5/processes/start.js +18 -18
  258. package/dist/esm5/processes/start.js.map +1 -1
  259. package/dist/esm5/scroller.js +82 -73
  260. package/dist/esm5/scroller.js.map +1 -1
  261. package/dist/esm5/version.js +4 -4
  262. package/dist/esm5/version.js.map +1 -1
  263. package/dist/esm5/workflow-transducer.js +212 -212
  264. package/dist/esm5/workflow-transducer.js.map +1 -1
  265. package/dist/esm5/workflow.js +186 -176
  266. package/dist/esm5/workflow.js.map +1 -1
  267. package/dist/typings/classes/adapter/context.d.ts +4 -4
  268. package/dist/typings/classes/adapter/props.d.ts +47 -47
  269. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  270. package/dist/typings/classes/adapter.d.ts +74 -64
  271. package/dist/typings/classes/buffer/cache.d.ts +95 -95
  272. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  273. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  274. package/dist/typings/classes/buffer.d.ts +64 -64
  275. package/dist/typings/classes/datasource.d.ts +27 -27
  276. package/dist/typings/classes/domRoutines.d.ts +33 -33
  277. package/dist/typings/classes/item.d.ts +28 -28
  278. package/dist/typings/classes/logger.d.ts +28 -28
  279. package/dist/typings/classes/paddings.d.ts +22 -22
  280. package/dist/typings/classes/reactive.d.ts +21 -21
  281. package/dist/typings/classes/settings.d.ts +119 -119
  282. package/dist/typings/classes/state/clip.d.ts +9 -9
  283. package/dist/typings/classes/state/cycle.d.ts +29 -29
  284. package/dist/typings/classes/state/fetch.d.ts +62 -62
  285. package/dist/typings/classes/state/render.d.ts +9 -9
  286. package/dist/typings/classes/state/scroll.d.ts +16 -16
  287. package/dist/typings/classes/state.d.ts +27 -27
  288. package/dist/typings/classes/viewport.d.ts +32 -32
  289. package/dist/typings/index.d.ts +9 -9
  290. package/dist/typings/inputs/adapter.d.ts +5 -5
  291. package/dist/typings/inputs/common.d.ts +9 -9
  292. package/dist/typings/inputs/datasource.d.ts +7 -7
  293. package/dist/typings/inputs/index.d.ts +6 -6
  294. package/dist/typings/inputs/settings.d.ts +41 -41
  295. package/dist/typings/inputs/validation.d.ts +83 -83
  296. package/dist/typings/interfaces/adapter.d.ts +156 -156
  297. package/dist/typings/interfaces/datasource.d.ts +26 -26
  298. package/dist/typings/interfaces/index.d.ts +10 -10
  299. package/dist/typings/interfaces/item.d.ts +8 -8
  300. package/dist/typings/interfaces/process.d.ts +35 -35
  301. package/dist/typings/interfaces/routines.d.ts +157 -157
  302. package/dist/typings/interfaces/settings.d.ts +31 -31
  303. package/dist/typings/interfaces/state.d.ts +22 -22
  304. package/dist/typings/interfaces/validation.d.ts +33 -33
  305. package/dist/typings/interfaces/workflow.d.ts +53 -53
  306. package/dist/typings/processes/adapter/append.d.ts +14 -14
  307. package/dist/typings/processes/adapter/check.d.ts +6 -6
  308. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  309. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  310. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  311. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  312. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  313. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  314. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  315. package/dist/typings/processes/adapter/update.d.ts +8 -8
  316. package/dist/typings/processes/adjust.d.ts +10 -10
  317. package/dist/typings/processes/clip.d.ts +7 -7
  318. package/dist/typings/processes/end.d.ts +10 -10
  319. package/dist/typings/processes/fetch.d.ts +18 -18
  320. package/dist/typings/processes/index.d.ts +23 -23
  321. package/dist/typings/processes/init.d.ts +7 -7
  322. package/dist/typings/processes/misc/base.d.ts +4 -4
  323. package/dist/typings/processes/misc/enums.d.ts +32 -32
  324. package/dist/typings/processes/misc/index.d.ts +2 -2
  325. package/dist/typings/processes/postFetch.d.ts +8 -8
  326. package/dist/typings/processes/preClip.d.ts +12 -12
  327. package/dist/typings/processes/preFetch.d.ts +17 -17
  328. package/dist/typings/processes/render.d.ts +9 -9
  329. package/dist/typings/processes/scroll.d.ts +13 -13
  330. package/dist/typings/processes/start.d.ts +6 -6
  331. package/dist/typings/scroller.d.ts +26 -26
  332. package/dist/typings/version.d.ts +5 -5
  333. package/dist/typings/workflow-transducer.d.ts +2 -2
  334. package/dist/typings/workflow.d.ts +29 -28
  335. package/package.json +68 -68
@@ -1,73 +1,73 @@
1
- import { Direction } from '../inputs/index';
2
- export class Padding {
3
- constructor(direction, routines) {
4
- const found = routines.findPaddingElement(direction);
5
- routines.checkElement(found);
6
- this.element = found;
7
- this.direction = direction;
8
- this.routines = routines;
9
- }
10
- reset(size) {
11
- this.size = size || 0;
12
- }
13
- get size() {
14
- return this.routines.getSizeStyle(this.element);
15
- }
16
- set size(value) {
17
- this.routines.setSizeStyle(this.element, value);
18
- }
19
- }
20
- export class Paddings {
21
- constructor(routines, settings) {
22
- this.settings = settings;
23
- this.forward = new Padding(Direction.forward, routines);
24
- this.backward = new Padding(Direction.backward, routines);
25
- }
26
- byDirection(direction, opposite) {
27
- return direction === Direction.backward
28
- ? (opposite ? this.forward : this.backward)
29
- : (opposite ? this.backward : this.forward);
30
- }
31
- reset(viewportSize, startIndex, offset) {
32
- const positive = this.getPositiveSize(startIndex, viewportSize, offset);
33
- const negative = this.getNegativeSize(startIndex);
34
- if (this.settings.inverse) {
35
- this.forward.reset(negative);
36
- this.backward.reset(positive);
37
- const diff = viewportSize - this.backward.size - offset;
38
- if (diff > 0) {
39
- this.backward.size += diff;
40
- this.forward.size -= diff;
41
- }
42
- }
43
- else {
44
- this.forward.reset(positive);
45
- this.backward.reset(negative);
46
- const diff = viewportSize - this.forward.size - offset;
47
- if (diff > 0) {
48
- this.backward.size -= diff;
49
- this.forward.size += diff;
50
- }
51
- }
52
- }
53
- getPositiveSize(startIndex, viewportSize, offset) {
54
- const { settings } = this;
55
- let positiveSize = viewportSize;
56
- if (isFinite(settings.maxIndex)) {
57
- positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;
58
- }
59
- if (offset) {
60
- positiveSize = Math.max(positiveSize - offset, 0);
61
- }
62
- return positiveSize;
63
- }
64
- getNegativeSize(startIndex) {
65
- const { settings } = this;
66
- let negativeSize = 0;
67
- if (isFinite(settings.minIndex)) {
68
- negativeSize = (startIndex - settings.minIndex) * settings.itemSize;
69
- }
70
- return negativeSize;
71
- }
72
- }
1
+ import { Direction } from '../inputs/index';
2
+ export class Padding {
3
+ constructor(direction, routines) {
4
+ const found = routines.findPaddingElement(direction);
5
+ routines.checkElement(found);
6
+ this.element = found;
7
+ this.direction = direction;
8
+ this.routines = routines;
9
+ }
10
+ reset(size) {
11
+ this.size = size || 0;
12
+ }
13
+ get size() {
14
+ return this.routines.getSizeStyle(this.element);
15
+ }
16
+ set size(value) {
17
+ this.routines.setSizeStyle(this.element, value);
18
+ }
19
+ }
20
+ export class Paddings {
21
+ constructor(routines, settings) {
22
+ this.settings = settings;
23
+ this.forward = new Padding(Direction.forward, routines);
24
+ this.backward = new Padding(Direction.backward, routines);
25
+ }
26
+ byDirection(direction, opposite) {
27
+ return direction === Direction.backward
28
+ ? (opposite ? this.forward : this.backward)
29
+ : (opposite ? this.backward : this.forward);
30
+ }
31
+ reset(viewportSize, startIndex, offset) {
32
+ const positive = this.getPositiveSize(startIndex, viewportSize, offset);
33
+ const negative = this.getNegativeSize(startIndex);
34
+ if (this.settings.inverse) {
35
+ this.forward.reset(negative);
36
+ this.backward.reset(positive);
37
+ const diff = viewportSize - this.backward.size - offset;
38
+ if (diff > 0) {
39
+ this.backward.size += diff;
40
+ this.forward.size -= diff;
41
+ }
42
+ }
43
+ else {
44
+ this.forward.reset(positive);
45
+ this.backward.reset(negative);
46
+ const diff = viewportSize - this.forward.size - offset;
47
+ if (diff > 0) {
48
+ this.backward.size -= diff;
49
+ this.forward.size += diff;
50
+ }
51
+ }
52
+ }
53
+ getPositiveSize(startIndex, viewportSize, offset) {
54
+ const { settings } = this;
55
+ let positiveSize = viewportSize;
56
+ if (isFinite(settings.maxIndex)) {
57
+ positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;
58
+ }
59
+ if (offset) {
60
+ positiveSize = Math.max(positiveSize - offset, 0);
61
+ }
62
+ return positiveSize;
63
+ }
64
+ getNegativeSize(startIndex) {
65
+ const { settings } = this;
66
+ let negativeSize = 0;
67
+ if (isFinite(settings.minIndex)) {
68
+ negativeSize = (startIndex - settings.minIndex) * settings.itemSize;
69
+ }
70
+ return negativeSize;
71
+ }
72
+ }
73
73
  //# sourceMappingURL=paddings.js.map
@@ -1,55 +1,55 @@
1
- export class Reactive {
2
- constructor(value, options) {
3
- this.id = 0;
4
- if (value !== void 0) {
5
- this.value = value;
6
- this.initialValue = value;
7
- }
8
- this.options = options || {};
9
- this.subscriptions = new Map();
10
- }
11
- set(value) {
12
- if (this.value === value && !this.options.emitEqual) {
13
- return;
14
- }
15
- this.value = value;
16
- for (const [, sub] of this.subscriptions) {
17
- sub.emit(value);
18
- if (this.value !== value) {
19
- break;
20
- }
21
- }
22
- }
23
- get() {
24
- return this.value;
25
- }
26
- on(func) {
27
- const id = this.id++;
28
- const subscription = {
29
- emit: func,
30
- off: () => {
31
- subscription.emit = () => null;
32
- this.subscriptions.delete(id);
33
- }
34
- };
35
- this.subscriptions.set(id, subscription);
36
- if (this.options.emitOnSubscribe) {
37
- subscription.emit(this.value);
38
- }
39
- return () => subscription.off();
40
- }
41
- once(func) {
42
- const off = this.on(v => {
43
- off();
44
- func(v);
45
- });
46
- return off;
47
- }
48
- reset() {
49
- this.set(this.initialValue);
50
- }
51
- dispose() {
52
- this.subscriptions.forEach(sub => sub.off());
53
- }
54
- }
1
+ export class Reactive {
2
+ constructor(value, options) {
3
+ this.id = 0;
4
+ if (value !== void 0) {
5
+ this.value = value;
6
+ this.initialValue = value;
7
+ }
8
+ this.options = options || {};
9
+ this.subscriptions = new Map();
10
+ }
11
+ set(value) {
12
+ if (this.value === value && !this.options.emitEqual) {
13
+ return;
14
+ }
15
+ this.value = value;
16
+ for (const [, sub] of this.subscriptions) {
17
+ sub.emit(value);
18
+ if (this.value !== value) {
19
+ break;
20
+ }
21
+ }
22
+ }
23
+ get() {
24
+ return this.value;
25
+ }
26
+ on(func) {
27
+ const id = this.id++;
28
+ const subscription = {
29
+ emit: func,
30
+ off: () => {
31
+ subscription.emit = () => null;
32
+ this.subscriptions.delete(id);
33
+ }
34
+ };
35
+ this.subscriptions.set(id, subscription);
36
+ if (this.options.emitOnSubscribe) {
37
+ subscription.emit(this.value);
38
+ }
39
+ return () => subscription.off();
40
+ }
41
+ once(func) {
42
+ const off = this.on(v => {
43
+ off();
44
+ func(v);
45
+ });
46
+ return off;
47
+ }
48
+ reset() {
49
+ this.set(this.initialValue);
50
+ }
51
+ dispose() {
52
+ this.subscriptions.forEach(sub => sub.off());
53
+ }
54
+ }
55
55
  //# sourceMappingURL=reactive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../../src/classes/reactive.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,QAAQ;IAQnB,YAAY,KAAS,EAAE,OAAiB;QACtC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACnD,OAAO;SACR;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACxB,MAAM;aACP;SACF;IACH,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,EAAE,CAAC,IAAW;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,YAAY,GAAoB;YACpC,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,GAAG,EAAE;gBACR,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;SACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,IAAW;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACtB,GAAG,EAAE,CAAC;YACN,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF","sourcesContent":["type On<T> = (value: T) => void;\ntype Off = () => void;\n\ninterface Subscription<T> {\n emit: On<T>;\n off: Off;\n}\n\ninterface Options {\n emitOnSubscribe?: boolean; // if set, emit right on subscribe (like rxjs BehaviorSubject)\n emitEqual?: boolean; // if set, emit when new value is equal to the old one\n}\n\nexport class Reactive<T> {\n\n private initialValue: T;\n private value: T;\n private id: number;\n private options: Options;\n private subscriptions: Map<number, Subscription<T>>;\n\n constructor(value?: T, options?: Options) {\n this.id = 0;\n if (value !== void 0) {\n this.value = value;\n this.initialValue = value;\n }\n this.options = options || {};\n this.subscriptions = new Map();\n }\n\n set(value: T): void {\n if (this.value === value && !this.options.emitEqual) {\n return;\n }\n this.value = value;\n for (const [, sub] of this.subscriptions) {\n sub.emit(value);\n if (this.value !== value) {\n break;\n }\n }\n }\n\n get(): T {\n return this.value;\n }\n\n on(func: On<T>): Off {\n const id = this.id++;\n const subscription: Subscription<T> = {\n emit: func,\n off: () => {\n subscription.emit = () => null;\n this.subscriptions.delete(id);\n }\n };\n this.subscriptions.set(id, subscription);\n if (this.options.emitOnSubscribe) {\n subscription.emit(this.value);\n }\n return () => subscription.off();\n }\n\n once(func: On<T>): Off {\n const off = this.on(v => {\n off();\n func(v);\n });\n return off;\n }\n\n reset(): void {\n this.set(this.initialValue);\n }\n\n dispose(): void {\n this.subscriptions.forEach(sub => sub.off());\n }\n}\n"]}
1
+ {"version":3,"file":"reactive.js","sourceRoot":"","sources":["../../../src/classes/reactive.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,QAAQ;IAQnB,YAAY,KAAS,EAAE,OAAiB;QACtC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,KAAQ;QACV,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACnD,OAAO;SACR;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YACxC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACxB,MAAM;aACP;SACF;IACH,CAAC;IAED,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,EAAE,CAAC,IAAW;QACZ,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,YAAY,GAAoB;YACpC,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,GAAG,EAAE;gBACR,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC;SACF,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,IAAW;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACtB,GAAG,EAAE,CAAC;YACN,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF","sourcesContent":["type On<T> = (value: T) => void;\r\ntype Off = () => void;\r\n\r\ninterface Subscription<T> {\r\n emit: On<T>;\r\n off: Off;\r\n}\r\n\r\ninterface Options {\r\n emitOnSubscribe?: boolean; // if set, emit right on subscribe (like rxjs BehaviorSubject)\r\n emitEqual?: boolean; // if set, emit when new value is equal to the old one\r\n}\r\n\r\nexport class Reactive<T> {\r\n\r\n private initialValue: T;\r\n private value: T;\r\n private id: number;\r\n private options: Options;\r\n private subscriptions: Map<number, Subscription<T>>;\r\n\r\n constructor(value?: T, options?: Options) {\r\n this.id = 0;\r\n if (value !== void 0) {\r\n this.value = value;\r\n this.initialValue = value;\r\n }\r\n this.options = options || {};\r\n this.subscriptions = new Map();\r\n }\r\n\r\n set(value: T): void {\r\n if (this.value === value && !this.options.emitEqual) {\r\n return;\r\n }\r\n this.value = value;\r\n for (const [, sub] of this.subscriptions) {\r\n sub.emit(value);\r\n if (this.value !== value) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n get(): T {\r\n return this.value;\r\n }\r\n\r\n on(func: On<T>): Off {\r\n const id = this.id++;\r\n const subscription: Subscription<T> = {\r\n emit: func,\r\n off: () => {\r\n subscription.emit = () => null;\r\n this.subscriptions.delete(id);\r\n }\r\n };\r\n this.subscriptions.set(id, subscription);\r\n if (this.options.emitOnSubscribe) {\r\n subscription.emit(this.value);\r\n }\r\n return () => subscription.off();\r\n }\r\n\r\n once(func: On<T>): Off {\r\n const off = this.on(v => {\r\n off();\r\n func(v);\r\n });\r\n return off;\r\n }\r\n\r\n reset(): void {\r\n this.set(this.initialValue);\r\n }\r\n\r\n dispose(): void {\r\n this.subscriptions.forEach(sub => sub.off());\r\n }\r\n}\r\n"]}
@@ -1,40 +1,40 @@
1
- import { SETTINGS, DEV_SETTINGS, validate, validateOne, VALIDATORS } from '../inputs/index';
2
- export class Settings {
3
- constructor(settings, devSettings, instanceIndex) {
4
- this.parseInput(settings, SETTINGS);
5
- this.parseInput(devSettings, DEV_SETTINGS);
6
- this.instanceIndex = instanceIndex;
7
- this.initializeDelay = this.getInitializeDelay();
8
- this.viewport = this.getViewport();
9
- // todo: min/max indexes must be ignored if infinite mode is enabled ??
10
- }
11
- parseInput(input, props) {
12
- const result = validate(input, props);
13
- if (!result.isValid) {
14
- throw new Error('Invalid settings');
15
- }
16
- Object.entries(result.params).forEach(([key, par]) => Object.assign(this, { [key]: par.value }));
17
- }
18
- getInitializeDelay() {
19
- let result = 0;
20
- if (this.windowViewport && this.initWindowDelay && !('scrollRestoration' in history)) {
21
- result = this.initWindowDelay;
22
- }
23
- if (this.initDelay > 0) {
24
- result = Math.max(result, this.initDelay);
25
- }
26
- return result;
27
- }
28
- getViewport() {
29
- if (typeof this.viewportElement !== 'function') {
30
- return this.viewportElement;
31
- }
32
- const value = this.viewportElement();
33
- const result = validateOne({ value }, 'value', { validators: [VALIDATORS.ELEMENT] });
34
- if (!result.isValid) {
35
- return null; // fallback to default (null) if Function didn't return HTML element synchronously
36
- }
37
- return result.value;
38
- }
39
- }
1
+ import { SETTINGS, DEV_SETTINGS, validate, validateOne, VALIDATORS } from '../inputs/index';
2
+ export class Settings {
3
+ constructor(settings, devSettings, instanceIndex) {
4
+ this.parseInput(settings, SETTINGS);
5
+ this.parseInput(devSettings, DEV_SETTINGS);
6
+ this.instanceIndex = instanceIndex;
7
+ this.initializeDelay = this.getInitializeDelay();
8
+ this.viewport = this.getViewport();
9
+ // todo: min/max indexes must be ignored if infinite mode is enabled ??
10
+ }
11
+ parseInput(input, props) {
12
+ const result = validate(input, props);
13
+ if (!result.isValid) {
14
+ throw new Error('Invalid settings');
15
+ }
16
+ Object.entries(result.params).forEach(([key, par]) => Object.assign(this, { [key]: par.value }));
17
+ }
18
+ getInitializeDelay() {
19
+ let result = 0;
20
+ if (this.windowViewport && this.initWindowDelay && !('scrollRestoration' in history)) {
21
+ result = this.initWindowDelay;
22
+ }
23
+ if (this.initDelay > 0) {
24
+ result = Math.max(result, this.initDelay);
25
+ }
26
+ return result;
27
+ }
28
+ getViewport() {
29
+ if (typeof this.viewportElement !== 'function') {
30
+ return this.viewportElement;
31
+ }
32
+ const value = this.viewportElement();
33
+ const result = validateOne({ value }, 'value', { validators: [VALIDATORS.ELEMENT] });
34
+ if (!result.isValid) {
35
+ return null; // fallback to default (null) if Function didn't return HTML element synchronously
36
+ }
37
+ return result.value;
38
+ }
39
+ }
40
40
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/classes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAA2B,MAAM,iBAAiB,CAAC;AAGrH,MAAM,OAAO,QAAQ;IAiInB,YACE,QAAqC,EAAE,WAAqC,EAAE,aAAqB;QAEnG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,uEAAuE;IACzE,CAAC;IAED,UAAU,CAAC,KAAiD,EAAE,KAAgC;QAC5F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACrC;QACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CACnD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,mBAAmB,IAAI,OAAO,CAAC,EAAE;YACpF,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3C;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW;QACT,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE;YAC9C,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,OAAO,IAAI,CAAC,CAAC,kFAAkF;SAChG;QACD,OAAO,MAAM,CAAC,KAAoB,CAAC;IACrC,CAAC;CACF","sourcesContent":["import { SETTINGS, DEV_SETTINGS, validate, validateOne, VALIDATORS, SizeStrategy, Direction } from '../inputs/index';\nimport { Settings as ISettings, DevSettings as IDevSettings, ICommonProps, ItemsProcessor } from '../interfaces/index';\n\nexport class Settings<Data = unknown> implements ISettings, IDevSettings {\n\n // user settings\n adapter: boolean;\n startIndex: number;\n minIndex: number;\n maxIndex: number;\n itemSize: number;\n bufferSize: number;\n padding: number;\n infinite: boolean;\n horizontal: boolean;\n windowViewport: boolean;\n viewportElement: HTMLElement | (() => void) | null;\n inverse: boolean; // if true, bwd padding element will have a priority when filling the viewport (if lack of items)\n onBeforeClip: ItemsProcessor | null; // if set, it will be run before clipping items from Buffer after they are hidden\n sizeStrategy: SizeStrategy; // \"average\" | \"frequent\", determines behavior of unknown items\n\n /**\n * Development setting.\n * If true, logging is enabled.\n * Default value: false.\n * @type {boolean}\n */\n debug: boolean; // if true, \n\n /**\n * Development setting.\n * If false, in-memory logging is enabled, Adapter.showLog() method should be called to print the log.\n * Default value: true.\n * @type {boolean}\n */\n immediateLog: boolean;\n\n /**\n * Development setting.\n * If true, time differences will be logged.\n * Default value: false.\n * @type {boolean}\n */\n logTime: boolean;\n\n /**\n * Development setting.\n * If true, process fire/run info will be logged.\n * Default value: false.\n * @type {boolean}\n */\n logProcessRun: boolean;\n\n /**\n * Development setting.\n * If set, scroll event handling is throttled (ms).\n * Default value: 40. Minimal value: 0.\n * @type {number} ms\n */\n throttle: number;\n\n /**\n * Development setting.\n * If set, the Workflow initialization will be postponed (ms).\n * Default value: 1. Minimal value: 0.\n * @type {number} ms\n */\n initDelay: number;\n\n /**\n * Development setting.\n * If set and the entire window is scrollable, the Workflow initialization will be postponed (ms).\n * Default value: 40. Minimal value: 0.\n * @type {number} ms\n */\n initWindowDelay: number;\n\n /**\n * Development setting.\n * If true, item's data will be cached along with item's size and index.\n * Default value: false.\n * @type {boolean}\n */\n cacheData: boolean;\n\n /**\n * Development setting.\n * If true, cache will not be flushed on reload.\n * Default value: false.\n * @type {boolean}\n */\n cacheOnReload: boolean;\n\n /**\n * Development setting.\n * If true, the viewport will receive \"overflowAnchor: none\" css property.\n * Default value: false.\n * @type {boolean}\n */\n dismissOverflowAnchor: boolean;\n\n /**\n * Development setting.\n * Determines the strategy of fixing the difference between estimated and real (rendered) sizes\n * on scroll position adjustments. If set to 'backward', the difference is always resolved in favour of the\n * backward direction: top/left content is fixed and appears in accordance with pre-render expectations.\n * If set to 'forward', both directions could be used, and there is a case when bottom/right content is fixed:\n * new items are to the left of the previously rendered\n * and at least one previously rendered item remains.\n * Default value: 'backward'. Allowed values: 'backward', 'forward'.\n * @type {string}\n */\n directionPriority: Direction;\n\n /**\n * Internal setting. Stores the index of the Scroller instance.\n * @type {number}\n */\n instanceIndex: number;\n\n /**\n * Internal setting. Stores the Workflow initialization delay based on initDelay and initWindowDelay settings.\n * @type {number}\n */\n initializeDelay: number;\n\n /**\n * Internal setting. Stores the viewport based on viewportElement setting (which can be element or function).\n * @type {HTMLElement|null}\n */\n viewport: HTMLElement | null;\n\n constructor(\n settings: ISettings<Data> | undefined, devSettings: IDevSettings | undefined, instanceIndex: number\n ) {\n this.parseInput(settings, SETTINGS);\n this.parseInput(devSettings, DEV_SETTINGS);\n this.instanceIndex = instanceIndex;\n this.initializeDelay = this.getInitializeDelay();\n this.viewport = this.getViewport();\n // todo: min/max indexes must be ignored if infinite mode is enabled ??\n }\n\n parseInput(input: ISettings<Data> | IDevSettings | undefined, props: ICommonProps<PropertyKey>): void {\n const result = validate(input, props);\n if (!result.isValid) {\n throw new Error('Invalid settings');\n }\n Object.entries(result.params).forEach(([key, par]) =>\n Object.assign(this, { [key]: par.value })\n );\n }\n\n getInitializeDelay(): number {\n let result = 0;\n if (this.windowViewport && this.initWindowDelay && !('scrollRestoration' in history)) {\n result = this.initWindowDelay;\n }\n if (this.initDelay > 0) {\n result = Math.max(result, this.initDelay);\n }\n return result;\n }\n\n getViewport(): HTMLElement | null {\n if (typeof this.viewportElement !== 'function') {\n return this.viewportElement;\n }\n const value = this.viewportElement();\n const result = validateOne({ value }, 'value', { validators: [VALIDATORS.ELEMENT] });\n if (!result.isValid) {\n return null; // fallback to default (null) if Function didn't return HTML element synchronously\n }\n return result.value as HTMLElement;\n }\n}\n"]}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/classes/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAA2B,MAAM,iBAAiB,CAAC;AAGrH,MAAM,OAAO,QAAQ;IAiInB,YACE,QAAqC,EAAE,WAAqC,EAAE,aAAqB;QAEnG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnC,uEAAuE;IACzE,CAAC;IAED,UAAU,CAAC,KAAiD,EAAE,KAAgC;QAC5F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;SACrC;QACD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CACnD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED,kBAAkB;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,mBAAmB,IAAI,OAAO,CAAC,EAAE;YACpF,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3C;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW;QACT,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,UAAU,EAAE;YAC9C,OAAO,IAAI,CAAC,eAAe,CAAC;SAC7B;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,OAAO,IAAI,CAAC,CAAC,kFAAkF;SAChG;QACD,OAAO,MAAM,CAAC,KAAoB,CAAC;IACrC,CAAC;CACF","sourcesContent":["import { SETTINGS, DEV_SETTINGS, validate, validateOne, VALIDATORS, SizeStrategy, Direction } from '../inputs/index';\r\nimport { Settings as ISettings, DevSettings as IDevSettings, ICommonProps, ItemsProcessor } from '../interfaces/index';\r\n\r\nexport class Settings<Data = unknown> implements ISettings, IDevSettings {\r\n\r\n // user settings\r\n adapter: boolean;\r\n startIndex: number;\r\n minIndex: number;\r\n maxIndex: number;\r\n itemSize: number;\r\n bufferSize: number;\r\n padding: number;\r\n infinite: boolean;\r\n horizontal: boolean;\r\n windowViewport: boolean;\r\n viewportElement: HTMLElement | (() => void) | null;\r\n inverse: boolean; // if true, bwd padding element will have a priority when filling the viewport (if lack of items)\r\n onBeforeClip: ItemsProcessor | null; // if set, it will be run before clipping items from Buffer after they are hidden\r\n sizeStrategy: SizeStrategy; // \"average\" | \"frequent\", determines behavior of unknown items\r\n\r\n /**\r\n * Development setting.\r\n * If true, logging is enabled.\r\n * Default value: false.\r\n * @type {boolean}\r\n */\r\n debug: boolean; // if true, \r\n\r\n /**\r\n * Development setting.\r\n * If false, in-memory logging is enabled, Adapter.showLog() method should be called to print the log.\r\n * Default value: true.\r\n * @type {boolean}\r\n */\r\n immediateLog: boolean;\r\n\r\n /**\r\n * Development setting.\r\n * If true, time differences will be logged.\r\n * Default value: false.\r\n * @type {boolean}\r\n */\r\n logTime: boolean;\r\n\r\n /**\r\n * Development setting.\r\n * If true, process fire/run info will be logged.\r\n * Default value: false.\r\n * @type {boolean}\r\n */\r\n logProcessRun: boolean;\r\n\r\n /**\r\n * Development setting.\r\n * If set, scroll event handling is throttled (ms).\r\n * Default value: 40. Minimal value: 0.\r\n * @type {number} ms\r\n */\r\n throttle: number;\r\n\r\n /**\r\n * Development setting.\r\n * If set, the Workflow initialization will be postponed (ms).\r\n * Default value: 1. Minimal value: 0.\r\n * @type {number} ms\r\n */\r\n initDelay: number;\r\n\r\n /**\r\n * Development setting.\r\n * If set and the entire window is scrollable, the Workflow initialization will be postponed (ms).\r\n * Default value: 40. Minimal value: 0.\r\n * @type {number} ms\r\n */\r\n initWindowDelay: number;\r\n\r\n /**\r\n * Development setting.\r\n * If true, item's data will be cached along with item's size and index.\r\n * Default value: false.\r\n * @type {boolean}\r\n */\r\n cacheData: boolean;\r\n\r\n /**\r\n * Development setting.\r\n * If true, cache will not be flushed on reload.\r\n * Default value: false.\r\n * @type {boolean}\r\n */\r\n cacheOnReload: boolean;\r\n\r\n /**\r\n * Development setting.\r\n * If true, the viewport will receive \"overflowAnchor: none\" css property.\r\n * Default value: false.\r\n * @type {boolean}\r\n */\r\n dismissOverflowAnchor: boolean;\r\n\r\n /**\r\n * Development setting.\r\n * Determines the strategy of fixing the difference between estimated and real (rendered) sizes\r\n * on scroll position adjustments. If set to 'backward', the difference is always resolved in favour of the\r\n * backward direction: top/left content is fixed and appears in accordance with pre-render expectations.\r\n * If set to 'forward', both directions could be used, and there is a case when bottom/right content is fixed:\r\n * new items are to the left of the previously rendered\r\n * and at least one previously rendered item remains.\r\n * Default value: 'backward'. Allowed values: 'backward', 'forward'.\r\n * @type {string}\r\n */\r\n directionPriority: Direction;\r\n\r\n /**\r\n * Internal setting. Stores the index of the Scroller instance.\r\n * @type {number}\r\n */\r\n instanceIndex: number;\r\n\r\n /**\r\n * Internal setting. Stores the Workflow initialization delay based on initDelay and initWindowDelay settings.\r\n * @type {number}\r\n */\r\n initializeDelay: number;\r\n\r\n /**\r\n * Internal setting. Stores the viewport based on viewportElement setting (which can be element or function).\r\n * @type {HTMLElement|null}\r\n */\r\n viewport: HTMLElement | null;\r\n\r\n constructor(\r\n settings: ISettings<Data> | undefined, devSettings: IDevSettings | undefined, instanceIndex: number\r\n ) {\r\n this.parseInput(settings, SETTINGS);\r\n this.parseInput(devSettings, DEV_SETTINGS);\r\n this.instanceIndex = instanceIndex;\r\n this.initializeDelay = this.getInitializeDelay();\r\n this.viewport = this.getViewport();\r\n // todo: min/max indexes must be ignored if infinite mode is enabled ??\r\n }\r\n\r\n parseInput(input: ISettings<Data> | IDevSettings | undefined, props: ICommonProps<PropertyKey>): void {\r\n const result = validate(input, props);\r\n if (!result.isValid) {\r\n throw new Error('Invalid settings');\r\n }\r\n Object.entries(result.params).forEach(([key, par]) =>\r\n Object.assign(this, { [key]: par.value })\r\n );\r\n }\r\n\r\n getInitializeDelay(): number {\r\n let result = 0;\r\n if (this.windowViewport && this.initWindowDelay && !('scrollRestoration' in history)) {\r\n result = this.initWindowDelay;\r\n }\r\n if (this.initDelay > 0) {\r\n result = Math.max(result, this.initDelay);\r\n }\r\n return result;\r\n }\r\n\r\n getViewport(): HTMLElement | null {\r\n if (typeof this.viewportElement !== 'function') {\r\n return this.viewportElement;\r\n }\r\n const value = this.viewportElement();\r\n const result = validateOne({ value }, 'value', { validators: [VALIDATORS.ELEMENT] });\r\n if (!result.isValid) {\r\n return null; // fallback to default (null) if Function didn't return HTML element synchronously\r\n }\r\n return result.value as HTMLElement;\r\n }\r\n}\r\n"]}
@@ -1,17 +1,17 @@
1
- export class ClipModel {
2
- constructor() {
3
- this.callCount = 0;
4
- this.reset();
5
- }
6
- get force() {
7
- return this.forceForward || this.forceBackward;
8
- }
9
- reset(force) {
10
- this.doClip = false;
11
- if (!force) {
12
- this.forceForward = false;
13
- this.forceBackward = false;
14
- }
15
- }
16
- }
1
+ export class ClipModel {
2
+ constructor() {
3
+ this.callCount = 0;
4
+ this.reset();
5
+ }
6
+ get force() {
7
+ return this.forceForward || this.forceBackward;
8
+ }
9
+ reset(force) {
10
+ this.doClip = false;
11
+ if (!force) {
12
+ this.forceForward = false;
13
+ this.forceBackward = false;
14
+ }
15
+ }
16
+ }
17
17
  //# sourceMappingURL=clip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../../src/classes/state/clip.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IAUpB;QACE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAPD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAOD,KAAK,CAAC,KAAe;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;IACH,CAAC;CAEF","sourcesContent":["export class ClipModel {\n doClip: boolean;\n callCount: number;\n forceForward: boolean;\n forceBackward: boolean;\n\n get force(): boolean {\n return this.forceForward || this.forceBackward;\n }\n\n constructor() {\n this.callCount = 0;\n this.reset();\n }\n\n reset(force?: boolean): void {\n this.doClip = false;\n if (!force) {\n this.forceForward = false;\n this.forceBackward = false;\n }\n }\n\n}\n"]}
1
+ {"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../../src/classes/state/clip.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAS;IAUpB;QACE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAPD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAOD,KAAK,CAAC,KAAe;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B;IACH,CAAC;CAEF","sourcesContent":["export class ClipModel {\r\n doClip: boolean;\r\n callCount: number;\r\n forceForward: boolean;\r\n forceBackward: boolean;\r\n\r\n get force(): boolean {\r\n return this.forceForward || this.forceBackward;\r\n }\r\n\r\n constructor() {\r\n this.callCount = 0;\r\n this.reset();\r\n }\r\n\r\n reset(force?: boolean): void {\r\n this.doClip = false;\r\n if (!force) {\r\n this.forceForward = false;\r\n this.forceBackward = false;\r\n }\r\n }\r\n\r\n}\r\n"]}
@@ -1,61 +1,61 @@
1
- import { Reactive } from '../reactive';
2
- class InnerLoopModel {
3
- constructor(total) {
4
- this.total = total;
5
- this.isInitial = false;
6
- this.busy = new Reactive(false);
7
- }
8
- get first() {
9
- return this.count === 0;
10
- }
11
- done() {
12
- this.isInitial = false;
13
- this.count++;
14
- this.total++;
15
- this.busy.set(false);
16
- }
17
- start() {
18
- this.busy.set(true);
19
- }
20
- dispose() {
21
- this.busy.dispose();
22
- }
23
- }
24
- export class WorkflowCycleModel {
25
- constructor(instanceIndex, cycle) {
26
- const cycleCount = cycle ? cycle.count : 1;
27
- const loopCount = cycle ? cycle.innerLoop.count : 0;
28
- this.instanceIndex = instanceIndex;
29
- this.innerLoop = new InnerLoopModel(loopCount);
30
- this.interrupter = null;
31
- this.busy = new Reactive(false);
32
- this.end(cycleCount);
33
- }
34
- get loopId() {
35
- return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;
36
- }
37
- get loopIdNext() {
38
- return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;
39
- }
40
- start(isInitial, initiator) {
41
- this.isInitial = isInitial;
42
- this.initiator = initiator;
43
- this.innerLoop.isInitial = isInitial;
44
- this.innerLoop.count = 0;
45
- this.interrupter = null;
46
- this.busy.set(true);
47
- }
48
- end(count) {
49
- this.count = count;
50
- this.isInitial = false;
51
- this.busy.set(false);
52
- }
53
- dispose(forever) {
54
- if (forever) {
55
- // otherwise the value will be persisted during re-instantiation
56
- this.busy.dispose();
57
- }
58
- this.innerLoop.dispose();
59
- }
60
- }
1
+ import { Reactive } from '../reactive';
2
+ class InnerLoopModel {
3
+ constructor(total) {
4
+ this.total = total;
5
+ this.isInitial = false;
6
+ this.busy = new Reactive(false);
7
+ }
8
+ get first() {
9
+ return this.count === 0;
10
+ }
11
+ done() {
12
+ this.isInitial = false;
13
+ this.count++;
14
+ this.total++;
15
+ this.busy.set(false);
16
+ }
17
+ start() {
18
+ this.busy.set(true);
19
+ }
20
+ dispose() {
21
+ this.busy.dispose();
22
+ }
23
+ }
24
+ export class WorkflowCycleModel {
25
+ constructor(instanceIndex, cycle) {
26
+ const cycleCount = cycle ? cycle.count : 1;
27
+ const loopCount = cycle ? cycle.innerLoop.count : 0;
28
+ this.instanceIndex = instanceIndex;
29
+ this.innerLoop = new InnerLoopModel(loopCount);
30
+ this.interrupter = null;
31
+ this.busy = new Reactive(false);
32
+ this.end(cycleCount);
33
+ }
34
+ get loopId() {
35
+ return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;
36
+ }
37
+ get loopIdNext() {
38
+ return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;
39
+ }
40
+ start(isInitial, initiator) {
41
+ this.isInitial = isInitial;
42
+ this.initiator = initiator;
43
+ this.innerLoop.isInitial = isInitial;
44
+ this.innerLoop.count = 0;
45
+ this.interrupter = null;
46
+ this.busy.set(true);
47
+ }
48
+ end(count) {
49
+ this.count = count;
50
+ this.isInitial = false;
51
+ this.busy.set(false);
52
+ }
53
+ dispose(forever) {
54
+ if (forever) {
55
+ // otherwise the value will be persisted during re-instantiation
56
+ this.busy.dispose();
57
+ }
58
+ this.innerLoop.dispose();
59
+ }
60
+ }
61
61
  //# sourceMappingURL=cycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,cAAc;IAUlB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAQD,IAAI;QACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAiB7B,YAAY,aAAqB,EAAE,KAA0B;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAjBD,IAAI,MAAM;QACR,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IAaD,KAAK,CAAC,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.isInitial = false;\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.end(cycleCount);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n end(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
1
+ {"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,cAAc;IAUlB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAQD,IAAI;QACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAiB7B,YAAY,aAAqB,EAAE,KAA0B;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAjBD,IAAI,MAAM;QACR,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IAaD,KAAK,CAAC,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { ProcessName } from '../../interfaces/index';\r\nimport { Reactive } from '../reactive';\r\n\r\nclass InnerLoopModel {\r\n total: number;\r\n count: number;\r\n isInitial: boolean;\r\n busy: Reactive<boolean>;\r\n\r\n get first(): boolean {\r\n return this.count === 0;\r\n }\r\n\r\n constructor(total: number) {\r\n this.total = total;\r\n this.isInitial = false;\r\n this.busy = new Reactive<boolean>(false);\r\n }\r\n\r\n done() {\r\n this.isInitial = false;\r\n this.count++;\r\n this.total++;\r\n this.busy.set(false);\r\n }\r\n\r\n start() {\r\n this.busy.set(true);\r\n }\r\n\r\n dispose() {\r\n this.busy.dispose();\r\n }\r\n}\r\n\r\nexport class WorkflowCycleModel {\r\n instanceIndex: number;\r\n count: number;\r\n isInitial: boolean;\r\n initiator: ProcessName;\r\n innerLoop: InnerLoopModel;\r\n interrupter: ProcessName | null;\r\n busy: Reactive<boolean>;\r\n\r\n get loopId(): string {\r\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\r\n }\r\n\r\n get loopIdNext(): string {\r\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\r\n }\r\n\r\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\r\n const cycleCount = cycle ? cycle.count : 1;\r\n const loopCount = cycle ? cycle.innerLoop.count : 0;\r\n\r\n this.instanceIndex = instanceIndex;\r\n this.innerLoop = new InnerLoopModel(loopCount);\r\n this.interrupter = null;\r\n this.busy = new Reactive<boolean>(false);\r\n this.end(cycleCount);\r\n }\r\n\r\n start(isInitial: boolean, initiator: ProcessName): void {\r\n this.isInitial = isInitial;\r\n this.initiator = initiator;\r\n this.innerLoop.isInitial = isInitial;\r\n this.innerLoop.count = 0;\r\n this.interrupter = null;\r\n this.busy.set(true);\r\n }\r\n\r\n end(count: number): void {\r\n this.count = count;\r\n this.isInitial = false;\r\n this.busy.set(false);\r\n }\r\n\r\n dispose(forever?: boolean): void {\r\n if (forever) {\r\n // otherwise the value will be persisted during re-instantiation\r\n this.busy.dispose();\r\n }\r\n this.innerLoop.dispose();\r\n }\r\n}\r\n"]}