vscroll 1.4.0-alpha → 1.4.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 +152 -184
- 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 +140 -173
- 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 +153 -185
- 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/buffer/checkCall.js +23 -1
- package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm2015/classes/buffer.js +22 -17
- package/dist/esm2015/classes/buffer.js.map +1 -1
- package/dist/esm2015/classes/state/fetch.js +4 -11
- package/dist/esm2015/classes/state/fetch.js.map +1 -1
- package/dist/esm2015/processes/adapter/append.js +20 -71
- package/dist/esm2015/processes/adapter/append.js.map +1 -1
- package/dist/esm2015/processes/adapter/insert.js +28 -29
- package/dist/esm2015/processes/adapter/insert.js.map +1 -1
- package/dist/esm2015/processes/postFetch.js +0 -1
- package/dist/esm2015/processes/postFetch.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 +6 -6
- package/dist/esm2015/workflow-transducer.js.map +1 -1
- package/dist/esm5/classes/buffer/checkCall.js +25 -1
- package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm5/classes/buffer.js +24 -17
- package/dist/esm5/classes/buffer.js.map +1 -1
- package/dist/esm5/classes/state/fetch.js +4 -11
- package/dist/esm5/classes/state/fetch.js.map +1 -1
- package/dist/esm5/processes/adapter/append.js +20 -72
- package/dist/esm5/processes/adapter/append.js.map +1 -1
- package/dist/esm5/processes/adapter/insert.js +28 -31
- package/dist/esm5/processes/adapter/insert.js.map +1 -1
- package/dist/esm5/processes/postFetch.js +0 -1
- package/dist/esm5/processes/postFetch.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 +6 -6
- package/dist/esm5/workflow-transducer.js.map +1 -1
- package/dist/typings/classes/buffer/checkCall.d.ts +4 -1
- package/dist/typings/classes/buffer.d.ts +3 -3
- package/dist/typings/classes/state/fetch.d.ts +1 -3
- package/dist/typings/processes/adapter/append.d.ts +1 -3
- package/dist/typings/processes/adapter/insert.d.ts +1 -0
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postFetch.js","sourceRoot":"","sources":["../../../src/processes/postFetch.ts"],"names":[],"mappings":"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
|
|
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';\nimport { Scroller } from '../scroller';\nimport { Item } from '../classes/item';\n\nexport default class PostFetch extends BaseProcessFactory(CommonProcess.postFetch) {\n\n static run(scroller: Scroller): void {\n const { workflow } = scroller;\n if (PostFetch.setItems(scroller)) {\n PostFetch.setBufferLimits(scroller);\n workflow.call({\n process: PostFetch.process,\n status: scroller.state.fetch.hasNewItems\n ? ProcessStatus.next\n : ProcessStatus.done\n });\n } else {\n workflow.call({\n process: PostFetch.process,\n status: ProcessStatus.error,\n payload: { error: 'Can\\'t set buffer items' }\n });\n }\n }\n\n static setBufferLimits(scroller: Scroller): void {\n const { buffer, state: { fetch, cycle: { innerLoop } } } = scroller;\n const { items, first: { index: first }, last: { index: last } } = fetch;\n if (!items.length) {\n if (last < buffer.minIndex || innerLoop.isInitial) {\n buffer.absMinIndex = buffer.minIndex;\n }\n if (first > buffer.maxIndex || innerLoop.isInitial) {\n buffer.absMaxIndex = buffer.maxIndex;\n }\n } else {\n const lastIndex = items.length - 1;\n if (first < items[0].$index) {\n buffer.absMinIndex = items[0].$index;\n }\n if (last > items[lastIndex].$index) {\n buffer.absMaxIndex = items[lastIndex].$index;\n }\n }\n }\n\n static setItems(scroller: Scroller): boolean {\n const { buffer, state: { fetch, cycle } } = scroller;\n const items = fetch.newItemsData;\n if (!items || !items.length) { // empty result\n return true;\n }\n // eof/bof case, need to shift fetch index if bof\n let fetchIndex = fetch.index;\n if (items.length < fetch.count) {\n if (cycle.innerLoop.isInitial) {\n // let's treat initial poor fetch as startIndex-bof\n fetchIndex = buffer.startIndex;\n } else if (fetch.first.index < buffer.minIndex) { // normal bof\n fetchIndex = buffer.minIndex - items.length;\n }\n }\n fetch.items = items.map((item, index: number) =>\n new Item(fetchIndex + index, item, scroller.routines)\n );\n return buffer.setItems(fetch.items);\n }\n\n}\n"]}
|
package/dist/esm2015/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;CACjB,CAAC","sourcesContent":["export default {\n name: 'vscroll',\n version: '1.4.0'\n};\n"]}
|
|
@@ -113,13 +113,7 @@ export const runStateMachine = ({ input: { process, status, payload = {} }, meth
|
|
|
113
113
|
case CommonProcess.start:
|
|
114
114
|
switch (payload.process) {
|
|
115
115
|
case AdapterProcess.append:
|
|
116
|
-
case AdapterProcess.check:
|
|
117
116
|
case AdapterProcess.insert:
|
|
118
|
-
run(Render)();
|
|
119
|
-
break;
|
|
120
|
-
case AdapterProcess.remove:
|
|
121
|
-
run(Adjust)();
|
|
122
|
-
break;
|
|
123
117
|
case AdapterProcess.replace:
|
|
124
118
|
case AdapterProcess.update:
|
|
125
119
|
if (payload.doRender) {
|
|
@@ -129,6 +123,12 @@ export const runStateMachine = ({ input: { process, status, payload = {} }, meth
|
|
|
129
123
|
run(Adjust)();
|
|
130
124
|
}
|
|
131
125
|
break;
|
|
126
|
+
case AdapterProcess.check:
|
|
127
|
+
run(Render)();
|
|
128
|
+
break;
|
|
129
|
+
case AdapterProcess.remove:
|
|
130
|
+
run(Adjust)();
|
|
131
|
+
break;
|
|
132
132
|
default:
|
|
133
133
|
run(PreFetch)();
|
|
134
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-transducer.js","sourceRoot":"","sources":["../../src/workflow-transducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonProcess,\n AdapterProcess,\n ProcessStatus as Status,\n Init,\n Scroll,\n Reset,\n Reload,\n Append,\n Check,\n Remove,\n UserClip,\n Insert,\n Replace,\n Update,\n Fix,\n Start,\n PreFetch,\n Fetch,\n PostFetch,\n Render,\n PreClip,\n Clip,\n Adjust,\n End,\n} from './processes/index';\n\nimport { StateMachineParams } from './interfaces/index';\n\nexport const runStateMachine = ({\n input: { process, status, payload = {} },\n methods: { run, interrupt, done, onError }\n}: StateMachineParams): void => {\n if (status === Status.error) {\n onError(process, payload);\n if (!process.startsWith('adapter')) {\n run(End)(payload);\n }\n return;\n }\n const { options } = payload;\n switch (process) {\n case CommonProcess.init:\n if (status === Status.start) { // App start\n run(Init)(process);\n }\n if (status === Status.next) {\n run(Start)();\n }\n break;\n case CommonProcess.scroll:\n if (status === Status.start) {\n run(Scroll)(payload);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.reset:\n case AdapterProcess.reload:\n if (status === Status.start) {\n if (process === AdapterProcess.reset) {\n run(Reset)(options);\n } else {\n run(Reload)(options);\n }\n }\n if (status === Status.next) {\n interrupt({ process, ...payload });\n if (payload.finalize) {\n run(End)();\n } else {\n run(Init)(process);\n }\n }\n break;\n case AdapterProcess.append:\n case AdapterProcess.prepend:\n if (status === Status.start) {\n run(Append)({ process, options });\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.check:\n if (status === Status.start) {\n run(Check)();\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.remove:\n if (status === Status.start) {\n run(Remove)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.clip:\n if (status === Status.start) {\n run(UserClip)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.insert:\n if (status === Status.start) {\n run(Insert)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.replace:\n if (status === Status.start) {\n run(Replace)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.update:\n if (status === Status.start) {\n run(Update)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.fix:\n if (status === Status.start) {\n run(Fix)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case CommonProcess.start:\n switch (payload.process) {\n case AdapterProcess.append:\n case AdapterProcess.check:\n case AdapterProcess.insert:\n run(Render)();\n break;\n case AdapterProcess.remove:\n run(Adjust)();\n break;\n case AdapterProcess.replace:\n case AdapterProcess.update:\n if (payload.doRender) {\n run(Render)();\n } else {\n run(Adjust)();\n }\n break;\n default:\n run(PreFetch)();\n }\n break;\n case CommonProcess.preFetch:\n if (status === Status.next) {\n switch (payload.process) {\n case AdapterProcess.clip:\n run(PreClip)();\n break;\n default:\n run(Fetch)();\n }\n }\n if (status === Status.done) {\n run(End)();\n }\n break;\n case CommonProcess.fetch:\n run(PostFetch)();\n break;\n case CommonProcess.postFetch:\n if (status === Status.next) {\n run(Render)();\n }\n if (status === Status.done) {\n run(End)();\n }\n break;\n case CommonProcess.render:\n if (status === Status.next) {\n switch (payload.process) {\n case AdapterProcess.append:\n case AdapterProcess.check:\n case AdapterProcess.insert:\n case AdapterProcess.replace:\n case AdapterProcess.update:\n run(Adjust)();\n break;\n default:\n run(PreClip)();\n }\n }\n if (status === Status.done) {\n run(End)();\n }\n break;\n case CommonProcess.preClip:\n if (payload.doClip) {\n run(Clip)();\n } else {\n run(Adjust)();\n }\n break;\n case CommonProcess.clip:\n run(Adjust)();\n break;\n case CommonProcess.adjust:\n run(End)();\n break;\n case CommonProcess.end:\n if (status === Status.next) {\n switch (payload.process) {\n case AdapterProcess.reset:\n case AdapterProcess.reload:\n done();\n run(Init)(payload.process);\n break;\n default:\n run(Start)();\n }\n }\n if (status === Status.done) {\n done();\n }\n break;\n }\n};\n"]}
|
|
1
|
+
{"version":3,"file":"workflow-transducer.js","sourceRoot":"","sources":["../../src/workflow-transducer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CommonProcess,\n AdapterProcess,\n ProcessStatus as Status,\n Init,\n Scroll,\n Reset,\n Reload,\n Append,\n Check,\n Remove,\n UserClip,\n Insert,\n Replace,\n Update,\n Fix,\n Start,\n PreFetch,\n Fetch,\n PostFetch,\n Render,\n PreClip,\n Clip,\n Adjust,\n End,\n} from './processes/index';\n\nimport { StateMachineParams } from './interfaces/index';\n\nexport const runStateMachine = ({\n input: { process, status, payload = {} },\n methods: { run, interrupt, done, onError }\n}: StateMachineParams): void => {\n if (status === Status.error) {\n onError(process, payload);\n if (!process.startsWith('adapter')) {\n run(End)(payload);\n }\n return;\n }\n const { options } = payload;\n switch (process) {\n case CommonProcess.init:\n if (status === Status.start) { // App start\n run(Init)(process);\n }\n if (status === Status.next) {\n run(Start)();\n }\n break;\n case CommonProcess.scroll:\n if (status === Status.start) {\n run(Scroll)(payload);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.reset:\n case AdapterProcess.reload:\n if (status === Status.start) {\n if (process === AdapterProcess.reset) {\n run(Reset)(options);\n } else {\n run(Reload)(options);\n }\n }\n if (status === Status.next) {\n interrupt({ process, ...payload });\n if (payload.finalize) {\n run(End)();\n } else {\n run(Init)(process);\n }\n }\n break;\n case AdapterProcess.append:\n case AdapterProcess.prepend:\n if (status === Status.start) {\n run(Append)({ process, options });\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.check:\n if (status === Status.start) {\n run(Check)();\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.remove:\n if (status === Status.start) {\n run(Remove)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.clip:\n if (status === Status.start) {\n run(UserClip)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.insert:\n if (status === Status.start) {\n run(Insert)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.replace:\n if (status === Status.start) {\n run(Replace)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.update:\n if (status === Status.start) {\n run(Update)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case AdapterProcess.fix:\n if (status === Status.start) {\n run(Fix)(options);\n }\n if (status === Status.next) {\n run(Init)(process);\n }\n break;\n case CommonProcess.start:\n switch (payload.process) {\n case AdapterProcess.append:\n case AdapterProcess.insert:\n case AdapterProcess.replace:\n case AdapterProcess.update:\n if (payload.doRender) {\n run(Render)();\n } else {\n run(Adjust)();\n }\n break;\n case AdapterProcess.check:\n run(Render)();\n break;\n case AdapterProcess.remove:\n run(Adjust)();\n break;\n default:\n run(PreFetch)();\n }\n break;\n case CommonProcess.preFetch:\n if (status === Status.next) {\n switch (payload.process) {\n case AdapterProcess.clip:\n run(PreClip)();\n break;\n default:\n run(Fetch)();\n }\n }\n if (status === Status.done) {\n run(End)();\n }\n break;\n case CommonProcess.fetch:\n run(PostFetch)();\n break;\n case CommonProcess.postFetch:\n if (status === Status.next) {\n run(Render)();\n }\n if (status === Status.done) {\n run(End)();\n }\n break;\n case CommonProcess.render:\n if (status === Status.next) {\n switch (payload.process) {\n case AdapterProcess.append:\n case AdapterProcess.check:\n case AdapterProcess.insert:\n case AdapterProcess.replace:\n case AdapterProcess.update:\n run(Adjust)();\n break;\n default:\n run(PreClip)();\n }\n }\n if (status === Status.done) {\n run(End)();\n }\n break;\n case CommonProcess.preClip:\n if (payload.doClip) {\n run(Clip)();\n } else {\n run(Adjust)();\n }\n break;\n case CommonProcess.clip:\n run(Adjust)();\n break;\n case CommonProcess.adjust:\n run(End)();\n break;\n case CommonProcess.end:\n if (status === Status.next) {\n switch (payload.process) {\n case AdapterProcess.reset:\n case AdapterProcess.reload:\n done();\n run(Init)(payload.process);\n break;\n default:\n run(Start)();\n }\n }\n if (status === Status.done) {\n done();\n }\n break;\n }\n};\n"]}
|
|
@@ -4,7 +4,31 @@ var CheckBufferCall = /** @class */ (function () {
|
|
|
4
4
|
this.context = context;
|
|
5
5
|
this.logger = logger;
|
|
6
6
|
}
|
|
7
|
-
CheckBufferCall.prototype.
|
|
7
|
+
CheckBufferCall.prototype.fillEmpty = function (items, before, after) {
|
|
8
|
+
if (!items.length) {
|
|
9
|
+
this.logger.log('no items to fill the buffer; empty list');
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (!Number.isInteger(before) && !Number.isInteger(after)) {
|
|
13
|
+
this.logger.log('no items to fill the buffer; wrong indexes');
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
this.logger.log(function () { return "going to fill the buffer with " + items.length + " item(s)"; });
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
CheckBufferCall.prototype.insertInBuffer = function (predicate, before, after) {
|
|
20
|
+
var index = Number.isInteger(before) ? before : (Number.isInteger(after) ? after : NaN);
|
|
21
|
+
var found = this.context.items.find(function (item) {
|
|
22
|
+
return (predicate && predicate(item.get())) ||
|
|
23
|
+
(Number.isInteger(index) && index === item.$index);
|
|
24
|
+
});
|
|
25
|
+
if (!found) {
|
|
26
|
+
this.logger.log('no items to insert in buffer; empty predicate\'s result');
|
|
27
|
+
return NaN;
|
|
28
|
+
}
|
|
29
|
+
return found.$index;
|
|
30
|
+
};
|
|
31
|
+
CheckBufferCall.prototype.insertVirtual = function (items, index, direction) {
|
|
8
32
|
if (!items.length) {
|
|
9
33
|
this.logger.log('no items to insert virtually; empty list');
|
|
10
34
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkCall.js","sourceRoot":"","sources":["../../../../src/classes/buffer/checkCall.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"checkCall.js","sourceRoot":"","sources":["../../../../src/classes/buffer/checkCall.ts"],"names":[],"mappings":"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","sourcesContent":["import { Buffer } from '../buffer';\nimport { Logger } from '../logger';\nimport { Direction } from '../../inputs/index';\nimport { ItemsPredicate } from '../../interfaces/index';\n\nexport class CheckBufferCall<Data> {\n private context: Buffer<Data>;\n private logger: Logger;\n\n constructor(context: Buffer<Data>, logger: Logger) {\n this.context = context;\n this.logger = logger;\n }\n\n fillEmpty(items: Data[], before?: number, after?: number): boolean {\n if (!items.length) {\n this.logger.log('no items to fill the buffer; empty list');\n return false;\n }\n if (!Number.isInteger(before) && !Number.isInteger(after)) {\n this.logger.log('no items to fill the buffer; wrong indexes');\n return false;\n }\n this.logger.log(() => `going to fill the buffer with ${items.length} item(s)`);\n return true;\n }\n\n insertInBuffer(predicate?: ItemsPredicate, before?: number, after?: number): number {\n const index = Number.isInteger(before) ? before : (Number.isInteger(after) ? after : NaN);\n const found = this.context.items.find(item =>\n (predicate && predicate(item.get())) ||\n (Number.isInteger(index) && index === item.$index)\n );\n if (!found) {\n this.logger.log('no items to insert in buffer; empty predicate\\'s result');\n return NaN;\n }\n return found.$index;\n }\n\n insertVirtual(items: Data[], index: number, direction: Direction): boolean {\n if (!items.length) {\n this.logger.log('no items to insert virtually; empty list');\n return false;\n }\n const { firstIndex, lastIndex, finiteAbsMinIndex, finiteAbsMaxIndex } = this.context;\n if (index < finiteAbsMinIndex || index > finiteAbsMaxIndex) {\n this.logger.log(() =>\n 'no items to insert virtually; ' +\n `selected index (${index}) does not match virtual area [${finiteAbsMinIndex}..${finiteAbsMaxIndex}]`\n );\n return false;\n }\n const before = direction === Direction.backward;\n if (!(index < firstIndex + (before ? 1 : 0) || index > lastIndex - (before ? 0 : 1))) {\n this.logger.log(() =>\n `no items to insert virtually; selected index (${index}) belongs Buffer [${firstIndex}..${lastIndex}]`\n );\n return false;\n }\n this.logger.log(() => `going to insert ${items.length} item(s) virtually`);\n return true;\n }\n\n}"]}
|
|
@@ -200,6 +200,9 @@ var Buffer = /** @class */ (function () {
|
|
|
200
200
|
return !toRemove;
|
|
201
201
|
});
|
|
202
202
|
};
|
|
203
|
+
Buffer.prototype.getIndexToInsert = function (predicate, before, after) {
|
|
204
|
+
return this.checkCall.insertInBuffer(predicate, before, after);
|
|
205
|
+
};
|
|
203
206
|
Buffer.prototype.shiftExtremum = function (amount, fixRight) {
|
|
204
207
|
if (!fixRight) {
|
|
205
208
|
this.absMaxIndex += amount;
|
|
@@ -215,24 +218,8 @@ var Buffer = /** @class */ (function () {
|
|
|
215
218
|
this.startIndex = this.absMinIndex;
|
|
216
219
|
}
|
|
217
220
|
};
|
|
218
|
-
Buffer.prototype.appendVirtually = function (count, fixRight) {
|
|
219
|
-
if (fixRight) {
|
|
220
|
-
this.items.forEach(function (item) { return item.updateIndex(item.$index - count); });
|
|
221
|
-
this.cache.shiftIndexes(-count);
|
|
222
|
-
this.items = __spreadArray([], __read(this.items));
|
|
223
|
-
}
|
|
224
|
-
this.shiftExtremum(count, fixRight);
|
|
225
|
-
};
|
|
226
|
-
Buffer.prototype.prependVirtually = function (count, fixRight) {
|
|
227
|
-
if (!fixRight) {
|
|
228
|
-
this.items.forEach(function (item) { return item.updateIndex(item.$index + count); });
|
|
229
|
-
this.cache.shiftIndexes(count);
|
|
230
|
-
this.items = __spreadArray([], __read(this.items));
|
|
231
|
-
}
|
|
232
|
-
this.shiftExtremum(count, fixRight);
|
|
233
|
-
};
|
|
234
221
|
Buffer.prototype.insertVirtually = function (items, index, direction, fixRight) {
|
|
235
|
-
if (!this.checkCall.
|
|
222
|
+
if (!this.checkCall.insertVirtual(items, index, direction)) {
|
|
236
223
|
return false;
|
|
237
224
|
}
|
|
238
225
|
var shift = 0;
|
|
@@ -271,6 +258,26 @@ var Buffer = /** @class */ (function () {
|
|
|
271
258
|
}
|
|
272
259
|
this.cache.removeItems(indexes, fixRight);
|
|
273
260
|
};
|
|
261
|
+
Buffer.prototype.fillEmpty = function (items, beforeIndex, afterIndex, fixRight, generator) {
|
|
262
|
+
if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
var before = Number.isInteger(beforeIndex);
|
|
266
|
+
var index = (before ? beforeIndex : afterIndex);
|
|
267
|
+
var shift = (fixRight ? items.length : (before ? 1 : 0));
|
|
268
|
+
this.items = items.map(function (data, i) {
|
|
269
|
+
return generator(index + i + (!before ? 1 : 0) - shift, data);
|
|
270
|
+
});
|
|
271
|
+
this._absMinIndex = this.items[0].$index;
|
|
272
|
+
this._absMaxIndex = this.items[this.size - 1].$index;
|
|
273
|
+
if (this.startIndex <= this.absMinIndex) {
|
|
274
|
+
this.startIndex = this.absMinIndex;
|
|
275
|
+
}
|
|
276
|
+
else if (this.startIndex > this.absMaxIndex) {
|
|
277
|
+
this.startIndex = this.absMaxIndex;
|
|
278
|
+
}
|
|
279
|
+
return true;
|
|
280
|
+
};
|
|
274
281
|
Buffer.prototype.updateItems = function (predicate, generator, indexToTrack, fixRight) {
|
|
275
282
|
if (!this.size || Number.isNaN(this.firstIndex)) {
|
|
276
283
|
return { trackedIndex: NaN, toRemove: [] };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/classes/buffer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cache } from './buffer/cache';\nimport { CheckBufferCall } from './buffer/checkCall';\nimport { Item } from './item';\nimport { Settings } from './settings';\nimport { Logger } from './logger';\nimport { Reactive } from './reactive';\nimport { Direction } from '../inputs/index';\nimport { OnDataChanged, BufferUpdater } from '../interfaces/index';\n\nexport class Buffer<Data> {\n\n private _items: Item<Data>[] = [];\n private _absMinIndex: number;\n private _absMaxIndex: number;\n bof: Reactive<boolean>;\n eof: Reactive<boolean>;\n\n changeItems: OnDataChanged<Data>;\n minIndexUser: number;\n maxIndexUser: number;\n startIndexUser: number;\n startIndex: number;\n\n private pristine: boolean;\n private cache: Cache<Data>;\n private checkCall: CheckBufferCall<Data>;\n private readonly logger: Logger;\n\n constructor(settings: Settings<Data>, onDataChanged: OnDataChanged<Data>, logger: Logger) {\n this.logger = logger;\n this.changeItems = onDataChanged;\n this.bof = new Reactive<boolean>(false);\n this.eof = new Reactive<boolean>(false);\n this.cache = new Cache<Data>(settings, logger);\n this.checkCall = new CheckBufferCall(this, logger);\n this.startIndexUser = settings.startIndex;\n this.minIndexUser = settings.minIndex;\n this.maxIndexUser = settings.maxIndex;\n this.reset(true);\n }\n\n dispose(): void {\n this.bof.dispose();\n this.eof.dispose();\n this._items.forEach(item => item.dispose());\n this._items = [];\n }\n\n reset(force: boolean, startIndex?: number): void {\n this.items.forEach(item => item.hide());\n this.pristine = true;\n this.items = [];\n this.cache.reset(force);\n this.absMinIndex = this.minIndexUser;\n this.absMaxIndex = this.maxIndexUser;\n this.setCurrentStartIndex(startIndex);\n this.bof.set(false);\n this.eof.set(false);\n this.pristine = false;\n }\n\n setCurrentStartIndex(newStartIndex?: unknown): void {\n const min = this.minIndexUser;\n const max = this.maxIndexUser;\n const start = this.startIndexUser;\n let index = Number(newStartIndex);\n if (Number.isNaN(index)) {\n this.logger.log(() => `fallback startIndex to settings.startIndex (${start})`);\n index = start;\n }\n if (index < min) {\n this.logger.log(() => `setting startIndex to settings.minIndex (${min}) because ${index} < ${min}`);\n index = min;\n }\n if (index > max) {\n this.logger.log(() => `setting startIndex to settings.maxIndex (${max}) because ${index} > ${max}`);\n index = max;\n }\n this.startIndex = index;\n }\n\n set items(items: Item<Data>[]) {\n this._items = items;\n this.changeItems(items);\n if (!this.pristine) {\n this.checkBOF();\n this.checkEOF();\n }\n }\n\n get items(): Item<Data>[] {\n return this._items;\n }\n\n set absMinIndex(value: number) {\n if (this._absMinIndex !== value) {\n this._absMinIndex = Number.isFinite(this._absMaxIndex) && value > this._absMaxIndex ? this._absMaxIndex : value;\n }\n if (!this.pristine) {\n this.checkBOF();\n }\n }\n\n get absMinIndex(): number {\n return this._absMinIndex;\n }\n\n set absMaxIndex(value: number) {\n if (this._absMaxIndex !== value) {\n this._absMaxIndex = Number.isFinite(this._absMinIndex) && value < this._absMinIndex ? this._absMinIndex : value;\n }\n if (!this.pristine) {\n this.checkEOF();\n }\n }\n\n get absMaxIndex(): number {\n return this._absMaxIndex;\n }\n\n private checkBOF() {\n // since bof has no setter, need to call checkBOF() on items and absMinIndex change\n const bof = this.items.length\n ? (this.items[0].$index === this.absMinIndex)\n : isFinite(this.absMinIndex);\n this.bof.set(bof);\n }\n\n private checkEOF() {\n // since eof has no setter, need to call checkEOF() on items and absMaxIndex change\n const eof = this.items.length\n ? (this.items[this.items.length - 1].$index === this.absMaxIndex)\n : isFinite(this.absMaxIndex);\n this.eof.set(eof);\n }\n\n get size(): number {\n return this._items.length;\n }\n\n get cacheSize(): number {\n return this.cache.size;\n }\n\n get defaultSize(): number {\n return this.cache.getDefaultSize();\n }\n\n get minIndex(): number {\n return isFinite(this.cache.minIndex) ? this.cache.minIndex : this.startIndex;\n }\n\n get maxIndex(): number {\n return isFinite(this.cache.maxIndex) ? this.cache.maxIndex : this.startIndex;\n }\n\n get firstIndex(): number {\n return this.items.length ? this.items[0].$index : NaN;\n }\n\n get lastIndex(): number {\n return this.items.length ? this.items[this.items.length - 1].$index : NaN;\n }\n\n get finiteAbsMinIndex(): number {\n return isFinite(this.absMinIndex) ? this.absMinIndex : this.minIndex;\n }\n\n get finiteAbsMaxIndex(): number {\n return isFinite(this.absMaxIndex) ? this.absMaxIndex : this.maxIndex;\n }\n\n get($index: number): Item<Data> | undefined {\n return this.items.find(item => item.$index === $index);\n }\n\n setItems(items: Item<Data>[]): boolean {\n if (!this.items.length) {\n this.items = [...items];\n } else if (this.items[0].$index > items[items.length - 1].$index) {\n this.items = [...items, ...this.items];\n } else if (items[0].$index > this.items[this.items.length - 1].$index) {\n this.items = [...this.items, ...items];\n } else {\n return false;\n }\n return true;\n }\n\n clip(): void {\n this.items = this.items.filter(({ toRemove }) => !toRemove);\n }\n\n private shiftExtremum(amount: number, fixRight: boolean) {\n if (!fixRight) {\n this.absMaxIndex += amount;\n } else {\n this.absMinIndex -= amount;\n this.startIndex -= amount;\n }\n if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n } else if (this.startIndex < this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n }\n }\n\n appendVirtually(count: number, fixRight: boolean): void {\n if (fixRight) {\n this.items.forEach(item => item.updateIndex(item.$index - count));\n this.cache.shiftIndexes(-count);\n this.items = [...this.items];\n }\n this.shiftExtremum(count, fixRight);\n }\n\n prependVirtually(count: number, fixRight: boolean): void {\n if (!fixRight) {\n this.items.forEach(item => item.updateIndex(item.$index + count));\n this.cache.shiftIndexes(count);\n this.items = [...this.items];\n }\n this.shiftExtremum(count, fixRight);\n }\n\n insertVirtually(items: Data[], index: number, direction: Direction, fixRight: boolean): boolean {\n if (!this.checkCall.insert(items, index, direction)) {\n return false;\n }\n let shift = 0;\n if (index <= this.firstIndex && !fixRight) {\n shift = items.length;\n } else if (index >= this.lastIndex && fixRight) {\n shift = -items.length;\n }\n if (shift) {\n this.items.forEach(item => item.updateIndex(item.$index + shift));\n this.cache.insertItems(items, index, direction, fixRight);\n this.items = [...this.items];\n }\n this.shiftExtremum(items.length, fixRight);\n return true;\n }\n\n removeVirtually(indexes: number[], fixRight: boolean): void {\n const length = this.items.length;\n let shifted = false;\n for (\n let i = fixRight ? length - 1 : 0;\n fixRight ? i >= 0 : i < length;\n fixRight ? i-- : i++\n ) {\n const item = this.items[i];\n const diff = indexes.reduce((acc, index) => acc + (fixRight\n ? (item.$index < index ? 1 : 0)\n : (item.$index > index ? -1 : 0)\n ), 0);\n shifted = shifted || !!diff;\n item.updateIndex(item.$index + diff);\n }\n this.shiftExtremum(-indexes.length, fixRight);\n if (shifted) {\n this.items = [...this.items];\n }\n this.cache.removeItems(indexes, fixRight);\n }\n\n updateItems(\n predicate: BufferUpdater<Data>,\n generator: (index: number, data: Data) => Item<Data>,\n indexToTrack: number,\n fixRight: boolean\n ): { trackedIndex: number, toRemove: Item<Data>[] } {\n if (!this.size || Number.isNaN(this.firstIndex)) {\n return { trackedIndex: NaN, toRemove: [] };\n }\n let trackedIndex = indexToTrack;\n let index = fixRight ? this.lastIndex : this.firstIndex;\n const items: Item<Data>[] = [];\n const diff = fixRight ? -1 : 1;\n const limit = this.size - 1;\n const beforeMap = new Map<number, Item>(); // need to persist original $indexes\n const updateArray = Array.prototype[fixRight ? 'unshift' : 'push'];\n\n for (let i = fixRight ? limit : 0; fixRight ? i >= 0 : i <= limit; i += diff) {\n const item = this.items[i];\n beforeMap.set(item.$index, item);\n const result = predicate(item);\n\n // if predicate result is falsy or empty array -> delete\n if (!result || (Array.isArray(result) && !result.length)) {\n item.toRemove = true;\n trackedIndex += item.$index >= indexToTrack ? (fixRight ? 1 : 0) : (fixRight ? 0 : -1);\n this.shiftExtremum(-1, fixRight);\n continue;\n }\n\n // if predicate result is truthy but not array -> leave\n if (!Array.isArray(result)) {\n item.updateIndex(index);\n updateArray.call(items, item);\n index += diff;\n continue;\n }\n\n // if predicate result is non-empty array -> insert/replace\n if (item.$index < indexToTrack) {\n trackedIndex += fixRight ? 0 : result.length - 1;\n } else if (item.$index > indexToTrack) {\n trackedIndex += fixRight ? 1 - result.length : 0;\n }\n let toRemove = true;\n const newItems: Item<Data>[] = [];\n (fixRight ? [...result].reverse() : result).forEach((data, i) => {\n let newItem: Item<Data>;\n if (item.data === data) {\n if (indexToTrack === item.$index) {\n trackedIndex = index + i * diff;\n }\n item.updateIndex(index + i * diff);\n newItem = item;\n toRemove = false; // insert case\n } else {\n newItem = generator(index + i * diff, data);\n newItem.toInsert = true;\n }\n updateArray.call(newItems, newItem);\n });\n item.toRemove = toRemove;\n updateArray.call(items, ...newItems);\n index += diff * result.length;\n if (result.length > 1) {\n this.shiftExtremum(result.length - 1, fixRight);\n }\n }\n\n const toRemove = this.items.filter(item => item.toRemove);\n const itemsBefore = Array.from(beforeMap)\n .map(([$index, { size, toRemove }]) => ({ $index, size, toRemove }))\n .sort((a, b) => a.$index - b.$index);\n this.items = items;\n this.cache.updateSubset(itemsBefore, items, fixRight);\n\n if (this.finiteAbsMinIndex === this.finiteAbsMaxIndex) {\n trackedIndex = NaN;\n } else if (trackedIndex > this.finiteAbsMaxIndex) {\n trackedIndex = this.finiteAbsMaxIndex;\n } else if (trackedIndex < this.finiteAbsMinIndex) {\n trackedIndex = this.finiteAbsMinIndex;\n }\n return { trackedIndex, toRemove };\n }\n\n cacheItem(item: Item<Data>): void {\n this.cache.add(item);\n }\n\n getFirstVisibleItemIndex(): number {\n const length = this.items.length;\n for (let i = 0; i < length; i++) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getLastVisibleItemIndex(): number {\n for (let i = this.items.length - 1; i >= 0; i--) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getFirstVisibleItem(): Item<Data> | undefined {\n const index = this.getFirstVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getLastVisibleItem(): Item<Data> | undefined {\n const index = this.getLastVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getEdgeVisibleItem(direction: Direction, opposite?: boolean): Item<Data> | undefined {\n return direction === (!opposite ? Direction.forward : Direction.backward) ?\n this.getLastVisibleItem() : this.getFirstVisibleItem();\n }\n\n getVisibleItemsCount(): number {\n return this.items.reduce((acc: number, item) => acc + (item.invisible ? 0 : 1), 0);\n }\n\n getSizeByIndex(index: number): number {\n return this.cache.getSizeByIndex(index);\n }\n\n checkDefaultSize(): boolean {\n return this.cache.recalculateDefaultSize();\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../../src/classes/buffer.ts"],"names":[],"mappings":"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","sourcesContent":["import { Cache } from './buffer/cache';\nimport { CheckBufferCall } from './buffer/checkCall';\nimport { Item } from './item';\nimport { Settings } from './settings';\nimport { Logger } from './logger';\nimport { Reactive } from './reactive';\nimport { Direction } from '../inputs/index';\nimport { OnDataChanged, BufferUpdater, ItemsPredicate } from '../interfaces/index';\n\nexport class Buffer<Data> {\n\n private _items: Item<Data>[] = [];\n private _absMinIndex: number;\n private _absMaxIndex: number;\n bof: Reactive<boolean>;\n eof: Reactive<boolean>;\n\n changeItems: OnDataChanged<Data>;\n minIndexUser: number;\n maxIndexUser: number;\n startIndexUser: number;\n startIndex: number;\n\n private pristine: boolean;\n private cache: Cache<Data>;\n private checkCall: CheckBufferCall<Data>;\n private readonly logger: Logger;\n\n constructor(settings: Settings<Data>, onDataChanged: OnDataChanged<Data>, logger: Logger) {\n this.logger = logger;\n this.changeItems = onDataChanged;\n this.bof = new Reactive<boolean>(false);\n this.eof = new Reactive<boolean>(false);\n this.cache = new Cache<Data>(settings, logger);\n this.checkCall = new CheckBufferCall(this, logger);\n this.startIndexUser = settings.startIndex;\n this.minIndexUser = settings.minIndex;\n this.maxIndexUser = settings.maxIndex;\n this.reset(true);\n }\n\n dispose(): void {\n this.bof.dispose();\n this.eof.dispose();\n this._items.forEach(item => item.dispose());\n this._items = [];\n }\n\n reset(force: boolean, startIndex?: number): void {\n this.items.forEach(item => item.hide());\n this.pristine = true;\n this.items = [];\n this.cache.reset(force);\n this.absMinIndex = this.minIndexUser;\n this.absMaxIndex = this.maxIndexUser;\n this.setCurrentStartIndex(startIndex);\n this.bof.set(false);\n this.eof.set(false);\n this.pristine = false;\n }\n\n setCurrentStartIndex(newStartIndex?: unknown): void {\n const min = this.minIndexUser;\n const max = this.maxIndexUser;\n const start = this.startIndexUser;\n let index = Number(newStartIndex);\n if (Number.isNaN(index)) {\n this.logger.log(() => `fallback startIndex to settings.startIndex (${start})`);\n index = start;\n }\n if (index < min) {\n this.logger.log(() => `setting startIndex to settings.minIndex (${min}) because ${index} < ${min}`);\n index = min;\n }\n if (index > max) {\n this.logger.log(() => `setting startIndex to settings.maxIndex (${max}) because ${index} > ${max}`);\n index = max;\n }\n this.startIndex = index;\n }\n\n set items(items: Item<Data>[]) {\n this._items = items;\n this.changeItems(items);\n if (!this.pristine) {\n this.checkBOF();\n this.checkEOF();\n }\n }\n\n get items(): Item<Data>[] {\n return this._items;\n }\n\n set absMinIndex(value: number) {\n if (this._absMinIndex !== value) {\n this._absMinIndex = Number.isFinite(this._absMaxIndex) && value > this._absMaxIndex ? this._absMaxIndex : value;\n }\n if (!this.pristine) {\n this.checkBOF();\n }\n }\n\n get absMinIndex(): number {\n return this._absMinIndex;\n }\n\n set absMaxIndex(value: number) {\n if (this._absMaxIndex !== value) {\n this._absMaxIndex = Number.isFinite(this._absMinIndex) && value < this._absMinIndex ? this._absMinIndex : value;\n }\n if (!this.pristine) {\n this.checkEOF();\n }\n }\n\n get absMaxIndex(): number {\n return this._absMaxIndex;\n }\n\n private checkBOF() {\n // since bof has no setter, need to call checkBOF() on items and absMinIndex change\n const bof = this.items.length\n ? (this.items[0].$index === this.absMinIndex)\n : isFinite(this.absMinIndex);\n this.bof.set(bof);\n }\n\n private checkEOF() {\n // since eof has no setter, need to call checkEOF() on items and absMaxIndex change\n const eof = this.items.length\n ? (this.items[this.items.length - 1].$index === this.absMaxIndex)\n : isFinite(this.absMaxIndex);\n this.eof.set(eof);\n }\n\n get size(): number {\n return this._items.length;\n }\n\n get cacheSize(): number {\n return this.cache.size;\n }\n\n get defaultSize(): number {\n return this.cache.getDefaultSize();\n }\n\n get minIndex(): number {\n return isFinite(this.cache.minIndex) ? this.cache.minIndex : this.startIndex;\n }\n\n get maxIndex(): number {\n return isFinite(this.cache.maxIndex) ? this.cache.maxIndex : this.startIndex;\n }\n\n get firstIndex(): number {\n return this.items.length ? this.items[0].$index : NaN;\n }\n\n get lastIndex(): number {\n return this.items.length ? this.items[this.items.length - 1].$index : NaN;\n }\n\n get finiteAbsMinIndex(): number {\n return isFinite(this.absMinIndex) ? this.absMinIndex : this.minIndex;\n }\n\n get finiteAbsMaxIndex(): number {\n return isFinite(this.absMaxIndex) ? this.absMaxIndex : this.maxIndex;\n }\n\n get($index: number): Item<Data> | undefined {\n return this.items.find(item => item.$index === $index);\n }\n\n setItems(items: Item<Data>[]): boolean {\n if (!this.items.length) {\n this.items = [...items];\n } else if (this.items[0].$index > items[items.length - 1].$index) {\n this.items = [...items, ...this.items];\n } else if (items[0].$index > this.items[this.items.length - 1].$index) {\n this.items = [...this.items, ...items];\n } else {\n return false;\n }\n return true;\n }\n\n clip(): void {\n this.items = this.items.filter(({ toRemove }) => !toRemove);\n }\n\n getIndexToInsert(predicate?: ItemsPredicate, before?: number, after?: number): number {\n return this.checkCall.insertInBuffer(predicate, before, after);\n }\n\n private shiftExtremum(amount: number, fixRight: boolean) {\n if (!fixRight) {\n this.absMaxIndex += amount;\n } else {\n this.absMinIndex -= amount;\n this.startIndex -= amount;\n }\n if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n } else if (this.startIndex < this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n }\n }\n\n insertVirtually(items: Data[], index: number, direction: Direction, fixRight: boolean): boolean {\n if (!this.checkCall.insertVirtual(items, index, direction)) {\n return false;\n }\n let shift = 0;\n if (index <= this.firstIndex && !fixRight) {\n shift = items.length;\n } else if (index >= this.lastIndex && fixRight) {\n shift = -items.length;\n }\n if (shift) {\n this.items.forEach(item => item.updateIndex(item.$index + shift));\n this.cache.insertItems(items, index, direction, fixRight);\n this.items = [...this.items];\n }\n this.shiftExtremum(items.length, fixRight);\n return true;\n }\n\n removeVirtually(indexes: number[], fixRight: boolean): void {\n const length = this.items.length;\n let shifted = false;\n for (\n let i = fixRight ? length - 1 : 0;\n fixRight ? i >= 0 : i < length;\n fixRight ? i-- : i++\n ) {\n const item = this.items[i];\n const diff = indexes.reduce((acc, index) => acc + (fixRight\n ? (item.$index < index ? 1 : 0)\n : (item.$index > index ? -1 : 0)\n ), 0);\n shifted = shifted || !!diff;\n item.updateIndex(item.$index + diff);\n }\n this.shiftExtremum(-indexes.length, fixRight);\n if (shifted) {\n this.items = [...this.items];\n }\n this.cache.removeItems(indexes, fixRight);\n }\n\n fillEmpty(\n items: Data[], beforeIndex: number | undefined, afterIndex: number | undefined, fixRight: boolean,\n generator: (index: number, data: Data) => Item<Data>,\n ): boolean {\n if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {\n return false;\n }\n const before = Number.isInteger(beforeIndex);\n const index = (before ? beforeIndex : afterIndex) as number;\n const shift = (fixRight ? items.length : (before ? 1 : 0));\n this.items = items.map((data, i) =>\n generator(index + i + (!before ? 1 : 0) - shift, data)\n );\n this._absMinIndex = this.items[0].$index;\n this._absMaxIndex = this.items[this.size - 1].$index;\n if (this.startIndex <= this.absMinIndex) {\n this.startIndex = this.absMinIndex;\n } else if (this.startIndex > this.absMaxIndex) {\n this.startIndex = this.absMaxIndex;\n }\n return true;\n }\n\n updateItems(\n predicate: BufferUpdater<Data>,\n generator: (index: number, data: Data) => Item<Data>,\n indexToTrack: number,\n fixRight: boolean\n ): { trackedIndex: number, toRemove: Item<Data>[] } {\n if (!this.size || Number.isNaN(this.firstIndex)) {\n return { trackedIndex: NaN, toRemove: [] };\n }\n let trackedIndex = indexToTrack;\n let index = fixRight ? this.lastIndex : this.firstIndex;\n const items: Item<Data>[] = [];\n const diff = fixRight ? -1 : 1;\n const limit = this.size - 1;\n const beforeMap = new Map<number, Item>(); // need to persist original $indexes\n const updateArray = Array.prototype[fixRight ? 'unshift' : 'push'];\n\n for (let i = fixRight ? limit : 0; fixRight ? i >= 0 : i <= limit; i += diff) {\n const item = this.items[i];\n beforeMap.set(item.$index, item);\n const result = predicate(item);\n\n // if predicate result is falsy or empty array -> delete\n if (!result || (Array.isArray(result) && !result.length)) {\n item.toRemove = true;\n trackedIndex += item.$index >= indexToTrack ? (fixRight ? 1 : 0) : (fixRight ? 0 : -1);\n this.shiftExtremum(-1, fixRight);\n continue;\n }\n\n // if predicate result is truthy but not array -> leave\n if (!Array.isArray(result)) {\n item.updateIndex(index);\n updateArray.call(items, item);\n index += diff;\n continue;\n }\n\n // if predicate result is non-empty array -> insert/replace\n if (item.$index < indexToTrack) {\n trackedIndex += fixRight ? 0 : result.length - 1;\n } else if (item.$index > indexToTrack) {\n trackedIndex += fixRight ? 1 - result.length : 0;\n }\n let toRemove = true;\n const newItems: Item<Data>[] = [];\n (fixRight ? [...result].reverse() : result).forEach((data, i) => {\n let newItem: Item<Data>;\n if (item.data === data) {\n if (indexToTrack === item.$index) {\n trackedIndex = index + i * diff;\n }\n item.updateIndex(index + i * diff);\n newItem = item;\n toRemove = false; // insert case\n } else {\n newItem = generator(index + i * diff, data);\n newItem.toInsert = true;\n }\n updateArray.call(newItems, newItem);\n });\n item.toRemove = toRemove;\n updateArray.call(items, ...newItems);\n index += diff * result.length;\n if (result.length > 1) {\n this.shiftExtremum(result.length - 1, fixRight);\n }\n }\n\n const toRemove = this.items.filter(item => item.toRemove);\n const itemsBefore = Array.from(beforeMap)\n .map(([$index, { size, toRemove }]) => ({ $index, size, toRemove }))\n .sort((a, b) => a.$index - b.$index);\n this.items = items;\n this.cache.updateSubset(itemsBefore, items, fixRight);\n\n if (this.finiteAbsMinIndex === this.finiteAbsMaxIndex) {\n trackedIndex = NaN;\n } else if (trackedIndex > this.finiteAbsMaxIndex) {\n trackedIndex = this.finiteAbsMaxIndex;\n } else if (trackedIndex < this.finiteAbsMinIndex) {\n trackedIndex = this.finiteAbsMinIndex;\n }\n return { trackedIndex, toRemove };\n }\n\n cacheItem(item: Item<Data>): void {\n this.cache.add(item);\n }\n\n getFirstVisibleItemIndex(): number {\n const length = this.items.length;\n for (let i = 0; i < length; i++) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getLastVisibleItemIndex(): number {\n for (let i = this.items.length - 1; i >= 0; i--) {\n if (!this.items[i].invisible) {\n return i;\n }\n }\n return -1;\n }\n\n getFirstVisibleItem(): Item<Data> | undefined {\n const index = this.getFirstVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getLastVisibleItem(): Item<Data> | undefined {\n const index = this.getLastVisibleItemIndex();\n if (index >= 0) {\n return this.items[index];\n }\n }\n\n getEdgeVisibleItem(direction: Direction, opposite?: boolean): Item<Data> | undefined {\n return direction === (!opposite ? Direction.forward : Direction.backward) ?\n this.getLastVisibleItem() : this.getFirstVisibleItem();\n }\n\n getVisibleItemsCount(): number {\n return this.items.reduce((acc: number, item) => acc + (item.invisible ? 0 : 1), 0);\n }\n\n getSizeByIndex(index: number): number {\n return this.cache.getSizeByIndex(index);\n }\n\n checkDefaultSize(): boolean {\n return this.cache.recalculateDefaultSize();\n }\n\n}\n"]}
|
|
@@ -61,7 +61,6 @@ var FetchModel = /** @class */ (function () {
|
|
|
61
61
|
this.direction = null;
|
|
62
62
|
this.cancel = null;
|
|
63
63
|
this.simulate = false;
|
|
64
|
-
this.isPrepend = false;
|
|
65
64
|
this.isCheck = false;
|
|
66
65
|
this.doRemove = false;
|
|
67
66
|
};
|
|
@@ -121,22 +120,16 @@ var FetchModel = /** @class */ (function () {
|
|
|
121
120
|
};
|
|
122
121
|
FetchModel.prototype.stopSimulate = function () {
|
|
123
122
|
this.simulate = false;
|
|
124
|
-
this.isPrepend = false;
|
|
125
123
|
this.isCheck = false;
|
|
126
124
|
this.doRemove = false;
|
|
127
125
|
};
|
|
128
|
-
FetchModel.prototype.
|
|
126
|
+
FetchModel.prototype.fill = function (items, start) {
|
|
129
127
|
this.startSimulate(items);
|
|
130
|
-
this.last.index = items[items.length - 1].$index;
|
|
131
128
|
this.first.index = items[0].$index;
|
|
129
|
+
this.last.index = items[items.length - 1].$index;
|
|
132
130
|
this.direction = Direction.forward;
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
this.startSimulate(items);
|
|
136
|
-
this.last.index = items[0].$index;
|
|
137
|
-
this.first.index = items[items.length - 1].$index;
|
|
138
|
-
this.direction = Direction.backward;
|
|
139
|
-
this.isPrepend = true;
|
|
131
|
+
this.firstVisible.index = start;
|
|
132
|
+
this.firstVisible.delta = 0;
|
|
140
133
|
};
|
|
141
134
|
FetchModel.prototype.check = function (items) {
|
|
142
135
|
this.startSimulate(items);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/classes/state/fetch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;IAOE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,yBAAK,GAAL;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IACH,gBAAC;AAAD,CAAC,AAfD,IAeC;AAED;IAKE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,qBAAK,GAAL;QACE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IACH,YAAC;AAAD,CAAC,AAdD,IAcC;AAED;IAIE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,oBAAK,GAAL;QACE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACzB,CAAC;IACH,WAAC;AAAD,CAAC,AAZD,IAYC;AAED;IAIE;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,4BAAK,GAAL;QACE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IACH,mBAAC;AAAD,CAAC,AAZD,IAYC;AAED;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/classes/state/fetch.ts"],"names":[],"mappings":"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","sourcesContent":["import { Item } from '../item';\nimport { Direction } from '../../inputs/index';\n\nclass Positions {\n startDelta: number;\n before: number;\n relative: number;\n start: number;\n end: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.startDelta = 0;\n this.before = 0;\n }\n}\n\nclass First {\n index: number;\n indexBuffer: number;\n position: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.indexBuffer = NaN;\n this.position = NaN;\n }\n}\n\nclass Last {\n index: number;\n indexBuffer: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.indexBuffer = NaN;\n }\n}\n\nclass FirstVisible {\n index: number;\n delta: number;\n\n constructor() {\n this.reset();\n }\n\n reset() {\n this.index = NaN;\n this.delta = 0;\n }\n}\n\nexport class FetchModel {\n private readonly directionPriority: Direction;\n private _newItemsData: unknown[] | null; // there are public setter and getter\n\n items: Item[];\n positions: Positions;\n first: First;\n last: Last;\n hasAnotherPack: boolean;\n callCount: number;\n minIndex: number;\n firstVisible: FirstVisible;\n direction: Direction | null;\n cancel: (() => void) | null;\n\n simulate: boolean;\n isCheck: boolean;\n doRemove: boolean;\n\n constructor(directionPriority: Direction) {\n this.directionPriority = directionPriority;\n this.callCount = 0;\n this.positions = new Positions();\n this.first = new First();\n this.last = new Last();\n this.firstVisible = new FirstVisible();\n this.reset();\n }\n\n reset(): void {\n this._newItemsData = null;\n this.items = [];\n this.positions.reset();\n this.first.reset();\n this.last.reset();\n this.firstVisible.reset();\n this.hasAnotherPack = false;\n this.direction = null;\n this.cancel = null;\n this.simulate = false;\n this.isCheck = false;\n this.doRemove = false;\n }\n\n get newItemsData(): unknown[] | null {\n return this._newItemsData;\n }\n\n set newItemsData(items: unknown[] | null) {\n this._newItemsData = items;\n if (items && items.length) {\n this.callCount++;\n }\n }\n\n get shouldFetch(): boolean {\n return !!this.count;\n }\n\n get hasNewItems(): boolean {\n return !!((this._newItemsData && this._newItemsData.length));\n }\n\n get index(): number {\n return this.first.index;\n }\n\n get count(): number {\n return !isNaN(this.first.index) && !isNaN(this.last.index) ? this.last.index - this.first.index + 1 : 0;\n }\n\n shouldCheckPreSizeExpectation(lastBufferedIndex: number): boolean {\n if (this.directionPriority === Direction.backward) {\n return false;\n }\n const lastFetched = this.items[this.items.length - 1];\n return lastFetched && lastFetched.$index < lastBufferedIndex;\n }\n\n startSimulate(items: Item[]): void {\n this.simulate = true;\n this._newItemsData = items.map(item => item.data);\n this.items = items;\n this.hasAnotherPack = false;\n }\n\n stopSimulate(): void {\n this.simulate = false;\n this.isCheck = false;\n this.doRemove = false;\n }\n\n fill(items: Item[], start: number): void {\n this.startSimulate(items);\n this.first.index = items[0].$index;\n this.last.index = items[items.length - 1].$index;\n this.direction = Direction.forward;\n this.firstVisible.index = start;\n this.firstVisible.delta = 0;\n }\n\n check(items: Item[]): void {\n this.startSimulate(items);\n this.last.index = items[0].$index;\n this.first.index = items[items.length - 1].$index;\n this.isCheck = true;\n }\n\n update(index: number, delta: number, items: Item[], itemsToRemove: Item[]): void {\n this.startSimulate(items);\n this.firstVisible.index = index;\n this.firstVisible.delta = delta;\n this.doRemove = itemsToRemove.length > 0;\n }\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { __extends, __read, __spreadArray } from "tslib";
|
|
2
|
-
import
|
|
3
|
-
import Update from './update';
|
|
2
|
+
import Insert from './insert';
|
|
4
3
|
import { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';
|
|
5
4
|
var Append = /** @class */ (function (_super) {
|
|
6
5
|
__extends(Append, _super);
|
|
@@ -13,82 +12,31 @@ var Append = /** @class */ (function (_super) {
|
|
|
13
12
|
if (!params) {
|
|
14
13
|
return;
|
|
15
14
|
}
|
|
16
|
-
var
|
|
17
|
-
var items = params.items, bof = params.bof, eof = params.eof, increase = params.increase, decrease = params.decrease;
|
|
18
|
-
var prepend = process !== AdapterProcess.append;
|
|
19
|
-
var fixRight = (prepend && !increase) || (!prepend && !!decrease);
|
|
20
|
-
var next = false;
|
|
21
|
-
if ((prepend && bof && !buffer.bof.get()) || (!prepend && eof && !buffer.eof.get())) {
|
|
22
|
-
Append.doVirtual(scroller, items, prepend, fixRight);
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
if (!buffer.size) {
|
|
26
|
-
next = Append.doEmpty(scroller, items, prepend, fixRight);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
next = Append.doRegular(scroller, items, prepend, fixRight);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
15
|
+
var shouldAppend = Append.doAppend(scroller, process, params);
|
|
32
16
|
scroller.workflow.call({
|
|
33
17
|
process: Append.process,
|
|
34
|
-
status:
|
|
18
|
+
status: shouldAppend ? ProcessStatus.next : ProcessStatus.done
|
|
35
19
|
});
|
|
36
20
|
};
|
|
37
|
-
Append.
|
|
38
|
-
var
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
scroller.viewport.scrollPosition += size;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
buffer.appendVirtually(items.length, fixRight);
|
|
50
|
-
}
|
|
51
|
-
scroller.logger.log(function () { return "buffer." + [absIndexToken] + " value is set to " + buffer[absIndexToken]; });
|
|
52
|
-
scroller.logger.stat("after virtual " + (prepend ? 'prepend' : 'append'));
|
|
21
|
+
Append.doAppend = function (scroller, process, params) {
|
|
22
|
+
var bof = params.bof, eof = params.eof, increase = params.increase, decrease = params.decrease;
|
|
23
|
+
var buffer = scroller.buffer;
|
|
24
|
+
var prepend = process === AdapterProcess.prepend;
|
|
25
|
+
var opposite = prepend ? !increase : decrease;
|
|
26
|
+
var beforeIndex, afterIndex, items = params.items;
|
|
27
|
+
if (prepend) {
|
|
28
|
+
beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);
|
|
29
|
+
items = __spreadArray([], __read(items)).reverse();
|
|
53
30
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var buffer = scroller.buffer, fetch = scroller.state.fetch;
|
|
57
|
-
var absIndexToken = fixRight ? 'absMinIndex' : 'absMaxIndex';
|
|
58
|
-
var shift = prepend && !fixRight ? items.length - 1 : (!prepend && fixRight ? 1 - items.length : 0);
|
|
59
|
-
var bufferLimit = buffer[absIndexToken] + (fixRight ? -1 : 1) * (items.length - 1);
|
|
60
|
-
var newItems = [];
|
|
61
|
-
var startIndex = scroller.buffer[prepend ? 'minIndex' : 'maxIndex'];
|
|
62
|
-
var index = startIndex;
|
|
63
|
-
items.forEach(function (item) {
|
|
64
|
-
var newItem = new Item(index + shift, item, scroller.routines);
|
|
65
|
-
Array.prototype[prepend ? 'unshift' : 'push'].call(newItems, newItem);
|
|
66
|
-
index += (prepend ? -1 : 1);
|
|
67
|
-
});
|
|
68
|
-
if (bufferLimit !== buffer[absIndexToken]) {
|
|
69
|
-
buffer[absIndexToken] = bufferLimit;
|
|
70
|
-
scroller.logger.log(function () { return "buffer." + absIndexToken + " value is set to " + buffer[absIndexToken]; });
|
|
31
|
+
else {
|
|
32
|
+
afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);
|
|
71
33
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
};
|
|
79
|
-
Append.doRegular = function (scroller, items, prepend, fixRight) {
|
|
80
|
-
var index = scroller.buffer[prepend ? 'firstIndex' : 'lastIndex'];
|
|
81
|
-
var updateOptions = {
|
|
82
|
-
predicate: function (_a) {
|
|
83
|
-
var $index = _a.$index, data = _a.data;
|
|
84
|
-
if ($index === index) {
|
|
85
|
-
return prepend ? __spreadArray(__spreadArray([], __read(items.reverse())), [data]) : __spreadArray([data], __read(items));
|
|
86
|
-
}
|
|
87
|
-
return true;
|
|
88
|
-
},
|
|
89
|
-
fixRight: fixRight
|
|
90
|
-
};
|
|
91
|
-
return Update.doUpdate(scroller, updateOptions);
|
|
34
|
+
return Insert.doInsert(scroller, {
|
|
35
|
+
items: items,
|
|
36
|
+
beforeIndex: beforeIndex,
|
|
37
|
+
afterIndex: afterIndex,
|
|
38
|
+
decrease: opposite
|
|
39
|
+
});
|
|
92
40
|
};
|
|
93
41
|
return Append;
|
|
94
42
|
}(BaseAdapterProcessFactory(AdapterProcess.append)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"append.js","sourceRoot":"","sources":["../../../../src/processes/adapter/append.ts"],"names":[],"mappings":";AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"append.js","sourceRoot":"","sources":["../../../../src/processes/adapter/append.ts"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAUzF;IAAoC,0BAAgD;IAApF;;IAoCA,CAAC;IAlCQ,UAAG,GAAV,UAAW,QAAkB,EAAE,EAAsC;YAApC,OAAO,aAAA,EAAE,OAAO,aAAA;QACvC,IAAA,MAAM,GAAK,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,OAAzD,CAA0D;QACxE,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,IAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAEhE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI;SAC/D,CAAC,CAAC;IACL,CAAC;IAEM,eAAQ,GAAf,UAAgB,QAAkB,EAAE,OAAuB,EAAE,MAAmC;QACtF,IAAA,GAAG,GAA8B,MAAM,IAApC,EAAE,GAAG,GAAyB,MAAM,IAA/B,EAAE,QAAQ,GAAe,MAAM,SAArB,EAAE,QAAQ,GAAK,MAAM,SAAX,CAAY;QACxC,IAAA,MAAM,GAAK,QAAQ,OAAb,CAAc;QAC5B,IAAM,OAAO,GAAG,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC;QACnD,IAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChD,IAAI,WAAW,EAAE,UAAU,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAClD,IAAI,OAAO,EAAE;YACX,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,KAAK,GAAG,yBAAI,KAAK,GAAE,OAAO,EAAE,CAAC;SAC9B;aAAM;YACL,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjG;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/B,KAAK,OAAA;YACL,WAAW,aAAA;YACX,UAAU,YAAA;YACV,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAEH,aAAC;AAAD,CAAC,AApCD,CAAoC,yBAAyB,CAAC,cAAc,CAAC,MAAM,CAAC,GAoCnF","sourcesContent":["import { Scroller } from '../../scroller';\nimport Insert from './insert';\nimport { BaseAdapterProcessFactory, AdapterProcess, ProcessStatus } from '../misc/index';\nimport { AdapterAppendOptions, AdapterPrependOptions } from '../../interfaces/index';\n\ntype AdapterAppendPrependOptions = AdapterAppendOptions & AdapterPrependOptions;\n\ninterface AppendRunOptions {\n process: AdapterProcess;\n options: AdapterAppendPrependOptions;\n}\n\nexport default class Append extends BaseAdapterProcessFactory(AdapterProcess.append) {\n\n static run(scroller: Scroller, { process, options }: AppendRunOptions): void {\n const { params } = Append.parseInput(scroller, options, false, process);\n if (!params) {\n return;\n }\n\n const shouldAppend = Append.doAppend(scroller, process, params);\n\n scroller.workflow.call({\n process: Append.process,\n status: shouldAppend ? ProcessStatus.next : ProcessStatus.done\n });\n }\n\n static doAppend(scroller: Scroller, process: AdapterProcess, params: AdapterAppendPrependOptions): boolean {\n const { bof, eof, increase, decrease } = params;\n const { buffer } = scroller;\n const prepend = process === AdapterProcess.prepend;\n const opposite = prepend ? !increase : decrease;\n let beforeIndex, afterIndex, items = params.items;\n if (prepend) {\n beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);\n items = [...items].reverse();\n } else {\n afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);\n }\n return Insert.doInsert(scroller, {\n items,\n beforeIndex,\n afterIndex,\n decrease: opposite\n });\n }\n\n}\n"]}
|