vscroll 1.6.3 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles/vscroll.esm5.js +5854 -5705
- package/dist/bundles/vscroll.esm5.js.map +1 -1
- package/dist/bundles/vscroll.esm5.min.js +2 -2
- package/dist/bundles/vscroll.esm5.min.js.map +1 -1
- package/dist/bundles/vscroll.esm6.js +5341 -5194
- package/dist/bundles/vscroll.esm6.js.map +1 -1
- package/dist/bundles/vscroll.esm6.min.js +2 -2
- package/dist/bundles/vscroll.esm6.min.js.map +1 -1
- package/dist/bundles/vscroll.umd.js +5858 -5710
- package/dist/bundles/vscroll.umd.js.map +1 -1
- package/dist/bundles/vscroll.umd.min.js +2 -2
- package/dist/bundles/vscroll.umd.min.js.map +1 -1
- package/dist/esm2015/classes/adapter/context.js +44 -43
- package/dist/esm2015/classes/adapter/context.js.map +1 -1
- package/dist/esm2015/classes/adapter/props.js +300 -300
- package/dist/esm2015/classes/adapter/props.js.map +1 -1
- package/dist/esm2015/classes/adapter/wanted.js +28 -28
- package/dist/esm2015/classes/adapter/wanted.js.map +1 -1
- package/dist/esm2015/classes/adapter.js +486 -487
- package/dist/esm2015/classes/adapter.js.map +1 -1
- package/dist/esm2015/classes/buffer/cache.js +249 -246
- package/dist/esm2015/classes/buffer/cache.js.map +1 -1
- package/dist/esm2015/classes/buffer/checkCall.js +47 -48
- package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm2015/classes/buffer/defaultSize.js +128 -127
- package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
- package/dist/esm2015/classes/buffer.js +343 -342
- package/dist/esm2015/classes/buffer.js.map +1 -1
- package/dist/esm2015/classes/datasource.js +36 -24
- package/dist/esm2015/classes/datasource.js.map +1 -1
- package/dist/esm2015/classes/domRoutines.js +160 -160
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/classes/item.js +61 -61
- package/dist/esm2015/classes/item.js.map +1 -1
- package/dist/esm2015/classes/logger.js +229 -186
- package/dist/esm2015/classes/logger.js.map +1 -1
- package/dist/esm2015/classes/paddings.js +76 -72
- package/dist/esm2015/classes/paddings.js.map +1 -1
- package/dist/esm2015/classes/reactive.js +54 -54
- package/dist/esm2015/classes/reactive.js.map +1 -1
- package/dist/esm2015/classes/settings.js +39 -39
- package/dist/esm2015/classes/settings.js.map +1 -1
- package/dist/esm2015/classes/state/clip.js +16 -16
- package/dist/esm2015/classes/state/clip.js.map +1 -1
- package/dist/esm2015/classes/state/cycle.js +60 -60
- package/dist/esm2015/classes/state/cycle.js.map +1 -1
- package/dist/esm2015/classes/state/fetch.js +124 -122
- package/dist/esm2015/classes/state/fetch.js.map +1 -1
- package/dist/esm2015/classes/state/render.js +14 -14
- package/dist/esm2015/classes/state/render.js.map +1 -1
- package/dist/esm2015/classes/state/scroll.js +30 -30
- package/dist/esm2015/classes/state/scroll.js.map +1 -1
- package/dist/esm2015/classes/state.js +64 -62
- package/dist/esm2015/classes/state.js.map +1 -1
- package/dist/esm2015/classes/viewport.js +74 -72
- package/dist/esm2015/classes/viewport.js.map +1 -1
- package/dist/esm2015/index.js +9 -9
- package/dist/esm2015/index.js.map +1 -1
- package/dist/esm2015/inputs/adapter.js +262 -242
- package/dist/esm2015/inputs/adapter.js.map +1 -1
- package/dist/esm2015/inputs/common.js +11 -11
- package/dist/esm2015/inputs/common.js.map +1 -1
- package/dist/esm2015/inputs/datasource.js +20 -20
- package/dist/esm2015/inputs/datasource.js.map +1 -1
- package/dist/esm2015/inputs/index.js +7 -7
- package/dist/esm2015/inputs/index.js.map +1 -1
- package/dist/esm2015/inputs/settings.js +151 -146
- package/dist/esm2015/inputs/settings.js.map +1 -1
- package/dist/esm2015/inputs/validation.js +365 -374
- package/dist/esm2015/inputs/validation.js.map +1 -1
- package/dist/esm2015/inputs/workflow.js +30 -30
- package/dist/esm2015/inputs/workflow.js.map +1 -1
- package/dist/esm2015/interfaces/adapter.js +1 -1
- package/dist/esm2015/interfaces/adapter.js.map +1 -1
- package/dist/esm2015/interfaces/datasource.js +1 -1
- package/dist/esm2015/interfaces/datasource.js.map +1 -1
- package/dist/esm2015/interfaces/index.js +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/item.js +1 -1
- package/dist/esm2015/interfaces/item.js.map +1 -1
- package/dist/esm2015/interfaces/process.js +1 -1
- package/dist/esm2015/interfaces/process.js.map +1 -1
- package/dist/esm2015/interfaces/routines.js +1 -1
- package/dist/esm2015/interfaces/routines.js.map +1 -1
- package/dist/esm2015/interfaces/settings.js +1 -1
- package/dist/esm2015/interfaces/settings.js.map +1 -1
- package/dist/esm2015/interfaces/state.js +1 -1
- package/dist/esm2015/interfaces/state.js.map +1 -1
- package/dist/esm2015/interfaces/validation.js +1 -1
- package/dist/esm2015/interfaces/validation.js.map +1 -1
- package/dist/esm2015/interfaces/workflow.js +1 -1
- package/dist/esm2015/interfaces/workflow.js.map +1 -1
- package/dist/esm2015/processes/adapter/append.js +37 -36
- package/dist/esm2015/processes/adapter/append.js.map +1 -1
- package/dist/esm2015/processes/adapter/check.js +33 -32
- package/dist/esm2015/processes/adapter/check.js.map +1 -1
- package/dist/esm2015/processes/adapter/clip.js +12 -12
- package/dist/esm2015/processes/adapter/clip.js.map +1 -1
- package/dist/esm2015/processes/adapter/fix.js +79 -77
- package/dist/esm2015/processes/adapter/fix.js.map +1 -1
- package/dist/esm2015/processes/adapter/insert.js +74 -73
- package/dist/esm2015/processes/adapter/insert.js.map +1 -1
- package/dist/esm2015/processes/adapter/pause.js +22 -22
- package/dist/esm2015/processes/adapter/pause.js.map +1 -1
- package/dist/esm2015/processes/adapter/reload.js +19 -19
- package/dist/esm2015/processes/adapter/reload.js.map +1 -1
- package/dist/esm2015/processes/adapter/remove.js +105 -102
- package/dist/esm2015/processes/adapter/remove.js.map +1 -1
- package/dist/esm2015/processes/adapter/replace.js +39 -39
- package/dist/esm2015/processes/adapter/replace.js.map +1 -1
- package/dist/esm2015/processes/adapter/reset.js +35 -35
- package/dist/esm2015/processes/adapter/reset.js.map +1 -1
- package/dist/esm2015/processes/adapter/update.js +44 -43
- package/dist/esm2015/processes/adapter/update.js.map +1 -1
- package/dist/esm2015/processes/adjust.js +146 -141
- package/dist/esm2015/processes/adjust.js.map +1 -1
- package/dist/esm2015/processes/clip.js +49 -49
- package/dist/esm2015/processes/clip.js.map +1 -1
- package/dist/esm2015/processes/end.js +53 -52
- package/dist/esm2015/processes/end.js.map +1 -1
- package/dist/esm2015/processes/fetch.js +93 -91
- package/dist/esm2015/processes/fetch.js.map +1 -1
- package/dist/esm2015/processes/index.js +24 -24
- package/dist/esm2015/processes/index.js.map +1 -1
- package/dist/esm2015/processes/init.js +14 -14
- package/dist/esm2015/processes/init.js.map +1 -1
- package/dist/esm2015/processes/misc/base.js +29 -30
- package/dist/esm2015/processes/misc/base.js.map +1 -1
- package/dist/esm2015/processes/misc/enums.js +36 -36
- package/dist/esm2015/processes/misc/enums.js.map +1 -1
- package/dist/esm2015/processes/misc/index.js +2 -2
- package/dist/esm2015/processes/misc/index.js.map +1 -1
- package/dist/esm2015/processes/postFetch.js +66 -65
- package/dist/esm2015/processes/postFetch.js.map +1 -1
- package/dist/esm2015/processes/preClip.js +86 -85
- package/dist/esm2015/processes/preClip.js.map +1 -1
- package/dist/esm2015/processes/preFetch.js +253 -240
- package/dist/esm2015/processes/preFetch.js.map +1 -1
- package/dist/esm2015/processes/render.js +56 -54
- package/dist/esm2015/processes/render.js.map +1 -1
- package/dist/esm2015/processes/scroll.js +106 -97
- package/dist/esm2015/processes/scroll.js.map +1 -1
- package/dist/esm2015/processes/start.js +11 -11
- package/dist/esm2015/processes/start.js.map +1 -1
- package/dist/esm2015/scroller.js +91 -86
- package/dist/esm2015/scroller.js.map +1 -1
- package/dist/esm2015/version.js +4 -4
- package/dist/esm2015/version.js.map +1 -1
- package/dist/esm2015/workflow-transducer.js +219 -218
- package/dist/esm2015/workflow-transducer.js.map +1 -1
- package/dist/esm2015/workflow.js +185 -174
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/adapter/context.js +51 -50
- package/dist/esm5/classes/adapter/context.js.map +1 -1
- package/dist/esm5/classes/adapter/props.js +300 -300
- package/dist/esm5/classes/adapter/props.js.map +1 -1
- package/dist/esm5/classes/adapter/wanted.js +29 -29
- package/dist/esm5/classes/adapter/wanted.js.map +1 -1
- package/dist/esm5/classes/adapter.js +538 -535
- package/dist/esm5/classes/adapter.js.map +1 -1
- package/dist/esm5/classes/buffer/cache.js +262 -260
- package/dist/esm5/classes/buffer/cache.js.map +1 -1
- package/dist/esm5/classes/buffer/checkCall.js +53 -56
- package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm5/classes/buffer/defaultSize.js +146 -145
- package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
- package/dist/esm5/classes/buffer.js +410 -409
- package/dist/esm5/classes/buffer.js.map +1 -1
- package/dist/esm5/classes/datasource.js +47 -31
- package/dist/esm5/classes/datasource.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +165 -165
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/classes/item.js +76 -76
- package/dist/esm5/classes/item.js.map +1 -1
- package/dist/esm5/classes/logger.js +251 -210
- package/dist/esm5/classes/logger.js.map +1 -1
- package/dist/esm5/classes/paddings.js +84 -80
- package/dist/esm5/classes/paddings.js.map +1 -1
- package/dist/esm5/classes/reactive.js +69 -69
- package/dist/esm5/classes/reactive.js.map +1 -1
- package/dist/esm5/classes/settings.js +47 -47
- package/dist/esm5/classes/settings.js.map +1 -1
- package/dist/esm5/classes/state/clip.js +22 -22
- package/dist/esm5/classes/state/clip.js.map +1 -1
- package/dist/esm5/classes/state/cycle.js +75 -75
- package/dist/esm5/classes/state/cycle.js.map +1 -1
- package/dist/esm5/classes/state/fetch.js +150 -148
- package/dist/esm5/classes/state/fetch.js.map +1 -1
- package/dist/esm5/classes/state/render.js +20 -20
- package/dist/esm5/classes/state/render.js.map +1 -1
- package/dist/esm5/classes/state/scroll.js +32 -32
- package/dist/esm5/classes/state/scroll.js.map +1 -1
- package/dist/esm5/classes/state.js +71 -69
- package/dist/esm5/classes/state.js.map +1 -1
- package/dist/esm5/classes/viewport.js +80 -79
- package/dist/esm5/classes/viewport.js.map +1 -1
- package/dist/esm5/index.js +9 -9
- package/dist/esm5/index.js.map +1 -1
- package/dist/esm5/inputs/adapter.js +263 -243
- package/dist/esm5/inputs/adapter.js.map +1 -1
- package/dist/esm5/inputs/common.js +11 -11
- package/dist/esm5/inputs/common.js.map +1 -1
- package/dist/esm5/inputs/datasource.js +21 -21
- package/dist/esm5/inputs/datasource.js.map +1 -1
- package/dist/esm5/inputs/index.js +7 -7
- package/dist/esm5/inputs/index.js.map +1 -1
- package/dist/esm5/inputs/settings.js +152 -147
- package/dist/esm5/inputs/settings.js.map +1 -1
- package/dist/esm5/inputs/validation.js +399 -396
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/inputs/workflow.js +31 -31
- package/dist/esm5/inputs/workflow.js.map +1 -1
- package/dist/esm5/interfaces/adapter.js +1 -1
- package/dist/esm5/interfaces/adapter.js.map +1 -1
- package/dist/esm5/interfaces/datasource.js +1 -1
- package/dist/esm5/interfaces/datasource.js.map +1 -1
- package/dist/esm5/interfaces/index.js +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/item.js +1 -1
- package/dist/esm5/interfaces/item.js.map +1 -1
- package/dist/esm5/interfaces/process.js +1 -1
- package/dist/esm5/interfaces/process.js.map +1 -1
- package/dist/esm5/interfaces/routines.js +1 -1
- package/dist/esm5/interfaces/routines.js.map +1 -1
- package/dist/esm5/interfaces/settings.js +1 -1
- package/dist/esm5/interfaces/settings.js.map +1 -1
- package/dist/esm5/interfaces/state.js +1 -1
- package/dist/esm5/interfaces/state.js.map +1 -1
- package/dist/esm5/interfaces/validation.js +1 -1
- package/dist/esm5/interfaces/validation.js.map +1 -1
- package/dist/esm5/interfaces/workflow.js +1 -1
- package/dist/esm5/interfaces/workflow.js.map +1 -1
- package/dist/esm5/processes/adapter/append.js +45 -44
- package/dist/esm5/processes/adapter/append.js.map +1 -1
- package/dist/esm5/processes/adapter/check.js +40 -39
- package/dist/esm5/processes/adapter/check.js.map +1 -1
- package/dist/esm5/processes/adapter/clip.js +19 -19
- package/dist/esm5/processes/adapter/clip.js.map +1 -1
- package/dist/esm5/processes/adapter/fix.js +91 -89
- package/dist/esm5/processes/adapter/fix.js.map +1 -1
- package/dist/esm5/processes/adapter/insert.js +82 -81
- package/dist/esm5/processes/adapter/insert.js.map +1 -1
- package/dist/esm5/processes/adapter/pause.js +29 -29
- package/dist/esm5/processes/adapter/pause.js.map +1 -1
- package/dist/esm5/processes/adapter/reload.js +26 -26
- package/dist/esm5/processes/adapter/reload.js.map +1 -1
- package/dist/esm5/processes/adapter/remove.js +116 -115
- package/dist/esm5/processes/adapter/remove.js.map +1 -1
- package/dist/esm5/processes/adapter/replace.js +47 -47
- package/dist/esm5/processes/adapter/replace.js.map +1 -1
- package/dist/esm5/processes/adapter/reset.js +42 -42
- package/dist/esm5/processes/adapter/reset.js.map +1 -1
- package/dist/esm5/processes/adapter/update.js +64 -59
- package/dist/esm5/processes/adapter/update.js.map +1 -1
- package/dist/esm5/processes/adjust.js +157 -152
- package/dist/esm5/processes/adjust.js.map +1 -1
- package/dist/esm5/processes/clip.js +60 -60
- package/dist/esm5/processes/clip.js.map +1 -1
- package/dist/esm5/processes/end.js +64 -63
- package/dist/esm5/processes/end.js.map +1 -1
- package/dist/esm5/processes/fetch.js +104 -102
- package/dist/esm5/processes/fetch.js.map +1 -1
- package/dist/esm5/processes/index.js +24 -24
- package/dist/esm5/processes/index.js.map +1 -1
- package/dist/esm5/processes/init.js +21 -21
- package/dist/esm5/processes/init.js.map +1 -1
- package/dist/esm5/processes/misc/base.js +43 -44
- package/dist/esm5/processes/misc/base.js.map +1 -1
- package/dist/esm5/processes/misc/enums.js +36 -36
- package/dist/esm5/processes/misc/enums.js.map +1 -1
- package/dist/esm5/processes/misc/index.js +2 -2
- package/dist/esm5/processes/misc/index.js.map +1 -1
- package/dist/esm5/processes/postFetch.js +73 -74
- package/dist/esm5/processes/postFetch.js.map +1 -1
- package/dist/esm5/processes/preClip.js +95 -94
- package/dist/esm5/processes/preClip.js.map +1 -1
- package/dist/esm5/processes/preFetch.js +259 -247
- package/dist/esm5/processes/preFetch.js.map +1 -1
- package/dist/esm5/processes/render.js +63 -63
- package/dist/esm5/processes/render.js.map +1 -1
- package/dist/esm5/processes/scroll.js +113 -107
- package/dist/esm5/processes/scroll.js.map +1 -1
- package/dist/esm5/processes/start.js +18 -18
- package/dist/esm5/processes/start.js.map +1 -1
- package/dist/esm5/scroller.js +104 -100
- package/dist/esm5/scroller.js.map +1 -1
- package/dist/esm5/version.js +4 -4
- package/dist/esm5/version.js.map +1 -1
- package/dist/esm5/workflow-transducer.js +221 -220
- package/dist/esm5/workflow-transducer.js.map +1 -1
- package/dist/esm5/workflow.js +204 -198
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/adapter/context.d.ts +4 -4
- package/dist/typings/classes/adapter/props.d.ts +52 -52
- package/dist/typings/classes/adapter/wanted.d.ts +14 -14
- package/dist/typings/classes/adapter.d.ts +79 -79
- package/dist/typings/classes/buffer/cache.d.ts +94 -95
- package/dist/typings/classes/buffer/checkCall.d.ts +12 -12
- package/dist/typings/classes/buffer/defaultSize.d.ts +32 -32
- package/dist/typings/classes/buffer.d.ts +64 -64
- package/dist/typings/classes/datasource.d.ts +11 -11
- package/dist/typings/classes/domRoutines.d.ts +36 -36
- package/dist/typings/classes/item.d.ts +28 -28
- package/dist/typings/classes/logger.d.ts +32 -28
- package/dist/typings/classes/paddings.d.ts +22 -22
- package/dist/typings/classes/reactive.d.ts +21 -21
- package/dist/typings/classes/settings.d.ts +126 -119
- package/dist/typings/classes/state/clip.d.ts +9 -9
- package/dist/typings/classes/state/cycle.d.ts +29 -29
- package/dist/typings/classes/state/fetch.d.ts +62 -62
- package/dist/typings/classes/state/render.d.ts +9 -9
- package/dist/typings/classes/state/scroll.d.ts +16 -16
- package/dist/typings/classes/state.d.ts +29 -29
- package/dist/typings/classes/viewport.d.ts +32 -32
- package/dist/typings/index.d.ts +10 -10
- package/dist/typings/inputs/adapter.d.ts +5 -5
- package/dist/typings/inputs/common.d.ts +9 -9
- package/dist/typings/inputs/datasource.d.ts +7 -7
- package/dist/typings/inputs/index.d.ts +7 -7
- package/dist/typings/inputs/settings.d.ts +42 -41
- package/dist/typings/inputs/validation.d.ts +82 -83
- package/dist/typings/inputs/workflow.d.ts +9 -9
- package/dist/typings/interfaces/adapter.d.ts +164 -164
- package/dist/typings/interfaces/datasource.d.ts +28 -28
- package/dist/typings/interfaces/index.d.ts +10 -10
- package/dist/typings/interfaces/item.d.ts +8 -8
- package/dist/typings/interfaces/process.d.ts +35 -35
- package/dist/typings/interfaces/routines.d.ts +166 -166
- package/dist/typings/interfaces/settings.d.ts +32 -31
- package/dist/typings/interfaces/state.d.ts +24 -24
- package/dist/typings/interfaces/validation.d.ts +33 -33
- package/dist/typings/interfaces/workflow.d.ts +53 -53
- package/dist/typings/processes/adapter/append.d.ts +14 -14
- package/dist/typings/processes/adapter/check.d.ts +6 -6
- package/dist/typings/processes/adapter/clip.d.ts +7 -7
- package/dist/typings/processes/adapter/fix.d.ts +13 -13
- package/dist/typings/processes/adapter/insert.d.ts +11 -11
- package/dist/typings/processes/adapter/pause.d.ts +8 -8
- package/dist/typings/processes/adapter/reload.d.ts +6 -6
- package/dist/typings/processes/adapter/remove.d.ts +11 -11
- package/dist/typings/processes/adapter/replace.d.ts +8 -8
- package/dist/typings/processes/adapter/reset.d.ts +7 -7
- package/dist/typings/processes/adapter/update.d.ts +8 -8
- package/dist/typings/processes/adjust.d.ts +10 -10
- package/dist/typings/processes/clip.d.ts +7 -7
- package/dist/typings/processes/end.d.ts +10 -10
- package/dist/typings/processes/fetch.d.ts +18 -18
- package/dist/typings/processes/index.d.ts +24 -24
- package/dist/typings/processes/init.d.ts +7 -7
- package/dist/typings/processes/misc/base.d.ts +4 -4
- package/dist/typings/processes/misc/enums.d.ts +33 -33
- package/dist/typings/processes/misc/index.d.ts +2 -2
- package/dist/typings/processes/postFetch.d.ts +8 -8
- package/dist/typings/processes/preClip.d.ts +12 -12
- package/dist/typings/processes/preFetch.d.ts +17 -17
- package/dist/typings/processes/render.d.ts +9 -9
- package/dist/typings/processes/scroll.d.ts +13 -13
- package/dist/typings/processes/start.d.ts +6 -6
- package/dist/typings/scroller.d.ts +26 -26
- package/dist/typings/version.d.ts +5 -5
- package/dist/typings/workflow-transducer.d.ts +2 -2
- package/dist/typings/workflow.d.ts +30 -29
- package/package.json +72 -69
|
@@ -1,103 +1,106 @@
|
|
|
1
|
-
import Update from './update';
|
|
2
|
-
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
3
|
-
import { Direction } from '../../inputs/index';
|
|
4
|
-
export default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {
|
|
5
|
-
static run(scroller, options) {
|
|
6
|
-
const { params } = Remove.parseInput(scroller, options);
|
|
7
|
-
if (!params) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const shouldRemove = Remove.doRemove(scroller, params);
|
|
11
|
-
scroller.workflow.call({
|
|
12
|
-
process: Remove.process,
|
|
13
|
-
status: shouldRemove ? ProcessStatus.next : ProcessStatus.done
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
static doRemove(scroller, params) {
|
|
17
|
-
const { fetch } = scroller.state;
|
|
18
|
-
fetch.firstVisible.index = NaN;
|
|
19
|
-
const removed = Remove.removeBufferedItems(scroller, params);
|
|
20
|
-
const shouldBuffered = removed.length > 0;
|
|
21
|
-
if (shouldBuffered) {
|
|
22
|
-
// exclude just removed in-buffer indexes
|
|
23
|
-
if (params.indexes && params.indexes.length) {
|
|
24
|
-
params.indexes = params.indexes.filter(i => !removed.includes(i));
|
|
25
|
-
}
|
|
26
|
-
// shift virtual indexes that remain
|
|
27
|
-
if (params.indexes && params.indexes.length) {
|
|
28
|
-
const diffLeft = (params.increase ? 1 : 0) * removed.length;
|
|
29
|
-
const diffRight = (params.increase ? 0 : -1) * removed.length;
|
|
30
|
-
params.indexes = params.indexes.map(index => index + (index < removed[0] ? diffLeft : diffRight));
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
const shouldVirtual = Remove.removeVirtualItems(scroller, params);
|
|
34
|
-
if (!shouldBuffered && !shouldVirtual) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
scroller.logger.stat('after remove');
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
static removeBufferedItems(scroller, options) {
|
|
41
|
-
const { predicate, indexes, increase } = options;
|
|
42
|
-
if (!predicate && !indexes) {
|
|
43
|
-
return [];
|
|
44
|
-
}
|
|
45
|
-
const newPredicate = item => (predicate && predicate(item)) ||
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (isNaN(fetch.firstVisible.index)) {
|
|
81
|
-
const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
|
|
82
|
-
fetch.firstVisible.index = index;
|
|
83
|
-
if (!isNaN(index)) {
|
|
84
|
-
fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// virtual removal
|
|
88
|
-
scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);
|
|
89
|
-
buffer.removeVirtually(toRemove, !!increase);
|
|
90
|
-
buffer.checkDefaultSize();
|
|
91
|
-
Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
static shiftFirstVisibleIndex(scroller, listToRemove, increase) {
|
|
95
|
-
const { firstVisible } = scroller.state.fetch;
|
|
96
|
-
if (isNaN(firstVisible.index)) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
const shift = listToRemove.reduce((acc, index) => acc +
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
1
|
+
import Update from './update';
|
|
2
|
+
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
3
|
+
import { Direction } from '../../inputs/index';
|
|
4
|
+
export default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {
|
|
5
|
+
static run(scroller, options) {
|
|
6
|
+
const { params } = Remove.parseInput(scroller, options);
|
|
7
|
+
if (!params) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const shouldRemove = Remove.doRemove(scroller, params);
|
|
11
|
+
scroller.workflow.call({
|
|
12
|
+
process: Remove.process,
|
|
13
|
+
status: shouldRemove ? ProcessStatus.next : ProcessStatus.done
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
static doRemove(scroller, params) {
|
|
17
|
+
const { fetch } = scroller.state;
|
|
18
|
+
fetch.firstVisible.index = NaN;
|
|
19
|
+
const removed = Remove.removeBufferedItems(scroller, params);
|
|
20
|
+
const shouldBuffered = removed.length > 0;
|
|
21
|
+
if (shouldBuffered) {
|
|
22
|
+
// exclude just removed in-buffer indexes
|
|
23
|
+
if (params.indexes && params.indexes.length) {
|
|
24
|
+
params.indexes = params.indexes.filter(i => !removed.includes(i));
|
|
25
|
+
}
|
|
26
|
+
// shift virtual indexes that remain
|
|
27
|
+
if (params.indexes && params.indexes.length) {
|
|
28
|
+
const diffLeft = (params.increase ? 1 : 0) * removed.length;
|
|
29
|
+
const diffRight = (params.increase ? 0 : -1) * removed.length;
|
|
30
|
+
params.indexes = params.indexes.map(index => index + (index < removed[0] ? diffLeft : diffRight));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const shouldVirtual = Remove.removeVirtualItems(scroller, params);
|
|
34
|
+
if (!shouldBuffered && !shouldVirtual) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
scroller.logger.stat('after remove');
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
static removeBufferedItems(scroller, options) {
|
|
41
|
+
const { predicate, indexes, increase } = options;
|
|
42
|
+
if (!predicate && !indexes) {
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
const newPredicate = item => (predicate && predicate(item)) || (!!indexes && indexes.includes(item.$index));
|
|
46
|
+
const indexesToRemove = scroller.buffer.items.reduce((acc, item) => (newPredicate(item) ? [...acc, item.$index] : acc), []);
|
|
47
|
+
const updateOptions = {
|
|
48
|
+
predicate: item => !newPredicate(item),
|
|
49
|
+
fixRight: increase
|
|
50
|
+
};
|
|
51
|
+
Update.doUpdate(scroller, updateOptions);
|
|
52
|
+
return indexesToRemove;
|
|
53
|
+
}
|
|
54
|
+
static removeVirtualItems(scroller, params) {
|
|
55
|
+
const { indexes, increase } = params;
|
|
56
|
+
if (!indexes || !indexes.length) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const { buffer, viewport, state } = scroller;
|
|
60
|
+
// get items to remove
|
|
61
|
+
const { finiteAbsMinIndex, firstIndex, finiteAbsMaxIndex, lastIndex } = buffer;
|
|
62
|
+
const toRemove = [];
|
|
63
|
+
for (let i = 0, len = indexes.length; i < len; i++) {
|
|
64
|
+
const index = indexes[i];
|
|
65
|
+
if (index >= finiteAbsMinIndex && !isNaN(firstIndex) && index < firstIndex) {
|
|
66
|
+
toRemove.push(index); // backward;
|
|
67
|
+
}
|
|
68
|
+
else if (index <= finiteAbsMaxIndex && !isNaN(lastIndex) && index > lastIndex) {
|
|
69
|
+
toRemove.push(index); // forward;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (!toRemove.length) {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// what should be shown after remove; Buffer removal has priority
|
|
79
|
+
const { fetch } = state;
|
|
80
|
+
if (isNaN(fetch.firstVisible.index)) {
|
|
81
|
+
const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
|
|
82
|
+
fetch.firstVisible.index = index;
|
|
83
|
+
if (!isNaN(index)) {
|
|
84
|
+
fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// virtual removal
|
|
88
|
+
scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);
|
|
89
|
+
buffer.removeVirtually(toRemove, !!increase);
|
|
90
|
+
buffer.checkDefaultSize();
|
|
91
|
+
Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
static shiftFirstVisibleIndex(scroller, listToRemove, increase) {
|
|
95
|
+
const { firstVisible } = scroller.state.fetch;
|
|
96
|
+
if (isNaN(firstVisible.index)) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const shift = listToRemove.reduce((acc, index) => acc +
|
|
100
|
+
((increase && index > firstVisible.index) || (!increase && index < firstVisible.index)
|
|
101
|
+
? 1
|
|
102
|
+
: 0), 0);
|
|
103
|
+
firstVisible.index = firstVisible.index + (increase ? shift : -shift);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
103
106
|
//# sourceMappingURL=remove.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/processes/adapter/remove.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/processes/adapter/remove.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../../scroller';\nimport Update from './update';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { Direction } from '../../inputs/index';\nimport { AdapterRemoveOptions, AdapterUpdateOptions, ItemsPredicate } from '../../interfaces/index';\n\nexport default class Remove extends BaseAdapterProcessFactory(AdapterProcess.remove) {\n static run(scroller: Scroller, options: AdapterRemoveOptions): void {\n const { params } = Remove.parseInput(scroller, options);\n if (!params) {\n return;\n }\n const shouldRemove = Remove.doRemove(scroller, params);\n\n scroller.workflow.call({\n process: Remove.process,\n status: shouldRemove ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doRemove(scroller: Scroller, params: AdapterRemoveOptions): boolean {\n const { fetch } = scroller.state;\n fetch.firstVisible.index = NaN;\n const removed = Remove.removeBufferedItems(scroller, params);\n const shouldBuffered = removed.length > 0;\n if (shouldBuffered) {\n // exclude just removed in-buffer indexes\n if (params.indexes && params.indexes.length) {\n params.indexes = params.indexes.filter(i => !removed.includes(i));\n }\n // shift virtual indexes that remain\n if (params.indexes && params.indexes.length) {\n const diffLeft = (params.increase ? 1 : 0) * removed.length;\n const diffRight = (params.increase ? 0 : -1) * removed.length;\n params.indexes = params.indexes.map(\n index => index + (index < removed[0] ? diffLeft : diffRight)\n );\n }\n }\n const shouldVirtual = Remove.removeVirtualItems(scroller, params);\n if (!shouldBuffered && !shouldVirtual) {\n return false;\n }\n scroller.logger.stat('after remove');\n return true;\n }\n\n static removeBufferedItems(scroller: Scroller, options: AdapterRemoveOptions): number[] {\n const { predicate, indexes, increase } = options;\n if (!predicate && !indexes) {\n return [];\n }\n const newPredicate: ItemsPredicate = item =>\n (predicate && predicate(item)) || (!!indexes && indexes.includes(item.$index));\n\n const indexesToRemove: number[] = scroller.buffer.items.reduce(\n (acc, item) => (newPredicate(item) ? [...acc, item.$index] : acc),\n [] as number[]\n );\n const updateOptions: AdapterUpdateOptions = {\n predicate: item => !newPredicate(item),\n fixRight: increase\n };\n Update.doUpdate(scroller, updateOptions);\n return indexesToRemove;\n }\n\n static removeVirtualItems(scroller: Scroller, params: AdapterRemoveOptions): boolean {\n const { indexes, increase } = params;\n if (!indexes || !indexes.length) {\n return false;\n }\n const { buffer, viewport, state } = scroller;\n\n // get items to remove\n const { finiteAbsMinIndex, firstIndex, finiteAbsMaxIndex, lastIndex } = buffer;\n const toRemove = [];\n for (let i = 0, len = indexes.length; i < len; i++) {\n const index = indexes[i];\n if (index >= finiteAbsMinIndex && !isNaN(firstIndex) && index < firstIndex) {\n toRemove.push(index); // backward;\n } else if (index <= finiteAbsMaxIndex && !isNaN(lastIndex) && index > lastIndex) {\n toRemove.push(index); // forward;\n } else {\n continue;\n }\n }\n\n if (!toRemove.length) {\n return false;\n }\n\n // what should be shown after remove; Buffer removal has priority\n const { fetch } = state;\n if (isNaN(fetch.firstVisible.index)) {\n const { index, diff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\n fetch.firstVisible.index = index;\n if (!isNaN(index)) {\n fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;\n }\n }\n\n // virtual removal\n scroller.logger.log(() => `going to remove ${toRemove.length} item(s) virtually`);\n buffer.removeVirtually(toRemove, !!increase);\n buffer.checkDefaultSize();\n Remove.shiftFirstVisibleIndex(scroller, toRemove, !!increase);\n\n return true;\n }\n\n static shiftFirstVisibleIndex(\n scroller: Scroller,\n listToRemove: number[],\n increase: boolean\n ): void {\n const { firstVisible } = scroller.state.fetch;\n if (isNaN(firstVisible.index)) {\n return;\n }\n const shift = listToRemove.reduce(\n (acc, index) =>\n acc +\n ((increase && index > firstVisible.index) || (!increase && index < firstVisible.index)\n ? 1\n : 0),\n 0\n );\n firstVisible.index = firstVisible.index + (increase ? shift : -shift);\n }\n}\n"]}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import Update from './update';
|
|
2
|
-
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
3
|
-
export default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {
|
|
4
|
-
static run(scroller, options) {
|
|
5
|
-
const { params } = Replace.parseInput(scroller, options);
|
|
6
|
-
if (!params) {
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
const shouldReplace = Replace.doReplace(scroller, params);
|
|
10
|
-
scroller.workflow.call({
|
|
11
|
-
process: Replace.process,
|
|
12
|
-
status: shouldReplace ? ProcessStatus.next : ProcessStatus.done
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
static doReplace(scroller, params) {
|
|
16
|
-
const toRemove = scroller.buffer.items
|
|
17
|
-
.filter(item => params.predicate(item))
|
|
18
|
-
.map(item => item.$index);
|
|
19
|
-
if (!toRemove.length) {
|
|
20
|
-
scroller.logger.log('no items to be replaced');
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
let injected = false;
|
|
24
|
-
const updateOptions = {
|
|
25
|
-
predicate: ({ $index }) => {
|
|
26
|
-
if (!toRemove.includes($index)) {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
if (!injected) {
|
|
30
|
-
injected = true;
|
|
31
|
-
return params.items;
|
|
32
|
-
}
|
|
33
|
-
return false;
|
|
34
|
-
},
|
|
35
|
-
fixRight: params.fixRight
|
|
36
|
-
};
|
|
37
|
-
return Update.doUpdate(scroller, updateOptions);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
1
|
+
import Update from './update';
|
|
2
|
+
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
3
|
+
export default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {
|
|
4
|
+
static run(scroller, options) {
|
|
5
|
+
const { params } = Replace.parseInput(scroller, options);
|
|
6
|
+
if (!params) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const shouldReplace = Replace.doReplace(scroller, params);
|
|
10
|
+
scroller.workflow.call({
|
|
11
|
+
process: Replace.process,
|
|
12
|
+
status: shouldReplace ? ProcessStatus.next : ProcessStatus.done
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static doReplace(scroller, params) {
|
|
16
|
+
const toRemove = scroller.buffer.items
|
|
17
|
+
.filter(item => params.predicate(item))
|
|
18
|
+
.map(item => item.$index);
|
|
19
|
+
if (!toRemove.length) {
|
|
20
|
+
scroller.logger.log('no items to be replaced');
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
let injected = false;
|
|
24
|
+
const updateOptions = {
|
|
25
|
+
predicate: ({ $index }) => {
|
|
26
|
+
if (!toRemove.includes($index)) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
if (!injected) {
|
|
30
|
+
injected = true;
|
|
31
|
+
return params.items;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
},
|
|
35
|
+
fixRight: params.fixRight
|
|
36
|
+
};
|
|
37
|
+
return Update.doUpdate(scroller, updateOptions);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
40
|
//# sourceMappingURL=replace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replace.js","sourceRoot":"","sources":["../../../../src/processes/adapter/replace.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,yBAAyB,CAAC,cAAc,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"replace.js","sourceRoot":"","sources":["../../../../src/processes/adapter/replace.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,yBAAyB,CAAC,cAAc,CAAC,OAAO,CAAC;IACpF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA8B;QAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAChE,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,QAAkB,EAAE,MAA6B;QAChE,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK;aACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,aAAa,GAAyB;YAC1C,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,MAAM,CAAC,KAAK,CAAC;gBACtB,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QAEF,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { Scroller } from '../../scroller';\nimport Update from './update';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { AdapterReplaceOptions, AdapterUpdateOptions } from '../../interfaces/index';\n\nexport default class Replace extends BaseAdapterProcessFactory(AdapterProcess.replace) {\n static run(scroller: Scroller, options: AdapterReplaceOptions): void {\n const { params } = Replace.parseInput(scroller, options);\n if (!params) {\n return;\n }\n const shouldReplace = Replace.doReplace(scroller, params);\n\n scroller.workflow.call({\n process: Replace.process,\n status: shouldReplace ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doReplace(scroller: Scroller, params: AdapterReplaceOptions): boolean {\n const toRemove = scroller.buffer.items\n .filter(item => params.predicate(item))\n .map(item => item.$index);\n\n if (!toRemove.length) {\n scroller.logger.log('no items to be replaced');\n return false;\n }\n\n let injected = false;\n const updateOptions: AdapterUpdateOptions = {\n predicate: ({ $index }) => {\n if (!toRemove.includes($index)) {\n return true;\n }\n if (!injected) {\n injected = true;\n return params.items;\n }\n return false;\n },\n fixRight: params.fixRight\n };\n\n return Update.doUpdate(scroller, updateOptions);\n }\n}\n"]}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { DatasourceProps } from '../../inputs/index';
|
|
2
|
-
import { Datasource } from '../../classes/datasource';
|
|
3
|
-
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
4
|
-
export default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {
|
|
5
|
-
static run(scroller, options) {
|
|
6
|
-
const { datasource, buffer, viewport
|
|
7
|
-
if (options) {
|
|
8
|
-
const { data } = Reset.parseInput(scroller, options);
|
|
9
|
-
if (!data.isValid) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
const constructed = options instanceof Datasource;
|
|
13
|
-
Object.keys(DatasourceProps).forEach(key => {
|
|
14
|
-
const param = data.params[key];
|
|
15
|
-
const ds = datasource;
|
|
16
|
-
if (param.isSet || (constructed && ds[key])) {
|
|
17
|
-
ds[key] = param.value;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
buffer.reset(true);
|
|
22
|
-
paddings.backward.reset();
|
|
23
|
-
paddings.forward.reset();
|
|
24
|
-
const payload = { datasource };
|
|
25
|
-
if (cycle.busy.get()) {
|
|
26
|
-
payload.finalize = true;
|
|
27
|
-
cycle.interrupter = Reset.process;
|
|
28
|
-
}
|
|
29
|
-
scroller.workflow.call({
|
|
30
|
-
process: Reset.process,
|
|
31
|
-
status: ProcessStatus.next,
|
|
32
|
-
payload
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
import { DatasourceProps } from '../../inputs/index';
|
|
2
|
+
import { Datasource } from '../../classes/datasource';
|
|
3
|
+
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
4
|
+
export default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {
|
|
5
|
+
static run(scroller, options) {
|
|
6
|
+
const { datasource, buffer, viewport, state } = scroller;
|
|
7
|
+
if (options) {
|
|
8
|
+
const { data } = Reset.parseInput(scroller, options);
|
|
9
|
+
if (!data.isValid) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const constructed = options instanceof Datasource;
|
|
13
|
+
Object.keys(DatasourceProps).forEach(key => {
|
|
14
|
+
const param = data.params[key];
|
|
15
|
+
const ds = datasource;
|
|
16
|
+
if (param.isSet || (constructed && ds[key])) {
|
|
17
|
+
ds[key] = param.value;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
buffer.reset(true);
|
|
22
|
+
viewport.paddings.backward.reset();
|
|
23
|
+
viewport.paddings.forward.reset();
|
|
24
|
+
const payload = { datasource };
|
|
25
|
+
if (state.cycle.busy.get()) {
|
|
26
|
+
payload.finalize = true;
|
|
27
|
+
state.cycle.interrupter = Reset.process;
|
|
28
|
+
}
|
|
29
|
+
scroller.workflow.call({
|
|
30
|
+
process: Reset.process,
|
|
31
|
+
status: ProcessStatus.next,
|
|
32
|
+
payload
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
36
|
//# sourceMappingURL=reset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/processes/adapter/reset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../../src/processes/adapter/reset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGzF,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,yBAAyB,CAAC,cAAc,CAAC,KAAK,CAAC;IAChF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA6B;QAC1D,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO;YACT,CAAC;YACD,MAAM,WAAW,GAAG,OAAO,YAAY,UAAU,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,EAAE,GAAG,UAAmD,CAAC;gBAC/D,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC5C,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAElC,MAAM,OAAO,GAAmB,EAAE,UAAU,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC3B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;YACxB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1C,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,aAAa,CAAC,IAAI;YAC1B,OAAO;SACR,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { Scroller } from '../../scroller';\nimport { DatasourceProps } from '../../inputs/index';\nimport { Datasource } from '../../classes/datasource';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { IDatasourceOptional, ProcessPayload } from '../../interfaces/index';\n\nexport default class Reset extends BaseAdapterProcessFactory(AdapterProcess.reset) {\n static run(scroller: Scroller, options?: IDatasourceOptional): void {\n const { datasource, buffer, viewport, state } = scroller;\n if (options) {\n const { data } = Reset.parseInput(scroller, options);\n if (!data.isValid) {\n return;\n }\n const constructed = options instanceof Datasource;\n Object.keys(DatasourceProps).forEach(key => {\n const param = data.params[key];\n const ds = datasource as unknown as { [key: string]: unknown };\n if (param.isSet || (constructed && ds[key])) {\n ds[key] = param.value;\n }\n });\n }\n\n buffer.reset(true);\n viewport.paddings.backward.reset();\n viewport.paddings.forward.reset();\n\n const payload: ProcessPayload = { datasource };\n if (state.cycle.busy.get()) {\n payload.finalize = true;\n state.cycle.interrupter = Reset.process;\n }\n\n scroller.workflow.call({\n process: Reset.process,\n status: ProcessStatus.next,\n payload\n });\n }\n}\n"]}
|
|
@@ -1,44 +1,45 @@
|
|
|
1
|
-
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
2
|
-
import { Item } from '../../classes/item';
|
|
3
|
-
import { Direction } from '../../inputs/index';
|
|
4
|
-
export default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {
|
|
5
|
-
static run(scroller, options) {
|
|
6
|
-
const { params } = Update.parseInput(scroller, options);
|
|
7
|
-
if (!params) {
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
const shouldUpdate = Update.doUpdate(scroller, params);
|
|
11
|
-
scroller.workflow.call({
|
|
12
|
-
process: Update.process,
|
|
13
|
-
status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
static doUpdate(scroller, params) {
|
|
17
|
-
const { buffer, viewport, state
|
|
18
|
-
if (!buffer.items) {
|
|
19
|
-
logger.log(() => 'no items in Buffer');
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
const { item: firstItem, index: firstIndex, diff: firstItemDiff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
|
|
23
|
-
const { trackedIndex, toRemove } = buffer.updateItems(params.predicate, (index, data) => new Item(index, data, routines), firstIndex, !!params.fixRight);
|
|
24
|
-
let delta = 0;
|
|
25
|
-
const trackedItem = buffer.get(trackedIndex);
|
|
26
|
-
if (firstItem && firstItem === trackedItem) {
|
|
27
|
-
delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;
|
|
28
|
-
}
|
|
29
|
-
toRemove.forEach(item => item.hide());
|
|
30
|
-
logger.log(() => toRemove.length
|
|
31
|
-
? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'
|
|
32
|
-
: 'no items to remove');
|
|
33
|
-
if (toRemove.length) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
1
|
+
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
2
|
+
import { Item } from '../../classes/item';
|
|
3
|
+
import { Direction } from '../../inputs/index';
|
|
4
|
+
export default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {
|
|
5
|
+
static run(scroller, options) {
|
|
6
|
+
const { params } = Update.parseInput(scroller, options);
|
|
7
|
+
if (!params) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const shouldUpdate = Update.doUpdate(scroller, params);
|
|
11
|
+
scroller.workflow.call({
|
|
12
|
+
process: Update.process,
|
|
13
|
+
status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
static doUpdate(scroller, params) {
|
|
17
|
+
const { buffer, viewport, state, routines, logger } = scroller;
|
|
18
|
+
if (!buffer.items) {
|
|
19
|
+
logger.log(() => 'no items in Buffer');
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const { item: firstItem, index: firstIndex, diff: firstItemDiff } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);
|
|
23
|
+
const { trackedIndex, toRemove } = buffer.updateItems(params.predicate, (index, data) => new Item(index, data, routines), firstIndex, !!params.fixRight);
|
|
24
|
+
let delta = 0;
|
|
25
|
+
const trackedItem = buffer.get(trackedIndex);
|
|
26
|
+
if (firstItem && firstItem === trackedItem) {
|
|
27
|
+
delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;
|
|
28
|
+
}
|
|
29
|
+
toRemove.forEach(item => item.hide());
|
|
30
|
+
logger.log(() => toRemove.length
|
|
31
|
+
? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'
|
|
32
|
+
: 'no items to remove');
|
|
33
|
+
if (toRemove.length) {
|
|
34
|
+
// insertions will be processed on render
|
|
35
|
+
buffer.checkDefaultSize();
|
|
36
|
+
}
|
|
37
|
+
const toRender = buffer.items.filter(({ toInsert }) => toInsert);
|
|
38
|
+
logger.log(() => toRender.length
|
|
39
|
+
? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'
|
|
40
|
+
: 'no items to render');
|
|
41
|
+
state.fetch.update(trackedIndex, delta, toRender, toRemove);
|
|
42
|
+
return !!toRemove.length || !!toRender.length;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
44
45
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/processes/adapter/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/processes/adapter/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC;IAClF,MAAM,CAAC,GAAG,CAAC,QAAkB,EAAE,OAA6B;QAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEvD,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,MAA4B;QAC9D,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,EACJ,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,aAAa,EACpB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;QAElE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CACnD,MAAM,CAAC,SAAS,EAChB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAChD,UAAU,EACV,CAAC,CAAC,MAAM,CAAC,QAAQ,CAClB,CAAC;QAEF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC7C,IAAI,SAAS,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC3C,KAAK,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,aAAa,CAAC;QAC/D,CAAC;QAED,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,QAAQ,CAAC,MAAM;YACb,CAAC,CAAC,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;YAC7E,CAAC,CAAC,oBAAoB,CACzB,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,yCAAyC;YACzC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,QAAQ,CAAC,MAAM;YACb,CAAC,CAAC,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG;YAC7E,CAAC,CAAC,oBAAoB,CACzB,CAAC;QAEF,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC5D,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;IAChD,CAAC;CACF","sourcesContent":["import { Scroller } from '../../scroller';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { Item } from '../../classes/item';\nimport { Direction } from '../../inputs/index';\nimport { AdapterUpdateOptions } from '../../interfaces/index';\n\nexport default class Update extends BaseAdapterProcessFactory(AdapterProcess.update) {\n static run(scroller: Scroller, options: AdapterUpdateOptions): void {\n const { params } = Update.parseInput(scroller, options);\n if (!params) {\n return;\n }\n\n const shouldUpdate = Update.doUpdate(scroller, params);\n\n scroller.workflow.call({\n process: Update.process,\n status: shouldUpdate ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doUpdate(scroller: Scroller, params: AdapterUpdateOptions): boolean {\n const { buffer, viewport, state, routines, logger } = scroller;\n if (!buffer.items) {\n logger.log(() => 'no items in Buffer');\n return false;\n }\n const {\n item: firstItem,\n index: firstIndex,\n diff: firstItemDiff\n } = viewport.getEdgeVisibleItem(buffer.items, Direction.backward);\n\n const { trackedIndex, toRemove } = buffer.updateItems(\n params.predicate,\n (index, data) => new Item(index, data, routines),\n firstIndex,\n !!params.fixRight\n );\n\n let delta = 0;\n const trackedItem = buffer.get(trackedIndex);\n if (firstItem && firstItem === trackedItem) {\n delta = -buffer.getSizeByIndex(trackedIndex) + firstItemDiff;\n }\n\n toRemove.forEach(item => item.hide());\n logger.log(() =>\n toRemove.length\n ? 'items to remove: [' + toRemove.map(({ $index }) => $index).join(',') + ']'\n : 'no items to remove'\n );\n if (toRemove.length) {\n // insertions will be processed on render\n buffer.checkDefaultSize();\n }\n\n const toRender = buffer.items.filter(({ toInsert }) => toInsert);\n logger.log(() =>\n toRender.length\n ? 'items to render: [' + toRender.map(({ $index }) => $index).join(',') + ']'\n : 'no items to render'\n );\n\n state.fetch.update(trackedIndex, delta, toRender, toRemove);\n return !!toRemove.length || !!toRender.length;\n }\n}\n"]}
|