@ethlete/core 1.10.0 → 2.0.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/esm2022/lib/components/structured-data/structured-data.component.mjs +38 -0
- package/esm2022/lib/directives/animatable/animatable.directive.mjs +114 -0
- package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +113 -0
- package/esm2022/lib/directives/animated-lifecycle/index.mjs +2 -0
- package/esm2022/lib/directives/animated-overlay/animated-overlay.directive.mjs +181 -0
- package/esm2022/lib/directives/animated-overlay/public-api.mjs +2 -0
- package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +38 -0
- package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +147 -0
- package/esm2022/lib/directives/delayable/delayable.directive.mjs +56 -0
- package/esm2022/lib/directives/let/let.directive.mjs +41 -0
- package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +69 -0
- package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +69 -0
- package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +175 -0
- package/esm2022/lib/directives/public-api.mjs +16 -0
- package/esm2022/lib/directives/repeat/repeat.directive.mjs +37 -0
- package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +32 -0
- package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +19 -0
- package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +35 -0
- package/esm2022/lib/directives/seo/seo.directive.mjs +167 -0
- package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +16 -0
- package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +16 -0
- package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +16 -0
- package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +16 -0
- package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +16 -0
- package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +16 -0
- package/esm2022/lib/services/click-observer.service.mjs +75 -0
- package/esm2022/lib/services/content-observer.service.mjs +81 -0
- package/esm2022/lib/services/focus-visible.service.mjs +35 -0
- package/esm2022/lib/services/public-api.mjs +8 -0
- package/esm2022/lib/services/resize-observer.service.mjs +77 -0
- package/esm2022/lib/services/router-state.service.mjs +116 -0
- package/esm2022/lib/services/viewport.service.mjs +169 -0
- package/esm2022/lib/types/angular.types.mjs +15 -0
- package/esm2022/lib/utils/destroy.utils.mjs +13 -0
- package/esm2022/lib/utils/public-api.mjs +13 -0
- package/esm2022/lib/utils/reactive-binding.util.mjs +112 -0
- package/esm2022/lib/utils/scrollable.utils.mjs +85 -0
- package/{fesm2020 → fesm2022}/ethlete-core.mjs +745 -605
- package/fesm2022/ethlete-core.mjs.map +1 -0
- package/lib/components/structured-data/structured-data.component.d.ts +1 -1
- package/lib/directives/animatable/animatable.directive.d.ts +1 -1
- package/lib/directives/animated-lifecycle/index.d.ts +1 -0
- package/lib/directives/animated-overlay/animated-overlay.directive.d.ts +62 -0
- package/lib/directives/animated-overlay/public-api.d.ts +1 -0
- package/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.d.ts +1 -1
- package/lib/directives/let/let.directive.d.ts +1 -1
- package/lib/directives/observe-content/observe-content.directive.d.ts +1 -1
- package/lib/directives/observe-resize/observe-resize.directive.d.ts +1 -1
- package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +1 -1
- package/lib/directives/public-api.d.ts +1 -0
- package/lib/directives/repeat/repeat.directive.d.ts +1 -1
- package/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.d.ts +1 -1
- package/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.d.ts +1 -1
- package/lib/services/public-api.d.ts +0 -1
- package/lib/types/angular.types.d.ts +0 -7
- package/lib/utils/destroy.utils.d.ts +1 -0
- package/lib/utils/public-api.d.ts +1 -0
- package/package.json +14 -19
- package/esm2020/lib/components/structured-data/structured-data.component.mjs +0 -37
- package/esm2020/lib/directives/animatable/animatable.directive.mjs +0 -115
- package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +0 -115
- package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +0 -37
- package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +0 -147
- package/esm2020/lib/directives/delayable/delayable.directive.mjs +0 -55
- package/esm2020/lib/directives/let/let.directive.mjs +0 -40
- package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +0 -68
- package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +0 -68
- package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +0 -176
- package/esm2020/lib/directives/public-api.mjs +0 -15
- package/esm2020/lib/directives/repeat/repeat.directive.mjs +0 -36
- package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +0 -31
- package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +0 -18
- package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +0 -34
- package/esm2020/lib/directives/seo/seo.directive.mjs +0 -166
- package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +0 -15
- package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +0 -15
- package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +0 -15
- package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +0 -15
- package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +0 -15
- package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +0 -15
- package/esm2020/lib/services/click-observer.service.mjs +0 -73
- package/esm2020/lib/services/content-observer.service.mjs +0 -79
- package/esm2020/lib/services/destroy.service.mjs +0 -23
- package/esm2020/lib/services/focus-visible.service.mjs +0 -34
- package/esm2020/lib/services/public-api.mjs +0 -9
- package/esm2020/lib/services/resize-observer.service.mjs +0 -75
- package/esm2020/lib/services/router-state.service.mjs +0 -115
- package/esm2020/lib/services/viewport.service.mjs +0 -168
- package/esm2020/lib/types/angular.types.mjs +0 -36
- package/esm2020/lib/utils/public-api.mjs +0 -12
- package/esm2020/lib/utils/reactive-binding.util.mjs +0 -111
- package/esm2020/lib/utils/scrollable.utils.mjs +0 -85
- package/fesm2015/ethlete-core.mjs +0 -2787
- package/fesm2015/ethlete-core.mjs.map +0 -1
- package/fesm2020/ethlete-core.mjs.map +0 -1
- package/lib/services/destroy.service.d.ts +0 -12
- /package/{esm2020 → esm2022}/ethlete-core.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/structured-data/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants/viewport.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/decorators/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/decorators/memo/memo.decorator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/decorators/memo/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/decorators/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/animatable/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/animatable/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/animated-lifecycle/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/click-outside/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/cursor-drag-scroll/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/delayable/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/let/let.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/let/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/observe-content/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/observe-resize/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/observe-scroll-state.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/observe-scroll-state.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/repeat/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-observer-first-element/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-observer-first-element/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-observer-ignore-target/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-observer-ignore-target/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-observer-last-element/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/scroll-observer-last-element/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/seo/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/normalize-game-result-type.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/normalize-match-participants.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/normalize-match-participants.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/normalize-match-score.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/normalize-match-score.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/normalize-match-state.constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/normalize-match-state.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-type/normalize-match-type.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/normalize-match-type/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/to-array/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/to-array/to-array.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/viewport.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/i18n.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types/viewport.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/animation.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/clamp.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/clone.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/cookie.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/equal.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/media-query-observable.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/rxjs.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/smart-block-scroll-strategy.utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/viewport.util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/validators/is-array-not-empty.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/validators/is-email.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/validators/must-match.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/validators/public-api.mjs +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
3
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
4
|
+
import { BehaviorSubject, combineLatest, map, shareReplay } from 'rxjs';
|
|
5
|
+
import { DEFAULT_VIEWPORT_CONFIG, VIEWPORT_CONFIG } from '../constants';
|
|
6
|
+
import { Memo } from '../decorators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/cdk/layout";
|
|
9
|
+
class ViewportService {
|
|
10
|
+
get isXs$() {
|
|
11
|
+
return this._isXs$.asObservable();
|
|
12
|
+
}
|
|
13
|
+
get isXs() {
|
|
14
|
+
return this._isXs$.value;
|
|
15
|
+
}
|
|
16
|
+
get isSm$() {
|
|
17
|
+
return this._isSm$.asObservable();
|
|
18
|
+
}
|
|
19
|
+
get isSm() {
|
|
20
|
+
return this._isSm$.value;
|
|
21
|
+
}
|
|
22
|
+
get isMd$() {
|
|
23
|
+
return this._isMd$.asObservable();
|
|
24
|
+
}
|
|
25
|
+
get isMd() {
|
|
26
|
+
return this._isMd$.value;
|
|
27
|
+
}
|
|
28
|
+
get isLg$() {
|
|
29
|
+
return this._isLg$.asObservable();
|
|
30
|
+
}
|
|
31
|
+
get isLg() {
|
|
32
|
+
return this._isLg$.value;
|
|
33
|
+
}
|
|
34
|
+
get isXl$() {
|
|
35
|
+
return this._isXl$.asObservable();
|
|
36
|
+
}
|
|
37
|
+
get isXl() {
|
|
38
|
+
return this._isXl$.value;
|
|
39
|
+
}
|
|
40
|
+
get is2Xl$() {
|
|
41
|
+
return this._is2Xl$.asObservable();
|
|
42
|
+
}
|
|
43
|
+
get is2Xl() {
|
|
44
|
+
return this._is2Xl$.value;
|
|
45
|
+
}
|
|
46
|
+
get currentViewport() {
|
|
47
|
+
return this.getCurrentViewport([this.isXs, this.isSm, this.isMd, this.isLg, this.isXl, this.is2Xl]);
|
|
48
|
+
}
|
|
49
|
+
constructor(_viewportConfig, _breakpointObserver) {
|
|
50
|
+
this._breakpointObserver = _breakpointObserver;
|
|
51
|
+
this._isXs$ = new BehaviorSubject(false);
|
|
52
|
+
this._isSm$ = new BehaviorSubject(false);
|
|
53
|
+
this._isMd$ = new BehaviorSubject(false);
|
|
54
|
+
this._isLg$ = new BehaviorSubject(false);
|
|
55
|
+
this._isXl$ = new BehaviorSubject(false);
|
|
56
|
+
this._is2Xl$ = new BehaviorSubject(false);
|
|
57
|
+
this.currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(map((val) => this.getCurrentViewport(val)), shareReplay(1));
|
|
58
|
+
this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;
|
|
59
|
+
this._observeDefaultBreakpoints();
|
|
60
|
+
}
|
|
61
|
+
observe(options) {
|
|
62
|
+
const mediaQuery = this._buildMediaQuery(options);
|
|
63
|
+
return this._breakpointObserver.observe(mediaQuery).pipe(map((x) => x.matches), shareReplay(1));
|
|
64
|
+
}
|
|
65
|
+
isMatched(options) {
|
|
66
|
+
const mediaQuery = this._buildMediaQuery(options);
|
|
67
|
+
return this._breakpointObserver.isMatched(mediaQuery);
|
|
68
|
+
}
|
|
69
|
+
_observeDefaultBreakpoints() {
|
|
70
|
+
this.observe({ max: 'xs' }).subscribe(this._isXs$);
|
|
71
|
+
this.observe({ min: 'sm', max: 'sm' }).subscribe(this._isSm$);
|
|
72
|
+
this.observe({ min: 'md', max: 'md' }).subscribe(this._isMd$);
|
|
73
|
+
this.observe({ min: 'lg', max: 'lg' }).subscribe(this._isLg$);
|
|
74
|
+
this.observe({ min: 'xl', max: 'xl' }).subscribe(this._isXl$);
|
|
75
|
+
this.observe({ min: '2xl' }).subscribe(this._is2Xl$);
|
|
76
|
+
}
|
|
77
|
+
_getViewportSize(type, option) {
|
|
78
|
+
const index = option === 'min' ? 0 : 1;
|
|
79
|
+
const size = this._viewportConfig.breakpoints[type][index];
|
|
80
|
+
if (size === Infinity || size === 0) {
|
|
81
|
+
return size;
|
|
82
|
+
}
|
|
83
|
+
if (option === 'min') {
|
|
84
|
+
return size;
|
|
85
|
+
}
|
|
86
|
+
// Due to scaling, the actual size of the viewport may be a decimal number.
|
|
87
|
+
// Eg. on Windows 11 with 150% scaling, the viewport size may be 1535.33px
|
|
88
|
+
// and thus not matching any of the default breakpoints.
|
|
89
|
+
return size + 0.9;
|
|
90
|
+
}
|
|
91
|
+
_buildMediaQuery(options) {
|
|
92
|
+
if (!options.min && !options.max) {
|
|
93
|
+
throw new Error('At least one of min or max must be defined');
|
|
94
|
+
}
|
|
95
|
+
const mediaQueryParts = [];
|
|
96
|
+
if (options.min) {
|
|
97
|
+
if (typeof options.min === 'number') {
|
|
98
|
+
mediaQueryParts.push(`(min-width: ${options.min}px)`);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
mediaQueryParts.push(`(min-width: ${this._getViewportSize(options.min, 'min')}px)`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (options.min && options.max) {
|
|
105
|
+
mediaQueryParts.push('and');
|
|
106
|
+
}
|
|
107
|
+
if (options.max) {
|
|
108
|
+
if (typeof options.max === 'number') {
|
|
109
|
+
mediaQueryParts.push(`(max-width: ${options.max}px)`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
mediaQueryParts.push(`(max-width: ${this._getViewportSize(options.max, 'max')}px)`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return mediaQueryParts.join(' ');
|
|
116
|
+
}
|
|
117
|
+
getCurrentViewport([isXs, isSm, isMd, isLg, isXl, is2Xl]) {
|
|
118
|
+
if (isXs) {
|
|
119
|
+
return 'xs';
|
|
120
|
+
}
|
|
121
|
+
else if (isSm) {
|
|
122
|
+
return 'sm';
|
|
123
|
+
}
|
|
124
|
+
else if (isMd) {
|
|
125
|
+
return 'md';
|
|
126
|
+
}
|
|
127
|
+
else if (isLg) {
|
|
128
|
+
return 'lg';
|
|
129
|
+
}
|
|
130
|
+
else if (isXl) {
|
|
131
|
+
return 'xl';
|
|
132
|
+
}
|
|
133
|
+
else if (is2Xl) {
|
|
134
|
+
return '2xl';
|
|
135
|
+
}
|
|
136
|
+
return 'xs';
|
|
137
|
+
}
|
|
138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ViewportService, deps: [{ token: VIEWPORT_CONFIG, optional: true }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
139
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ViewportService, providedIn: 'root' }); }
|
|
140
|
+
}
|
|
141
|
+
__decorate([
|
|
142
|
+
Memo(),
|
|
143
|
+
__metadata("design:type", Function),
|
|
144
|
+
__metadata("design:paramtypes", [String, String]),
|
|
145
|
+
__metadata("design:returntype", void 0)
|
|
146
|
+
], ViewportService.prototype, "_getViewportSize", null);
|
|
147
|
+
__decorate([
|
|
148
|
+
Memo({
|
|
149
|
+
resolver: (v) => {
|
|
150
|
+
return `${v.min ?? ''}-${v.max ?? ''}`;
|
|
151
|
+
},
|
|
152
|
+
}),
|
|
153
|
+
__metadata("design:type", Function),
|
|
154
|
+
__metadata("design:paramtypes", [Object]),
|
|
155
|
+
__metadata("design:returntype", void 0)
|
|
156
|
+
], ViewportService.prototype, "_buildMediaQuery", null);
|
|
157
|
+
export { ViewportService };
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ViewportService, decorators: [{
|
|
159
|
+
type: Injectable,
|
|
160
|
+
args: [{
|
|
161
|
+
providedIn: 'root',
|
|
162
|
+
}]
|
|
163
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
164
|
+
type: Inject,
|
|
165
|
+
args: [VIEWPORT_CONFIG]
|
|
166
|
+
}, {
|
|
167
|
+
type: Optional
|
|
168
|
+
}] }, { type: i1.BreakpointObserver }]; }, propDecorators: { _getViewportSize: [], _buildMediaQuery: [] } });
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld3BvcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NlcnZpY2VzL3ZpZXdwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSXJDLE1BR2EsZUFBZTtJQVUxQixJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFN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TyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQU85RDtRQUNDLElBQUksSUFBSSxFQUFFO1lBQ1IsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksSUFBSSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksSUFBSSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksSUFBSSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksSUFBSSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjthQUFNLElBQUksS0FBSyxFQUFFO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBaExVLGVBQWUsa0JBb0VoQixlQUFlO2tIQXBFZCxlQUFlLGNBRmQsTUFBTTs7QUFzR1Y7SUFEUCxJQUFJLEVBQUU7Ozs7dURBaUJOO0FBT087SUFMUCxJQUFJLENBQUM7UUFDSixRQUFRLEVBQUUsQ0FBQyxDQUF5QixFQUFFLEVBQUU7WUFDdEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLENBQUM7UUFDekMsQ0FBQztLQUNGLENBQUM7Ozs7dURBNkJEO1NBdkpVLGVBQWU7MkZBQWYsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQXFFSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUFHLFFBQVE7NkVBZ0M1QixnQkFBZ0IsTUF1QmhCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBERUZBVUxUX1ZJRVdQT1JUX0NPTkZJRywgVklFV1BPUlRfQ09ORklHIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE1lbW8gfSBmcm9tICcuLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEJyZWFrcG9pbnQsIFZpZXdwb3J0Q29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQnVpbGRNZWRpYVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vdmlld3BvcnQudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVmlld3BvcnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfdmlld3BvcnRDb25maWc6IFZpZXdwb3J0Q29uZmlnO1xuXG4gIHByaXZhdGUgX2lzWHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2lzU20kID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2lzTWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2lzTGckID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2lzWGwkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgX2lzMlhsJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGdldCBpc1hzJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNYcygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNYcyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNTbSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU20kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzU20oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU20kLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzTWQkKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01kJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc01kKCkge1xuICAgIHJldHVybiB0aGlzLl9pc01kJC52YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0xnJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNMZyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgaXNMZygpIHtcbiAgICByZXR1cm4gdGhpcy5faXNMZyQudmFsdWU7XG4gIH1cblxuICBnZXQgaXNYbCQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzWGwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzWGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzWGwkLnZhbHVlO1xuICB9XG5cbiAgZ2V0IGlzMlhsJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXMyWGwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IGlzMlhsKCkge1xuICAgIHJldHVybiB0aGlzLl9pczJYbCQudmFsdWU7XG4gIH1cblxuICBjdXJyZW50Vmlld3BvcnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc1hzJCwgdGhpcy5pc1NtJCwgdGhpcy5pc01kJCwgdGhpcy5pc0xnJCwgdGhpcy5pc1hsJCwgdGhpcy5pczJYbCRdKS5waXBlKFxuICAgIG1hcCgodmFsKSA9PiB0aGlzLmdldEN1cnJlbnRWaWV3cG9ydCh2YWwpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBnZXQgY3VycmVudFZpZXdwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRWaWV3cG9ydChbdGhpcy5pc1hzLCB0aGlzLmlzU20sIHRoaXMuaXNNZCwgdGhpcy5pc0xnLCB0aGlzLmlzWGwsIHRoaXMuaXMyWGxdKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVklFV1BPUlRfQ09ORklHKSBAT3B0aW9uYWwoKSBfdmlld3BvcnRDb25maWc6IFZpZXdwb3J0Q29uZmlnIHwgbnVsbCxcbiAgICBwcml2YXRlIF9icmVha3BvaW50T2JzZXJ2ZXI6IEJyZWFrcG9pbnRPYnNlcnZlcixcbiAgKSB7XG4gICAgdGhpcy5fdmlld3BvcnRDb25maWcgPSBfdmlld3BvcnRDb25maWcgfHwgREVGQVVMVF9WSUVXUE9SVF9DT05GSUc7XG4gICAgdGhpcy5fb2JzZXJ2ZURlZmF1bHRCcmVha3BvaW50cygpO1xuICB9XG5cbiAgb2JzZXJ2ZShvcHRpb25zOiB7IG1pbj86IG51bWJlciB8IEJyZWFrcG9pbnQ7IG1heD86IG51bWJlciB8IEJyZWFrcG9pbnQgfSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG1lZGlhUXVlcnkgPSB0aGlzLl9idWlsZE1lZGlhUXVlcnkob3B0aW9ucyk7XG5cbiAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUobWVkaWFRdWVyeSkucGlwZShcbiAgICAgIG1hcCgoeCkgPT4geC5tYXRjaGVzKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG4gIH1cblxuICBpc01hdGNoZWQob3B0aW9uczogeyBtaW4/OiBudW1iZXIgfCBCcmVha3BvaW50OyBtYXg/OiBudW1iZXIgfCBCcmVha3BvaW50IH0pOiBib29sZWFuIHtcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gdGhpcy5fYnVpbGRNZWRpYVF1ZXJ5KG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRPYnNlcnZlci5pc01hdGNoZWQobWVkaWFRdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIF9vYnNlcnZlRGVmYXVsdEJyZWFrcG9pbnRzKCkge1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1heDogJ3hzJyB9KS5zdWJzY3JpYmUodGhpcy5faXNYcyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3NtJywgbWF4OiAnc20nIH0pLnN1YnNjcmliZSh0aGlzLl9pc1NtJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnbWQnLCBtYXg6ICdtZCcgfSkuc3Vic2NyaWJlKHRoaXMuX2lzTWQkKTtcbiAgICB0aGlzLm9ic2VydmUoeyBtaW46ICdsZycsIG1heDogJ2xnJyB9KS5zdWJzY3JpYmUodGhpcy5faXNMZyQpO1xuICAgIHRoaXMub2JzZXJ2ZSh7IG1pbjogJ3hsJywgbWF4OiAneGwnIH0pLnN1YnNjcmliZSh0aGlzLl9pc1hsJCk7XG4gICAgdGhpcy5vYnNlcnZlKHsgbWluOiAnMnhsJyB9KS5zdWJzY3JpYmUodGhpcy5faXMyWGwkKTtcbiAgfVxuXG4gIEBNZW1vKClcbiAgcHJpdmF0ZSBfZ2V0Vmlld3BvcnRTaXplKHR5cGU6IEJyZWFrcG9pbnQsIG9wdGlvbjogJ21pbicgfCAnbWF4Jykge1xuICAgIGNvbnN0IGluZGV4ID0gb3B0aW9uID09PSAnbWluJyA/IDAgOiAxO1xuICAgIGNvbnN0IHNpemUgPSB0aGlzLl92aWV3cG9ydENvbmZpZy5icmVha3BvaW50c1t0eXBlXVtpbmRleF07XG5cbiAgICBpZiAoc2l6ZSA9PT0gSW5maW5pdHkgfHwgc2l6ZSA9PT0gMCkge1xuICAgICAgcmV0dXJuIHNpemU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbiA9PT0gJ21pbicpIHtcbiAgICAgIHJldHVybiBzaXplO1xuICAgIH1cblxuICAgIC8vIER1ZSB0byBzY2FsaW5nLCB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHZpZXdwb3J0IG1heSBiZSBhIGRlY2ltYWwgbnVtYmVyLlxuICAgIC8vIEVnLiBvbiBXaW5kb3dzIDExIHdpdGggMTUwJSBzY2FsaW5nLCB0aGUgdmlld3BvcnQgc2l6ZSBtYXkgYmUgMTUzNS4zM3B4XG4gICAgLy8gYW5kIHRodXMgbm90IG1hdGNoaW5nIGFueSBvZiB0aGUgZGVmYXVsdCBicmVha3BvaW50cy5cbiAgICByZXR1cm4gc2l6ZSArIDAuOTtcbiAgfVxuXG4gIEBNZW1vKHtcbiAgICByZXNvbHZlcjogKHY6IEJ1aWxkTWVkaWFRdWVyeU9wdGlvbnMpID0+IHtcbiAgICAgIHJldHVybiBgJHt2Lm1pbiA/PyAnJ30tJHt2Lm1heCA/PyAnJ31gO1xuICAgIH0sXG4gIH0pXG4gIHByaXZhdGUgX2J1aWxkTWVkaWFRdWVyeShvcHRpb25zOiBCdWlsZE1lZGlhUXVlcnlPcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLm1pbiAmJiAhb3B0aW9ucy5tYXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3Qgb25lIG9mIG1pbiBvciBtYXggbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFRdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKG9wdGlvbnMubWluKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMubWluID09PSAnbnVtYmVyJykge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1pbi13aWR0aDogJHtvcHRpb25zLm1pbn1weClgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lZGlhUXVlcnlQYXJ0cy5wdXNoKGAobWluLXdpZHRoOiAke3RoaXMuX2dldFZpZXdwb3J0U2l6ZShvcHRpb25zLm1pbiwgJ21pbicpfXB4KWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1pbiAmJiBvcHRpb25zLm1heCkge1xuICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goJ2FuZCcpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLm1heCkge1xuICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm1heCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgbWVkaWFRdWVyeVBhcnRzLnB1c2goYChtYXgtd2lkdGg6ICR7b3B0aW9ucy5tYXh9cHgpYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZWRpYVF1ZXJ5UGFydHMucHVzaChgKG1heC13aWR0aDogJHt0aGlzLl9nZXRWaWV3cG9ydFNpemUob3B0aW9ucy5tYXgsICdtYXgnKX1weClgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWVkaWFRdWVyeVBhcnRzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VycmVudFZpZXdwb3J0KFtpc1hzLCBpc1NtLCBpc01kLCBpc0xnLCBpc1hsLCBpczJYbF06IFtcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgICBib29sZWFuLFxuICAgIGJvb2xlYW4sXG4gICAgYm9vbGVhbixcbiAgXSk6IEJyZWFrcG9pbnQge1xuICAgIGlmIChpc1hzKSB7XG4gICAgICByZXR1cm4gJ3hzJztcbiAgICB9IGVsc2UgaWYgKGlzU20pIHtcbiAgICAgIHJldHVybiAnc20nO1xuICAgIH0gZWxzZSBpZiAoaXNNZCkge1xuICAgICAgcmV0dXJuICdtZCc7XG4gICAgfSBlbHNlIGlmIChpc0xnKSB7XG4gICAgICByZXR1cm4gJ2xnJztcbiAgICB9IGVsc2UgaWYgKGlzWGwpIHtcbiAgICAgIHJldHVybiAneGwnO1xuICAgIH0gZWxzZSBpZiAoaXMyWGwpIHtcbiAgICAgIHJldHVybiAnMnhsJztcbiAgICB9XG5cbiAgICByZXR1cm4gJ3hzJztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { QueryList } from '@angular/core';
|
|
3
|
+
export class TypedQueryList extends QueryList {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this[_a] = () => {
|
|
7
|
+
return super[Symbol.iterator]();
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
static { _a = Symbol.iterator; }
|
|
11
|
+
get changes() {
|
|
12
|
+
return super.changes;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3R5cGVzL2FuZ3VsYXIudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFzQmhELE1BQU0sT0FBTyxjQUFrQixTQUFRLFNBQXdCO0lBQS9EOztRQUNXLFFBQWlCLEdBQXNCLEdBQUcsRUFBRTtZQUNuRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQWlCLENBQUM7UUFDakQsQ0FBQyxDQUFDO0lBS0osQ0FBQztrQkFQVyxNQUFNLENBQUMsUUFBUTtJQUl6QixJQUFhLE9BQU87UUFDbEIsT0FBTyxLQUFLLENBQUMsT0FBd0MsQ0FBQztJQUN4RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVyeUxpc3QsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTmdDbGFzc1R5cGUgPVxuICB8IHN0cmluZ1xuICB8IHN0cmluZ1tdXG4gIHwgU2V0PHN0cmluZz5cbiAgfCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgW2tsYXNzOiBzdHJpbmddOiBhbnk7XG4gICAgfVxuICB8IG51bGxcbiAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIEhvc3REaXJlY3RpdmUgPVxuICB8IFR5cGU8dW5rbm93bj5cbiAgfCB7XG4gICAgICBkaXJlY3RpdmU6IFR5cGU8dW5rbm93bj47XG4gICAgICBpbnB1dHM/OiBzdHJpbmdbXTtcbiAgICAgIG91dHB1dHM/OiBzdHJpbmdbXTtcbiAgICB9O1xuXG5leHBvcnQgY2xhc3MgVHlwZWRRdWVyeUxpc3Q8VD4gZXh0ZW5kcyBRdWVyeUxpc3Q8VCB8IHVuZGVmaW5lZD4ge1xuICBvdmVycmlkZSBbU3ltYm9sLml0ZXJhdG9yXTogKCkgPT4gSXRlcmF0b3I8VD4gPSAoKSA9PiB7XG4gICAgcmV0dXJuIHN1cGVyW1N5bWJvbC5pdGVyYXRvcl0oKSBhcyBJdGVyYXRvcjxUPjtcbiAgfTtcblxuICBvdmVycmlkZSBnZXQgY2hhbmdlcygpOiBPYnNlcnZhYmxlPFR5cGVkUXVlcnlMaXN0PFQ+PiB7XG4gICAgcmV0dXJuIHN1cGVyLmNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxUeXBlZFF1ZXJ5TGlzdDxUPj47XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DestroyRef, assertInInjectionContext, inject } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
export const createDestroy = () => {
|
|
4
|
+
assertInInjectionContext(createDestroy);
|
|
5
|
+
const destroy$ = new Subject();
|
|
6
|
+
const ref = inject(DestroyRef);
|
|
7
|
+
ref.onDestroy(() => {
|
|
8
|
+
destroy$.next(true);
|
|
9
|
+
destroy$.complete();
|
|
10
|
+
});
|
|
11
|
+
return destroy$.asObservable();
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL2Rlc3Ryb3kudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQ2hDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRS9CLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDakMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZURlc3Ryb3kgPSAoKSA9PiB7XG4gIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChjcmVhdGVEZXN0cm95KTtcblxuICBjb25zdCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3QgcmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgIGRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlc3Ryb3kkLmFzT2JzZXJ2YWJsZSgpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './animation.utils';
|
|
2
|
+
export * from './clamp.util';
|
|
3
|
+
export * from './clone.util';
|
|
4
|
+
export * from './cookie.util';
|
|
5
|
+
export * from './destroy.utils';
|
|
6
|
+
export * from './equal.util';
|
|
7
|
+
export * from './media-query-observable.util';
|
|
8
|
+
export * from './reactive-binding.util';
|
|
9
|
+
export * from './rxjs.utils';
|
|
10
|
+
export * from './scrollable.utils';
|
|
11
|
+
export * from './smart-block-scroll-strategy.utils';
|
|
12
|
+
export * from './viewport.util';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5pbWF0aW9uLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xhbXAudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nsb25lLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jb29raWUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Rlc3Ryb3kudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9lcXVhbC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVkaWEtcXVlcnktb2JzZXJ2YWJsZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhY3RpdmUtYmluZGluZy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcnhqcy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydC1ibG9jay1zY3JvbGwtc3RyYXRlZ3kudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3cG9ydC51dGlsJztcbiJdfQ==
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ElementRef, assertInInjectionContext, inject } from '@angular/core';
|
|
2
|
+
import { distinctUntilChanged, takeUntil } from 'rxjs';
|
|
3
|
+
import { createDestroy } from './destroy.utils';
|
|
4
|
+
const isAttributeRenderBinding = (value) => typeof value === 'boolean';
|
|
5
|
+
const isAttributeValueBinding = (value) => typeof value === 'object';
|
|
6
|
+
export const createReactiveBindings = (...values) => {
|
|
7
|
+
assertInInjectionContext(createReactiveBindings);
|
|
8
|
+
const rootElementRef = inject(ElementRef);
|
|
9
|
+
const destroy$ = createDestroy();
|
|
10
|
+
const subscriptions = [];
|
|
11
|
+
const pushedAttributes = [];
|
|
12
|
+
const defaults = {};
|
|
13
|
+
const push = (value) => {
|
|
14
|
+
const { attribute, observable, elementRef } = value;
|
|
15
|
+
const elRef = elementRef || rootElementRef;
|
|
16
|
+
const attributes = Array.isArray(attribute) ? attribute : [attribute];
|
|
17
|
+
pushedAttributes.push(attributes);
|
|
18
|
+
for (const attribute of attributes) {
|
|
19
|
+
if (!defaults[attribute]) {
|
|
20
|
+
defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const subscription = observable
|
|
24
|
+
.pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => {
|
|
25
|
+
if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {
|
|
26
|
+
return a === b;
|
|
27
|
+
}
|
|
28
|
+
else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {
|
|
29
|
+
return a.render === b.render && a.value === b.value;
|
|
30
|
+
}
|
|
31
|
+
return false;
|
|
32
|
+
}))
|
|
33
|
+
.subscribe((value) => {
|
|
34
|
+
const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];
|
|
35
|
+
for (const attribute of currentAttributes) {
|
|
36
|
+
const isSingleClassMutation = attribute.startsWith('class.');
|
|
37
|
+
const isMultipleClassMutation = attribute === 'class';
|
|
38
|
+
const render = isAttributeRenderBinding(value) ? value : value.render;
|
|
39
|
+
if (isSingleClassMutation) {
|
|
40
|
+
const className = attribute.replace('class.', '');
|
|
41
|
+
if (!className) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (!render) {
|
|
45
|
+
elRef.nativeElement.classList.remove(className);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
elRef.nativeElement.classList.add(className);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else if (isMultipleClassMutation) {
|
|
52
|
+
const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;
|
|
53
|
+
if (!classes) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (!render) {
|
|
57
|
+
elRef.nativeElement.classList.remove(...classes.split(' '));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
elRef.nativeElement.classList.add(...classes.split(' '));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;
|
|
65
|
+
if (!attribute) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (!render) {
|
|
69
|
+
elRef.nativeElement.removeAttribute(attribute);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
subscriptions.push({ attributes, subscription });
|
|
78
|
+
};
|
|
79
|
+
const remove = (...attributes) => {
|
|
80
|
+
for (const attribute of attributes) {
|
|
81
|
+
const sub = subscriptions.find((s) => s.attributes.includes(attribute));
|
|
82
|
+
const attributeStack = pushedAttributes.find((a) => a.includes(attribute));
|
|
83
|
+
if (sub) {
|
|
84
|
+
sub.attributes = sub.attributes.filter((a) => a !== attribute);
|
|
85
|
+
attributeStack?.splice(attributeStack.indexOf(attribute), 1);
|
|
86
|
+
if (sub.attributes.length === 0) {
|
|
87
|
+
sub.subscription.unsubscribe();
|
|
88
|
+
subscriptions.splice(subscriptions.indexOf(sub), 1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const reset = () => {
|
|
94
|
+
for (const attribute in defaults) {
|
|
95
|
+
if (defaults[attribute] === undefined) {
|
|
96
|
+
rootElementRef.nativeElement.removeAttribute(attribute);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
for (const value of values) {
|
|
104
|
+
push(value);
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
push,
|
|
108
|
+
remove,
|
|
109
|
+
reset,
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3RpdmUtYmluZGluZy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvcmVhY3RpdmUtYmluZGluZy51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBNEIsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQWVoRCxNQUFNLHdCQUF3QixHQUFHLENBQy9CLEtBQXFELEVBQ3BCLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDakUsTUFBTSx1QkFBdUIsR0FBRyxDQUM5QixLQUFxRCxFQUNyQixFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDO0FBUS9ELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxNQUE0QixFQUF5QixFQUFFO0lBQy9GLHdCQUF3QixDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFFakQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQUNuRSxNQUFNLFFBQVEsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUVqQyxNQUFNLGFBQWEsR0FBMkQsRUFBRSxDQUFDO0lBQ2pGLE1BQU0sZ0JBQWdCLEdBQWUsRUFBRSxDQUFDO0lBRXhDLE1BQU0sUUFBUSxHQUF1QyxFQUFFLENBQUM7SUFFeEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUF5QixFQUFFLEVBQUU7UUFDekMsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ3BELE1BQU0sS0FBSyxHQUFHLFVBQVUsSUFBSSxjQUFjLENBQUM7UUFD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LENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7Z0JBQy9ELGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFFN0QsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQy9CLEdBQUcsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQy9CLGFBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDckQ7YUFDRjtTQUNGO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxFQUFFO1lBQ2hDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtnQkFDckMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDekQ7aUJBQU07Z0JBQ0wsY0FBYyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQVcsQ0FBQyxDQUFDO2FBQ3JGO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRTtRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDYjtJQUVELE9BQU87UUFDTCxJQUFJO1FBQ0osTUFBTTtRQUNOLEtBQUs7S0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY3JlYXRlRGVzdHJveSB9IGZyb20gJy4vZGVzdHJveS51dGlscyc7XG5cbnR5cGUgQXR0cmlidXRlVmFsdWVCaW5kaW5nID0ge1xuICByZW5kZXI6IGJvb2xlYW47XG4gIHZhbHVlOiBib29sZWFuIHwgc3RyaW5nIHwgbnVtYmVyO1xufTtcblxudHlwZSBBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgUmVhY3RpdmVBdHRyaWJ1dGVzID0ge1xuICBhdHRyaWJ1dGU6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBvYnNlcnZhYmxlOiBPYnNlcnZhYmxlPEF0dHJpYnV0ZVZhbHVlQmluZGluZyB8IEF0dHJpYnV0ZVJlbmRlckJpbmRpbmc+O1xuICBlbGVtZW50UmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG59O1xuXG5jb25zdCBpc0F0dHJpYnV0ZVJlbmRlckJpbmRpbmcgPSAoXG4gIHZhbHVlOiBBdHRyaWJ1dGVWYWx1ZUJpbmRpbmcgfCBBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nLFxuKTogdmFsdWUgaXMgQXR0cmlidXRlUmVuZGVyQmluZGluZyA9PiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJztcbmNvbnN0IGlzQXR0cmlidXRlVmFsdWVCaW5kaW5nID0gKFxuICB2YWx1ZTogQXR0cmlidXRlVmFsdWVCaW5kaW5nIHwgQXR0cmlidXRlUmVuZGVyQmluZGluZyxcbik6IHZhbHVlIGlzIEF0dHJpYnV0ZVZhbHVlQmluZGluZyA9PiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aXZlQmluZGluZ1Jlc3VsdCB7XG4gIHJlc2V0OiAoKSA9PiB2b2lkO1xuICByZW1vdmU6ICguLi5hdHRyaWJ1dGVzOiBzdHJpbmdbXSkgPT4gdm9pZDtcbiAgcHVzaDogKHZhbHVlOiBSZWFjdGl2ZUF0dHJpYnV0ZXMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWFjdGl2ZUJpbmRpbmdzID0gKC4uLnZhbHVlczogUmVhY3RpdmVBdHRyaWJ1dGVzW10pOiBSZWFjdGl2ZUJpbmRpbmdSZXN1bHQgPT4ge1xuICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyk7XG5cbiAgY29uc3Qgcm9vdEVsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBjb25zdCBkZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcblxuICBjb25zdCBzdWJzY3JpcHRpb25zOiB7IGF0dHJpYnV0ZXM6IHN0cmluZ1tdOyBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB9W10gPSBbXTtcbiAgY29uc3QgcHVzaGVkQXR0cmlidXRlczogc3RyaW5nW11bXSA9IFtdO1xuXG4gIGNvbnN0IGRlZmF1bHRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+ID0ge307XG5cbiAgY29uc3QgcHVzaCA9ICh2YWx1ZTogUmVhY3RpdmVBdHRyaWJ1dGVzKSA9PiB7XG4gICAgY29uc3QgeyBhdHRyaWJ1dGUsIG9ic2VydmFibGUsIGVsZW1lbnRSZWYgfSA9IHZhbHVlO1xuICAgIGNvbnN0IGVsUmVmID0gZWxlbWVudFJlZiB8fCByb290RWxlbWVudFJlZjtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gQXJyYXkuaXNBcnJheShhdHRyaWJ1dGUpID8gYXR0cmlidXRlIDogW2F0dHJpYnV0ZV07XG4gICAgcHVzaGVkQXR0cmlidXRlcy5wdXNoKGF0dHJpYnV0ZXMpO1xuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgaWYgKCFkZWZhdWx0c1thdHRyaWJ1dGVdKSB7XG4gICAgICAgIGRlZmF1bHRzW2F0dHJpYnV0ZV0gPSBlbFJlZi5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpIHx8IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBvYnNlcnZhYmxlXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKGRlc3Ryb3kkKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKGEsIGIpID0+IHtcbiAgICAgICAgICBpZiAoaXNBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nKGEpICYmIGlzQXR0cmlidXRlUmVuZGVyQmluZGluZyhiKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPT09IGI7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0F0dHJpYnV0ZVZhbHVlQmluZGluZyhhKSAmJiBpc0F0dHJpYnV0ZVZhbHVlQmluZGluZyhiKSkge1xuICAgICAgICAgICAgcmV0dXJuIGEucmVuZGVyID09PSBiLnJlbmRlciAmJiBhLnZhbHVlID09PSBiLnZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50QXR0cmlidXRlcyA9IHB1c2hlZEF0dHJpYnV0ZXMuZmluZCgocykgPT4gcy5zb21lKChjdXJyZW50KSA9PiBhdHRyaWJ1dGVzLmluY2x1ZGVzKGN1cnJlbnQpKSkgfHwgW107XG5cbiAgICAgICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgY3VycmVudEF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICBjb25zdCBpc1NpbmdsZUNsYXNzTXV0YXRpb24gPSBhdHRyaWJ1dGUuc3RhcnRzV2l0aCgnY2xhc3MuJyk7XG4gICAgICAgICAgY29uc3QgaXNNdWx0aXBsZUNsYXNzTXV0YXRpb24gPSBhdHRyaWJ1dGUgPT09ICdjbGFzcyc7XG5cbiAgICAgICAgICBjb25zdCByZW5kZXIgPSBpc0F0dHJpYnV0ZVJlbmRlckJpbmRpbmcodmFsdWUpID8gdmFsdWUgOiB2YWx1ZS5yZW5kZXI7XG5cbiAgICAgICAgICBpZiAoaXNTaW5nbGVDbGFzc011dGF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc05hbWUgPSBhdHRyaWJ1dGUucmVwbGFjZSgnY2xhc3MuJywgJycpO1xuXG4gICAgICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFyZW5kZXIpIHtcbiAgICAgICAgICAgICAgZWxSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGVDbGFzc011dGF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc2VzID0gaXNBdHRyaWJ1dGVSZW5kZXJCaW5kaW5nKHZhbHVlKSA/ICcnIDogYCR7dmFsdWUudmFsdWV9YDtcblxuICAgICAgICAgICAgaWYgKCFjbGFzc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXJlbmRlcikge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoLi4uY2xhc3Nlcy5zcGxpdCgnICcpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGVsUmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCguLi5jbGFzc2VzLnNwbGl0KCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZSA9IGlzQXR0cmlidXRlUmVuZGVyQmluZGluZyh2YWx1ZSkgPyB0cnVlIDogYCR7dmFsdWUudmFsdWV9YDtcblxuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghcmVuZGVyKSB7XG4gICAgICAgICAgICAgIGVsUmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBlbFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGAke2F0dHJpYnV0ZVZhbHVlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBzdWJzY3JpcHRpb25zLnB1c2goeyBhdHRyaWJ1dGVzLCBzdWJzY3JpcHRpb24gfSk7XG4gIH07XG5cbiAgY29uc3QgcmVtb3ZlID0gKC4uLmF0dHJpYnV0ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGUgb2YgYXR0cmlidXRlcykge1xuICAgICAgY29uc3Qgc3ViID0gc3Vic2NyaXB0aW9ucy5maW5kKChzKSA9PiBzLmF0dHJpYnV0ZXMuaW5jbHVkZXMoYXR0cmlidXRlKSk7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVTdGFjayA9IHB1c2hlZEF0dHJpYnV0ZXMuZmluZCgoYSkgPT4gYS5pbmNsdWRlcyhhdHRyaWJ1dGUpKTtcblxuICAgICAgaWYgKHN1Yikge1xuICAgICAgICBzdWIuYXR0cmlidXRlcyA9IHN1Yi5hdHRyaWJ1dGVzLmZpbHRlcigoYSkgPT4gYSAhPT0gYXR0cmlidXRlKTtcbiAgICAgICAgYXR0cmlidXRlU3RhY2s/LnNwbGljZShhdHRyaWJ1dGVTdGFjay5pbmRleE9mKGF0dHJpYnV0ZSksIDEpO1xuXG4gICAgICAgIGlmIChzdWIuYXR0cmlidXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBzdWIuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9ucy5zcGxpY2Uoc3Vic2NyaXB0aW9ucy5pbmRleE9mKHN1YiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlc2V0ID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgYXR0cmlidXRlIGluIGRlZmF1bHRzKSB7XG4gICAgICBpZiAoZGVmYXVsdHNbYXR0cmlidXRlXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJvb3RFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb290RWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShhdHRyaWJ1dGUsIGRlZmF1bHRzW2F0dHJpYnV0ZV0gYXMgc3RyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICBwdXNoKHZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHVzaCxcbiAgICByZW1vdmUsXG4gICAgcmVzZXQsXG4gIH07XG59O1xuIl19
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export const elementCanScroll = (element) => {
|
|
2
|
+
const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;
|
|
3
|
+
return scrollHeight > clientHeight || scrollWidth > clientWidth;
|
|
4
|
+
};
|
|
5
|
+
export const isElementVisible = (options) => {
|
|
6
|
+
let { container } = options;
|
|
7
|
+
const { element } = options;
|
|
8
|
+
if (!element || container === null) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
container ||= document.documentElement;
|
|
12
|
+
const canScroll = elementCanScroll(container);
|
|
13
|
+
if (!canScroll) {
|
|
14
|
+
return { inline: true, block: true };
|
|
15
|
+
}
|
|
16
|
+
const elementRect = element.getBoundingClientRect();
|
|
17
|
+
const containerRect = container.getBoundingClientRect();
|
|
18
|
+
const elementInlineStart = elementRect.left;
|
|
19
|
+
const elementBlockStart = elementRect.top;
|
|
20
|
+
const containerInlineStart = containerRect.left;
|
|
21
|
+
const containerBlockStart = containerRect.top;
|
|
22
|
+
const elementInlineEnd = elementInlineStart + elementRect.width;
|
|
23
|
+
const elementBlockEnd = elementBlockStart + elementRect.height;
|
|
24
|
+
const containerInlineEnd = containerInlineStart + containerRect.width;
|
|
25
|
+
const containerBlockEnd = containerBlockStart + containerRect.height;
|
|
26
|
+
const isElementInlineVisible = elementInlineStart >= containerInlineStart && elementInlineEnd <= containerInlineEnd;
|
|
27
|
+
const isElementBlockVisible = elementBlockStart >= containerBlockStart && elementBlockEnd <= containerBlockEnd;
|
|
28
|
+
return { inline: isElementInlineVisible, block: isElementBlockVisible };
|
|
29
|
+
};
|
|
30
|
+
export const scrollToElement = (options) => {
|
|
31
|
+
let { container } = options;
|
|
32
|
+
const { element, direction, behavior = 'smooth', origin = 'nearest', scrollBlockMargin = 0, scrollInlineMargin = 0, } = options;
|
|
33
|
+
if (!element || container === null) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
container ||= document.documentElement;
|
|
37
|
+
const canScroll = elementCanScroll(container);
|
|
38
|
+
if (!canScroll) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const elementRect = element.getBoundingClientRect();
|
|
42
|
+
const containerRect = container.getBoundingClientRect();
|
|
43
|
+
const elementInlineSize = elementRect.width;
|
|
44
|
+
const elementBlockSize = elementRect.height;
|
|
45
|
+
const containerInlineSize = containerRect.width;
|
|
46
|
+
const containerBlockSize = containerRect.height;
|
|
47
|
+
const elementInlineStart = elementRect.left;
|
|
48
|
+
const elementBlockStart = elementRect.top;
|
|
49
|
+
const containerInlineStart = containerRect.left;
|
|
50
|
+
const containerBlockStart = containerRect.top;
|
|
51
|
+
const elementInlineEnd = elementInlineStart + elementInlineSize;
|
|
52
|
+
const elementBlockEnd = elementBlockStart + elementBlockSize;
|
|
53
|
+
const containerInlineEnd = containerInlineStart + containerInlineSize;
|
|
54
|
+
const containerBlockEnd = containerBlockStart + containerBlockSize;
|
|
55
|
+
const elementInlineCenter = elementInlineStart + elementInlineSize / 2;
|
|
56
|
+
const elementBlockCenter = elementBlockStart + elementBlockSize / 2;
|
|
57
|
+
const containerInlineCenter = containerInlineStart + containerInlineSize / 2;
|
|
58
|
+
const containerBlockCenter = containerBlockStart + containerBlockSize / 2;
|
|
59
|
+
const elementInlineOrigin = origin === 'center' ? elementInlineCenter : origin === 'end' ? elementInlineEnd : elementInlineStart;
|
|
60
|
+
const elementBlockOrigin = origin === 'center' ? elementBlockCenter : origin === 'end' ? elementBlockEnd : elementBlockStart;
|
|
61
|
+
const containerInlineOrigin = origin === 'center' ? containerInlineCenter : origin === 'end' ? containerInlineEnd : containerInlineStart;
|
|
62
|
+
const containerBlockOrigin = origin === 'center' ? containerBlockCenter : origin === 'end' ? containerBlockEnd : containerBlockStart;
|
|
63
|
+
const inlineOffset = elementInlineOrigin - containerInlineOrigin - scrollInlineMargin;
|
|
64
|
+
const blockOffset = elementBlockOrigin - containerBlockOrigin - scrollBlockMargin;
|
|
65
|
+
let inlineScroll = direction === 'block' ? undefined : inlineOffset;
|
|
66
|
+
let blockScroll = direction === 'inline' ? undefined : blockOffset;
|
|
67
|
+
if (origin === 'nearest') {
|
|
68
|
+
const elVisible = isElementVisible({ element, container });
|
|
69
|
+
if (elVisible?.inline && elVisible?.block) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (elVisible?.inline) {
|
|
73
|
+
inlineScroll = undefined;
|
|
74
|
+
}
|
|
75
|
+
if (elVisible?.block) {
|
|
76
|
+
blockScroll = undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
container.scrollTo({
|
|
80
|
+
left: inlineScroll,
|
|
81
|
+
top: blockScroll,
|
|
82
|
+
behavior,
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3Njcm9sbGFibGUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7SUFDdkQsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUV6RSxPQUFPLFlBQVksR0FBRyxZQUFZLElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUNsRSxDQUFDLENBQUM7QUEyQkYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFnQyxFQUFtQyxFQUFFO0lBQ3BHLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDNUIsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU1QixJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7UUFDbEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELFNBQVMsS0FBSyxRQUFRLENBQUMsZUFBZSxDQUFDO0lBRXZDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTlDLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7S0FDdEM7SUFFRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNwRCxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUV4RCxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDNUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENB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Z0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRTNELElBQUksU0FBUyxFQUFFLE1BQU0sSUFBSSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQ3pDLE9BQU87U0FDUjtRQUVELElBQUksU0FBUyxFQUFFLE1BQU0sRUFBRTtZQUNyQixZQUFZLEdBQUcsU0FBUyxDQUFDO1NBQzFCO1FBRUQsSUFBSSxTQUFTLEVBQUUsS0FBSyxFQUFFO1lBQ3BCLFdBQVcsR0FBRyxTQUFTLENBQUM7U0FDekI7S0FDRjtJQUVELFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakIsSUFBSSxFQUFFLFlBQVk7UUFDbEIsR0FBRyxFQUFFLFdBQVc7UUFDaEIsUUFBUTtLQUNULENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbGVtZW50Q2FuU2Nyb2xsID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHsgc2Nyb2xsSGVpZ2h0LCBjbGllbnRIZWlnaHQsIHNjcm9sbFdpZHRoLCBjbGllbnRXaWR0aCB9ID0gZWxlbWVudDtcblxuICByZXR1cm4gc2Nyb2xsSGVpZ2h0ID4gY2xpZW50SGVpZ2h0IHx8IHNjcm9sbFdpZHRoID4gY2xpZW50V2lkdGg7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIElzRWxlbWVudFZpc2libGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIGNoZWNrIGlmIGl0IGlzIHZpc2libGUgaW5zaWRlIGEgY29udGFpbmVyLlxuICAgKi9cbiAgZWxlbWVudD86IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciB0byBjaGVjayBpZiB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluc2lkZS5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAqL1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VycmVudEVsZW1lbnRWaXNpYmlsaXR5IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiB0aGUgaW5saW5lIGRpcmVjdGlvbi5cbiAgICovXG4gIGlubGluZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIHRoZSBibG9jayBkaXJlY3Rpb24uXG4gICAqL1xuICBibG9jazogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGlzRWxlbWVudFZpc2libGUgPSAob3B0aW9uczogSXNFbGVtZW50VmlzaWJsZU9wdGlvbnMpOiBDdXJyZW50RWxlbWVudFZpc2liaWxpdHkgfCBudWxsID0+IHtcbiAgbGV0IHsgY29udGFpbmVyIH0gPSBvcHRpb25zO1xuICBjb25zdCB7IGVsZW1lbnQgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKCFlbGVtZW50IHx8IGNvbnRhaW5lciA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29udGFpbmVyIHx8PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgY29uc3QgY2FuU2Nyb2xsID0gZWxlbWVudENhblNjcm9sbChjb250YWluZXIpO1xuXG4gIGlmICghY2FuU2Nyb2xsKSB7XG4gICAgcmV0dXJuIHsgaW5saW5lOiB0cnVlLCBibG9jazogdHJ1ZSB9O1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVTdGFydCA9IGVsZW1lbnRSZWN0LmxlZnQ7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja1N0YXJ0ID0gZWxlbWVudFJlY3QudG9wO1xuXG4gIGNvbnN0IGNvbnRhaW5lcklubGluZVN0YXJ0ID0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICBjb25zdCBjb250YWluZXJCbG9ja1N0YXJ0ID0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgY29uc3QgZWxlbWVudElubGluZUVuZCA9IGVsZW1lbnRJbmxpbmVTdGFydCArIGVsZW1lbnRSZWN0LndpZHRoO1xuICBjb25zdCBlbGVtZW50QmxvY2tFbmQgPSBlbGVtZW50QmxvY2tTdGFydCArIGVsZW1lbnRSZWN0LmhlaWdodDtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVFbmQgPSBjb250YWluZXJJbmxpbmVTdGFydCArIGNvbnRhaW5lclJlY3Qud2lkdGg7XG4gIGNvbnN0IGNvbnRhaW5lckJsb2NrRW5kID0gY29udGFpbmVyQmxvY2tTdGFydCArIGNvbnRhaW5lclJlY3QuaGVpZ2h0O1xuXG4gIGNvbnN0IGlzRWxlbWVudElubGluZVZpc2libGUgPSBlbGVtZW50SW5saW5lU3RhcnQgPj0gY29udGFpbmVySW5saW5lU3RhcnQgJiYgZWxlbWVudElubGluZUVuZCA8PSBjb250YWluZXJJbmxpbmVFbmQ7XG4gIGNvbnN0IGlzRWxlbWVudEJsb2NrVmlzaWJsZSA9IGVsZW1lbnRCbG9ja1N0YXJ0ID49IGNvbnRhaW5lckJsb2NrU3RhcnQgJiYgZWxlbWVudEJsb2NrRW5kIDw9IGNvbnRhaW5lckJsb2NrRW5kO1xuXG4gIHJldHVybiB7IGlubGluZTogaXNFbGVtZW50SW5saW5lVmlzaWJsZSwgYmxvY2s6IGlzRWxlbWVudEJsb2NrVmlzaWJsZSB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JvbGxUb0VsZW1lbnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRvIHNjcm9sbCB0by5cbiAgICovXG4gIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgY29udGFpbmVyIHRvIHNjcm9sbCB0byB0aGUgZWxlbWVudCBpbi5cbiAgICogQGRlZmF1bHQgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAqL1xuICBjb250YWluZXI/OiBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rpb24gdG8gc2Nyb2xsIGluLlxuICAgKiBAZGVmYXVsdCAnYm90aCdcbiAgICovXG4gIGRpcmVjdGlvbj86ICdpbmxpbmUnIHwgJ2Jsb2NrJyB8ICdib3RoJztcblxuICAvKipcbiAgICogVGhlIG9yaWdpbiBvZiB0aGUgZWxlbWVudCB0byBzY3JvbGwgdG8uXG4gICAqIEBkZWZhdWx0ICduZWFyZXN0J1xuICAgKi9cbiAgb3JpZ2luPzogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicgfCAnbmVhcmVzdCc7XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JvbGwgYmVoYXZpb3IuXG4gICAqIEBkZWZhdWx0ICdzbW9vdGgnXG4gICAqL1xuICBiZWhhdmlvcj86IFNjcm9sbEJlaGF2aW9yO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGlubGluZS1tYXJnaW5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgc2Nyb2xsSW5saW5lTWFyZ2luPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2Nyb2xsIGJsb2NrLW1hcmdpblxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBzY3JvbGxCbG9ja01hcmdpbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IHNjcm9sbFRvRWxlbWVudCA9IChvcHRpb25zOiBTY3JvbGxUb0VsZW1lbnRPcHRpb25zKSA9PiB7XG4gIGxldCB7IGNvbnRhaW5lciB9ID0gb3B0aW9ucztcbiAgY29uc3Qge1xuICAgIGVsZW1lbnQsXG4gICAgZGlyZWN0aW9uLFxuICAgIGJlaGF2aW9yID0gJ3Ntb290aCcsXG4gICAgb3JpZ2luID0gJ25lYXJlc3QnLFxuICAgIHNjcm9sbEJsb2NrTWFyZ2luID0gMCxcbiAgICBzY3JvbGxJbmxpbmVNYXJnaW4gPSAwLFxuICB9ID0gb3B0aW9ucztcblxuICBpZiAoIWVsZW1lbnQgfHwgY29udGFpbmVyID09PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29udGFpbmVyIHx8PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgY29uc3QgY2FuU2Nyb2xsID0gZWxlbWVudENhblNjcm9sbChjb250YWluZXIpO1xuXG4gIGlmICghY2FuU2Nyb2xsKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVTaXplID0gZWxlbWVudFJlY3Qud2lkdGg7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja1NpemUgPSBlbGVtZW50UmVjdC5oZWlnaHQ7XG5cbiAgY29uc3QgY29udGFpbmVySW5saW5lU2l6ZSA9IGNvbnRhaW5lclJlY3Qud2lkdGg7XG4gIGNvbnN0IGNvbnRhaW5lckJsb2NrU2l6ZSA9IGNvbnRhaW5lclJlY3QuaGVpZ2h0O1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVTdGFydCA9IGVsZW1lbnRSZWN0LmxlZnQ7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja1N0YXJ0ID0gZWxlbWVudFJlY3QudG9wO1xuXG4gIGNvbnN0IGNvbnRhaW5lcklubGluZVN0YXJ0ID0gY29udGFpbmVyUmVjdC5sZWZ0O1xuICBjb25zdCBjb250YWluZXJCbG9ja1N0YXJ0ID0gY29udGFpbmVyUmVjdC50b3A7XG5cbiAgY29uc3QgZWxlbWVudElubGluZUVuZCA9IGVsZW1lbnRJbmxpbmVTdGFydCArIGVsZW1lbnRJbmxpbmVTaXplO1xuICBjb25zdCBlbGVtZW50QmxvY2tFbmQgPSBlbGVtZW50QmxvY2tTdGFydCArIGVsZW1lbnRCbG9ja1NpemU7XG5cbiAgY29uc3QgY29udGFpbmVySW5saW5lRW5kID0gY29udGFpbmVySW5saW5lU3RhcnQgKyBjb250YWluZXJJbmxpbmVTaXplO1xuICBjb25zdCBjb250YWluZXJCbG9ja0VuZCA9IGNvbnRhaW5lckJsb2NrU3RhcnQgKyBjb250YWluZXJCbG9ja1NpemU7XG5cbiAgY29uc3QgZWxlbWVudElubGluZUNlbnRlciA9IGVsZW1lbnRJbmxpbmVTdGFydCArIGVsZW1lbnRJbmxpbmVTaXplIC8gMjtcbiAgY29uc3QgZWxlbWVudEJsb2NrQ2VudGVyID0gZWxlbWVudEJsb2NrU3RhcnQgKyBlbGVtZW50QmxvY2tTaXplIC8gMjtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVDZW50ZXIgPSBjb250YWluZXJJbmxpbmVTdGFydCArIGNvbnRhaW5lcklubGluZVNpemUgLyAyO1xuICBjb25zdCBjb250YWluZXJCbG9ja0NlbnRlciA9IGNvbnRhaW5lckJsb2NrU3RhcnQgKyBjb250YWluZXJCbG9ja1NpemUgLyAyO1xuXG4gIGNvbnN0IGVsZW1lbnRJbmxpbmVPcmlnaW4gPVxuICAgIG9yaWdpbiA9PT0gJ2NlbnRlcicgPyBlbGVtZW50SW5saW5lQ2VudGVyIDogb3JpZ2luID09PSAnZW5kJyA/IGVsZW1lbnRJbmxpbmVFbmQgOiBlbGVtZW50SW5saW5lU3RhcnQ7XG4gIGNvbnN0IGVsZW1lbnRCbG9ja09yaWdpbiA9XG4gICAgb3JpZ2luID09PSAnY2VudGVyJyA/IGVsZW1lbnRCbG9ja0NlbnRlciA6IG9yaWdpbiA9PT0gJ2VuZCcgPyBlbGVtZW50QmxvY2tFbmQgOiBlbGVtZW50QmxvY2tTdGFydDtcblxuICBjb25zdCBjb250YWluZXJJbmxpbmVPcmlnaW4gPVxuICAgIG9yaWdpbiA9PT0gJ2NlbnRlcicgPyBjb250YWluZXJJbmxpbmVDZW50ZXIgOiBvcmlnaW4gPT09ICdlbmQnID8gY29udGFpbmVySW5saW5lRW5kIDogY29udGFpbmVySW5saW5lU3RhcnQ7XG4gIGNvbnN0IGNvbnRhaW5lckJsb2NrT3JpZ2luID1cbiAgICBvcmlnaW4gPT09ICdjZW50ZXInID8gY29udGFpbmVyQmxvY2tDZW50ZXIgOiBvcmlnaW4gPT09ICdlbmQnID8gY29udGFpbmVyQmxvY2tFbmQgOiBjb250YWluZXJCbG9ja1N0YXJ0O1xuXG4gIGNvbnN0IGlubGluZU9mZnNldCA9IGVsZW1lbnRJbmxpbmVPcmlnaW4gLSBjb250YWluZXJJbmxpbmVPcmlnaW4gLSBzY3JvbGxJbmxpbmVNYXJnaW47XG4gIGNvbnN0IGJsb2NrT2Zmc2V0ID0gZWxlbWVudEJsb2NrT3JpZ2luIC0gY29udGFpbmVyQmxvY2tPcmlnaW4gLSBzY3JvbGxCbG9ja01hcmdpbjtcblxuICBsZXQgaW5saW5lU2Nyb2xsOiBudW1iZXIgfCB1bmRlZmluZWQgPSBkaXJlY3Rpb24gPT09ICdibG9jaycgPyB1bmRlZmluZWQgOiBpbmxpbmVPZmZzZXQ7XG4gIGxldCBibG9ja1Njcm9sbDogbnVtYmVyIHwgdW5kZWZpbmVkID0gZGlyZWN0aW9uID09PSAnaW5saW5lJyA/IHVuZGVmaW5lZCA6IGJsb2NrT2Zmc2V0O1xuXG4gIGlmIChvcmlnaW4gPT09ICduZWFyZXN0Jykge1xuICAgIGNvbnN0IGVsVmlzaWJsZSA9IGlzRWxlbWVudFZpc2libGUoeyBlbGVtZW50LCBjb250YWluZXIgfSk7XG5cbiAgICBpZiAoZWxWaXNpYmxlPy5pbmxpbmUgJiYgZWxWaXNpYmxlPy5ibG9jaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChlbFZpc2libGU/LmlubGluZSkge1xuICAgICAgaW5saW5lU2Nyb2xsID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChlbFZpc2libGU/LmJsb2NrKSB7XG4gICAgICBibG9ja1Njcm9sbCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBjb250YWluZXIuc2Nyb2xsVG8oe1xuICAgIGxlZnQ6IGlubGluZVNjcm9sbCxcbiAgICB0b3A6IGJsb2NrU2Nyb2xsLFxuICAgIGJlaGF2aW9yLFxuICB9KTtcbn07XG4iXX0=
|