vscroll 1.4.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 +187 -146
- 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 +173 -132
- 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 +188 -147
- 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/state/cycle.js +7 -6
- package/dist/esm2015/classes/state/cycle.js.map +1 -1
- package/dist/esm2015/classes/state/scroll.js +1 -1
- 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 +4 -1
- 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/reload.js +1 -1
- package/dist/esm2015/processes/adapter/reload.js.map +1 -1
- package/dist/esm2015/processes/adjust.js +44 -16
- 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 +3 -3
- 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 +1 -1
- package/dist/esm2015/workflow.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/scroll.js +7 -7
- 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 +4 -1
- package/dist/esm5/classes/viewport.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/reload.js +1 -1
- package/dist/esm5/processes/adapter/reload.js.map +1 -1
- package/dist/esm5/processes/adjust.js +44 -16
- 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/render.js +3 -3
- 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 +1 -1
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/state/cycle.d.ts +1 -1
- package/dist/typings/classes/state/scroll.d.ts +2 -2
- package/dist/typings/classes/state.d.ts +6 -3
- package/dist/typings/classes/viewport.d.ts +1 -0
- package/dist/typings/interfaces/index.d.ts +2 -2
- package/dist/typings/interfaces/state.d.ts +2 -15
- package/dist/typings/processes/adjust.d.ts +1 -0
- package/dist/typings/processes/end.d.ts +1 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* vscroll (https://github.com/dhilt/vscroll) UMD
|
|
3
|
-
* Version: 1.4.
|
|
3
|
+
* Version: 1.4.3 (2021-11-30T02:54:04.845Z)
|
|
4
4
|
* Author: Denis Hilt
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
96
|
* vscroll (https://github.com/dhilt/vscroll) FESM5
|
|
97
|
-
* Version: 1.4.
|
|
97
|
+
* Version: 1.4.3 (2021-11-30T02:54:00.541Z)
|
|
98
98
|
* Author: Denis Hilt
|
|
99
99
|
* License: MIT
|
|
100
100
|
*/
|
|
@@ -435,7 +435,7 @@
|
|
|
435
435
|
|
|
436
436
|
var core = {
|
|
437
437
|
name: 'vscroll',
|
|
438
|
-
version: '1.4.
|
|
438
|
+
version: '1.4.3'
|
|
439
439
|
};
|
|
440
440
|
|
|
441
441
|
var instanceCount$1 = 0;
|
|
@@ -1442,10 +1442,10 @@
|
|
|
1442
1442
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
1443
1443
|
}
|
|
1444
1444
|
Init.run = function (scroller, process) {
|
|
1445
|
-
var
|
|
1445
|
+
var state = scroller.state, workflow = scroller.workflow;
|
|
1446
1446
|
var isInitial = initProcesses.includes(process);
|
|
1447
1447
|
scroller.logger.logCycle(true);
|
|
1448
|
-
|
|
1448
|
+
state.startWorkflowCycle(isInitial, process);
|
|
1449
1449
|
workflow.call({
|
|
1450
1450
|
process: Init.process,
|
|
1451
1451
|
status: ProcessStatus.next
|
|
@@ -1471,16 +1471,16 @@
|
|
|
1471
1471
|
});
|
|
1472
1472
|
};
|
|
1473
1473
|
Scroll.onSynthetic = function (scroller, position) {
|
|
1474
|
-
var
|
|
1475
|
-
var synthPos =
|
|
1474
|
+
var scroll = scroller.state.scroll;
|
|
1475
|
+
var synthPos = scroll.syntheticPosition;
|
|
1476
1476
|
if (synthPos !== null) {
|
|
1477
|
-
if (
|
|
1478
|
-
|
|
1477
|
+
if (scroll.syntheticFulfill) {
|
|
1478
|
+
scroll.syntheticPosition = null;
|
|
1479
1479
|
}
|
|
1480
|
-
if (!
|
|
1480
|
+
if (!scroll.syntheticFulfill || synthPos === position) {
|
|
1481
1481
|
scroller.logger.log(function () { return [
|
|
1482
1482
|
'skipping scroll', position,
|
|
1483
|
-
"[" + (
|
|
1483
|
+
"[" + (scroll.syntheticFulfill ? '' : 'pre-') + "synthetic]"
|
|
1484
1484
|
]; });
|
|
1485
1485
|
return true;
|
|
1486
1486
|
}
|
|
@@ -1491,13 +1491,13 @@
|
|
|
1491
1491
|
return false;
|
|
1492
1492
|
};
|
|
1493
1493
|
Scroll.onThrottle = function (scroller, position, done) {
|
|
1494
|
-
var
|
|
1495
|
-
|
|
1496
|
-
var _a =
|
|
1497
|
-
var timeDiff =
|
|
1494
|
+
var scroll = scroller.state.scroll, throttle = scroller.settings.throttle, logger = scroller.logger;
|
|
1495
|
+
scroll.current = Scroll.getScrollEvent(position, scroll.previous);
|
|
1496
|
+
var _a = scroll.current, direction = _a.direction, time = _a.time;
|
|
1497
|
+
var timeDiff = scroll.previous ? time - scroll.previous.time : Infinity;
|
|
1498
1498
|
var delta = throttle - timeDiff;
|
|
1499
1499
|
var shouldDelay = isFinite(delta) && delta > 0;
|
|
1500
|
-
var alreadyDelayed = !!
|
|
1500
|
+
var alreadyDelayed = !!scroll.scrollTimer;
|
|
1501
1501
|
logger.log(function () { return [
|
|
1502
1502
|
direction === exports.Direction.backward ? '\u2934' : '\u2935',
|
|
1503
1503
|
position,
|
|
@@ -1505,17 +1505,17 @@
|
|
|
1505
1505
|
shouldDelay ? (alreadyDelayed ? 'delayed' : "/ " + delta + "ms delay") : ''
|
|
1506
1506
|
]; });
|
|
1507
1507
|
if (!shouldDelay) {
|
|
1508
|
-
if (
|
|
1509
|
-
clearTimeout(
|
|
1510
|
-
|
|
1508
|
+
if (scroll.scrollTimer) {
|
|
1509
|
+
clearTimeout(scroll.scrollTimer);
|
|
1510
|
+
scroll.scrollTimer = null;
|
|
1511
1511
|
}
|
|
1512
1512
|
done();
|
|
1513
1513
|
return;
|
|
1514
1514
|
}
|
|
1515
1515
|
if (!alreadyDelayed) {
|
|
1516
|
-
|
|
1516
|
+
scroll.scrollTimer = setTimeout(function () {
|
|
1517
1517
|
logger.log(function () {
|
|
1518
|
-
var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition,
|
|
1518
|
+
var curr = Scroll.getScrollEvent(scroller.viewport.scrollPosition, scroll.current);
|
|
1519
1519
|
return [
|
|
1520
1520
|
curr.direction === exports.Direction.backward ? '\u2934' : '\u2935',
|
|
1521
1521
|
curr.position,
|
|
@@ -1524,7 +1524,7 @@
|
|
|
1524
1524
|
position
|
|
1525
1525
|
];
|
|
1526
1526
|
});
|
|
1527
|
-
|
|
1527
|
+
scroll.scrollTimer = null;
|
|
1528
1528
|
done();
|
|
1529
1529
|
}, delta);
|
|
1530
1530
|
}
|
|
@@ -1543,11 +1543,11 @@
|
|
|
1543
1543
|
return { position: position, direction: direction, time: time };
|
|
1544
1544
|
};
|
|
1545
1545
|
Scroll.onScroll = function (scroller, workflow) {
|
|
1546
|
-
var _a = scroller.state,
|
|
1547
|
-
|
|
1548
|
-
|
|
1546
|
+
var _a = scroller.state, scroll = _a.scroll, cycle = _a.cycle;
|
|
1547
|
+
scroll.previous = __assign({}, scroll.current);
|
|
1548
|
+
scroll.current = null;
|
|
1549
1549
|
if (cycle.busy.get()) {
|
|
1550
|
-
scroller.logger.log(function () { return ['skipping scroll',
|
|
1550
|
+
scroller.logger.log(function () { return ['skipping scroll', scroll.previous.position, '[pending]']; });
|
|
1551
1551
|
return;
|
|
1552
1552
|
}
|
|
1553
1553
|
workflow.call({
|
|
@@ -1608,7 +1608,7 @@
|
|
|
1608
1608
|
viewport.reset(buffer.startIndex);
|
|
1609
1609
|
var payload = {};
|
|
1610
1610
|
if (state.cycle.busy.get()) {
|
|
1611
|
-
state.
|
|
1611
|
+
state.scroll.stop();
|
|
1612
1612
|
payload.finalize = true;
|
|
1613
1613
|
state.cycle.interrupter = Reload.process;
|
|
1614
1614
|
}
|
|
@@ -2463,9 +2463,9 @@
|
|
|
2463
2463
|
}
|
|
2464
2464
|
}
|
|
2465
2465
|
else {
|
|
2466
|
-
var _b = scroller.state,
|
|
2467
|
-
if (
|
|
2468
|
-
|
|
2466
|
+
var _b = scroller.state, scroll_1 = _b.scroll, fetch_1 = _b.fetch, viewport = scroller.viewport;
|
|
2467
|
+
if (scroll_1.positionBeforeAsync === null) {
|
|
2468
|
+
scroll_1.positionBeforeAsync = viewport.scrollPosition;
|
|
2469
2469
|
}
|
|
2470
2470
|
fetch_1.cancel = function () {
|
|
2471
2471
|
box.success = function () { return null; };
|
|
@@ -2597,10 +2597,10 @@
|
|
|
2597
2597
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2598
2598
|
}
|
|
2599
2599
|
Render.run = function (scroller) {
|
|
2600
|
-
var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render,
|
|
2600
|
+
var workflow = scroller.workflow, _a = scroller.state, cycle = _a.cycle, render = _a.render, scroll = _a.scroll, viewport = scroller.viewport, routines = scroller.routines;
|
|
2601
2601
|
scroller.logger.stat('before new items render');
|
|
2602
|
-
if (
|
|
2603
|
-
|
|
2602
|
+
if (scroll.positionBeforeAsync === null) {
|
|
2603
|
+
scroll.positionBeforeAsync = viewport.scrollPosition;
|
|
2604
2604
|
}
|
|
2605
2605
|
render.cancel = routines.render(function () {
|
|
2606
2606
|
render.cancel = null;
|
|
@@ -2652,18 +2652,92 @@
|
|
|
2652
2652
|
return Render;
|
|
2653
2653
|
}(BaseProcessFactory(CommonProcess.render)));
|
|
2654
2654
|
|
|
2655
|
+
var isInterrupted = function (_a) {
|
|
2656
|
+
var call = _a.call;
|
|
2657
|
+
return !!call.interrupted;
|
|
2658
|
+
};
|
|
2659
|
+
var End = /** @class */ (function (_super) {
|
|
2660
|
+
__extends(End, _super);
|
|
2661
|
+
function End() {
|
|
2662
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
2663
|
+
}
|
|
2664
|
+
End.run = function (scroller, _a) {
|
|
2665
|
+
var _b = _a === void 0 ? {} : _a, error = _b.error;
|
|
2666
|
+
var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
|
|
2667
|
+
if (!error && !interrupter) {
|
|
2668
|
+
// set out params accessible via Adapter
|
|
2669
|
+
End.calculateParams(scroller, workflow);
|
|
2670
|
+
}
|
|
2671
|
+
// explicit interruption for we don't want to go through the inner loop finalizing
|
|
2672
|
+
if (isInterrupted(workflow)) {
|
|
2673
|
+
workflow.call({ process: End.process, status: ProcessStatus.done });
|
|
2674
|
+
return;
|
|
2675
|
+
}
|
|
2676
|
+
var next = End.shouldContinueRun(scroller, error);
|
|
2677
|
+
scroller.state.endInnerLoop();
|
|
2678
|
+
workflow.call({
|
|
2679
|
+
process: End.process,
|
|
2680
|
+
status: next ? ProcessStatus.next : ProcessStatus.done,
|
|
2681
|
+
payload: __assign({}, (interrupter ? { process: interrupter } : {}))
|
|
2682
|
+
});
|
|
2683
|
+
};
|
|
2684
|
+
End.calculateParams = function (scroller, workflow) {
|
|
2685
|
+
var adapter = scroller.adapter, viewport = scroller.viewport, items = scroller.buffer.items;
|
|
2686
|
+
if (adapter.wanted.firstVisible) {
|
|
2687
|
+
var item = viewport.getEdgeVisibleItem(items, exports.Direction.backward).item;
|
|
2688
|
+
if (!item || item.element !== adapter.firstVisible.element) {
|
|
2689
|
+
adapter.firstVisible = item ? item.get() : EMPTY_ITEM;
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
// the workflow can be interrupter on firstVisible change
|
|
2693
|
+
if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {
|
|
2694
|
+
var item = viewport.getEdgeVisibleItem(items, exports.Direction.forward).item;
|
|
2695
|
+
if (!item || item.element !== adapter.lastVisible.element) {
|
|
2696
|
+
adapter.lastVisible = item ? item.get() : EMPTY_ITEM;
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
};
|
|
2700
|
+
End.shouldContinueRun = function (scroller, error) {
|
|
2701
|
+
var _a = scroller.state, cycle = _a.cycle, fetch = _a.fetch, render = _a.render;
|
|
2702
|
+
// Adapter.reload or Adapter.reset
|
|
2703
|
+
if (cycle.interrupter) {
|
|
2704
|
+
return true;
|
|
2705
|
+
}
|
|
2706
|
+
// critical error
|
|
2707
|
+
if (error) {
|
|
2708
|
+
return false;
|
|
2709
|
+
}
|
|
2710
|
+
// Adapter.check
|
|
2711
|
+
if (fetch.simulate && fetch.isCheck && !render.noSize) {
|
|
2712
|
+
return true;
|
|
2713
|
+
}
|
|
2714
|
+
// Adapter.remove or Adapter.update with clip
|
|
2715
|
+
if (fetch.simulate && fetch.doRemove) {
|
|
2716
|
+
return true;
|
|
2717
|
+
}
|
|
2718
|
+
// common inner loop (App start, scroll, Adapter.clip) with full fetch
|
|
2719
|
+
if (!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
|
|
2720
|
+
return true;
|
|
2721
|
+
}
|
|
2722
|
+
return false;
|
|
2723
|
+
};
|
|
2724
|
+
return End;
|
|
2725
|
+
}(BaseProcessFactory(CommonProcess.end)));
|
|
2726
|
+
|
|
2655
2727
|
var Adjust = /** @class */ (function (_super) {
|
|
2656
2728
|
__extends(Adjust, _super);
|
|
2657
2729
|
function Adjust() {
|
|
2658
2730
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2659
2731
|
}
|
|
2660
2732
|
Adjust.run = function (scroller) {
|
|
2661
|
-
var workflow = scroller.workflow, viewport = scroller.viewport,
|
|
2662
|
-
|
|
2733
|
+
var workflow = scroller.workflow, viewport = scroller.viewport, scroll = scroller.state.scroll;
|
|
2734
|
+
scroll.positionBeforeAdjust = viewport.scrollPosition;
|
|
2663
2735
|
Adjust.setPaddings(scroller);
|
|
2664
|
-
|
|
2736
|
+
scroll.positionAfterAdjust = viewport.scrollPosition;
|
|
2665
2737
|
// scroll position adjustments
|
|
2666
2738
|
var position = Adjust.calculatePosition(scroller);
|
|
2739
|
+
// additional adjustment if the position can't be reached during the initial cycle
|
|
2740
|
+
Adjust.setAdditionalForwardPadding(scroller, position);
|
|
2667
2741
|
// set new position using animation frame
|
|
2668
2742
|
Adjust.setPosition(scroller, position, function () {
|
|
2669
2743
|
return workflow.call({
|
|
@@ -2696,7 +2770,8 @@
|
|
|
2696
2770
|
}
|
|
2697
2771
|
// lack of items case
|
|
2698
2772
|
var bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
|
|
2699
|
-
var
|
|
2773
|
+
var scrollSize = bwdSize + bufferSize + fwdSize;
|
|
2774
|
+
var viewportSizeDiff = viewport.getSize() - scrollSize;
|
|
2700
2775
|
if (viewportSizeDiff > 0) {
|
|
2701
2776
|
if (inverse) {
|
|
2702
2777
|
bwdSize += viewportSizeDiff;
|
|
@@ -2713,7 +2788,7 @@
|
|
|
2713
2788
|
scroller.logger.stat('after paddings adjustments');
|
|
2714
2789
|
};
|
|
2715
2790
|
Adjust.calculatePosition = function (scroller) {
|
|
2716
|
-
var viewport = scroller.viewport, buffer = scroller.buffer, _a = scroller.state, fetch = _a.fetch, render = _a.render,
|
|
2791
|
+
var viewport = scroller.viewport, buffer = scroller.buffer, _a = scroller.state, fetch = _a.fetch, render = _a.render, scroll = _a.scroll;
|
|
2717
2792
|
var position = viewport.paddings.backward.size;
|
|
2718
2793
|
// increase the position to meet the expectation of the first visible item
|
|
2719
2794
|
if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
|
|
@@ -2736,8 +2811,8 @@
|
|
|
2736
2811
|
});
|
|
2737
2812
|
}
|
|
2738
2813
|
// slow fetch/render case
|
|
2739
|
-
if (
|
|
2740
|
-
var diff = render.positionBefore -
|
|
2814
|
+
if (scroll.positionBeforeAsync !== null) {
|
|
2815
|
+
var diff = render.positionBefore - scroll.positionBeforeAsync;
|
|
2741
2816
|
if (diff !== 0) {
|
|
2742
2817
|
scroller.logger.log("shift position due to fetch-render difference (" + diff + ")");
|
|
2743
2818
|
position += diff;
|
|
@@ -2749,23 +2824,47 @@
|
|
|
2749
2824
|
}
|
|
2750
2825
|
return Math.round(position);
|
|
2751
2826
|
};
|
|
2827
|
+
Adjust.setAdditionalForwardPadding = function (scroller, position) {
|
|
2828
|
+
var viewport = scroller.viewport, buffer = scroller.buffer, cycle = scroller.state.cycle;
|
|
2829
|
+
if (!cycle.isInitial || !End.shouldContinueRun(scroller, null)) {
|
|
2830
|
+
return;
|
|
2831
|
+
}
|
|
2832
|
+
var diff = position - viewport.getMaxScrollPosition();
|
|
2833
|
+
if (diff <= 0) {
|
|
2834
|
+
return;
|
|
2835
|
+
}
|
|
2836
|
+
var last = buffer.getLastVisibleItem();
|
|
2837
|
+
if (!last) {
|
|
2838
|
+
return;
|
|
2839
|
+
}
|
|
2840
|
+
var size = 0;
|
|
2841
|
+
var index = last.$index + 1;
|
|
2842
|
+
while (size <= diff && index <= buffer.absMaxIndex) {
|
|
2843
|
+
size += buffer.getSizeByIndex(index++);
|
|
2844
|
+
}
|
|
2845
|
+
var shift = Math.min(size, diff);
|
|
2846
|
+
if (shift) {
|
|
2847
|
+
viewport.paddings.forward.size += shift;
|
|
2848
|
+
scroller.logger.log("increase fwd padding due to lack of items (" + diff + " -> " + shift + ")");
|
|
2849
|
+
}
|
|
2850
|
+
};
|
|
2752
2851
|
Adjust.setPosition = function (scroller, position, done) {
|
|
2753
|
-
var
|
|
2754
|
-
if (!
|
|
2852
|
+
var scroll = scroller.state.scroll, viewport = scroller.viewport, routines = scroller.routines;
|
|
2853
|
+
if (!scroll.hasPositionChanged(position)) {
|
|
2755
2854
|
return done();
|
|
2756
2855
|
}
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
2761
|
-
var inertiaDiff =
|
|
2856
|
+
scroll.syntheticPosition = position;
|
|
2857
|
+
scroll.syntheticFulfill = false;
|
|
2858
|
+
scroll.cancelAnimation = routines.animate(function () {
|
|
2859
|
+
scroll.cancelAnimation = null;
|
|
2860
|
+
var inertiaDiff = scroll.positionAfterAdjust - viewport.scrollPosition;
|
|
2762
2861
|
var diffLog = '';
|
|
2763
2862
|
if (inertiaDiff > 0) {
|
|
2764
2863
|
position -= inertiaDiff;
|
|
2765
|
-
|
|
2864
|
+
scroll.syntheticPosition = position;
|
|
2766
2865
|
diffLog = " (-" + inertiaDiff + ")";
|
|
2767
2866
|
}
|
|
2768
|
-
|
|
2867
|
+
scroll.syntheticFulfill = true;
|
|
2769
2868
|
viewport.scrollPosition = position;
|
|
2770
2869
|
scroller.logger.stat('after scroll adjustment' + diffLog);
|
|
2771
2870
|
done();
|
|
@@ -2922,76 +3021,6 @@
|
|
|
2922
3021
|
return Clip;
|
|
2923
3022
|
}(BaseProcessFactory(CommonProcess.clip)));
|
|
2924
3023
|
|
|
2925
|
-
var isInterrupted = function (_a) {
|
|
2926
|
-
var call = _a.call;
|
|
2927
|
-
return !!call.interrupted;
|
|
2928
|
-
};
|
|
2929
|
-
var End = /** @class */ (function (_super) {
|
|
2930
|
-
__extends(End, _super);
|
|
2931
|
-
function End() {
|
|
2932
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
2933
|
-
}
|
|
2934
|
-
End.run = function (scroller, _a) {
|
|
2935
|
-
var _b = _a === void 0 ? {} : _a, error = _b.error;
|
|
2936
|
-
var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
|
|
2937
|
-
if (!error && !interrupter) {
|
|
2938
|
-
// set out params accessible via Adapter
|
|
2939
|
-
End.calculateParams(scroller, workflow);
|
|
2940
|
-
}
|
|
2941
|
-
// explicit interruption for we don't want to go through the inner loop finalizing
|
|
2942
|
-
if (isInterrupted(workflow)) {
|
|
2943
|
-
workflow.call({ process: End.process, status: ProcessStatus.done });
|
|
2944
|
-
return;
|
|
2945
|
-
}
|
|
2946
|
-
var next = End.finalizeInnerLoop(scroller, error);
|
|
2947
|
-
workflow.call({
|
|
2948
|
-
process: End.process,
|
|
2949
|
-
status: next ? ProcessStatus.next : ProcessStatus.done,
|
|
2950
|
-
payload: __assign({}, (interrupter ? { process: interrupter } : {}))
|
|
2951
|
-
});
|
|
2952
|
-
};
|
|
2953
|
-
End.calculateParams = function (scroller, workflow) {
|
|
2954
|
-
var adapter = scroller.adapter, viewport = scroller.viewport, items = scroller.buffer.items;
|
|
2955
|
-
if (adapter.wanted.firstVisible) {
|
|
2956
|
-
var item = viewport.getEdgeVisibleItem(items, exports.Direction.backward).item;
|
|
2957
|
-
if (!item || item.element !== adapter.firstVisible.element) {
|
|
2958
|
-
adapter.firstVisible = item ? item.get() : EMPTY_ITEM;
|
|
2959
|
-
}
|
|
2960
|
-
}
|
|
2961
|
-
// the workflow can be interrupter on firstVisible change
|
|
2962
|
-
if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {
|
|
2963
|
-
var item = viewport.getEdgeVisibleItem(items, exports.Direction.forward).item;
|
|
2964
|
-
if (!item || item.element !== adapter.lastVisible.element) {
|
|
2965
|
-
adapter.lastVisible = item ? item.get() : EMPTY_ITEM;
|
|
2966
|
-
}
|
|
2967
|
-
}
|
|
2968
|
-
};
|
|
2969
|
-
End.finalizeInnerLoop = function (scroller, error) {
|
|
2970
|
-
var state = scroller.state, _a = scroller.state, cycle = _a.cycle, clip = _a.clip, fetch = _a.fetch;
|
|
2971
|
-
var next = !!cycle.interrupter || (error ? false : End.getNext(scroller));
|
|
2972
|
-
cycle.innerLoop.isInitial = false;
|
|
2973
|
-
fetch.stopSimulate();
|
|
2974
|
-
clip.reset(true);
|
|
2975
|
-
state.endInnerLoop();
|
|
2976
|
-
return next;
|
|
2977
|
-
};
|
|
2978
|
-
End.getNext = function (scroller) {
|
|
2979
|
-
var _a = scroller.state, fetch = _a.fetch, render = _a.render;
|
|
2980
|
-
if (fetch.simulate && fetch.isCheck && !render.noSize) { // Adapter.check
|
|
2981
|
-
return true;
|
|
2982
|
-
}
|
|
2983
|
-
if (fetch.simulate && fetch.doRemove) { // Adapter.remove or Adapter.update with clip
|
|
2984
|
-
return true;
|
|
2985
|
-
}
|
|
2986
|
-
if ( // common inner loop (App start, Scroll, Adapter.clip) accompanied by fetch
|
|
2987
|
-
!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
|
|
2988
|
-
return true;
|
|
2989
|
-
}
|
|
2990
|
-
return false;
|
|
2991
|
-
};
|
|
2992
|
-
return End;
|
|
2993
|
-
}(BaseProcessFactory(CommonProcess.end)));
|
|
2994
|
-
|
|
2995
3024
|
var Logger = /** @class */ (function () {
|
|
2996
3025
|
function Logger(scroller, packageInfo, adapter) {
|
|
2997
3026
|
var _this = this;
|
|
@@ -3442,7 +3471,7 @@
|
|
|
3442
3471
|
this.setOffset();
|
|
3443
3472
|
this.paddings.reset(this.getSize(), startIndex, this.offset);
|
|
3444
3473
|
this.scrollPosition = this.paddings.backward.size || 0;
|
|
3445
|
-
this.state.
|
|
3474
|
+
this.state.scroll.reset();
|
|
3446
3475
|
};
|
|
3447
3476
|
Viewport.prototype.setPosition = function (value) {
|
|
3448
3477
|
var oldPosition = this.scrollPosition;
|
|
@@ -3473,6 +3502,9 @@
|
|
|
3473
3502
|
Viewport.prototype.getScrollableSize = function () {
|
|
3474
3503
|
return this.routines.getSize(this.element);
|
|
3475
3504
|
};
|
|
3505
|
+
Viewport.prototype.getMaxScrollPosition = function () {
|
|
3506
|
+
return this.getScrollableSize() - this.getSize();
|
|
3507
|
+
};
|
|
3476
3508
|
Viewport.prototype.getBufferPadding = function () {
|
|
3477
3509
|
return this.getSize() * this.settings.padding;
|
|
3478
3510
|
};
|
|
@@ -4382,6 +4414,7 @@
|
|
|
4382
4414
|
configurable: true
|
|
4383
4415
|
});
|
|
4384
4416
|
InnerLoopModel.prototype.done = function () {
|
|
4417
|
+
this.isInitial = false;
|
|
4385
4418
|
this.count++;
|
|
4386
4419
|
this.total++;
|
|
4387
4420
|
this.busy.set(false);
|
|
@@ -4402,7 +4435,7 @@
|
|
|
4402
4435
|
this.innerLoop = new InnerLoopModel(loopCount);
|
|
4403
4436
|
this.interrupter = null;
|
|
4404
4437
|
this.busy = new Reactive(false);
|
|
4405
|
-
this.
|
|
4438
|
+
this.end(cycleCount);
|
|
4406
4439
|
}
|
|
4407
4440
|
Object.defineProperty(WorkflowCycleModel.prototype, "loopId", {
|
|
4408
4441
|
get: function () {
|
|
@@ -4418,11 +4451,6 @@
|
|
|
4418
4451
|
enumerable: false,
|
|
4419
4452
|
configurable: true
|
|
4420
4453
|
});
|
|
4421
|
-
WorkflowCycleModel.prototype.done = function (count) {
|
|
4422
|
-
this.count = count;
|
|
4423
|
-
this.isInitial = false;
|
|
4424
|
-
this.busy.set(false);
|
|
4425
|
-
};
|
|
4426
4454
|
WorkflowCycleModel.prototype.start = function (isInitial, initiator) {
|
|
4427
4455
|
this.isInitial = isInitial;
|
|
4428
4456
|
this.initiator = initiator;
|
|
@@ -4431,6 +4459,11 @@
|
|
|
4431
4459
|
this.interrupter = null;
|
|
4432
4460
|
this.busy.set(true);
|
|
4433
4461
|
};
|
|
4462
|
+
WorkflowCycleModel.prototype.end = function (count) {
|
|
4463
|
+
this.count = count;
|
|
4464
|
+
this.isInitial = false;
|
|
4465
|
+
this.busy.set(false);
|
|
4466
|
+
};
|
|
4434
4467
|
WorkflowCycleModel.prototype.dispose = function (forever) {
|
|
4435
4468
|
if (forever) {
|
|
4436
4469
|
// otherwise the value will be persisted during re-instantiation
|
|
@@ -4630,11 +4663,11 @@
|
|
|
4630
4663
|
return RenderModel;
|
|
4631
4664
|
}());
|
|
4632
4665
|
|
|
4633
|
-
var
|
|
4634
|
-
function
|
|
4666
|
+
var ScrollModel = /** @class */ (function () {
|
|
4667
|
+
function ScrollModel() {
|
|
4635
4668
|
this.reset();
|
|
4636
4669
|
}
|
|
4637
|
-
|
|
4670
|
+
ScrollModel.prototype.reset = function () {
|
|
4638
4671
|
this.previous = null;
|
|
4639
4672
|
this.current = null;
|
|
4640
4673
|
this.syntheticPosition = null;
|
|
@@ -4644,7 +4677,7 @@
|
|
|
4644
4677
|
this.positionAfterAdjust = null;
|
|
4645
4678
|
this.stop();
|
|
4646
4679
|
};
|
|
4647
|
-
|
|
4680
|
+
ScrollModel.prototype.stop = function () {
|
|
4648
4681
|
if (this.scrollTimer) {
|
|
4649
4682
|
clearTimeout(this.scrollTimer);
|
|
4650
4683
|
this.scrollTimer = null;
|
|
@@ -4654,12 +4687,12 @@
|
|
|
4654
4687
|
this.cancelAnimation = null;
|
|
4655
4688
|
}
|
|
4656
4689
|
};
|
|
4657
|
-
|
|
4690
|
+
ScrollModel.prototype.hasPositionChanged = function (position) {
|
|
4658
4691
|
var before = this.positionBeforeAdjust;
|
|
4659
4692
|
var after = this.positionAfterAdjust;
|
|
4660
4693
|
return before === null || before !== position || after === null || after !== position;
|
|
4661
4694
|
};
|
|
4662
|
-
return
|
|
4695
|
+
return ScrollModel;
|
|
4663
4696
|
}());
|
|
4664
4697
|
|
|
4665
4698
|
var State = /** @class */ (function () {
|
|
@@ -4671,7 +4704,7 @@
|
|
|
4671
4704
|
this.fetch = new FetchModel(settings.directionPriority);
|
|
4672
4705
|
this.clip = new ClipModel();
|
|
4673
4706
|
this.render = new RenderModel();
|
|
4674
|
-
this.
|
|
4707
|
+
this.scroll = new ScrollModel();
|
|
4675
4708
|
}
|
|
4676
4709
|
Object.defineProperty(State.prototype, "time", {
|
|
4677
4710
|
get: function () {
|
|
@@ -4680,20 +4713,14 @@
|
|
|
4680
4713
|
enumerable: false,
|
|
4681
4714
|
configurable: true
|
|
4682
4715
|
});
|
|
4683
|
-
State.prototype.
|
|
4684
|
-
|
|
4685
|
-
|
|
4686
|
-
|
|
4687
|
-
|
|
4688
|
-
}
|
|
4689
|
-
if (render.cancel) {
|
|
4690
|
-
render.cancel();
|
|
4691
|
-
render.cancel = null;
|
|
4692
|
-
}
|
|
4693
|
-
cycle.innerLoop.done();
|
|
4716
|
+
State.prototype.startWorkflowCycle = function (isInitial, initiator) {
|
|
4717
|
+
this.cycle.start(isInitial, initiator);
|
|
4718
|
+
};
|
|
4719
|
+
State.prototype.endWorkflowCycle = function (count) {
|
|
4720
|
+
this.cycle.end(count);
|
|
4694
4721
|
};
|
|
4695
4722
|
State.prototype.startInnerLoop = function () {
|
|
4696
|
-
var _a = this, cycle = _a.cycle, scroll = _a.
|
|
4723
|
+
var _a = this, cycle = _a.cycle, scroll = _a.scroll, fetch = _a.fetch, render = _a.render, clip = _a.clip;
|
|
4697
4724
|
cycle.innerLoop.start();
|
|
4698
4725
|
scroll.positionBeforeAsync = null;
|
|
4699
4726
|
if (!fetch.simulate) {
|
|
@@ -4706,10 +4733,24 @@
|
|
|
4706
4733
|
doRender: fetch.simulate && fetch.items.length > 0
|
|
4707
4734
|
} : {}));
|
|
4708
4735
|
};
|
|
4736
|
+
State.prototype.endInnerLoop = function () {
|
|
4737
|
+
var _a = this, fetch = _a.fetch, clip = _a.clip, render = _a.render, cycle = _a.cycle;
|
|
4738
|
+
fetch.stopSimulate();
|
|
4739
|
+
clip.reset(true);
|
|
4740
|
+
if (fetch.cancel) {
|
|
4741
|
+
fetch.cancel();
|
|
4742
|
+
fetch.cancel = null;
|
|
4743
|
+
}
|
|
4744
|
+
if (render.cancel) {
|
|
4745
|
+
render.cancel();
|
|
4746
|
+
render.cancel = null;
|
|
4747
|
+
}
|
|
4748
|
+
cycle.innerLoop.done();
|
|
4749
|
+
};
|
|
4709
4750
|
State.prototype.dispose = function () {
|
|
4751
|
+
this.scroll.stop();
|
|
4710
4752
|
this.cycle.dispose();
|
|
4711
4753
|
this.endInnerLoop();
|
|
4712
|
-
this.scrollState.stop();
|
|
4713
4754
|
};
|
|
4714
4755
|
return State;
|
|
4715
4756
|
}());
|
|
@@ -5584,7 +5625,7 @@
|
|
|
5584
5625
|
var _a = this.scroller, state = _a.state, logger = _a.logger;
|
|
5585
5626
|
this.cyclesDone++;
|
|
5586
5627
|
logger.logCycle(false);
|
|
5587
|
-
state.
|
|
5628
|
+
state.endWorkflowCycle(this.cyclesDone + 1);
|
|
5588
5629
|
this.finalize();
|
|
5589
5630
|
};
|
|
5590
5631
|
Workflow.prototype.dispose = function () {
|