vscroll 1.4.0-beta.2 → 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 (32) hide show
  1. package/dist/bundles/vscroll.esm5.js +89 -175
  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 +80 -165
  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 +90 -176
  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.js +0 -16
  14. package/dist/esm2015/classes/buffer.js.map +1 -1
  15. package/dist/esm2015/classes/state/fetch.js +0 -12
  16. package/dist/esm2015/classes/state/fetch.js.map +1 -1
  17. package/dist/esm2015/processes/adapter/append.js +15 -74
  18. package/dist/esm2015/processes/adapter/append.js.map +1 -1
  19. package/dist/esm2015/version.js +1 -1
  20. package/dist/esm2015/version.js.map +1 -1
  21. package/dist/esm5/classes/buffer.js +0 -16
  22. package/dist/esm5/classes/buffer.js.map +1 -1
  23. package/dist/esm5/classes/state/fetch.js +0 -12
  24. package/dist/esm5/classes/state/fetch.js.map +1 -1
  25. package/dist/esm5/processes/adapter/append.js +15 -75
  26. package/dist/esm5/processes/adapter/append.js.map +1 -1
  27. package/dist/esm5/version.js +1 -1
  28. package/dist/esm5/version.js.map +1 -1
  29. package/dist/typings/classes/buffer.d.ts +0 -2
  30. package/dist/typings/classes/state/fetch.d.ts +0 -2
  31. package/dist/typings/processes/adapter/append.d.ts +1 -4
  32. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * vscroll (https://github.com/dhilt/vscroll) FESM5
3
- * Version: 1.4.0-beta.2 (2021-09-29T18:28:00.088Z)
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-beta.2'
346
+ version: '1.4.0'
347
347
  };
348
348
 
349
349
  var instanceCount$1 = 0;
@@ -1656,52 +1656,70 @@ 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 shouldAppend = Append.doAppend(scroller, params, process !== AdapterProcess.append);
1669
+ var shouldInsert = Insert.doInsert(scroller, params);
1671
1670
  scroller.workflow.call({
1672
- process: Append.process,
1673
- status: shouldAppend ? ProcessStatus.next : ProcessStatus.done
1671
+ process: Insert.process,
1672
+ status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
1674
1673
  });
1675
1674
  };
1676
- Append.doAppend = function (scroller, params, prepend) {
1677
- var buffer = scroller.buffer;
1678
- var items = params.items, bof = params.bof, eof = params.eof, increase = params.increase, decrease = params.decrease;
1679
- var fixRight = (prepend && !increase) || (!prepend && !!decrease);
1680
- var result = false;
1681
- if ((prepend && bof && !buffer.bof.get()) || (!prepend && eof && !buffer.eof.get())) {
1682
- result = Append.doVirtual(scroller, items, prepend, fixRight);
1683
- }
1684
- else {
1685
- if (!buffer.size) {
1686
- result = Append.doEmpty(scroller, items, prepend, fixRight);
1687
- }
1688
- else {
1689
- result = Append.doRegular(scroller, items, prepend, 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
+ }
1690
1681
  }
1691
1682
  }
1692
- return result;
1683
+ return true;
1693
1684
  };
