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) 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;
|
|
@@ -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
|
}
|
|
@@ -2371,9 +2371,9 @@ var Fetch = /** @class */ (function (_super) {
|
|
|
2371
2371
|
}
|
|
2372
2372
|
}
|
|
2373
2373
|
else {
|
|
2374
|
-
var _b = scroller.state,
|
|
2375
|
-
if (
|
|
2376
|
-
|
|
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;
|
|
2377
2377
|
}
|
|
2378
2378
|
fetch_1.cancel = function () {
|
|
2379
2379
|
box.success = function () { return null; };
|
|
@@ -2505,10 +2505,10 @@ var Render = /** @class */ (function (_super) {
|
|
|
2505
2505
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2506
2506
|
}
|
|
2507
2507
|
Render.run = function (scroller) {
|
|
2508
|
-
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;
|
|
2509
2509
|
scroller.logger.stat('before new items render');
|
|
2510
|
-
if (
|
|
2511
|
-
|
|
2510
|
+
if (scroll.positionBeforeAsync === null) {
|
|
2511
|
+
scroll.positionBeforeAsync = viewport.scrollPosition;
|
|
2512
2512
|
}
|
|
2513
2513
|
render.cancel = routines.render(function () {
|
|
2514
2514
|
render.cancel = null;
|
|
@@ -2560,18 +2560,92 @@ var Render = /** @class */ (function (_super) {
|
|
|
2560
2560
|
return Render;
|
|
2561
2561
|
}(BaseProcessFactory(CommonProcess.render)));
|
|
2562
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
|
+
|
|
2563
2635
|
var Adjust = /** @class */ (function (_super) {
|
|
2564
2636
|
__extends(Adjust, _super);
|
|
2565
2637
|
function Adjust() {
|
|
2566
2638
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2567
2639
|
}
|
|
2568
2640
|
Adjust.run = function (scroller) {
|
|
2569
|
-
var workflow = scroller.workflow, viewport = scroller.viewport,
|
|
2570
|
-
|
|
2641
|
+
var workflow = scroller.workflow, viewport = scroller.viewport, scroll = scroller.state.scroll;
|
|
2642
|
+
scroll.positionBeforeAdjust = viewport.scrollPosition;
|
|
2571
2643
|
Adjust.setPaddings(scroller);
|
|
2572
|
-
|
|
2644
|
+
scroll.positionAfterAdjust = viewport.scrollPosition;
|
|
2573
2645
|
// scroll position adjustments
|
|
2574
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);
|
|
2575
2649
|
// set new position using animation frame
|
|
2576
2650
|
Adjust.setPosition(scroller, position, function () {
|
|
2577
2651
|
return workflow.call({
|
|
@@ -2604,7 +2678,8 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2604
2678
|
}
|
|
2605
2679
|
// lack of items case
|
|
2606
2680
|
var bufferSize = viewport.getScrollableSize() - forward.size - backward.size;
|
|
2607
|
-
var
|
|
2681
|
+
var scrollSize = bwdSize + bufferSize + fwdSize;
|
|
2682
|
+
var viewportSizeDiff = viewport.getSize() - scrollSize;
|
|
2608
2683
|
if (viewportSizeDiff > 0) {
|
|
2609
2684
|
if (inverse) {
|
|
2610
2685
|
bwdSize += viewportSizeDiff;
|
|
@@ -2621,7 +2696,7 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2621
2696
|
scroller.logger.stat('after paddings adjustments');
|
|
2622
2697
|
};
|
|
2623
2698
|
Adjust.calculatePosition = function (scroller) {
|
|
2624
|
-
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;
|
|
2625
2700
|
var position = viewport.paddings.backward.size;
|
|
2626
2701
|
// increase the position to meet the expectation of the first visible item
|
|
2627
2702
|
if (!isNaN(fetch.firstVisible.index) && !isNaN(buffer.firstIndex)) {
|
|
@@ -2644,8 +2719,8 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2644
2719
|
});
|
|
2645
2720
|
}
|
|
2646
2721
|
// slow fetch/render case
|
|
2647
|
-
if (
|
|
2648
|
-
var diff = render.positionBefore -
|
|
2722
|
+
if (scroll.positionBeforeAsync !== null) {
|
|
2723
|
+
var diff = render.positionBefore - scroll.positionBeforeAsync;
|
|
2649
2724
|
if (diff !== 0) {
|
|
2650
2725
|
scroller.logger.log("shift position due to fetch-render difference (" + diff + ")");
|
|
2651
2726
|
position += diff;
|
|
@@ -2657,23 +2732,47 @@ var Adjust = /** @class */ (function (_super) {
|
|
|
2657
2732
|
}
|
|
2658
2733
|
return Math.round(position);
|
|
2659
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
|
+
};
|
|
2660
2759
|
Adjust.setPosition = function (scroller, position, done) {
|
|
2661
|
-
var
|
|
2662
|
-
if (!
|
|
2760
|
+
var scroll = scroller.state.scroll, viewport = scroller.viewport, routines = scroller.routines;
|
|
2761
|
+
if (!scroll.hasPositionChanged(position)) {
|
|
2663
2762
|
return done();
|
|
2664
2763
|
}
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
var inertiaDiff =
|
|
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;
|
|
2670
2769
|
var diffLog = '';
|
|
2671
2770
|
if (inertiaDiff > 0) {
|
|
2672
2771
|
position -= inertiaDiff;
|
|
2673
|
-
|
|
2772
|
+
scroll.syntheticPosition = position;
|
|
2674
2773
|
diffLog = " (-" + inertiaDiff + ")";
|
|
2675
2774
|
}
|
|
2676
|
-
|
|
2775
|
+
scroll.syntheticFulfill = true;
|
|
2677
2776
|
viewport.scrollPosition = position;
|
|
2678
2777
|
scroller.logger.stat('after scroll adjustment' + diffLog);
|
|
2679
2778
|
done();
|
|
@@ -2830,76 +2929,6 @@ var Clip = /** @class */ (function (_super) {
|
|
|
2830
2929
|
return Clip;
|
|
2831
2930
|
}(BaseProcessFactory(CommonProcess.clip)));
|
|
2832
2931
|
|
|
2833
|
-
var isInterrupted = function (_a) {
|
|
2834
|
-
var call = _a.call;
|
|
2835
|
-
return !!call.interrupted;
|
|
2836
|
-
};
|
|
2837
|
-
var End = /** @class */ (function (_super) {
|
|
2838
|
-
__extends(End, _super);
|
|
2839
|
-
function End() {
|
|
2840
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
2841
|
-
}
|
|
2842
|
-
End.run = function (scroller, _a) {
|
|
2843
|
-
var _b = _a === void 0 ? {} : _a, error = _b.error;
|
|
2844
|
-
var workflow = scroller.workflow, interrupter = scroller.state.cycle.interrupter;
|
|
2845
|
-
if (!error && !interrupter) {
|
|
2846
|
-
// set out params accessible via Adapter
|
|
2847
|
-
End.calculateParams(scroller, workflow);
|
|
2848
|
-
}
|
|
2849
|
-
// explicit interruption for we don't want to go through the inner loop finalizing
|
|
2850
|
-
if (isInterrupted(workflow)) {
|
|
2851
|
-
workflow.call({ process: End.process, status: ProcessStatus.done });
|
|
2852
|
-
return;
|
|
2853
|
-
}
|
|
2854
|
-
var next = End.finalizeInnerLoop(scroller, error);
|
|
2855
|
-
workflow.call({
|
|
2856
|
-
process: End.process,
|
|
2857
|
-
status: next ? ProcessStatus.next : ProcessStatus.done,
|
|
2858
|
-
payload: __assign({}, (interrupter ? { process: interrupter } : {}))
|
|
2859
|
-
});
|
|
2860
|
-
};
|
|
2861
|
-
End.calculateParams = function (scroller, workflow) {
|
|
2862
|
-
var adapter = scroller.adapter, viewport = scroller.viewport, items = scroller.buffer.items;
|
|
2863
|
-
if (adapter.wanted.firstVisible) {
|
|
2864
|
-
var item = viewport.getEdgeVisibleItem(items, Direction.backward).item;
|
|
2865
|
-
if (!item || item.element !== adapter.firstVisible.element) {
|
|
2866
|
-
adapter.firstVisible = item ? item.get() : EMPTY_ITEM;
|
|
2867
|
-
}
|
|
2868
|
-
}
|
|
2869
|
-
// the workflow can be interrupter on firstVisible change
|
|
2870
|
-
if (adapter.wanted.lastVisible && !isInterrupted(workflow)) {
|
|
2871
|
-
var item = viewport.getEdgeVisibleItem(items, Direction.forward).item;
|
|
2872
|
-
if (!item || item.element !== adapter.lastVisible.element) {
|
|
2873
|
-
adapter.lastVisible = item ? item.get() : EMPTY_ITEM;
|
|
2874
|
-
}
|
|
2875
|
-
}
|
|
2876
|
-
};
|
|
2877
|
-
End.finalizeInnerLoop = function (scroller, error) {
|
|
2878
|
-
var state = scroller.state, _a = scroller.state, cycle = _a.cycle, clip = _a.clip, fetch = _a.fetch;
|
|
2879
|
-
var next = !!cycle.interrupter || (error ? false : End.getNext(scroller));
|
|
2880
|
-
cycle.innerLoop.isInitial = false;
|
|
2881
|
-
fetch.stopSimulate();
|
|
2882
|
-
clip.reset(true);
|
|
2883
|
-
state.endInnerLoop();
|
|
2884
|
-
return next;
|
|
2885
|
-
};
|
|
2886
|
-
End.getNext = function (scroller) {
|
|
2887
|
-
var _a = scroller.state, fetch = _a.fetch, render = _a.render;
|
|
2888
|
-
if (fetch.simulate && fetch.isCheck && !render.noSize) { // Adapter.check
|
|
2889
|
-
return true;
|
|
2890
|
-
}
|
|
2891
|
-
if (fetch.simulate && fetch.doRemove) { // Adapter.remove or Adapter.update with clip
|
|
2892
|
-
return true;
|
|
2893
|
-
}
|
|
2894
|
-
if ( // common inner loop (App start, Scroll, Adapter.clip) accompanied by fetch
|
|
2895
|
-
!fetch.simulate && ((fetch.hasNewItems && !render.noSize) || fetch.hasAnotherPack)) {
|
|
2896
|
-
return true;
|
|
2897
|
-
}
|
|
2898
|
-
return false;
|
|
2899
|
-
};
|
|
2900
|
-
return End;
|
|
2901
|
-
}(BaseProcessFactory(CommonProcess.end)));
|
|
2902
|
-
|
|
2903
2932
|
var Logger = /** @class */ (function () {
|
|
2904
2933
|
function Logger(scroller, packageInfo, adapter) {
|
|
2905
2934
|
var _this = this;
|
|
@@ -3350,7 +3379,7 @@ var Viewport = /** @class */ (function () {
|
|
|
3350
3379
|
this.setOffset();
|
|
3351
3380
|
this.paddings.reset(this.getSize(), startIndex, this.offset);
|
|
3352
3381
|
this.scrollPosition = this.paddings.backward.size || 0;
|
|
3353
|
-
this.state.
|
|
3382
|
+
this.state.scroll.reset();
|
|
3354
3383
|
};
|
|
3355
3384
|
Viewport.prototype.setPosition = function (value) {
|
|
3356
3385
|
var oldPosition = this.scrollPosition;
|
|
@@ -3381,6 +3410,9 @@ var Viewport = /** @class */ (function () {
|
|
|
3381
3410
|
Viewport.prototype.getScrollableSize = function () {
|
|
3382
3411
|
return this.routines.getSize(this.element);
|
|
3383
3412
|
};
|
|
3413
|
+
Viewport.prototype.getMaxScrollPosition = function () {
|
|
3414
|
+
return this.getScrollableSize() - this.getSize();
|
|
3415
|
+
};
|
|
3384
3416
|
Viewport.prototype.getBufferPadding = function () {
|
|
3385
3417
|
return this.getSize() * this.settings.padding;
|
|
3386
3418
|
};
|
|
@@ -4290,6 +4322,7 @@ var InnerLoopModel = /** @class */ (function () {
|
|
|
4290
4322
|
configurable: true
|
|
4291
4323
|
});
|
|
4292
4324
|
InnerLoopModel.prototype.done = function () {
|
|
4325
|
+
this.isInitial = false;
|
|
4293
4326
|
this.count++;
|
|
4294
4327
|
this.total++;
|
|
4295
4328
|
this.busy.set(false);
|
|
@@ -4310,7 +4343,7 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
4310
4343
|
this.innerLoop = new InnerLoopModel(loopCount);
|
|
4311
4344
|
this.interrupter = null;
|
|
4312
4345
|
this.busy = new Reactive(false);
|
|
4313
|
-
this.
|
|
4346
|
+
this.end(cycleCount);
|
|
4314
4347
|
}
|
|
4315
4348
|
Object.defineProperty(WorkflowCycleModel.prototype, "loopId", {
|
|
4316
4349
|
get: function () {
|
|
@@ -4326,11 +4359,6 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
4326
4359
|
enumerable: false,
|
|
4327
4360
|
configurable: true
|
|
4328
4361
|
});
|
|
4329
|
-
WorkflowCycleModel.prototype.done = function (count) {
|
|
4330
|
-
this.count = count;
|
|
4331
|
-
this.isInitial = false;
|
|
4332
|
-
this.busy.set(false);
|
|
4333
|
-
};
|
|
4334
4362
|
WorkflowCycleModel.prototype.start = function (isInitial, initiator) {
|
|
4335
4363
|
this.isInitial = isInitial;
|
|
4336
4364
|
this.initiator = initiator;
|
|
@@ -4339,6 +4367,11 @@ var WorkflowCycleModel = /** @class */ (function () {
|
|
|
4339
4367
|
this.interrupter = null;
|
|
4340
4368
|
this.busy.set(true);
|
|
4341
4369
|
};
|
|
4370
|
+
WorkflowCycleModel.prototype.end = function (count) {
|
|
4371
|
+
this.count = count;
|
|
4372
|
+
this.isInitial = false;
|
|
4373
|
+
this.busy.set(false);
|
|
4374
|
+
};
|
|
4342
4375
|
WorkflowCycleModel.prototype.dispose = function (forever) {
|
|
4343
4376
|
if (forever) {
|
|
4344
4377
|
// otherwise the value will be persisted during re-instantiation
|
|
@@ -4538,11 +4571,11 @@ var RenderModel = /** @class */ (function () {
|
|
|
4538
4571
|
return RenderModel;
|
|
4539
4572
|
}());
|
|
4540
4573
|
|
|
4541
|
-
var
|
|
4542
|
-
function
|
|
4574
|
+
var ScrollModel = /** @class */ (function () {
|
|
4575
|
+
function ScrollModel() {
|
|
4543
4576
|
this.reset();
|
|
4544
4577
|
}
|
|
4545
|
-
|
|
4578
|
+
ScrollModel.prototype.reset = function () {
|
|
4546
4579
|
this.previous = null;
|
|
4547
4580
|
this.current = null;
|
|
4548
4581
|
this.syntheticPosition = null;
|
|
@@ -4552,7 +4585,7 @@ var ScrollState = /** @class */ (function () {
|
|
|
4552
4585
|
this.positionAfterAdjust = null;
|
|
4553
4586
|
this.stop();
|
|
4554
4587
|
};
|
|
4555
|
-
|
|
4588
|
+
ScrollModel.prototype.stop = function () {
|
|
4556
4589
|
if (this.scrollTimer) {
|
|
4557
4590
|
clearTimeout(this.scrollTimer);
|
|
4558
4591
|
this.scrollTimer = null;
|
|
@@ -4562,12 +4595,12 @@ var ScrollState = /** @class */ (function () {
|
|
|
4562
4595
|
this.cancelAnimation = null;
|
|
4563
4596
|
}
|
|
4564
4597
|
};
|
|
4565
|
-
|
|
4598
|
+
ScrollModel.prototype.hasPositionChanged = function (position) {
|
|
4566
4599
|
var before = this.positionBeforeAdjust;
|
|
4567
4600
|
var after = this.positionAfterAdjust;
|
|
4568
4601
|
return before === null || before !== position || after === null || after !== position;
|
|
4569
4602
|
};
|
|
4570
|
-
return
|
|
4603
|
+
return ScrollModel;
|
|
4571
4604
|
}());
|
|
4572
4605
|
|
|
4573
4606
|
var State = /** @class */ (function () {
|
|
@@ -4579,7 +4612,7 @@ var State = /** @class */ (function () {
|
|
|
4579
4612
|
this.fetch = new FetchModel(settings.directionPriority);
|
|
4580
4613
|
this.clip = new ClipModel();
|
|
4581
4614
|
this.render = new RenderModel();
|
|
4582
|
-
this.
|
|
4615
|
+
this.scroll = new ScrollModel();
|
|
4583
4616
|
}
|
|
4584
4617
|
Object.defineProperty(State.prototype, "time", {
|
|
4585
4618
|
get: function () {
|
|
@@ -4588,20 +4621,14 @@ var State = /** @class */ (function () {
|
|
|
4588
4621
|
enumerable: false,
|
|
4589
4622
|
configurable: true
|
|
4590
4623
|
});
|
|
4591
|
-
State.prototype.
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
}
|
|
4597
|
-
if (render.cancel) {
|
|
4598
|
-
render.cancel();
|
|
4599
|
-
render.cancel = null;
|
|
4600
|
-
}
|
|
4601
|
-
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);
|
|
4602
4629
|
};
|
|
4603
4630
|
State.prototype.startInnerLoop = function () {
|
|
4604
|
-
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;
|
|
4605
4632
|
cycle.innerLoop.start();
|
|
4606
4633
|
scroll.positionBeforeAsync = null;
|
|
4607
4634
|
if (!fetch.simulate) {
|
|
@@ -4614,10 +4641,24 @@ var State = /** @class */ (function () {
|
|
|
4614
4641
|
doRender: fetch.simulate && fetch.items.length > 0
|
|
4615
4642
|
} : {}));
|
|
4616
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
|
+
};
|
|
4617
4658
|
State.prototype.dispose = function () {
|
|
4659
|
+
this.scroll.stop();
|
|
4618
4660
|
this.cycle.dispose();
|
|
4619
4661
|
this.endInnerLoop();
|
|
4620
|
-
this.scrollState.stop();
|
|
4621
4662
|
};
|
|
4622
4663
|
return State;
|
|
4623
4664
|
}());
|
|
@@ -5492,7 +5533,7 @@ var Workflow = /** @class */ (function () {
|
|
|
5492
5533
|
var _a = this.scroller, state = _a.state, logger = _a.logger;
|
|
5493
5534
|
this.cyclesDone++;
|
|
5494
5535
|
logger.logCycle(false);
|
|
5495
|
-
state.
|
|
5536
|
+
state.endWorkflowCycle(this.cyclesDone + 1);
|
|
5496
5537
|
this.finalize();
|
|
5497
5538
|
};
|
|
5498
5539
|
Workflow.prototype.dispose = function () {
|