@skyux/core 11.31.0 → 12.0.0-alpha.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/documentation.json +520 -516
- package/fesm2022/skyux-core-testing.mjs +26 -26
- package/fesm2022/skyux-core-testing.mjs.map +1 -1
- package/fesm2022/skyux-core.mjs +180 -174
- package/fesm2022/skyux-core.mjs.map +1 -1
- package/package.json +8 -12
- package/esm2022/index.mjs +0 -67
- package/esm2022/lib/modules/adapter-service/adapter.module.mjs +0 -16
- package/esm2022/lib/modules/adapter-service/adapter.service.mjs +0 -205
- package/esm2022/lib/modules/adapter-service/focusable-children-options.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-auto-fit-context.mjs +0 -12
- package/esm2022/lib/modules/affix/affix-config.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-horizontal-alignment.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-offset-change.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-offset.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-placement-change.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-placement.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-position.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-rect.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-utils.mjs +0 -18
- package/esm2022/lib/modules/affix/affix-vertical-alignment.mjs +0 -2
- package/esm2022/lib/modules/affix/affix.directive.mjs +0 -116
- package/esm2022/lib/modules/affix/affix.module.mjs +0 -18
- package/esm2022/lib/modules/affix/affix.service.mjs +0 -48
- package/esm2022/lib/modules/affix/affixer.mjs +0 -426
- package/esm2022/lib/modules/affix/dom-utils.mjs +0 -126
- package/esm2022/lib/modules/breakpoint-observer/breakpoint-observer.mjs +0 -2
- package/esm2022/lib/modules/breakpoint-observer/breakpoint-observer.token.mjs +0 -7
- package/esm2022/lib/modules/breakpoint-observer/breakpoint-utils.mjs +0 -38
- package/esm2022/lib/modules/breakpoint-observer/breakpoint.mjs +0 -6
- package/esm2022/lib/modules/breakpoint-observer/container-breakpoint-observer.mjs +0 -64
- package/esm2022/lib/modules/breakpoint-observer/media-breakpoint-observer.mjs +0 -58
- package/esm2022/lib/modules/breakpoint-observer/provide-breakpoint-observer.mjs +0 -24
- package/esm2022/lib/modules/breakpoint-observer/responsive-host.directive.mjs +0 -55
- package/esm2022/lib/modules/content-info-provider/content-info-descriptor.mjs +0 -2
- package/esm2022/lib/modules/content-info-provider/content-info-provider.mjs +0 -24
- package/esm2022/lib/modules/content-info-provider/content-info.mjs +0 -2
- package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +0 -26
- package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +0 -81
- package/esm2022/lib/modules/dock/dock-insert-component-config.mjs +0 -2
- package/esm2022/lib/modules/dock/dock-item-config.mjs +0 -2
- package/esm2022/lib/modules/dock/dock-item-reference.mjs +0 -2
- package/esm2022/lib/modules/dock/dock-item.mjs +0 -31
- package/esm2022/lib/modules/dock/dock-location.mjs +0 -19
- package/esm2022/lib/modules/dock/dock-options.mjs +0 -2
- package/esm2022/lib/modules/dock/dock.component.mjs +0 -101
- package/esm2022/lib/modules/dock/dock.module.mjs +0 -15
- package/esm2022/lib/modules/dock/dock.service.mjs +0 -95
- package/esm2022/lib/modules/dock/sort-by-stack-order.mjs +0 -13
- package/esm2022/lib/modules/dynamic-component/dynamic-component-location.mjs +0 -27
- package/esm2022/lib/modules/dynamic-component/dynamic-component-options.mjs +0 -2
- package/esm2022/lib/modules/dynamic-component/dynamic-component.module.mjs +0 -17
- package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +0 -113
- package/esm2022/lib/modules/file-reader/file-reader.service.mjs +0 -32
- package/esm2022/lib/modules/format/app-format.mjs +0 -18
- package/esm2022/lib/modules/help/help-global-options-token.mjs +0 -6
- package/esm2022/lib/modules/help/help-global-options.mjs +0 -2
- package/esm2022/lib/modules/help/help-open-args.mjs +0 -2
- package/esm2022/lib/modules/help/help-update-args.mjs +0 -2
- package/esm2022/lib/modules/help/help.service.mjs +0 -20
- package/esm2022/lib/modules/id/id.directive.mjs +0 -31
- package/esm2022/lib/modules/id/id.module.mjs +0 -16
- package/esm2022/lib/modules/id/id.service.mjs +0 -24
- package/esm2022/lib/modules/layout-host/layout-host-for-child-args.mjs +0 -2
- package/esm2022/lib/modules/layout-host/layout-host.service.mjs +0 -22
- package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +0 -81
- package/esm2022/lib/modules/live-announcer/types/live-announcer-args.mjs +0 -2
- package/esm2022/lib/modules/live-announcer/types/live-announcer-politeness.mjs +0 -2
- package/esm2022/lib/modules/log/log.module.mjs +0 -16
- package/esm2022/lib/modules/log/log.service.mjs +0 -148
- package/esm2022/lib/modules/log/types/log-deprecation-args.mjs +0 -2
- package/esm2022/lib/modules/log/types/log-level-token.mjs +0 -6
- package/esm2022/lib/modules/log/types/log-level.mjs +0 -10
- package/esm2022/lib/modules/media-query/media-breakpoints.mjs +0 -24
- package/esm2022/lib/modules/media-query/media-query-listener.mjs +0 -2
- package/esm2022/lib/modules/media-query/media-query.module.mjs +0 -16
- package/esm2022/lib/modules/media-query/media-query.service.mjs +0 -82
- package/esm2022/lib/modules/mutation/mutation-observer-service.mjs +0 -19
- package/esm2022/lib/modules/numeric/numeric-symbol.mjs +0 -2
- package/esm2022/lib/modules/numeric/numeric.module.mjs +0 -19
- package/esm2022/lib/modules/numeric/numeric.options.mjs +0 -24
- package/esm2022/lib/modules/numeric/numeric.pipe.mjs +0 -84
- package/esm2022/lib/modules/numeric/numeric.service.mjs +0 -200
- package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +0 -74
- package/esm2022/lib/modules/overlay/overlay-config.mjs +0 -2
- package/esm2022/lib/modules/overlay/overlay-context.mjs +0 -10
- package/esm2022/lib/modules/overlay/overlay-instance.mjs +0 -62
- package/esm2022/lib/modules/overlay/overlay-position.mjs +0 -2
- package/esm2022/lib/modules/overlay/overlay.component.mjs +0 -203
- package/esm2022/lib/modules/overlay/overlay.module.mjs +0 -15
- package/esm2022/lib/modules/overlay/overlay.service.mjs +0 -134
- package/esm2022/lib/modules/percent-pipe/percent-pipe.module.mjs +0 -19
- package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +0 -56
- package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +0 -153
- package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +0 -115
- package/esm2022/lib/modules/screen-reader-label/screen-reader-label.directive.mjs +0 -66
- package/esm2022/lib/modules/scroll-shadow/scroll-shadow-event-args.mjs +0 -2
- package/esm2022/lib/modules/scroll-shadow/scroll-shadow.directive.mjs +0 -123
- package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +0 -223
- package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +0 -72
- package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +0 -34
- package/esm2022/lib/modules/stacking-context/stacking-context-token.mjs +0 -6
- package/esm2022/lib/modules/stacking-context/stacking-context.mjs +0 -2
- package/esm2022/lib/modules/title/set-title-args.mjs +0 -2
- package/esm2022/lib/modules/title/title.service.mjs +0 -31
- package/esm2022/lib/modules/trim/trim.directive.mjs +0 -64
- package/esm2022/lib/modules/trim/trim.module.mjs +0 -16
- package/esm2022/lib/modules/ui-config/ui-config.service.mjs +0 -21
- package/esm2022/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper-host-options.mjs +0 -10
- package/esm2022/lib/modules/viewkeeper/viewkeeper-offset.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper-options.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +0 -131
- package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +0 -296
- package/esm2022/lib/modules/viewkeeper/viewkeeper.module.mjs +0 -16
- package/esm2022/lib/modules/viewkeeper/viewkeeper.service.mjs +0 -39
- package/esm2022/lib/modules/window/window-ref.mjs +0 -30
- package/esm2022/skyux-core.mjs +0 -5
- package/esm2022/testing/legacy/core-testing.module.mjs +0 -32
- package/esm2022/testing/legacy/mock-media-query.service.mjs +0 -47
- package/esm2022/testing/legacy/mock-ui-config.service.mjs +0 -62
- package/esm2022/testing/legacy/resize-observer-mock.mjs +0 -50
- package/esm2022/testing/modules/file-reader/file-reader-testing.service.mjs +0 -19
- package/esm2022/testing/modules/file-reader/provide-file-reader-testing.mjs +0 -22
- package/esm2022/testing/modules/help/help-testing-controller.mjs +0 -28
- package/esm2022/testing/modules/help/help-testing.module.mjs +0 -32
- package/esm2022/testing/modules/help/help-testing.service.mjs +0 -37
- package/esm2022/testing/modules/media-query/breakpoint-observer-testing.mjs +0 -26
- package/esm2022/testing/modules/media-query/media-query-testing-controller.mjs +0 -22
- package/esm2022/testing/modules/media-query/provide-media-query-testing.mjs +0 -26
- package/esm2022/testing/modules/overlay/overlay-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/overlay/overlay-harness.mjs +0 -20
- package/esm2022/testing/public-api.mjs +0 -15
- package/esm2022/testing/shared/component-harness.mjs +0 -13
- package/esm2022/testing/shared/harness-filters.mjs +0 -2
- package/esm2022/testing/shared/harness-utility.mjs +0 -7
- package/esm2022/testing/shared/input-harness.mjs +0 -63
- package/esm2022/testing/shared/queryable-component-harness.mjs +0 -43
- package/esm2022/testing/skyux-core-testing.mjs +0 -5
- package/esm2022/version.mjs +0 -19
@@ -1,131 +0,0 @@
|
|
1
|
-
import { Directive, Input, Optional, } from '@angular/core';
|
2
|
-
import { Subject } from 'rxjs';
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "../mutation/mutation-observer-service";
|
6
|
-
import * as i2 from "./viewkeeper.service";
|
7
|
-
import * as i3 from "../scrollable-host/scrollable-host.service";
|
8
|
-
export class SkyViewkeeperDirective {
|
9
|
-
set skyViewkeeper(value) {
|
10
|
-
this.#_skyViewkeeper = value;
|
11
|
-
this.#detectElements();
|
12
|
-
}
|
13
|
-
get skyViewkeeper() {
|
14
|
-
return this.#_skyViewkeeper;
|
15
|
-
}
|
16
|
-
#_skyViewkeeper;
|
17
|
-
#currentViewkeeperEls;
|
18
|
-
#el;
|
19
|
-
#mutationObserverSvc;
|
20
|
-
#observer;
|
21
|
-
#scrollableHostSvc;
|
22
|
-
#scrollableHostWatchUnsubscribe;
|
23
|
-
#viewkeepers = [];
|
24
|
-
#viewkeeperSvc;
|
25
|
-
constructor(el, mutationObserverSvc, viewkeeperSvc, scrollableHostSvc) {
|
26
|
-
this.#el = el;
|
27
|
-
this.#mutationObserverSvc = mutationObserverSvc;
|
28
|
-
this.#viewkeeperSvc = viewkeeperSvc;
|
29
|
-
this.#scrollableHostSvc = scrollableHostSvc;
|
30
|
-
}
|
31
|
-
ngOnInit() {
|
32
|
-
this.#observer = this.#mutationObserverSvc.create(() => this.#detectElements());
|
33
|
-
this.#observer.observe(this.#el.nativeElement, {
|
34
|
-
childList: true,
|
35
|
-
subtree: true,
|
36
|
-
});
|
37
|
-
}
|
38
|
-
ngOnDestroy() {
|
39
|
-
/*istanbul ignore else*/
|
40
|
-
if (this.#observer) {
|
41
|
-
this.#observer.disconnect();
|
42
|
-
}
|
43
|
-
/*istanbul ignore else*/
|
44
|
-
if (this.#scrollableHostWatchUnsubscribe) {
|
45
|
-
this.#scrollableHostWatchUnsubscribe.next();
|
46
|
-
this.#scrollableHostWatchUnsubscribe.complete();
|
47
|
-
}
|
48
|
-
this.#destroyViewkeepers();
|
49
|
-
}
|
50
|
-
#destroyViewkeepers() {
|
51
|
-
for (const viewkeeper of this.#viewkeepers) {
|
52
|
-
this.#viewkeeperSvc.destroy(viewkeeper);
|
53
|
-
}
|
54
|
-
this.#viewkeepers = [];
|
55
|
-
}
|
56
|
-
#getViewkeeperEls() {
|
57
|
-
let viewkeeperEls = [];
|
58
|
-
if (this.skyViewkeeper) {
|
59
|
-
viewkeeperEls = [];
|
60
|
-
for (const item of this.skyViewkeeper) {
|
61
|
-
const matchingEls = Array.from(this.#el.nativeElement.querySelectorAll(item));
|
62
|
-
viewkeeperEls = [...viewkeeperEls, ...matchingEls];
|
63
|
-
}
|
64
|
-
}
|
65
|
-
return viewkeeperEls;
|
66
|
-
}
|
67
|
-
#viewkeeperElsChanged(viewkeeperEls) {
|
68
|
-
if (!viewkeeperEls !== !this.#currentViewkeeperEls) {
|
69
|
-
return true;
|
70
|
-
}
|
71
|
-
if (viewkeeperEls && this.#currentViewkeeperEls) {
|
72
|
-
if (viewkeeperEls.length !== this.#currentViewkeeperEls.length) {
|
73
|
-
return true;
|
74
|
-
}
|
75
|
-
for (let i = 0, n = viewkeeperEls.length; i < n; i++) {
|
76
|
-
if (viewkeeperEls[i] !== this.#currentViewkeeperEls[i]) {
|
77
|
-
return true;
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}
|
81
|
-
return false;
|
82
|
-
}
|
83
|
-
#detectElements() {
|
84
|
-
const viewkeeperEls = this.#getViewkeeperEls();
|
85
|
-
if (this.#viewkeeperElsChanged(viewkeeperEls)) {
|
86
|
-
if (this.#scrollableHostWatchUnsubscribe) {
|
87
|
-
this.#scrollableHostWatchUnsubscribe.next();
|
88
|
-
this.#scrollableHostWatchUnsubscribe.complete();
|
89
|
-
this.#scrollableHostWatchUnsubscribe = new Subject();
|
90
|
-
}
|
91
|
-
else {
|
92
|
-
this.#scrollableHostWatchUnsubscribe = new Subject();
|
93
|
-
}
|
94
|
-
if (this.#scrollableHostSvc) {
|
95
|
-
this.#scrollableHostSvc
|
96
|
-
.watchScrollableHost(this.#el)
|
97
|
-
.pipe(takeUntil(this.#scrollableHostWatchUnsubscribe))
|
98
|
-
.subscribe((scrollableHost) => {
|
99
|
-
this.#destroyViewkeepers();
|
100
|
-
let previousViewkeeperEl;
|
101
|
-
for (const viewkeeperEl of viewkeeperEls) {
|
102
|
-
this.#viewkeepers.push(this.#viewkeeperSvc.create({
|
103
|
-
boundaryEl: this.#el.nativeElement,
|
104
|
-
scrollableHost: scrollableHost instanceof HTMLElement
|
105
|
-
? scrollableHost
|
106
|
-
: undefined,
|
107
|
-
el: viewkeeperEl,
|
108
|
-
setWidth: true,
|
109
|
-
verticalOffsetEl: previousViewkeeperEl,
|
110
|
-
}));
|
111
|
-
previousViewkeeperEl = viewkeeperEl;
|
112
|
-
}
|
113
|
-
});
|
114
|
-
}
|
115
|
-
this.#currentViewkeeperEls = viewkeeperEls;
|
116
|
-
}
|
117
|
-
}
|
118
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyMutationObserverService }, { token: i2.SkyViewkeeperService }, { token: i3.SkyScrollableHostService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
119
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SkyViewkeeperDirective, selector: "[skyViewkeeper]", inputs: { skyViewkeeper: "skyViewkeeper" }, ngImport: i0 }); }
|
120
|
-
}
|
121
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperDirective, decorators: [{
|
122
|
-
type: Directive,
|
123
|
-
args: [{
|
124
|
-
selector: '[skyViewkeeper]',
|
125
|
-
}]
|
126
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyMutationObserverService }, { type: i2.SkyViewkeeperService }, { type: i3.SkyScrollableHostService, decorators: [{
|
127
|
-
type: Optional
|
128
|
-
}] }], propDecorators: { skyViewkeeper: [{
|
129
|
-
type: Input
|
130
|
-
}] } });
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULEtBQUssRUFHTCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBVzNDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsSUFDVyxhQUFhLENBQUMsS0FBMkI7UUFDbEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFFN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlLENBQXVCO0lBRXRDLHFCQUFxQixDQUE0QjtJQUVqRCxHQUFHLENBQWE7SUFFaEIsb0JBQW9CLENBQTZCO0lBRWpELFNBQVMsQ0FBK0I7SUFFeEMsa0JBQWtCLENBQXVDO0lBRXpELCtCQUErQixDQUE0QjtJQUUzRCxZQUFZLEdBQW9CLEVBQUUsQ0FBQztJQUVuQyxjQUFjLENBQXVCO0lBRXJDLFlBQ0UsRUFBYyxFQUNkLG1CQUErQyxFQUMvQyxhQUFtQyxFQUN2QixpQkFBNEM7UUFFeEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFD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c0I7bUdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFIbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs7MEJBbUNJLFFBQVE7eUNBaENBLGFBQWE7c0JBRHZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2UgfSBmcm9tICcuLi9zY3JvbGxhYmxlLWhvc3Qvc2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyIH0gZnJvbSAnLi92aWV3a2VlcGVyJztcbmltcG9ydCB7IFNreVZpZXdrZWVwZXJTZXJ2aWNlIH0gZnJvbSAnLi92aWV3a2VlcGVyLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5Vmlld2tlZXBlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVyRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNreVZpZXdrZWVwZXIodmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX3NreVZpZXdrZWVwZXIgPSB2YWx1ZTtcblxuICAgIHRoaXMuI2RldGVjdEVsZW1lbnRzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNreVZpZXdrZWVwZXIoKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLiNfc2t5Vmlld2tlZXBlcjtcbiAgfVxuXG4gICNfc2t5Vmlld2tlZXBlcjogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgI2N1cnJlbnRWaWV3a2VlcGVyRWxzOiBIVE1MRWxlbWVudFtdIHwgdW5kZWZpbmVkO1xuXG4gICNlbDogRWxlbWVudFJlZjtcblxuICAjbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2U7XG5cbiAgI29ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyIHwgdW5kZWZpbmVkO1xuXG4gICNzY3JvbGxhYmxlSG9zdFN2YzogU2t5U2Nyb2xsYWJsZUhvc3RTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gICNzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmU6IFN1YmplY3Q8dm9pZD4gfCB1bmRlZmluZWQ7XG5cbiAgI3ZpZXdrZWVwZXJzOiBTa3lWaWV3a2VlcGVyW10gPSBbXTtcblxuICAjdmlld2tlZXBlclN2YzogU2t5Vmlld2tlZXBlclNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWw6IEVsZW1lbnRSZWYsXG4gICAgbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgdmlld2tlZXBlclN2YzogU2t5Vmlld2tlZXBlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgc2Nyb2xsYWJsZUhvc3RTdmM/OiBTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI2VsID0gZWw7XG4gICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2YyA9IG11dGF0aW9uT2JzZXJ2ZXJTdmM7XG4gICAgdGhpcy4jdmlld2tlZXBlclN2YyA9IHZpZXdrZWVwZXJTdmM7XG4gICAgdGhpcy4jc2Nyb2xsYWJsZUhvc3RTdmMgPSBzY3JvbGxhYmxlSG9zdFN2YztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnNlcnZlciA9IHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+XG4gICAgICB0aGlzLiNkZXRlY3RFbGVtZW50cygpLFxuICAgICk7XG5cbiAgICB0aGlzLiNvYnNlcnZlci5vYnNlcnZlKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI29ic2VydmVyKSB7XG4gICAgICB0aGlzLiNvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuXG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy4jc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI2Rlc3Ryb3lWaWV3a2VlcGVycygpO1xuICB9XG5cbiAgI2Rlc3Ryb3lWaWV3a2VlcGVycygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHZpZXdrZWVwZXIgb2YgdGhpcy4jdmlld2tlZXBlcnMpIHtcbiAgICAgIHRoaXMuI3ZpZXdrZWVwZXJTdmMuZGVzdHJveSh2aWV3a2VlcGVyKTtcbiAgICB9XG5cbiAgICB0aGlzLiN2aWV3a2VlcGVycyA9IFtdO1xuICB9XG5cbiAgI2dldFZpZXdrZWVwZXJFbHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgbGV0IHZpZXdrZWVwZXJFbHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAgIGlmICh0aGlzLnNreVZpZXdrZWVwZXIpIHtcbiAgICAgIHZpZXdrZWVwZXJFbHMgPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2t5Vmlld2tlZXBlcikge1xuICAgICAgICBjb25zdCBtYXRjaGluZ0VscyA9IEFycmF5LmZyb20oXG4gICAgICAgICAgKHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoaXRlbSksXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnRbXTtcblxuICAgICAgICB2aWV3a2VlcGVyRWxzID0gWy4uLnZpZXdrZWVwZXJFbHMsIC4uLm1hdGNoaW5nRWxzXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmlld2tlZXBlckVscztcbiAgfVxuXG4gICN2aWV3a2VlcGVyRWxzQ2hhbmdlZCh2aWV3a2VlcGVyRWxzOiBIVE1MRWxlbWVudFtdKTogYm9vbGVhbiB7XG4gICAgaWYgKCF2aWV3a2VlcGVyRWxzICE9PSAhdGhpcy4jY3VycmVudFZpZXdrZWVwZXJFbHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmICh2aWV3a2VlcGVyRWxzICYmIHRoaXMuI2N1cnJlbnRWaWV3a2VlcGVyRWxzKSB7XG4gICAgICBpZiAodmlld2tlZXBlckVscy5sZW5ndGggIT09IHRoaXMuI2N1cnJlbnRWaWV3a2VlcGVyRWxzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSB2aWV3a2VlcGVyRWxzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICBpZiAodmlld2tlZXBlckVsc1tpXSAhPT0gdGhpcy4jY3VycmVudFZpZXdrZWVwZXJFbHNbaV0pIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gICNkZXRlY3RFbGVtZW50cygpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3a2VlcGVyRWxzID0gdGhpcy4jZ2V0Vmlld2tlZXBlckVscygpO1xuXG4gICAgaWYgKHRoaXMuI3ZpZXdrZWVwZXJFbHNDaGFuZ2VkKHZpZXdrZWVwZXJFbHMpKSB7XG4gICAgICBpZiAodGhpcy4jc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlKSB7XG4gICAgICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdFdhdGNoVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jc2Nyb2xsYWJsZUhvc3RXYXRjaFVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI3Njcm9sbGFibGVIb3N0U3ZjKSB7XG4gICAgICAgIHRoaXMuI3Njcm9sbGFibGVIb3N0U3ZjXG4gICAgICAgICAgLndhdGNoU2Nyb2xsYWJsZUhvc3QodGhpcy4jZWwpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI3Njcm9sbGFibGVIb3N0V2F0Y2hVbnN1YnNjcmliZSkpXG4gICAgICAgICAgLnN1YnNjcmliZSgoc2Nyb2xsYWJsZUhvc3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuI2Rlc3Ryb3lWaWV3a2VlcGVycygpO1xuXG4gICAgICAgICAgICBsZXQgcHJldmlvdXNWaWV3a2VlcGVyRWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZpZXdrZWVwZXJFbCBvZiB2aWV3a2VlcGVyRWxzKSB7XG4gICAgICAgICAgICAgIHRoaXMuI3ZpZXdrZWVwZXJzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy4jdmlld2tlZXBlclN2Yy5jcmVhdGUoe1xuICAgICAgICAgICAgICAgICAgYm91bmRhcnlFbDogdGhpcy4jZWwubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0OlxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlSG9zdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50XG4gICAgICAgICAgICAgICAgICAgICAgPyBzY3JvbGxhYmxlSG9zdFxuICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgZWw6IHZpZXdrZWVwZXJFbCxcbiAgICAgICAgICAgICAgICAgIHNldFdpZHRoOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXRFbDogcHJldmlvdXNWaWV3a2VlcGVyRWwsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcHJldmlvdXNWaWV3a2VlcGVyRWwgPSB2aWV3a2VlcGVyRWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2N1cnJlbnRWaWV3a2VlcGVyRWxzID0gdmlld2tlZXBlckVscztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
@@ -1,296 +0,0 @@
|
|
1
|
-
const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
|
2
|
-
const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
|
3
|
-
let styleEl;
|
4
|
-
let nextIdIndex;
|
5
|
-
function ensureStyleEl() {
|
6
|
-
if (!styleEl) {
|
7
|
-
styleEl = document.createElement('style');
|
8
|
-
const css = document.createTextNode(`
|
9
|
-
.${CLS_VIEWKEEPER_FIXED} {
|
10
|
-
position: fixed !important;
|
11
|
-
z-index: 999;
|
12
|
-
opacity: 0.95;
|
13
|
-
overflow: hidden;
|
14
|
-
}
|
15
|
-
|
16
|
-
.sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {
|
17
|
-
box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);
|
18
|
-
opacity: initial;
|
19
|
-
}
|
20
|
-
`);
|
21
|
-
styleEl.appendChild(css);
|
22
|
-
document.head.appendChild(styleEl);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
function nextId() {
|
26
|
-
nextIdIndex = (nextIdIndex || 0) + 1;
|
27
|
-
return 'viewkeeper-' + nextIdIndex;
|
28
|
-
}
|
29
|
-
function getOffset(el, scrollableHost) {
|
30
|
-
const rect = el.getBoundingClientRect();
|
31
|
-
const parent = scrollableHost ? scrollableHost : document.documentElement;
|
32
|
-
return {
|
33
|
-
top: rect.top + parent.scrollTop,
|
34
|
-
left: rect.left + parent.scrollLeft,
|
35
|
-
};
|
36
|
-
}
|
37
|
-
function px(value) {
|
38
|
-
let pxValue = value ? value.toString() : '';
|
39
|
-
if (typeof value === 'number') {
|
40
|
-
pxValue = value + 'px';
|
41
|
-
}
|
42
|
-
return pxValue;
|
43
|
-
}
|
44
|
-
function setElPosition(el, left, top, width, marginTop, clipTop, clipLeft) {
|
45
|
-
el.style.top = px(top);
|
46
|
-
el.style.left = px(left);
|
47
|
-
el.style.marginTop = px(marginTop);
|
48
|
-
el.style.clipPath =
|
49
|
-
clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';
|
50
|
-
/*istanbul ignore else*/
|
51
|
-
/* sanity check */
|
52
|
-
if (width !== null) {
|
53
|
-
el.style.width = px(width);
|
54
|
-
}
|
55
|
-
}
|
56
|
-
function getHeightWithMargin(el) {
|
57
|
-
const computedStyle = getComputedStyle(el);
|
58
|
-
return (el.offsetHeight +
|
59
|
-
parseInt(computedStyle.marginTop, 10) +
|
60
|
-
parseInt(computedStyle.marginBottom, 10));
|
61
|
-
}
|
62
|
-
function createCustomEvent(name) {
|
63
|
-
const evt = document.createEvent('CustomEvent');
|
64
|
-
evt.initCustomEvent(name, false, false, undefined);
|
65
|
-
return evt;
|
66
|
-
}
|
67
|
-
export class SkyViewkeeper {
|
68
|
-
#boundaryEl;
|
69
|
-
#el;
|
70
|
-
#id;
|
71
|
-
#setWidth;
|
72
|
-
#verticalOffset;
|
73
|
-
#verticalOffsetEl;
|
74
|
-
#viewportMarginTop = 0;
|
75
|
-
#currentElFixedLeft;
|
76
|
-
#currentElFixedTop;
|
77
|
-
#currentElFixedWidth;
|
78
|
-
#currentElClipLeft;
|
79
|
-
#currentElClipTop;
|
80
|
-
#isDestroyed = false;
|
81
|
-
#scrollableHost;
|
82
|
-
#syncElPositionHandler;
|
83
|
-
#intersectionObserver;
|
84
|
-
#spacerResizeObserver;
|
85
|
-
constructor(options) {
|
86
|
-
options = options || /* istanbul ignore next */ {};
|
87
|
-
this.#el = options.el;
|
88
|
-
this.#boundaryEl = options.boundaryEl;
|
89
|
-
if (!this.#el) {
|
90
|
-
throw new Error('[SkyViewkeeper] The option `el` is required.');
|
91
|
-
}
|
92
|
-
if (!this.#boundaryEl) {
|
93
|
-
throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');
|
94
|
-
}
|
95
|
-
const el = this.#el;
|
96
|
-
const boundaryEl = this.#boundaryEl;
|
97
|
-
this.#setWidth = !!options.setWidth;
|
98
|
-
this.#id = nextId();
|
99
|
-
this.#scrollableHost = options.scrollableHost;
|
100
|
-
this.#verticalOffset = options.verticalOffset || 0;
|
101
|
-
this.#verticalOffsetEl = options.verticalOffsetEl;
|
102
|
-
// Only set viewport margin if the scrollable host is undefined.
|
103
|
-
if (!this.#scrollableHost) {
|
104
|
-
this.#viewportMarginTop = options.viewportMarginTop ?? 0;
|
105
|
-
}
|
106
|
-
this.#syncElPositionHandler = () => this.syncElPosition(el, boundaryEl);
|
107
|
-
if (this.#verticalOffsetEl) {
|
108
|
-
this.#verticalOffsetEl.addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.#syncElPositionHandler);
|
109
|
-
}
|
110
|
-
window.addEventListener('scroll', this.#syncElPositionHandler, true);
|
111
|
-
window.addEventListener('resize', this.#syncElPositionHandler);
|
112
|
-
window.addEventListener('orientationchange', this.#syncElPositionHandler);
|
113
|
-
ensureStyleEl();
|
114
|
-
this.syncElPosition(el, boundaryEl);
|
115
|
-
}
|
116
|
-
syncElPosition(el, boundaryEl) {
|
117
|
-
const verticalOffset = this.#calculateVerticalOffset();
|
118
|
-
// When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.
|
119
|
-
if (el.offsetWidth === 0 && el.offsetHeight === 0) {
|
120
|
-
return;
|
121
|
-
}
|
122
|
-
const boundaryInfo = this.#getBoundaryInfo(el, boundaryEl);
|
123
|
-
const fixedStyles = this.#getFixedStyles(boundaryInfo, verticalOffset);
|
124
|
-
const doFixEl = this.#shouldFixEl(el, boundaryInfo, verticalOffset);
|
125
|
-
if (this.#needsUpdating(doFixEl, fixedStyles)) {
|
126
|
-
if (doFixEl) {
|
127
|
-
this.#fixEl(el, boundaryInfo, fixedStyles);
|
128
|
-
}
|
129
|
-
else {
|
130
|
-
this.#unfixEl(el);
|
131
|
-
}
|
132
|
-
}
|
133
|
-
const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
|
134
|
-
el.dispatchEvent(evt);
|
135
|
-
}
|
136
|
-
destroy() {
|
137
|
-
if (!this.#isDestroyed) {
|
138
|
-
this.#intersectionObserver?.disconnect();
|
139
|
-
window.removeEventListener('scroll', this.#syncElPositionHandler, true);
|
140
|
-
window.removeEventListener('resize', this.#syncElPositionHandler);
|
141
|
-
window.removeEventListener('orientationchange', this.#syncElPositionHandler);
|
142
|
-
if (this.#el) {
|
143
|
-
this.#unfixEl(this.#el);
|
144
|
-
}
|
145
|
-
if (this.#verticalOffsetEl) {
|
146
|
-
this.#verticalOffsetEl.removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, this.#syncElPositionHandler);
|
147
|
-
}
|
148
|
-
this.#spacerResizeObserver?.disconnect();
|
149
|
-
this.#el =
|
150
|
-
this.#boundaryEl =
|
151
|
-
this.#verticalOffsetEl =
|
152
|
-
this.#spacerResizeObserver =
|
153
|
-
undefined;
|
154
|
-
this.#isDestroyed = true;
|
155
|
-
}
|
156
|
-
}
|
157
|
-
#getSpacerId() {
|
158
|
-
return this.#id + '-spacer';
|
159
|
-
}
|
160
|
-
#unfixEl(el) {
|
161
|
-
const spacerEl = document.getElementById(this.#getSpacerId());
|
162
|
-
if (spacerEl) {
|
163
|
-
this.#spacerResizeObserver?.unobserve(spacerEl);
|
164
|
-
/*istanbul ignore else*/
|
165
|
-
if (spacerEl.parentElement) {
|
166
|
-
spacerEl.parentElement.removeChild(spacerEl);
|
167
|
-
}
|
168
|
-
}
|
169
|
-
el.classList.remove(CLS_VIEWKEEPER_FIXED);
|
170
|
-
this.#currentElFixedLeft =
|
171
|
-
this.#currentElFixedTop =
|
172
|
-
this.#currentElFixedWidth =
|
173
|
-
undefined;
|
174
|
-
let width = '';
|
175
|
-
if (this.#setWidth) {
|
176
|
-
width = 'auto';
|
177
|
-
}
|
178
|
-
setElPosition(el, '', '', width, '', 0, 0);
|
179
|
-
}
|
180
|
-
#calculateVerticalOffset() {
|
181
|
-
let offset = this.#verticalOffset;
|
182
|
-
if (this.#verticalOffsetEl) {
|
183
|
-
const verticalOffsetElTopStyle = this.#verticalOffsetEl.style.top;
|
184
|
-
const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;
|
185
|
-
offset += this.#verticalOffsetEl.offsetHeight + verticalOffsetElTop;
|
186
|
-
}
|
187
|
-
else if (this.#scrollableHost) {
|
188
|
-
offset += this.#scrollableHost.getBoundingClientRect().top;
|
189
|
-
}
|
190
|
-
return offset;
|
191
|
-
}
|
192
|
-
#shouldFixEl(el, boundaryInfo, verticalOffset) {
|
193
|
-
let anchorTop;
|
194
|
-
if (boundaryInfo.spacerEl) {
|
195
|
-
anchorTop = getOffset(boundaryInfo.spacerEl, this.#scrollableHost).top;
|
196
|
-
}
|
197
|
-
else {
|
198
|
-
anchorTop = getOffset(el, this.#scrollableHost).top;
|
199
|
-
}
|
200
|
-
const doFixEl = boundaryInfo.scrollTop + verticalOffset + this.#viewportMarginTop >
|
201
|
-
anchorTop;
|
202
|
-
return doFixEl;
|
203
|
-
}
|
204
|
-
#getFixedStyles(boundaryInfo, verticalOffset) {
|
205
|
-
// If the element needs to be fixed, this will calculate its position. The position
|
206
|
-
// will be 0 (fully visible) unless the user is scrolling the boundary out of view.
|
207
|
-
// In that case, the element should begin to scroll out of view with the
|
208
|
-
// rest of the boundary by setting its top position to a negative value.
|
209
|
-
const elTop = boundaryInfo.boundaryBottom -
|
210
|
-
boundaryInfo.elHeight -
|
211
|
-
boundaryInfo.scrollTop;
|
212
|
-
const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;
|
213
|
-
const elFixedTop = Math.min(elTop, verticalOffset);
|
214
|
-
const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
|
215
|
-
const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
|
216
|
-
const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;
|
217
|
-
return {
|
218
|
-
elFixedLeft,
|
219
|
-
elFixedTop,
|
220
|
-
elFixedWidth,
|
221
|
-
elClipLeft,
|
222
|
-
elClipTop,
|
223
|
-
};
|
224
|
-
}
|
225
|
-
#needsUpdating(doFixEl, fixedStyles) {
|
226
|
-
if ((doFixEl &&
|
227
|
-
this.#currentElFixedLeft === fixedStyles.elFixedLeft &&
|
228
|
-
this.#currentElFixedTop === fixedStyles.elFixedTop &&
|
229
|
-
this.#currentElClipLeft === fixedStyles.elClipLeft &&
|
230
|
-
this.#currentElClipTop === fixedStyles.elClipTop &&
|
231
|
-
this.#currentElFixedWidth === fixedStyles.elFixedWidth) ||
|
232
|
-
(!doFixEl &&
|
233
|
-
!(this.#currentElFixedLeft !== undefined &&
|
234
|
-
this.#currentElFixedLeft !== null))) {
|
235
|
-
// The element is either currently fixed and its position and width do not need
|
236
|
-
// to change, or the element is not currently fixed and does not need to be fixed.
|
237
|
-
// No changes are needed.
|
238
|
-
return false;
|
239
|
-
}
|
240
|
-
return true;
|
241
|
-
}
|
242
|
-
#fixEl(el, boundaryInfo, fixedStyles) {
|
243
|
-
/* istanbul ignore else */
|
244
|
-
/* sanity check */
|
245
|
-
if (!boundaryInfo.spacerEl) {
|
246
|
-
const spacerHeight = boundaryInfo.elHeight;
|
247
|
-
const spacerEl = document.createElement('div');
|
248
|
-
spacerEl.id = boundaryInfo.spacerId;
|
249
|
-
spacerEl.style.height = px(spacerHeight);
|
250
|
-
/*istanbul ignore else*/
|
251
|
-
if (el.parentNode) {
|
252
|
-
el.parentNode.insertBefore(spacerEl, el.nextSibling);
|
253
|
-
}
|
254
|
-
if (!this.#spacerResizeObserver) {
|
255
|
-
this.#spacerResizeObserver = new ResizeObserver(() => this.#syncElPositionHandler());
|
256
|
-
}
|
257
|
-
this.#spacerResizeObserver.observe(spacerEl);
|
258
|
-
}
|
259
|
-
el.classList.add(CLS_VIEWKEEPER_FIXED);
|
260
|
-
this.#currentElFixedTop = fixedStyles.elFixedTop;
|
261
|
-
this.#currentElFixedLeft = fixedStyles.elFixedLeft;
|
262
|
-
this.#currentElClipTop = fixedStyles.elClipTop;
|
263
|
-
this.#currentElClipLeft = fixedStyles.elClipLeft;
|
264
|
-
this.#currentElFixedWidth = fixedStyles.elFixedWidth;
|
265
|
-
let width = 0;
|
266
|
-
if (this.#setWidth) {
|
267
|
-
width = fixedStyles.elFixedWidth;
|
268
|
-
}
|
269
|
-
setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, this.#viewportMarginTop, fixedStyles.elClipTop, fixedStyles.elClipLeft);
|
270
|
-
}
|
271
|
-
#getBoundaryInfo(el, boundaryEl) {
|
272
|
-
const spacerId = this.#getSpacerId();
|
273
|
-
const spacerEl = document.getElementById(spacerId);
|
274
|
-
const boundaryOffset = getOffset(boundaryEl, this.#scrollableHost);
|
275
|
-
const boundaryTop = boundaryOffset.top;
|
276
|
-
const boundaryBottom = boundaryTop + boundaryEl.getBoundingClientRect().height;
|
277
|
-
const scrollLeft = this.#scrollableHost
|
278
|
-
? this.#scrollableHost.scrollLeft
|
279
|
-
: document.documentElement.scrollLeft;
|
280
|
-
const scrollTop = this.#scrollableHost
|
281
|
-
? this.#scrollableHost.scrollTop
|
282
|
-
: document.documentElement.scrollTop;
|
283
|
-
const elHeight = getHeightWithMargin(el);
|
284
|
-
return {
|
285
|
-
boundaryBottom,
|
286
|
-
boundaryOffset,
|
287
|
-
boundaryEl,
|
288
|
-
elHeight,
|
289
|
-
scrollLeft,
|
290
|
-
scrollTop,
|
291
|
-
spacerId,
|
292
|
-
spacerEl,
|
293
|
-
};
|
294
|
-
}
|
295
|
-
}
|
296
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy92aWV3a2VlcGVyL3ZpZXdrZWVwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQztBQUNwRCxNQUFNLHlCQUF5QixHQUFHLHFCQUFxQixDQUFDO0FBRXhELElBQUksT0FBeUIsQ0FBQztBQUM5QixJQUFJLFdBQW1CLENBQUM7QUFFeEIsU0FBUyxhQUFhO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUM7R0FDckMsb0JBQW9COzs7Ozs7O3FCQU9GLG9CQUFvQjs7OztDQUl4QyxDQUFDLENBQUM7UUFFQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxNQUFNO0lBQ2IsV0FBVyxHQUFHLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyQyxPQUFPLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUNoQixFQUFlLEVBQ2YsY0FBNEI7SUFFNUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7SUFFMUUsT0FBTztRQUNMLEdBQUcsRUFBRSxJQUFJLENB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SixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvIH0gZnJvbSAnLi92aWV3a2VlcGVyLWJvdW5kYXJ5LWluZm8nO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzIH0gZnJvbSAnLi92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcyc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT2Zmc2V0IH0gZnJvbSAnLi92aWV3a2VlcGVyLW9mZnNldCc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB9IGZyb20gJy4vdmlld2tlZXBlci1vcHRpb25zJztcblxuY29uc3QgQ0xTX1ZJRVdLRUVQRVJfRklYRUQgPSAnc2t5LXZpZXdrZWVwZXItZml4ZWQnO1xuY29uc3QgRVZUX0FGVEVSX1ZJRVdLRUVQRVJfU1lOQyA9ICdhZnRlclZpZXdrZWVwZXJTeW5jJztcblxubGV0IHN0eWxlRWw6IEhUTUxTdHlsZUVsZW1lbnQ7XG5sZXQgbmV4dElkSW5kZXg6IG51bWJlcjtcblxuZnVuY3Rpb24gZW5zdXJlU3R5bGVFbCgpOiB2b2lkIHtcbiAgaWYgKCFzdHlsZUVsKSB7XG4gICAgc3R5bGVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICBjb25zdCBjc3MgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShgXG4uJHtDTFNfVklFV0tFRVBFUl9GSVhFRH0ge1xuICBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDtcbiAgei1pbmRleDogOTk5O1xuICBvcGFjaXR5OiAwLjk1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uc2t5LXRoZW1lLW1vZGVybiAuJHtDTFNfVklFV0tFRVBFUl9GSVhFRH0ge1xuICBib3gtc2hhZG93OiAwcHggMXB4IDhweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgb3BhY2l0eTogaW5pdGlhbDtcbn1cbmApO1xuXG4gICAgc3R5bGVFbC5hcHBlbmRDaGlsZChjc3MpO1xuXG4gICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBuZXh0SWQoKTogc3RyaW5nIHtcbiAgbmV4dElkSW5kZXggPSAobmV4dElkSW5kZXggfHwgMCkgKyAxO1xuXG4gIHJldHVybiAndmlld2tlZXBlci0nICsgbmV4dElkSW5kZXg7XG59XG5cbmZ1bmN0aW9uIGdldE9mZnNldChcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50LFxuKTogU2t5Vmlld2tlZXBlck9mZnNldCB7XG4gIGNvbnN0IHJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgcGFyZW50ID0gc2Nyb2xsYWJsZUhvc3QgPyBzY3JvbGxhYmxlSG9zdCA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICByZXR1cm4ge1xuICAgIHRvcDogcmVjdC50b3AgKyBwYXJlbnQuc2Nyb2xsVG9wLFxuICAgIGxlZnQ6IHJlY3QubGVmdCArIHBhcmVudC5zY3JvbGxMZWZ0LFxuICB9O1xufVxuXG5mdW5jdGlvbiBweCh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgbGV0IHB4VmFsdWUgPSB2YWx1ZSA/IHZhbHVlLnRvU3RyaW5nKCkgOiAnJztcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHB4VmFsdWUgPSB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gcHhWYWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0RWxQb3NpdGlvbihcbiAgZWw6IEhUTUxFbGVtZW50LFxuICBsZWZ0OiBudW1iZXIgfCBzdHJpbmcsXG4gIHRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nLFxuICBtYXJnaW5Ub3A6IG51bWJlciB8IHN0cmluZyxcbiAgY2xpcFRvcDogbnVtYmVyIHwgc3RyaW5nLFxuICBjbGlwTGVmdDogbnVtYmVyIHwgc3RyaW5nLFxuKTogdm9pZCB7XG4gIGVsLnN0eWxlLnRvcCA9IHB4KHRvcCk7XG4gIGVsLnN0eWxlLmxlZnQgPSBweChsZWZ0KTtcbiAgZWwuc3R5bGUubWFyZ2luVG9wID0gcHgobWFyZ2luVG9wKTtcbiAgZWwuc3R5bGUuY2xpcFBhdGggPVxuICAgIGNsaXBUb3AgfHwgY2xpcExlZnQgPyBgaW5zZXQoJHtweChjbGlwVG9wKX0gMCAwICR7cHgoY2xpcExlZnQpfSlgIDogJ25vbmUnO1xuXG4gIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgaWYgKHdpZHRoICE9PSBudWxsKSB7XG4gICAgZWwuc3R5bGUud2lkdGggPSBweCh3aWR0aCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SGVpZ2h0V2l0aE1hcmdpbihlbDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xuICBjb25zdCBjb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG5cbiAgcmV0dXJuIChcbiAgICBlbC5vZmZzZXRIZWlnaHQgK1xuICAgIHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luVG9wLCAxMCkgK1xuICAgIHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLCAxMClcbiAgKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ3VzdG9tRXZlbnQobmFtZTogYW55KTogQ3VzdG9tRXZlbnQ8YW55PiB7XG4gIGNvbnN0IGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdDdXN0b21FdmVudCcpO1xuXG4gIGV2dC5pbml0Q3VzdG9tRXZlbnQobmFtZSwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpO1xuXG4gIHJldHVybiBldnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVyIHtcbiAgI2JvdW5kYXJ5RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gICNlbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgI2lkOiBzdHJpbmc7XG5cbiAgI3NldFdpZHRoOiBib29sZWFuO1xuXG4gICN2ZXJ0aWNhbE9mZnNldDogbnVtYmVyO1xuXG4gICN2ZXJ0aWNhbE9mZnNldEVsOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjdmlld3BvcnRNYXJnaW5Ub3AgPSAwO1xuXG4gICNjdXJyZW50RWxGaXhlZExlZnQ6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRUb3A6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAjY3VycmVudEVsRml4ZWRXaWR0aDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxDbGlwTGVmdDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICNjdXJyZW50RWxDbGlwVG9wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgI2lzRGVzdHJveWVkID0gZmFsc2U7XG5cbiAgI3Njcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICAjc3luY0VsUG9zaXRpb25IYW5kbGVyOiAoKSA9PiB2b2lkO1xuXG4gICNpbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgI3NwYWNlclJlc2l6ZU9ic2VydmVyOiBSZXNpemVPYnNlcnZlciB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTa3lWaWV3a2VlcGVyT3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovIHt9O1xuXG4gICAgdGhpcy4jZWwgPSBvcHRpb25zLmVsO1xuICAgIHRoaXMuI2JvdW5kYXJ5RWwgPSBvcHRpb25zLmJvdW5kYXJ5RWw7XG5cbiAgICBpZiAoIXRoaXMuI2VsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBlbGAgaXMgcmVxdWlyZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLiNib3VuZGFyeUVsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tTa3lWaWV3a2VlcGVyXSBUaGUgb3B0aW9uIGBib3VuZGFyeUVsYCBpcyByZXF1aXJlZC4nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuI2VsO1xuICAgIGNvbnN0IGJvdW5kYXJ5RWwgPSB0aGlzLiNib3VuZGFyeUVsO1xuXG4gICAgdGhpcy4jc2V0V2lkdGggPSAhIW9wdGlvbnMuc2V0V2lkdGg7XG4gICAgdGhpcy4jaWQgPSBuZXh0SWQoKTtcbiAgICB0aGlzLiNzY3JvbGxhYmxlSG9zdCA9IG9wdGlvbnMuc2Nyb2xsYWJsZUhvc3Q7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXQgPSBvcHRpb25zLnZlcnRpY2FsT2Zmc2V0IHx8IDA7XG4gICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbCA9IG9wdGlvbnMudmVydGljYWxPZmZzZXRFbDtcblxuICAgIC8vIE9ubHkgc2V0IHZpZXdwb3J0IG1hcmdpbiBpZiB0aGUgc2Nyb2xsYWJsZSBob3N0IGlzIHVuZGVmaW5lZC5cbiAgICBpZiAoIXRoaXMuI3Njcm9sbGFibGVIb3N0KSB7XG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCA9IG9wdGlvbnMudmlld3BvcnRNYXJnaW5Ub3AgPz8gMDtcbiAgICB9XG5cbiAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIgPSAoKTogdm9pZCA9PlxuICAgICAgdGhpcy5zeW5jRWxQb3NpdGlvbihlbCwgYm91bmRhcnlFbCk7XG5cbiAgICBpZiAodGhpcy4jdmVydGljYWxPZmZzZXRFbCkge1xuICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICBFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DLFxuICAgICAgICB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIsIHRydWUpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcik7XG5cbiAgICBlbnN1cmVTdHlsZUVsKCk7XG5cbiAgICB0aGlzLnN5bmNFbFBvc2l0aW9uKGVsLCBib3VuZGFyeUVsKTtcbiAgfVxuXG4gIHB1YmxpYyBzeW5jRWxQb3NpdGlvbihlbDogSFRNTEVsZW1lbnQsIGJvdW5kYXJ5RWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgdmVydGljYWxPZmZzZXQgPSB0aGlzLiNjYWxjdWxhdGVWZXJ0aWNhbE9mZnNldCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgZWxlbWVudCBpc24ndCB2aXNpYmxlLCBpdHMgc2l6ZSBjYW4ndCBiZSBjYWxjdWxhdGVkLCBzbyBkb24ndCBhdHRlbXB0IHN5bmNpbmcgcG9zaXRpb24gaW4gdGhpcyBjYXNlLlxuICAgIGlmIChlbC5vZmZzZXRXaWR0aCA9PT0gMCAmJiBlbC5vZmZzZXRIZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBib3VuZGFyeUluZm8gPSB0aGlzLiNnZXRCb3VuZGFyeUluZm8oZWwsIGJvdW5kYXJ5RWwpO1xuICAgIGNvbnN0IGZpeGVkU3R5bGVzID0gdGhpcy4jZ2V0Rml4ZWRTdHlsZXMoYm91bmRhcnlJbmZvLCB2ZXJ0aWNhbE9mZnNldCk7XG5cbiAgICBjb25zdCBkb0ZpeEVsID0gdGhpcy4jc2hvdWxkRml4RWwoZWwsIGJvdW5kYXJ5SW5mbywgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgaWYgKHRoaXMuI25lZWRzVXBkYXRpbmcoZG9GaXhFbCwgZml4ZWRTdHlsZXMpKSB7XG4gICAgICBpZiAoZG9GaXhFbCkge1xuICAgICAgICB0aGlzLiNmaXhFbChlbCwgYm91bmRhcnlJbmZvLCBmaXhlZFN0eWxlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLiN1bmZpeEVsKGVsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBldnQgPSBjcmVhdGVDdXN0b21FdmVudChFVlRfQUZURVJfVklFV0tFRVBFUl9TWU5DKTtcblxuICAgIGVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jaXNEZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuI2ludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLCB0cnVlKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLiNzeW5jRWxQb3NpdGlvbkhhbmRsZXIpO1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdvcmllbnRhdGlvbmNoYW5nZScsXG4gICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcixcbiAgICAgICk7XG5cbiAgICAgIGlmICh0aGlzLiNlbCkge1xuICAgICAgICB0aGlzLiN1bmZpeEVsKHRoaXMuI2VsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgICAgdGhpcy4jdmVydGljYWxPZmZzZXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgIEVWVF9BRlRFUl9WSUVXS0VFUEVSX1NZTkMsXG4gICAgICAgICAgdGhpcy4jc3luY0VsUG9zaXRpb25IYW5kbGVyLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuXG4gICAgICB0aGlzLiNlbCA9XG4gICAgICAgIHRoaXMuI2JvdW5kYXJ5RWwgPVxuICAgICAgICB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsID1cbiAgICAgICAgdGhpcy4jc3BhY2VyUmVzaXplT2JzZXJ2ZXIgPVxuICAgICAgICAgIHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy4jaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gICNnZXRTcGFjZXJJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLiNpZCArICctc3BhY2VyJztcbiAgfVxuXG4gICN1bmZpeEVsKGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy4jZ2V0U3BhY2VySWQoKSk7XG5cbiAgICBpZiAoc3BhY2VyRWwpIHtcbiAgICAgIHRoaXMuI3NwYWNlclJlc2l6ZU9ic2VydmVyPy51bm9ic2VydmUoc3BhY2VyRWwpO1xuXG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChzcGFjZXJFbC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIHNwYWNlckVsLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoc3BhY2VyRWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoQ0xTX1ZJRVdLRUVQRVJfRklYRUQpO1xuXG4gICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID1cbiAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPVxuICAgICAgICB1bmRlZmluZWQ7XG5cbiAgICBsZXQgd2lkdGggPSAnJztcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSAnYXV0byc7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihlbCwgJycsICcnLCB3aWR0aCwgJycsIDAsIDApO1xuICB9XG5cbiAgI2NhbGN1bGF0ZVZlcnRpY2FsT2Zmc2V0KCk6IG51bWJlciB7XG4gICAgbGV0IG9mZnNldCA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0O1xuXG4gICAgaWYgKHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwpIHtcbiAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSA9IHRoaXMuI3ZlcnRpY2FsT2Zmc2V0RWwuc3R5bGUudG9wO1xuICAgICAgY29uc3QgdmVydGljYWxPZmZzZXRFbFRvcCA9IHBhcnNlSW50KHZlcnRpY2FsT2Zmc2V0RWxUb3BTdHlsZSwgMTApIHx8IDA7XG5cbiAgICAgIG9mZnNldCArPSB0aGlzLiN2ZXJ0aWNhbE9mZnNldEVsLm9mZnNldEhlaWdodCArIHZlcnRpY2FsT2Zmc2V0RWxUb3A7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNzY3JvbGxhYmxlSG9zdCkge1xuICAgICAgb2Zmc2V0ICs9IHRoaXMuI3Njcm9sbGFibGVIb3N0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgI3Nob3VsZEZpeEVsKFxuICAgIGVsOiBIVE1MRWxlbWVudCxcbiAgICBib3VuZGFyeUluZm86IFNreVZpZXdrZWVwZXJCb3VuZGFyeUluZm8sXG4gICAgdmVydGljYWxPZmZzZXQ6IG51bWJlcixcbiAgKTogYm9vbGVhbiB7XG4gICAgbGV0IGFuY2hvclRvcDogbnVtYmVyO1xuXG4gICAgaWYgKGJvdW5kYXJ5SW5mby5zcGFjZXJFbCkge1xuICAgICAgYW5jaG9yVG9wID0gZ2V0T2Zmc2V0KGJvdW5kYXJ5SW5mby5zcGFjZXJFbCwgdGhpcy4jc2Nyb2xsYWJsZUhvc3QpLnRvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgYW5jaG9yVG9wID0gZ2V0T2Zmc2V0KGVsLCB0aGlzLiNzY3JvbGxhYmxlSG9zdCkudG9wO1xuICAgIH1cblxuICAgIGNvbnN0IGRvRml4RWwgPVxuICAgICAgYm91bmRhcnlJbmZvLnNjcm9sbFRvcCArIHZlcnRpY2FsT2Zmc2V0ICsgdGhpcy4jdmlld3BvcnRNYXJnaW5Ub3AgPlxuICAgICAgYW5jaG9yVG9wO1xuXG4gICAgcmV0dXJuIGRvRml4RWw7XG4gIH1cblxuICAjZ2V0Rml4ZWRTdHlsZXMoXG4gICAgYm91bmRhcnlJbmZvOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvLFxuICAgIHZlcnRpY2FsT2Zmc2V0OiBudW1iZXIsXG4gICk6IFNreVZpZXdrZWVwZXJGaXhlZFN0eWxlcyB7XG4gICAgLy8gSWYgdGhlIGVsZW1lbnQgbmVlZHMgdG8gYmUgZml4ZWQsIHRoaXMgd2lsbCBjYWxjdWxhdGUgaXRzIHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uXG4gICAgLy8gd2lsbCBiZSAwIChmdWxseSB2aXNpYmxlKSB1bmxlc3MgdGhlIHVzZXIgaXMgc2Nyb2xsaW5nIHRoZSBib3VuZGFyeSBvdXQgb2Ygdmlldy5cbiAgICAvLyBJbiB0aGF0IGNhc2UsIHRoZSBlbGVtZW50IHNob3VsZCBiZWdpbiB0byBzY3JvbGwgb3V0IG9mIHZpZXcgd2l0aCB0aGVcbiAgICAvLyByZXN0IG9mIHRoZSBib3VuZGFyeSBieSBzZXR0aW5nIGl0cyB0b3AgcG9zaXRpb24gdG8gYSBuZWdhdGl2ZSB2YWx1ZS5cbiAgICBjb25zdCBlbFRvcCA9XG4gICAgICBib3VuZGFyeUluZm8uYm91bmRhcnlCb3R0b20gLVxuICAgICAgYm91bmRhcnlJbmZvLmVsSGVpZ2h0IC1cbiAgICAgIGJvdW5kYXJ5SW5mby5zY3JvbGxUb3A7XG4gICAgY29uc3QgZWxDbGlwVG9wID0gZWxUb3AgPCB2ZXJ0aWNhbE9mZnNldCA/IHZlcnRpY2FsT2Zmc2V0IC0gZWxUb3AgOiAwO1xuICAgIGNvbnN0IGVsRml4ZWRUb3AgPSBNYXRoLm1pbihlbFRvcCwgdmVydGljYWxPZmZzZXQpO1xuXG4gICAgY29uc3QgZWxGaXhlZFdpZHRoID0gYm91bmRhcnlJbmZvLmJvdW5kYXJ5RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgY29uc3QgZWxGaXhlZExlZnQgPVxuICAgICAgYm91bmRhcnlJbmZvLmJvdW5kYXJ5T2Zmc2V0LmxlZnQgLSBib3VuZGFyeUluZm8uc2Nyb2xsTGVmdDtcbiAgICBjb25zdCBlbENsaXBMZWZ0ID0gZWxGaXhlZExlZnQgPCAwID8gMCAtIGVsRml4ZWRMZWZ0IDogMDtcblxuICAgIHJldHVybiB7XG4gICAgICBlbEZpeGVkTGVmdCxcbiAgICAgIGVsRml4ZWRUb3AsXG4gICAgICBlbEZpeGVkV2lkdGgsXG4gICAgICBlbENsaXBMZWZ0LFxuICAgICAgZWxDbGlwVG9wLFxuICAgIH07XG4gIH1cblxuICAjbmVlZHNVcGRhdGluZyhcbiAgICBkb0ZpeEVsOiBib29sZWFuLFxuICAgIGZpeGVkU3R5bGVzOiBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMsXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIChkb0ZpeEVsICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCA9PT0gZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRUb3AgPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRUb3AgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsQ2xpcExlZnQgPT09IGZpeGVkU3R5bGVzLmVsQ2xpcExlZnQgJiZcbiAgICAgICAgdGhpcy4jY3VycmVudEVsQ2xpcFRvcCA9PT0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wICYmXG4gICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkV2lkdGggPT09IGZpeGVkU3R5bGVzLmVsRml4ZWRXaWR0aCkgfHxcbiAgICAgICghZG9GaXhFbCAmJlxuICAgICAgICAhKFxuICAgICAgICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkTGVmdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgdGhpcy4jY3VycmVudEVsRml4ZWRMZWZ0ICE9PSBudWxsXG4gICAgICAgICkpXG4gICAgKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBlaXRoZXIgY3VycmVudGx5IGZpeGVkIGFuZCBpdHMgcG9zaXRpb24gYW5kIHdpZHRoIGRvIG5vdCBuZWVkXG4gICAgICAvLyB0byBjaGFuZ2UsIG9yIHRoZSBlbGVtZW50IGlzIG5vdCBjdXJyZW50bHkgZml4ZWQgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgZml4ZWQuXG4gICAgICAvLyBObyBjaGFuZ2VzIGFyZSBuZWVkZWQuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAjZml4RWwoXG4gICAgZWw6IEhUTUxFbGVtZW50LFxuICAgIGJvdW5kYXJ5SW5mbzogU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyxcbiAgICBmaXhlZFN0eWxlczogU2t5Vmlld2tlZXBlckZpeGVkU3R5bGVzLFxuICApOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIGlmICghYm91bmRhcnlJbmZvLnNwYWNlckVsKSB7XG4gICAgICBjb25zdCBzcGFjZXJIZWlnaHQgPSBib3VuZGFyeUluZm8uZWxIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IHNwYWNlckVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBzcGFjZXJFbC5pZCA9IGJvdW5kYXJ5SW5mby5zcGFjZXJJZDtcbiAgICAgIHNwYWNlckVsLnN0eWxlLmhlaWdodCA9IHB4KHNwYWNlckhlaWdodCk7XG5cbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKGVsLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWwucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc3BhY2VyRWwsIGVsLm5leHRTaWJsaW5nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlcikge1xuICAgICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PlxuICAgICAgICAgIHRoaXMuI3N5bmNFbFBvc2l0aW9uSGFuZGxlcigpLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNzcGFjZXJSZXNpemVPYnNlcnZlci5vYnNlcnZlKHNwYWNlckVsKTtcbiAgICB9XG5cbiAgICBlbC5jbGFzc0xpc3QuYWRkKENMU19WSUVXS0VFUEVSX0ZJWEVEKTtcblxuICAgIHRoaXMuI2N1cnJlbnRFbEZpeGVkVG9wID0gZml4ZWRTdHlsZXMuZWxGaXhlZFRvcDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZExlZnQgPSBmaXhlZFN0eWxlcy5lbEZpeGVkTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxDbGlwVG9wID0gZml4ZWRTdHlsZXMuZWxDbGlwVG9wO1xuICAgIHRoaXMuI2N1cnJlbnRFbENsaXBMZWZ0ID0gZml4ZWRTdHlsZXMuZWxDbGlwTGVmdDtcbiAgICB0aGlzLiNjdXJyZW50RWxGaXhlZFdpZHRoID0gZml4ZWRTdHlsZXMuZWxGaXhlZFdpZHRoO1xuXG4gICAgbGV0IHdpZHRoID0gMDtcblxuICAgIGlmICh0aGlzLiNzZXRXaWR0aCkge1xuICAgICAgd2lkdGggPSBmaXhlZFN0eWxlcy5lbEZpeGVkV2lkdGg7XG4gICAgfVxuXG4gICAgc2V0RWxQb3NpdGlvbihcbiAgICAgIGVsLFxuICAgICAgZml4ZWRTdHlsZXMuZWxGaXhlZExlZnQsXG4gICAgICBmaXhlZFN0eWxlcy5lbEZpeGVkVG9wLFxuICAgICAgd2lkdGgsXG4gICAgICB0aGlzLiN2aWV3cG9ydE1hcmdpblRvcCxcbiAgICAgIGZpeGVkU3R5bGVzLmVsQ2xpcFRvcCxcbiAgICAgIGZpeGVkU3R5bGVzLmVsQ2xpcExlZnQsXG4gICAgKTtcbiAgfVxuXG4gICNnZXRCb3VuZGFyeUluZm8oXG4gICAgZWw6IEhUTUxFbGVtZW50LFxuICAgIGJvdW5kYXJ5RWw6IEhUTUxFbGVtZW50LFxuICApOiBTa3lWaWV3a2VlcGVyQm91bmRhcnlJbmZvIHtcbiAgICBjb25zdCBzcGFjZXJJZCA9IHRoaXMuI2dldFNwYWNlcklkKCk7XG5cbiAgICBjb25zdCBzcGFjZXJFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHNwYWNlcklkKTtcblxuICAgIGNvbnN0IGJvdW5kYXJ5T2Zmc2V0ID0gZ2V0T2Zmc2V0KGJvdW5kYXJ5RWwsIHRoaXMuI3Njcm9sbGFibGVIb3N0KTtcbiAgICBjb25zdCBib3VuZGFyeVRvcCA9IGJvdW5kYXJ5T2Zmc2V0LnRvcDtcbiAgICBjb25zdCBib3VuZGFyeUJvdHRvbSA9XG4gICAgICBib3VuZGFyeVRvcCArIGJvdW5kYXJ5RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHRoaXMuI3Njcm9sbGFibGVIb3N0XG4gICAgICA/IHRoaXMuI3Njcm9sbGFibGVIb3N0LnNjcm9sbExlZnRcbiAgICAgIDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID0gdGhpcy4jc2Nyb2xsYWJsZUhvc3RcbiAgICAgID8gdGhpcy4jc2Nyb2xsYWJsZUhvc3Quc2Nyb2xsVG9wXG4gICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG5cbiAgICBjb25zdCBlbEhlaWdodCA9IGdldEhlaWdodFdpdGhNYXJnaW4oZWwpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGJvdW5kYXJ5Qm90dG9tLFxuICAgICAgYm91bmRhcnlPZmZzZXQsXG4gICAgICBib3VuZGFyeUVsLFxuICAgICAgZWxIZWlnaHQsXG4gICAgICBzY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wLFxuICAgICAgc3BhY2VySWQsXG4gICAgICBzcGFjZXJFbCxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { SkyViewkeeperDirective } from './viewkeeper.directive';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class SkyViewkeeperModule {
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
6
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperModule, declarations: [SkyViewkeeperDirective], exports: [SkyViewkeeperDirective] }); }
|
7
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperModule }); }
|
8
|
-
}
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperModule, decorators: [{
|
10
|
-
type: NgModule,
|
11
|
-
args: [{
|
12
|
-
declarations: [SkyViewkeeperDirective],
|
13
|
-
exports: [SkyViewkeeperDirective],
|
14
|
-
}]
|
15
|
-
}] });
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQU1oRSxNQUFNLE9BQU8sbUJBQW1COytHQUFuQixtQkFBbUI7Z0hBQW5CLG1CQUFtQixpQkFIZixzQkFBc0IsYUFDM0Isc0JBQXNCO2dIQUVyQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBSi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO2lCQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVZpZXdrZWVwZXJEaXJlY3RpdmUgfSBmcm9tICcuL3ZpZXdrZWVwZXIuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5Vmlld2tlZXBlckRpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtTa3lWaWV3a2VlcGVyRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Vmlld2tlZXBlck1vZHVsZSB7fVxuIl19
|
@@ -1,39 +0,0 @@
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
2
|
-
import { SkyViewkeeper } from './viewkeeper';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
import * as i1 from "./viewkeeper-host-options";
|
5
|
-
/**
|
6
|
-
* Provides methods for creating and destroying viewkeeper instances.
|
7
|
-
*/
|
8
|
-
export class SkyViewkeeperService {
|
9
|
-
#hostOptions;
|
10
|
-
constructor(hostOptions) {
|
11
|
-
this.#hostOptions = hostOptions;
|
12
|
-
}
|
13
|
-
/**
|
14
|
-
*
|
15
|
-
* @param options Creates a viewkeeper instance, applying host options where applicable.
|
16
|
-
*/
|
17
|
-
create(options) {
|
18
|
-
options = Object.assign({}, this.#hostOptions || {}, options);
|
19
|
-
return new SkyViewkeeper(options);
|
20
|
-
}
|
21
|
-
/**
|
22
|
-
* Destroys a viewkeeper instance.
|
23
|
-
* @param vk Viewkeeper instance to destroy.
|
24
|
-
*/
|
25
|
-
destroy(vk) {
|
26
|
-
vk.destroy();
|
27
|
-
}
|
28
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperService, deps: [{ token: i1.SkyViewkeeperHostOptions, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
29
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperService, providedIn: 'root' }); }
|
30
|
-
}
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperService, decorators: [{
|
32
|
-
type: Injectable,
|
33
|
-
args: [{
|
34
|
-
providedIn: 'root',
|
35
|
-
}]
|
36
|
-
}], ctorParameters: () => [{ type: i1.SkyViewkeeperHostOptions, decorators: [{
|
37
|
-
type: Optional
|
38
|
-
}] }] });
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUk3Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFBWSxDQUF1QztJQUVuRCxZQUF3QixXQUFzQztRQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLE9BQTZCO1FBQ3pDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUU5RCxPQUFPLElBQUksYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsRUFBaUI7UUFDOUIsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQzsrR0F2QlUsb0JBQW9CO21IQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBSWMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVZpZXdrZWVwZXIgfSBmcm9tICcuL3ZpZXdrZWVwZXInO1xuaW1wb3J0IHsgU2t5Vmlld2tlZXBlckhvc3RPcHRpb25zIH0gZnJvbSAnLi92aWV3a2VlcGVyLWhvc3Qtb3B0aW9ucyc7XG5pbXBvcnQgeyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB9IGZyb20gJy4vdmlld2tlZXBlci1vcHRpb25zJztcblxuLyoqXG4gKiBQcm92aWRlcyBtZXRob2RzIGZvciBjcmVhdGluZyBhbmQgZGVzdHJveWluZyB2aWV3a2VlcGVyIGluc3RhbmNlcy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVZpZXdrZWVwZXJTZXJ2aWNlIHtcbiAgI2hvc3RPcHRpb25zOiBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgaG9zdE9wdGlvbnM/OiBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMpIHtcbiAgICB0aGlzLiNob3N0T3B0aW9ucyA9IGhvc3RPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIENyZWF0ZXMgYSB2aWV3a2VlcGVyIGluc3RhbmNlLCBhcHBseWluZyBob3N0IG9wdGlvbnMgd2hlcmUgYXBwbGljYWJsZS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGUob3B0aW9uczogU2t5Vmlld2tlZXBlck9wdGlvbnMpOiBTa3lWaWV3a2VlcGVyIHtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy4jaG9zdE9wdGlvbnMgfHwge30sIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIG5ldyBTa3lWaWV3a2VlcGVyKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3lzIGEgdmlld2tlZXBlciBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHZrIFZpZXdrZWVwZXIgaW5zdGFuY2UgdG8gZGVzdHJveS5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KHZrOiBTa3lWaWV3a2VlcGVyKTogdm9pZCB7XG4gICAgdmsuZGVzdHJveSgpO1xuICB9XG59XG4iXX0=
|
@@ -1,30 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* @internal
|
5
|
-
*/
|
6
|
-
export function getWindow() {
|
7
|
-
return window;
|
8
|
-
}
|
9
|
-
/**
|
10
|
-
* The application window reference service references the global window variable.
|
11
|
-
* After users inject SkyAppWindowRef into a component, they can use the service to interact with
|
12
|
-
* window properties and event handlers by referencing its nativeWindow property.
|
13
|
-
*/
|
14
|
-
export class SkyAppWindowRef {
|
15
|
-
/**
|
16
|
-
* The global `window` variable.
|
17
|
-
*/
|
18
|
-
get nativeWindow() {
|
19
|
-
return getWindow();
|
20
|
-
}
|
21
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppWindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
22
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppWindowRef, providedIn: 'root' }); }
|
23
|
-
}
|
24
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppWindowRef, decorators: [{
|
25
|
-
type: Injectable,
|
26
|
-
args: [{
|
27
|
-
providedIn: 'root',
|
28
|
-
}]
|
29
|
-
}] });
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LXJlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy93aW5kb3cvd2luZG93LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQzs7R0FFRztBQUNILE1BQU0sVUFBVSxTQUFTO0lBQ3ZCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLGVBQWU7SUFDMUI7O09BRUc7SUFDSCxJQUFXLFlBQVk7UUFDckIsT0FBTyxTQUFTLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQU5VLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2luZG93KCk6IGFueSB7XG4gIHJldHVybiB3aW5kb3c7XG59XG5cbi8qKlxuICogVGhlIGFwcGxpY2F0aW9uIHdpbmRvdyByZWZlcmVuY2Ugc2VydmljZSByZWZlcmVuY2VzIHRoZSBnbG9iYWwgd2luZG93IHZhcmlhYmxlLlxuICogQWZ0ZXIgdXNlcnMgaW5qZWN0IFNreUFwcFdpbmRvd1JlZiBpbnRvIGEgY29tcG9uZW50LCB0aGV5IGNhbiB1c2UgdGhlIHNlcnZpY2UgdG8gaW50ZXJhY3Qgd2l0aFxuICogd2luZG93IHByb3BlcnRpZXMgYW5kIGV2ZW50IGhhbmRsZXJzIGJ5IHJlZmVyZW5jaW5nIGl0cyBuYXRpdmVXaW5kb3cgcHJvcGVydHkuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBXaW5kb3dSZWYge1xuICAvKipcbiAgICogVGhlIGdsb2JhbCBgd2luZG93YCB2YXJpYWJsZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgbmF0aXZlV2luZG93KCk6IGFueSB7XG4gICAgcmV0dXJuIGdldFdpbmRvdygpO1xuICB9XG59XG4iXX0=
|
package/esm2022/skyux-core.mjs
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5dXgtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9za3l1eC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { SkyMediaQueryService, SkyUIConfigService } from '@skyux/core';
|
3
|
-
import { MockSkyMediaQueryService } from './mock-media-query.service';
|
4
|
-
import { MockSkyUIConfigService } from './mock-ui-config.service';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
/**
|
7
|
-
* @internal
|
8
|
-
*/
|
9
|
-
export class SkyCoreTestingModule {
|
10
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
11
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreTestingModule }); }
|
12
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreTestingModule, providers: [
|
13
|
-
{ provide: SkyMediaQueryService, useClass: MockSkyMediaQueryService },
|
14
|
-
{
|
15
|
-
provide: SkyUIConfigService,
|
16
|
-
useClass: MockSkyUIConfigService,
|
17
|
-
},
|
18
|
-
] }); }
|
19
|
-
}
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreTestingModule, decorators: [{
|
21
|
-
type: NgModule,
|
22
|
-
args: [{
|
23
|
-
providers: [
|
24
|
-
{ provide: SkyMediaQueryService, useClass: MockSkyMediaQueryService },
|
25
|
-
{
|
26
|
-
provide: SkyUIConfigService,
|
27
|
-
useClass: MockSkyUIConfigService,
|
28
|
-
},
|
29
|
-
],
|
30
|
-
}]
|
31
|
-
}] });
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS10ZXN0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3Rlc3Rpbmcvc3JjL2xlZ2FjeS9jb3JlLXRlc3RpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVsRTs7R0FFRztBQVVILE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CO2dIQUFwQixvQkFBb0IsYUFScEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUU7WUFDckU7Z0JBQ0UsT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsUUFBUSxFQUFFLHNCQUFzQjthQUNqQztTQUNGOzs0RkFFVSxvQkFBb0I7a0JBVGhDLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNULEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRTt3QkFDckU7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLHNCQUFzQjt5QkFDakM7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TWVkaWFRdWVyeVNlcnZpY2UsIFNreVVJQ29uZmlnU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgTW9ja1NreU1lZGlhUXVlcnlTZXJ2aWNlIH0gZnJvbSAnLi9tb2NrLW1lZGlhLXF1ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9ja1NreVVJQ29uZmlnU2VydmljZSB9IGZyb20gJy4vbW9jay11aS1jb25maWcuc2VydmljZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogU2t5TWVkaWFRdWVyeVNlcnZpY2UsIHVzZUNsYXNzOiBNb2NrU2t5TWVkaWFRdWVyeVNlcnZpY2UgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTa3lVSUNvbmZpZ1NlcnZpY2UsXG4gICAgICB1c2VDbGFzczogTW9ja1NreVVJQ29uZmlnU2VydmljZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3JlVGVzdGluZ01vZHVsZSB7fVxuIl19
|