1694
- Append.doVirtual = function (scroller, items, prepend, fixRight) {
1695
- var buffer = scroller.buffer, logger = scroller.logger, viewport = scroller.viewport, fetch = scroller.state.fetch;
1696
- var absIndexToken = fixRight ? 'absMinIndex' : 'absMaxIndex';
1697
- if (!isFinite(buffer[absIndexToken])) {
1685
+ Insert.insertEmpty = function (scroller, params) {
1686
+ var buffer = scroller.buffer, routines = scroller.routines, fetch = scroller.state.fetch;
1687
+ if (buffer.size) {
1698
1688
  return false;
1699
1689
  }
1700
- if (prepend) {
1701
- buffer.prependVirtually(items.length, fixRight);
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;
1702
1693
  }
1703
- else {
1704
- buffer.appendVirtually(items.length, fixRight);
1694
+ fetch.fill(buffer.items, buffer.startIndex);
1695
+ return true;
1696
+ };
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;
1704
+ var updateOptions = {
1705
+ predicate: function (_a) {
1706
+ var $index = _a.$index, data = _a.data;
1707
+ if (indexToInsert === $index) {
1708
+ return isBackward ? __spreadArray(__spreadArray([], __read(items)), [data]) : __spreadArray([data], __read(items));
1709
+ }
1710
+ return true;
1711
+ },
1712
+ fixRight: decrease
1713
+ };
1714
+ return Update.doUpdate(scroller, updateOptions);
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;
1705
1723
  }
1706
1724
  var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), index = _a.index, diff = _a.diff;
1707
1725
  fetch.firstVisible.index = index;
@@ -1709,47 +1727,47 @@ var Append = /** @class */ (function (_super) {
1709
1727
  fetch.simulate = true;
1710
1728
  fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
1711
1729
  }
1712
- logger.log(function () { return "buffer." + [absIndexToken] + " value is set to " + buffer[absIndexToken]; });
1713
- logger.stat("after virtual " + (prepend ? 'prepend' : 'append'));
1714
1730
  return true;
1715
1731
  };
1716
- Append.doEmpty = function (scroller, items, prepend, fixRight) {
1717
- var buffer = scroller.buffer, fetch = scroller.state.fetch;
1718
- var absIndexToken = fixRight ? 'absMinIndex' : 'absMaxIndex';
1719
- var shift = prepend && !fixRight ? items.length - 1 : (!prepend && fixRight ? 1 - items.length : 0);
1720
- var bufferLimit = buffer[absIndexToken] + (fixRight ? -1 : 1) * (items.length - 1);
1721
- var newItems = [];
1722
- var startIndex = buffer[prepend ? 'minIndex' : 'maxIndex'];
1723
- var index = startIndex;
1724
- items.forEach(function (item) {
1725
- var newItem = new Item(index + shift, item, scroller.routines);
1726
- Array.prototype[prepend ? 'unshift' : 'push'].call(newItems, newItem);
1727
- index += (prepend ? -1 : 1);
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
1728
1750
  });
1729
- if (bufferLimit !== buffer[absIndexToken]) {
1730
- buffer[absIndexToken] = bufferLimit;
1731
- scroller.logger.log(function () { return "buffer." + absIndexToken + " value is set to " + buffer[absIndexToken]; });
1732
- }
1733
- (prepend ? fetch.prepend : fetch.append).call(fetch, newItems);
1734
- buffer.setItems(newItems);
1735
- fetch.first.indexBuffer = !isNaN(buffer.firstIndex) ? buffer.firstIndex : index;
1736
- fetch.last.indexBuffer = !isNaN(buffer.lastIndex) ? buffer.lastIndex : index;
1737
- fetch.firstVisible.index = startIndex;
1738
- return true;
1739
1751
  };
1740
- Append.doRegular = function (scroller, items, prepend, fixRight) {
1741
- var index = scroller.buffer[prepend ? 'firstIndex' : 'lastIndex'];
1742
- var updateOptions = {
1743
- predicate: function (_a) {
1744
- var $index = _a.$index, data = _a.data;
1745
- if ($index === index) {
1746
- return prepend ? __spreadArray(__spreadArray([], __read(items.reverse())), [data]) : __spreadArray([data], __read(items));
1747
- }
1748
- return true;
1749
- },
1750
- fixRight: fixRight
1751
- };
1752
- return Update.doUpdate(scroller, updateOptions);
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
+ });
1753
1771
  };
1754
1772
  return Append;
1755
1773
  }(BaseAdapterProcessFactory(AdapterProcess.append)));
@@ -1918,82 +1936,6 @@ var UserClip = /** @class */ (function (_super) {
1918
1936
  return UserClip;
1919
1937
  }(BaseAdapterProcessFactory(AdapterProcess.clip)));
1920
1938
 
