vscroll 1.4.0-beta.2 → 1.4.3
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 +383 -392
- 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 +337 -342
- 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 +386 -395
- 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.map +1 -1
- package/dist/esm2015/classes/buffer.js +0 -16
- package/dist/esm2015/classes/buffer.js.map +1 -1
- package/dist/esm2015/classes/domRoutines.js +56 -0
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/classes/item.js +4 -0
- package/dist/esm2015/classes/item.js.map +1 -1
- package/dist/esm2015/classes/paddings.js +3 -1
- package/dist/esm2015/classes/paddings.js.map +1 -1
- package/dist/esm2015/classes/state/cycle.js +7 -6
- package/dist/esm2015/classes/state/cycle.js.map +1 -1
- package/dist/esm2015/classes/state/fetch.js +0 -12
- package/dist/esm2015/classes/state/fetch.js.map +1 -1
- package/dist/esm2015/classes/state/render.js +1 -1
- package/dist/esm2015/classes/state/render.js.map +1 -1
- package/dist/esm2015/classes/state/scroll.js +6 -6
- package/dist/esm2015/classes/state/scroll.js.map +1 -1
- package/dist/esm2015/classes/state.js +23 -15
- package/dist/esm2015/classes/state.js.map +1 -1
- package/dist/esm2015/classes/viewport.js +12 -29
- package/dist/esm2015/classes/viewport.js.map +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/state.js.map +1 -1
- package/dist/esm2015/processes/adapter/append.js +15 -74
- package/dist/esm2015/processes/adapter/append.js.map +1 -1
- package/dist/esm2015/processes/adapter/reload.js +1 -1
- package/dist/esm2015/processes/adapter/reload.js.map +1 -1
- package/dist/esm2015/processes/adjust.js +44 -15
- package/dist/esm2015/processes/adjust.js.map +1 -1
- package/dist/esm2015/processes/end.js +18 -16
- package/dist/esm2015/processes/end.js.map +1 -1
- package/dist/esm2015/processes/fetch.js +3 -3
- package/dist/esm2015/processes/fetch.js.map +1 -1
- package/dist/esm2015/processes/init.js +2 -2
- package/dist/esm2015/processes/init.js.map +1 -1
- package/dist/esm2015/processes/render.js +8 -11
- package/dist/esm2015/processes/render.js.map +1 -1
- package/dist/esm2015/processes/scroll.js +21 -21
- package/dist/esm2015/processes/scroll.js.map +1 -1
- package/dist/esm2015/version.js +1 -1
- package/dist/esm2015/version.js.map +1 -1
- package/dist/esm2015/workflow.js +5 -6
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm5/classes/buffer/defaultSize.js +1 -1
- package/dist/esm5/classes/buffer/defaultSize.js.map +1 -1
- package/dist/esm5/classes/buffer.js +7 -23
- package/dist/esm5/classes/buffer.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +56 -0
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/classes/item.js +4 -0
- package/dist/esm5/classes/item.js.map +1 -1
- package/dist/esm5/classes/logger.js +5 -5
- package/dist/esm5/classes/logger.js.map +1 -1
- package/dist/esm5/classes/paddings.js +3 -1
- package/dist/esm5/classes/paddings.js.map +1 -1
- package/dist/esm5/classes/state/cycle.js +7 -6
- package/dist/esm5/classes/state/cycle.js.map +1 -1
- package/dist/esm5/classes/state/fetch.js +0 -12
- package/dist/esm5/classes/state/fetch.js.map +1 -1
- package/dist/esm5/classes/state/render.js +1 -1
- package/dist/esm5/classes/state/render.js.map +1 -1
- package/dist/esm5/classes/state/scroll.js +11 -11
- package/dist/esm5/classes/state/scroll.js.map +1 -1
- package/dist/esm5/classes/state.js +23 -15
- package/dist/esm5/classes/state.js.map +1 -1
- package/dist/esm5/classes/viewport.js +13 -31
- package/dist/esm5/classes/viewport.js.map +1 -1
- package/dist/esm5/inputs/validation.js +2 -2
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/state.js.map +1 -1
- package/dist/esm5/processes/adapter/append.js +15 -75
- package/dist/esm5/processes/adapter/append.js.map +1 -1
- package/dist/esm5/processes/adapter/fix.js +1 -1
- package/dist/esm5/processes/adapter/fix.js.map +1 -1
- package/dist/esm5/processes/adapter/insert.js +1 -1
- package/dist/esm5/processes/adapter/insert.js.map +1 -1
- package/dist/esm5/processes/adapter/reload.js +1 -1
- package/dist/esm5/processes/adapter/reload.js.map +1 -1
- package/dist/esm5/processes/adapter/remove.js +1 -1
- package/dist/esm5/processes/adapter/remove.js.map +1 -1
- package/dist/esm5/processes/adjust.js +44 -15
- package/dist/esm5/processes/adjust.js.map +1 -1
- package/dist/esm5/processes/end.js +18 -16
- package/dist/esm5/processes/end.js.map +1 -1
- package/dist/esm5/processes/fetch.js +3 -3
- package/dist/esm5/processes/fetch.js.map +1 -1
- package/dist/esm5/processes/init.js +2 -2
- package/dist/esm5/processes/init.js.map +1 -1
- package/dist/esm5/processes/preFetch.js +1 -1
- package/dist/esm5/processes/preFetch.js.map +1 -1
- package/dist/esm5/processes/render.js +8 -11
- package/dist/esm5/processes/render.js.map +1 -1
- package/dist/esm5/processes/scroll.js +21 -21
- package/dist/esm5/processes/scroll.js.map +1 -1
- package/dist/esm5/version.js +1 -1
- package/dist/esm5/version.js.map +1 -1
- package/dist/esm5/workflow.js +10 -13
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/buffer.d.ts +0 -2
- package/dist/typings/classes/domRoutines.d.ts +12 -0
- package/dist/typings/classes/item.d.ts +1 -0
- package/dist/typings/classes/state/cycle.d.ts +1 -1
- package/dist/typings/classes/state/fetch.d.ts +0 -2
- package/dist/typings/classes/state/render.d.ts +1 -1
- package/dist/typings/classes/state/scroll.d.ts +4 -4
- package/dist/typings/classes/state.d.ts +6 -3
- package/dist/typings/classes/viewport.d.ts +2 -2
- package/dist/typings/interfaces/index.d.ts +2 -2
- package/dist/typings/interfaces/state.d.ts +2 -15
- package/dist/typings/processes/adapter/append.d.ts +1 -4
- package/dist/typings/processes/adjust.d.ts +1 -0
- package/dist/typings/processes/end.d.ts +1 -2
- package/dist/typings/workflow.d.ts +1 -1
- package/package.json +17 -17
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vscroll (https://github.com/dhilt/vscroll) FESM5
|
|
3
|
-
* Version: 1.4.
|
|
3
|
+
* Version: 1.4.3 (2021-11-30T02:54:00.541Z)
|
|
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.
|
|
346
|
+
version: '1.4.3'
|
|
347
347
|
};
|
|
348
348
|
|
|
349
349
|
var instanceCount$1 = 0;
|
|
@@ -731,7 +731,7 @@ var ValidatedData = /** @class */ (function () {
|
|
|
731
731
|
};
|
|
732
732
|
ValidatedData.prototype.setValidity = function () {
|
|
733
733
|
var _this = this;
|
|
734
|
-
this.errors = Object.keys(this.params).reduce(function (acc, key) { return __spreadArray(__spreadArray([], __read(acc)), __read(_this.params[key].errors)); }, []);
|
|
734
|
+
this.errors = Object.keys(this.params).reduce(function (acc, key) { return __spreadArray(__spreadArray([], __read(acc), false), __read(_this.params[key].errors), false); }, []);
|
|
735
735
|
this.isValid = !this.errors.length;
|
|
736
736
|
};
|
|
737
737
|
ValidatedData.prototype.setCommonError = function (error) {
|
|
@@ -760,7 +760,7 @@ var ValidatedData = /** @class */ (function () {
|
|
|
760
760
|
var runValidator = function (current, validator, context) {
|
|
761
761
|
var value = current.value, errors = current.errors;
|
|
762
762
|
var result = validator.method(value, context);
|
|
763
|
-
var _errors = __spreadArray(__spreadArray([], __read(errors)), __read(result.errors));
|
|
763
|
+
var _errors = __spreadArray(__spreadArray([], __read(errors), false), __read(result.errors), false);
|
|
764
764
|
return {
|
|
765
765
|
value: result.value,
|
|
766
766
|
isSet: result.isSet,
|
|
@@ -1350,10 +1350,10 @@ var Init = /** @class */ (function (_super) {
|
|
|
1350
1350
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
1351
1351
|
}
|
|
1352
1352
|
Init.run = function (scroller, process) {
|
|
1353
|
-
var
|
|
1353
|
+
var state = scroller.state, workflow = scroller.workflow;
|
|
1354
1354
|
var isInitial = initProcesses.includes(process);
|
|
1355
1355
|
scroller.logger.logCycle(true);
|
|
1356
|
-
|
|
1356
|
+
state.startWorkflowCycle(isInitial, process);
|
|
1357
1357
|
workflow.call({
|
|
1358
1358
|
process: Init.process,
|
|
1359
1359
|
status: ProcessStatus.next
|
|
@@ -1379,16 +1379,16 @@ var Scroll = /** @class */ (function (_super) {
|
|
|
1379
1379
|
});
|
|
1380
1380
|
};
|
|
1381
1381
|
Scroll.onSynthetic = function (scroller, position) {
|
|
1382
|
-
var
|
|
1383
|
-
var synthPos =
|
|
1382
|
+
var scroll = scroller.state.scroll;
|
|
1383
|
+
var synthPos = scroll.syntheticPosition;
|
|
1384
1384
|
if (synthPos !== null) {
|
|
1385
|
-
if (
|
|
1386
|
-
|
|
1385
|
+
if (scroll.syntheticFulfill) {
|
|
1386
|
+
scroll.syntheticPosition = null;
|
|
1387
1387
|
}
|
|
1388
|
-
if (!
|
|
1388
|
+
if (!scroll.syntheticFulfill || synthPos === position) {
|
|
1389
1389
|
scroller.logger.log(function () { return [
|
|
1390
1390
|
'skipping scroll', position,
|
|
1391
|
-
"[" + (
|
|
1391
|
+
"[" + (scroll.syntheticFulfill ? '' : 'pre-') + "synthetic]"
|
|
1392
1392
|
]; });
|
|
1393
1393
|
return true;
|
|
1394
1394
|
}
|
|
@@ -1399,13 +1399,13 @@ var Scroll = /** @class */ (function (_super) {
|
|
|
1399
1399
|
return false;
|
|
1400
1400
|
};
|
|
1401
1401
|
Scroll.onThrottle = function (scroller, position, done) {
|
|
1402
|
-
var
|
|
1403
|
-
|
|
1404
|
-
var _a =
|
|
1405
|
-
var timeDiff =
|
|
1402
|
+
var scroll = scroller.state.scroll, throttle = scroller.settings.throttle, logger = scroller.logger;
|
|
1403
|
+
scroll.current = Scroll.getScrollEvent(position, scroll.previous);
|
|
1404
|
+
var _a = scroll.current, direction = _a.direction, time = _a.time;
|
|
1405
|
+
var timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;
|
|
1406
1406
|
var delta = throttle - timeDiff;
|
|
1407
1407
|
var shouldDelay = isFinite(delta) && delta > 0;
|
|
1408
|
-
var alreadyDelayed = !!
|
|
1408
|
+
var alreadyDelayed = !!scroll.scrollTimer;
|
|
1409
1409
|
logger.log(function () { return [
|
|
1410
1410
|
direction === Direction.backward ? '\u2934' : '\u2935',
|
|
1411
1411
|
position,
|
|
@@ -1413,17 +1413,17 @@ var Scroll = /** @class */ (function (_super) {
|
|
|
1413
1413
|
shouldDelay ? (alreadyDelayed ? 'delayed' : "/ " + delta + "ms delay") : ''
|
|
1414
1414
|
]; });
|
|
1415
1415
|
if (!shouldDelay) {
|
|
1416
|
-
if (
|
|
1417
|
-
clearTimeout(
|
|
1418
|
-
|
|
1416
|
+
if (scroll.scrollTimer) {
|
|
1417
|
+
clearTimeout(scroll.scrollTimer);
|
|
1418
|
+
scroll.scrollTimer = null;
|
|
1419
1419
|
}
|
|
1420
1420
|
done();
|
|
1421
1421
|
return;
|
|
1422
1422
|
}
|
|
1423
1423
|
if (!alreadyDelayed) {
|
|
1424
|
-
|
|
1424
|
+
scroll.scrollTimer = setTimeout(function () {
|
|
1425
1425
|
logger.log(function () {
|
|
1426
|
-
var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition,
|
|
1426
|
+
var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);
|
|
1427
1427
|
return [
|
|
1428
1428
|
curr.direction === Direction.backward ? '\u2934' : '\u2935',
|
|
1429
1429
|
curr.position,
|
|
@@ -1432,7 +1432,7 @@ var Scroll = /** @class */ (function (_super) {
|
|
|
1432
1432
|
position
|
|
1433
1433
|
];
|
|
1434
1434
|
});
|
|
1435
|
-
|
|
1435
|
+
scroll.scrollTimer = null;
|
|
1436
1436
|
done();
|
|
1437
1437
|
}, delta);
|
|
1438
1438
|
}
|
|
@@ -1451,11 +1451,11 @@ var Scroll = /** @class */ (function (_super) {
|
|
|
1451
1451
|
return { position: position, direction: direction, time: time };
|
|
1452
1452
|
};
|
|
1453
1453
|
Scroll.onScroll = function (scroller, workflow) {
|
|
1454
|
-
var _a = scroller.state,
|
|
1455
|
-
|
|
1456
|
-
|
|
1454
|
+
var _a = scroller.state, scroll = _a.scroll, cycle = _a.cycle;
|
|
1455
|
+
scroll.previous = __assign({}, scroll.current);
|
|
1456
|
+
scroll.current = null;
|
|
1457
1457
|
if (cycle.busy.get()) {
|
|
1458
|
-
scroller.logger.log(function () { return ['skipping scroll',
|
|
1458
|
+
scroller.logger.log(function () { return ['skipping scroll', scroll.previous.position, '[pending]']; });
|
|
1459
1459
|
return;
|
|
1460
1460
|
}
|
|
1461
1461
|
workflow.call({
|
|
@@ -1516,7 +1516,7 @@ var Reload = /** @class */ (function (_super) {
|
|
|
1516
1516
|
viewport.reset(buffer.startIndex);
|
|
1517
1517
|
var payload = {};
|
|
1518
1518
|
if (state.cycle.busy.get()) {
|
|
1519
|
-
state.
|
|
1519
|
+
state.scroll.stop();
|
|
1520
1520
|
payload.finalize = true;
|
|
1521
1521
|
state.cycle.interrupter = Reload.process;
|
|
1522
1522
|
}
|
|
@@ -1581,6 +1581,10 @@ var Item = /** @class */ (function () {
|
|
|
1581
1581
|
this.size = this.routines.getSize(this.element);
|
|
1582
1582
|
}
|
|
1583
1583
|
};
|
|
1584
|
+
Item.prototype.makeVisible = function () {
|
|
1585
|
+
this.routines.makeElementVisible(this.element);
|
|
1586
|
+
this.invisible = false;
|
|
1587
|
+
};
|
|
1584
1588
|
Item.prototype.hide = function () {
|
|
1585
1589
|
if (this.element) {
|
|
1586
1590
|
this.routines.hideElement(this.element);
|
|
@@ -1656,52 +1660,70 @@ var Update = /** @class */ (function (_super) {
|
|
|
1656
1660
|
return Update;
|
|
1657
1661
|
}(BaseAdapterProcessFactory(AdapterProcess.update)));
|
|
1658
1662
|
|
|
1659
|
-
var
|
|
1660
|
-
__extends(
|
|
1661
|
-
function
|
|
1663
|
+
var Insert = /** @class */ (function (_super) {
|
|
1664
|
+
__extends(Insert, _super);
|
|
1665
|
+
function Insert() {
|
|
1662
1666
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
1663
1667
|
}
|
|
1664
|
-
|
|
1665
|
-
var
|
|
1666
|
-
var params = Append.parseInput(scroller, options, false, process).params;
|
|
1668
|
+
Insert.run = function (scroller, options) {
|
|
1669
|
+
var params = Insert.parseInput(scroller, options).params;
|
|
1667
1670
|
if (!params) {
|
|
1668
1671
|
return;
|
|
1669
1672
|
}
|
|
1670
|
-
var
|
|
1673
|
+
var shouldInsert = Insert.doInsert(scroller, params);
|
|
1671
1674
|
scroller.workflow.call({
|
|
1672
|
-
process:
|
|
1673
|
-
status:
|
|
1675
|
+
process: Insert.process,
|
|
1676
|
+
status: shouldInsert ? ProcessStatus.next : ProcessStatus.done
|
|
1674
1677
|
});
|
|
1675
1678
|
};
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
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);
|
|
1679
|
+
Insert.doInsert = function (scroller, params) {
|
|
1680
|
+
if (!Insert.insertEmpty(scroller, params)) {
|
|
1681
|
+
if (!Insert.insertInBuffer(scroller, params)) {
|
|
1682
|
+
if (!Insert.insertVirtually(scroller, params)) {
|
|
1683
|
+
return false;
|
|
1684
|
+
}
|
|
1690
1685
|
}
|
|
1691
1686
|
}
|
|
1692
|
-
return
|
|
1687
|
+
return true;
|
|
1693
1688
|
};
|
|
1694
|
-
|
|
1695
|
-
var buffer = scroller.buffer,
|
|
1696
|
-
|
|
1697
|
-
if (!isFinite(buffer[absIndexToken])) {
|
|
1689
|
+
Insert.insertEmpty = function (scroller, params) {
|
|
1690
|
+
var buffer = scroller.buffer, routines = scroller.routines, fetch = scroller.state.fetch;
|
|
1691
|
+
if (buffer.size) {
|
|
1698
1692
|
return false;
|
|
1699
1693
|
}
|
|
1700
|
-
|
|
1701
|
-
|
|
1694
|
+
var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
|
|
1695
|
+
if (!buffer.fillEmpty(items, beforeIndex, afterIndex, !!decrease, function (index, data) { return new Item(index, data, routines); })) {
|
|
1696
|
+
return false;
|
|
1702
1697
|
}
|
|
1703
|
-
|
|
1704
|
-
|
|
1698
|
+
fetch.fill(buffer.items, buffer.startIndex);
|
|
1699
|
+
return true;
|
|
1700
|
+
};
|
|
1701
|
+
Insert.insertInBuffer = function (scroller, params) {
|
|
1702
|
+
var before = params.before, after = params.after, beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
|
|
1703
|
+
var indexToInsert = scroller.buffer.getIndexToInsert(before || after, beforeIndex, afterIndex);
|
|
1704
|
+
if (isNaN(indexToInsert)) {
|
|
1705
|
+
return false;
|
|
1706
|
+
}
|
|
1707
|
+
var isBackward = Number.isInteger(beforeIndex) || before;
|
|
1708
|
+
var updateOptions = {
|
|
1709
|
+
predicate: function (_a) {
|
|
1710
|
+
var $index = _a.$index, data = _a.data;
|
|
1711
|
+
if (indexToInsert === $index) {
|
|
1712
|
+
return isBackward ? __spreadArray(__spreadArray([], __read(items), false), [data], false) : __spreadArray([data], __read(items), false);
|
|
1713
|
+
}
|
|
1714
|
+
return true;
|
|
1715
|
+
},
|
|
1716
|
+
fixRight: decrease
|
|
1717
|
+
};
|
|
1718
|
+
return Update.doUpdate(scroller, updateOptions);
|
|
1719
|
+
};
|
|
1720
|
+
Insert.insertVirtually = function (scroller, params) {
|
|
1721
|
+
var beforeIndex = params.beforeIndex, afterIndex = params.afterIndex, items = params.items, decrease = params.decrease;
|
|
1722
|
+
var buffer = scroller.buffer, fetch = scroller.state.fetch, viewport = scroller.viewport;
|
|
1723
|
+
var direction = Number.isInteger(beforeIndex) ? Direction.backward : Direction.forward;
|
|
1724
|
+
var indexToInsert = (direction === Direction.backward ? beforeIndex : afterIndex);
|
|
1725
|
+
if (!buffer.insertVirtually(items, indexToInsert, direction, !!decrease)) {
|
|
1726
|
+
return false;
|
|
1705
1727
|
}
|
|
1706
1728
|
var _a = viewport.getEdgeVisibleItem(buffer.items, Direction.backward), index = _a.index, diff = _a.diff;
|
|
1707
1729
|
fetch.firstVisible.index = index;
|
|
@@ -1709,47 +1731,47 @@ var Append = /** @class */ (function (_super) {
|
|
|
1709
1731
|
fetch.simulate = true;
|
|
1710
1732
|
fetch.firstVisible.delta = -buffer.getSizeByIndex(index) + diff;
|
|
1711
1733
|
}
|
|
1712
|
-
logger.log(function () { return "buffer." + [absIndexToken] + " value is set to " + buffer[absIndexToken]; });
|
|
1713
|
-
logger.stat("after virtual " + (prepend ? 'prepend' : 'append'));
|
|
1714
1734
|
return true;
|
|
1715
1735
|
};
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1736
|
+
return Insert;
|
|
1737
|
+
}(BaseAdapterProcessFactory(AdapterProcess.insert)));
|
|
1738
|
+
|
|
1739
|
+
var Append = /** @class */ (function (_super) {
|
|
1740
|
+
__extends(Append, _super);
|
|
1741
|
+
function Append() {
|
|
1742
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
1743
|
+
}
|
|
1744
|
+
Append.run = function (scroller, _a) {
|
|
1745
|
+
var process = _a.process, options = _a.options;
|
|
1746
|
+
var params = Append.parseInput(scroller, options, false, process).params;
|
|
1747
|
+
if (!params) {
|
|
1748
|
+
return;
|
|
1749
|
+
}
|
|
1750
|
+
var shouldAppend = Append.doAppend(scroller, process, params);
|
|
1751
|
+
scroller.workflow.call({
|
|
1752
|
+
process: Append.process,
|
|
1753
|
+
status: shouldAppend ? ProcessStatus.next : ProcessStatus.done
|
|
1728
1754
|
});
|
|
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
1755
|
};
|
|
1740
|
-
Append.
|
|
1741
|
-
var
|
|
1742
|
-
var
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1756
|
+
Append.doAppend = function (scroller, process, params) {
|
|
1757
|
+
var bof = params.bof, eof = params.eof, increase = params.increase, decrease = params.decrease;
|
|
1758
|
+
var buffer = scroller.buffer;
|
|
1759
|
+
var prepend = process === AdapterProcess.prepend;
|
|
1760
|
+
var opposite = prepend ? !increase : decrease;
|
|
1761
|
+
var beforeIndex, afterIndex, items = params.items;
|
|
1762
|
+
if (prepend) {
|
|
1763
|
+
beforeIndex = (bof ? buffer.absMinIndex : buffer.minIndex) + (!buffer.size ? 1 : 0);
|
|
1764
|
+
items = __spreadArray([], __read(items), false).reverse();
|
|
1765
|
+
}
|
|
1766
|
+
else {
|
|
1767
|
+
afterIndex = (eof ? buffer.absMaxIndex : buffer.maxIndex) - (!buffer.size && !opposite ? 1 : 0);
|
|
1768
|
+
}
|
|
1769
|
+
return Insert.doInsert(scroller, {
|
|
1770
|
+
items: items,
|
|
1771
|
+
beforeIndex: beforeIndex,
|
|
1772
|
+
afterIndex: afterIndex,
|
|
1773
|
+
decrease: opposite
|
|
1774
|
+
});
|
|
1753
1775
|
};
|
|
1754
1776
|
return Append;
|
|
1755
1777
|
}(BaseAdapterProcessFactory(AdapterProcess.append)));
|
|
@@ -1842,7 +1864,7 @@ var Remove = /** @class */ (function (_super) {
|
|
|
1842
1864
|
(!!indexes && indexes.includes(item.$index));
|
|
1843
1865
|
};
|
|
1844
1866
|
var indexesToRemove = scroller.buffer.items.reduce(function (acc, item) {
|
|
1845
|
-
return newPredicate(item) ? __spreadArray(__spreadArray([], __read(acc)), [item.$index]) : acc;
|
|
1867
|
+
return newPredicate(item) ? __spreadArray(__spreadArray([], __read(acc), false), [item.$index], false) : acc;
|
|
1846
1868
|
}, []);
|
|
1847
1869
|
var updateOptions = {
|
|
1848
1870
|
predicate: function (item) { return !newPredicate(item); },
|
|
@@ -1918,82 +1940,6 @@ var UserClip = /** @class */ (function (_super) {
|
|
|
1918
1940
|
return UserClip;
|
|
1919
1941
|
}(BaseAdapterProcessFactory(AdapterProcess.clip)));
|
|
1920
1942
|
|
|
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
1943
|
var Replace = /** @class */ (function (_super) {
|
|
1998
1944
|
__extends(Replace, _super);
|
|
1999
1945
|
function Replace() {
|
|
@@ -2110,7 +2056,7 @@ var Fix = /** @class */ (function (_super) {
|
|
|
2110
2056
|
buffer.items.forEach(function (item) { return value(item.get(), updater); });
|
|
2111
2057
|
if (updateReference) {
|
|
2112
2058
|
logger.log(function () { return 'update Buffer.items reference'; });
|
|
2113
|
-
buffer.items = __spreadArray([], __read(buffer.items));
|
|
2059
|
+
buffer.items = __spreadArray([], __read(buffer.items), false);
|
|
2114
2060
|
}
|
|
2115
2061
|
};
|
|
2116
2062
|
Fix.scrollToItem = function (scroller, value, options) {
|
|
@@ -2195,7 +2141,7 @@ var PreFetch = /** @class */ (function (_super) {
|
|
|
2195
2141
|
}
|
|
2196
2142
|
scroller.logger.log(function () { return __spreadArray([
|
|
2197
2143
|
"start delta is " + startDelta
|
|
2198
|
-
], __read((offset ? [" (+" + offset + " offset)"] : []))); });
|
|
2144
|
+
], __read((offset ? [" (+" + offset + " offset)"] : [])), false); });
|
|
2199
2145
|
return startDelta;
|
|
2200
2146
|
};
|
|
2201
2147
|
PreFetch.setFirstIndex = function (scroller) {
|
|
@@ -2425,9 +2371,9 @@ var Fetch = /** @class */ (function (_super) {
|
|
|
2425
2371
|
}
|
|
2426
2372
|
}
|
|
2427
2373
|
else {
|
|
2428
|
-
var _b = scroller.state,
|
|
2429
|
-
if (
|
|
2430
|
-
|
|
2374
|
+
var _b = scroller.state, scroll_1 = _b.scroll, fetch_1 = _b.fetch, viewport = scroller.viewport;
|
|
2375
|
+
if (scroll_1.positionBeforeAsync === null) {
|
|
2376
|
+
scroll_1.positionBeforeAsync = viewport.scrollPosition;
|
|
2431
2377
|
}
|
|
2432
2378
|
fetch_1.cancel = function () {
|
|
2433
2379
|
box.success = function () { return null; };
|
|
@@ -2559,13 +2505,13 @@ var Render = /** @class */ (function (_super) {
|
|
|
2559
2505
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2560
2506
|
}
|
|
2561
2507
|
Render.run = function (scroller) {
|
|
2562
|
-
var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render,
|
|
2508
|
+
var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, viewport = scroller.viewport, routines = scroller.routines;
|
|
2563
2509
|
scroller.logger.stat('before new items render');
|
|
2564
|
-
if (
|
|
2565
|
-
|
|
2510
|
+
if (scroll.positionBeforeAsync === null) {
|
|
2511
|
+
scroll.positionBeforeAsync = viewport.scrollPosition;
|
|
2566
2512
|
}
|
|
2567
|
-
render.
|
|
2568
|
-
render.
|
|
2513
|
+
render.cancel = routines.render(function () {
|
|
2514
|
+
render.cancel = null;
|
|
2569
2515
|
if (Render.doRender(scroller)) {
|
|
2570
2516
|
workflow.call({
|
|
2571
2517
|
process: Render.process,
|
|
@@ -2580,7 +2526,7 @@ var Render = /** @class */ (function (_super) {
|
|
|
2580
2526
|
payload: { error: 'Can\'t associate item with element' }
|
|
2581
2527
|
});
|
|
2582
2528
|
}
|
|
2583
|
-
}
|
|
2529
|
+
});
|
|
2584
2530
|
};
|
|
2585
2531
|
Render.doRender = function (scroller) {
|
|
2586
2532
|
var _a = scroller.state, fetch = _a.fetch, render = _a.render, viewport = scroller.viewport, buffer = scroller.buffer, logger = scroller.logger;
|
|
@@ -2601,15 +2547,12 @@ var Render = /** @class */ (function (_super) {
|
|
|
2601
2547
|
};
|
|
2602
2548
|
Render.processElement = function (scroller, item) {
|
|
2603
2549
|
var viewport = scroller.viewport, buffer = scroller.buffer;
|
|
2604
|
-
var element = viewport.
|
|
2550
|
+
var element = viewport.findItemElementById(item.nodeId);
|
|
2605
2551
|
if (!element) {
|
|
2606
2552
|
return false;
|
|
2607
2553
|
}
|
|
2608
2554
|
item.element = element;
|
|
2609
|
-
item.
|
|
2610
|
-
item.element.style.top = '';
|
|
2611
|
-
item.element.style.position = '';
|
|
2612
|
-
item.invisible = false;
|
|
2555
|
+
item.makeVisible();
|
|
2613
2556
|
item.setSize(buffer.getSizeByIndex(item.$index));
|
|
2614
2557
|
buffer.cacheItem(item);
|
|
2615
2558
|
return true;
|
|
@@ -2617,18 +2560,92 @@ var Render = /** @class */ (function (_super) {
|
|
|
2617
2560
|
return Render;
|
|
2618
2561
|
}(BaseProcessFactory(CommonProcess.render)));
|
|
2619
2562
|
|
|
2563
|
+
var isInterrupted = function (_a) {
|
|
2564
|
+
var call = _a.call;
|
|
2565
|
+
return !!call.interrupted;
|
|
2566
|
+
};
|
|
2567
|
+
var End = /** @class */ (function (_super) {
|
|
2568
|
+
__extends(End, _super);
|
|
2569
|
+
function End() {
|
|
2570
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
2571
|
+
}
|
|
2572
|
+
End.run = function (scroller, _a) {
|
|
2573
|
+
var _b = _a === void 0 ? {} : _a, error = _b.error;
|
|
2574
|
+
var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
|
|
2575
|
+
if (!error && !interrupter) {
|
|
2576
|
+
// set out params accessible via Adapter
|
|
2577
|
+
End.calculateParams(scroller, workflow);
|
|
2578
|
+
}
|
|
2579
|
+
// explicit interruption for we don't want to go through the inner loop finalizing
|
|
2580
|
+
if (isInterrupted(workflow)) {
|
|
2581
|
+
workflow.call({ process: End.process, status: ProcessStatus.done });
|
|
2582
|
+
return;
|
|
2583
|
+
}
|
|
2584
|
+
var next = End.shouldContinueRun(scroller, error);
|
|
2585
|
+
scroller.state.endInnerLoop();
|
|
2586
|
+
workflow.call({
|
|
2587
|
+
process: End.process,
|
|
2588
|
+
status: next ? ProcessStatus.next : ProcessStatus.done,
|
|
2589
|
+
payload: __assign({}, (interrupter ? { process: interrupter } : {}))
|
|
2590
|
+
});
|
|
2591
|
+
};
|
|
2592
|
+
End.calculateParams = function (scroller, workflow) {
|
|
2593
|
+
var adapter = scroller.adapter, viewport = scroller.viewport, items = scroller.buffer.items;
|
|
2594
|
+
if (adapter.wanted.firstVisible) {
|
|
2595
|
+
var item = viewport.getEdgeVisibleItem(items, Direction.backward).item;
|
|
2596
|
+
if (!item || item.element !== adapter.firstVisible.element) {
|
|
2597
|
+
adapter.firstVisible = item ? item.get() : EMPTY_ITEM;
|
|
2598
|
+
}
|
|
2599
|
+
}
|
|
2600
|
+
// the workflow can be interrupter on firstVisible change
|
|
2601
|
+
if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {
|
|
2602
|
+
var item = viewport.getEdgeVisibleItem(items, Direction.forward).item;
|
|
2603
|
+
if (!item || item.element !== adapter.lastVisible.element) {
|
|
2604
|
+
adapter.lastVisible = item ? item.get() : EMPTY_ITEM;
|
|
2605
|
+
}
|
|
2606
|
+
}
|
|
2607
|
+
};
|
|
2608
|
+
End.shouldContinueRun = function (scroller, error) {
|
|
2609
|
+
var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch, render = _a.render;
|
|
2610
|
+
// Adapter.reload or Adapter.reset
|
|
2611
|
+
if (cycle.interrupter) {
|
|
2612
|
+
return true;
|
|
2613
|
+
}
|
|
2614
|
+
// critical error
|
|
2615
|
+
if (error) {
|
|
2616
|
+
return false;
|
|
2617
|
+
}
|
|
2618
|
+
// Adapter.check
|
|
2619
|
+
if (fetch.simulate && fetch.isCheck && !render.noSize) {
|
|
2620
|
+
return true;
|
|
2621
|
+
}
|
|
2622
|
+
// Adapter.remove or Adapter.update with clip
|
|
2623
|
+
if (fetch.simulate && fetch.doRemove) {
|
|
2624
|
+
return true;
|
|
2625
|
+
}
|
|
2626
|
+
// common inner loop (App start, scroll, Adapter.clip) with full fetch
|
|
2627
|
+
if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
|
|
2628
|
+
return true;
|
|
2629
|
+
}
|
|
2630
|
+
return false;
|
|
2631
|
+
};
|
|
2632
|
+
return End;
|
|
2633
|
+
}(BaseProcessFactory(CommonProcess.end)));
|
|
2634
|
+
|
|
2620
2635
|
var Adjust = /** @class */ (function (_super) {
|
|
2621
2636
|
__extends(Adjust, _super);
|
|
2622
2637
|
function Adjust() {
|
|
2623
2638
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2624
2639
|
}
|
|
2625
2640
|
Adjust.run = function (scroller) {
|
|
2626
|
-
var workflow = scroller.workflow, viewport = scroller.viewport,
|
|
2627
|
-
|
|
2641
|
+
var workflow = scroller.workflow, viewport = scroller.viewport, scroll = scroller.state.scroll;
|
|
2642
|
+
scroll.positionBeforeAdjust = viewport.scrollPosition;
|
|
2628
2643
|
Adjust.setPaddings(scroller);
|
|
2629
|
-
|
|
2644
|
+
scroll.positionAfterAdjust = viewport.scrollPosition;
|
|
2630
2645
|
// scroll position adjustments
|
|
2631
2646
|
var position = Adjust.calculatePosition(scroller);
|
|
2647
|
+
// additional adjustment if the position can't be reached during the initial cycle
|
|
2648
|
+
Adjust.setAdditionalForwardPadding(scroller, position);
|
|
2632
2649
|
// set new position using animation frame
|
|
2633
2650
|
Adjust.setPosition(scroller, position, function () {
|
|
2634
2651
|
return workflow.call({
|
|
@@ -2661,7 +2678,8 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2661
2678
|
}
|
|
2662
2679
|
// lack of items case
|
|
2663
2680
|
var bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
|
|
2664
|
-
var
|
|
2681
|
+
var scrollSize = bwdSize + bufferSize + fwdSize;
|
|
2682
|
+
var viewportSizeDiff = viewport.getSize() - scrollSize;
|
|
2665
2683
|
if (viewportSizeDiff > 0) {
|
|
2666
2684
|
if (inverse) {
|
|
2667
2685
|
bwdSize += viewportSizeDiff;
|
|
@@ -2678,7 +2696,7 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2678
2696
|
scroller.logger.stat('after paddings adjustments');
|
|
2679
2697
|
};
|
|
2680
2698
|
Adjust.calculatePosition = function (scroller) {
|
|
2681
|
-
var viewport = scroller.viewport, buffer = scroller.buffer, _a = scroller.state, fetch = _a.fetch, render = _a.render,
|
|
2699
|
+
var viewport = scroller.viewport, buffer = scroller.buffer, _a = scroller.state, fetch = _a.fetch, render = _a.render, scroll = _a.scroll;
|
|
2682
2700
|
var position = viewport.paddings.backward.size;
|
|
2683
2701
|
// increase the position to meet the expectation of the first visible item
|
|
2684
2702
|
if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
|
|
@@ -2701,8 +2719,8 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2701
2719
|
});
|
|
2702
2720
|
}
|
|
2703
2721
|
// slow fetch/render case
|
|
2704
|
-
if (
|
|
2705
|
-
var diff = render.positionBefore -
|
|
2722
|
+
if (scroll.positionBeforeAsync !== null) {
|
|
2723
|
+
var diff = render.positionBefore - scroll.positionBeforeAsync;
|
|
2706
2724
|
if (diff !== 0) {
|
|
2707
2725
|
scroller.logger.log("shift position due to fetch-render difference (" + diff + ")");
|
|
2708
2726
|
position += diff;
|
|
@@ -2714,22 +2732,47 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2714
2732
|
}
|
|
2715
2733
|
return Math.round(position);
|
|
2716
2734
|
};
|
|
2735
|
+
Adjust.setAdditionalForwardPadding = function (scroller, position) {
|
|
2736
|
+
var viewport = scroller.viewport, buffer = scroller.buffer, cycle = scroller.state.cycle;
|
|
2737
|
+
if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
|
|
2738
|
+
return;
|
|
2739
|
+
}
|
|
2740
|
+
var diff = position - viewport.getMaxScrollPosition();
|
|
2741
|
+
if (diff <= 0) {
|
|
2742
|
+
return;
|
|
2743
|
+
}
|
|
2744
|
+
var last = buffer.getLastVisibleItem();
|
|
2745
|
+
if (!last) {
|
|
2746
|
+
return;
|
|
2747
|
+
}
|
|
2748
|
+
var size = 0;
|
|
2749
|
+
var index = last.$index + 1;
|
|
2750
|
+
while (size <= diff && index <= buffer.absMaxIndex) {
|
|
2751
|
+
size += buffer.getSizeByIndex(index++);
|
|
2752
|
+
}
|
|
2753
|
+
var shift = Math.min(size, diff);
|
|
2754
|
+
if (shift) {
|
|
2755
|
+
viewport.paddings.forward.size += shift;
|
|
2756
|
+
scroller.logger.log("increase fwd padding due to lack of items (" + diff + " -> " + shift + ")");
|
|
2757
|
+
}
|
|
2758
|
+
};
|
|
2717
2759
|
Adjust.setPosition = function (scroller, position, done) {
|
|
2718
|
-
var
|
|
2719
|
-
if (!
|
|
2760
|
+
var scroll = scroller.state.scroll, viewport = scroller.viewport, routines = scroller.routines;
|
|
2761
|
+
if (!scroll.hasPositionChanged(position)) {
|
|
2720
2762
|
return done();
|
|
2721
2763
|
}
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2764
|
+
scroll.syntheticPosition = position;
|
|
2765
|
+
scroll.syntheticFulfill = false;
|
|
2766
|
+
scroll.cancelAnimation = routines.animate(function () {
|
|
2767
|
+
scroll.cancelAnimation = null;
|
|
2768
|
+
var inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
|
|
2726
2769
|
var diffLog = '';
|
|
2727
2770
|
if (inertiaDiff > 0) {
|
|
2728
2771
|
position -= inertiaDiff;
|
|
2729
|
-
|
|
2772
|
+
scroll.syntheticPosition = position;
|
|
2730
2773
|
diffLog = " (-" + inertiaDiff + ")";
|
|
2731
2774
|
}
|
|
2732
|
-
|
|
2775
|
+
scroll.syntheticFulfill = true;
|
|
2733
2776
|
viewport.scrollPosition = position;
|
|
2734
2777
|
scroller.logger.stat('after scroll adjustment' + diffLog);
|
|
2735
2778
|
done();
|
|
@@ -2886,76 +2929,6 @@ var Clip = /** @class */ (function (_super) {
|
|
|
2886
2929
|
return Clip;
|
|
2887
2930
|
}(BaseProcessFactory(CommonProcess.clip)));
|
|
2888
2931
|
|
|
2889
|
-
var isInterrupted = function (_a) {
|
|
2890
|
-
var call = _a.call;
|
|
2891
|
-
return !!call.interrupted;
|
|
2892
|
-
};
|
|
2893
|
-
var End = /** @class */ (function (_super) {
|
|
2894
|
-
__extends(End, _super);
|
|
2895
|
-
function End() {
|
|
2896
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
2897
|
-
}
|
|
2898
|
-
End.run = function (scroller, _a) {
|
|
2899
|
-
var _b = _a === void 0 ? {} : _a, error = _b.error;
|
|
2900
|
-
var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
|
|
2901
|
-
if (!error && !interrupter) {
|
|
2902
|
-
// set out params accessible via Adapter
|
|
2903
|
-
End.calculateParams(scroller, workflow);
|
|
2904
|
-
}
|
|
2905
|
-
// explicit interruption for we don't want to go through the inner loop finalizing
|
|
2906
|
-
if (isInterrupted(workflow)) {
|
|
2907
|
-
workflow.call({ process: End.process, status: ProcessStatus.done });
|
|
2908
|
-
return;
|
|
2909
|
-
}
|
|
2910
|
-
var next = End.finalizeInnerLoop(scroller, error);
|
|
2911
|
-
workflow.call({
|
|
2912
|
-
process: End.process,
|
|
2913
|
-
status: next ? ProcessStatus.next : ProcessStatus.done,
|
|
2914
|
-
payload: __assign({}, (interrupter ? { process: interrupter } : {}))
|
|
2915
|
-
});
|
|
2916
|
-
};
|
|
2917
|
-
End.calculateParams = function (scroller, workflow) {
|
|
2918
|
-
var adapter = scroller.adapter, viewport = scroller.viewport, items = scroller.buffer.items;
|
|
2919
|
-
if (adapter.wanted.firstVisible) {
|
|
2920
|
-
var item = viewport.getEdgeVisibleItem(items, Direction.backward).item;
|
|
2921
|
-
if (!item || item.element !== adapter.firstVisible.element) {
|
|
2922
|
-
adapter.firstVisible = item ? item.get() : EMPTY_ITEM;
|
|
2923
|
-
}
|
|
2924
|
-
}
|
|
2925
|
-
// the workflow can be interrupter on firstVisible change
|
|
2926
|
-
if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {
|
|
2927
|
-
var item = viewport.getEdgeVisibleItem(items, Direction.forward).item;
|
|
2928
|
-
if (!item || item.element !== adapter.lastVisible.element) {
|
|
2929
|
-
adapter.lastVisible = item ? item.get() : EMPTY_ITEM;
|
|
2930
|
-
}
|
|
2931
|
-
}
|
|
2932
|
-
};
|
|
2933
|
-
End.finalizeInnerLoop = function (scroller, error) {
|
|
2934
|
-
var state = scroller.state, _a = scroller.state, cycle = _a.cycle, clip = _a.clip, fetch = _a.fetch;
|
|
2935
|
-
var next = !!cycle.interrupter || (error ? false : End.getNext(scroller));
|
|
2936
|
-
cycle.innerLoop.isInitial = false;
|
|
2937
|
-
fetch.stopSimulate();
|
|
2938
|
-
clip.reset(true);
|
|
2939
|
-
state.endInnerLoop();
|
|
2940
|
-
return next;
|
|
2941
|
-
};
|
|
2942
|
-
End.getNext = function (scroller) {
|
|
2943
|
-
var _a = scroller.state, fetch = _a.fetch, render = _a.render;
|
|
2944
|
-
if (fetch.simulate && fetch.isCheck && !render.noSize) { // Adapter.check
|
|
2945
|
-
return true;
|
|
2946
|
-
}
|
|
2947
|
-
if (fetch.simulate && fetch.doRemove) { // Adapter.remove or Adapter.update with clip
|
|
2948
|
-
return true;
|
|
2949
|
-
}
|
|
2950
|
-
if ( // common inner loop (App start, Scroll, Adapter.clip) accompanied by fetch
|
|
2951
|
-
!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
|
|
2952
|
-
return true;
|
|
2953
|
-
}
|
|
2954
|
-
return false;
|
|
2955
|
-
};
|
|
2956
|
-
return End;
|
|
2957
|
-
}(BaseProcessFactory(CommonProcess.end)));
|
|
2958
|
-
|
|
2959
2932
|
var Logger = /** @class */ (function () {
|
|
2960
2933
|
function Logger(scroller, packageInfo, adapter) {
|
|
2961
2934
|
var _this = this;
|
|
@@ -3057,7 +3030,7 @@ var Logger = /** @class */ (function () {
|
|
|
3057
3030
|
'color: #888; border: dashed #888 0; border-bottom-width: 0px',
|
|
3058
3031
|
'color: #000; border-width: 0'
|
|
3059
3032
|
];
|
|
3060
|
-
this.log(function () { return __spreadArray(['%cstat' + (str ? " " + str : '') + ',%c ' + _this.getStat()], __read(logStyles_1)); });
|
|
3033
|
+
this.log(function () { return __spreadArray(['%cstat' + (str ? " " + str : '') + ',%c ' + _this.getStat()], __read(logStyles_1), false); });
|
|
3061
3034
|
}
|
|
3062
3035
|
};
|
|
3063
3036
|
Logger.prototype.fetch = function (str) {
|
|
@@ -3065,7 +3038,7 @@ var Logger = /** @class */ (function () {
|
|
|
3065
3038
|
if (this.debug) {
|
|
3066
3039
|
var _text_1 = 'fetch interval' + (str ? " " + str : '');
|
|
3067
3040
|
var logStyles_2 = ['color: #888', 'color: #000'];
|
|
3068
|
-
this.log(function () { return __spreadArray(["%c" + _text_1 + ": %c" + _this.getFetchRange()], __read(logStyles_2)); });
|
|
3041
|
+
this.log(function () { return __spreadArray(["%c" + _text_1 + ": %c" + _this.getFetchRange()], __read(logStyles_2), false); });
|
|
3069
3042
|
}
|
|
3070
3043
|
};
|
|
3071
3044
|
Logger.prototype.prepareForLog = function (data) {
|
|
@@ -3091,7 +3064,7 @@ var Logger = /** @class */ (function () {
|
|
|
3091
3064
|
}
|
|
3092
3065
|
}
|
|
3093
3066
|
if (loopLog.length) {
|
|
3094
|
-
this.log(function () { return __spreadArray(__spreadArray([], __read(loopLog)), ['color: #006600;']); });
|
|
3067
|
+
this.log(function () { return __spreadArray(__spreadArray([], __read(loopLog), false), ['color: #006600;'], false); });
|
|
3095
3068
|
}
|
|
3096
3069
|
};
|
|
3097
3070
|
Logger.prototype.logCycle = function (start) {
|
|
@@ -3105,7 +3078,7 @@ var Logger = /** @class */ (function () {
|
|
|
3105
3078
|
var _this = this;
|
|
3106
3079
|
if (this.debug) {
|
|
3107
3080
|
var logStyles_3 = ['color: #a00;', 'color: #000'];
|
|
3108
|
-
this.log(function () { return __spreadArray(['error:%c' + (str ? " " + str : '') + ("%c (loop " + _this.getLoopIdNext() + ")")], __read(logStyles_3)); });
|
|
3081
|
+
this.log(function () { return __spreadArray(['error:%c' + (str ? " " + str : '') + ("%c (loop " + _this.getLoopIdNext() + ")")], __read(logStyles_3), false); });
|
|
3109
3082
|
}
|
|
3110
3083
|
};
|
|
3111
3084
|
Logger.prototype.log = function () {
|
|
@@ -3125,7 +3098,7 @@ var Logger = /** @class */ (function () {
|
|
|
3125
3098
|
return;
|
|
3126
3099
|
}
|
|
3127
3100
|
if (this.logTime) {
|
|
3128
|
-
args = __spreadArray(__spreadArray([], __read(args)), [this.getTime()]);
|
|
3101
|
+
args = __spreadArray(__spreadArray([], __read(args), false), [this.getTime()], false);
|
|
3129
3102
|
}
|
|
3130
3103
|
args = args.map(function (arg) { return _this.prepareForLog(arg); });
|
|
3131
3104
|
if (this.immediateLog) {
|
|
@@ -3168,12 +3141,50 @@ var Routines = /** @class */ (function () {
|
|
|
3168
3141
|
function Routines(settings) {
|
|
3169
3142
|
this.horizontal = settings.horizontal;
|
|
3170
3143
|
this.window = settings.windowViewport;
|
|
3144
|
+
this.viewport = settings.viewport;
|
|
3171
3145
|
}
|
|
3172
3146
|
Routines.prototype.checkElement = function (element) {
|
|
3173
3147
|
if (!element) {
|
|
3174
3148
|
throw new Error('HTML element is not defined');
|
|
3175
3149
|
}
|
|
3176
3150
|
};
|
|
3151
|
+
Routines.prototype.getHostElement = function (element) {
|
|
3152
|
+
if (this.window) {
|
|
3153
|
+
return document.documentElement;
|
|
3154
|
+
}
|
|
3155
|
+
if (this.viewport) {
|
|
3156
|
+
return this.viewport;
|
|
3157
|
+
}
|
|
3158
|
+
this.checkElement(element);
|
|
3159
|
+
var parent = element.parentElement;
|
|
3160
|
+
this.checkElement(parent);
|
|
3161
|
+
return parent;
|
|
3162
|
+
};
|
|
3163
|
+
Routines.prototype.getScrollEventReceiver = function (element) {
|
|
3164
|
+
if (this.window) {
|
|
3165
|
+
return window;
|
|
3166
|
+
}
|
|
3167
|
+
return this.getHostElement(element);
|
|
3168
|
+
};
|
|
3169
|
+
Routines.prototype.setupScrollRestoration = function () {
|
|
3170
|
+
if ('scrollRestoration' in history) {
|
|
3171
|
+
history.scrollRestoration = 'manual';
|
|
3172
|
+
}
|
|
3173
|
+
};
|
|
3174
|
+
Routines.prototype.dismissOverflowAnchor = function (element) {
|
|
3175
|
+
this.checkElement(element);
|
|
3176
|
+
element.style.overflowAnchor = 'none';
|
|
3177
|
+
};
|
|
3178
|
+
Routines.prototype.findElementBySelector = function (element, selector) {
|
|
3179
|
+
this.checkElement(element);
|
|
3180
|
+
return element.querySelector(selector);
|
|
3181
|
+
};
|
|
3182
|
+
Routines.prototype.findPaddingElement = function (element, direction) {
|
|
3183
|
+
return this.findElementBySelector(element, "[data-padding-" + direction + "]");
|
|
3184
|
+
};
|
|
3185
|
+
Routines.prototype.findItemElement = function (element, id) {
|
|
3186
|
+
return this.findElementBySelector(element, "[data-sid=\"" + id + "\"]");
|
|
3187
|
+
};
|
|
3177
3188
|
Routines.prototype.getScrollPosition = function (element) {
|
|
3178
3189
|
if (this.window) {
|
|
3179
3190
|
return window.pageYOffset;
|
|
@@ -3236,6 +3247,12 @@ var Routines = /** @class */ (function () {
|
|
|
3236
3247
|
return element.offsetTop - (relativeElement ? relativeElement.scrollTop : 0) +
|
|
3237
3248
|
(direction === (!opposite ? Direction.forward : Direction.backward) ? this.getSize(element) : 0);
|
|
3238
3249
|
};
|
|
3250
|
+
Routines.prototype.makeElementVisible = function (element) {
|
|
3251
|
+
this.checkElement(element);
|
|
3252
|
+
element.style.left = '';
|
|
3253
|
+
element.style.top = '';
|
|
3254
|
+
element.style.position = '';
|
|
3255
|
+
};
|
|
3239
3256
|
Routines.prototype.hideElement = function (element) {
|
|
3240
3257
|
this.checkElement(element);
|
|
3241
3258
|
element.style.display = 'none';
|
|
@@ -3248,12 +3265,26 @@ var Routines = /** @class */ (function () {
|
|
|
3248
3265
|
this.checkElement(element);
|
|
3249
3266
|
element.scrollIntoView(argument);
|
|
3250
3267
|
};
|
|
3268
|
+
Routines.prototype.render = function (cb) {
|
|
3269
|
+
var timeoutId = setTimeout(function () { return cb(); });
|
|
3270
|
+
return function () { return clearTimeout(timeoutId); };
|
|
3271
|
+
};
|
|
3272
|
+
Routines.prototype.animate = function (cb) {
|
|
3273
|
+
var animationFrameId = requestAnimationFrame(function () { return cb(); });
|
|
3274
|
+
return function () { return cancelAnimationFrame(animationFrameId); };
|
|
3275
|
+
};
|
|
3276
|
+
Routines.prototype.onScroll = function (element, handler) {
|
|
3277
|
+
element.addEventListener('scroll', handler);
|
|
3278
|
+
return function () { return element.removeEventListener('scroll', handler); };
|
|
3279
|
+
};
|
|
3251
3280
|
return Routines;
|
|
3252
3281
|
}());
|
|
3253
3282
|
|
|
3254
3283
|
var Padding = /** @class */ (function () {
|
|
3255
3284
|
function Padding(element, direction, routines) {
|
|
3256
|
-
|
|
3285
|
+
var found = routines.findPaddingElement(element, direction);
|
|
3286
|
+
routines.checkElement(found);
|
|
3287
|
+
this.element = found;
|
|
3257
3288
|
this.direction = direction;
|
|
3258
3289
|
this.routines = routines;
|
|
3259
3290
|
}
|
|
@@ -3334,28 +3365,21 @@ var Viewport = /** @class */ (function () {
|
|
|
3334
3365
|
this.routines = routines;
|
|
3335
3366
|
this.state = state;
|
|
3336
3367
|
this.logger = logger;
|
|
3337
|
-
this.
|
|
3368
|
+
this.hostElement = this.routines.getHostElement(this.element);
|
|
3369
|
+
this.scrollEventReceiver = this.routines.getScrollEventReceiver(this.element);
|
|
3338
3370
|
if (settings.windowViewport) {
|
|
3339
|
-
this.
|
|
3340
|
-
this.scrollEventReceiver = window;
|
|
3341
|
-
}
|
|
3342
|
-
else {
|
|
3343
|
-
this.hostElement = settings.viewport || this.element.parentElement;
|
|
3344
|
-
this.scrollEventReceiver = this.hostElement;
|
|
3345
|
-
}
|
|
3346
|
-
this.paddings = new Paddings(this.element, this.routines, settings);
|
|
3347
|
-
if (settings.windowViewport && 'scrollRestoration' in history) {
|
|
3348
|
-
history.scrollRestoration = 'manual';
|
|
3371
|
+
this.routines.setupScrollRestoration();
|
|
3349
3372
|
}
|
|
3350
3373
|
if (settings.dismissOverflowAnchor) {
|
|
3351
|
-
this.
|
|
3374
|
+
this.routines.dismissOverflowAnchor(this.hostElement);
|
|
3352
3375
|
}
|
|
3376
|
+
this.paddings = new Paddings(this.element, this.routines, settings);
|
|
3353
3377
|
}
|
|
3354
3378
|
Viewport.prototype.reset = function (startIndex) {
|
|
3355
3379
|
this.setOffset();
|
|
3356
3380
|
this.paddings.reset(this.getSize(), startIndex, this.offset);
|
|
3357
3381
|
this.scrollPosition = this.paddings.backward.size || 0;
|
|
3358
|
-
this.state.
|
|
3382
|
+
this.state.scroll.reset();
|
|
3359
3383
|
};
|
|
3360
3384
|
Viewport.prototype.setPosition = function (value) {
|
|
3361
3385
|
var oldPosition = this.scrollPosition;
|
|
@@ -3367,7 +3391,7 @@ var Viewport = /** @class */ (function () {
|
|
|
3367
3391
|
var position = this.scrollPosition;
|
|
3368
3392
|
this.logger.log(function () { return __spreadArray([
|
|
3369
3393
|
'setting scroll position at', position
|
|
3370
|
-
], __read((position !== value ? ["(" + value + ")"] : []))); });
|
|
3394
|
+
], __read((position !== value ? ["(" + value + ")"] : [])), false); });
|
|
3371
3395
|
return position;
|
|
3372
3396
|
};
|
|
3373
3397
|
Object.defineProperty(Viewport.prototype, "scrollPosition", {
|
|
@@ -3380,29 +3404,15 @@ var Viewport = /** @class */ (function () {
|
|
|
3380
3404
|
enumerable: false,
|
|
3381
3405
|
configurable: true
|
|
3382
3406
|
});
|
|
3383
|
-
Viewport.prototype.disableScrollForOneLoop = function () {
|
|
3384
|
-
var _this = this;
|
|
3385
|
-
if (this.disabled) {
|
|
3386
|
-
return;
|
|
3387
|
-
}
|
|
3388
|
-
var style = this.hostElement.style;
|
|
3389
|
-
if (style.overflowY === 'hidden') {
|
|
3390
|
-
return;
|
|
3391
|
-
}
|
|
3392
|
-
this.disabled = true;
|
|
3393
|
-
var overflow = style.overflowY;
|
|
3394
|
-
setTimeout(function () {
|
|
3395
|
-
_this.disabled = false;
|
|
3396
|
-
style.overflowY = overflow;
|
|
3397
|
-
});
|
|
3398
|
-
style.overflowY = 'hidden';
|
|
3399
|
-
};
|
|
3400
3407
|
Viewport.prototype.getSize = function () {
|
|
3401
3408
|
return this.routines.getSize(this.hostElement, true);
|
|
3402
3409
|
};
|
|
3403
3410
|
Viewport.prototype.getScrollableSize = function () {
|
|
3404
3411
|
return this.routines.getSize(this.element);
|
|
3405
3412
|
};
|
|
3413
|
+
Viewport.prototype.getMaxScrollPosition = function () {
|
|
3414
|
+
return this.getScrollableSize() - this.getSize();
|
|
3415
|
+
};
|
|
3406
3416
|
Viewport.prototype.getBufferPadding = function () {
|
|
3407
3417
|
return this.getSize() * this.settings.padding;
|
|
3408
3418
|
};
|
|
@@ -3415,6 +3425,9 @@ var Viewport = /** @class */ (function () {
|
|
|
3415
3425
|
this.offset -= this.routines.getOffset(this.hostElement);
|
|
3416
3426
|
}
|
|
3417
3427
|
};
|
|
3428
|
+
Viewport.prototype.findItemElementById = function (id) {
|
|
3429
|
+
return this.routines.findItemElement(this.element, id);
|
|
3430
|
+
};
|
|
3418
3431
|
Viewport.prototype.getEdgeVisibleItem = function (items, direction) {
|
|
3419
3432
|
var bwd = direction === Direction.backward;
|
|
3420
3433
|
var opposite = bwd ? Direction.forward : Direction.backward;
|
|
@@ -3517,7 +3530,7 @@ var DefaultSize = /** @class */ (function () {
|
|
|
3517
3530
|
return _this.sizeMap.set(size, Math.max((_this.sizeMap.get(size) || 0) - 1, 0));
|
|
3518
3531
|
});
|
|
3519
3532
|
}
|
|
3520
|
-
var sorted = __spreadArray([], __read(this.sizeMap.entries())).sort(function (a, b) { return b[1] - a[1]; });
|
|
3533
|
+
var sorted = __spreadArray([], __read(this.sizeMap.entries()), false).sort(function (a, b) { return b[1] - a[1]; });
|
|
3521
3534
|
var mostFrequentCount = sorted[0][1];
|
|
3522
3535
|
var listEqual = sorted.filter(function (i) { return i[1] === mostFrequentCount; });
|
|
3523
3536
|
if (listEqual.length > 1 && listEqual.find(function (i) { return i[0] === oldFrequentSizeCount; })) {
|
|
@@ -4065,13 +4078,13 @@ var Buffer = /** @class */ (function () {
|
|
|
4065
4078
|
};
|
|
4066
4079
|
Buffer.prototype.setItems = function (items) {
|
|
4067
4080
|
if (!this.items.length) {
|
|
4068
|
-
this.items = __spreadArray([], __read(items));
|
|
4081
|
+
this.items = __spreadArray([], __read(items), false);
|
|
4069
4082
|
}
|
|
4070
4083
|
else if (this.items[0].$index > items[items.length - 1].$index) {
|
|
4071
|
-
this.items = __spreadArray(__spreadArray([], __read(items)), __read(this.items));
|
|
4084
|
+
this.items = __spreadArray(__spreadArray([], __read(items), false), __read(this.items), false);
|
|
4072
4085
|
}
|
|
4073
4086
|
else if (items[0].$index > this.items[this.items.length - 1].$index) {
|
|
4074
|
-
this.items = __spreadArray(__spreadArray([], __read(this.items)), __read(items));
|
|
4087
|
+
this.items = __spreadArray(__spreadArray([], __read(this.items), false), __read(items), false);
|
|
4075
4088
|
}
|
|
4076
4089
|
else {
|
|
4077
4090
|
return false;
|
|
@@ -4102,22 +4115,6 @@ var Buffer = /** @class */ (function () {
|
|
|
4102
4115
|
this.startIndex = this.absMinIndex;
|
|
4103
4116
|
}
|
|
4104
4117
|
};
|
|
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
4118
|
Buffer.prototype.insertVirtually = function (items, index, direction, fixRight) {
|
|
4122
4119
|
if (!this.checkCall.insertVirtual(items, index, direction)) {
|
|
4123
4120
|
return false;
|
|
@@ -4132,7 +4129,7 @@ var Buffer = /** @class */ (function () {
|
|
|
4132
4129
|
if (shift) {
|
|
4133
4130
|
this.items.forEach(function (item) { return item.updateIndex(item.$index + shift); });
|
|
4134
4131
|
this.cache.insertItems(items, index, direction, fixRight);
|
|
4135
|
-
this.items = __spreadArray([], __read(this.items));
|
|
4132
|
+
this.items = __spreadArray([], __read(this.items), false);
|
|
4136
4133
|
}
|
|
4137
4134
|
this.shiftExtremum(items.length, fixRight);
|
|
4138
4135
|
return true;
|
|
@@ -4154,7 +4151,7 @@ var Buffer = /** @class */ (function () {
|
|
|
4154
4151
|
}
|
|
4155
4152
|
this.shiftExtremum(-indexes.length, fixRight);
|
|
4156
4153
|
if (shifted) {
|
|
4157
|
-
this.items = __spreadArray([], __read(this.items));
|
|
4154
|
+
this.items = __spreadArray([], __read(this.items), false);
|
|
4158
4155
|
}
|
|
4159
4156
|
this.cache.removeItems(indexes, fixRight);
|
|
4160
4157
|
};
|
|
@@ -4216,7 +4213,7 @@ var Buffer = /** @class */ (function () {
|
|
|
4216
4213
|
}
|
|
4217
4214
|
var toRemove_1 = true;
|
|
4218
4215
|
var newItems = [];
|
|
4219
|
-
(fixRight ? __spreadArray([], __read(result)).reverse() : result).forEach(function (data, i) {
|
|
4216
|
+
(fixRight ? __spreadArray([], __read(result), false).reverse() : result).forEach(function (data, i) {
|
|
4220
4217
|
var newItem;
|
|
4221
4218
|
if (item.data === data) {
|
|
4222
4219
|
if (indexToTrack === item.$index) {
|
|
@@ -4233,7 +4230,7 @@ var Buffer = /** @class */ (function () {
|
|
|
4233
4230
|
updateArray.call(newItems, newItem);
|
|
4234
4231
|
});
|
|
4235
4232
|
item.toRemove = toRemove_1;
|
|
4236
|
-
updateArray.call.apply(updateArray, __spreadArray([items], __read(newItems)));
|
|
4233
|
+
updateArray.call.apply(updateArray, __spreadArray([items], __read(newItems), false));
|
|
4237
4234
|
index += diff * result.length;
|
|
4238
4235
|
if (result.length > 1) {
|
|
4239
4236
|
this_2.shiftExtremum(result.length - 1, fixRight);
|
|
@@ -4325,6 +4322,7 @@ var InnerLoopModel = /** @class */ (function () {
|
|
|
4325
4322
|
configurable: true
|
|
4326
4323
|
});
|
|
4327
4324
|
InnerLoopModel.prototype.done = function () {
|
|
4325
|
+
this.isInitial = false;
|
|
4328
4326
|
this.count++;
|
|
4329
4327
|
this.total++;
|
|
4330
4328
|
this.busy.set(false);
|
|
@@ -4345,7 +4343,7 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
4345
4343
|
this.innerLoop = new InnerLoopModel(loopCount);
|
|
4346
4344
|
this.interrupter = null;
|
|
4347
4345
|
this.busy = new Reactive(false);
|
|
4348
|
-
this.
|
|
4346
|
+
this.end(cycleCount);
|
|
4349
4347
|
}
|
|
4350
4348
|
Object.defineProperty(WorkflowCycleModel.prototype, "loopId", {
|
|
4351
4349
|
get: function () {
|
|
@@ -4361,11 +4359,6 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
4361
4359
|
enumerable: false,
|
|
4362
4360
|
configurable: true
|
|
4363
4361
|
});
|
|
4364
|
-
WorkflowCycleModel.prototype.done = function (count) {
|
|
4365
|
-
this.count = count;
|
|
4366
|
-
this.isInitial = false;
|
|
4367
|
-
this.busy.set(false);
|
|
4368
|
-
};
|
|
4369
4362
|
WorkflowCycleModel.prototype.start = function (isInitial, initiator) {
|
|
4370
4363
|
this.isInitial = isInitial;
|
|
4371
4364
|
this.initiator = initiator;
|
|
@@ -4374,6 +4367,11 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
4374
4367
|
this.interrupter = null;
|
|
4375
4368
|
this.busy.set(true);
|
|
4376
4369
|
};
|
|
4370
|
+
WorkflowCycleModel.prototype.end = function (count) {
|
|
4371
|
+
this.count = count;
|
|
4372
|
+
this.isInitial = false;
|
|
4373
|
+
this.busy.set(false);
|
|
4374
|
+
};
|
|
4377
4375
|
WorkflowCycleModel.prototype.dispose = function (forever) {
|
|
4378
4376
|
if (forever) {
|
|
4379
4377
|
// otherwise the value will be persisted during re-instantiation
|
|
@@ -4516,18 +4514,6 @@ var FetchModel = /** @class */ (function () {
|
|
|
4516
4514
|
this.firstVisible.index = start;
|
|
4517
4515
|
this.firstVisible.delta = 0;
|
|
4518
4516
|
};
|
|
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
4517
|
FetchModel.prototype.check = function (items) {
|
|
4532
4518
|
this.startSimulate(items);
|
|
4533
4519
|
this.last.index = items[0].$index;
|
|
@@ -4580,16 +4566,16 @@ var RenderModel = /** @class */ (function () {
|
|
|
4580
4566
|
this.sizeBefore = 0;
|
|
4581
4567
|
this.sizeAfter = 0;
|
|
4582
4568
|
this.positionBefore = 0;
|
|
4583
|
-
this.
|
|
4569
|
+
this.cancel = null;
|
|
4584
4570
|
};
|
|
4585
4571
|
return RenderModel;
|
|
4586
4572
|
}());
|
|
4587
4573
|
|
|
4588
|
-
var
|
|
4589
|
-
function
|
|
4574
|
+
var ScrollModel = /** @class */ (function () {
|
|
4575
|
+
function ScrollModel() {
|
|
4590
4576
|
this.reset();
|
|
4591
4577
|
}
|
|
4592
|
-
|
|
4578
|
+
ScrollModel.prototype.reset = function () {
|
|
4593
4579
|
this.previous = null;
|
|
4594
4580
|
this.current = null;
|
|
4595
4581
|
this.syntheticPosition = null;
|
|
@@ -4597,24 +4583,24 @@ var ScrollState = /** @class */ (function () {
|
|
|
4597
4583
|
this.positionBeforeAsync = null;
|
|
4598
4584
|
this.positionBeforeAdjust = null;
|
|
4599
4585
|
this.positionAfterAdjust = null;
|
|
4600
|
-
this.
|
|
4586
|
+
this.stop();
|
|
4601
4587
|
};
|
|
4602
|
-
|
|
4588
|
+
ScrollModel.prototype.stop = function () {
|
|
4603
4589
|
if (this.scrollTimer) {
|
|
4604
4590
|
clearTimeout(this.scrollTimer);
|
|
4605
4591
|
this.scrollTimer = null;
|
|
4606
4592
|
}
|
|
4607
|
-
if (this.
|
|
4608
|
-
|
|
4609
|
-
this.
|
|
4593
|
+
if (this.cancelAnimation) {
|
|
4594
|
+
this.cancelAnimation();
|
|
4595
|
+
this.cancelAnimation = null;
|
|
4610
4596
|
}
|
|
4611
4597
|
};
|
|
4612
|
-
|
|
4598
|
+
ScrollModel.prototype.hasPositionChanged = function (position) {
|
|
4613
4599
|
var before = this.positionBeforeAdjust;
|
|
4614
4600
|
var after = this.positionAfterAdjust;
|
|
4615
4601
|
return before === null || before !== position || after === null || after !== position;
|
|
4616
4602
|
};
|
|
4617
|
-
return
|
|
4603
|
+
return ScrollModel;
|
|
4618
4604
|
}());
|
|
4619
4605
|
|
|
4620
4606
|
var State = /** @class */ (function () {
|
|
@@ -4626,7 +4612,7 @@ var State = /** @class */ (function () {
|
|
|
4626
4612
|
this.fetch = new FetchModel(settings.directionPriority);
|
|
4627
4613
|
this.clip = new ClipModel();
|
|
4628
4614
|
this.render = new RenderModel();
|
|
4629
|
-
this.
|
|
4615
|
+
this.scroll = new ScrollModel();
|
|
4630
4616
|
}
|
|
4631
4617
|
Object.defineProperty(State.prototype, "time", {
|
|
4632
4618
|
get: function () {
|
|
@@ -4635,20 +4621,14 @@ var State = /** @class */ (function () {
|
|
|
4635
4621
|
enumerable: false,
|
|
4636
4622
|
configurable: true
|
|
4637
4623
|
});
|
|
4638
|
-
State.prototype.
|
|
4639
|
-
|
|
4640
|
-
|
|
4641
|
-
|
|
4642
|
-
|
|
4643
|
-
}
|
|
4644
|
-
if (render.renderTimer) {
|
|
4645
|
-
clearTimeout(render.renderTimer);
|
|
4646
|
-
render.renderTimer = null;
|
|
4647
|
-
}
|
|
4648
|
-
cycle.innerLoop.done();
|
|
4624
|
+
State.prototype.startWorkflowCycle = function (isInitial, initiator) {
|
|
4625
|
+
this.cycle.start(isInitial, initiator);
|
|
4626
|
+
};
|
|
4627
|
+
State.prototype.endWorkflowCycle = function (count) {
|
|
4628
|
+
this.cycle.end(count);
|
|
4649
4629
|
};
|
|
4650
4630
|
State.prototype.startInnerLoop = function () {
|
|
4651
|
-
var _a = this, cycle = _a.cycle, scroll = _a.
|
|
4631
|
+
var _a = this, cycle = _a.cycle, scroll = _a.scroll, fetch = _a.fetch, render = _a.render, clip = _a.clip;
|
|
4652
4632
|
cycle.innerLoop.start();
|
|
4653
4633
|
scroll.positionBeforeAsync = null;
|
|
4654
4634
|
if (!fetch.simulate) {
|
|
@@ -4661,10 +4641,24 @@ var State = /** @class */ (function () {
|
|
|
4661
4641
|
doRender: fetch.simulate && fetch.items.length > 0
|
|
4662
4642
|
} : {}));
|
|
4663
4643
|
};
|
|
4644
|
+
State.prototype.endInnerLoop = function () {
|
|
4645
|
+
var _a = this, fetch = _a.fetch, clip = _a.clip, render = _a.render, cycle = _a.cycle;
|
|
4646
|
+
fetch.stopSimulate();
|
|
4647
|
+
clip.reset(true);
|
|
4648
|
+
if (fetch.cancel) {
|
|
4649
|
+
fetch.cancel();
|
|
4650
|
+
fetch.cancel = null;
|
|
4651
|
+
}
|
|
4652
|
+
if (render.cancel) {
|
|
4653
|
+
render.cancel();
|
|
4654
|
+
render.cancel = null;
|
|
4655
|
+
}
|
|
4656
|
+
cycle.innerLoop.done();
|
|
4657
|
+
};
|
|
4664
4658
|
State.prototype.dispose = function () {
|
|
4659
|
+
this.scroll.stop();
|
|
4665
4660
|
this.cycle.dispose();
|
|
4666
4661
|
this.endInnerLoop();
|
|
4667
|
-
this.scrollState.cleanupTimers();
|
|
4668
4662
|
};
|
|
4669
4663
|
return State;
|
|
4670
4664
|
}());
|
|
@@ -5404,7 +5398,7 @@ var Workflow = /** @class */ (function () {
|
|
|
5404
5398
|
this.cyclesDone = 0;
|
|
5405
5399
|
this.interruptionCount = 0;
|
|
5406
5400
|
this.errors = [];
|
|
5407
|
-
this.
|
|
5401
|
+
this.offScroll = function () { return null; };
|
|
5408
5402
|
this.propagateChanges = run;
|
|
5409
5403
|
this.stateMachineMethods = {
|
|
5410
5404
|
run: this.runProcess(),
|
|
@@ -5433,16 +5427,13 @@ var Workflow = /** @class */ (function () {
|
|
|
5433
5427
|
status: ProcessStatus.start
|
|
5434
5428
|
});
|
|
5435
5429
|
// set up scroll event listener
|
|
5436
|
-
var
|
|
5430
|
+
var _a = this.scroller, scrollEventReceiver = _a.viewport.scrollEventReceiver, routines = _a.routines;
|
|
5437
5431
|
var onScrollHandler = function (event) { return _this.callWorkflow({
|
|
5438
5432
|
process: CommonProcess.scroll,
|
|
5439
5433
|
status: ProcessStatus.start,
|
|
5440
5434
|
payload: { event: event }
|
|
5441
5435
|
}); };
|
|
5442
|
-
|
|
5443
|
-
this.disposeScrollEventHandler = function () {
|
|
5444
|
-
return scrollEventReceiver.removeEventListener('scroll', onScrollHandler);
|
|
5445
|
-
};
|
|
5436
|
+
this.offScroll = routines.onScroll(scrollEventReceiver, onScrollHandler);
|
|
5446
5437
|
};
|
|
5447
5438
|
Workflow.prototype.changeItems = function (items) {
|
|
5448
5439
|
this.propagateChanges(items);
|
|
@@ -5468,10 +5459,10 @@ var Workflow = /** @class */ (function () {
|
|
|
5468
5459
|
if (this.scroller.settings.logProcessRun) {
|
|
5469
5460
|
this.scroller.logger.log(function () { return __spreadArray(__spreadArray(__spreadArray([
|
|
5470
5461
|
'%cfire%c'
|
|
5471
|
-
], ['color: #cc7777;', 'color: #000000;']), [
|
|
5462
|
+
], ['color: #cc7777;', 'color: #000000;'], false), [
|
|
5472
5463
|
process,
|
|
5473
5464
|
"\"" + status + "\""
|
|
5474
|
-
]), __read((payload !== void 0 ? [payload] : []))); });
|
|
5465
|
+
], false), __read((payload !== void 0 ? [payload] : [])), false); });
|
|
5475
5466
|
}
|
|
5476
5467
|
this.scroller.logger.logProcess(data);
|
|
5477
5468
|
if (process === CommonProcess.end) {
|
|
@@ -5494,11 +5485,11 @@ var Workflow = /** @class */ (function () {
|
|
|
5494
5485
|
if (_this.scroller.settings.logProcessRun) {
|
|
5495
5486
|
_this.scroller.logger.log(function () { return __spreadArray(__spreadArray(__spreadArray([
|
|
5496
5487
|
'%crun%c'
|
|
5497
|
-
], ['color: #333399;', 'color: #000000;']), [
|
|
5488
|
+
], ['color: #333399;', 'color: #000000;'], false), [
|
|
5498
5489
|
process || name
|
|
5499
|
-
]), __read(args)); });
|
|
5490
|
+
], false), __read(args), false); });
|
|
5500
5491
|
}
|
|
5501
|
-
run.apply(void 0, __spreadArray([_this.scroller], __read(args)));
|
|
5492
|
+
run.apply(void 0, __spreadArray([_this.scroller], __read(args), false));
|
|
5502
5493
|
};
|
|
5503
5494
|
};
|
|
5504
5495
|
};
|
|
@@ -5542,7 +5533,7 @@ var Workflow = /** @class */ (function () {
|
|
|
5542
5533
|
var _a = this.scroller, state = _a.state, logger = _a.logger;
|
|
5543
5534
|
this.cyclesDone++;
|
|
5544
5535
|
logger.logCycle(false);
|
|
5545
|
-
state.
|
|
5536
|
+
state.endWorkflowCycle(this.cyclesDone + 1);
|
|
5546
5537
|
this.finalize();
|
|
5547
5538
|
};
|
|
5548
5539
|
Workflow.prototype.dispose = function () {
|
|
@@ -5550,7 +5541,7 @@ var Workflow = /** @class */ (function () {
|
|
|
5550
5541
|
if (this.initTimer) {
|
|
5551
5542
|
clearTimeout(this.initTimer);
|
|
5552
5543
|
}
|
|
5553
|
-
this.
|
|
5544
|
+
this.offScroll();
|
|
5554
5545
|
this.adapterRun$.dispose();
|
|
5555
5546
|
this.scroller.dispose(true);
|
|
5556
5547
|
Object.getOwnPropertyNames(this).forEach(function (prop) {
|