vscroll 1.6.3 → 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 (315) hide show
  1. package/dist/bundles/vscroll.esm5.js +5704 -5705
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +5193 -5194
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +5712 -5714
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/adapter/context.js +43 -43
  14. package/dist/esm2015/classes/adapter/context.js.map +1 -1
  15. package/dist/esm2015/classes/adapter/props.js +300 -300
  16. package/dist/esm2015/classes/adapter/wanted.js +28 -28
  17. package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
  18. package/dist/esm2015/classes/adapter.js +487 -487
  19. package/dist/esm2015/classes/adapter.js.map +1 -1
  20. package/dist/esm2015/classes/buffer/cache.js +246 -246
  21. package/dist/esm2015/classes/buffer/cache.js.map +1 -1
  22. package/dist/esm2015/classes/buffer/checkCall.js +48 -48
  23. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  24. package/dist/esm2015/classes/buffer/defaultSize.js +127 -127
  25. package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
  26. package/dist/esm2015/classes/buffer.js +342 -342
  27. package/dist/esm2015/classes/buffer.js.map +1 -1
  28. package/dist/esm2015/classes/datasource.js +23 -24
  29. package/dist/esm2015/classes/datasource.js.map +1 -1
  30. package/dist/esm2015/classes/domRoutines.js +160 -160
  31. package/dist/esm2015/classes/domRoutines.js.map +1 -1
  32. package/dist/esm2015/classes/item.js +61 -61
  33. package/dist/esm2015/classes/item.js.map +1 -1
  34. package/dist/esm2015/classes/logger.js +186 -186
  35. package/dist/esm2015/classes/logger.js.map +1 -1
  36. package/dist/esm2015/classes/paddings.js +72 -72
  37. package/dist/esm2015/classes/paddings.js.map +1 -1
  38. package/dist/esm2015/classes/reactive.js +54 -54
  39. package/dist/esm2015/classes/reactive.js.map +1 -1
  40. package/dist/esm2015/classes/settings.js +39 -39
  41. package/dist/esm2015/classes/settings.js.map +1 -1
  42. package/dist/esm2015/classes/state/clip.js +16 -16
  43. package/dist/esm2015/classes/state/clip.js.map +1 -1
  44. package/dist/esm2015/classes/state/cycle.js +60 -60
  45. package/dist/esm2015/classes/state/cycle.js.map +1 -1
  46. package/dist/esm2015/classes/state/fetch.js +122 -122
  47. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  48. package/dist/esm2015/classes/state/render.js +14 -14
  49. package/dist/esm2015/classes/state/scroll.js +30 -30
  50. package/dist/esm2015/classes/state/scroll.js.map +1 -1
  51. package/dist/esm2015/classes/state.js +62 -62
  52. package/dist/esm2015/classes/state.js.map +1 -1
  53. package/dist/esm2015/classes/viewport.js +72 -72
  54. package/dist/esm2015/classes/viewport.js.map +1 -1
  55. package/dist/esm2015/index.js +9 -9
  56. package/dist/esm2015/inputs/adapter.js +242 -242
  57. package/dist/esm2015/inputs/common.js +11 -11
  58. package/dist/esm2015/inputs/datasource.js +20 -20
  59. package/dist/esm2015/inputs/index.js +7 -7
  60. package/dist/esm2015/inputs/settings.js +146 -146
  61. package/dist/esm2015/inputs/validation.js +371 -374
  62. package/dist/esm2015/inputs/validation.js.map +1 -1
  63. package/dist/esm2015/inputs/workflow.js +30 -30
  64. package/dist/esm2015/interfaces/adapter.js +1 -1
  65. package/dist/esm2015/interfaces/datasource.js +1 -1
  66. package/dist/esm2015/interfaces/index.js +1 -1
  67. package/dist/esm2015/interfaces/item.js +1 -1
  68. package/dist/esm2015/interfaces/process.js +1 -1
  69. package/dist/esm2015/interfaces/process.js.map +1 -1
  70. package/dist/esm2015/interfaces/routines.js +1 -1
  71. package/dist/esm2015/interfaces/settings.js +1 -1
  72. package/dist/esm2015/interfaces/state.js +1 -1
  73. package/dist/esm2015/interfaces/validation.js +1 -1
  74. package/dist/esm2015/interfaces/workflow.js +1 -1
  75. package/dist/esm2015/processes/adapter/append.js +36 -36
  76. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  77. package/dist/esm2015/processes/adapter/check.js +32 -32
  78. package/dist/esm2015/processes/adapter/check.js.map +1 -1
  79. package/dist/esm2015/processes/adapter/clip.js +12 -12
  80. package/dist/esm2015/processes/adapter/fix.js +77 -77
  81. package/dist/esm2015/processes/adapter/fix.js.map +1 -1
  82. package/dist/esm2015/processes/adapter/insert.js +73 -73
  83. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  84. package/dist/esm2015/processes/adapter/pause.js +22 -22
  85. package/dist/esm2015/processes/adapter/pause.js.map +1 -1
  86. package/dist/esm2015/processes/adapter/reload.js +19 -19
  87. package/dist/esm2015/processes/adapter/reload.js.map +1 -1
  88. package/dist/esm2015/processes/adapter/remove.js +102 -102
  89. package/dist/esm2015/processes/adapter/remove.js.map +1 -1
  90. package/dist/esm2015/processes/adapter/replace.js +39 -39
  91. package/dist/esm2015/processes/adapter/replace.js.map +1 -1
  92. package/dist/esm2015/processes/adapter/reset.js +35 -35
  93. package/dist/esm2015/processes/adapter/reset.js.map +1 -1
  94. package/dist/esm2015/processes/adapter/update.js +43 -43
  95. package/dist/esm2015/processes/adapter/update.js.map +1 -1
  96. package/dist/esm2015/processes/adjust.js +141 -141
  97. package/dist/esm2015/processes/adjust.js.map +1 -1
  98. package/dist/esm2015/processes/clip.js +49 -49
  99. package/dist/esm2015/processes/clip.js.map +1 -1
  100. package/dist/esm2015/processes/end.js +52 -52
  101. package/dist/esm2015/processes/end.js.map +1 -1
  102. package/dist/esm2015/processes/fetch.js +91 -91
  103. package/dist/esm2015/processes/fetch.js.map +1 -1
  104. package/dist/esm2015/processes/index.js +24 -24
  105. package/dist/esm2015/processes/init.js +14 -14
  106. package/dist/esm2015/processes/misc/base.js +30 -30
  107. package/dist/esm2015/processes/misc/base.js.map +1 -1
  108. package/dist/esm2015/processes/misc/enums.js +36 -36
  109. package/dist/esm2015/processes/misc/index.js +2 -2
  110. package/dist/esm2015/processes/postFetch.js +65 -65
  111. package/dist/esm2015/processes/postFetch.js.map +1 -1
  112. package/dist/esm2015/processes/preClip.js +85 -85
  113. package/dist/esm2015/processes/preClip.js.map +1 -1
  114. package/dist/esm2015/processes/preFetch.js +240 -240
  115. package/dist/esm2015/processes/preFetch.js.map +1 -1
  116. package/dist/esm2015/processes/render.js +54 -54
  117. package/dist/esm2015/processes/render.js.map +1 -1
  118. package/dist/esm2015/processes/scroll.js +97 -97
  119. package/dist/esm2015/processes/scroll.js.map +1 -1
  120. package/dist/esm2015/processes/start.js +11 -11
  121. package/dist/esm2015/scroller.js +86 -86
  122. package/dist/esm2015/scroller.js.map +1 -1
  123. package/dist/esm2015/version.js +4 -4
  124. package/dist/esm2015/version.js.map +1 -1
  125. package/dist/esm2015/workflow-transducer.js +218 -218
  126. package/dist/esm2015/workflow-transducer.js.map +1 -1
  127. package/dist/esm2015/workflow.js +174 -174
  128. package/dist/esm2015/workflow.js.map +1 -1
  129. package/dist/esm5/classes/adapter/context.js +50 -50
  130. package/dist/esm5/classes/adapter/context.js.map +1 -1
  131. package/dist/esm5/classes/adapter/props.js +300 -300
  132. package/dist/esm5/classes/adapter/wanted.js +29 -29
  133. package/dist/esm5/classes/adapter/wanted.js.map +1 -1
  134. package/dist/esm5/classes/adapter.js +535 -535
  135. package/dist/esm5/classes/adapter.js.map +1 -1
  136. package/dist/esm5/classes/buffer/cache.js +260 -260
  137. package/dist/esm5/classes/buffer/cache.js.map +1 -1
  138. package/dist/esm5/classes/buffer/checkCall.js +56 -56
  139. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  140. package/dist/esm5/classes/buffer/defaultSize.js +145 -145
  141. package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
  142. package/dist/esm5/classes/buffer.js +409 -409
  143. package/dist/esm5/classes/buffer.js.map +1 -1
  144. package/dist/esm5/classes/datasource.js +30 -31
  145. package/dist/esm5/classes/datasource.js.map +1 -1
  146. package/dist/esm5/classes/domRoutines.js +165 -165
  147. package/dist/esm5/classes/domRoutines.js.map +1 -1
  148. package/dist/esm5/classes/item.js +76 -76
  149. package/dist/esm5/classes/item.js.map +1 -1
  150. package/dist/esm5/classes/logger.js +210 -210
  151. package/dist/esm5/classes/logger.js.map +1 -1
  152. package/dist/esm5/classes/paddings.js +80 -80
  153. package/dist/esm5/classes/paddings.js.map +1 -1
  154. package/dist/esm5/classes/reactive.js +69 -69
  155. package/dist/esm5/classes/reactive.js.map +1 -1
  156. package/dist/esm5/classes/settings.js +47 -47
  157. package/dist/esm5/classes/settings.js.map +1 -1
  158. package/dist/esm5/classes/state/clip.js +22 -22
  159. package/dist/esm5/classes/state/clip.js.map +1 -1
  160. package/dist/esm5/classes/state/cycle.js +75 -75
  161. package/dist/esm5/classes/state/cycle.js.map +1 -1
  162. package/dist/esm5/classes/state/fetch.js +148 -148
  163. package/dist/esm5/classes/state/fetch.js.map +1 -1
  164. package/dist/esm5/classes/state/render.js +20 -20
  165. package/dist/esm5/classes/state/scroll.js +32 -32
  166. package/dist/esm5/classes/state/scroll.js.map +1 -1
  167. package/dist/esm5/classes/state.js +69 -69
  168. package/dist/esm5/classes/state.js.map +1 -1
  169. package/dist/esm5/classes/viewport.js +79 -79
  170. package/dist/esm5/classes/viewport.js.map +1 -1
  171. package/dist/esm5/index.js +9 -9
  172. package/dist/esm5/inputs/adapter.js +243 -243
  173. package/dist/esm5/inputs/common.js +11 -11
  174. package/dist/esm5/inputs/datasource.js +21 -21
  175. package/dist/esm5/inputs/index.js +7 -7
  176. package/dist/esm5/inputs/settings.js +147 -147
  177. package/dist/esm5/inputs/validation.js +393 -396
  178. package/dist/esm5/inputs/validation.js.map +1 -1
  179. package/dist/esm5/inputs/workflow.js +31 -31
  180. package/dist/esm5/interfaces/adapter.js +1 -1
  181. package/dist/esm5/interfaces/datasource.js +1 -1
  182. package/dist/esm5/interfaces/index.js +1 -1
  183. package/dist/esm5/interfaces/item.js +1 -1
  184. package/dist/esm5/interfaces/process.js +1 -1
  185. package/dist/esm5/interfaces/process.js.map +1 -1
  186. package/dist/esm5/interfaces/routines.js +1 -1
  187. package/dist/esm5/interfaces/settings.js +1 -1
  188. package/dist/esm5/interfaces/state.js +1 -1
  189. package/dist/esm5/interfaces/validation.js +1 -1
  190. package/dist/esm5/interfaces/workflow.js +1 -1
  191. package/dist/esm5/processes/adapter/append.js +44 -44
  192. package/dist/esm5/processes/adapter/append.js.map +1 -1
  193. package/dist/esm5/processes/adapter/check.js +39 -39
  194. package/dist/esm5/processes/adapter/check.js.map +1 -1
  195. package/dist/esm5/processes/adapter/clip.js +19 -19
  196. package/dist/esm5/processes/adapter/fix.js +89 -89
  197. package/dist/esm5/processes/adapter/fix.js.map +1 -1
  198. package/dist/esm5/processes/adapter/insert.js +81 -81
  199. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  200. package/dist/esm5/processes/adapter/pause.js +29 -29
  201. package/dist/esm5/processes/adapter/pause.js.map +1 -1
  202. package/dist/esm5/processes/adapter/reload.js +26 -26
  203. package/dist/esm5/processes/adapter/reload.js.map +1 -1
  204. package/dist/esm5/processes/adapter/remove.js +115 -115
  205. package/dist/esm5/processes/adapter/remove.js.map +1 -1
  206. package/dist/esm5/processes/adapter/replace.js +47 -47
  207. package/dist/esm5/processes/adapter/replace.js.map +1 -1
  208. package/dist/esm5/processes/adapter/reset.js +42 -42
  209. package/dist/esm5/processes/adapter/reset.js.map +1 -1
  210. package/dist/esm5/processes/adapter/update.js +59 -59
  211. package/dist/esm5/processes/adapter/update.js.map +1 -1
  212. package/dist/esm5/processes/adjust.js +152 -152
  213. package/dist/esm5/processes/adjust.js.map +1 -1
  214. package/dist/esm5/processes/clip.js +60 -60
  215. package/dist/esm5/processes/clip.js.map +1 -1
  216. package/dist/esm5/processes/end.js +63 -63
  217. package/dist/esm5/processes/end.js.map +1 -1
  218. package/dist/esm5/processes/fetch.js +102 -102
  219. package/dist/esm5/processes/fetch.js.map +1 -1
  220. package/dist/esm5/processes/index.js +24 -24
  221. package/dist/esm5/processes/init.js +21 -21
  222. package/dist/esm5/processes/misc/base.js +44 -44
  223. package/dist/esm5/processes/misc/base.js.map +1 -1
  224. package/dist/esm5/processes/misc/enums.js +36 -36
  225. package/dist/esm5/processes/misc/index.js +2 -2
  226. package/dist/esm5/processes/postFetch.js +74 -74
  227. package/dist/esm5/processes/postFetch.js.map +1 -1
  228. package/dist/esm5/processes/preClip.js +94 -94
  229. package/dist/esm5/processes/preClip.js.map +1 -1
  230. package/dist/esm5/processes/preFetch.js +247 -247
  231. package/dist/esm5/processes/preFetch.js.map +1 -1
  232. package/dist/esm5/processes/render.js +63 -63
  233. package/dist/esm5/processes/render.js.map +1 -1
  234. package/dist/esm5/processes/scroll.js +107 -107
  235. package/dist/esm5/processes/scroll.js.map +1 -1
  236. package/dist/esm5/processes/start.js +18 -18
  237. package/dist/esm5/scroller.js +100 -100
  238. package/dist/esm5/scroller.js.map +1 -1
  239. package/dist/esm5/version.js +4 -4
  240. package/dist/esm5/version.js.map +1 -1
  241. package/dist/esm5/workflow-transducer.js +220 -220
  242. package/dist/esm5/workflow-transducer.js.map +1 -1
  243. package/dist/esm5/workflow.js +198 -198
  244. package/dist/esm5/workflow.js.map +1 -1
  245. package/dist/typings/classes/adapter/context.d.ts +4 -4
  246. package/dist/typings/classes/adapter/props.d.ts +52 -52
  247. package/dist/typings/classes/adapter/wanted.d.ts +14 -14
  248. package/dist/typings/classes/adapter.d.ts +79 -79
  249. package/dist/typings/classes/buffer/cache.d.ts +95 -95
  250. package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
  251. package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
  252. package/dist/typings/classes/buffer.d.ts +64 -64
  253. package/dist/typings/classes/datasource.d.ts +11 -11
  254. package/dist/typings/classes/domRoutines.d.ts +36 -36
  255. package/dist/typings/classes/item.d.ts +28 -28
  256. package/dist/typings/classes/logger.d.ts +28 -28
  257. package/dist/typings/classes/paddings.d.ts +22 -22
  258. package/dist/typings/classes/reactive.d.ts +21 -21
  259. package/dist/typings/classes/settings.d.ts +119 -119
  260. package/dist/typings/classes/state/clip.d.ts +9 -9
  261. package/dist/typings/classes/state/cycle.d.ts +29 -29
  262. package/dist/typings/classes/state/fetch.d.ts +62 -62
  263. package/dist/typings/classes/state/render.d.ts +9 -9
  264. package/dist/typings/classes/state/scroll.d.ts +16 -16
  265. package/dist/typings/classes/state.d.ts +29 -29
  266. package/dist/typings/classes/viewport.d.ts +32 -32
  267. package/dist/typings/index.d.ts +10 -10
  268. package/dist/typings/inputs/adapter.d.ts +5 -5
  269. package/dist/typings/inputs/common.d.ts +9 -9
  270. package/dist/typings/inputs/datasource.d.ts +7 -7
  271. package/dist/typings/inputs/index.d.ts +7 -7
  272. package/dist/typings/inputs/settings.d.ts +41 -41
  273. package/dist/typings/inputs/validation.d.ts +82 -83
  274. package/dist/typings/inputs/workflow.d.ts +9 -9
  275. package/dist/typings/interfaces/adapter.d.ts +164 -164
  276. package/dist/typings/interfaces/datasource.d.ts +28 -28
  277. package/dist/typings/interfaces/index.d.ts +10 -10
  278. package/dist/typings/interfaces/item.d.ts +8 -8
  279. package/dist/typings/interfaces/process.d.ts +35 -35
  280. package/dist/typings/interfaces/routines.d.ts +166 -166
  281. package/dist/typings/interfaces/settings.d.ts +31 -31
  282. package/dist/typings/interfaces/state.d.ts +24 -24
  283. package/dist/typings/interfaces/validation.d.ts +33 -33
  284. package/dist/typings/interfaces/workflow.d.ts +53 -53
  285. package/dist/typings/processes/adapter/append.d.ts +14 -14
  286. package/dist/typings/processes/adapter/check.d.ts +6 -6
  287. package/dist/typings/processes/adapter/clip.d.ts +7 -7
  288. package/dist/typings/processes/adapter/fix.d.ts +13 -13
  289. package/dist/typings/processes/adapter/insert.d.ts +11 -11
  290. package/dist/typings/processes/adapter/pause.d.ts +8 -8
  291. package/dist/typings/processes/adapter/reload.d.ts +6 -6
  292. package/dist/typings/processes/adapter/remove.d.ts +11 -11
  293. package/dist/typings/processes/adapter/replace.d.ts +8 -8
  294. package/dist/typings/processes/adapter/reset.d.ts +7 -7
  295. package/dist/typings/processes/adapter/update.d.ts +8 -8
  296. package/dist/typings/processes/adjust.d.ts +10 -10
  297. package/dist/typings/processes/clip.d.ts +7 -7
  298. package/dist/typings/processes/end.d.ts +10 -10
  299. package/dist/typings/processes/fetch.d.ts +18 -18
  300. package/dist/typings/processes/index.d.ts +24 -24
  301. package/dist/typings/processes/init.d.ts +7 -7
  302. package/dist/typings/processes/misc/base.d.ts +4 -4
  303. package/dist/typings/processes/misc/enums.d.ts +33 -33
  304. package/dist/typings/processes/misc/index.d.ts +2 -2
  305. package/dist/typings/processes/postFetch.d.ts +8 -8
  306. package/dist/typings/processes/preClip.d.ts +12 -12
  307. package/dist/typings/processes/preFetch.d.ts +17 -17
  308. package/dist/typings/processes/render.d.ts +9 -9
  309. package/dist/typings/processes/scroll.d.ts +13 -13
  310. package/dist/typings/processes/start.d.ts +6 -6
  311. package/dist/typings/scroller.d.ts +26 -26
  312. package/dist/typings/version.d.ts +5 -5
  313. package/dist/typings/workflow-transducer.d.ts +2 -2
  314. package/dist/typings/workflow.d.ts +29 -29
  315. package/package.json +19 -18
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/inputs/validation.ts"],"names":[],"mappings":"AAUA,MAAM,CAAN,IAAY,aAiBX;AAjBD,WAAY,aAAa;IACvB,4CAA2B,CAAA;IAC3B,+CAA8B,CAAA;IAC9B,oEAAmD,CAAA;IACnD,mFAAkE,CAAA;IAClE,8DAA6C,CAAA;IAC7C,8CAA6B,CAAA;IAC7B,6CAA4B,CAAA;IAC5B,oDAAmC,CAAA;IACnC,gDAA+B,CAAA;IAC/B,kEAAiD,CAAA;IACjD,kFAAiE,CAAA;IACjE,6EAA4D,CAAA;IAC5D,4EAA2D,CAAA;IAC3D,8EAA6D,CAAA;IAC7D,0EAAyD,CAAA;IACzD,oDAAmC,CAAA;AACrC,CAAC,EAjBW,aAAa,KAAb,aAAa,QAiBxB;AAED,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAE,IAAe,EAAE,EAAE,CACvD,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAEzF,MAAM,SAAS,GAAG,CAAC,KAAc,EAAU,EAAE,CAC3C,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC;IACtE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;IACf,CAAC,CAAC,GAAG,CAAC;AAEV,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAkB,EAAE;IAClD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KACnC;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAc,EAAkB,EAAE;IACnD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,WAAW,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACpC;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAkB,EAAE;IAC5D,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC3B,WAAW,GAAG,KAAK,CAAC;KACrB;SAAM;QACL,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3C;IACD,IAAI,KAAK,KAAK,WAAW,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;KAC7C;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,QAAkB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAkB,EAAE;IAC9F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,IAAI,WAAW,GAAG,MAAM,CAAC,KAAe,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,WAAW,GAAG,KAAK,EAAE;QACvB,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE;aAAM;YACL,WAAW,GAAG,KAAK,CAAC;SACrB;KACF;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAc,EAAkB,EAAE;IACnD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,KAAK,KAAK,MAAM,EAAE;QACpB,WAAW,GAAG,IAAI,CAAC;KACpB;SAAM,IAAI,KAAK,KAAK,OAAO,EAAE;QAC5B,WAAW,GAAG,KAAK,CAAC;KACrB;IACD,IAAI,OAAO,WAAW,KAAK,SAAS,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACpC;IACD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAkB,EAAE;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,EAAE;QACzE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KACnC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAkB,EAAE;IACvD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,EAAE;QAC/D,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACpC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAkB,EAAE;IACpD,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACzB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpC,WAAW,GAAG,EAAE,CAAC;KAClB;SAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;KACzE;SAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;gBAC7E,MAAM;aACP;SACF;KACF;IACD,OAAO,EAAE,KAAK,EAAE,WAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3F,CAAC,CAAC;AAIF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAkB,EAAE;IACpD,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KACrC;IACD,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE;IACzE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACrB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAK,KAAc,CAAC,MAAM,KAAK,SAAS,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5E;IACD,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAkB,EAAE;IAChG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACrB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAK,KAAc,CAAC,MAAM,GAAG,SAAS,EAAE;QACtC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5E;IACD,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAAC,CAAC,KAAc,EAAkB,EAAE;IACnG,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;QACnB,OAAO,MAAM,CAAC;KACf;IACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACrB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAK,KAAc,CAAC,MAAM,GAAG,IAAI,IAAK,KAAc,CAAC,MAAM,GAAG,EAAE,EAAE;QAChE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;KACtF;IACD,OAAO,EAAE,KAAK,EAAE,KAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAgB,EAAE,IAAa,EAAE,EAAE,CAAC,CAAC,KAAc,EAAE,OAA4B,EAAkB,EAAE;IACpH,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC;IAC/B,IAAI,cAAc,GAAG,CAAC,KAAK,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;IACpE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAC5C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC3C;SAAM;QACL,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC;gBAC1E,MAAM;aACP;YACD,MAAM,gBAAgB,GAAG,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACzF,IAAI,KAAK,IAAI,gBAAgB,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,cAAc,CAAC,CAAC;gBAC7E,MAAM;aACP;YACD,IAAI,cAAc,IAAI,gBAAgB,EAAE;gBACtC,cAAc,GAAG,KAAK,CAAC;aACxB;SACF;QACD,IAAI,IAAI,IAAI,cAAc,EAAE;YAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACnD;KACF;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,UAAwB,EAAE,EAAE,CAAC,CAAC,KAAc,EAAkB,EAAE;IAC5E,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE;QACnE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;KACvD;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,IAAK,YAAgB;AAArB,WAAK,YAAY;AAAG,CAAC,EAAhB,YAAY,KAAZ,YAAY,QAAI;AAGrB,MAAM,MAAM,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,CAAC,KAAc,EAAkB,EAAE;IACjE,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAsB,CAAC,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3E;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,aAAa,CAAC,MAAM;QAC1B,MAAM,EAAE,QAAQ;KACjB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,aAAa,CAAC,OAAO;QAC3B,MAAM,EAAE,SAAS;KAClB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,aAAa,CAAC,gBAAgB;QACpC,MAAM,EAAE,kBAAkB;KAC3B;IACD,aAAa,EAAE,CAAC,KAAa,EAAE,QAAkB,EAAc,EAAE,CAAC,CAAC;QACjE,IAAI,EAAE,aAAa,CAAC,WAAW;QAC/B,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;KACvC,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,aAAa,CAAC,OAAO;QAC3B,MAAM,EAAE,SAAS;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,aAAa,CAAC,MAAM;QAC1B,MAAM,EAAE,QAAQ;KACjB;IACD,SAAS,EAAE;QACT,IAAI,EAAE,aAAa,CAAC,QAAQ;QAC5B,MAAM,EAAE,UAAU;KACnB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,aAAa,CAAC,OAAO;QAC3B,MAAM,EAAE,aAAa;KACtB;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,aAAa,CAAC,QAAQ;QAC5B,MAAM,EAAE,UAAU;KACnB;IACD,qBAAqB,EAAE,CAAC,KAAa,EAAc,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,aAAa,CAAC,gBAAgB;QACpC,MAAM,EAAE,wBAAwB,CAAC,KAAK,CAAC;KACxC,CAAC;IACF,8BAA8B,EAAE,CAAC,KAAa,EAAc,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,aAAa,CAAC,uBAAuB;QAC3C,MAAM,EAAE,+BAA+B,CAAC,KAAK,CAAC;KAC/C,CAAC;IACF,0BAA0B,EAAE,CAAC,IAAY,EAAE,EAAU,EAAc,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,aAAa,CAAC,mBAAmB;QACvC,MAAM,EAAE,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC;KAC9C,CAAC;IACF,UAAU,EAAE,CAAC,IAAc,EAAc,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,aAAa,CAAC,QAAQ;QAC5B,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;KAC7B,CAAC;IACF,WAAW,EAAE,CAAC,IAAc,EAAc,EAAE,CAAC,CAAC;QAC5C,IAAI,EAAE,aAAa,CAAC,SAAS;QAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;KAC5B,CAAC;IACF,EAAE,EAAE,CAAC,IAAkB,EAAc,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,aAAa,CAAC,EAAE;QACtB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,CAAC,IAAW,EAAc,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,MAAM,OAAO,aAAa;IAUxB,YAAY,OAAgB;QAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,iBAAiB,EAAE;YAC7E,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;YAChD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B;QACD,IAAI,CAAC,OAAO,GAAG,OAA6B,CAAC;IAC/C,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,GAAW,EAAE,EAAE,CAAC;YAC5E,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM;SACnC,EAAE,EAAE,CAAC,CAAC;QACP,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,KAAqB;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YAClB,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK;gBACzB,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC;gBAC5B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CACjC,IAAI,KAAK,KAAK,GAAG,EAAE,CACpB,CAAC;SACL;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM;YACvB,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,OAAuB,EACvB,SAAqB,EACrB,OAA2B,EACX,EAAE;IAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM;QACxB,MAAM,EAAE,OAAO;KAChB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,IAAiB,EAAkB,EAAE;IACvE,MAAM,KAAK,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC;IAC7D,OAAO;QACL,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3D,KAAK,EAAE,CAAC,KAAK,IAAI,IAAI;QACrB,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS;QAClC,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAA2B,EAAE,IAAY,EAAE,IAAiB,EAC5C,EAAE;IAClB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,SAAS,EAAE;YACb,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SACjD;KACF;SAAM;QACL,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtD,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,EAAE;gBACpD,OAAO;oBACL,KAAK,EAAE,IAAI,CAAC,YAAY;oBACxB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,EAAE;iBACX,CAAC;aACH;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAChC;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAgB,EAAE,MAAiC,EACnC,EAAE;IAClB,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc;QACpC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;QACtC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAC3B,CACF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["import { IValidationContext } from '../interfaces/validation';\r\nimport {\r\n IValidator,\r\n ValidatedValue,\r\n IValidatedData,\r\n IValidatedCommonProps,\r\n ICommonProps,\r\n ICommonProp,\r\n} from '../interfaces/index';\r\n\r\nexport enum ValidatorType {\r\n number = 'must be a number',\r\n integer = 'must be an integer',\r\n integerUnlimited = 'must be an integer or infinity',\r\n moreOrEqual = 'must be a number greater than (or equal to) {arg1}',\r\n itemList = 'must be an array of items {arg1}',\r\n boolean = 'must be a boolean',\r\n object = 'must be an object',\r\n element = 'must be an html element',\r\n function = 'must be a function',\r\n funcOfxArguments = 'must have {arg1} argument(s)',\r\n funcOfxAndMoreArguments = 'must have at least {arg1} argument(s)',\r\n funcOfXToYArguments = 'must have {arg1} to {arg2} arguments',\r\n oneOfCan = 'can be present as only one item of {arg1} list',\r\n oneOfMust = 'must be present as only one item of {arg1} list',\r\n or = 'must satisfy at least 1 validator from {arg1} list',\r\n enum = 'must belong to {arg1} list',\r\n}\r\n\r\nconst getError = (msg: ValidatorType, args?: string[]) =>\r\n (args || ['']).reduce((acc, arg, index) => acc.replace(`{arg${index + 1}}`, arg), msg);\r\n\r\nconst getNumber = (value: unknown): number =>\r\n typeof value === 'number' || (typeof value === 'string' && value !== '')\r\n ? Number(value)\r\n : NaN;\r\n\r\nconst onNumber = (value: unknown): ValidatedValue => {\r\n const parsedValue = getNumber(value);\r\n const errors = [];\r\n if (Number.isNaN(parsedValue)) {\r\n errors.push(ValidatorType.number);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onInteger = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n value = getNumber(value);\r\n const parsedValue = parseInt(String(value), 10);\r\n if (value !== parsedValue) {\r\n errors.push(ValidatorType.integer);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onIntegerUnlimited = (value: unknown): ValidatedValue => {\r\n let parsedValue = value;\r\n const errors = [];\r\n value = getNumber(value);\r\n if (!Number.isFinite(value)) {\r\n parsedValue = value;\r\n } else {\r\n parsedValue = parseInt(String(value), 10);\r\n }\r\n if (value !== parsedValue) {\r\n errors.push(ValidatorType.integerUnlimited);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onMoreOrEqual = (limit: number, fallback?: boolean) => (value: unknown): ValidatedValue => {\r\n const result = onNumber(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n let parsedValue = result.value as number;\r\n const errors = [];\r\n if (parsedValue < limit) {\r\n if (!fallback) {\r\n errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));\r\n } else {\r\n parsedValue = limit;\r\n }\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onBoolean = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n let parsedValue = value;\r\n if (value === 'true') {\r\n parsedValue = true;\r\n } else if (value === 'false') {\r\n parsedValue = false;\r\n }\r\n if (typeof parsedValue !== 'boolean') {\r\n errors.push(ValidatorType.boolean);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onObject = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (!value || Object.prototype.toString.call(value) !== '[object Object]') {\r\n errors.push(ValidatorType.object);\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onHtmlElement = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (!(value instanceof Element) && !(value instanceof Document)) {\r\n errors.push(ValidatorType.element);\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onItemList = (value: unknown): ValidatedValue => {\r\n let parsedValue = value;\r\n const errors = [];\r\n if (!Array.isArray(value)) {\r\n errors.push(ValidatorType.itemList);\r\n parsedValue = [];\r\n } else if (!value.length) {\r\n errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));\r\n } else if (value.length > 1) {\r\n const type = typeof value[0];\r\n for (let i = value.length - 1; i >= 0; i--) {\r\n if (typeof value[i] !== type) {\r\n errors.push(getError(ValidatorType.itemList, ['of items of the same type']));\r\n break;\r\n }\r\n }\r\n }\r\n return { value: parsedValue as unknown[], isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\ntype Func = (...args: unknown[]) => void;\r\n\r\nconst onFunction = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (typeof value !== 'function') {\r\n errors.push(ValidatorType.function);\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onFunctionWithXArguments = (argsCount: number) => (value: unknown) => {\r\n const result = onFunction(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n value = result.value;\r\n const errors = [];\r\n if ((value as Func).length !== argsCount) {\r\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onFunctionWithXAndMoreArguments = (argsCount: number) => (value: unknown): ValidatedValue => {\r\n const result = onFunction(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n value = result.value;\r\n const errors = [];\r\n if ((value as Func).length < argsCount) {\r\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onFunctionWithXToYArguments = (from: number, to: number) => (value: unknown): ValidatedValue => {\r\n const result = onFunction(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n value = result.value;\r\n const errors = [];\r\n if ((value as Func).length < from || (value as Func).length > to) {\r\n errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onOneOf = (tokens: string[], must: boolean) => (value: unknown, context?: IValidationContext): ValidatedValue => {\r\n const errors = [];\r\n const isSet = value !== void 0;\r\n let noOneIsPresent = !isSet;\r\n const err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;\r\n if (!Array.isArray(tokens) || !tokens.length) {\r\n errors.push(getError(err, ['undefined']));\r\n } else {\r\n for (let i = tokens.length - 1; i >= 0; i--) {\r\n const token = tokens[i];\r\n if (typeof token !== 'string') {\r\n errors.push(getError(err, [tokens.join('\", \"')]) + ' (non-string token)');\r\n break;\r\n }\r\n const isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);\r\n if (isSet && isAnotherPresent) {\r\n errors.push(getError(err, [tokens.join('\", \"')]) + ` (${token} is present)`);\r\n break;\r\n }\r\n if (noOneIsPresent && isAnotherPresent) {\r\n noOneIsPresent = false;\r\n }\r\n }\r\n if (must && noOneIsPresent) {\r\n errors.push(getError(err, [tokens.join('\", \"')]));\r\n }\r\n }\r\n return { value, isSet, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onOr = (validators: IValidator[]) => (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (validators.every(validator => !validator.method(value).isValid)) {\r\n errors.push(validators.map(v => v.type).join(' OR '));\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nenum AbstractEnum { }\r\ntype TEnum = typeof AbstractEnum;\r\n\r\nconst onEnum = (list: TEnum) => (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n const values = Object.keys(list).filter(k => isNaN(Number(k))).map(k => list[k as unknown as number]);\r\n if (!values.some(item => item === value)) {\r\n errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nexport const VALIDATORS = {\r\n NUMBER: {\r\n type: ValidatorType.number,\r\n method: onNumber\r\n },\r\n INTEGER: {\r\n type: ValidatorType.integer,\r\n method: onInteger\r\n },\r\n INTEGER_UNLIMITED: {\r\n type: ValidatorType.integerUnlimited,\r\n method: onIntegerUnlimited\r\n },\r\n MORE_OR_EQUAL: (limit: number, fallback?: boolean): IValidator => ({\r\n type: ValidatorType.moreOrEqual,\r\n method: onMoreOrEqual(limit, fallback)\r\n }),\r\n BOOLEAN: {\r\n type: ValidatorType.boolean,\r\n method: onBoolean\r\n },\r\n OBJECT: {\r\n type: ValidatorType.object,\r\n method: onObject\r\n },\r\n ITEM_LIST: {\r\n type: ValidatorType.itemList,\r\n method: onItemList\r\n },\r\n ELEMENT: {\r\n type: ValidatorType.element,\r\n method: onHtmlElement\r\n },\r\n FUNC: {\r\n type: ValidatorType.function,\r\n method: onFunction\r\n },\r\n FUNC_WITH_X_ARGUMENTS: (count: number): IValidator => ({\r\n type: ValidatorType.funcOfxArguments,\r\n method: onFunctionWithXArguments(count)\r\n }),\r\n FUNC_WITH_X_AND_MORE_ARGUMENTS: (count: number): IValidator => ({\r\n type: ValidatorType.funcOfxAndMoreArguments,\r\n method: onFunctionWithXAndMoreArguments(count)\r\n }),\r\n FUNC_WITH_X_TO_Y_ARGUMENTS: (from: number, to: number): IValidator => ({\r\n type: ValidatorType.funcOfXToYArguments,\r\n method: onFunctionWithXToYArguments(from, to)\r\n }),\r\n ONE_OF_CAN: (list: string[]): IValidator => ({\r\n type: ValidatorType.oneOfCan,\r\n method: onOneOf(list, false)\r\n }),\r\n ONE_OF_MUST: (list: string[]): IValidator => ({\r\n type: ValidatorType.oneOfMust,\r\n method: onOneOf(list, true)\r\n }),\r\n OR: (list: IValidator[]): IValidator => ({\r\n type: ValidatorType.or,\r\n method: onOr(list)\r\n }),\r\n ENUM: (list: TEnum): IValidator => ({\r\n type: ValidatorType.enum,\r\n method: onEnum(list)\r\n })\r\n};\r\n\r\nexport class ValidatedData implements IValidatedData {\r\n\r\n context: IValidationContext;\r\n isValidContext: boolean;\r\n isValid: boolean;\r\n errors: string[];\r\n params: IValidatedCommonProps<PropertyKey>;\r\n\r\n private contextErrors: string[];\r\n\r\n constructor(context: unknown) {\r\n this.params = {};\r\n this.contextErrors = [];\r\n this.errors = [];\r\n this.isValid = true;\r\n this.setContext(context);\r\n }\r\n\r\n private setContext(context: unknown): void {\r\n if (!context || Object.prototype.toString.call(context) !== '[object Object]') {\r\n this.setCommonError('context is not an object');\r\n this.isValidContext = false;\r\n } else {\r\n this.isValidContext = true;\r\n }\r\n this.context = context as IValidationContext;\r\n }\r\n\r\n private setValidity() {\r\n this.errors = Object.keys(this.params).reduce((acc: string[], key: string) => [\r\n ...acc, ...this.params[key].errors\r\n ], []);\r\n this.isValid = !this.errors.length;\r\n }\r\n\r\n setCommonError(error: string): void {\r\n this.contextErrors.push(error);\r\n this.errors.push(error);\r\n this.isValid = false;\r\n }\r\n\r\n setParam(token: string, value: ValidatedValue): void {\r\n if (!value.isValid) {\r\n value.errors = !value.isSet\r\n ? [`\"${token}\" must be set`]\r\n : value.errors.map((err: string) =>\r\n `\"${token}\" ${err}`\r\n );\r\n }\r\n this.params[token] = value;\r\n this.setValidity();\r\n }\r\n\r\n showErrors(): string {\r\n return this.errors.length\r\n ? 'validation failed: ' + this.errors.join(', ')\r\n : '';\r\n }\r\n}\r\n\r\nexport const runValidator = (\r\n current: ValidatedValue,\r\n validator: IValidator,\r\n context: IValidationContext\r\n): ValidatedValue => {\r\n const { value, errors } = current;\r\n const result = validator.method(value, context);\r\n const _errors = [...errors, ...result.errors];\r\n return {\r\n value: result.value,\r\n isSet: result.isSet,\r\n isValid: !_errors.length,\r\n errors: _errors\r\n };\r\n};\r\n\r\nconst getDefault = (value: unknown, prop: ICommonProp): ValidatedValue => {\r\n const empty = value === void 0;\r\n const auto = !prop.mandatory && prop.defaultValue !== void 0;\r\n return {\r\n value: !empty ? value : (auto ? prop.defaultValue : void 0),\r\n isSet: !empty || auto,\r\n isValid: !empty || !prop.mandatory,\r\n errors: []\r\n };\r\n};\r\n\r\nexport const validateOne = (\r\n context: IValidationContext, name: string, prop: ICommonProp\r\n): ValidatedValue => {\r\n const result = getDefault(context[name], prop);\r\n if (!result.isSet) {\r\n const oneOfMust = prop.validators.find(v => v.type === ValidatorType.oneOfMust);\r\n if (oneOfMust) {\r\n return runValidator(result, oneOfMust, context);\r\n }\r\n } else {\r\n for (const validator of Object.values(prop.validators)) {\r\n const current = runValidator(result, validator, context);\r\n if (!current.isValid && prop.defaultValue !== void 0) {\r\n return {\r\n value: prop.defaultValue,\r\n isSet: true,\r\n isValid: true,\r\n errors: []\r\n };\r\n }\r\n Object.assign(result, current);\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport const validate = (\r\n context: unknown, params: ICommonProps<PropertyKey>\r\n): IValidatedData => {\r\n const data = new ValidatedData(context);\r\n Object.entries(params).forEach(([key, prop]) =>\r\n data.setParam(key, data.isValidContext\r\n ? validateOne(data.context, key, prop)\r\n : getDefault(void 0, prop)\r\n )\r\n );\r\n return data;\r\n};\r\n"]}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/inputs/validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { IValidationContext } from '../interfaces/validation';\r\nimport {\r\n IValidator,\r\n ValidatedValue,\r\n IValidatedData,\r\n IValidatedCommonProps,\r\n ICommonProps,\r\n ICommonProp,\r\n} from '../interfaces/index';\r\n\r\nexport enum ValidatorType {\r\n number = 'must be a number',\r\n integer = 'must be an integer',\r\n integerUnlimited = 'must be an integer or infinity',\r\n moreOrEqual = 'must be a number greater than (or equal to) {arg1}',\r\n itemList = 'must be an array of items {arg1}',\r\n boolean = 'must be a boolean',\r\n object = 'must be an object',\r\n element = 'must be an html element',\r\n function = 'must be a function',\r\n funcOfxArguments = 'must have {arg1} argument(s)',\r\n funcOfxAndMoreArguments = 'must have at least {arg1} argument(s)',\r\n funcOfXToYArguments = 'must have {arg1} to {arg2} arguments',\r\n oneOfCan = 'can be present as only one item of {arg1} list',\r\n oneOfMust = 'must be present as only one item of {arg1} list',\r\n or = 'must satisfy at least 1 validator from {arg1} list',\r\n enum = 'must belong to {arg1} list',\r\n}\r\n\r\nconst getError = (msg: ValidatorType, args?: string[]) =>\r\n (args || ['']).reduce((acc, arg, index) => acc.replace(`{arg${index + 1}}`, arg), msg);\r\n\r\nconst getNumber = (value: unknown): number =>\r\n typeof value === 'number' || (typeof value === 'string' && value !== '')\r\n ? Number(value)\r\n : NaN;\r\n\r\nconst onNumber = (value: unknown): ValidatedValue => {\r\n const parsedValue = getNumber(value);\r\n const errors = [];\r\n if (Number.isNaN(parsedValue)) {\r\n errors.push(ValidatorType.number);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onInteger = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n value = getNumber(value);\r\n const parsedValue = parseInt(String(value), 10);\r\n if (value !== parsedValue) {\r\n errors.push(ValidatorType.integer);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onIntegerUnlimited = (value: unknown): ValidatedValue => {\r\n let parsedValue = value;\r\n const errors = [];\r\n value = getNumber(value);\r\n if (!Number.isFinite(value)) {\r\n parsedValue = value;\r\n } else {\r\n parsedValue = parseInt(String(value), 10);\r\n }\r\n if (value !== parsedValue) {\r\n errors.push(ValidatorType.integerUnlimited);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onMoreOrEqual = (limit: number, fallback?: boolean) => (value: unknown): ValidatedValue => {\r\n const result = onNumber(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n let parsedValue = result.value as number;\r\n const errors = [];\r\n if (parsedValue < limit) {\r\n if (!fallback) {\r\n errors.push(getError(ValidatorType.moreOrEqual, [String(limit)]));\r\n } else {\r\n parsedValue = limit;\r\n }\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onBoolean = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n let parsedValue = value;\r\n if (value === 'true') {\r\n parsedValue = true;\r\n } else if (value === 'false') {\r\n parsedValue = false;\r\n }\r\n if (typeof parsedValue !== 'boolean') {\r\n errors.push(ValidatorType.boolean);\r\n }\r\n return { value: parsedValue, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onObject = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (!value || Object.prototype.toString.call(value) !== '[object Object]') {\r\n errors.push(ValidatorType.object);\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onHtmlElement = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (!(value instanceof Element) && !(value instanceof Document)) {\r\n errors.push(ValidatorType.element);\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onItemList = (value: unknown): ValidatedValue => {\r\n let parsedValue = value;\r\n const errors = [];\r\n if (!Array.isArray(value)) {\r\n errors.push(ValidatorType.itemList);\r\n parsedValue = [];\r\n } else if (!value.length) {\r\n errors.push(getError(ValidatorType.itemList, ['with at least 1 item']));\r\n } else if (value.length > 1) {\r\n const type = typeof value[0];\r\n for (let i = value.length - 1; i >= 0; i--) {\r\n if (typeof value[i] !== type) {\r\n errors.push(getError(ValidatorType.itemList, ['of items of the same type']));\r\n break;\r\n }\r\n }\r\n }\r\n return { value: parsedValue as unknown[], isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\ntype Func = (...args: unknown[]) => void;\r\n\r\nconst onFunction = (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (typeof value !== 'function') {\r\n errors.push(ValidatorType.function);\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onFunctionWithXArguments = (argsCount: number) => (value: unknown) => {\r\n const result = onFunction(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n value = result.value;\r\n const errors = [];\r\n if ((value as Func).length !== argsCount) {\r\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onFunctionWithXAndMoreArguments = (argsCount: number) => (value: unknown): ValidatedValue => {\r\n const result = onFunction(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n value = result.value;\r\n const errors = [];\r\n if ((value as Func).length < argsCount) {\r\n errors.push(getError(ValidatorType.funcOfxArguments, [String(argsCount)]));\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onFunctionWithXToYArguments = (from: number, to: number) => (value: unknown): ValidatedValue => {\r\n const result = onFunction(value);\r\n if (!result.isValid) {\r\n return result;\r\n }\r\n value = result.value;\r\n const errors = [];\r\n if ((value as Func).length < from || (value as Func).length > to) {\r\n errors.push(getError(ValidatorType.funcOfXToYArguments, [String(from), String(to)]));\r\n }\r\n return { value: value as Func, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onOneOf = (tokens: string[], must: boolean) => (value: unknown, context?: IValidationContext): ValidatedValue => {\r\n const errors = [];\r\n const isSet = value !== void 0;\r\n let noOneIsPresent = !isSet;\r\n const err = must ? ValidatorType.oneOfMust : ValidatorType.oneOfCan;\r\n if (!Array.isArray(tokens) || !tokens.length) {\r\n errors.push(getError(err, ['undefined']));\r\n } else {\r\n for (let i = tokens.length - 1; i >= 0; i--) {\r\n const token = tokens[i];\r\n if (typeof token !== 'string') {\r\n errors.push(getError(err, [tokens.join('\", \"')]) + ' (non-string token)');\r\n break;\r\n }\r\n const isAnotherPresent = context && Object.prototype.hasOwnProperty.call(context, token);\r\n if (isSet && isAnotherPresent) {\r\n errors.push(getError(err, [tokens.join('\", \"')]) + ` (${token} is present)`);\r\n break;\r\n }\r\n if (noOneIsPresent && isAnotherPresent) {\r\n noOneIsPresent = false;\r\n }\r\n }\r\n if (must && noOneIsPresent) {\r\n errors.push(getError(err, [tokens.join('\", \"')]));\r\n }\r\n }\r\n return { value, isSet, isValid: !errors.length, errors };\r\n};\r\n\r\nconst onOr = (validators: IValidator[]) => (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n if (validators.every(validator => !validator.method(value).isValid)) {\r\n errors.push(validators.map(v => v.type).join(' OR '));\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\ntype AbstractEnum = Record<string, string | number>;\r\ntype TEnum = AbstractEnum;\r\n\r\nconst onEnum = (list: TEnum) => (value: unknown): ValidatedValue => {\r\n const errors = [];\r\n const values = Object.keys(list).filter(k => isNaN(Number(k))).map(k => list[k as unknown as number]);\r\n if (!values.some(item => item === value)) {\r\n errors.push(getError(ValidatorType.enum, ['[' + values.join(',') + ']']));\r\n }\r\n return { value, isSet: true, isValid: !errors.length, errors };\r\n};\r\n\r\nexport const VALIDATORS = {\r\n NUMBER: {\r\n type: ValidatorType.number,\r\n method: onNumber\r\n },\r\n INTEGER: {\r\n type: ValidatorType.integer,\r\n method: onInteger\r\n },\r\n INTEGER_UNLIMITED: {\r\n type: ValidatorType.integerUnlimited,\r\n method: onIntegerUnlimited\r\n },\r\n MORE_OR_EQUAL: (limit: number, fallback?: boolean): IValidator => ({\r\n type: ValidatorType.moreOrEqual,\r\n method: onMoreOrEqual(limit, fallback)\r\n }),\r\n BOOLEAN: {\r\n type: ValidatorType.boolean,\r\n method: onBoolean\r\n },\r\n OBJECT: {\r\n type: ValidatorType.object,\r\n method: onObject\r\n },\r\n ITEM_LIST: {\r\n type: ValidatorType.itemList,\r\n method: onItemList\r\n },\r\n ELEMENT: {\r\n type: ValidatorType.element,\r\n method: onHtmlElement\r\n },\r\n FUNC: {\r\n type: ValidatorType.function,\r\n method: onFunction\r\n },\r\n FUNC_WITH_X_ARGUMENTS: (count: number): IValidator => ({\r\n type: ValidatorType.funcOfxArguments,\r\n method: onFunctionWithXArguments(count)\r\n }),\r\n FUNC_WITH_X_AND_MORE_ARGUMENTS: (count: number): IValidator => ({\r\n type: ValidatorType.funcOfxAndMoreArguments,\r\n method: onFunctionWithXAndMoreArguments(count)\r\n }),\r\n FUNC_WITH_X_TO_Y_ARGUMENTS: (from: number, to: number): IValidator => ({\r\n type: ValidatorType.funcOfXToYArguments,\r\n method: onFunctionWithXToYArguments(from, to)\r\n }),\r\n ONE_OF_CAN: (list: string[]): IValidator => ({\r\n type: ValidatorType.oneOfCan,\r\n method: onOneOf(list, false)\r\n }),\r\n ONE_OF_MUST: (list: string[]): IValidator => ({\r\n type: ValidatorType.oneOfMust,\r\n method: onOneOf(list, true)\r\n }),\r\n OR: (list: IValidator[]): IValidator => ({\r\n type: ValidatorType.or,\r\n method: onOr(list)\r\n }),\r\n ENUM: (list: TEnum): IValidator => ({\r\n type: ValidatorType.enum,\r\n method: onEnum(list)\r\n })\r\n};\r\n\r\nexport class ValidatedData implements IValidatedData {\r\n\r\n context: IValidationContext;\r\n isValidContext: boolean;\r\n isValid: boolean;\r\n errors: string[];\r\n params: IValidatedCommonProps<PropertyKey>;\r\n\r\n private contextErrors: string[];\r\n\r\n constructor(context: unknown) {\r\n this.params = {};\r\n this.contextErrors = [];\r\n this.errors = [];\r\n this.isValid = true;\r\n this.setContext(context);\r\n }\r\n\r\n private setContext(context: unknown): void {\r\n if (!context || Object.prototype.toString.call(context) !== '[object Object]') {\r\n this.setCommonError('context is not an object');\r\n this.isValidContext = false;\r\n } else {\r\n this.isValidContext = true;\r\n }\r\n this.context = context as IValidationContext;\r\n }\r\n\r\n private setValidity() {\r\n this.errors = Object.keys(this.params).reduce((acc: string[], key: string) => [\r\n ...acc, ...this.params[key].errors\r\n ], []);\r\n this.isValid = !this.errors.length;\r\n }\r\n\r\n setCommonError(error: string): void {\r\n this.contextErrors.push(error);\r\n this.errors.push(error);\r\n this.isValid = false;\r\n }\r\n\r\n setParam(token: string, value: ValidatedValue): void {\r\n if (!value.isValid) {\r\n value.errors = !value.isSet\r\n ? [`\"${token}\" must be set`]\r\n : value.errors.map((err: string) =>\r\n `\"${token}\" ${err}`\r\n );\r\n }\r\n this.params[token] = value;\r\n this.setValidity();\r\n }\r\n\r\n showErrors(): string {\r\n return this.errors.length\r\n ? 'validation failed: ' + this.errors.join(', ')\r\n : '';\r\n }\r\n}\r\n\r\nexport const runValidator = (\r\n current: ValidatedValue,\r\n validator: IValidator,\r\n context: IValidationContext\r\n): ValidatedValue => {\r\n const { value, errors } = current;\r\n const result = validator.method(value, context);\r\n const _errors = [...errors, ...result.errors];\r\n return {\r\n value: result.value,\r\n isSet: result.isSet,\r\n isValid: !_errors.length,\r\n errors: _errors\r\n };\r\n};\r\n\r\nconst getDefault = (value: unknown, prop: ICommonProp): ValidatedValue => {\r\n const empty = value === void 0;\r\n const auto = !prop.mandatory && prop.defaultValue !== void 0;\r\n return {\r\n value: !empty ? value : (auto ? prop.defaultValue : void 0),\r\n isSet: !empty || auto,\r\n isValid: !empty || !prop.mandatory,\r\n errors: []\r\n };\r\n};\r\n\r\nexport const validateOne = (\r\n context: IValidationContext, name: string, prop: ICommonProp\r\n): ValidatedValue => {\r\n const result = getDefault(context[name], prop);\r\n if (!result.isSet) {\r\n const oneOfMust = prop.validators.find(v => v.type === ValidatorType.oneOfMust);\r\n if (oneOfMust) {\r\n return runValidator(result, oneOfMust, context);\r\n }\r\n } else {\r\n for (const validator of Object.values(prop.validators)) {\r\n const current = runValidator(result, validator, context);\r\n if (!current.isValid && prop.defaultValue !== void 0) {\r\n return {\r\n value: prop.defaultValue,\r\n isSet: true,\r\n isValid: true,\r\n errors: []\r\n };\r\n }\r\n Object.assign(result, current);\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nexport const validate = (\r\n context: unknown, params: ICommonProps<PropertyKey>\r\n): IValidatedData => {\r\n const data = new ValidatedData(context);\r\n Object.entries(params).forEach(([key, prop]) =>\r\n data.setParam(key, data.isValidContext\r\n ? validateOne(data.context, key, prop)\r\n : getDefault(void 0, prop)\r\n )\r\n );\r\n return data;\r\n};\r\n"]}
@@ -1,31 +1,31 @@
1
- import { VALIDATORS } from './validation';
2
- const { ELEMENT, OBJECT, FUNC, FUNC_WITH_X_ARGUMENTS } = VALIDATORS;
3
- export var WorkflowProps;
4
- (function (WorkflowProps) {
5
- WorkflowProps["consumer"] = "consumer";
6
- WorkflowProps["element"] = "element";
7
- WorkflowProps["datasource"] = "datasource";
8
- WorkflowProps["run"] = "run";
9
- WorkflowProps["Routines"] = "Routines";
10
- })(WorkflowProps || (WorkflowProps = {}));
11
- export const WORKFLOW = {
12
- [WorkflowProps.consumer]: {
13
- validators: [OBJECT]
14
- },
15
- [WorkflowProps.element]: {
16
- validators: [ELEMENT],
17
- mandatory: true
18
- },
19
- [WorkflowProps.datasource]: {
20
- validators: [OBJECT],
21
- mandatory: true
22
- },
23
- [WorkflowProps.run]: {
24
- validators: [FUNC_WITH_X_ARGUMENTS(1)],
25
- mandatory: true
26
- },
27
- [WorkflowProps.Routines]: {
28
- validators: [FUNC]
29
- }
30
- };
1
+ import { VALIDATORS } from './validation';
2
+ const { ELEMENT, OBJECT, FUNC, FUNC_WITH_X_ARGUMENTS } = VALIDATORS;
3
+ export var WorkflowProps;
4
+ (function (WorkflowProps) {
5
+ WorkflowProps["consumer"] = "consumer";
6
+ WorkflowProps["element"] = "element";
7
+ WorkflowProps["datasource"] = "datasource";
8
+ WorkflowProps["run"] = "run";
9
+ WorkflowProps["Routines"] = "Routines";
10
+ })(WorkflowProps || (WorkflowProps = {}));
11
+ export const WORKFLOW = {
12
+ [WorkflowProps.consumer]: {
13
+ validators: [OBJECT]
14
+ },
15
+ [WorkflowProps.element]: {
16
+ validators: [ELEMENT],
17
+ mandatory: true
18
+ },
19
+ [WorkflowProps.datasource]: {
20
+ validators: [OBJECT],
21
+ mandatory: true
22
+ },
23
+ [WorkflowProps.run]: {
24
+ validators: [FUNC_WITH_X_ARGUMENTS(1)],
25
+ mandatory: true
26
+ },
27
+ [WorkflowProps.Routines]: {
28
+ validators: [FUNC]
29
+ }
30
+ };
31
31
  //# sourceMappingURL=workflow.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=adapter.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=datasource.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=item.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/interfaces/process.ts"],"names":[],"mappings":"","sourcesContent":["import { Scroller } from '../scroller';\r\nimport { CommonProcess, AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport { IDatasourceConstructed } from './datasource';\r\nimport { IAdapterInput } from './adapter';\r\n\r\nexport type ProcessName = CommonProcess | AdapterProcess;\r\n\r\nexport interface ProcessClass {\r\n process: ProcessName;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n run: (scroller: Scroller, ...args: any[]) => void;\r\n name: string;\r\n}\r\n\r\nexport interface ProcessPayload {\r\n process?: ProcessName;\r\n options?: unknown;\r\n event?: Event;\r\n finalize?: boolean;\r\n doClip?: boolean;\r\n doRender?: boolean;\r\n datasource?: IDatasourceConstructed;\r\n error?: unknown;\r\n}\r\n\r\nexport interface ProcessSubject {\r\n process: ProcessName;\r\n status: ProcessStatus;\r\n payload?: ProcessPayload;\r\n}\r\n\r\nexport type AdapterProcessMap<T> = {\r\n [key in AdapterProcess]: T;\r\n};\r\n\r\nexport interface IBaseProcess {\r\n new(): any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n process: ProcessName;\r\n}\r\n\r\nexport interface IBaseAdapterProcess extends IBaseProcess {\r\n parseInput: <T>(\r\n scroller: Scroller, options: T, ignoreErrors?: boolean, process?: AdapterProcess\r\n ) => IAdapterInput<T>;\r\n}\r\n"]}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/interfaces/process.ts"],"names":[],"mappings":"","sourcesContent":["import { Scroller } from '../scroller';\r\nimport { CommonProcess, AdapterProcess, ProcessStatus } from '../processes/index';\r\nimport { IDatasourceConstructed } from './datasource';\r\nimport { IAdapterInput } from './adapter';\r\n\r\nexport type ProcessName = CommonProcess | AdapterProcess;\r\n\r\nexport interface ProcessClass {\r\n process: ProcessName;\r\n\r\n run: (scroller: Scroller, ...args: any[]) => void;\r\n name: string;\r\n}\r\n\r\nexport interface ProcessPayload {\r\n process?: ProcessName;\r\n options?: unknown;\r\n event?: Event;\r\n finalize?: boolean;\r\n doClip?: boolean;\r\n doRender?: boolean;\r\n datasource?: IDatasourceConstructed;\r\n error?: unknown;\r\n}\r\n\r\nexport interface ProcessSubject {\r\n process: ProcessName;\r\n status: ProcessStatus;\r\n payload?: ProcessPayload;\r\n}\r\n\r\nexport type AdapterProcessMap<T> = {\r\n [key in AdapterProcess]: T;\r\n};\r\n\r\nexport interface IBaseProcess {\r\n new(): any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n process: ProcessName;\r\n}\r\n\r\nexport interface IBaseAdapterProcess extends IBaseProcess {\r\n parseInput: <T>(\r\n scroller: Scroller, options: T, ignoreErrors?: boolean, process?: AdapterProcess\r\n ) => IAdapterInput<T>;\r\n}\r\n"]}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=routines.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=settings.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=state.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=validation.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=workflow.js.map
@@ -1,37 +1,37 @@
1
- import Insert from './insert';
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- export default class Append extends BaseAdapterProcessFactory(AdapterProcess.append) {
4
- static run(scroller, { process, options }) {
5
- const { params } = Append.parseInput(scroller, options, false, process);
6
- if (!params) {
7
- return;
8
- }
9
- const shouldAppend = Append.doAppend(scroller, process, params);
10
- scroller.workflow.call({
11
- process: Append.process,
12
- status: shouldAppend ? ProcessStatus.next : ProcessStatus.done
13
- });
14
- }
15
- static doAppend(scroller, process, params) {
16
- const { bof, eof, increase, decrease } = params;
17
- const { buffer } = scroller;
18
- const prepend = process === AdapterProcess.prepend;
19
- const opposite = prepend ? !increase : decrease;
20
- let beforeIndex, afterIndex, items = params.items;
21
- if (prepend) {
22
- beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);
23
- items = [...items].reverse();
24
- }
25
- else {
26
- afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);
27
- }
28
- return Insert.doInsert(scroller, {
29
- items,
30
- beforeIndex,
31
- afterIndex,
32
- decrease: opposite,
33
- virtualize: params.virtualize
34
- });
35
- }
36
- }
1
+ import Insert from './insert';
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ export default class Append extends BaseAdapterProcessFactory(AdapterProcess.append) {
4
+ static run(scroller, { process, options }) {
5
+ const { params } = Append.parseInput(scroller, options, false, process);
6
+ if (!params) {
7
+ return;
8
+ }
9
+ const shouldAppend = Append.doAppend(scroller, process, params);
10
+ scroller.workflow.call({
11
+ process: Append.process,
12
+ status: shouldAppend ? ProcessStatus.next : ProcessStatus.done
13
+ });
14
+ }
15
+ static doAppend(scroller, process, params) {
16
+ const { bof, eof, increase, decrease } = params;
17
+ const { buffer } = scroller;
18
+ const prepend = process === AdapterProcess.prepend;
19
+ const opposite = prepend ? !increase : decrease;
20
+ let beforeIndex, afterIndex, items = params.items;
21
+ if (prepend) {
22
+ beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);
23
+ items = [...items].reverse();
24
+ }
25
+ else {
26
+ afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);
27
+ }
28
+ return Insert.doInsert(scroller, {
29
+ items,
30
+ beforeIndex,
31
+ afterIndex,
32
+ decrease: opposite,
33
+ virtualize: params.virtualize
34
+ });
35
+ }
36
+ }
37
37
  //# sourceMappingURL=append.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"append.js","sourceRoot":"","sources":["../../../../src/processes/adapter/append.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAUzF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;IAElF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAoB;QACnE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEhE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAkB,EAAE,OAAuB,EAAE,MAAmC;QAC9F,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,MAAM,OAAO,GAAG,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChD,IAAI,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAClD,IAAI,OAAO,EAAE;YACX,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SAC9B;aAAM;YACL,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjG;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/B,KAAK;YACL,WAAW;YACX,UAAU;YACV,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport Insert from './insert';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { AdapterAppendOptions, AdapterPrependOptions } from '../../interfaces/index';\r\n\r\ntype AdapterAppendPrependOptions = AdapterAppendOptions & AdapterPrependOptions;\r\n\r\ninterface AppendRunOptions {\r\n process: AdapterProcess;\r\n options: AdapterAppendPrependOptions;\r\n}\r\n\r\nexport default class Append extends BaseAdapterProcessFactory(AdapterProcess.append) {\r\n\r\n static run(scroller: Scroller, { process, options }: AppendRunOptions): void {\r\n const { params } = Append.parseInput(scroller, options, false, process);\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const shouldAppend = Append.doAppend(scroller, process, params);\r\n\r\n scroller.workflow.call({\r\n process: Append.process,\r\n status: shouldAppend ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n static doAppend(scroller: Scroller, process: AdapterProcess, params: AdapterAppendPrependOptions): boolean {\r\n const { bof, eof, increase, decrease } = params;\r\n const { buffer } = scroller;\r\n const prepend = process === AdapterProcess.prepend;\r\n const opposite = prepend ? !increase : decrease;\r\n let beforeIndex, afterIndex, items = params.items;\r\n if (prepend) {\r\n beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);\r\n items = [...items].reverse();\r\n } else {\r\n afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);\r\n }\r\n return Insert.doInsert(scroller, {\r\n items,\r\n beforeIndex,\r\n afterIndex,\r\n decrease: opposite,\r\n virtualize: params.virtualize\r\n });\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"append.js","sourceRoot":"","sources":["../../../../src/processes/adapter/append.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAUzF,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;IAElF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAoB;QACnE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEhE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAC/D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,QAAkB,EAAE,OAAuB,EAAE,MAAmC;QAC9F,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,MAAM,OAAO,GAAG,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC;QACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChD,IAAI,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAClD,IAAI,OAAO,EAAE,CAAC;YACZ,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/B,KAAK;YACL,WAAW;YACX,UAAU;YACV,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport Insert from './insert';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { AdapterAppendOptions, AdapterPrependOptions } from '../../interfaces/index';\r\n\r\ntype AdapterAppendPrependOptions = AdapterAppendOptions & AdapterPrependOptions;\r\n\r\ninterface AppendRunOptions {\r\n process: AdapterProcess;\r\n options: AdapterAppendPrependOptions;\r\n}\r\n\r\nexport default class Append extends BaseAdapterProcessFactory(AdapterProcess.append) {\r\n\r\n static run(scroller: Scroller, { process, options }: AppendRunOptions): void {\r\n const { params } = Append.parseInput(scroller, options, false, process);\r\n if (!params) {\r\n return;\r\n }\r\n\r\n const shouldAppend = Append.doAppend(scroller, process, params);\r\n\r\n scroller.workflow.call({\r\n process: Append.process,\r\n status: shouldAppend ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n static doAppend(scroller: Scroller, process: AdapterProcess, params: AdapterAppendPrependOptions): boolean {\r\n const { bof, eof, increase, decrease } = params;\r\n const { buffer } = scroller;\r\n const prepend = process === AdapterProcess.prepend;\r\n const opposite = prepend ? !increase : decrease;\r\n let beforeIndex, afterIndex, items = params.items;\r\n if (prepend) {\r\n beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);\r\n items = [...items].reverse();\r\n } else {\r\n afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);\r\n }\r\n return Insert.doInsert(scroller, {\r\n items,\r\n beforeIndex,\r\n afterIndex,\r\n decrease: opposite,\r\n virtualize: params.virtualize\r\n });\r\n }\r\n\r\n}\r\n"]}
@@ -1,33 +1,33 @@
1
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
- import { Direction } from '../../inputs/index';
3
- export default class Check extends BaseAdapterProcessFactory(AdapterProcess.check) {
4
- static run(scroller) {
5
- const { workflow, buffer, state: { fetch }, viewport } = scroller;
6
- let min = Infinity, max = -Infinity;
7
- buffer.items.forEach(item => {
8
- const size = item.size;
9
- item.setSize();
10
- if (item.size !== size) {
11
- buffer.cacheItem(item);
12
- min = Math.min(min, item.$index);
13
- max = Math.max(max, item.$index);
14
- }
15
- });
16
- if (Number.isFinite(min)) {
17
- fetch.first.indexBuffer = buffer.firstIndex;
18
- fetch.last.indexBuffer = buffer.lastIndex;
19
- const { index: firstIndex, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
20
- fetch.firstVisible.index = firstIndex;
21
- if (!isNaN(firstIndex)) {
22
- fetch.firstVisible.delta = -buffer.getSizeByIndex(firstIndex) + diff;
23
- }
24
- fetch.check(buffer.items.filter(item => item.$index >= min && item.$index <= max));
25
- }
26
- scroller.logger.stat('check');
27
- workflow.call({
28
- process: Check.process,
29
- status: Number.isFinite(min) ? ProcessStatus.next : ProcessStatus.done
30
- });
31
- }
32
- }
1
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
+ import { Direction } from '../../inputs/index';
3
+ export default class Check extends BaseAdapterProcessFactory(AdapterProcess.check) {
4
+ static run(scroller) {
5
+ const { workflow, buffer, state: { fetch }, viewport } = scroller;
6
+ let min = Infinity, max = -Infinity;
7
+ buffer.items.forEach(item => {
8
+ const size = item.size;
9
+ item.setSize();
10
+ if (item.size !== size) {
11
+ buffer.cacheItem(item);
12
+ min = Math.min(min, item.$index);
13
+ max = Math.max(max, item.$index);
14
+ }
15
+ });
16
+ if (Number.isFinite(min)) {
17
+ fetch.first.indexBuffer = buffer.firstIndex;
18
+ fetch.last.indexBuffer = buffer.lastIndex;
19
+ const { index: firstIndex, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
20
+ fetch.firstVisible.index = firstIndex;
21
+ if (!isNaN(firstIndex)) {
22
+ fetch.firstVisible.delta = -buffer.getSizeByIndex(firstIndex) + diff;
23
+ }
24
+ fetch.check(buffer.items.filter(item => item.$index >= min && item.$index <= max));
25
+ }
26
+ scroller.logger.stat('check');
27
+ workflow.call({
28
+ process: Check.process,
29
+ status: Number.isFinite(min) ? ProcessStatus.next : ProcessStatus.done
30
+ });
31
+ }
32
+ }
33
33
  //# sourceMappingURL=check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/processes/adapter/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC;IAEhF,MAAM,CAAC,GAAG,CAAC,QAAkB;QAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAClE,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC;QAEpC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;gBACtB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;YAC1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClG,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBACtB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,CAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;aACvE;YACD,KAAK,CAAC,KAAK,CACT,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CACtE,CAAC;SACH;QAED,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SACvE,CAAC,CAAC;IACL,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { Direction } from '../../inputs/index';\r\n\r\nexport default class Check extends BaseAdapterProcessFactory(AdapterProcess.check) {\r\n\r\n static run(scroller: Scroller): void {\r\n const { workflow, buffer, state: { fetch }, viewport } = scroller;\r\n let min = Infinity, max = -Infinity;\r\n\r\n buffer.items.forEach(item => {\r\n const size = item.size;\r\n item.setSize();\r\n if (item.size !== size) {\r\n buffer.cacheItem(item);\r\n min = Math.min(min, item.$index);\r\n max = Math.max(max, item.$index);\r\n }\r\n });\r\n\r\n if (Number.isFinite(min)) {\r\n fetch.first.indexBuffer = buffer.firstIndex;\r\n fetch.last.indexBuffer = buffer.lastIndex;\r\n const { index: firstIndex, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\r\n fetch.firstVisible.index = firstIndex;\r\n if (!isNaN(firstIndex)) {\r\n fetch.firstVisible.delta = - buffer.getSizeByIndex(firstIndex) + diff;\r\n }\r\n fetch.check(\r\n buffer.items.filter(item => item.$index >= min && item.$index <= max)\r\n );\r\n }\r\n\r\n scroller.logger.stat('check');\r\n\r\n workflow.call({\r\n process: Check.process,\r\n status: Number.isFinite(min) ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../src/processes/adapter/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC;IAEhF,MAAM,CAAC,GAAG,CAAC,QAAkB;QAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAClE,IAAI,GAAG,GAAG,QAAQ,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC;QAEpC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;YAC1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClG,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,UAAU,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,CAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;YACxE,CAAC;YACD,KAAK,CAAC,KAAK,CACT,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CACtE,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SACvE,CAAC,CAAC;IACL,CAAC;CAEF","sourcesContent":["import { Scroller } from '../../scroller';\r\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\r\nimport { Direction } from '../../inputs/index';\r\n\r\nexport default class Check extends BaseAdapterProcessFactory(AdapterProcess.check) {\r\n\r\n static run(scroller: Scroller): void {\r\n const { workflow, buffer, state: { fetch }, viewport } = scroller;\r\n let min = Infinity, max = -Infinity;\r\n\r\n buffer.items.forEach(item => {\r\n const size = item.size;\r\n item.setSize();\r\n if (item.size !== size) {\r\n buffer.cacheItem(item);\r\n min = Math.min(min, item.$index);\r\n max = Math.max(max, item.$index);\r\n }\r\n });\r\n\r\n if (Number.isFinite(min)) {\r\n fetch.first.indexBuffer = buffer.firstIndex;\r\n fetch.last.indexBuffer = buffer.lastIndex;\r\n const { index: firstIndex, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\r\n fetch.firstVisible.index = firstIndex;\r\n if (!isNaN(firstIndex)) {\r\n fetch.firstVisible.delta = - buffer.getSizeByIndex(firstIndex) + diff;\r\n }\r\n fetch.check(\r\n buffer.items.filter(item => item.$index >= min && item.$index <= max)\r\n );\r\n }\r\n\r\n scroller.logger.stat('check');\r\n\r\n workflow.call({\r\n process: Check.process,\r\n status: Number.isFinite(min) ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n }\r\n\r\n}\r\n"]}
@@ -1,13 +1,13 @@
1
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
- export default class UserClip extends BaseAdapterProcessFactory(AdapterProcess.clip) {
3
- static run(scroller, options) {
4
- const { params } = UserClip.parseInput(scroller, options);
5
- scroller.state.clip.forceForward = !(params && params.backwardOnly);
6
- scroller.state.clip.forceBackward = !(params && params.forwardOnly);
7
- scroller.workflow.call({
8
- process: UserClip.process,
9
- status: ProcessStatus.next
10
- });
11
- }
12
- }
1
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
2
+ export default class UserClip extends BaseAdapterProcessFactory(AdapterProcess.clip) {
3
+ static run(scroller, options) {
4
+ const { params } = UserClip.parseInput(scroller, options);
5
+ scroller.state.clip.forceForward = !(params && params.backwardOnly);
6
+ scroller.state.clip.forceBackward = !(params && params.forwardOnly);
7
+ scroller.workflow.call({
8
+ process: UserClip.process,
9
+ status: ProcessStatus.next
10
+ });
11
+ }
12
+ }
13
13
  //# sourceMappingURL=clip.js.map
@@ -1,78 +1,78 @@
1
- import { AdapterMethods } from '../../inputs/index';
2
- import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
- const { [AdapterProcess.fix]: FixParams } = AdapterMethods;
4
- export default class Fix extends BaseAdapterProcessFactory(AdapterProcess.fix) {
5
- static run(scroller, options) {
6
- const { workflow } = scroller;
7
- const { data, params } = Fix.parseInput(scroller, options);
8
- if (!params) {
9
- return;
10
- }
11
- Object.entries(data.params).forEach(([key, value]) => {
12
- if (value.isSet && value.isValid) {
13
- Fix.runByType(scroller, key, value.value, data);
14
- }
15
- });
16
- workflow.call({
17
- process: Fix.process,
18
- status: ProcessStatus.done
19
- });
20
- }
21
- static runByType(scroller, token, value, methodData) {
22
- switch (token) {
23
- case FixParams.scrollPosition:
24
- return Fix.setScrollPosition(scroller, value);
25
- case FixParams.minIndex:
26
- return Fix.setMinIndex(scroller, value);
27
- case FixParams.maxIndex:
28
- return Fix.setMaxIndex(scroller, value);
29
- case FixParams.updater:
30
- return Fix.updateItems(scroller, value);
31
- case FixParams.scrollToItem:
32
- if (methodData.params) {
33
- const scrollToItemOpt = methodData.params[FixParams.scrollToItemOpt];
34
- const options = scrollToItemOpt ? scrollToItemOpt.value : void 0;
35
- return Fix.scrollToItem(scroller, value, options);
36
- }
37
- return;
38
- case FixParams.scrollToItemOpt:
39
- return;
40
- }
41
- }
42
- static setScrollPosition({ viewport }, value) {
43
- let result = value;
44
- if (value === -Infinity) {
45
- result = 0;
46
- }
47
- else if (value === Infinity) {
48
- result = viewport.getScrollableSize();
49
- }
50
- viewport.setPosition(result);
51
- }
52
- static setMinIndex({ buffer, settings }, value) {
53
- settings.minIndex = value;
54
- buffer.absMinIndex = value;
55
- }
56
- static setMaxIndex({ buffer, settings }, value) {
57
- settings.maxIndex = value;
58
- buffer.absMaxIndex = value;
59
- }
60
- static updateItems({ buffer, logger }, value) {
61
- let updateReference = false;
62
- const updater = () => updateReference = true;
63
- buffer.items.forEach(item => value(item.get(), updater));
64
- if (updateReference) {
65
- logger.log(() => 'update Buffer.items reference');
66
- buffer.items = [...buffer.items];
67
- }
68
- }
69
- static scrollToItem(scroller, value, options) {
70
- const found = scroller.buffer.items.find(item => value(item.get()));
71
- if (!found) {
72
- scroller.logger.log(() => 'scrollToItem cancelled, item not found');
73
- return;
74
- }
75
- found.scrollTo(options);
76
- }
77
- }
1
+ import { AdapterMethods } from '../../inputs/index';
2
+ import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
3
+ const { [AdapterProcess.fix]: FixParams } = AdapterMethods;
4
+ export default class Fix extends BaseAdapterProcessFactory(AdapterProcess.fix) {
5
+ static run(scroller, options) {
6
+ const { workflow } = scroller;
7
+ const { data, params } = Fix.parseInput(scroller, options);
8
+ if (!params) {
9
+ return;
10
+ }
11
+ Object.entries(data.params).forEach(([key, value]) => {
12
+ if (value.isSet && value.isValid) {
13
+ Fix.runByType(scroller, key, value.value, data);
14
+ }
15
+ });
16
+ workflow.call({
17
+ process: Fix.process,
18
+ status: ProcessStatus.done
19
+ });
20
+ }
21
+ static runByType(scroller, token, value, methodData) {
22
+ switch (token) {
23
+ case FixParams.scrollPosition:
24
+ return Fix.setScrollPosition(scroller, value);
25
+ case FixParams.minIndex:
26
+ return Fix.setMinIndex(scroller, value);
27
+ case FixParams.maxIndex:
28
+ return Fix.setMaxIndex(scroller, value);
29
+ case FixParams.updater:
30
+ return Fix.updateItems(scroller, value);
31
+ case FixParams.scrollToItem:
32
+ if (methodData.params) {
33
+ const scrollToItemOpt = methodData.params[FixParams.scrollToItemOpt];
34
+ const options = scrollToItemOpt ? scrollToItemOpt.value : void 0;
35
+ return Fix.scrollToItem(scroller, value, options);
36
+ }
37
+ return;
38
+ case FixParams.scrollToItemOpt:
39
+ return;
40
+ }
41
+ }
42
+ static setScrollPosition({ viewport }, value) {
43
+ let result = value;
44
+ if (value === -Infinity) {
45
+ result = 0;
46
+ }
47
+ else if (value === Infinity) {
48
+ result = viewport.getScrollableSize();
49
+ }
50
+ viewport.setPosition(result);
51
+ }
52
+ static setMinIndex({ buffer, settings }, value) {
53
+ settings.minIndex = value;
54
+ buffer.absMinIndex = value;
55
+ }
56
+ static setMaxIndex({ buffer, settings }, value) {
57
+ settings.maxIndex = value;
58
+ buffer.absMaxIndex = value;
59
+ }
60
+ static updateItems({ buffer, logger }, value) {
61
+ let updateReference = false;
62
+ const updater = () => updateReference = true;
63
+ buffer.items.forEach(item => value(item.get(), updater));
64
+ if (updateReference) {
65
+ logger.log(() => 'update Buffer.items reference');
66
+ buffer.items = [...buffer.items];
67
+ }
68
+ }
69
+ static scrollToItem(scroller, value, options) {
70
+ const found = scroller.buffer.items.find(item => value(item.get()));
71
+ if (!found) {
72
+ scroller.logger.log(() => 'scrollToItem cancelled, item not found');
73
+ return;
74
+ }
75
+ found.scrollTo(options);
76
+ }
77
+ }
78
78
  //# sourceMappingURL=fix.js.map