1921
- var Insert = /** @class */ (function (_super) {
1922
- __extends(Insert, _super);
1923
- function Insert() {
1924
- return _super !== null && _super.apply(this, arguments) || this;
1925
- }
1926
- Insert.run = function (scroller, options) {
1927
- var params = Insert.parseInput(scroller, options).params;
1928
- if (!params) {
1929
- return;
1930
- }
1931
- var shouldInsert = Insert.doInsert(scroller, params);
1932
- scroller.workflow.call({
1933
- process: Insert.process,
1934
- status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
1935
- });
1936
- };
1937
- Insert.doInsert = function (scroller, params) {
1938
- if (!Insert.insertEmpty(scroller, params)) {
1939
- if (!Insert.insertInBuffer(scroller, params)) {
1940
- if (!Insert.insertVirtually(scroller, params)) {
1941
- return false;
1942
- }
1943
- }
1944
- }
1945
- return true;
1946
- };
1947
- Insert.insertEmpty = function (scroller, params) {
1948
- var buffer = scroller.buffer, routines = scroller.routines, fetch = scroller.state.fetch;
1949
- if (buffer.size) {
1950
- return false;
1951
- }
1952
- var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1953
- if (!buffer.fillEmpty(items, beforeIndex, afterIndex, !!decrease, function (index, data) { return new Item(index, data, routines); })) {
1954
- return false;
1955
- }
1956
- fetch.fill(buffer.items, buffer.startIndex);
1957
- return true;
1958
- };
1959
- Insert.insertInBuffer = function (scroller, params) {
1960
- var before = params.before, after = params.after, beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1961
- var indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);
1962
- if (isNaN(indexToInsert)) {
1963
- return false;
1964
- }
1965
- var isBackward = Number.isInteger(beforeIndex) || before;
1966
- var updateOptions = {
1967
- predicate: function (_a) {
1968
- var $index = _a.$index, data = _a.data;
1969
- if (indexToInsert === $index) {
1970
- return isBackward ? __spreadArray(__spreadArray([], __read(items)), [data]) : __spreadArray([data], __read(items));
1971
- }
1972
- return true;
1973
- },
1974
- fixRight: decrease
1975
- };
1976
- return Update.doUpdate(scroller, updateOptions);
1977
- };
1978
- Insert.insertVirtually = function (scroller, params) {
1979
- var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
1980
- var buffer = scroller.buffer, fetch = scroller.state.fetch, viewport = scroller.viewport;
1981
- var direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;
1982
- var indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex);
1983
- if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {
1984
- return false;
1985
- }
1986
- var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), index = _a.index, diff = _a.diff;
1987
- fetch.firstVisible.index = index;
1988
- if (!isNaN(index)) {
1989
- fetch.simulate = true;
1990
- fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
1991
- }
1992
- return true;
1993
- };
1994
- return Insert;
1995
- }(BaseAdapterProcessFactory(AdapterProcess.insert)));
1996
-
1997
1939
  var Replace = /** @class */ (function (_super) {
1998
1940
  __extends(Replace, _super);
1999
1941
  function Replace() {
@@ -4102,22 +4044,6 @@ var Buffer = /** @class */ (function () {
4102
4044
  this.startIndex = this.absMinIndex;
4103
4045
  }
4104
4046
  };
4105
- Buffer.prototype.appendVirtually = function (count, fixRight) {
4106
- if (fixRight) {
4107
- this.items.forEach(function (item) { return item.updateIndex(item.$index - count); });
4108
- this.cache.shiftIndexes(-count);
4109
- this.items = __spreadArray([], __read(this.items));
4110
- }
4111
- this.shiftExtremum(count, fixRight);
4112
- };
4113
- Buffer.prototype.prependVirtually = function (count, fixRight) {
4114
- if (!fixRight) {
4115
- this.items.forEach(function (item) { return item.updateIndex(item.$index + count); });
4116
- this.cache.shiftIndexes(count);
4117
- this.items = __spreadArray([], __read(this.items));
4118
- }
4119
- this.shiftExtremum(count, fixRight);
4120
- };
4121
4047
  Buffer.prototype.insertVirtually = function (items, index, direction, fixRight) {
4122
4048
  if (!this.checkCall.insertVirtual(items, index, direction)) {
4123
4049
  return false;
@@ -4516,18 +4442,6 @@ var FetchModel = /** @class */ (function () {
4516
4442
  this.firstVisible.index = start;
4517
4443
  this.firstVisible.delta = 0;
4518
4444
  };
4519
- FetchModel.prototype.append = function (items) {
4520
- this.startSimulate(items);
4521
- this.last.index = items[items.length - 1].$index;
4522
- this.first.index = items[0].$index;
4523
- this.direction = Direction.forward;
4524
- };
4525
- FetchModel.prototype.prepend = function (items) {
4526
- this.startSimulate(items);
4527
- this.last.index = items[0].$index;
4528
- this.first.index = items[items.length - 1].$index;
4529
- this.direction = Direction.backward;
4530
- };
4531
4445
  FetchModel.prototype.check = function (items) {
4532
4446
  this.startSimulate(items);
4533
4447
  this.last.index = items[0].$index;