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.
Files changed (50) hide show
  1. package/dist/bundles/vscroll.esm5.js +152 -184
  2. package/dist/bundles/vscroll.esm5.js.map +1 -1
  3. package/dist/bundles/vscroll.esm5.min.js +2 -2
  4. package/dist/bundles/vscroll.esm5.min.js.map +1 -1
  5. package/dist/bundles/vscroll.esm6.js +140 -173
  6. package/dist/bundles/vscroll.esm6.js.map +1 -1
  7. package/dist/bundles/vscroll.esm6.min.js +2 -2
  8. package/dist/bundles/vscroll.esm6.min.js.map +1 -1
  9. package/dist/bundles/vscroll.umd.js +153 -185
  10. package/dist/bundles/vscroll.umd.js.map +1 -1
  11. package/dist/bundles/vscroll.umd.min.js +2 -2
  12. package/dist/bundles/vscroll.umd.min.js.map +1 -1
  13. package/dist/esm2015/classes/buffer/checkCall.js +23 -1
  14. package/dist/esm2015/classes/buffer/checkCall.js.map +1 -1
  15. package/dist/esm2015/classes/buffer.js +22 -17
  16. package/dist/esm2015/classes/buffer.js.map +1 -1
  17. package/dist/esm2015/classes/state/fetch.js +4 -11
  18. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  19. package/dist/esm2015/processes/adapter/append.js +20 -71
  20. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  21. package/dist/esm2015/processes/adapter/insert.js +28 -29
  22. package/dist/esm2015/processes/adapter/insert.js.map +1 -1
  23. package/dist/esm2015/processes/postFetch.js +0 -1
  24. package/dist/esm2015/processes/postFetch.js.map +1 -1
  25. package/dist/esm2015/version.js +1 -1
  26. package/dist/esm2015/version.js.map +1 -1
  27. package/dist/esm2015/workflow-transducer.js +6 -6
  28. package/dist/esm2015/workflow-transducer.js.map +1 -1
  29. package/dist/esm5/classes/buffer/checkCall.js +25 -1
  30. package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
  31. package/dist/esm5/classes/buffer.js +24 -17
  32. package/dist/esm5/classes/buffer.js.map +1 -1
  33. package/dist/esm5/classes/state/fetch.js +4 -11
  34. package/dist/esm5/classes/state/fetch.js.map +1 -1
  35. package/dist/esm5/processes/adapter/append.js +20 -72
  36. package/dist/esm5/processes/adapter/append.js.map +1 -1
  37. package/dist/esm5/processes/adapter/insert.js +28 -31
  38. package/dist/esm5/processes/adapter/insert.js.map +1 -1
  39. package/dist/esm5/processes/postFetch.js +0 -1
  40. package/dist/esm5/processes/postFetch.js.map +1 -1
  41. package/dist/esm5/version.js +1 -1
  42. package/dist/esm5/version.js.map +1 -1
  43. package/dist/esm5/workflow-transducer.js +6 -6
  44. package/dist/esm5/workflow-transducer.js.map +1 -1
  45. package/dist/typings/classes/buffer/checkCall.d.ts +4 -1
  46. package/dist/typings/classes/buffer.d.ts +3 -3
  47. package/dist/typings/classes/state/fetch.d.ts +1 -3
  48. package/dist/typings/processes/adapter/append.d.ts +1 -3
  49. package/dist/typings/processes/adapter/insert.d.ts +1 -0
  50. package/package.json +3 -3
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * vscroll (https://github.com/dhilt/vscroll) FESM5
3
- * Version: 1.4.0-alpha (2021-09-24T02:40:33.386Z)
3
+ * Version: 1.4.0 (2021-10-01T22:35:14.215Z)
4
4
  * Author: Denis Hilt
5
5
  * License: MIT
6
6
  */
@@ -343,7 +343,7 @@ var reactiveConfigStorage = new Map();
343
343
 
344
344
  var core = {
345
345
  name: 'vscroll',
346
- version: '1.4.0-alpha'
346
+ version: '1.4.0'
347
347
  };
348
348
 
349
349
  var instanceCount$1 = 0;
@@ -1656,94 +1656,119 @@ var Update = /** @class */ (function (_super) {
1656
1656
  return Update;
1657
1657
  }(BaseAdapterProcessFactory(AdapterProcess.update)));
1658
1658
 
1659
- var Append = /** @class */ (function (_super) {
1660
- __extends(Append, _super);
1661
- function Append() {
1659
+ var Insert = /** @class */ (function (_super) {
1660
+ __extends(Insert, _super);
1661
+ function Insert() {
1662
1662
  return _super !== null && _super.apply(this, arguments) || this;
1663
1663
  }
1664
- Append.run = function (scroller, _a) {
1665
- var process = _a.process, options = _a.options;
1666
- var params = Append.parseInput(scroller, options, false, process).params;
1664
+ Insert.run = function (scroller, options) {
1665
+ var params = Insert.parseInput(scroller, options).params;
1667
1666
  if (!params) {
1668
1667
  return;
1669
1668
  }
1670
- var buffer = scroller.buffer;
1671
- var items = params.items, bof = params.bof, eof = params.eof, increase = params.increase, decrease = params.decrease;
1672
- var prepend = process !== AdapterProcess.append;
1673
- var fixRight = (prepend && !increase) || (!prepend && !!decrease);
1674
- var next = false;
1675
- if ((prepend && bof && !buffer.bof.get()) || (!prepend && eof && !buffer.eof.get())) {
1676
- Append.doVirtual(scroller, items, prepend, fixRight);
1677
- }
1678
- else {
1679
- if (!buffer.size) {
1680
- next = Append.doEmpty(scroller, items, prepend, fixRight);
1681
- }
1682
- else {
1683
- next = Append.doRegular(scroller, items, prepend, fixRight);
1684
- }
1685
- }
1669
+ var shouldInsert = Insert.doInsert(scroller, params);
1686
1670
  scroller.workflow.call({
1687
- process: Append.process,
1688
- status: next ? ProcessStatus.next : ProcessStatus.done
1671
+ process: Insert.process,
1672
+ status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
1689
1673
  });
1690
1674
  };
1691
- Append.doVirtual = function (scroller, items, prepend, fixRight) {
1692
- var buffer = scroller.buffer, paddings = scroller.viewport.paddings;
1693
- var absIndexToken = fixRight ? 'absMinIndex' : 'absMaxIndex';
1694
- if (isFinite(buffer[absIndexToken])) {
1695
- var size = items.length * buffer.defaultSize;
1696
- var padding = prepend ? paddings.backward : paddings.forward;
1697
- padding.size += size;
1698
- if (prepend) {
1699
- buffer.prependVirtually(items.length, fixRight);
1700
- scroller.viewport.scrollPosition += size;
1701
- }
1702
- else {
1703
- buffer.appendVirtually(items.length, fixRight);
1675
+ Insert.doInsert = function (scroller, params) {
1676
+ if (!Insert.insertEmpty(scroller, params)) {
1677
+ if (!Insert.insertInBuffer(scroller, params)) {
1678
+ if (!Insert.insertVirtually(scroller, params)) {
1679
+ return false;
1680
+ }
1704
1681
  }
1705
- scroller.logger.log(function () { return "buffer." + [absIndexToken] + " value is set to " + buffer[absIndexToken]; });
1706
- scroller.logger.stat("after virtual " + (prepend ? 'prepend' : 'append'));
1707
1682
  }
1683
+ return true;
1708
1684
  };
1709
- Append.doEmpty = function (scroller, items, prepend, fixRight) {
1710
- var buffer = scroller.buffer, fetch = scroller.state.fetch;
1711
- var absIndexToken = fixRight ? 'absMinIndex' : 'absMaxIndex';
1712
- var shift = prepend && !fixRight ? items.length - 1 : (!prepend && fixRight ? 1 - items.length : 0);
1713
- var bufferLimit = buffer[absIndexToken] + (fixRight ? -1 : 1) * (items.length - 1);
1714
- var newItems = [];
1715
- var startIndex = scroller.buffer[prepend ? 'minIndex' : 'maxIndex'];
1716
- var index = startIndex;
1717
- items.forEach(function (item) {
1718
- var newItem = new Item(index + shift, item, scroller.routines);
1719
- Array.prototype[prepend ? 'unshift' : 'push'].call(newItems, newItem);
1720
- index += (prepend ? -1 : 1);
1721
- });
1722
- if (bufferLimit !== buffer[absIndexToken]) {
1723
- buffer[absIndexToken] = bufferLimit;
1724
- scroller.logger.log(function () { return "buffer." + absIndexToken + " value is set to " + buffer[absIndexToken]; });
1725
- }
1726
- (prepend ? fetch.prepend : fetch.append).call(fetch, newItems);
1727
- buffer.setItems(newItems);
1728
- fetch.first.indexBuffer = !isNaN(buffer.firstIndex) ? buffer.firstIndex : index;
1729
- fetch.last.indexBuffer = !isNaN(buffer.lastIndex) ? buffer.lastIndex : index;
1730
- fetch.firstVisible.index = startIndex;
1685
+ Insert.insertEmpty = function (scroller, params) {
1686
+ var buffer = scroller.buffer, routines = scroller.routines, fetch = scroller.state.fetch;
1687
+ if (buffer.size) {
1688
+ return false;
1689
+ }
1690
+ var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1691
+ if (!buffer.fillEmpty(items, beforeIndex, afterIndex, !!decrease, function (index, data) { return new Item(index, data, routines); })) {
1692
+ return false;
1693
+ }
1694
+ fetch.fill(buffer.items, buffer.startIndex);
1731
1695
  return true;
1732
1696
  };
1733
- Append.doRegular = function (scroller, items, prepend, fixRight) {
1734
- var index = scroller.buffer[prepend ? 'firstIndex' : 'lastIndex'];
1697
+ Insert.insertInBuffer = function (scroller, params) {
1698
+ var before = params.before, after = params.after, beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1699
+ var indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);
1700
+ if (isNaN(indexToInsert)) {
1701
+ return false;
1702
+ }
1703
+ var isBackward = Number.isInteger(beforeIndex) || before;
1735
1704
  var updateOptions = {
1736
1705
  predicate: function (_a) {
1737
1706
  var $index = _a.$index, data = _a.data;
1738
- if ($index === index) {
1739
- return prepend ? __spreadArray(__spreadArray([], __read(items.reverse())), [data]) : __spreadArray([data], __read(items));
1707
+ if (indexToInsert === $index) {
1708
+ return isBackward ? __spreadArray(__spreadArray([], __read(items)), [data]) : __spreadArray([data], __read(items));
1740
1709
  }
1741
1710
  return true;
1742
1711
  },
1743
- fixRight: fixRight
1712
+ fixRight: decrease
1744
1713
  };
1745
1714
  return Update.doUpdate(scroller, updateOptions);
1746
1715
  };
1716
+ Insert.insertVirtually = function (scroller, params) {
1717
+ var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1718
+ var buffer = scroller.buffer, fetch = scroller.state.fetch, viewport = scroller.viewport;
1719
+ var direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;
1720
+ var indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex);
1721
+ if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {
1722
+ return false;
1723
+ }
1724
+ var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), index = _a.index, diff = _a.diff;
1725
+ fetch.firstVisible.index = index;
1726
+ if (!isNaN(index)) {
1727
+ fetch.simulate = true;
1728
+ fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
1729
+ }
1730
+ return true;
1731
+ };
1732
+ return Insert;
1733
+ }(BaseAdapterProcessFactory(AdapterProcess.insert)));
1734
+
1735
+ var Append = /** @class */ (function (_super) {
1736
+ __extends(Append, _super);
1737
+ function Append() {
1738
+ return _super !== null && _super.apply(this, arguments) || this;
1739
+ }
1740
+ Append.run = function (scroller, _a) {
1741
+ var process = _a.process, options = _a.options;
1742
+ var params = Append.parseInput(scroller, options, false, process).params;
1743
+ if (!params) {
1744
+ return;
1745
+ }
1746
+ var shouldAppend = Append.doAppend(scroller, process, params);
1747
+ scroller.workflow.call({
1748
+ process: Append.process,
1749
+ status: shouldAppend ? ProcessStatus.next : ProcessStatus.done
1750
+ });
1751
+ };
1752
+ Append.doAppend = function (scroller, process, params) {
1753
+ var bof = params.bof, eof = params.eof, increase = params.increase, decrease = params.decrease;
1754
+ var buffer = scroller.buffer;
1755
+ var prepend = process === AdapterProcess.prepend;
1756
+ var opposite = prepend ? !increase : decrease;
1757
+ var beforeIndex, afterIndex, items = params.items;
1758
+ if (prepend) {
1759
+ beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);
1760
+ items = __spreadArray([], __read(items)).reverse();
1761
+ }
1762
+ else {
1763
+ afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);
1764
+ }
1765
+ return Insert.doInsert(scroller, {
1766
+ items: items,
1767
+ beforeIndex: beforeIndex,
1768
+ afterIndex: afterIndex,
1769
+ decrease: opposite
1770
+ });
1771
+ };
1747
1772
  return Append;
1748
1773
  }(BaseAdapterProcessFactory(AdapterProcess.append)));
1749
1774
 
@@ -1911,86 +1936,6 @@ var UserClip = /** @class */ (function (_super) {
1911
1936
  return UserClip;
1912
1937
  }(BaseAdapterProcessFactory(AdapterProcess.clip)));
1913
1938
 
1914
- var Insert = /** @class */ (function (_super) {
1915
- __extends(Insert, _super);
1916
- function Insert() {
1917
- return _super !== null && _super.apply(this, arguments) || this;
1918
- }
1919
- Insert.run = function (scroller, options) {
1920
- var params = Insert.parseInput(scroller, options).params;
1921
- if (!params) {
1922
- return;
1923
- }
1924
- var shouldInsert = Insert.doInsert(scroller, params);
1925
- scroller.workflow.call({
1926
- process: Insert.process,
1927
- status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
1928
- });
1929
- };
1930
- Insert.doInsert = function (scroller, params) {
1931
- if (!Insert.insertInBuffer(scroller, params)) {
1932
- if (!Insert.insertVirtually(scroller, params)) {
1933
- return false;
1934
- }
1935
- }
1936
- return true;
1937
- };
1938
- Insert.insertInBuffer = function (scroller, params) {
1939
- var before = params.before, after = params.after, beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1940
- var index = Number.isInteger(beforeIndex) ? beforeIndex : (Number.isInteger(afterIndex) ? afterIndex : NaN);
1941
- var isBackward = Number.isInteger(beforeIndex) || before;
1942
- var method = before || after;
1943
- var found = scroller.buffer.items.find(function (item) {
1944
- return (method && method(item.get())) || (Number.isInteger(index) && index === item.$index);
1945
- });
1946
- if (!found) {
1947
- scroller.logger.log('no item to insert in buffer');
1948
- return false;
1949
- }
1950
- var indexToInsert = found.$index;
1951
- var updateOptions = {
1952
- predicate: function (_a) {
1953
- var $index = _a.$index, data = _a.data;
1954
- if (indexToInsert === $index) {
1955
- return isBackward ? __spreadArray(__spreadArray([], __read(items)), [data]) : __spreadArray([data], __read(items));
1956
- }
1957
- return true;
1958
- },
1959
- fixRight: decrease
1960
- };
1961
- return Update.doUpdate(scroller, updateOptions);
1962
- };
1963
- Insert.insertVirtually = function (scroller, params) {
1964
- var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1965
- var buffer = scroller.buffer, fetch = scroller.state.fetch, viewport = scroller.viewport;
1966
- var direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;
1967
- var index = (direction === Direction.backward ? beforeIndex : afterIndex);
1968
- if (isNaN(fetch.firstVisible.index)) { // if in-buffer insertion did not set firstVisible
1969
- var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), index_1 = _a.index, diff = _a.diff;
1970
- fetch.firstVisible.index = index_1;
1971
- if (!isNaN(index_1)) {
1972
- fetch.firstVisible.delta = -buffer.getSizeByIndex(index_1) + diff;
1973
- }
1974
- }
1975
- if (!buffer.insertVirtually(items, index, direction, !!decrease)) {
1976
- return false;
1977
- }
1978
- var firstVisible = scroller.state.fetch.firstVisible;
1979
- if (!isNaN(firstVisible.index)) {
1980
- var shift = 0;
1981
- if (index < firstVisible.index && !decrease) {
1982
- shift = items.length;
1983
- }
1984
- else if (index > firstVisible.index && decrease) {
1985
- shift = -items.length;
1986
- }
1987
- firstVisible.index += shift;
1988
- }
1989
- return true;
1990
- };
1991
- return Insert;
1992
- }(BaseAdapterProcessFactory(AdapterProcess.insert)));
1993
-
1994
1939
  var Replace = /** @class */ (function (_super) {
1995
1940
  __extends(Replace, _super);
1996
1941
  function Replace() {
@@ -2545,7 +2490,6 @@ var PostFetch = /** @class */ (function (_super) {
2545
2490
  fetch.items = items.map(function (item, index) {
2546
2491
  return new Item(fetchIndex + index, item, scroller.routines);
2547
2492
  });
2548
- fetch.isPrepend = !!buffer.items.length && buffer.items[0].$index > fetch.items[fetch.items.length - 1].$index;
2549
2493
  return buffer.setItems(fetch.items);
2550
2494
  };
2551
2495
  return PostFetch;
@@ -3835,7 +3779,31 @@ var CheckBufferCall = /** @class */ (function () {
3835
3779
  this.context = context;
3836
3780
  this.logger = logger;
3837
3781
  }
3838
- CheckBufferCall.prototype.insert = function (items, index, direction) {
3782
+ CheckBufferCall.prototype.fillEmpty = function (items, before, after) {
3783
+ if (!items.length) {
3784
+ this.logger.log('no items to fill the buffer; empty list');
3785
+ return false;
3786
+ }
3787
+ if (!Number.isInteger(before) && !Number.isInteger(after)) {
3788
+ this.logger.log('no items to fill the buffer; wrong indexes');
3789
+ return false;
3790
+ }
3791
+ this.logger.log(function () { return "going to fill the buffer with " + items.length + " item(s)"; });
3792
+ return true;
3793
+ };
3794
+ CheckBufferCall.prototype.insertInBuffer = function (predicate, before, after) {
3795
+ var index = Number.isInteger(before) ? before : (Number.isInteger(after) ? after : NaN);
3796
+ var found = this.context.items.find(function (item) {
3797
+ return (predicate && predicate(item.get())) ||
3798
+ (Number.isInteger(index) && index === item.$index);
3799
+ });
3800
+ if (!found) {
3801
+ this.logger.log('no items to insert in buffer; empty predicate\'s result');
3802
+ return NaN;
3803
+ }
3804
+ return found.$index;
3805
+ };
3806
+ CheckBufferCall.prototype.insertVirtual = function (items, index, direction) {
3839
3807
  if (!items.length) {
3840
3808
  this.logger.log('no items to insert virtually; empty list');
3841
3809
  return false;
@@ -4058,6 +4026,9 @@ var Buffer = /** @class */ (function () {
4058
4026
  return !toRemove;
4059
4027
  });
4060
4028
  };
4029
+ Buffer.prototype.getIndexToInsert = function (predicate, before, after) {
4030
+ return this.checkCall.insertInBuffer(predicate, before, after);
4031
+ };
4061
4032
  Buffer.prototype.shiftExtremum = function (amount, fixRight) {
4062
4033
  if (!fixRight) {
4063
4034
  this.absMaxIndex += amount;
@@ -4073,24 +4044,8 @@ var Buffer = /** @class */ (function () {
4073
4044
  this.startIndex = this.absMinIndex;
4074
4045
  }
4075
4046
  };
4076
- Buffer.prototype.appendVirtually = function (count, fixRight) {
4077
- if (fixRight) {
4078
- this.items.forEach(function (item) { return item.updateIndex(item.$index - count); });
4079
- this.cache.shiftIndexes(-count);
4080
- this.items = __spreadArray([], __read(this.items));
4081
- }
4082
- this.shiftExtremum(count, fixRight);
4083
- };
4084
- Buffer.prototype.prependVirtually = function (count, fixRight) {
4085
- if (!fixRight) {
4086
- this.items.forEach(function (item) { return item.updateIndex(item.$index + count); });
4087
- this.cache.shiftIndexes(count);
4088
- this.items = __spreadArray([], __read(this.items));
4089
- }
4090
- this.shiftExtremum(count, fixRight);
4091
- };
4092
4047
  Buffer.prototype.insertVirtually = function (items, index, direction, fixRight) {
4093
- if (!this.checkCall.insert(items, index, direction)) {
4048
+ if (!this.checkCall.insertVirtual(items, index, direction)) {
4094
4049
  return false;
4095
4050
  }
4096
4051
  var shift = 0;
@@ -4129,6 +4084,26 @@ var Buffer = /** @class */ (function () {
4129
4084
  }
4130
4085
  this.cache.removeItems(indexes, fixRight);
4131
4086
  };
4087
+ Buffer.prototype.fillEmpty = function (items, beforeIndex, afterIndex, fixRight, generator) {
4088
+ if (!this.checkCall.fillEmpty(items, beforeIndex, afterIndex)) {
4089
+ return false;
4090
+ }
4091
+ var before = Number.isInteger(beforeIndex);
4092
+ var index = (before ? beforeIndex : afterIndex);
4093
+ var shift = (fixRight ? items.length : (before ? 1 : 0));
4094
+ this.items = items.map(function (data, i) {
4095
+ return generator(index + i + (!before ? 1 : 0) - shift, data);
4096
+ });
4097
+ this._absMinIndex = this.items[0].$index;
4098
+ this._absMaxIndex = this.items[this.size - 1].$index;
4099
+ if (this.startIndex <= this.absMinIndex) {
4100
+ this.startIndex = this.absMinIndex;
4101
+ }
4102
+ else if (this.startIndex > this.absMaxIndex) {
4103
+ this.startIndex = this.absMaxIndex;
4104
+ }
4105
+ return true;
4106
+ };
4132
4107
  Buffer.prototype.updateItems = function (predicate, generator, indexToTrack, fixRight) {
4133
4108
  if (!this.size || Number.isNaN(this.firstIndex)) {
4134
4109
  return { trackedIndex: NaN, toRemove: [] };
@@ -4397,7 +4372,6 @@ var FetchModel = /** @class */ (function () {
4397
4372
  this.direction = null;
4398
4373
  this.cancel = null;
4399
4374
  this.simulate = false;
4400
- this.isPrepend = false;
4401
4375
  this.isCheck = false;
4402
4376
  this.doRemove = false;
4403
4377
  };
@@ -4457,22 +4431,16 @@ var FetchModel = /** @class */ (function () {
4457
4431
  };
4458
4432
  FetchModel.prototype.stopSimulate = function () {
4459
4433
  this.simulate = false;
4460
- this.isPrepend = false;
4461
4434
  this.isCheck = false;
4462
4435
  this.doRemove = false;
4463
4436
  };
4464
- FetchModel.prototype.append = function (items) {
4437
+ FetchModel.prototype.fill = function (items, start) {
4465
4438
  this.startSimulate(items);
4466
- this.last.index = items[items.length - 1].$index;
4467
4439
  this.first.index = items[0].$index;
4440
+ this.last.index = items[items.length - 1].$index;
4468
4441
  this.direction = Direction.forward;
4469
- };
4470
- FetchModel.prototype.prepend = function (items) {
4471
- this.startSimulate(items);
4472
- this.last.index = items[0].$index;
4473
- this.first.index = items[items.length - 1].$index;
4474
- this.direction = Direction.backward;
4475
- this.isPrepend = true;
4442
+ this.firstVisible.index = start;
4443
+ this.firstVisible.delta = 0;
4476
4444
  };
4477
4445
  FetchModel.prototype.check = function (items) {
4478
4446
  this.startSimulate(items);
@@ -5244,13 +5212,7 @@ var runStateMachine = function (_a) {
5244
5212
  case CommonProcess.start:
5245
5213
  switch (payload.process) {
5246
5214
  case AdapterProcess.append:
5247
- case AdapterProcess.check:
5248
5215
  case AdapterProcess.insert:
5249
- run(Render)();
5250
- break;
5251
- case AdapterProcess.remove:
5252
- run(Adjust)();
5253
- break;
5254
5216
  case AdapterProcess.replace:
5255
5217
  case AdapterProcess.update:
5256
5218
  if (payload.doRender) {
@@ -5260,6 +5222,12 @@ var runStateMachine = function (_a) {
5260
5222
  run(Adjust)();
5261
5223
  }
5262
5224
  break;
5225
+ case AdapterProcess.check:
5226
+ run(Render)();
5227
+ break;
5228
+ case AdapterProcess.remove:
5229
+ run(Adjust)();
5230
+ break;
5263
5231
  default:
5264
5232
  run(PreFetch)();
5265
5233
  }