vscroll 1.4.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +17 -16
- package/dist/bundles/vscroll.esm5.js +403 -321
- 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 +310 -244
- 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 +404 -322
- 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/domRoutines.js +101 -66
- package/dist/esm2015/classes/domRoutines.js.map +1 -1
- package/dist/esm2015/classes/logger.js +2 -2
- package/dist/esm2015/classes/logger.js.map +1 -1
- package/dist/esm2015/classes/paddings.js +5 -5
- 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/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 +13 -22
- package/dist/esm2015/classes/viewport.js.map +1 -1
- package/dist/esm2015/index.js.map +1 -1
- package/dist/esm2015/interfaces/index.js.map +1 -1
- package/dist/esm2015/interfaces/routines.js +2 -0
- package/dist/esm2015/interfaces/routines.js.map +1 -0
- package/dist/esm2015/interfaces/state.js.map +1 -1
- package/dist/esm2015/interfaces/workflow.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 +6 -6
- 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/scroller.js +4 -4
- package/dist/esm2015/scroller.js.map +1 -1
- package/dist/esm2015/version.js +1 -1
- package/dist/esm2015/version.js.map +1 -1
- package/dist/esm2015/workflow.js +9 -8
- package/dist/esm2015/workflow.js.map +1 -1
- package/dist/esm5/classes/adapter.js +4 -4
- package/dist/esm5/classes/adapter.js.map +1 -1
- package/dist/esm5/classes/buffer/cache.js +1 -1
- package/dist/esm5/classes/buffer/cache.js.map +1 -1
- package/dist/esm5/classes/buffer/checkCall.js +4 -4
- package/dist/esm5/classes/buffer/checkCall.js.map +1 -1
- package/dist/esm5/classes/buffer.js +3 -3
- package/dist/esm5/classes/buffer.js.map +1 -1
- package/dist/esm5/classes/domRoutines.js +115 -66
- package/dist/esm5/classes/domRoutines.js.map +1 -1
- package/dist/esm5/classes/logger.js +21 -21
- package/dist/esm5/classes/logger.js.map +1 -1
- package/dist/esm5/classes/paddings.js +5 -5
- package/dist/esm5/classes/paddings.js.map +1 -1
- package/dist/esm5/classes/state/cycle.js +9 -8
- package/dist/esm5/classes/state/cycle.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 +14 -23
- package/dist/esm5/classes/viewport.js.map +1 -1
- package/dist/esm5/index.js.map +1 -1
- package/dist/esm5/inputs/validation.js +4 -4
- package/dist/esm5/inputs/validation.js.map +1 -1
- package/dist/esm5/interfaces/index.js.map +1 -1
- package/dist/esm5/interfaces/routines.js +2 -0
- package/dist/esm5/interfaces/routines.js.map +1 -0
- package/dist/esm5/interfaces/state.js.map +1 -1
- package/dist/esm5/interfaces/workflow.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 +48 -19
- package/dist/esm5/processes/adjust.js.map +1 -1
- package/dist/esm5/processes/clip.js +5 -5
- package/dist/esm5/processes/clip.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 +5 -5
- 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/misc/base.js +1 -1
- package/dist/esm5/processes/misc/base.js.map +1 -1
- package/dist/esm5/processes/preClip.js +2 -2
- package/dist/esm5/processes/preClip.js.map +1 -1
- package/dist/esm5/processes/preFetch.js +5 -5
- package/dist/esm5/processes/preFetch.js.map +1 -1
- package/dist/esm5/processes/render.js +6 -6
- package/dist/esm5/processes/render.js.map +1 -1
- package/dist/esm5/processes/scroll.js +22 -22
- package/dist/esm5/processes/scroll.js.map +1 -1
- package/dist/esm5/scroller.js +5 -5
- package/dist/esm5/scroller.js.map +1 -1
- package/dist/esm5/version.js +1 -1
- package/dist/esm5/version.js.map +1 -1
- package/dist/esm5/workflow.js +15 -12
- package/dist/esm5/workflow.js.map +1 -1
- package/dist/typings/classes/domRoutines.d.ts +23 -18
- package/dist/typings/classes/logger.d.ts +1 -1
- package/dist/typings/classes/paddings.d.ts +2 -2
- package/dist/typings/classes/state/cycle.d.ts +1 -1
- 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 -4
- package/dist/typings/index.d.ts +2 -2
- package/dist/typings/interfaces/index.d.ts +3 -2
- package/dist/typings/interfaces/routines.d.ts +157 -0
- package/dist/typings/interfaces/state.d.ts +2 -15
- package/dist/typings/interfaces/workflow.d.ts +3 -0
- package/dist/typings/processes/adjust.d.ts +1 -0
- package/dist/typings/processes/end.d.ts +1 -2
- package/dist/typings/scroller.d.ts +1 -1
- package/dist/typings/workflow.d.ts +2 -2
- package/package.json +18 -17
|
@@ -1,63 +1,72 @@
|
|
|
1
1
|
import { Direction } from '../inputs/index';
|
|
2
2
|
export class Routines {
|
|
3
|
-
constructor(settings) {
|
|
4
|
-
this.
|
|
5
|
-
this.
|
|
6
|
-
|
|
3
|
+
constructor(element, settings, CustomRoutines) {
|
|
4
|
+
this.element = element;
|
|
5
|
+
this.settings = {
|
|
6
|
+
viewport: settings.viewport,
|
|
7
|
+
horizontal: settings.horizontal,
|
|
8
|
+
window: settings.windowViewport
|
|
9
|
+
};
|
|
10
|
+
// provide custom overrides for IRoutines methods
|
|
11
|
+
if (CustomRoutines) {
|
|
12
|
+
const routines = new CustomRoutines(element, this.settings);
|
|
13
|
+
Object.getOwnPropertyNames(Object.getPrototypeOf(routines))
|
|
14
|
+
.filter(method => method !== 'constructor' &&
|
|
15
|
+
typeof routines[method] === 'function' &&
|
|
16
|
+
typeof this[method] === 'function')
|
|
17
|
+
.forEach(method => this[method] = (...args) => routines[method].apply(this, args));
|
|
18
|
+
}
|
|
19
|
+
// initialization
|
|
20
|
+
this.viewport = this.getViewportElement();
|
|
21
|
+
this.onInit(settings);
|
|
7
22
|
}
|
|
8
23
|
checkElement(element) {
|
|
9
24
|
if (!element) {
|
|
10
25
|
throw new Error('HTML element is not defined');
|
|
11
26
|
}
|
|
12
27
|
}
|
|
13
|
-
|
|
14
|
-
if (this.window) {
|
|
28
|
+
getViewportElement() {
|
|
29
|
+
if (this.settings.window) {
|
|
15
30
|
return document.documentElement;
|
|
16
31
|
}
|
|
17
|
-
if (this.viewport) {
|
|
18
|
-
return this.viewport;
|
|
32
|
+
if (this.settings.viewport) {
|
|
33
|
+
return this.settings.viewport;
|
|
19
34
|
}
|
|
20
|
-
this.checkElement(element);
|
|
21
|
-
const parent = element.parentElement;
|
|
35
|
+
this.checkElement(this.element);
|
|
36
|
+
const parent = this.element.parentElement;
|
|
22
37
|
this.checkElement(parent);
|
|
23
38
|
return parent;
|
|
24
39
|
}
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
|
|
40
|
+
onInit(settings) {
|
|
41
|
+
if (settings.windowViewport) {
|
|
42
|
+
if ('scrollRestoration' in history) {
|
|
43
|
+
history.scrollRestoration = 'manual';
|
|
44
|
+
}
|
|
28
45
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
setupScrollRestoration() {
|
|
32
|
-
if ('scrollRestoration' in history) {
|
|
33
|
-
history.scrollRestoration = 'manual';
|
|
46
|
+
if (settings.dismissOverflowAnchor) {
|
|
47
|
+
this.viewport.style.overflowAnchor = 'none';
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
|
-
dismissOverflowAnchor(element) {
|
|
37
|
-
this.checkElement(element);
|
|
38
|
-
element.style.overflowAnchor = 'none';
|
|
39
|
-
}
|
|
40
50
|
findElementBySelector(element, selector) {
|
|
41
51
|
this.checkElement(element);
|
|
42
52
|
return element.querySelector(selector);
|
|
43
53
|
}
|
|
44
|
-
findPaddingElement(
|
|
45
|
-
return this.findElementBySelector(element, `[data-padding-${direction}]`);
|
|
54
|
+
findPaddingElement(direction) {
|
|
55
|
+
return this.findElementBySelector(this.element, `[data-padding-${direction}]`);
|
|
46
56
|
}
|
|
47
|
-
findItemElement(
|
|
48
|
-
return this.findElementBySelector(element, `[data-sid="${id}"]`);
|
|
57
|
+
findItemElement(id) {
|
|
58
|
+
return this.findElementBySelector(this.element, `[data-sid="${id}"]`);
|
|
49
59
|
}
|
|
50
|
-
getScrollPosition(
|
|
51
|
-
if (this.window) {
|
|
52
|
-
return window.pageYOffset;
|
|
60
|
+
getScrollPosition() {
|
|
61
|
+
if (this.settings.window) {
|
|
62
|
+
return this.settings.horizontal ? window.pageXOffset : window.pageYOffset;
|
|
53
63
|
}
|
|
54
|
-
this.
|
|
55
|
-
return element[this.horizontal ? 'scrollLeft' : 'scrollTop'];
|
|
64
|
+
return this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'];
|
|
56
65
|
}
|
|
57
|
-
setScrollPosition(
|
|
66
|
+
setScrollPosition(value) {
|
|
58
67
|
value = Math.max(0, value);
|
|
59
|
-
if (this.window) {
|
|
60
|
-
if (this.horizontal) {
|
|
68
|
+
if (this.settings.window) {
|
|
69
|
+
if (this.settings.horizontal) {
|
|
61
70
|
window.scrollTo(value, window.scrollY);
|
|
62
71
|
}
|
|
63
72
|
else {
|
|
@@ -65,49 +74,62 @@ export class Routines {
|
|
|
65
74
|
}
|
|
66
75
|
return;
|
|
67
76
|
}
|
|
68
|
-
this.
|
|
69
|
-
element[this.horizontal ? 'scrollLeft' : 'scrollTop'] = value;
|
|
77
|
+
this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'] = value;
|
|
70
78
|
}
|
|
71
|
-
|
|
79
|
+
getElementParams(element) {
|
|
72
80
|
this.checkElement(element);
|
|
73
|
-
if (this.window && doNotBind) {
|
|
74
|
-
const { clientWidth, clientHeight, clientLeft, clientTop } = element;
|
|
75
|
-
return {
|
|
76
|
-
'height': clientHeight,
|
|
77
|
-
'width': clientWidth,
|
|
78
|
-
'top': clientTop,
|
|
79
|
-
'bottom': clientTop + clientHeight,
|
|
80
|
-
'left': clientLeft,
|
|
81
|
-
'right': clientLeft + clientWidth,
|
|
82
|
-
'x': clientLeft,
|
|
83
|
-
'y': clientTop,
|
|
84
|
-
'toJSON': () => null,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
81
|
return element.getBoundingClientRect();
|
|
88
82
|
}
|
|
89
|
-
|
|
90
|
-
|
|
83
|
+
getWindowParams() {
|
|
84
|
+
const { clientWidth, clientHeight, clientLeft, clientTop } = this.viewport;
|
|
85
|
+
return {
|
|
86
|
+
'height': clientHeight,
|
|
87
|
+
'width': clientWidth,
|
|
88
|
+
'top': clientTop,
|
|
89
|
+
'bottom': clientTop + clientHeight,
|
|
90
|
+
'left': clientLeft,
|
|
91
|
+
'right': clientLeft + clientWidth,
|
|
92
|
+
'x': clientLeft,
|
|
93
|
+
'y': clientTop,
|
|
94
|
+
'toJSON': () => null,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
getSize(element) {
|
|
98
|
+
return this.getElementParams(element)[this.settings.horizontal ? 'width' : 'height'];
|
|
99
|
+
}
|
|
100
|
+
getScrollerSize() {
|
|
101
|
+
return this.getElementParams(this.element)[this.settings.horizontal ? 'width' : 'height'];
|
|
102
|
+
}
|
|
103
|
+
getViewportSize() {
|
|
104
|
+
if (this.settings.window) {
|
|
105
|
+
return this.getWindowParams()[this.settings.horizontal ? 'width' : 'height'];
|
|
106
|
+
}
|
|
107
|
+
return this.getSize(this.viewport);
|
|
91
108
|
}
|
|
92
109
|
getSizeStyle(element) {
|
|
93
110
|
this.checkElement(element);
|
|
94
|
-
const size = element.style[this.horizontal ? 'width' : 'height'];
|
|
111
|
+
const size = element.style[this.settings.horizontal ? 'width' : 'height'];
|
|
95
112
|
return parseFloat(size) || 0;
|
|
96
113
|
}
|
|
97
114
|
setSizeStyle(element, value) {
|
|
98
115
|
this.checkElement(element);
|
|
99
116
|
value = Math.max(0, Math.round(value));
|
|
100
|
-
element.style[this.horizontal ? 'width' : 'height'] = `${value}px`;
|
|
117
|
+
element.style[this.settings.horizontal ? 'width' : 'height'] = `${value}px`;
|
|
101
118
|
}
|
|
102
|
-
getEdge(element, direction
|
|
103
|
-
const
|
|
119
|
+
getEdge(element, direction) {
|
|
120
|
+
const { horizontal } = this.settings;
|
|
121
|
+
const params = this.getElementParams(element);
|
|
104
122
|
const isFwd = direction === Direction.forward;
|
|
105
|
-
return params[isFwd ? (
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
123
|
+
return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];
|
|
124
|
+
}
|
|
125
|
+
getViewportEdge(direction) {
|
|
126
|
+
const { window, horizontal } = this.settings;
|
|
127
|
+
if (window) {
|
|
128
|
+
const params = this.getWindowParams();
|
|
129
|
+
const isFwd = direction === Direction.forward;
|
|
130
|
+
return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];
|
|
131
|
+
}
|
|
132
|
+
return this.getEdge(this.viewport, direction);
|
|
111
133
|
}
|
|
112
134
|
makeElementVisible(element) {
|
|
113
135
|
this.checkElement(element);
|
|
@@ -119,13 +141,26 @@ export class Routines {
|
|
|
119
141
|
this.checkElement(element);
|
|
120
142
|
element.style.display = 'none';
|
|
121
143
|
}
|
|
122
|
-
getOffset(
|
|
123
|
-
this.
|
|
124
|
-
return (this.
|
|
144
|
+
getOffset() {
|
|
145
|
+
const get = (element) => (this.settings.horizontal ? element.offsetLeft : element.offsetTop) || 0;
|
|
146
|
+
return get(this.element) - (!this.settings.window ? get(this.viewport) : 0);
|
|
125
147
|
}
|
|
126
148
|
scrollTo(element, argument) {
|
|
127
149
|
this.checkElement(element);
|
|
128
150
|
element.scrollIntoView(argument);
|
|
129
151
|
}
|
|
152
|
+
render(cb) {
|
|
153
|
+
const timeoutId = setTimeout(() => cb());
|
|
154
|
+
return () => clearTimeout(timeoutId);
|
|
155
|
+
}
|
|
156
|
+
animate(cb) {
|
|
157
|
+
const animationFrameId = requestAnimationFrame(() => cb());
|
|
158
|
+
return () => cancelAnimationFrame(animationFrameId);
|
|
159
|
+
}
|
|
160
|
+
onScroll(handler) {
|
|
161
|
+
const eventReceiver = this.settings.window ? window : this.viewport;
|
|
162
|
+
eventReceiver.addEventListener('scroll', handler);
|
|
163
|
+
return () => eventReceiver.removeEventListener('scroll', handler);
|
|
164
|
+
}
|
|
130
165
|
}
|
|
131
166
|
//# sourceMappingURL=domRoutines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domRoutines.js","sourceRoot":"","sources":["../../../src/classes/domRoutines.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from './settings';\nimport { Direction } from '../inputs/index';\n\nexport class Routines {\n\n readonly horizontal: boolean;\n readonly window: boolean;\n readonly viewport: HTMLElement | null;\n\n constructor(settings: Settings) {\n this.horizontal = settings.horizontal;\n this.window = settings.windowViewport;\n this.viewport = settings.viewport;\n }\n\n checkElement(element: HTMLElement): void {\n if (!element) {\n throw new Error('HTML element is not defined');\n }\n }\n\n getHostElement(element: HTMLElement): HTMLElement {\n if (this.window) {\n return document.documentElement as HTMLElement;\n }\n if (this.viewport) {\n return this.viewport;\n }\n this.checkElement(element);\n const parent = element.parentElement as HTMLElement;\n this.checkElement(parent);\n return parent;\n }\n\n getScrollEventReceiver(element: HTMLElement): HTMLElement | Window {\n if (this.window) {\n return window;\n }\n return this.getHostElement(element);\n }\n\n setupScrollRestoration(): void {\n if ('scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n }\n\n dismissOverflowAnchor(element: HTMLElement): void {\n this.checkElement(element);\n element.style.overflowAnchor = 'none';\n }\n\n findElementBySelector(element: HTMLElement, selector: string): HTMLElement | null {\n this.checkElement(element);\n return element.querySelector(selector);\n }\n\n findPaddingElement(element: HTMLElement, direction: Direction): HTMLElement | null {\n return this.findElementBySelector(element, `[data-padding-${direction}]`);\n }\n\n findItemElement(element: HTMLElement, id: string): HTMLElement | null {\n return this.findElementBySelector(element, `[data-sid=\"${id}\"]`);\n }\n\n getScrollPosition(element: HTMLElement): number {\n if (this.window) {\n return window.pageYOffset;\n }\n this.checkElement(element);\n return element[this.horizontal ? 'scrollLeft' : 'scrollTop'];\n }\n\n setScrollPosition(element: HTMLElement, value: number): void {\n value = Math.max(0, value);\n if (this.window) {\n if (this.horizontal) {\n window.scrollTo(value, window.scrollY);\n } else {\n window.scrollTo(window.scrollX, value);\n }\n return;\n }\n this.checkElement(element);\n element[this.horizontal ? 'scrollLeft' : 'scrollTop'] = value;\n }\n\n getParams(element: HTMLElement, doNotBind?: boolean): DOMRect {\n this.checkElement(element);\n if (this.window && doNotBind) {\n const { clientWidth, clientHeight, clientLeft, clientTop } = element;\n return {\n 'height': clientHeight,\n 'width': clientWidth,\n 'top': clientTop,\n 'bottom': clientTop + clientHeight,\n 'left': clientLeft,\n 'right': clientLeft + clientWidth,\n 'x': clientLeft,\n 'y': clientTop,\n 'toJSON': () => null,\n };\n }\n return element.getBoundingClientRect();\n }\n\n getSize(element: HTMLElement, doNotBind?: boolean): number {\n return this.getParams(element, doNotBind)[this.horizontal ? 'width' : 'height'];\n }\n\n getSizeStyle(element: HTMLElement): number {\n this.checkElement(element);\n const size = element.style[this.horizontal ? 'width' : 'height'];\n return parseFloat(size as string) || 0;\n }\n\n setSizeStyle(element: HTMLElement, value: number): void {\n this.checkElement(element);\n value = Math.max(0, Math.round(value));\n element.style[this.horizontal ? 'width' : 'height'] = `${value}px`;\n }\n\n getEdge(element: HTMLElement, direction: Direction, doNotBind?: boolean): number {\n const params = this.getParams(element, doNotBind);\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (this.horizontal ? 'right' : 'bottom') : (this.horizontal ? 'left' : 'top')];\n }\n\n getEdge2(element: HTMLElement, direction: Direction, relativeElement: HTMLElement, opposite: boolean): number {\n // vertical only ?\n return element.offsetTop - (relativeElement ? relativeElement.scrollTop : 0) +\n (direction === (!opposite ? Direction.forward : Direction.backward) ? this.getSize(element) : 0);\n }\n\n makeElementVisible(element: HTMLElement): void {\n this.checkElement(element);\n element.style.left = '';\n element.style.top = '';\n element.style.position = '';\n }\n\n hideElement(element: HTMLElement): void {\n this.checkElement(element);\n element.style.display = 'none';\n }\n\n getOffset(element: HTMLElement): number {\n this.checkElement(element);\n return (this.horizontal ? element.offsetLeft : element.offsetTop) || 0;\n }\n\n scrollTo(element: HTMLElement, argument?: boolean | ScrollIntoViewOptions): void {\n this.checkElement(element);\n element.scrollIntoView(argument);\n }\n\n}\n"]}
|
|
1
|
+
{"version":3,"file":"domRoutines.js","sourceRoot":"","sources":["../../../src/classes/domRoutines.ts"],"names":[],"mappings":"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","sourcesContent":["import { Settings } from './settings';\nimport { Direction } from '../inputs/index';\nimport { IRoutines, CustomRoutinesClass } from '../interfaces/index';\n\nexport class Routines implements IRoutines {\n\n readonly settings: IRoutines['settings'];\n readonly element: HTMLElement;\n readonly viewport: HTMLElement;\n\n constructor(element: HTMLElement, settings: Settings, CustomRoutines?: CustomRoutinesClass) {\n this.element = element;\n this.settings = {\n viewport: settings.viewport,\n horizontal: settings.horizontal,\n window: settings.windowViewport\n };\n // provide custom overrides for IRoutines methods\n if (CustomRoutines) {\n const routines = new CustomRoutines(element, this.settings);\n Object.getOwnPropertyNames(Object.getPrototypeOf(routines))\n .filter(method =>\n method !== 'constructor' &&\n typeof routines[method] === 'function' &&\n typeof this[method] === 'function'\n )\n .forEach(method =>\n this[method] = (...args: unknown[]) =>\n routines[method].apply(this, args)\n );\n }\n // initialization\n this.viewport = this.getViewportElement();\n this.onInit(settings);\n }\n\n checkElement(element: HTMLElement): void {\n if (!element) {\n throw new Error('HTML element is not defined');\n }\n }\n\n getViewportElement(): HTMLElement {\n if (this.settings.window) {\n return document.documentElement;\n }\n if (this.settings.viewport) {\n return this.settings.viewport;\n }\n this.checkElement(this.element);\n const parent = this.element.parentElement as HTMLElement;\n this.checkElement(parent);\n return parent;\n }\n\n onInit(settings: Settings): void {\n if (settings.windowViewport) {\n if ('scrollRestoration' in history) {\n history.scrollRestoration = 'manual';\n }\n }\n if (settings.dismissOverflowAnchor) {\n this.viewport.style.overflowAnchor = 'none';\n }\n }\n\n findElementBySelector(element: HTMLElement, selector: string): HTMLElement | null {\n this.checkElement(element);\n return element.querySelector(selector);\n }\n\n findPaddingElement(direction: Direction): HTMLElement | null {\n return this.findElementBySelector(this.element, `[data-padding-${direction}]`);\n }\n\n findItemElement(id: string): HTMLElement | null {\n return this.findElementBySelector(this.element, `[data-sid=\"${id}\"]`);\n }\n\n getScrollPosition(): number {\n if (this.settings.window) {\n return this.settings.horizontal ? window.pageXOffset : window.pageYOffset;\n }\n return this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'];\n }\n\n setScrollPosition(value: number): void {\n value = Math.max(0, value);\n if (this.settings.window) {\n if (this.settings.horizontal) {\n window.scrollTo(value, window.scrollY);\n } else {\n window.scrollTo(window.scrollX, value);\n }\n return;\n }\n this.viewport[this.settings.horizontal ? 'scrollLeft' : 'scrollTop'] = value;\n }\n\n getElementParams(element: HTMLElement): DOMRect {\n this.checkElement(element);\n return element.getBoundingClientRect();\n }\n\n getWindowParams(): DOMRect {\n const { clientWidth, clientHeight, clientLeft, clientTop } = this.viewport;\n return {\n 'height': clientHeight,\n 'width': clientWidth,\n 'top': clientTop,\n 'bottom': clientTop + clientHeight,\n 'left': clientLeft,\n 'right': clientLeft + clientWidth,\n 'x': clientLeft,\n 'y': clientTop,\n 'toJSON': () => null,\n };\n }\n\n getSize(element: HTMLElement): number {\n return this.getElementParams(element)[this.settings.horizontal ? 'width' : 'height'];\n }\n\n getScrollerSize(): number {\n return this.getElementParams(this.element)[this.settings.horizontal ? 'width' : 'height'];\n }\n\n getViewportSize(): number {\n if (this.settings.window) {\n return this.getWindowParams()[this.settings.horizontal ? 'width' : 'height'];\n }\n return this.getSize(this.viewport);\n }\n\n getSizeStyle(element: HTMLElement): number {\n this.checkElement(element);\n const size = element.style[this.settings.horizontal ? 'width' : 'height'];\n return parseFloat(size as string) || 0;\n }\n\n setSizeStyle(element: HTMLElement, value: number): void {\n this.checkElement(element);\n value = Math.max(0, Math.round(value));\n element.style[this.settings.horizontal ? 'width' : 'height'] = `${value}px`;\n }\n\n getEdge(element: HTMLElement, direction: Direction): number {\n const { horizontal } = this.settings;\n const params = this.getElementParams(element);\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];\n }\n\n getViewportEdge(direction: Direction): number {\n const { window, horizontal } = this.settings;\n if (window) {\n const params = this.getWindowParams();\n const isFwd = direction === Direction.forward;\n return params[isFwd ? (horizontal ? 'right' : 'bottom') : (horizontal ? 'left' : 'top')];\n }\n return this.getEdge(this.viewport, direction);\n }\n\n makeElementVisible(element: HTMLElement): void {\n this.checkElement(element);\n element.style.left = '';\n element.style.top = '';\n element.style.position = '';\n }\n\n hideElement(element: HTMLElement): void {\n this.checkElement(element);\n element.style.display = 'none';\n }\n\n getOffset(): number {\n const get = (element: HTMLElement) =>\n (this.settings.horizontal ? element.offsetLeft : element.offsetTop) || 0;\n return get(this.element) - (!this.settings.window ? get(this.viewport) : 0);\n }\n\n scrollTo(element: HTMLElement, argument?: boolean | ScrollIntoViewOptions): void {\n this.checkElement(element);\n element.scrollIntoView(argument);\n }\n\n render(cb: () => void): () => void {\n const timeoutId = setTimeout(() => cb());\n return () => clearTimeout(timeoutId);\n }\n\n animate(cb: () => void): () => void {\n const animationFrameId = requestAnimationFrame(() => cb());\n return () => cancelAnimationFrame(animationFrameId);\n }\n\n onScroll(handler: EventListener): () => void {\n const eventReceiver = this.settings.window ? window : this.viewport;\n eventReceiver.addEventListener('scroll', handler);\n return () => eventReceiver.removeEventListener('scroll', handler);\n }\n\n}\n"]}
|
|
@@ -48,7 +48,7 @@ export class Logger {
|
|
|
48
48
|
this.getLoopId = () => scroller.state.cycle.loopId;
|
|
49
49
|
this.getLoopIdNext = () => scroller.state.cycle.loopIdNext;
|
|
50
50
|
this.getWorkflowCycleData = () => `${settings.instanceIndex}-${scroller.state.cycle.count}`;
|
|
51
|
-
this.getScrollPosition = (
|
|
51
|
+
this.getScrollPosition = () => scroller.routines.getScrollPosition();
|
|
52
52
|
this.log(() => 'vscroll Workflow has been started, ' +
|
|
53
53
|
`core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +
|
|
54
54
|
`consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +
|
|
@@ -104,7 +104,7 @@ export class Logger {
|
|
|
104
104
|
}
|
|
105
105
|
prepareForLog(data) {
|
|
106
106
|
return data instanceof Event && data.target
|
|
107
|
-
? this.getScrollPosition(
|
|
107
|
+
? this.getScrollPosition()
|
|
108
108
|
: data;
|
|
109
109
|
}
|
|
110
110
|
logProcess(data) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/classes/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../scroller';\nimport { CommonProcess, AdapterProcess, ProcessStatus as Status } from '../processes/index';\nimport { IPackages, ProcessSubject } from '../interfaces/index';\n\ntype LogType = [unknown?, ...unknown[]];\n\nexport class Logger {\n\n readonly debug: boolean;\n readonly immediateLog: boolean;\n readonly logTime: boolean;\n readonly getTime: () => string;\n readonly getStat: () => string;\n readonly getFetchRange: () => string;\n readonly getWorkflowCycleData: () => string;\n readonly getLoopId: () => string;\n readonly getLoopIdNext: () => string;\n readonly getScrollPosition: (element: HTMLElement) => number;\n private logs: unknown[][] = [];\n\n constructor(scroller: Scroller, packageInfo: IPackages, adapter?: { id: number }) {\n const { settings } = scroller;\n this.debug = settings.debug;\n this.immediateLog = settings.immediateLog;\n this.logTime = settings.logTime;\n this.getTime = (): string =>\n scroller.state && ` // time: ${scroller.state.time}`;\n this.getStat = (): string => {\n const { buffer, viewport } = scroller;\n const first = buffer.getFirstVisibleItem();\n const last = buffer.getLastVisibleItem();\n return 'pos: ' + viewport.scrollPosition + ', ' +\n 'size: ' + viewport.getScrollableSize() + ', ' +\n 'bwd_p: ' + viewport.paddings.backward.size + ', ' +\n 'fwd_p: ' + viewport.paddings.forward.size + ', ' +\n 'default: ' + (buffer.defaultSize || 'no') + ', ' +\n 'items: ' + buffer.getVisibleItemsCount() + ', ' +\n 'range: ' + (first && last ? `[${first.$index}..${last.$index}]` : 'no');\n };\n this.getFetchRange = (): string => {\n const { first: { index: first }, last: { index: last } } = scroller.state.fetch;\n return !Number.isNaN(first) && !Number.isNaN(last)\n ? `[${first}..${last}]`\n : 'no';\n };\n this.getLoopId = (): string => scroller.state.cycle.loopId;\n this.getLoopIdNext = (): string => scroller.state.cycle.loopIdNext;\n this.getWorkflowCycleData = (): string =>\n `${settings.instanceIndex}-${scroller.state.cycle.count}`;\n this.getScrollPosition = (element: HTMLElement) => scroller.routines.getScrollPosition(element);\n this.log(() =>\n 'vscroll Workflow has been started, ' +\n `core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +\n `consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +\n `scroller instance: ${settings.instanceIndex}, adapter ` +\n (!adapter ? 'is not instantiated' : `instance: ${adapter.id}`)\n );\n }\n\n object(str: string, obj: unknown, stringify?: boolean): void {\n this.log(() => [\n str,\n stringify\n ? JSON.stringify(obj, (k, v) => {\n if (Number.isNaN(v)) {\n return 'NaN';\n }\n if (v === Infinity) {\n return 'Infinity';\n }\n if (v === -Infinity) {\n return '-Infinity';\n }\n if (v instanceof Element) {\n return 'HTMLElement';\n }\n if (v instanceof HTMLDocument) {\n return 'HTMLDocument';\n }\n if (typeof v === 'function') {\n return 'Function';\n }\n return v;\n })\n .replace(/\"/g, '')\n .replace(/(\\{|:|,)/g, '$1 ')\n .replace(/(\\})/g, ' $1')\n : obj\n ]);\n }\n\n stat(str?: string): void {\n if (this.debug) {\n const logStyles = [\n 'color: #888; border: dashed #888 0; border-bottom-width: 0px',\n 'color: #000; border-width: 0'\n ];\n this.log(() => ['%cstat' + (str ? ` ${str}` : '') + ',%c ' + this.getStat(), ...logStyles]);\n }\n }\n\n fetch(str?: string): void {\n if (this.debug) {\n const _text = 'fetch interval' + (str ? ` ${str}` : '');\n const logStyles = ['color: #888', 'color: #000'];\n this.log(() => [`%c${_text}: %c${this.getFetchRange()}`, ...logStyles]);\n }\n }\n\n prepareForLog(data: unknown): unknown {\n return data instanceof Event && data.target\n ? this.getScrollPosition(data.target as HTMLElement)\n : data;\n }\n\n logProcess(data: ProcessSubject): void {\n if (!this.debug) {\n return;\n }\n const { process, status, payload } = data;\n\n // inner loop start-end log\n const loopLog: string[] = [];\n if (\n process === CommonProcess.init && status === Status.next\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopIdNext()} start`);\n } else if (\n process === CommonProcess.end\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopId()} done`);\n const parent = payload && payload.process;\n if (status === Status.next && (parent !== AdapterProcess.reset && parent !== AdapterProcess.reload)) {\n loopLog[0] += `, loop ${this.getLoopIdNext()} start`;\n }\n }\n if (loopLog.length) {\n this.log(() => [...loopLog, 'color: #006600;']);\n }\n }\n\n logCycle(start = true): void {\n const logData = this.getWorkflowCycleData();\n const border = start ? '1px 0 0 1px' : '0 0 1px 1px';\n const logStyles = `color: #0000aa; border: solid #555 1px; border-width: ${border}; margin-left: -2px`;\n this.log(() => [`%c ~~~ WF Cycle ${logData} ${start ? 'STARTED' : 'FINALIZED'} ~~~ `, logStyles]);\n }\n\n logError(str: string): void {\n if (this.debug) {\n const logStyles = ['color: #a00;', 'color: #000'];\n this.log(() => ['error:%c' + (str ? ` ${str}` : '') + `%c (loop ${this.getLoopIdNext()})`, ...logStyles]);\n }\n }\n\n logAdapterMethod = (methodName: string, args?: unknown, add?: string): void => {\n if (!this.debug) {\n return;\n }\n const params = (\n args === void 0 ? [] : (Array.isArray(args) ? args : [args])\n )\n .map((arg: unknown) => {\n if (typeof arg === 'function') {\n return 'func';\n } else if (typeof arg !== 'object' || !arg) {\n return arg;\n } else if (Array.isArray(arg)) {\n return `[of ${arg.length}]`;\n }\n return '{ ' + Object.keys(arg).join(', ') + ' }';\n })\n .join(', ');\n this.log(`adapter: ${methodName}(${params || ''})${add || ''}`);\n }\n\n log(...args: any[]): void {\n if (this.debug) {\n if (typeof args[0] === 'function') {\n args = args[0]();\n if (!Array.isArray(args)) {\n args = [args];\n }\n }\n if (args.every(item => item === void 0)) {\n return;\n }\n if (this.logTime) {\n args = [...args, this.getTime()];\n }\n args = args.map((arg: unknown) => this.prepareForLog(arg));\n if (this.immediateLog) {\n console.log.apply(this, args as LogType);\n } else {\n this.logs.push(args);\n }\n }\n }\n\n // logNow(...args: any[]) {\n // const immediateLog = this.immediateLog;\n // const debug = this.debug;\n // (this as any).debug = true;\n // (this as any).immediateLog = true;\n // this.log.apply(this, args);\n // (this as any).debug = debug;\n // (this as any).immediateLog = immediateLog;\n // }\n\n logForce(...args: unknown[]): void {\n if (this.debug) {\n if (!this.immediateLog && this.logs.length) {\n this.logs.forEach(logArgs => console.log.apply(this, logArgs));\n this.logs = [];\n }\n if (args.length) {\n console.log.apply(this, args as LogType);\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/classes/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scroller } from '../scroller';\nimport { CommonProcess, AdapterProcess, ProcessStatus as Status } from '../processes/index';\nimport { IPackages, ProcessSubject } from '../interfaces/index';\n\ntype LogType = [unknown?, ...unknown[]];\n\nexport class Logger {\n\n readonly debug: boolean;\n readonly immediateLog: boolean;\n readonly logTime: boolean;\n readonly getTime: () => string;\n readonly getStat: () => string;\n readonly getFetchRange: () => string;\n readonly getWorkflowCycleData: () => string;\n readonly getLoopId: () => string;\n readonly getLoopIdNext: () => string;\n readonly getScrollPosition: () => number;\n private logs: unknown[][] = [];\n\n constructor(scroller: Scroller, packageInfo: IPackages, adapter?: { id: number }) {\n const { settings } = scroller;\n this.debug = settings.debug;\n this.immediateLog = settings.immediateLog;\n this.logTime = settings.logTime;\n this.getTime = (): string =>\n scroller.state && ` // time: ${scroller.state.time}`;\n this.getStat = (): string => {\n const { buffer, viewport } = scroller;\n const first = buffer.getFirstVisibleItem();\n const last = buffer.getLastVisibleItem();\n return 'pos: ' + viewport.scrollPosition + ', ' +\n 'size: ' + viewport.getScrollableSize() + ', ' +\n 'bwd_p: ' + viewport.paddings.backward.size + ', ' +\n 'fwd_p: ' + viewport.paddings.forward.size + ', ' +\n 'default: ' + (buffer.defaultSize || 'no') + ', ' +\n 'items: ' + buffer.getVisibleItemsCount() + ', ' +\n 'range: ' + (first && last ? `[${first.$index}..${last.$index}]` : 'no');\n };\n this.getFetchRange = (): string => {\n const { first: { index: first }, last: { index: last } } = scroller.state.fetch;\n return !Number.isNaN(first) && !Number.isNaN(last)\n ? `[${first}..${last}]`\n : 'no';\n };\n this.getLoopId = (): string => scroller.state.cycle.loopId;\n this.getLoopIdNext = (): string => scroller.state.cycle.loopIdNext;\n this.getWorkflowCycleData = (): string =>\n `${settings.instanceIndex}-${scroller.state.cycle.count}`;\n this.getScrollPosition = () => scroller.routines.getScrollPosition();\n this.log(() =>\n 'vscroll Workflow has been started, ' +\n `core: ${packageInfo.core.name} v${packageInfo.core.version}, ` +\n `consumer: ${packageInfo.consumer.name} v${packageInfo.consumer.version}, ` +\n `scroller instance: ${settings.instanceIndex}, adapter ` +\n (!adapter ? 'is not instantiated' : `instance: ${adapter.id}`)\n );\n }\n\n object(str: string, obj: unknown, stringify?: boolean): void {\n this.log(() => [\n str,\n stringify\n ? JSON.stringify(obj, (k, v) => {\n if (Number.isNaN(v)) {\n return 'NaN';\n }\n if (v === Infinity) {\n return 'Infinity';\n }\n if (v === -Infinity) {\n return '-Infinity';\n }\n if (v instanceof Element) {\n return 'HTMLElement';\n }\n if (v instanceof HTMLDocument) {\n return 'HTMLDocument';\n }\n if (typeof v === 'function') {\n return 'Function';\n }\n return v;\n })\n .replace(/\"/g, '')\n .replace(/(\\{|:|,)/g, '$1 ')\n .replace(/(\\})/g, ' $1')\n : obj\n ]);\n }\n\n stat(str?: string): void {\n if (this.debug) {\n const logStyles = [\n 'color: #888; border: dashed #888 0; border-bottom-width: 0px',\n 'color: #000; border-width: 0'\n ];\n this.log(() => ['%cstat' + (str ? ` ${str}` : '') + ',%c ' + this.getStat(), ...logStyles]);\n }\n }\n\n fetch(str?: string): void {\n if (this.debug) {\n const _text = 'fetch interval' + (str ? ` ${str}` : '');\n const logStyles = ['color: #888', 'color: #000'];\n this.log(() => [`%c${_text}: %c${this.getFetchRange()}`, ...logStyles]);\n }\n }\n\n prepareForLog(data: unknown): unknown {\n return data instanceof Event && data.target\n ? this.getScrollPosition()\n : data;\n }\n\n logProcess(data: ProcessSubject): void {\n if (!this.debug) {\n return;\n }\n const { process, status, payload } = data;\n\n // inner loop start-end log\n const loopLog: string[] = [];\n if (\n process === CommonProcess.init && status === Status.next\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopIdNext()} start`);\n } else if (\n process === CommonProcess.end\n ) {\n loopLog.push(`%c---=== loop ${this.getLoopId()} done`);\n const parent = payload && payload.process;\n if (status === Status.next && (parent !== AdapterProcess.reset && parent !== AdapterProcess.reload)) {\n loopLog[0] += `, loop ${this.getLoopIdNext()} start`;\n }\n }\n if (loopLog.length) {\n this.log(() => [...loopLog, 'color: #006600;']);\n }\n }\n\n logCycle(start = true): void {\n const logData = this.getWorkflowCycleData();\n const border = start ? '1px 0 0 1px' : '0 0 1px 1px';\n const logStyles = `color: #0000aa; border: solid #555 1px; border-width: ${border}; margin-left: -2px`;\n this.log(() => [`%c ~~~ WF Cycle ${logData} ${start ? 'STARTED' : 'FINALIZED'} ~~~ `, logStyles]);\n }\n\n logError(str: string): void {\n if (this.debug) {\n const logStyles = ['color: #a00;', 'color: #000'];\n this.log(() => ['error:%c' + (str ? ` ${str}` : '') + `%c (loop ${this.getLoopIdNext()})`, ...logStyles]);\n }\n }\n\n logAdapterMethod = (methodName: string, args?: unknown, add?: string): void => {\n if (!this.debug) {\n return;\n }\n const params = (\n args === void 0 ? [] : (Array.isArray(args) ? args : [args])\n )\n .map((arg: unknown) => {\n if (typeof arg === 'function') {\n return 'func';\n } else if (typeof arg !== 'object' || !arg) {\n return arg;\n } else if (Array.isArray(arg)) {\n return `[of ${arg.length}]`;\n }\n return '{ ' + Object.keys(arg).join(', ') + ' }';\n })\n .join(', ');\n this.log(`adapter: ${methodName}(${params || ''})${add || ''}`);\n };\n\n log(...args: any[]): void {\n if (this.debug) {\n if (typeof args[0] === 'function') {\n args = args[0]();\n if (!Array.isArray(args)) {\n args = [args];\n }\n }\n if (args.every(item => item === void 0)) {\n return;\n }\n if (this.logTime) {\n args = [...args, this.getTime()];\n }\n args = args.map((arg: unknown) => this.prepareForLog(arg));\n if (this.immediateLog) {\n console.log.apply(this, args as LogType);\n } else {\n this.logs.push(args);\n }\n }\n }\n\n // logNow(...args: any[]) {\n // const immediateLog = this.immediateLog;\n // const debug = this.debug;\n // (this as any).debug = true;\n // (this as any).immediateLog = true;\n // this.log.apply(this, args);\n // (this as any).debug = debug;\n // (this as any).immediateLog = immediateLog;\n // }\n\n logForce(...args: unknown[]): void {\n if (this.debug) {\n if (!this.immediateLog && this.logs.length) {\n this.logs.forEach(logArgs => console.log.apply(this, logArgs));\n this.logs = [];\n }\n if (args.length) {\n console.log.apply(this, args as LogType);\n }\n }\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Direction } from '../inputs/index';
|
|
2
2
|
export class Padding {
|
|
3
|
-
constructor(
|
|
4
|
-
const found = routines.findPaddingElement(
|
|
3
|
+
constructor(direction, routines) {
|
|
4
|
+
const found = routines.findPaddingElement(direction);
|
|
5
5
|
routines.checkElement(found);
|
|
6
6
|
this.element = found;
|
|
7
7
|
this.direction = direction;
|
|
@@ -18,10 +18,10 @@ export class Padding {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
export class Paddings {
|
|
21
|
-
constructor(
|
|
21
|
+
constructor(routines, settings) {
|
|
22
22
|
this.settings = settings;
|
|
23
|
-
this.forward = new Padding(
|
|
24
|
-
this.backward = new Padding(
|
|
23
|
+
this.forward = new Padding(Direction.forward, routines);
|
|
24
|
+
this.backward = new Padding(Direction.backward, routines);
|
|
25
25
|
}
|
|
26
26
|
byDirection(direction, opposite) {
|
|
27
27
|
return direction === Direction.backward
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paddings.js","sourceRoot":"","sources":["../../../src/classes/paddings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,OAAO,OAAO;IAMlB,YAAY,
|
|
1
|
+
{"version":3,"file":"paddings.js","sourceRoot":"","sources":["../../../src/classes/paddings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Routines } from './domRoutines';\r\nimport { Settings } from './settings';\r\nimport { Direction } from '../inputs/index';\r\n\r\nexport class Padding {\r\n\r\n element: HTMLElement;\r\n direction: Direction;\r\n routines: Routines;\r\n\r\n constructor(direction: Direction, routines: Routines) {\r\n const found = routines.findPaddingElement(direction);\r\n routines.checkElement(found as HTMLElement);\r\n this.element = found as HTMLElement;\r\n this.direction = direction;\r\n this.routines = routines;\r\n }\r\n\r\n reset(size?: number): void {\r\n this.size = size || 0;\r\n }\r\n\r\n get size(): number {\r\n return this.routines.getSizeStyle(this.element);\r\n }\r\n\r\n set size(value: number) {\r\n this.routines.setSizeStyle(this.element, value);\r\n }\r\n\r\n}\r\n\r\nexport class Paddings {\r\n settings: Settings;\r\n forward: Padding;\r\n backward: Padding;\r\n\r\n constructor(routines: Routines, settings: Settings) {\r\n this.settings = settings;\r\n this.forward = new Padding(Direction.forward, routines);\r\n this.backward = new Padding(Direction.backward, routines);\r\n }\r\n\r\n byDirection(direction: Direction, opposite?: boolean): Padding {\r\n return direction === Direction.backward\r\n ? (opposite ? this.forward : this.backward)\r\n : (opposite ? this.backward : this.forward);\r\n }\r\n\r\n reset(viewportSize: number, startIndex: number, offset: number): void {\r\n const positive = this.getPositiveSize(startIndex, viewportSize, offset);\r\n const negative = this.getNegativeSize(startIndex);\r\n if (this.settings.inverse) {\r\n this.forward.reset(negative);\r\n this.backward.reset(positive);\r\n const diff = viewportSize - this.backward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size += diff;\r\n this.forward.size -= diff;\r\n }\r\n } else {\r\n this.forward.reset(positive);\r\n this.backward.reset(negative);\r\n const diff = viewportSize - this.forward.size - offset;\r\n if (diff > 0) {\r\n this.backward.size -= diff;\r\n this.forward.size += diff;\r\n }\r\n }\r\n\r\n }\r\n\r\n getPositiveSize(startIndex: number, viewportSize: number, offset: number): number {\r\n const { settings } = this;\r\n let positiveSize = viewportSize;\r\n if (isFinite(settings.maxIndex)) {\r\n positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize;\r\n }\r\n if (offset) {\r\n positiveSize = Math.max(positiveSize - offset, 0);\r\n }\r\n return positiveSize;\r\n }\r\n\r\n getNegativeSize(startIndex: number): number {\r\n const { settings } = this;\r\n let negativeSize = 0;\r\n if (isFinite(settings.minIndex)) {\r\n negativeSize = (startIndex - settings.minIndex) * settings.itemSize;\r\n }\r\n return negativeSize;\r\n }\r\n}\r\n"]}
|
|
@@ -9,6 +9,7 @@ class InnerLoopModel {
|
|
|
9
9
|
return this.count === 0;
|
|
10
10
|
}
|
|
11
11
|
done() {
|
|
12
|
+
this.isInitial = false;
|
|
12
13
|
this.count++;
|
|
13
14
|
this.total++;
|
|
14
15
|
this.busy.set(false);
|
|
@@ -28,7 +29,7 @@ export class WorkflowCycleModel {
|
|
|
28
29
|
this.innerLoop = new InnerLoopModel(loopCount);
|
|
29
30
|
this.interrupter = null;
|
|
30
31
|
this.busy = new Reactive(false);
|
|
31
|
-
this.
|
|
32
|
+
this.end(cycleCount);
|
|
32
33
|
}
|
|
33
34
|
get loopId() {
|
|
34
35
|
return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;
|
|
@@ -36,11 +37,6 @@ export class WorkflowCycleModel {
|
|
|
36
37
|
get loopIdNext() {
|
|
37
38
|
return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;
|
|
38
39
|
}
|
|
39
|
-
done(count) {
|
|
40
|
-
this.count = count;
|
|
41
|
-
this.isInitial = false;
|
|
42
|
-
this.busy.set(false);
|
|
43
|
-
}
|
|
44
40
|
start(isInitial, initiator) {
|
|
45
41
|
this.isInitial = isInitial;
|
|
46
42
|
this.initiator = initiator;
|
|
@@ -49,6 +45,11 @@ export class WorkflowCycleModel {
|
|
|
49
45
|
this.interrupter = null;
|
|
50
46
|
this.busy.set(true);
|
|
51
47
|
}
|
|
48
|
+
end(count) {
|
|
49
|
+
this.count = count;
|
|
50
|
+
this.isInitial = false;
|
|
51
|
+
this.busy.set(false);
|
|
52
|
+
}
|
|
52
53
|
dispose(forever) {
|
|
53
54
|
if (forever) {
|
|
54
55
|
// otherwise the value will be persisted during re-instantiation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,cAAc;IAUlB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAQD,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAiB7B,YAAY,aAAqB,EAAE,KAA0B;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"cycle.js","sourceRoot":"","sources":["../../../../src/classes/state/cycle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,cAAc;IAUlB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC3C,CAAC;IARD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAQD,IAAI;QACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAkB;IAiB7B,YAAY,aAAqB,EAAE,KAA0B;QAC3D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAU,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvB,CAAC;IAjBD,IAAI,MAAM;QACR,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACvE,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;IAC3E,CAAC;IAaD,KAAK,CAAC,SAAkB,EAAE,SAAsB;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,KAAa;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAiB;QACvB,IAAI,OAAO,EAAE;YACX,gEAAgE;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF","sourcesContent":["import { ProcessName } from '../../interfaces/index';\nimport { Reactive } from '../reactive';\n\nclass InnerLoopModel {\n total: number;\n count: number;\n isInitial: boolean;\n busy: Reactive<boolean>;\n\n get first(): boolean {\n return this.count === 0;\n }\n\n constructor(total: number) {\n this.total = total;\n this.isInitial = false;\n this.busy = new Reactive<boolean>(false);\n }\n\n done() {\n this.isInitial = false;\n this.count++;\n this.total++;\n this.busy.set(false);\n }\n\n start() {\n this.busy.set(true);\n }\n\n dispose() {\n this.busy.dispose();\n }\n}\n\nexport class WorkflowCycleModel {\n instanceIndex: number;\n count: number;\n isInitial: boolean;\n initiator: ProcessName;\n innerLoop: InnerLoopModel;\n interrupter: ProcessName | null;\n busy: Reactive<boolean>;\n\n get loopId(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total}`;\n }\n\n get loopIdNext(): string {\n return `${this.instanceIndex}-${this.count}-${this.innerLoop.total + 1}`;\n }\n\n constructor(instanceIndex: number, cycle?: WorkflowCycleModel) {\n const cycleCount = cycle ? cycle.count : 1;\n const loopCount = cycle ? cycle.innerLoop.count : 0;\n\n this.instanceIndex = instanceIndex;\n this.innerLoop = new InnerLoopModel(loopCount);\n this.interrupter = null;\n this.busy = new Reactive<boolean>(false);\n this.end(cycleCount);\n }\n\n start(isInitial: boolean, initiator: ProcessName): void {\n this.isInitial = isInitial;\n this.initiator = initiator;\n this.innerLoop.isInitial = isInitial;\n this.innerLoop.count = 0;\n this.interrupter = null;\n this.busy.set(true);\n }\n\n end(count: number): void {\n this.count = count;\n this.isInitial = false;\n this.busy.set(false);\n }\n\n dispose(forever?: boolean): void {\n if (forever) {\n // otherwise the value will be persisted during re-instantiation\n this.busy.dispose();\n }\n this.innerLoop.dispose();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAUtB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;IAC5C,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../src/classes/state/render.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IAUtB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAND,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC;IAC5C,CAAC;IAMD,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;CACF","sourcesContent":["export class RenderModel {\n sizeBefore: number;\n sizeAfter: number;\n positionBefore: number;\n cancel: (() => void) | null;\n\n get noSize(): boolean {\n return this.sizeBefore === this.sizeAfter;\n }\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.sizeBefore = 0;\n this.sizeAfter = 0;\n this.positionBefore = 0;\n this.cancel = null;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class ScrollModel {
|
|
2
2
|
constructor() {
|
|
3
3
|
this.reset();
|
|
4
4
|
}
|
|
@@ -10,16 +10,16 @@ export class ScrollState {
|
|
|
10
10
|
this.positionBeforeAsync = null;
|
|
11
11
|
this.positionBeforeAdjust = null;
|
|
12
12
|
this.positionAfterAdjust = null;
|
|
13
|
-
this.
|
|
13
|
+
this.stop();
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
stop() {
|
|
16
16
|
if (this.scrollTimer) {
|
|
17
17
|
clearTimeout(this.scrollTimer);
|
|
18
18
|
this.scrollTimer = null;
|
|
19
19
|
}
|
|
20
|
-
if (this.
|
|
21
|
-
|
|
22
|
-
this.
|
|
20
|
+
if (this.cancelAnimation) {
|
|
21
|
+
this.cancelAnimation();
|
|
22
|
+
this.cancelAnimation = null;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
hasPositionChanged(position) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../../src/classes/state/scroll.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IAatB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SACzB;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B;IACH,CAAC;IAED,kBAAkB,CAAC,QAAgB;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACvC,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,QAAQ,CAAC;IACxF,CAAC;CACF","sourcesContent":["import { ScrollEventData as IScrollEventData } from '../../interfaces/index';\n\nexport class ScrollModel {\n previous: IScrollEventData | null;\n current: IScrollEventData | null;\n\n scrollTimer: ReturnType<typeof setTimeout> | null;\n\n syntheticPosition: number | null;\n syntheticFulfill: boolean;\n cancelAnimation: (() => void) | null;\n positionBeforeAsync: number | null;\n positionBeforeAdjust: number | null;\n positionAfterAdjust: number | null;\n\n constructor() {\n this.reset();\n }\n\n reset(): void {\n this.previous = null;\n this.current = null;\n this.syntheticPosition = null;\n this.syntheticFulfill = false;\n this.positionBeforeAsync = null;\n this.positionBeforeAdjust = null;\n this.positionAfterAdjust = null;\n this.stop();\n }\n\n stop(): void {\n if (this.scrollTimer) {\n clearTimeout(this.scrollTimer);\n this.scrollTimer = null;\n }\n if (this.cancelAnimation) {\n this.cancelAnimation();\n this.cancelAnimation = null;\n }\n }\n\n hasPositionChanged(position: number): boolean {\n const before = this.positionBeforeAdjust;\n const after = this.positionAfterAdjust;\n return before === null || before !== position || after === null || after !== position;\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { WorkflowCycleModel } from './state/cycle';
|
|
|
2
2
|
import { FetchModel } from './state/fetch';
|
|
3
3
|
import { ClipModel } from './state/clip';
|
|
4
4
|
import { RenderModel } from './state/render';
|
|
5
|
-
import {
|
|
5
|
+
import { ScrollModel } from './state/scroll';
|
|
6
6
|
export class State {
|
|
7
7
|
constructor(packageInfo, settings, state) {
|
|
8
8
|
this.packageInfo = packageInfo;
|
|
@@ -12,25 +12,19 @@ export class State {
|
|
|
12
12
|
this.fetch = new FetchModel(settings.directionPriority);
|
|
13
13
|
this.clip = new ClipModel();
|
|
14
14
|
this.render = new RenderModel();
|
|
15
|
-
this.
|
|
15
|
+
this.scroll = new ScrollModel();
|
|
16
16
|
}
|
|
17
17
|
get time() {
|
|
18
18
|
return Number(new Date()) - this.initTime;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
if (render.renderTimer) {
|
|
27
|
-
clearTimeout(render.renderTimer);
|
|
28
|
-
render.renderTimer = null;
|
|
29
|
-
}
|
|
30
|
-
cycle.innerLoop.done();
|
|
20
|
+
startWorkflowCycle(isInitial, initiator) {
|
|
21
|
+
this.cycle.start(isInitial, initiator);
|
|
22
|
+
}
|
|
23
|
+
endWorkflowCycle(count) {
|
|
24
|
+
this.cycle.end(count);
|
|
31
25
|
}
|
|
32
26
|
startInnerLoop() {
|
|
33
|
-
const { cycle,
|
|
27
|
+
const { cycle, scroll: scroll, fetch, render, clip } = this;
|
|
34
28
|
cycle.innerLoop.start();
|
|
35
29
|
scroll.positionBeforeAsync = null;
|
|
36
30
|
if (!fetch.simulate) {
|
|
@@ -43,10 +37,24 @@ export class State {
|
|
|
43
37
|
doRender: fetch.simulate && fetch.items.length > 0
|
|
44
38
|
} : {}));
|
|
45
39
|
}
|
|
40
|
+
endInnerLoop() {
|
|
41
|
+
const { fetch, clip, render, cycle } = this;
|
|
42
|
+
fetch.stopSimulate();
|
|
43
|
+
clip.reset(true);
|
|
44
|
+
if (fetch.cancel) {
|
|
45
|
+
fetch.cancel();
|
|
46
|
+
fetch.cancel = null;
|
|
47
|
+
}
|
|
48
|
+
if (render.cancel) {
|
|
49
|
+
render.cancel();
|
|
50
|
+
render.cancel = null;
|
|
51
|
+
}
|
|
52
|
+
cycle.innerLoop.done();
|
|
53
|
+
}
|
|
46
54
|
dispose() {
|
|
55
|
+
this.scroll.stop();
|
|
47
56
|
this.cycle.dispose();
|
|
48
57
|
this.endInnerLoop();
|
|
49
|
-
this.scrollState.cleanupTimers();
|
|
50
58
|
}
|
|
51
59
|
}
|
|
52
60
|
//# sourceMappingURL=state.js.map
|