@ethlete/core 1.4.2 → 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/esm2020/lib/components/structured-data/structured-data.component.mjs +3 -3
- package/esm2020/lib/directives/animatable/animatable.directive.mjs +3 -3
- package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +3 -3
- package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
- package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +3 -3
- package/esm2020/lib/directives/let/let.directive.mjs +3 -3
- package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +3 -3
- package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
- package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +5 -5
- package/esm2020/lib/directives/repeat/repeat.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
- package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
- package/esm2020/lib/directives/seo/seo.directive.mjs +3 -3
- package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
- package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
- package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
- package/esm2020/lib/services/click-observer.service.mjs +6 -6
- package/esm2020/lib/services/content-observer.service.mjs +6 -6
- package/esm2020/lib/services/destroy.service.mjs +3 -3
- package/esm2020/lib/services/focus-visible.service.mjs +3 -3
- package/esm2020/lib/services/resize-observer.service.mjs +6 -6
- package/esm2020/lib/services/router-state.service.mjs +3 -3
- package/esm2020/lib/services/viewport.service.mjs +3 -3
- package/esm2020/lib/utils/public-api.mjs +2 -1
- package/esm2020/lib/utils/smart-block-scroll-strategy.utils.mjs +70 -0
- package/fesm2015/ethlete-core.mjs +163 -94
- package/fesm2015/ethlete-core.mjs.map +1 -1
- package/fesm2020/ethlete-core.mjs +162 -94
- package/fesm2020/ethlete-core.mjs.map +1 -1
- package/lib/utils/public-api.d.ts +1 -0
- package/lib/utils/smart-block-scroll-strategy.utils.d.ts +18 -0
- package/package.json +9 -9
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { coerceCssPixelValue } from '@angular/cdk/coercion';
|
|
2
|
+
import { supportsScrollBehavior } from '@angular/cdk/platform';
|
|
3
|
+
import { skip, take, tap } from 'rxjs';
|
|
4
|
+
const scrollBehaviorSupported = supportsScrollBehavior();
|
|
5
|
+
export class SmartBlockScrollStrategy {
|
|
6
|
+
constructor(_viewportRuler, _routerState, document) {
|
|
7
|
+
this._viewportRuler = _viewportRuler;
|
|
8
|
+
this._routerState = _routerState;
|
|
9
|
+
this._previousHTMLStyles = { top: '', left: '' };
|
|
10
|
+
this._previousScrollPosition = { top: 0, left: 0 };
|
|
11
|
+
this._isEnabled = false;
|
|
12
|
+
this._urlSubscription = null;
|
|
13
|
+
this._didNavigate = false;
|
|
14
|
+
this._document = document;
|
|
15
|
+
}
|
|
16
|
+
attach() {
|
|
17
|
+
// noop
|
|
18
|
+
}
|
|
19
|
+
enable() {
|
|
20
|
+
if (this._canBeEnabled()) {
|
|
21
|
+
const root = this._document.documentElement;
|
|
22
|
+
this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();
|
|
23
|
+
this._didNavigate = false;
|
|
24
|
+
this._previousHTMLStyles.left = root.style.left || '';
|
|
25
|
+
this._previousHTMLStyles.top = root.style.top || '';
|
|
26
|
+
root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);
|
|
27
|
+
root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);
|
|
28
|
+
root.classList.add('cdk-global-scrollblock');
|
|
29
|
+
this._isEnabled = true;
|
|
30
|
+
this._urlSubscription = this._routerState.route$
|
|
31
|
+
.pipe(skip(1), take(1), tap(() => {
|
|
32
|
+
this._didNavigate = true;
|
|
33
|
+
}))
|
|
34
|
+
.subscribe();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
disable() {
|
|
38
|
+
if (this._isEnabled) {
|
|
39
|
+
this._urlSubscription?.unsubscribe();
|
|
40
|
+
const html = this._document.documentElement;
|
|
41
|
+
const body = this._document.body;
|
|
42
|
+
const htmlStyle = html.style;
|
|
43
|
+
const bodyStyle = body.style;
|
|
44
|
+
const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';
|
|
45
|
+
const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';
|
|
46
|
+
this._isEnabled = false;
|
|
47
|
+
htmlStyle.left = this._previousHTMLStyles.left;
|
|
48
|
+
htmlStyle.top = this._previousHTMLStyles.top;
|
|
49
|
+
html.classList.remove('cdk-global-scrollblock');
|
|
50
|
+
if (scrollBehaviorSupported) {
|
|
51
|
+
htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';
|
|
52
|
+
}
|
|
53
|
+
if (!this._didNavigate) {
|
|
54
|
+
window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);
|
|
55
|
+
}
|
|
56
|
+
if (scrollBehaviorSupported) {
|
|
57
|
+
htmlStyle.scrollBehavior = previousHtmlScrollBehavior;
|
|
58
|
+
bodyStyle.scrollBehavior = previousBodyScrollBehavior;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_canBeEnabled() {
|
|
63
|
+
const html = this._document.documentElement;
|
|
64
|
+
if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtYmxvY2stc2Nyb2xsLXN0cmF0ZWd5LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvc21hcnQtYmxvY2stc2Nyb2xsLXN0cmF0ZWd5LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxJQUFJLEVBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHckQsTUFBTSx1QkFBdUIsR0FBRyxzQkFBc0IsRUFBRSxDQUFDO0FBRXpELE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFBb0IsY0FBNkIsRUFBVSxZQUFnQyxFQUFFLFFBQWtCO1FBQTNGLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBUG5GLHdCQUFtQixHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDNUMsNEJBQXVCLEdBQWtDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDN0UsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixxQkFBZ0IsR0FBd0IsSUFBSSxDQUFDO1FBQzdDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztJQUNULENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUM7WUFFNUMsSUFB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QyxVQUFVLEVBQUU7WUFDeEUsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQ3NzUGl4ZWxWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBTY3JvbGxTdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IHN1cHBvcnRzU2Nyb2xsQmVoYXZpb3IgfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgVmlld3BvcnRSdWxlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgc2tpcCwgU3Vic2NyaXB0aW9uLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvdXRlclN0YXRlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcblxuY29uc3Qgc2Nyb2xsQmVoYXZpb3JTdXBwb3J0ZWQgPSBzdXBwb3J0c1Njcm9sbEJlaGF2aW9yKCk7XG5cbmV4cG9ydCBjbGFzcyBTbWFydEJsb2NrU2Nyb2xsU3RyYXRlZ3kgaW1wbGVtZW50cyBTY3JvbGxTdHJhdGVneSB7XG4gIHByaXZhdGUgX3ByZXZpb3VzSFRNTFN0eWxlcyA9IHsgdG9wOiAnJywgbGVmdDogJycgfTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNTY3JvbGxQb3NpdGlvbjogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0gPSB7IHRvcDogMCwgbGVmdDogMCB9O1xuICBwcml2YXRlIF9pc0VuYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIF91cmxTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kaWROYXZpZ2F0ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXdwb3J0UnVsZXI6IFZpZXdwb3J0UnVsZXIsIHByaXZhdGUgX3JvdXRlclN0YXRlOiBSb3V0ZXJTdGF0ZVNlcnZpY2UsIGRvY3VtZW50OiBEb2N1bWVudCkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZG9jdW1lbnQ7XG4gIH1cblxuICBhdHRhY2goKSB7XG4gICAgLy8gbm9vcFxuICB9XG5cbiAgZW5hYmxlKCkge1xuICAgIGlmICh0aGlzLl9jYW5CZUVuYWJsZWQoKSkge1xuICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgICAgdGhpcy5fcHJldmlvdXNTY3JvbGxQb3NpdGlvbiA9IHRoaXMuX3ZpZXdwb3J0UnVsZXIuZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgdGhpcy5fZGlkTmF2aWdhdGUgPSBmYWxzZTtcblxuICAgICAgdGhpcy5fcHJldmlvdXNIVE1MU3R5bGVzLmxlZnQgPSByb290LnN0eWxlLmxlZnQgfHwgJyc7XG4gICAgICB0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMudG9wID0gcm9vdC5zdHlsZS50b3AgfHwgJyc7XG5cbiAgICAgIHJvb3Quc3R5bGUubGVmdCA9IGNvZXJjZUNzc1BpeGVsVmFsdWUoLXRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24ubGVmdCk7XG4gICAgICByb290LnN0eWxlLnRvcCA9IGNvZXJjZUNzc1BpeGVsVmFsdWUoLXRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24udG9wKTtcbiAgICAgIHJvb3QuY2xhc3NMaXN0LmFkZCgnY2RrLWdsb2JhbC1zY3JvbGxibG9jaycpO1xuICAgICAgdGhpcy5faXNFbmFibGVkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5fdXJsU3Vic2NyaXB0aW9uID0gdGhpcy5fcm91dGVyU3RhdGUucm91dGUkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fZGlkTmF2aWdhdGUgPSB0cnVlO1xuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBkaXNhYmxlKCkge1xuICAgIGlmICh0aGlzLl9pc0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuX3VybFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgY29uc3QgaHRtbCA9IHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9kb2N1bWVudC5ib2R5O1xuICAgICAgY29uc3QgaHRtbFN0eWxlID0gaHRtbC5zdHlsZTtcbiAgICAgIGNvbnN0IGJvZHlTdHlsZSA9IGJvZHkuc3R5bGU7XG4gICAgICBjb25zdCBwcmV2aW91c0h0bWxTY3JvbGxCZWhhdmlvciA9IGh0bWxTdHlsZS5zY3JvbGxCZWhhdmlvciB8fCAnJztcbiAgICAgIGNvbnN0IHByZXZpb3VzQm9keVNjcm9sbEJlaGF2aW9yID0gYm9keVN0eWxlLnNjcm9sbEJlaGF2aW9yIHx8ICcnO1xuXG4gICAgICB0aGlzLl9pc0VuYWJsZWQgPSBmYWxzZTtcblxuICAgICAgaHRtbFN0eWxlLmxlZnQgPSB0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMubGVmdDtcbiAgICAgIGh0bWxTdHlsZS50b3AgPSB0aGlzLl9wcmV2aW91c0hUTUxTdHlsZXMudG9wO1xuICAgICAgaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdjZGstZ2xvYmFsLXNjcm9sbGJsb2NrJyk7XG5cbiAgICAgIGlmIChzY3JvbGxCZWhhdmlvclN1cHBvcnRlZCkge1xuICAgICAgICBodG1sU3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSBib2R5U3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnYXV0byc7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5fZGlkTmF2aWdhdGUpIHtcbiAgICAgICAgd2luZG93LnNjcm9sbCh0aGlzLl9wcmV2aW91c1Njcm9sbFBvc2l0aW9uLmxlZnQsIHRoaXMuX3ByZXZpb3VzU2Nyb2xsUG9zaXRpb24udG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNjcm9sbEJlaGF2aW9yU3VwcG9ydGVkKSB7XG4gICAgICAgIGh0bWxTdHlsZS5zY3JvbGxCZWhhdmlvciA9IHByZXZpb3VzSHRtbFNjcm9sbEJlaGF2aW9yO1xuICAgICAgICBib2R5U3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSBwcmV2aW91c0JvZHlTY3JvbGxCZWhhdmlvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jYW5CZUVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaHRtbCA9IHRoaXMuX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIGlmIChodG1sLmNsYXNzTGlzdC5jb250YWlucygnY2RrLWdsb2JhbC1zY3JvbGxibG9jaycpIHx8IHRoaXMuX2lzRW5hYmxlZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
|