vscroll 1.7.0 → 1.8.1
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 +518 -368
- 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 +408 -260
- 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 +519 -369
- 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 +2 -1
- package/dist/esm2015/classes/adapter/context.js.map +1 -1
- package/dist/esm2015/classes/adapter/props.js +2 -2
- package/dist/esm2015/classes/adapter/props.js.map +1 -1
- package/dist/esm2015/classes/adapter.js +17 -18
- package/dist/esm2015/classes/adapter.js.map +1 -1
- package/dist/esm2015/classes/buffer/cache.js +11 -8
- package/dist/esm2015/classes/buffer/cache.js.map +1 -1
- package/dist/esm2015/classes/buffer/checkCall.js +4 -5
- package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm2015/classes/buffer/defaultSize.js +2 -1
- package/dist/esm2015/classes/buffer/defaultSize.js.map +1 -1
- package/dist/esm2015/classes/buffer.js +12 -11
- package/dist/esm2015/classes/buffer.js.map +1 -1
- package/dist/esm2015/classes/datasource.js +16 -3
- package/dist/esm2015/classes/datasource.js.map +1 -1
- package/dist/esm2015/classes/domRoutines.js +14 -14
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/classes/logger.js +74 -31
- package/dist/esm2015/classes/logger.js.map +1 -1
- package/dist/esm2015/classes/paddings.js +6 -2
- package/dist/esm2015/classes/paddings.js.map +1 -1
- package/dist/esm2015/classes/reactive.js.map +1 -1
- package/dist/esm2015/classes/settings.js.map +1 -1
- package/dist/esm2015/classes/state/clip.js.map +1 -1
- package/dist/esm2015/classes/state/fetch.js +4 -2
- package/dist/esm2015/classes/state/fetch.js.map +1 -1
- package/dist/esm2015/classes/state.js +6 -4
- package/dist/esm2015/classes/state.js.map +1 -1
- package/dist/esm2015/classes/viewport.js +4 -2
- package/dist/esm2015/classes/viewport.js.map +1 -1
- package/dist/esm2015/index.js +1 -1
- package/dist/esm2015/index.js.map +1 -1
- package/dist/esm2015/inputs/adapter.js +44 -24
- package/dist/esm2015/inputs/adapter.js.map +1 -1
- package/dist/esm2015/inputs/datasource.js.map +1 -1
- package/dist/esm2015/inputs/index.js +1 -1
- package/dist/esm2015/inputs/index.js.map +1 -1
- package/dist/esm2015/inputs/settings.js +8 -3
- package/dist/esm2015/inputs/settings.js.map +1 -1
- package/dist/esm2015/inputs/validation.js +8 -14
- package/dist/esm2015/inputs/validation.js.map +1 -1
- package/dist/esm2015/inputs/workflow.js.map +1 -1
- package/dist/esm2015/interfaces/datasource.js.map +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/process.js.map +1 -1
- package/dist/esm2015/interfaces/routines.js.map +1 -1
- package/dist/esm2015/interfaces/settings.js.map +1 -1
- package/dist/esm2015/interfaces/validation.js.map +1 -1
- package/dist/esm2015/interfaces/workflow.js.map +1 -1
- package/dist/esm2015/processes/adapter/append.js +2 -1
- package/dist/esm2015/processes/adapter/append.js.map +1 -1
- package/dist/esm2015/processes/adapter/check.js +2 -1
- package/dist/esm2015/processes/adapter/check.js.map +1 -1
- package/dist/esm2015/processes/adapter/clip.js.map +1 -1
- package/dist/esm2015/processes/adapter/fix.js +4 -2
- package/dist/esm2015/processes/adapter/fix.js.map +1 -1
- package/dist/esm2015/processes/adapter/insert.js +4 -3
- package/dist/esm2015/processes/adapter/insert.js.map +1 -1
- package/dist/esm2015/processes/adapter/pause.js.map +1 -1
- package/dist/esm2015/processes/adapter/reload.js.map +1 -1
- package/dist/esm2015/processes/adapter/remove.js +8 -5
- package/dist/esm2015/processes/adapter/remove.js.map +1 -1
- package/dist/esm2015/processes/adapter/replace.js +1 -1
- package/dist/esm2015/processes/adapter/replace.js.map +1 -1
- package/dist/esm2015/processes/adapter/reset.js +5 -5
- package/dist/esm2015/processes/adapter/reset.js.map +1 -1
- package/dist/esm2015/processes/adapter/update.js +4 -3
- package/dist/esm2015/processes/adapter/update.js.map +1 -1
- package/dist/esm2015/processes/adjust.js +15 -10
- package/dist/esm2015/processes/adjust.js.map +1 -1
- package/dist/esm2015/processes/clip.js +4 -4
- package/dist/esm2015/processes/clip.js.map +1 -1
- package/dist/esm2015/processes/end.js +2 -1
- package/dist/esm2015/processes/end.js.map +1 -1
- package/dist/esm2015/processes/fetch.js +6 -4
- package/dist/esm2015/processes/fetch.js.map +1 -1
- package/dist/esm2015/processes/index.js +1 -1
- package/dist/esm2015/processes/index.js.map +1 -1
- package/dist/esm2015/processes/init.js.map +1 -1
- package/dist/esm2015/processes/misc/base.js +1 -2
- package/dist/esm2015/processes/misc/base.js.map +1 -1
- package/dist/esm2015/processes/misc/enums.js.map +1 -1
- package/dist/esm2015/processes/postFetch.js +13 -12
- package/dist/esm2015/processes/postFetch.js.map +1 -1
- package/dist/esm2015/processes/preClip.js +6 -5
- package/dist/esm2015/processes/preClip.js.map +1 -1
- package/dist/esm2015/processes/preFetch.js +28 -15
- package/dist/esm2015/processes/preFetch.js.map +1 -1
- package/dist/esm2015/processes/render.js +6 -4
- package/dist/esm2015/processes/render.js.map +1 -1
- package/dist/esm2015/processes/scroll.js +19 -10
- package/dist/esm2015/processes/scroll.js.map +1 -1
- package/dist/esm2015/processes/start.js.map +1 -1
- package/dist/esm2015/scroller.js +14 -9
- package/dist/esm2015/scroller.js.map +1 -1
- package/dist/esm2015/version.js +1 -1
- package/dist/esm2015/version.js.map +1 -1
- package/dist/esm2015/workflow-transducer.js +3 -2
- package/dist/esm2015/workflow-transducer.js.map +1 -1
- package/dist/esm2015/workflow.js +28 -17
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/adapter/context.js +2 -1
- package/dist/esm5/classes/adapter/context.js.map +1 -1
- package/dist/esm5/classes/adapter/props.js +2 -2
- package/dist/esm5/classes/adapter/props.js.map +1 -1
- package/dist/esm5/classes/adapter.js +22 -19
- package/dist/esm5/classes/adapter.js.map +1 -1
- package/dist/esm5/classes/buffer/cache.js +11 -9
- package/dist/esm5/classes/buffer/cache.js.map +1 -1
- package/dist/esm5/classes/buffer/checkCall.js +4 -7
- package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm5/classes/buffer/defaultSize.js +2 -1
- package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
- package/dist/esm5/classes/buffer.js +15 -14
- package/dist/esm5/classes/buffer.js.map +1 -1
- package/dist/esm5/classes/datasource.js +20 -3
- package/dist/esm5/classes/datasource.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +14 -14
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/classes/logger.js +75 -34
- package/dist/esm5/classes/logger.js.map +1 -1
- package/dist/esm5/classes/paddings.js +6 -2
- package/dist/esm5/classes/paddings.js.map +1 -1
- package/dist/esm5/classes/reactive.js.map +1 -1
- package/dist/esm5/classes/settings.js.map +1 -1
- package/dist/esm5/classes/state/clip.js.map +1 -1
- package/dist/esm5/classes/state/fetch.js +4 -2
- package/dist/esm5/classes/state/fetch.js.map +1 -1
- package/dist/esm5/classes/state.js +6 -4
- package/dist/esm5/classes/state.js.map +1 -1
- package/dist/esm5/classes/viewport.js +3 -2
- package/dist/esm5/classes/viewport.js.map +1 -1
- package/dist/esm5/index.js +1 -1
- package/dist/esm5/index.js.map +1 -1
- package/dist/esm5/inputs/adapter.js +32 -12
- package/dist/esm5/inputs/adapter.js.map +1 -1
- package/dist/esm5/inputs/datasource.js.map +1 -1
- package/dist/esm5/inputs/index.js +1 -1
- package/dist/esm5/inputs/index.js.map +1 -1
- package/dist/esm5/inputs/settings.js +5 -0
- package/dist/esm5/inputs/settings.js.map +1 -1
- package/dist/esm5/inputs/validation.js +99 -93
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/inputs/workflow.js.map +1 -1
- package/dist/esm5/interfaces/datasource.js.map +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/process.js.map +1 -1
- package/dist/esm5/interfaces/routines.js.map +1 -1
- package/dist/esm5/interfaces/settings.js.map +1 -1
- package/dist/esm5/interfaces/validation.js.map +1 -1
- package/dist/esm5/interfaces/workflow.js.map +1 -1
- package/dist/esm5/processes/adapter/append.js +2 -1
- package/dist/esm5/processes/adapter/append.js.map +1 -1
- package/dist/esm5/processes/adapter/check.js +7 -6
- package/dist/esm5/processes/adapter/check.js.map +1 -1
- package/dist/esm5/processes/adapter/clip.js.map +1 -1
- package/dist/esm5/processes/adapter/fix.js +4 -2
- package/dist/esm5/processes/adapter/fix.js.map +1 -1
- package/dist/esm5/processes/adapter/insert.js +4 -3
- package/dist/esm5/processes/adapter/insert.js.map +1 -1
- package/dist/esm5/processes/adapter/pause.js.map +1 -1
- package/dist/esm5/processes/adapter/reload.js.map +1 -1
- package/dist/esm5/processes/adapter/remove.js +11 -10
- package/dist/esm5/processes/adapter/remove.js.map +1 -1
- package/dist/esm5/processes/adapter/replace.js +1 -1
- package/dist/esm5/processes/adapter/replace.js.map +1 -1
- package/dist/esm5/processes/adapter/reset.js +5 -5
- package/dist/esm5/processes/adapter/reset.js.map +1 -1
- package/dist/esm5/processes/adapter/update.js +20 -15
- package/dist/esm5/processes/adapter/update.js.map +1 -1
- package/dist/esm5/processes/adjust.js +16 -11
- package/dist/esm5/processes/adjust.js.map +1 -1
- package/dist/esm5/processes/clip.js +4 -4
- package/dist/esm5/processes/clip.js.map +1 -1
- package/dist/esm5/processes/end.js +2 -1
- package/dist/esm5/processes/end.js.map +1 -1
- package/dist/esm5/processes/fetch.js +5 -3
- package/dist/esm5/processes/fetch.js.map +1 -1
- package/dist/esm5/processes/index.js +1 -1
- package/dist/esm5/processes/index.js.map +1 -1
- package/dist/esm5/processes/init.js.map +1 -1
- package/dist/esm5/processes/misc/base.js +1 -2
- package/dist/esm5/processes/misc/base.js.map +1 -1
- package/dist/esm5/processes/misc/enums.js.map +1 -1
- package/dist/esm5/processes/postFetch.js +14 -15
- package/dist/esm5/processes/postFetch.js.map +1 -1
- package/dist/esm5/processes/preClip.js +5 -4
- package/dist/esm5/processes/preClip.js.map +1 -1
- package/dist/esm5/processes/preFetch.js +26 -14
- package/dist/esm5/processes/preFetch.js.map +1 -1
- package/dist/esm5/processes/render.js +7 -7
- package/dist/esm5/processes/render.js.map +1 -1
- package/dist/esm5/processes/scroll.js +18 -12
- package/dist/esm5/processes/scroll.js.map +1 -1
- package/dist/esm5/processes/start.js.map +1 -1
- package/dist/esm5/scroller.js +11 -7
- package/dist/esm5/scroller.js.map +1 -1
- package/dist/esm5/version.js +1 -1
- package/dist/esm5/version.js.map +1 -1
- package/dist/esm5/workflow-transducer.js +3 -2
- package/dist/esm5/workflow-transducer.js.map +1 -1
- package/dist/esm5/workflow.js +31 -25
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/buffer/cache.d.ts +0 -1
- package/dist/typings/classes/datasource.d.ts +1 -1
- package/dist/typings/classes/domRoutines.d.ts +1 -1
- package/dist/typings/classes/logger.d.ts +4 -0
- package/dist/typings/classes/settings.d.ts +7 -0
- package/dist/typings/index.d.ts +3 -3
- package/dist/typings/inputs/index.d.ts +1 -1
- package/dist/typings/inputs/settings.d.ts +1 -0
- package/dist/typings/interfaces/index.d.ts +10 -10
- package/dist/typings/interfaces/settings.d.ts +1 -0
- package/dist/typings/processes/index.d.ts +1 -1
- package/dist/typings/processes/scroll.d.ts +1 -1
- package/dist/typings/workflow.d.ts +1 -0
- package/package.json +23 -22
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../src/processes/clip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;IAAkC,wBAAsC;IAAxE;;
|
|
1
|
+
{"version":3,"file":"clip.js","sourceRoot":"","sources":["../../../src/processes/clip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;IAAkC,wBAAsC;IAAxE;;IAuDA,CAAC;IAtDQ,QAAG,GAAV,UAAW,QAAkB;QACnB,IAAA,QAAQ,GAAK,QAAQ,SAAb,CAAc;QAE9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtB,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IAEM,WAAM,GAAb,UAAc,QAAkB;;QACtB,IAAA,MAAM,GAA8B,QAAQ,OAAtC,EAAE,QAAQ,GAAoB,QAAQ,SAA5B,EAAE,KAAK,GAAa,QAAQ,MAArB,EAAE,MAAM,GAAK,QAAQ,OAAb,CAAc;QACrD,IAAM,IAAI,aAAK,GAAC,SAAS,CAAC,QAAQ,IAAG,CAAC,EAAE,GAAC,SAAS,CAAC,OAAO,IAAG,CAAC,KAAE,CAAC;QAEjE,MAAM,CAAC,IAAI,CAAC,uBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAG,CAAC,CAAC;QAEvD,IAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI;YAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACrF,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACnC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,GAAG,EAAE,EAAV,CAAU,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,EAAE,CAAC;QAEd,MAAM,CAAC,GAAG,CAAC;YACT,IAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,EAAU;oBAAR,MAAM,YAAA;gBAAO,OAAA,MAAM;YAAN,CAAM,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,MAAM;gBAChB,CAAC,CAAC;oBACE,kBAAW,IAAI,CAAC,MAAM,yBAAsB;wBAC1C,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAM,IAAI,CAAC,QAAQ,YAAS,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAM,IAAI,CAAC,OAAO,YAAS,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjD,oBAAa,IAAI,CAAC,CAAC,CAAC,eAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAG;iBACpD;gBACH,CAAC,CAAC,6BAA6B,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;IACH,WAAC;AAAD,CAAC,AAvDD,CAAkC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAuDvE","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport default class Clip extends BaseProcessFactory(CommonProcess.clip) {\r\n static run(scroller: Scroller): void {\r\n const { workflow } = scroller;\r\n\r\n Clip.doClip(scroller);\r\n\r\n workflow.call({\r\n process: Clip.process,\r\n status: ProcessStatus.next\r\n });\r\n }\r\n\r\n static doClip(scroller: Scroller): void {\r\n const { buffer, viewport, state, logger } = scroller;\r\n const size = { [Direction.backward]: 0, [Direction.forward]: 0 };\r\n\r\n logger.stat(`before clip (${++state.clip.callCount})`);\r\n\r\n const itemsToRemove = buffer.items.filter(item => {\r\n if (!item.toRemove) {\r\n return false;\r\n }\r\n item.hide();\r\n size[item.removeDirection] += item.size;\r\n return true;\r\n });\r\n\r\n if (itemsToRemove.length) {\r\n if (size[Direction.backward]) {\r\n viewport.paddings.byDirection(Direction.backward).size += size[Direction.backward];\r\n }\r\n if (size[Direction.forward]) {\r\n viewport.paddings.byDirection(Direction.forward).size += size[Direction.forward];\r\n }\r\n if (scroller.settings.onBeforeClip) {\r\n scroller.settings.onBeforeClip(itemsToRemove.map(item => item.get()));\r\n }\r\n }\r\n\r\n buffer.clip();\r\n\r\n logger.log(() => {\r\n const list = itemsToRemove.map(({ $index }) => $index);\r\n return list.length\r\n ? [\r\n `clipped ${list.length} item(s) from Buffer` +\r\n (size.backward ? `, +${size.backward} fwd px` : '') +\r\n (size.forward ? `, +${size.forward} bwd px` : '') +\r\n `, range: [${list[0]}..${list[list.length - 1]}]`\r\n ]\r\n : 'clipped 0 items from Buffer';\r\n });\r\n\r\n logger.stat('after clip');\r\n }\r\n}\r\n"]}
|
|
@@ -11,7 +11,8 @@ var End = /** @class */ (function (_super) {
|
|
|
11
11
|
}
|
|
12
12
|
End.run = function (scroller, _a) {
|
|
13
13
|
var _b = _a === void 0 ? {} : _a, error = _b.error;
|
|
14
|
-
var workflow = scroller.workflow,
|
|
14
|
+
var workflow = scroller.workflow, state = scroller.state;
|
|
15
|
+
var interrupter = state.cycle.interrupter;
|
|
15
16
|
if (!error && !interrupter) {
|
|
16
17
|
// set out params accessible via Adapter
|
|
17
18
|
End.calculateParams(scroller);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhF,IAAM,aAAa,GAAG,UAAC,EAA0B;QAAxB,IAAI,UAAA;IAAkC,OAAA,CAAC,CAAC,IAAI,CAAC,WAAW;AAAlB,CAAkB,CAAC;AAElF;IAAiC,uBAAqC;IAAtE;;
|
|
1
|
+
{"version":3,"file":"end.js","sourceRoot":"","sources":["../../../src/processes/end.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { ScrollerWorkflow } from '../interfaces/index';\r\n\r\nconst isInterrupted = ({ call }: ScrollerWorkflow): boolean => !!call.interrupted;\r\n\r\nexport default class End extends BaseProcessFactory(CommonProcess.end) {\r\n static run(scroller: Scroller, { error }: { error?: unknown } = {}): void {\r\n const { workflow, state } = scroller;\r\n const { interrupter } = state.cycle;\r\n\r\n if (!error && !interrupter) {\r\n // set out params accessible via Adapter\r\n End.calculateParams(scroller);\r\n }\r\n\r\n // explicit interruption for we don't want to go through the inner loop finalizing\r\n if (isInterrupted(workflow)) {\r\n workflow.call({ process: End.process, status: ProcessStatus.done });\r\n return;\r\n }\r\n\r\n const next = End.shouldContinueRun(scroller, error);\r\n scroller.state.endInnerLoop();\r\n\r\n workflow.call({\r\n process: End.process,\r\n status: next ? ProcessStatus.next : ProcessStatus.done,\r\n payload: { ...(interrupter ? { process: interrupter } : {}) }\r\n });\r\n }\r\n\r\n static calculateParams(scroller: Scroller): void {\r\n const { adapter, workflow } = scroller;\r\n\r\n adapter.setFirstOrLastVisible({ first: true, workflow });\r\n adapter.setFirstOrLastVisible({ last: true, workflow });\r\n }\r\n\r\n static shouldContinueRun(scroller: Scroller, error: unknown): boolean {\r\n const { cycle, fetch, render } = scroller.state;\r\n // Adapter.reload or Adapter.reset\r\n if (cycle.interrupter) {\r\n return true;\r\n }\r\n // critical error\r\n if (error) {\r\n return false;\r\n }\r\n // Adapter.check\r\n if (fetch.simulate && fetch.isCheck && !render.noSize) {\r\n return true;\r\n }\r\n // Adapter.remove or Adapter.update with clip\r\n if (fetch.simulate && fetch.doRemove) {\r\n return true;\r\n }\r\n // common inner loop (App start, scroll, Adapter.clip) with full fetch\r\n if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n"]}
|
|
@@ -41,7 +41,8 @@ var Fetch = /** @class */ (function (_super) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
var
|
|
44
|
+
var state = scroller.state, viewport = scroller.viewport;
|
|
45
|
+
var scroll_1 = state.scroll, fetch_1 = state.fetch;
|
|
45
46
|
if (scroll_1.positionBeforeAsync === null) {
|
|
46
47
|
scroll_1.positionBeforeAsync = viewport.scrollPosition;
|
|
47
48
|
}
|
|
@@ -85,9 +86,10 @@ var Fetch = /** @class */ (function (_super) {
|
|
|
85
86
|
});
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
if (immediateData || immediateError) {
|
|
89
|
+
if (immediateData || immediateError) {
|
|
90
|
+
// callback case or immediate observable
|
|
89
91
|
return {
|
|
90
|
-
data: immediateError ? null :
|
|
92
|
+
data: immediateError ? null : immediateData || [],
|
|
91
93
|
error: immediateError,
|
|
92
94
|
isError: !!immediateError
|
|
93
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/processes/fetch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAiBhF;IAAmC,yBAAuC;IAA1E;;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/processes/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { ObservableLike } from '../interfaces/index';\r\n\r\ninterface Immediate {\r\n data: unknown[] | null;\r\n error: unknown | null;\r\n isError: boolean;\r\n}\r\n\r\ntype FetchGetResult = Immediate | Promise<unknown>;\r\n\r\ninterface FetchBox {\r\n success: (value: unknown[]) => void;\r\n fail: (value: unknown) => void;\r\n}\r\n\r\nexport default class Fetch extends BaseProcessFactory(CommonProcess.fetch) {\r\n static run(scroller: Scroller): void {\r\n const { workflow } = scroller;\r\n\r\n const box = {\r\n success: (data: unknown[]) => {\r\n scroller.logger.log(\r\n () =>\r\n `resolved ${data.length} items ` +\r\n `(index = ${scroller.state.fetch.index}, count = ${scroller.state.fetch.count})`\r\n );\r\n scroller.state.fetch.newItemsData = data;\r\n workflow.call({\r\n process: Fetch.process,\r\n status: ProcessStatus.next\r\n });\r\n },\r\n fail: (error: unknown) =>\r\n workflow.call({\r\n process: Fetch.process,\r\n status: ProcessStatus.error,\r\n payload: { error }\r\n })\r\n };\r\n\r\n const result = Fetch.get(scroller);\r\n Fetch.complete(scroller, box, result);\r\n }\r\n\r\n static complete(scroller: Scroller, box: FetchBox, result: FetchGetResult): void {\r\n if (Object.prototype.hasOwnProperty.call(result, 'data')) {\r\n const { data, error, isError } = result as Immediate;\r\n if (!isError) {\r\n box.success(data || []);\r\n } else {\r\n box.fail(error);\r\n }\r\n } else {\r\n const { state, viewport } = scroller;\r\n const { scroll, fetch } = state;\r\n if (scroll.positionBeforeAsync === null) {\r\n scroll.positionBeforeAsync = viewport.scrollPosition;\r\n }\r\n fetch.cancel = () => {\r\n box.success = () => null;\r\n box.fail = () => null;\r\n };\r\n (result as Promise<unknown[]>).then(\r\n data => box.success(data),\r\n error => box.fail(error)\r\n );\r\n }\r\n }\r\n\r\n static get(scroller: Scroller): FetchGetResult {\r\n const _get = scroller.datasource.get;\r\n const { index, count } = scroller.state.fetch;\r\n\r\n let immediateData, immediateError;\r\n let resolve: (value: unknown) => void, reject: (value: unknown) => void;\r\n\r\n const done = (data: unknown[]) => {\r\n if (!resolve) {\r\n immediateData = data || null;\r\n return;\r\n }\r\n resolve(data);\r\n };\r\n const fail = (error: unknown) => {\r\n if (!reject) {\r\n immediateError = error || null;\r\n return;\r\n }\r\n reject(error);\r\n };\r\n\r\n const getResult = _get(index, count, done, fail);\r\n\r\n if (getResult && typeof getResult === 'object' && getResult !== null) {\r\n if (typeof (getResult as PromiseLike<unknown>).then === 'function') {\r\n return getResult as Promise<unknown>;\r\n } else if (typeof (getResult as ObservableLike).subscribe === 'function') {\r\n let sub: undefined | ReturnType<ObservableLike['subscribe']> = void 0;\r\n sub = (getResult as ObservableLike).subscribe(done, fail, () => {\r\n if (sub && typeof sub === 'object' && typeof sub.unsubscribe === 'function') {\r\n sub.unsubscribe();\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (immediateData || immediateError) {\r\n // callback case or immediate observable\r\n return {\r\n data: immediateError ? null : immediateData || [],\r\n error: immediateError,\r\n isError: !!immediateError\r\n };\r\n }\r\n\r\n return new Promise((_resolve, _reject) => {\r\n resolve = _resolve;\r\n reject = _reject;\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -21,5 +21,5 @@ import PreClip from './preClip';
|
|
|
21
21
|
import Clip from './clip';
|
|
22
22
|
import End from './end';
|
|
23
23
|
import { CommonProcess, AdapterProcess, ProcessStatus } from './misc/enums';
|
|
24
|
-
export { Init, Scroll, Reset, Reload, Append, Check, Remove, UserClip, Insert, Replace, Update, Pause, Fix, Start, PreFetch, Fetch, PostFetch, Render, PreClip, Clip, Adjust, End, CommonProcess, AdapterProcess, ProcessStatus
|
|
24
|
+
export { Init, Scroll, Reset, Reload, Append, Check, Remove, UserClip, Insert, Replace, Update, Pause, Fix, Start, PreFetch, Fetch, PostFetch, Render, PreClip, Clip, Adjust, End, CommonProcess, AdapterProcess, ProcessStatus };
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processes/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EACL,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/processes/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,MAAM,MAAM,kBAAkB,CAAC;AACtC,OAAO,KAAK,MAAM,iBAAiB,CAAC;AACpC,OAAO,GAAG,MAAM,eAAe,CAAC;AAChC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE5E,OAAO,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,GAAG,EACH,aAAa,EACb,cAAc,EACd,aAAa,EACd,CAAC","sourcesContent":["import Init from './init';\r\nimport Scroll from './scroll';\r\nimport Reset from './adapter/reset';\r\nimport Reload from './adapter/reload';\r\nimport Append from './adapter/append';\r\nimport Check from './adapter/check';\r\nimport Remove from './adapter/remove';\r\nimport UserClip from './adapter/clip';\r\nimport Insert from './adapter/insert';\r\nimport Replace from './adapter/replace';\r\nimport Update from './adapter/update';\r\nimport Pause from './adapter/pause';\r\nimport Fix from './adapter/fix';\r\nimport Start from './start';\r\nimport PreFetch from './preFetch';\r\nimport Fetch from './fetch';\r\nimport PostFetch from './postFetch';\r\nimport Render from './render';\r\nimport Adjust from './adjust';\r\nimport PreClip from './preClip';\r\nimport Clip from './clip';\r\nimport End from './end';\r\n\r\nimport { CommonProcess, AdapterProcess, ProcessStatus } from './misc/enums';\r\n\r\nexport {\r\n Init,\r\n Scroll,\r\n Reset,\r\n Reload,\r\n Append,\r\n Check,\r\n Remove,\r\n UserClip,\r\n Insert,\r\n Replace,\r\n Update,\r\n Pause,\r\n Fix,\r\n Start,\r\n PreFetch,\r\n Fetch,\r\n PostFetch,\r\n Render,\r\n PreClip,\r\n Clip,\r\n Adjust,\r\n End,\r\n CommonProcess,\r\n AdapterProcess,\r\n ProcessStatus\r\n};\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/processes/init.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhG,IAAM,aAAa,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAExF;IAAkC,wBAAsC;IAAxE;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/processes/init.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIhG,IAAM,aAAa,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;AAExF;IAAkC,wBAAsC;IAAxE;;IAWA,CAAC;IAVQ,QAAG,GAAV,UAAW,QAAkB,EAAE,OAAoB;QACzC,IAAA,KAAK,GAAe,QAAQ,MAAvB,EAAE,QAAQ,GAAK,QAAQ,SAAb,CAAc;QACrC,IAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClD,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,aAAa,CAAC,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IACH,WAAC;AAAD,CAAC,AAXD,CAAkC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,GAWvE","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { ProcessName } from '../interfaces/index';\r\n\r\nconst initProcesses = [CommonProcess.init, AdapterProcess.reset, AdapterProcess.reload];\r\n\r\nexport default class Init extends BaseProcessFactory(CommonProcess.init) {\r\n static run(scroller: Scroller, process: ProcessName): void {\r\n const { state, workflow } = scroller;\r\n const isInitial = initProcesses.includes(process);\r\n scroller.logger.logCycle(true);\r\n state.startWorkflowCycle(isInitial, process);\r\n workflow.call({\r\n process: Init.process,\r\n status: ProcessStatus.next\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -19,8 +19,7 @@ export var BaseAdapterProcessFactory = function (process) { var _a; return _a =
|
|
|
19
19
|
data: validate(options, ADAPTER_METHODS[_process || process])
|
|
20
20
|
};
|
|
21
21
|
if (result.data.isValid) {
|
|
22
|
-
result.params = Object.entries(result.data.params)
|
|
23
|
-
.reduce(function (acc, _b) {
|
|
22
|
+
result.params = Object.entries(result.data.params).reduce(function (acc, _b) {
|
|
24
23
|
var _c;
|
|
25
24
|
var _d = __read(_b, 2), key = _d[0], value = _d[1].value;
|
|
26
25
|
return (__assign(__assign({}, acc), (_c = {}, _c[key] = value, _c)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/processes/misc/base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../src/processes/misc/base.ts"],"names":[],"mappings":";AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAQ/D,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,OAAoB;QACrD;QAEA,CAAC;QAAD,kBAAC;IAAD,CAAC,AAFD;IACS,UAAO,GAAgB,OAAQ;SACvC,CAAC;AAEJ,MAAM,CAAC,IAAM,yBAAyB,GAAG,UAAC,OAAuB;QAC9B,sCAA6C;QAA9E;;QAkCA,CAAC;QA/BQ,6BAAU,GAAjB,UACE,QAAkB,EAClB,OAAU,EACV,YAAoB,EACpB,QAAyB;YADzB,6BAAA,EAAA,oBAAoB;YAGpB,IAAM,MAAM,GAAqB;gBAC/B,IAAI,EAAE,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC;aAC9D,CAAC;YAEF,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CACvD,UAAC,GAAG,EAAE,EAAgB;;wBAAhB,KAAA,aAAgB,EAAf,GAAG,QAAA,EAAI,KAAK,cAAA;oBAAQ,OAAA,uBACtB,GAAG,gBACL,GAAG,IAAG,KAAK,OACZ;gBAHyB,CAGzB,EACF,EAAO,CACR,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAxB,CAAwB,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACrB,OAAO,SAAA;wBACP,MAAM,EAAE,aAAa,CAAC,KAAK;wBAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,kCAA0B,OAAO,mBAAe,EAAE;qBACrE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QACH,yBAAC;IAAD,CAAC,AAlCD,CAAkC,kBAAkB,CAAC,OAAO,CAAkB;IACrE,UAAO,GAAmB,OAAQ;SAiC1C,CAAC","sourcesContent":["import { AdapterProcess, ProcessStatus } from './enums';\r\nimport { Scroller } from '../../scroller';\r\nimport { ADAPTER_METHODS, validate } from '../../inputs/index';\r\nimport {\r\n ProcessName,\r\n IBaseProcess,\r\n IBaseAdapterProcess,\r\n IAdapterInput\r\n} from '../../interfaces/index';\r\n\r\nexport const BaseProcessFactory = (process: ProcessName): IBaseProcess =>\r\n class BaseProcess {\r\n static process: ProcessName = process;\r\n };\r\n\r\nexport const BaseAdapterProcessFactory = (process: AdapterProcess): IBaseAdapterProcess =>\r\n class BaseAdapterProcess extends (BaseProcessFactory(process) as IBaseProcess) {\r\n static process: AdapterProcess = process;\r\n\r\n static parseInput<T>(\r\n scroller: Scroller,\r\n options: T,\r\n ignoreErrors = false,\r\n _process?: AdapterProcess\r\n ): IAdapterInput<T> {\r\n const result: IAdapterInput<T> = {\r\n data: validate(options, ADAPTER_METHODS[_process || process])\r\n };\r\n\r\n if (result.data.isValid) {\r\n result.params = Object.entries(result.data.params).reduce(\r\n (acc, [key, { value }]) => ({\r\n ...acc,\r\n [key]: value\r\n }),\r\n {} as T\r\n );\r\n } else {\r\n scroller.logger.log(() => result.data.showErrors());\r\n if (!ignoreErrors) {\r\n scroller.workflow.call({\r\n process,\r\n status: ProcessStatus.error,\r\n payload: { error: `Wrong argument of the \"${process}\" method call` }\r\n });\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n };\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/processes/misc/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,4BAAW,CAAA;AACb,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB;AAED,MAAM,CAAN,IAAY,cAaX;AAbD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;IACzB,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,2CAAyB,CAAA;IACzB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;AACrB,CAAC,EAbW,cAAc,KAAd,cAAc,QAazB;AAED,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,gCAAe,CAAA;AACjB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB","sourcesContent":["export enum CommonProcess {\r\n init = 'init',\r\n scroll = 'scroll',\r\n start = 'start',\r\n preFetch = 'preFetch',\r\n fetch = 'fetch',\r\n postFetch = 'postFetch',\r\n render = 'render',\r\n preClip = 'preClip',\r\n clip = 'clip',\r\n adjust = 'adjust',\r\n end = 'end'
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/processes/misc/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,gCAAe,CAAA;IACf,sCAAqB,CAAA;IACrB,gCAAe,CAAA;IACf,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,4BAAW,CAAA;AACb,CAAC,EAZW,aAAa,KAAb,aAAa,QAYxB;AAED,MAAM,CAAN,IAAY,cAaX;AAbD,WAAY,cAAc;IACxB,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;IACzB,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,yCAAuB,CAAA;IACvB,2CAAyB,CAAA;IACzB,6CAA2B,CAAA;IAC3B,2CAAyB,CAAA;IACzB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;AACrB,CAAC,EAbW,cAAc,KAAd,cAAc,QAazB;AAED,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,8BAAa,CAAA;IACb,8BAAa,CAAA;IACb,gCAAe,CAAA;AACjB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB","sourcesContent":["export enum CommonProcess {\r\n init = 'init',\r\n scroll = 'scroll',\r\n start = 'start',\r\n preFetch = 'preFetch',\r\n fetch = 'fetch',\r\n postFetch = 'postFetch',\r\n render = 'render',\r\n preClip = 'preClip',\r\n clip = 'clip',\r\n adjust = 'adjust',\r\n end = 'end'\r\n}\r\n\r\nexport enum AdapterProcess {\r\n reset = 'adapter.reset',\r\n reload = 'adapter.reload',\r\n append = 'adapter.append',\r\n prepend = 'adapter.prepend',\r\n check = 'adapter.check',\r\n remove = 'adapter.remove',\r\n replace = 'adapter.replace',\r\n update = 'adapter.update',\r\n clip = 'adapter.clip',\r\n insert = 'adapter.insert',\r\n pause = 'adapter.pause',\r\n fix = 'adapter.fix'\r\n}\r\n\r\nexport enum ProcessStatus {\r\n start = 'start',\r\n next = 'next',\r\n done = 'done',\r\n error = 'error'\r\n}\r\n"]}
|
|
@@ -12,44 +12,45 @@ var PostFetch = /** @class */ (function (_super) {
|
|
|
12
12
|
PostFetch.setBufferLimits(scroller);
|
|
13
13
|
workflow.call({
|
|
14
14
|
process: PostFetch.process,
|
|
15
|
-
status: scroller.state.fetch.hasNewItems
|
|
16
|
-
? ProcessStatus.next
|
|
17
|
-
: ProcessStatus.done
|
|
15
|
+
status: scroller.state.fetch.hasNewItems ? ProcessStatus.next : ProcessStatus.done
|
|
18
16
|
});
|
|
19
17
|
}
|
|
20
18
|
else {
|
|
21
19
|
workflow.call({
|
|
22
20
|
process: PostFetch.process,
|
|
23
21
|
status: ProcessStatus.error,
|
|
24
|
-
payload: { error: 'Can
|
|
22
|
+
payload: { error: 'Can not set buffer items' }
|
|
25
23
|
});
|
|
26
24
|
}
|
|
27
25
|
};
|
|
28
26
|
PostFetch.setBufferLimits = function (scroller) {
|
|
29
|
-
var buffer = scroller.buffer,
|
|
30
|
-
var
|
|
27
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
28
|
+
var fetch = state.fetch, cycle = state.cycle;
|
|
29
|
+
var items = fetch.items, first = fetch.first, last = fetch.last;
|
|
31
30
|
if (!items.length) {
|
|
32
|
-
if (last < buffer.minIndex || innerLoop.isInitial) {
|
|
31
|
+
if (last.index < buffer.minIndex || cycle.innerLoop.isInitial) {
|
|
33
32
|
buffer.absMinIndex = buffer.minIndex;
|
|
34
33
|
}
|
|
35
|
-
if (first > buffer.maxIndex || innerLoop.isInitial) {
|
|
34
|
+
if (first.index > buffer.maxIndex || cycle.innerLoop.isInitial) {
|
|
36
35
|
buffer.absMaxIndex = buffer.maxIndex;
|
|
37
36
|
}
|
|
38
37
|
}
|
|
39
38
|
else {
|
|
40
39
|
var lastIndex = items.length - 1;
|
|
41
|
-
if (first < items[0].$index) {
|
|
40
|
+
if (first.index < items[0].$index) {
|
|
42
41
|
buffer.absMinIndex = items[0].$index;
|
|
43
42
|
}
|
|
44
|
-
if (last > items[lastIndex].$index) {
|
|
43
|
+
if (last.index > items[lastIndex].$index) {
|
|
45
44
|
buffer.absMaxIndex = items[lastIndex].$index;
|
|
46
45
|
}
|
|
47
46
|
}
|
|
48
47
|
};
|
|
49
48
|
PostFetch.setItems = function (scroller) {
|
|
50
|
-
var buffer = scroller.buffer,
|
|
49
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
50
|
+
var fetch = state.fetch, cycle = state.cycle;
|
|
51
51
|
var items = fetch.newItemsData;
|
|
52
|
-
if (!items || !items.length) {
|
|
52
|
+
if (!items || !items.length) {
|
|
53
|
+
// empty result
|
|
53
54
|
return true;
|
|
54
55
|
}
|
|
55
56
|
// eof/bof case, need to shift fetch index if bof
|
|
@@ -64,9 +65,7 @@ var PostFetch = /** @class */ (function (_super) {
|
|
|
64
65
|
fetchIndex = buffer.firstIndex - items.length;
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
fetch.items = items.map(function (item, index) {
|
|
68
|
-
return new Item(fetchIndex + index, item, scroller.routines);
|
|
69
|
-
});
|
|
68
|
+
fetch.items = items.map(function (item, index) { return new Item(fetchIndex + index, item, scroller.routines); });
|
|
70
69
|
return buffer.setItems(fetch.items);
|
|
71
70
|
};
|
|
72
71
|
return PostFetch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postFetch.js","sourceRoot":"","sources":["../../../src/processes/postFetch.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC;IAAuC,6BAA2C;IAAlF;;
|
|
1
|
+
{"version":3,"file":"postFetch.js","sourceRoot":"","sources":["../../../src/processes/postFetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Item } from '../classes/item';\r\n\r\nexport default class PostFetch extends BaseProcessFactory(CommonProcess.postFetch) {\r\n static run(scroller: Scroller): void {\r\n const { workflow } = scroller;\r\n if (PostFetch.setItems(scroller)) {\r\n PostFetch.setBufferLimits(scroller);\r\n workflow.call({\r\n process: PostFetch.process,\r\n status: scroller.state.fetch.hasNewItems ? ProcessStatus.next : ProcessStatus.done\r\n });\r\n } else {\r\n workflow.call({\r\n process: PostFetch.process,\r\n status: ProcessStatus.error,\r\n payload: { error: 'Can not set buffer items' }\r\n });\r\n }\r\n }\r\n\r\n static setBufferLimits(scroller: Scroller): void {\r\n const { buffer, state } = scroller;\r\n const { fetch, cycle } = state;\r\n const { items, first, last } = fetch;\r\n if (!items.length) {\r\n if (last.index < buffer.minIndex || cycle.innerLoop.isInitial) {\r\n buffer.absMinIndex = buffer.minIndex;\r\n }\r\n if (first.index > buffer.maxIndex || cycle.innerLoop.isInitial) {\r\n buffer.absMaxIndex = buffer.maxIndex;\r\n }\r\n } else {\r\n const lastIndex = items.length - 1;\r\n if (first.index < items[0].$index) {\r\n buffer.absMinIndex = items[0].$index;\r\n }\r\n if (last.index > items[lastIndex].$index) {\r\n buffer.absMaxIndex = items[lastIndex].$index;\r\n }\r\n }\r\n }\r\n\r\n static setItems(scroller: Scroller): boolean {\r\n const { buffer, state } = scroller;\r\n const { fetch, cycle } = state;\r\n const items = fetch.newItemsData;\r\n if (!items || !items.length) {\r\n // empty result\r\n return true;\r\n }\r\n // eof/bof case, need to shift fetch index if bof\r\n let fetchIndex = fetch.index;\r\n if (items.length < fetch.count) {\r\n if (cycle.innerLoop.isInitial) {\r\n // let's treat initial poor fetch as startIndex-bof\r\n fetchIndex = buffer.startIndex;\r\n } else if (fetch.first.index < buffer.minIndex) {\r\n // normal bof\r\n fetchIndex = buffer.firstIndex - items.length;\r\n }\r\n }\r\n fetch.items = items.map(\r\n (item, index: number) => new Item(fetchIndex + index, item, scroller.routines)\r\n );\r\n return buffer.setItems(fetch.items);\r\n }\r\n}\r\n"]}
|
|
@@ -55,7 +55,8 @@ var PreClip = /** @class */ (function (_super) {
|
|
|
55
55
|
return false;
|
|
56
56
|
};
|
|
57
57
|
PreClip.isBackward = function (scroller, firstIndex) {
|
|
58
|
-
var buffer = scroller.buffer,
|
|
58
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
59
|
+
var clip = state.clip, fetch = state.fetch;
|
|
59
60
|
if (clip.force) {
|
|
60
61
|
return clip.forceBackward;
|
|
61
62
|
}
|
|
@@ -67,7 +68,8 @@ var PreClip = /** @class */ (function (_super) {
|
|
|
67
68
|
return false;
|
|
68
69
|
};
|
|
69
70
|
PreClip.isForward = function (scroller, lastIndex) {
|
|
70
|
-
var buffer = scroller.buffer,
|
|
71
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
72
|
+
var clip = state.clip, fetch = state.fetch;
|
|
71
73
|
if (clip.force) {
|
|
72
74
|
return clip.forceForward;
|
|
73
75
|
}
|
|
@@ -81,8 +83,7 @@ var PreClip = /** @class */ (function (_super) {
|
|
|
81
83
|
PreClip.prepareClipByDirection = function (scroller, direction, edgeIndex) {
|
|
82
84
|
var forward = direction === Direction.forward;
|
|
83
85
|
scroller.buffer.items.forEach(function (item) {
|
|
84
|
-
if ((!forward && item.$index < edgeIndex) ||
|
|
85
|
-
(forward && item.$index > edgeIndex)) {
|
|
86
|
+
if ((!forward && item.$index < edgeIndex) || (forward && item.$index > edgeIndex)) {
|
|
86
87
|
item.toRemove = true;
|
|
87
88
|
item.removeDirection = direction;
|
|
88
89
|
scroller.state.clip.doClip = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preClip.js","sourceRoot":"","sources":["../../../src/processes/preClip.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;IAAqC,2BAAyC;IAA9E;;
|
|
1
|
+
{"version":3,"file":"preClip.js","sourceRoot":"","sources":["../../../src/processes/preClip.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport default class PreClip extends BaseProcessFactory(CommonProcess.preClip) {\r\n static run(scroller: Scroller): void {\r\n PreClip.prepareClip(scroller);\r\n\r\n scroller.workflow.call({\r\n process: PreClip.process,\r\n status: ProcessStatus.next,\r\n payload: {\r\n doClip: scroller.state.clip.doClip\r\n }\r\n });\r\n }\r\n\r\n static prepareClip(scroller: Scroller): void {\r\n const { fetch, clip } = scroller.state;\r\n if (PreClip.shouldNotClip(scroller)) {\r\n return;\r\n }\r\n const firstIndex = fetch.first.indexBuffer;\r\n const lastIndex = fetch.last.indexBuffer;\r\n scroller.logger.log(\r\n () =>\r\n `looking for ${fetch.direction ? 'anti-' + fetch.direction + ' ' : ''}items ` +\r\n `that are out of [${firstIndex}..${lastIndex}] range`\r\n );\r\n if (PreClip.isBackward(scroller, firstIndex)) {\r\n PreClip.prepareClipByDirection(scroller, Direction.backward, firstIndex);\r\n }\r\n if (PreClip.isForward(scroller, lastIndex)) {\r\n PreClip.prepareClipByDirection(scroller, Direction.forward, lastIndex);\r\n }\r\n if (!clip.doClip) {\r\n scroller.logger.log('skipping clip [no items to clip]');\r\n }\r\n return;\r\n }\r\n\r\n static shouldNotClip(scroller: Scroller): boolean {\r\n const { settings, buffer, state } = scroller;\r\n if (settings.infinite && !state.clip.force) {\r\n scroller.logger.log('skipping clip [infinite mode]');\r\n return true;\r\n }\r\n if (!buffer.size) {\r\n scroller.logger.log('skipping clip [empty buffer]');\r\n return true;\r\n }\r\n if (state.cycle.isInitial) {\r\n scroller.logger.log('skipping clip [initial cycle]');\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static isBackward(scroller: Scroller, firstIndex: number): boolean {\r\n const { buffer, state } = scroller;\r\n const { clip, fetch } = state;\r\n if (clip.force) {\r\n return clip.forceBackward;\r\n }\r\n if (fetch.direction !== Direction.backward) {\r\n if (firstIndex - 1 >= buffer.absMinIndex) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static isForward(scroller: Scroller, lastIndex: number): boolean {\r\n const { buffer, state } = scroller;\r\n const { clip, fetch } = state;\r\n if (clip.force) {\r\n return clip.forceForward;\r\n }\r\n if (fetch.direction !== Direction.forward) {\r\n if (lastIndex + 1 <= buffer.absMaxIndex) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n static prepareClipByDirection(scroller: Scroller, direction: Direction, edgeIndex: number): void {\r\n const forward = direction === Direction.forward;\r\n scroller.buffer.items.forEach(item => {\r\n if ((!forward && item.$index < edgeIndex) || (forward && item.$index > edgeIndex)) {\r\n item.toRemove = true;\r\n item.removeDirection = direction;\r\n scroller.state.clip.doClip = true;\r\n }\r\n });\r\n }\r\n}\r\n"]}
|
|
@@ -7,7 +7,8 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
7
7
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
8
8
|
}
|
|
9
9
|
PreFetch.run = function (scroller) {
|
|
10
|
-
var workflow = scroller.workflow, buffer = scroller.buffer,
|
|
10
|
+
var workflow = scroller.workflow, buffer = scroller.buffer, state = scroller.state;
|
|
11
|
+
var fetch = state.fetch, cycle = state.cycle;
|
|
11
12
|
fetch.minIndex = buffer.minIndex;
|
|
12
13
|
// set first and last indexes of items to fetch
|
|
13
14
|
PreFetch.setPositionsAndIndexes(scroller);
|
|
@@ -34,7 +35,8 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
34
35
|
scroller.logger.fetch();
|
|
35
36
|
};
|
|
36
37
|
PreFetch.setPositions = function (scroller) {
|
|
37
|
-
var
|
|
38
|
+
var state = scroller.state, viewport = scroller.viewport;
|
|
39
|
+
var positions = state.fetch.positions;
|
|
38
40
|
var paddingDelta = viewport.getBufferPadding();
|
|
39
41
|
positions.before = viewport.scrollPosition;
|
|
40
42
|
positions.startDelta = PreFetch.getStartDelta(scroller);
|
|
@@ -43,7 +45,9 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
43
45
|
positions.end = positions.relative + viewport.getSize() + paddingDelta;
|
|
44
46
|
};
|
|
45
47
|
PreFetch.getStartDelta = function (scroller) {
|
|
46
|
-
|
|
48
|
+
// calculate size before start index
|
|
49
|
+
var buffer = scroller.buffer, viewport = scroller.viewport;
|
|
50
|
+
var offset = viewport.offset;
|
|
47
51
|
var startDelta = 0;
|
|
48
52
|
if (offset) {
|
|
49
53
|
startDelta += offset;
|
|
@@ -61,7 +65,8 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
61
65
|
};
|
|
62
66
|
PreFetch.setFirstIndex = function (scroller) {
|
|
63
67
|
var state = scroller.state, buffer = scroller.buffer;
|
|
64
|
-
var _a = state.fetch,
|
|
68
|
+
var _a = state.fetch, positions = _a.positions, first = _a.first;
|
|
69
|
+
var start = positions.start;
|
|
65
70
|
var firstIndex = buffer.startIndex;
|
|
66
71
|
var firstIndexPosition = 0;
|
|
67
72
|
if (state.cycle.innerLoop.isInitial) {
|
|
@@ -73,10 +78,10 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
73
78
|
else {
|
|
74
79
|
var position = firstIndexPosition;
|
|
75
80
|
var index = firstIndex;
|
|
76
|
-
while (
|
|
81
|
+
while (true) {
|
|
77
82
|
if (start >= 0) {
|
|
78
83
|
var size = buffer.getSizeByIndex(index);
|
|
79
|
-
var diff =
|
|
84
|
+
var diff = position + size - start;
|
|
80
85
|
if (diff > 0) {
|
|
81
86
|
firstIndex = index;
|
|
82
87
|
firstIndexPosition = position;
|
|
@@ -107,8 +112,10 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
107
112
|
first.position = firstIndexPosition;
|
|
108
113
|
};
|
|
109
114
|
PreFetch.setLastIndex = function (scroller) {
|
|
110
|
-
var
|
|
111
|
-
var
|
|
115
|
+
var state = scroller.state, buffer = scroller.buffer, settings = scroller.settings;
|
|
116
|
+
var fetch = state.fetch, cycle = state.cycle;
|
|
117
|
+
var firstVisible = fetch.firstVisible, positions = fetch.positions, first = fetch.first, last = fetch.last;
|
|
118
|
+
var relative = positions.relative, end = positions.end;
|
|
112
119
|
var lastIndex;
|
|
113
120
|
if (!buffer.defaultSize) {
|
|
114
121
|
// just to fetch forward bufferSize items if neither averageItemSize nor itemSize are present
|
|
@@ -119,7 +126,7 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
119
126
|
var index = first.indexBuffer;
|
|
120
127
|
var position = first.position;
|
|
121
128
|
lastIndex = index;
|
|
122
|
-
while (
|
|
129
|
+
while (true) {
|
|
123
130
|
lastIndex = index;
|
|
124
131
|
var size = buffer.getSizeByIndex(index);
|
|
125
132
|
position += size;
|
|
@@ -173,7 +180,8 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
173
180
|
}
|
|
174
181
|
};
|
|
175
182
|
PreFetch.checkBufferGaps = function (scroller) {
|
|
176
|
-
var buffer = scroller.buffer,
|
|
183
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
184
|
+
var fetch = state.fetch;
|
|
177
185
|
if (!buffer.size) {
|
|
178
186
|
return;
|
|
179
187
|
}
|
|
@@ -192,7 +200,8 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
192
200
|
}
|
|
193
201
|
};
|
|
194
202
|
PreFetch.checkFetchPackSize = function (scroller) {
|
|
195
|
-
var buffer = scroller.buffer,
|
|
203
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
204
|
+
var fetch = state.fetch;
|
|
196
205
|
if (!fetch.shouldFetch) {
|
|
197
206
|
return;
|
|
198
207
|
}
|
|
@@ -202,7 +211,8 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
202
211
|
if (diff <= 0) {
|
|
203
212
|
return;
|
|
204
213
|
}
|
|
205
|
-
if (!buffer.size || lastIndex > buffer.items[0].$index) {
|
|
214
|
+
if (!buffer.size || lastIndex > buffer.items[0].$index) {
|
|
215
|
+
// forward
|
|
206
216
|
var newLastIndex = Math.min(lastIndex + diff, buffer.absMaxIndex);
|
|
207
217
|
if (newLastIndex > lastIndex) {
|
|
208
218
|
fetch.last.index = fetch.last.indexBuffer = newLastIndex;
|
|
@@ -220,11 +230,13 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
220
230
|
}
|
|
221
231
|
};
|
|
222
232
|
PreFetch.setFetchDirection = function (scroller) {
|
|
223
|
-
var buffer = scroller.buffer,
|
|
233
|
+
var buffer = scroller.buffer, state = scroller.state;
|
|
234
|
+
var fetch = state.fetch;
|
|
224
235
|
if (fetch.last.index) {
|
|
225
236
|
var direction_1 = Direction.forward;
|
|
226
237
|
if (buffer.size) {
|
|
227
|
-
direction_1 =
|
|
238
|
+
direction_1 =
|
|
239
|
+
fetch.last.index < buffer.items[0].$index ? Direction.backward : Direction.forward;
|
|
228
240
|
}
|
|
229
241
|
fetch.direction = direction_1;
|
|
230
242
|
scroller.logger.log(function () { return "fetch direction is \"".concat(direction_1, "\""); });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preFetch.js","sourceRoot":"","sources":["../../../src/processes/preFetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport default class PreFetch extends BaseProcessFactory(CommonProcess.preFetch) {\r\n\r\n static run(scroller: Scroller): void {\r\n const { workflow, buffer, state: { fetch, cycle } } = scroller;\r\n fetch.minIndex = buffer.minIndex;\r\n\r\n // set first and last indexes of items to fetch\r\n PreFetch.setPositionsAndIndexes(scroller);\r\n\r\n // skip indexes that are in buffer\r\n PreFetch.skipBufferedItems(scroller);\r\n\r\n if (scroller.settings.infinite) {\r\n // fill indexes to include buffer if no clip\r\n PreFetch.checkBufferGaps(scroller);\r\n }\r\n\r\n // add indexes if there are too few items to fetch (clip padding)\r\n PreFetch.checkFetchPackSize(scroller);\r\n\r\n // set fetch direction\r\n PreFetch.setFetchDirection(scroller);\r\n\r\n workflow.call({\r\n process: PreFetch.process,\r\n status: PreFetch.getStatus(scroller),\r\n payload: { process: cycle.initiator }\r\n });\r\n }\r\n\r\n static setPositionsAndIndexes(scroller: Scroller): void {\r\n PreFetch.setPositions(scroller);\r\n PreFetch.setFirstIndex(scroller);\r\n PreFetch.setLastIndex(scroller);\r\n scroller.logger.fetch();\r\n }\r\n\r\n static setPositions(scroller: Scroller): void {\r\n const { state: { fetch: { positions } }, viewport } = scroller;\r\n const paddingDelta = viewport.getBufferPadding();\r\n positions.before = viewport.scrollPosition;\r\n positions.startDelta = PreFetch.getStartDelta(scroller);\r\n positions.relative = positions.before - positions.startDelta;\r\n positions.start = positions.relative - paddingDelta;\r\n positions.end = positions.relative + viewport.getSize() + paddingDelta;\r\n }\r\n\r\n static getStartDelta(scroller: Scroller): number { // calculate size before start index\r\n const { buffer, viewport: { offset } } = scroller;\r\n let startDelta = 0;\r\n if (offset) {\r\n startDelta += offset;\r\n }\r\n if (!buffer.defaultSize) {\r\n return startDelta;\r\n }\r\n for (let index = buffer.finiteAbsMinIndex; index < buffer.startIndex; index++) {\r\n startDelta += buffer.getSizeByIndex(index);\r\n }\r\n scroller.logger.log(() => [\r\n `start delta is ${startDelta}`, ...(offset ? [` (+${offset} offset)`] : [])\r\n ]);\r\n return startDelta;\r\n }\r\n\r\n static setFirstIndex(scroller: Scroller): void {\r\n const { state, buffer } = scroller;\r\n const { positions: { start }, first } = state.fetch;\r\n let firstIndex = buffer.startIndex;\r\n let firstIndexPosition = 0;\r\n if (state.cycle.innerLoop.isInitial) {\r\n scroller.logger.log('skipping fetch backward direction [initial loop]');\r\n } else if (!buffer.defaultSize) {\r\n scroller.logger.log('skipping fetch backward direction [no item size]');\r\n } else {\r\n let position = firstIndexPosition;\r\n let index = firstIndex;\r\n while (1) { // eslint-disable-line no-constant-condition\r\n if (start >= 0) {\r\n const size = buffer.getSizeByIndex(index);\r\n const diff = (position + size) - start;\r\n if (diff > 0) {\r\n firstIndex = index;\r\n firstIndexPosition = position;\r\n break;\r\n }\r\n position += size;\r\n index++;\r\n if (index < buffer.absMinIndex) {\r\n break;\r\n }\r\n }\r\n if (start < 0) {\r\n index--;\r\n if (index < buffer.absMinIndex) {\r\n break;\r\n }\r\n position -= buffer.getSizeByIndex(index);\r\n const diff = position - start;\r\n firstIndex = index;\r\n firstIndexPosition = position;\r\n if (diff <= 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n first.index = first.indexBuffer = Math.max(firstIndex, buffer.absMinIndex);\r\n first.position = firstIndexPosition;\r\n }\r\n\r\n static setLastIndex(scroller: Scroller): void {\r\n const { state: { fetch, cycle }, buffer, settings } = scroller;\r\n const { firstVisible, positions: { relative, end }, first, last } = fetch;\r\n let lastIndex;\r\n if (!buffer.defaultSize) {\r\n // just to fetch forward bufferSize items if neither averageItemSize nor itemSize are present\r\n lastIndex = buffer.startIndex + settings.bufferSize - 1;\r\n scroller.logger.log('forcing fetch forward direction [no item size]');\r\n } else {\r\n let index = first.indexBuffer;\r\n let position = first.position;\r\n lastIndex = index;\r\n while (1) { // eslint-disable-line no-constant-condition\r\n lastIndex = index;\r\n const size = buffer.getSizeByIndex(index);\r\n position += size;\r\n if (isNaN(firstVisible.index) && position > relative) {\r\n firstVisible.index = index;\r\n if (!cycle.innerLoop.isInitial) {\r\n firstVisible.delta = position - size - relative;\r\n }\r\n }\r\n if (position >= end) {\r\n break;\r\n }\r\n if (index++ > buffer.absMaxIndex) {\r\n break;\r\n }\r\n }\r\n }\r\n last.index = last.indexBuffer = Math.min(lastIndex, buffer.absMaxIndex);\r\n }\r\n\r\n static skipBufferedItems(scroller: Scroller): void {\r\n const { buffer } = scroller;\r\n if (!buffer.size) {\r\n return;\r\n }\r\n const { fetch } = scroller.state;\r\n const firstIndex = fetch.first.index;\r\n const lastIndex = fetch.last.index;\r\n const packs: number[][] = [[]];\r\n let p = 0;\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n if (!buffer.get(i)) {\r\n packs[p].push(i);\r\n } else if (packs[p].length) {\r\n packs[++p] = [];\r\n }\r\n }\r\n let pack = packs[0];\r\n if (packs[0].length && packs[1] && packs[1].length) {\r\n fetch.hasAnotherPack = true;\r\n // todo: need to look for biggest pack in visible area\r\n // todo: or think about merging two requests in a single Fetch process\r\n if (packs[1].length >= packs[0].length) {\r\n pack = packs[1];\r\n }\r\n }\r\n fetch.first.index = Math.max(pack[0], buffer.absMinIndex);\r\n fetch.last.index = Math.min(pack[pack.length - 1], buffer.absMaxIndex);\r\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\r\n scroller.logger.fetch('after Buffer flushing');\r\n }\r\n }\r\n\r\n static checkBufferGaps(scroller: Scroller): void {\r\n const { buffer, state: { fetch } } = scroller;\r\n if (!buffer.size) {\r\n return;\r\n }\r\n const fetchFirst = fetch.first.index;\r\n const bufferLast = buffer.lastIndex;\r\n if (fetchFirst > bufferLast) {\r\n fetch.first.index = fetch.first.indexBuffer = bufferLast + 1;\r\n }\r\n const bufferFirst = buffer.firstIndex;\r\n const fetchLast = fetch.last.index;\r\n if (fetchLast < bufferFirst) {\r\n fetch.last.index = fetch.last.indexBuffer = bufferFirst - 1;\r\n }\r\n if (fetch.first.index !== fetchFirst || fetch.last.index !== fetchLast) {\r\n scroller.logger.fetch('after Buffer filling (no clip case)');\r\n }\r\n }\r\n\r\n static checkFetchPackSize(scroller: Scroller): void {\r\n const { buffer, state: { fetch } } = scroller;\r\n if (!fetch.shouldFetch) {\r\n return;\r\n }\r\n const firstIndex = fetch.first.index;\r\n const lastIndex = fetch.last.index;\r\n const diff = scroller.settings.bufferSize - (lastIndex - firstIndex + 1);\r\n if (diff <= 0) {\r\n return;\r\n }\r\n if (!buffer.size || lastIndex > buffer.items[0].$index) { // forward\r\n const newLastIndex = Math.min(lastIndex + diff, buffer.absMaxIndex);\r\n if (newLastIndex > lastIndex) {\r\n fetch.last.index = fetch.last.indexBuffer = newLastIndex;\r\n }\r\n } else {\r\n const newFirstIndex = Math.max(firstIndex - diff, buffer.absMinIndex);\r\n if (newFirstIndex < firstIndex) {\r\n fetch.first.index = fetch.first.indexBuffer = newFirstIndex;\r\n }\r\n }\r\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\r\n scroller.logger.fetch('after bufferSize adjustment');\r\n PreFetch.skipBufferedItems(scroller);\r\n }\r\n }\r\n\r\n static setFetchDirection(scroller: Scroller): void {\r\n const { buffer, state: { fetch } } = scroller;\r\n if (fetch.last.index) {\r\n let direction = Direction.forward;\r\n if (buffer.size) {\r\n direction = fetch.last.index < buffer.items[0].$index ? Direction.backward : Direction.forward;\r\n }\r\n fetch.direction = direction;\r\n scroller.logger.log(() => `fetch direction is \"${direction}\"`);\r\n }\r\n }\r\n\r\n static getStatus(scroller: Scroller): ProcessStatus {\r\n const { cycle, fetch } = scroller.state;\r\n if (cycle.initiator === AdapterProcess.clip) {\r\n scroller.logger.log(() => `going to skip fetch due to \"${AdapterProcess.clip}\" process`);\r\n return ProcessStatus.next;\r\n }\r\n if (fetch.shouldFetch) {\r\n scroller.logger.log(() => `going to fetch ${fetch.count} items started from index ${fetch.index}`);\r\n return ProcessStatus.next;\r\n }\r\n return ProcessStatus.done;\r\n }\r\n\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"preFetch.js","sourceRoot":"","sources":["../../../src/processes/preFetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseProcessFactory, CommonProcess, AdapterProcess, ProcessStatus } from './misc/index';\r\nimport { Scroller } from '../scroller';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport default class PreFetch extends BaseProcessFactory(CommonProcess.preFetch) {\r\n static run(scroller: Scroller): void {\r\n const { workflow, buffer, state } = scroller;\r\n const { fetch, cycle } = state;\r\n fetch.minIndex = buffer.minIndex;\r\n\r\n // set first and last indexes of items to fetch\r\n PreFetch.setPositionsAndIndexes(scroller);\r\n\r\n // skip indexes that are in buffer\r\n PreFetch.skipBufferedItems(scroller);\r\n\r\n if (scroller.settings.infinite) {\r\n // fill indexes to include buffer if no clip\r\n PreFetch.checkBufferGaps(scroller);\r\n }\r\n\r\n // add indexes if there are too few items to fetch (clip padding)\r\n PreFetch.checkFetchPackSize(scroller);\r\n\r\n // set fetch direction\r\n PreFetch.setFetchDirection(scroller);\r\n\r\n workflow.call({\r\n process: PreFetch.process,\r\n status: PreFetch.getStatus(scroller),\r\n payload: { process: cycle.initiator }\r\n });\r\n }\r\n\r\n static setPositionsAndIndexes(scroller: Scroller): void {\r\n PreFetch.setPositions(scroller);\r\n PreFetch.setFirstIndex(scroller);\r\n PreFetch.setLastIndex(scroller);\r\n scroller.logger.fetch();\r\n }\r\n\r\n static setPositions(scroller: Scroller): void {\r\n const { state, viewport } = scroller;\r\n const { positions } = state.fetch;\r\n const paddingDelta = viewport.getBufferPadding();\r\n positions.before = viewport.scrollPosition;\r\n positions.startDelta = PreFetch.getStartDelta(scroller);\r\n positions.relative = positions.before - positions.startDelta;\r\n positions.start = positions.relative - paddingDelta;\r\n positions.end = positions.relative + viewport.getSize() + paddingDelta;\r\n }\r\n\r\n static getStartDelta(scroller: Scroller): number {\r\n // calculate size before start index\r\n const { buffer, viewport } = scroller;\r\n const { offset } = viewport;\r\n let startDelta = 0;\r\n if (offset) {\r\n startDelta += offset;\r\n }\r\n if (!buffer.defaultSize) {\r\n return startDelta;\r\n }\r\n for (let index = buffer.finiteAbsMinIndex; index < buffer.startIndex; index++) {\r\n startDelta += buffer.getSizeByIndex(index);\r\n }\r\n scroller.logger.log(() => [\r\n `start delta is ${startDelta}`,\r\n ...(offset ? [` (+${offset} offset)`] : [])\r\n ]);\r\n return startDelta;\r\n }\r\n\r\n static setFirstIndex(scroller: Scroller): void {\r\n const { state, buffer } = scroller;\r\n const { positions, first } = state.fetch;\r\n const { start } = positions;\r\n let firstIndex = buffer.startIndex;\r\n let firstIndexPosition = 0;\r\n if (state.cycle.innerLoop.isInitial) {\r\n scroller.logger.log('skipping fetch backward direction [initial loop]');\r\n } else if (!buffer.defaultSize) {\r\n scroller.logger.log('skipping fetch backward direction [no item size]');\r\n } else {\r\n let position = firstIndexPosition;\r\n let index = firstIndex;\r\n while (true) {\r\n if (start >= 0) {\r\n const size = buffer.getSizeByIndex(index);\r\n const diff = position + size - start;\r\n if (diff > 0) {\r\n firstIndex = index;\r\n firstIndexPosition = position;\r\n break;\r\n }\r\n position += size;\r\n index++;\r\n if (index < buffer.absMinIndex) {\r\n break;\r\n }\r\n }\r\n if (start < 0) {\r\n index--;\r\n if (index < buffer.absMinIndex) {\r\n break;\r\n }\r\n position -= buffer.getSizeByIndex(index);\r\n const diff = position - start;\r\n firstIndex = index;\r\n firstIndexPosition = position;\r\n if (diff <= 0) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n first.index = first.indexBuffer = Math.max(firstIndex, buffer.absMinIndex);\r\n first.position = firstIndexPosition;\r\n }\r\n\r\n static setLastIndex(scroller: Scroller): void {\r\n const { state, buffer, settings } = scroller;\r\n const { fetch, cycle } = state;\r\n const { firstVisible, positions, first, last } = fetch;\r\n const { relative, end } = positions;\r\n let lastIndex;\r\n if (!buffer.defaultSize) {\r\n // just to fetch forward bufferSize items if neither averageItemSize nor itemSize are present\r\n lastIndex = buffer.startIndex + settings.bufferSize - 1;\r\n scroller.logger.log('forcing fetch forward direction [no item size]');\r\n } else {\r\n let index = first.indexBuffer;\r\n let position = first.position;\r\n lastIndex = index;\r\n while (true) {\r\n lastIndex = index;\r\n const size = buffer.getSizeByIndex(index);\r\n position += size;\r\n if (isNaN(firstVisible.index) && position > relative) {\r\n firstVisible.index = index;\r\n if (!cycle.innerLoop.isInitial) {\r\n firstVisible.delta = position - size - relative;\r\n }\r\n }\r\n if (position >= end) {\r\n break;\r\n }\r\n if (index++ > buffer.absMaxIndex) {\r\n break;\r\n }\r\n }\r\n }\r\n last.index = last.indexBuffer = Math.min(lastIndex, buffer.absMaxIndex);\r\n }\r\n\r\n static skipBufferedItems(scroller: Scroller): void {\r\n const { buffer } = scroller;\r\n if (!buffer.size) {\r\n return;\r\n }\r\n const { fetch } = scroller.state;\r\n const firstIndex = fetch.first.index;\r\n const lastIndex = fetch.last.index;\r\n const packs: number[][] = [[]];\r\n let p = 0;\r\n for (let i = firstIndex; i <= lastIndex; i++) {\r\n if (!buffer.get(i)) {\r\n packs[p].push(i);\r\n } else if (packs[p].length) {\r\n packs[++p] = [];\r\n }\r\n }\r\n let pack = packs[0];\r\n if (packs[0].length && packs[1] && packs[1].length) {\r\n fetch.hasAnotherPack = true;\r\n // todo: need to look for biggest pack in visible area\r\n // todo: or think about merging two requests in a single Fetch process\r\n if (packs[1].length >= packs[0].length) {\r\n pack = packs[1];\r\n }\r\n }\r\n fetch.first.index = Math.max(pack[0], buffer.absMinIndex);\r\n fetch.last.index = Math.min(pack[pack.length - 1], buffer.absMaxIndex);\r\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\r\n scroller.logger.fetch('after Buffer flushing');\r\n }\r\n }\r\n\r\n static checkBufferGaps(scroller: Scroller): void {\r\n const { buffer, state } = scroller;\r\n const { fetch } = state;\r\n if (!buffer.size) {\r\n return;\r\n }\r\n const fetchFirst = fetch.first.index;\r\n const bufferLast = buffer.lastIndex;\r\n if (fetchFirst > bufferLast) {\r\n fetch.first.index = fetch.first.indexBuffer = bufferLast + 1;\r\n }\r\n const bufferFirst = buffer.firstIndex;\r\n const fetchLast = fetch.last.index;\r\n if (fetchLast < bufferFirst) {\r\n fetch.last.index = fetch.last.indexBuffer = bufferFirst - 1;\r\n }\r\n if (fetch.first.index !== fetchFirst || fetch.last.index !== fetchLast) {\r\n scroller.logger.fetch('after Buffer filling (no clip case)');\r\n }\r\n }\r\n\r\n static checkFetchPackSize(scroller: Scroller): void {\r\n const { buffer, state } = scroller;\r\n const { fetch } = state;\r\n if (!fetch.shouldFetch) {\r\n return;\r\n }\r\n const firstIndex = fetch.first.index;\r\n const lastIndex = fetch.last.index;\r\n const diff = scroller.settings.bufferSize - (lastIndex - firstIndex + 1);\r\n if (diff <= 0) {\r\n return;\r\n }\r\n if (!buffer.size || lastIndex > buffer.items[0].$index) {\r\n // forward\r\n const newLastIndex = Math.min(lastIndex + diff, buffer.absMaxIndex);\r\n if (newLastIndex > lastIndex) {\r\n fetch.last.index = fetch.last.indexBuffer = newLastIndex;\r\n }\r\n } else {\r\n const newFirstIndex = Math.max(firstIndex - diff, buffer.absMinIndex);\r\n if (newFirstIndex < firstIndex) {\r\n fetch.first.index = fetch.first.indexBuffer = newFirstIndex;\r\n }\r\n }\r\n if (fetch.first.index !== firstIndex || fetch.last.index !== lastIndex) {\r\n scroller.logger.fetch('after bufferSize adjustment');\r\n PreFetch.skipBufferedItems(scroller);\r\n }\r\n }\r\n\r\n static setFetchDirection(scroller: Scroller): void {\r\n const { buffer, state } = scroller;\r\n const { fetch } = state;\r\n if (fetch.last.index) {\r\n let direction = Direction.forward;\r\n if (buffer.size) {\r\n direction =\r\n fetch.last.index < buffer.items[0].$index ? Direction.backward : Direction.forward;\r\n }\r\n fetch.direction = direction;\r\n scroller.logger.log(() => `fetch direction is \"${direction}\"`);\r\n }\r\n }\r\n\r\n static getStatus(scroller: Scroller): ProcessStatus {\r\n const { cycle, fetch } = scroller.state;\r\n if (cycle.initiator === AdapterProcess.clip) {\r\n scroller.logger.log(() => `going to skip fetch due to \"${AdapterProcess.clip}\" process`);\r\n return ProcessStatus.next;\r\n }\r\n if (fetch.shouldFetch) {\r\n scroller.logger.log(\r\n () => `going to fetch ${fetch.count} items started from index ${fetch.index}`\r\n );\r\n return ProcessStatus.next;\r\n }\r\n return ProcessStatus.done;\r\n }\r\n}\r\n"]}
|