@skyux/core 8.6.0 → 9.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/{esm2020 → esm2022}/lib/modules/adapter-service/adapter.module.mjs +5 -5
- package/esm2022/lib/modules/adapter-service/adapter.service.mjs +225 -0
- package/esm2022/lib/modules/affix/affix.directive.mjs +116 -0
- package/{esm2020 → esm2022}/lib/modules/affix/affix.module.mjs +5 -5
- package/esm2022/lib/modules/affix/affix.service.mjs +25 -0
- package/esm2022/lib/modules/affix/affixer.mjs +398 -0
- package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +26 -0
- package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +81 -0
- package/esm2022/lib/modules/dock/dock-item.mjs +31 -0
- package/esm2022/lib/modules/dock/dock.component.mjs +108 -0
- package/{esm2020 → esm2022}/lib/modules/dock/dock.module.mjs +5 -5
- package/esm2022/lib/modules/dock/dock.service.mjs +96 -0
- package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component.module.mjs +5 -5
- package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +106 -0
- package/{esm2020 → esm2022}/lib/modules/format/app-format.mjs +4 -4
- package/esm2022/lib/modules/id/id.directive.mjs +31 -0
- package/{esm2020 → esm2022}/lib/modules/id/id.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modules/id/id.service.mjs +4 -4
- package/esm2022/lib/modules/layout-host/layout-host.service.mjs +22 -0
- package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +79 -0
- package/{esm2020 → esm2022}/lib/modules/log/log.module.mjs +5 -5
- package/esm2022/lib/modules/log/log.service.mjs +148 -0
- package/{esm2020 → esm2022}/lib/modules/media-query/media-query.module.mjs +5 -5
- package/esm2022/lib/modules/media-query/media-query.service.mjs +123 -0
- package/{esm2020 → esm2022}/lib/modules/mutation/mutation-observer-service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/numeric/numeric.module.mjs +5 -5
- package/esm2022/lib/modules/numeric/numeric.pipe.mjs +81 -0
- package/esm2022/lib/modules/numeric/numeric.service.mjs +205 -0
- package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +44 -0
- package/esm2022/lib/modules/overlay/overlay-instance.mjs +62 -0
- package/esm2022/lib/modules/overlay/overlay.component.mjs +193 -0
- package/{esm2020 → esm2022}/lib/modules/overlay/overlay.module.mjs +5 -5
- package/esm2022/lib/modules/overlay/overlay.service.mjs +124 -0
- package/{esm2020 → esm2022}/lib/modules/percent-pipe/percent-pipe.module.mjs +5 -5
- package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +56 -0
- package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +120 -0
- package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +77 -0
- package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +223 -0
- package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +72 -0
- package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +50 -0
- package/esm2022/lib/modules/title/title.service.mjs +31 -0
- package/esm2022/lib/modules/trim/trim.directive.mjs +64 -0
- package/{esm2020 → esm2022}/lib/modules/trim/trim.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modules/ui-config/ui-config.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-host-options.mjs +4 -4
- package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +131 -0
- package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +283 -0
- package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper.module.mjs +5 -5
- package/esm2022/lib/modules/viewkeeper/viewkeeper.service.mjs +39 -0
- package/{esm2020 → esm2022}/lib/modules/window/window-ref.mjs +4 -4
- package/esm2022/testing/core-testing.module.mjs +32 -0
- package/esm2022/testing/mock-media-query.service.mjs +46 -0
- package/{esm2020 → esm2022}/testing/mock-ui-config.service.mjs +4 -4
- package/esm2022/testing/overlay/overlay-harness.mjs +43 -0
- package/esm2022/testing/shared/component-harness.mjs +13 -0
- package/{fesm2020 → fesm2022}/skyux-core-testing.mjs +28 -34
- package/{fesm2020 → fesm2022}/skyux-core-testing.mjs.map +1 -1
- package/fesm2022/skyux-core.mjs +3858 -0
- package/fesm2022/skyux-core.mjs.map +1 -0
- package/lib/modules/affix/affix.directive.d.ts +1 -1
- package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +1 -1
- package/package.json +14 -22
- package/esm2020/lib/modules/adapter-service/adapter.service.mjs +0 -227
- package/esm2020/lib/modules/affix/affix.directive.mjs +0 -118
- package/esm2020/lib/modules/affix/affix.service.mjs +0 -28
- package/esm2020/lib/modules/affix/affixer.mjs +0 -377
- package/esm2020/lib/modules/default-input-provider/default-input-provider.mjs +0 -31
- package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +0 -83
- package/esm2020/lib/modules/dock/dock-item.mjs +0 -34
- package/esm2020/lib/modules/dock/dock.component.mjs +0 -110
- package/esm2020/lib/modules/dock/dock.service.mjs +0 -98
- package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +0 -109
- package/esm2020/lib/modules/id/id.directive.mjs +0 -34
- package/esm2020/lib/modules/layout-host/layout-host.service.mjs +0 -27
- package/esm2020/lib/modules/live-announcer/live-announcer.service.mjs +0 -80
- package/esm2020/lib/modules/log/log.service.mjs +0 -147
- package/esm2020/lib/modules/media-query/media-query.service.mjs +0 -124
- package/esm2020/lib/modules/numeric/numeric.pipe.mjs +0 -84
- package/esm2020/lib/modules/numeric/numeric.service.mjs +0 -179
- package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +0 -47
- package/esm2020/lib/modules/overlay/overlay-instance.mjs +0 -65
- package/esm2020/lib/modules/overlay/overlay.component.mjs +0 -192
- package/esm2020/lib/modules/overlay/overlay.service.mjs +0 -125
- package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +0 -59
- package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +0 -121
- package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +0 -79
- package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +0 -218
- package/esm2020/lib/modules/shared/number-format/number-format-utility.mjs +0 -72
- package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +0 -50
- package/esm2020/lib/modules/title/title.service.mjs +0 -34
- package/esm2020/lib/modules/trim/trim.directive.mjs +0 -65
- package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +0 -131
- package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +0 -276
- package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +0 -42
- package/esm2020/testing/core-testing.module.mjs +0 -32
- package/esm2020/testing/mock-media-query.service.mjs +0 -46
- package/esm2020/testing/overlay/overlay-harness.mjs +0 -43
- package/esm2020/testing/shared/component-harness.mjs +0 -19
- package/fesm2015/skyux-core-testing.mjs +0 -209
- package/fesm2015/skyux-core-testing.mjs.map +0 -1
- package/fesm2015/skyux-core.mjs +0 -3835
- package/fesm2015/skyux-core.mjs.map +0 -1
- package/fesm2020/skyux-core.mjs +0 -3825
- package/fesm2020/skyux-core.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/adapter-service/focusable-children-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-auto-fit-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-horizontal-alignment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-offset-change.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-offset.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-placement-change.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-placement.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-rect.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/affix-vertical-alignment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/affix/dom-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-insert-component-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-item-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-item-reference.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-location.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/dock-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dock/sort-by-stack-order.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component-location.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/layout-host/layout-host-for-child-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/live-announcer/types/live-announcer-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/live-announcer/types/live-announcer-politeness.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/log/types/log-deprecation-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/log/types/log-level-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/log/types/log-level.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/media-query/media-breakpoints.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/media-query/media-query-listener.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/numeric/numeric-symbol.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/numeric/numeric.options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/stacking-context/stacking-context-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/stacking-context/stacking-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/title/set-title-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-offset.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-options.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-core.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/overlay/overlay-harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/shared/harness-filters.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-core-testing.mjs +0 -0
@@ -1,121 +0,0 @@
|
|
1
|
-
var _SkyResizeObserverMediaQueryService_instances, _SkyResizeObserverMediaQueryService_breakpoints, _SkyResizeObserverMediaQueryService_currentBreakpoint, _SkyResizeObserverMediaQueryService_currentBreakpointObs, _SkyResizeObserverMediaQueryService_ngUnsubscribe, _SkyResizeObserverMediaQueryService_resizeObserverSvc, _SkyResizeObserverMediaQueryService_target, _SkyResizeObserverMediaQueryService_updateBreakpoint, _SkyResizeObserverMediaQueryService_checkBreakpoint, _SkyResizeObserverMediaQueryService_checkWidth;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Injectable } from '@angular/core';
|
4
|
-
import { ReplaySubject, Subject } from 'rxjs';
|
5
|
-
import { takeUntil } from 'rxjs/operators';
|
6
|
-
import { SkyMediaBreakpoints } from '../media-query/media-breakpoints';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "./resize-observer.service";
|
9
|
-
const DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;
|
10
|
-
/**
|
11
|
-
* Acts like `SkyMediaQueryService` for a container element, emitting the same responsive breakpoints.
|
12
|
-
*/
|
13
|
-
export class SkyResizeObserverMediaQueryService {
|
14
|
-
/**
|
15
|
-
* Returns the current breakpoint.
|
16
|
-
*/
|
17
|
-
get current() {
|
18
|
-
return __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpoint, "f");
|
19
|
-
}
|
20
|
-
constructor(resizeObserverSvc) {
|
21
|
-
_SkyResizeObserverMediaQueryService_instances.add(this);
|
22
|
-
_SkyResizeObserverMediaQueryService_breakpoints.set(this, [
|
23
|
-
{
|
24
|
-
check: (width) => width > 0 && width <= 767,
|
25
|
-
name: SkyMediaBreakpoints.xs,
|
26
|
-
},
|
27
|
-
{
|
28
|
-
check: (width) => width > 767 && width <= 991,
|
29
|
-
name: SkyMediaBreakpoints.sm,
|
30
|
-
},
|
31
|
-
{
|
32
|
-
check: (width) => width > 991 && width <= 1199,
|
33
|
-
name: SkyMediaBreakpoints.md,
|
34
|
-
},
|
35
|
-
{
|
36
|
-
check: (width) => width > 1199,
|
37
|
-
name: SkyMediaBreakpoints.lg,
|
38
|
-
},
|
39
|
-
]);
|
40
|
-
_SkyResizeObserverMediaQueryService_currentBreakpoint.set(this, DEFAULT_BREAKPOINT);
|
41
|
-
_SkyResizeObserverMediaQueryService_currentBreakpointObs.set(this, new ReplaySubject(1));
|
42
|
-
_SkyResizeObserverMediaQueryService_ngUnsubscribe.set(this, new Subject());
|
43
|
-
_SkyResizeObserverMediaQueryService_resizeObserverSvc.set(this, void 0);
|
44
|
-
_SkyResizeObserverMediaQueryService_target.set(this, void 0);
|
45
|
-
__classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_resizeObserverSvc, resizeObserverSvc, "f");
|
46
|
-
}
|
47
|
-
ngOnDestroy() {
|
48
|
-
this.unobserve();
|
49
|
-
__classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_target, undefined, "f");
|
50
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpointObs, "f").complete();
|
51
|
-
}
|
52
|
-
/**
|
53
|
-
* @internal
|
54
|
-
*/
|
55
|
-
destroy() {
|
56
|
-
this.ngOnDestroy();
|
57
|
-
}
|
58
|
-
/**
|
59
|
-
* Sets the container element to watch. The `SkyResizeObserverMediaQueryService` will only observe one element at a
|
60
|
-
* time. Any previous subscriptions will be unsubscribed when a new element is observed.
|
61
|
-
*/
|
62
|
-
observe(element) {
|
63
|
-
if (__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_target, "f")) {
|
64
|
-
if (__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_target, "f") === element) {
|
65
|
-
return this;
|
66
|
-
}
|
67
|
-
this.unobserve();
|
68
|
-
}
|
69
|
-
__classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_target, element, "f");
|
70
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_checkWidth).call(this, element);
|
71
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_resizeObserverSvc, "f")
|
72
|
-
.observe(element)
|
73
|
-
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f")))
|
74
|
-
.subscribe((value) => {
|
75
|
-
const breakpoint = __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_checkBreakpoint).call(this, value.contentRect.width);
|
76
|
-
if (breakpoint && breakpoint !== this.current) {
|
77
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_updateBreakpoint).call(this, breakpoint);
|
78
|
-
}
|
79
|
-
});
|
80
|
-
return this;
|
81
|
-
}
|
82
|
-
/**
|
83
|
-
* Stop watching the container element.
|
84
|
-
*/
|
85
|
-
unobserve() {
|
86
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f").next();
|
87
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f").complete();
|
88
|
-
}
|
89
|
-
/**
|
90
|
-
* Subscribes to element size changes that cross breakpoints.
|
91
|
-
*/
|
92
|
-
subscribe(listener) {
|
93
|
-
return __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpointObs, "f")
|
94
|
-
.pipe(takeUntil(__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f")))
|
95
|
-
.subscribe((value) => {
|
96
|
-
listener(value);
|
97
|
-
});
|
98
|
-
}
|
99
|
-
}
|
100
|
-
_SkyResizeObserverMediaQueryService_breakpoints = new WeakMap(), _SkyResizeObserverMediaQueryService_currentBreakpoint = new WeakMap(), _SkyResizeObserverMediaQueryService_currentBreakpointObs = new WeakMap(), _SkyResizeObserverMediaQueryService_ngUnsubscribe = new WeakMap(), _SkyResizeObserverMediaQueryService_resizeObserverSvc = new WeakMap(), _SkyResizeObserverMediaQueryService_target = new WeakMap(), _SkyResizeObserverMediaQueryService_instances = new WeakSet(), _SkyResizeObserverMediaQueryService_updateBreakpoint = function _SkyResizeObserverMediaQueryService_updateBreakpoint(breakpoint) {
|
101
|
-
__classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_currentBreakpoint, breakpoint, "f");
|
102
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpointObs, "f").next(breakpoint);
|
103
|
-
}, _SkyResizeObserverMediaQueryService_checkBreakpoint = function _SkyResizeObserverMediaQueryService_checkBreakpoint(width) {
|
104
|
-
const breakpoint = __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_breakpoints, "f").find((breakpoint) => breakpoint.check(width));
|
105
|
-
return breakpoint ? breakpoint.name : undefined;
|
106
|
-
}, _SkyResizeObserverMediaQueryService_checkWidth = function _SkyResizeObserverMediaQueryService_checkWidth(el) {
|
107
|
-
const width = el.nativeElement.offsetWidth || 0;
|
108
|
-
const breakpoint = __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_checkBreakpoint).call(this, width);
|
109
|
-
if (breakpoint && breakpoint !== __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpoint, "f")) {
|
110
|
-
__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_updateBreakpoint).call(this, breakpoint);
|
111
|
-
}
|
112
|
-
};
|
113
|
-
SkyResizeObserverMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverMediaQueryService, deps: [{ token: i1.SkyResizeObserverService }], target: i0.ɵɵFactoryTarget.Injectable });
|
114
|
-
SkyResizeObserverMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverMediaQueryService, providedIn: 'any' });
|
115
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverMediaQueryService, decorators: [{
|
116
|
-
type: Injectable,
|
117
|
-
args: [{
|
118
|
-
providedIn: 'any',
|
119
|
-
}]
|
120
|
-
}], ctorParameters: function () { return [{ type: i1.SkyResizeObserverService }]; } });
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLW1lZGlhLXF1ZXJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci1tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFLdkUsTUFBTSxrQkFBa0IsR0FBRyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7QUFFbEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sa0NBQWtDO0lBQzdDOztPQUVHO0lBQ0gsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sdUJBQUEsSUFBSSw2REFBbUIsQ0FBQztJQUNqQyxDQUFDO0lBa0NELFlBQVksaUJBQTJDOztRQWhDdkQsMERBR007WUFDSjtnQkFDRSxLQUFLLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLEdBQUc7Z0JBQ25ELElBQUksRUFBRSxtQkFBbUIsQ0FBQyxFQUFFO2FBQzdCO1lBQ0Q7Z0JBQ0UsS0FBSyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsR0FBRyxJQUFJLEtBQUssSUFBSSxHQUFHO2dCQUNyRCxJQUFJLEVBQUUsbUJBQW1CLENBQUMsRUFBRTthQUM3QjtZQUNEO2dCQUNFLEtBQUssRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLEdBQUcs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QUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNsRCxDQUFDLDJHQUVXLEVBQWM7SUFDeEIsTUFBTSxLQUFLLEdBQUksRUFBRSxDQUFDLGFBQTZCLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNqRSxNQUFNLFVBQVUsR0FBRyx1QkFBQSxJQUFJLDBHQUFpQixNQUFyQixJQUFJLEVBQWtCLEtBQUssQ0FBQyxDQUFDO0lBRWhELElBQUksVUFBVSxJQUFJLFVBQVUsS0FBSyx1QkFBQSxJQUFJLDZEQUFtQixFQUFFO1FBQ3hELHVCQUFBLElBQUksMkdBQWtCLE1BQXRCLElBQUksRUFBbUIsVUFBVSxDQUFDLENBQUM7S0FDcEM7QUFDSCxDQUFDOytIQTlIVSxrQ0FBa0M7bUlBQWxDLGtDQUFrQyxjQUZqQyxLQUFLOzJGQUVOLGtDQUFrQztrQkFIOUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsS0FBSztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU1lZGlhQnJlYWtwb2ludHMgfSBmcm9tICcuLi9tZWRpYS1xdWVyeS9tZWRpYS1icmVha3BvaW50cyc7XG5pbXBvcnQgeyBTa3lNZWRpYVF1ZXJ5TGlzdGVuZXIgfSBmcm9tICcuLi9tZWRpYS1xdWVyeS9tZWRpYS1xdWVyeS1saXN0ZW5lcic7XG5cbmltcG9ydCB7IFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4vcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuXG5jb25zdCBERUZBVUxUX0JSRUFLUE9JTlQgPSBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kO1xuXG4vKipcbiAqIEFjdHMgbGlrZSBgU2t5TWVkaWFRdWVyeVNlcnZpY2VgIGZvciBhIGNvbnRhaW5lciBlbGVtZW50LCBlbWl0dGluZyB0aGUgc2FtZSByZXNwb25zaXZlIGJyZWFrcG9pbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdhbnknLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgYnJlYWtwb2ludC5cbiAgICovXG4gIHB1YmxpYyBnZXQgY3VycmVudCgpOiBTa3lNZWRpYUJyZWFrcG9pbnRzIHtcbiAgICByZXR1cm4gdGhpcy4jY3VycmVudEJyZWFrcG9pbnQ7XG4gIH1cblxuICAjYnJlYWtwb2ludHM6IHtcbiAgICBjaGVjazogKHdpZHRoOiBudW1iZXIpID0+IGJvb2xlYW47XG4gICAgbmFtZTogU2t5TWVkaWFCcmVha3BvaW50cztcbiAgfVtdID0gW1xuICAgIHtcbiAgICAgIGNoZWNrOiAod2lkdGg6IG51bWJlcikgPT4gd2lkdGggPiAwICYmIHdpZHRoIDw9IDc2NyxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMueHMsXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGVjazogKHdpZHRoOiBudW1iZXIpID0+IHdpZHRoID4gNzY3ICYmIHdpZHRoIDw9IDk5MSxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMuc20sXG4gICAgfSxcbiAgICB7XG4gICAgICBjaGVjazogKHdpZHRoOiBudW1iZXIpID0+IHdpZHRoID4gOTkxICYmIHdpZHRoIDw9IDExOTksXG4gICAgICBuYW1lOiBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kLFxuICAgIH0sXG4gICAge1xuICAgICAgY2hlY2s6ICh3aWR0aDogbnVtYmVyKSA9PiB3aWR0aCA+IDExOTksXG4gICAgICBuYW1lOiBTa3lNZWRpYUJyZWFrcG9pbnRzLmxnLFxuICAgIH0sXG4gIF07XG5cbiAgI2N1cnJlbnRCcmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzID0gREVGQVVMVF9CUkVBS1BPSU5UO1xuXG4gICNjdXJyZW50QnJlYWtwb2ludE9icyA9IG5ldyBSZXBsYXlTdWJqZWN0PFNreU1lZGlhQnJlYWtwb2ludHM+KDEpO1xuXG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjcmVzaXplT2JzZXJ2ZXJTdmM6IFNreVJlc2l6ZU9ic2VydmVyU2VydmljZTtcblxuICAjdGFyZ2V0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHJlc2l6ZU9ic2VydmVyU3ZjOiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UpIHtcbiAgICB0aGlzLiNyZXNpemVPYnNlcnZlclN2YyA9IHJlc2l6ZU9ic2VydmVyU3ZjO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5vYnNlcnZlKCk7XG5cbiAgICB0aGlzLiN0YXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy4jY3VycmVudEJyZWFrcG9pbnRPYnMuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb250YWluZXIgZWxlbWVudCB0byB3YXRjaC4gVGhlIGBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlYCB3aWxsIG9ubHkgb2JzZXJ2ZSBvbmUgZWxlbWVudCBhdCBhXG4gICAqIHRpbWUuIEFueSBwcmV2aW91cyBzdWJzY3JpcHRpb25zIHdpbGwgYmUgdW5zdWJzY3JpYmVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBvYnNlcnZlZC5cbiAgICovXG4gIHB1YmxpYyBvYnNlcnZlKGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBTa3lSZXNpemVPYnNlcnZlck1lZGlhUXVlcnlTZXJ2aWNlIHtcbiAgICBpZiAodGhpcy4jdGFyZ2V0KSB7XG4gICAgICBpZiAodGhpcy4jdGFyZ2V0ID09PSBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVub2JzZXJ2ZSgpO1xuICAgIH1cblxuICAgIHRoaXMuI3RhcmdldCA9IGVsZW1lbnQ7XG5cbiAgICB0aGlzLiNjaGVja1dpZHRoKGVsZW1lbnQpO1xuXG4gICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmNcbiAgICAgIC5vYnNlcnZlKGVsZW1lbnQpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBicmVha3BvaW50ID0gdGhpcy4jY2hlY2tCcmVha3BvaW50KHZhbHVlLmNvbnRlbnRSZWN0LndpZHRoKTtcbiAgICAgICAgaWYgKGJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludCAhPT0gdGhpcy5jdXJyZW50KSB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlQnJlYWtwb2ludChicmVha3BvaW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU3RvcCB3YXRjaGluZyB0aGUgY29udGFpbmVyIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgdW5vYnNlcnZlKCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzY3JpYmVzIHRvIGVsZW1lbnQgc2l6ZSBjaGFuZ2VzIHRoYXQgY3Jvc3MgYnJlYWtwb2ludHMuXG4gICAqL1xuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiBTa3lNZWRpYVF1ZXJ5TGlzdGVuZXIpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLiNjdXJyZW50QnJlYWtwb2ludE9ic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgbGlzdGVuZXIodmFsdWUpO1xuICAgICAgfSk7XG4gIH1cblxuICAjdXBkYXRlQnJlYWtwb2ludChicmVha3BvaW50OiBTa3lNZWRpYUJyZWFrcG9pbnRzKSB7XG4gICAgdGhpcy4jY3VycmVudEJyZWFrcG9pbnQgPSBicmVha3BvaW50O1xuICAgIHRoaXMuI2N1cnJlbnRCcmVha3BvaW50T2JzLm5leHQoYnJlYWtwb2ludCk7XG4gIH1cblxuICAjY2hlY2tCcmVha3BvaW50KHdpZHRoOiBudW1iZXIpOiBTa3lNZWRpYUJyZWFrcG9pbnRzIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBicmVha3BvaW50ID0gdGhpcy4jYnJlYWtwb2ludHMuZmluZCgoYnJlYWtwb2ludCkgPT5cbiAgICAgIGJyZWFrcG9pbnQuY2hlY2sod2lkdGgpXG4gICAgKTtcblxuICAgIHJldHVybiBicmVha3BvaW50ID8gYnJlYWtwb2ludC5uYW1lIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgI2NoZWNrV2lkdGgoZWw6IEVsZW1lbnRSZWYpOiB2b2lkIHtcbiAgICBjb25zdCB3aWR0aCA9IChlbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5vZmZzZXRXaWR0aCB8fCAwO1xuICAgIGNvbnN0IGJyZWFrcG9pbnQgPSB0aGlzLiNjaGVja0JyZWFrcG9pbnQod2lkdGgpO1xuXG4gICAgaWYgKGJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludCAhPT0gdGhpcy4jY3VycmVudEJyZWFrcG9pbnQpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
@@ -1,79 +0,0 @@
|
|
1
|
-
var _SkyResizeObserverService_instances, _SkyResizeObserverService_resizeObserver, _SkyResizeObserverService_tracking, _SkyResizeObserverService_zone, _SkyResizeObserverService_observeAndTrack, _SkyResizeObserverService_callback;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Injectable } from '@angular/core';
|
4
|
-
import { Subject } from 'rxjs';
|
5
|
-
import { finalize } from 'rxjs/operators';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
/**
|
8
|
-
* Service to create rxjs observables for changes to the content box dimensions of elements.
|
9
|
-
*/
|
10
|
-
export class SkyResizeObserverService {
|
11
|
-
constructor(zone) {
|
12
|
-
_SkyResizeObserverService_instances.add(this);
|
13
|
-
_SkyResizeObserverService_resizeObserver.set(this, void 0);
|
14
|
-
_SkyResizeObserverService_tracking.set(this, []);
|
15
|
-
_SkyResizeObserverService_zone.set(this, void 0);
|
16
|
-
__classPrivateFieldSet(this, _SkyResizeObserverService_zone, zone, "f");
|
17
|
-
__classPrivateFieldSet(this, _SkyResizeObserverService_resizeObserver, new ResizeObserver((entries) => {
|
18
|
-
entries.forEach((entry) => __classPrivateFieldGet(this, _SkyResizeObserverService_instances, "m", _SkyResizeObserverService_callback).call(this, entry));
|
19
|
-
}), "f");
|
20
|
-
}
|
21
|
-
ngOnDestroy() {
|
22
|
-
__classPrivateFieldGet(this, _SkyResizeObserverService_resizeObserver, "f").disconnect();
|
23
|
-
}
|
24
|
-
/**
|
25
|
-
* Create rxjs observable to get size changes for an element ref.
|
26
|
-
*/
|
27
|
-
observe(element) {
|
28
|
-
return __classPrivateFieldGet(this, _SkyResizeObserverService_instances, "m", _SkyResizeObserverService_observeAndTrack).call(this, element).subjectObservable;
|
29
|
-
}
|
30
|
-
}
|
31
|
-
_SkyResizeObserverService_resizeObserver = new WeakMap(), _SkyResizeObserverService_tracking = new WeakMap(), _SkyResizeObserverService_zone = new WeakMap(), _SkyResizeObserverService_instances = new WeakSet(), _SkyResizeObserverService_observeAndTrack = function _SkyResizeObserverService_observeAndTrack(element) {
|
32
|
-
const checkTracking = __classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f").findIndex((value) => {
|
33
|
-
return !value.subject.closed && value.element === element.nativeElement;
|
34
|
-
});
|
35
|
-
if (checkTracking === -1) {
|
36
|
-
__classPrivateFieldGet(this, _SkyResizeObserverService_resizeObserver, "f").observe(element.nativeElement);
|
37
|
-
}
|
38
|
-
const subject = new Subject();
|
39
|
-
const subjectObservable = subject.pipe(finalize(() => {
|
40
|
-
// Are there any other tracking entries still watching this element?
|
41
|
-
const checkTracking = __classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f").findIndex((value) => {
|
42
|
-
return (value.subject !== subject &&
|
43
|
-
!value.subject.closed &&
|
44
|
-
value.element === element.nativeElement);
|
45
|
-
});
|
46
|
-
if (checkTracking === -1) {
|
47
|
-
__classPrivateFieldGet(this, _SkyResizeObserverService_resizeObserver, "f").unobserve(element.nativeElement);
|
48
|
-
}
|
49
|
-
}));
|
50
|
-
const tracking = {
|
51
|
-
element: element.nativeElement,
|
52
|
-
subject,
|
53
|
-
subjectObservable,
|
54
|
-
};
|
55
|
-
__classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f").push(tracking);
|
56
|
-
return tracking;
|
57
|
-
}, _SkyResizeObserverService_callback = function _SkyResizeObserverService_callback(entry) {
|
58
|
-
__classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f")
|
59
|
-
.filter((value) => !(value.subject.closed || value.subject.isStopped))
|
60
|
-
.forEach((value) => {
|
61
|
-
/* istanbul ignore else */
|
62
|
-
if (value.element === entry.target) {
|
63
|
-
// Execute the callback within NgZone because Angular does not "monkey patch"
|
64
|
-
// ResizeObserver like it does for other features in the DOM.
|
65
|
-
__classPrivateFieldGet(this, _SkyResizeObserverService_zone, "f").run(() => {
|
66
|
-
value.subject.next(entry);
|
67
|
-
});
|
68
|
-
}
|
69
|
-
});
|
70
|
-
};
|
71
|
-
SkyResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
72
|
-
SkyResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverService, providedIn: 'any' });
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverService, decorators: [{
|
74
|
-
type: Injectable,
|
75
|
-
args: [{
|
76
|
-
providedIn: 'any',
|
77
|
-
}]
|
78
|
-
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvcmVzaXplLW9ic2VydmVyL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBUTFDOztHQUVHO0FBSUgsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxZQUFZLElBQVk7O1FBTHhCLDJEQUFnQztRQUVoQyw2Q0FBc0MsRUFBRSxFQUFDO1FBQ3pDLGlEQUFjO1FBR1osdUJBQUEsSUFBSSxrQ0FBUyxJQUFJLE1BQUEsQ0FBQztRQUNsQix1QkFBQSxJQUFJLDRDQUFtQixJQUFJLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3BELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHVCQUFBLElBQUksK0VBQVUsTUFBZCxJQUFJLEVBQVcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsTUFBQSxDQUFDO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDaEIsdUJBQUEsSUFBSSxnREFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsT0FBbUI7UUFDaEMsT0FBTyx1QkFBQSxJQUFJLHNGQUFpQixNQUFyQixJQUFJLEVBQWtCLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDO0lBQzFELENBQUM7O2tUQUVnQixPQUFtQjtJQUNsQyxNQUFNLGFBQWEsR0FBRyx1QkFBQSxJQUFJLDBDQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FBQztJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ3hCLHVCQUFBLElBQUksZ0RBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUNyRDtJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0lBQ25ELE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FDcEMsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNaLG9FQUFvRTtRQUNwRSxNQUFNLGFBQWEsR0FBRyx1QkFBQSxJQUFJLDBDQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkQsT0FBTyxDQUNMLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTztnQkFDekIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU07Z0JBQ3JCLEtBQUssQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLGFBQWEsQ0FDeEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxhQUFhLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDeEIsdUJBQUEsSUFBSSxnREFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZEO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUVGLE1BQU0sUUFBUSxHQUFHO1FBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxhQUFhO1FBQzlCLE9BQU87UUFDUCxpQkFBaUI7S0FDbEIsQ0FBQztJQUVGLHVCQUFBLElBQUksMENBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFOUIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyxtRkFFUyxLQUEwQjtJQUNsQyx1QkFBQSxJQUFJLDBDQUFVO1NBQ1gsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNqQiwwQkFBMEI7UUFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDbEMsNkVBQTZFO1lBQzdFLDZEQUE2RDtZQUM3RCx1QkFBQSxJQUFJLHNDQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztxSEEzRVUsd0JBQXdCO3lIQUF4Qix3QkFBd0IsY0FGdkIsS0FBSzsyRkFFTix3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbnR5cGUgUmVzaXplT2JzZXJ2ZXJUcmFja2luZyA9IHtcbiAgZWxlbWVudDogRWxlbWVudDtcbiAgc3ViamVjdDogU3ViamVjdDxSZXNpemVPYnNlcnZlckVudHJ5PjtcbiAgc3ViamVjdE9ic2VydmFibGU6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeT47XG59O1xuXG4vKipcbiAqIFNlcnZpY2UgdG8gY3JlYXRlIHJ4anMgb2JzZXJ2YWJsZXMgZm9yIGNoYW5nZXMgdG8gdGhlIGNvbnRlbnQgYm94IGRpbWVuc2lvbnMgb2YgZWxlbWVudHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ2FueScsXG59KVxuZXhwb3J0IGNsYXNzIFNreVJlc2l6ZU9ic2VydmVyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gICNyZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgI3RyYWNraW5nOiBSZXNpemVPYnNlcnZlclRyYWNraW5nW10gPSBbXTtcbiAgI3pvbmU6IE5nWm9uZTtcblxuICBjb25zdHJ1Y3Rvcih6b25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLiN6b25lID0gem9uZTtcbiAgICB0aGlzLiNyZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4gdGhpcy4jY2FsbGJhY2soZW50cnkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHJ4anMgb2JzZXJ2YWJsZSB0byBnZXQgc2l6ZSBjaGFuZ2VzIGZvciBhbiBlbGVtZW50IHJlZi5cbiAgICovXG4gIHB1YmxpYyBvYnNlcnZlKGVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnk+IHtcbiAgICByZXR1cm4gdGhpcy4jb2JzZXJ2ZUFuZFRyYWNrKGVsZW1lbnQpLnN1YmplY3RPYnNlcnZhYmxlO1xuICB9XG5cbiAgI29ic2VydmVBbmRUcmFjayhlbGVtZW50OiBFbGVtZW50UmVmKTogUmVzaXplT2JzZXJ2ZXJUcmFja2luZyB7XG4gICAgY29uc3QgY2hlY2tUcmFja2luZyA9IHRoaXMuI3RyYWNraW5nLmZpbmRJbmRleCgodmFsdWUpID0+IHtcbiAgICAgIHJldHVybiAhdmFsdWUuc3ViamVjdC5jbG9zZWQgJiYgdmFsdWUuZWxlbWVudCA9PT0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIH0pO1xuXG4gICAgaWYgKGNoZWNrVHJhY2tpbmcgPT09IC0xKSB7XG4gICAgICB0aGlzLiNyZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBTdWJqZWN0PFJlc2l6ZU9ic2VydmVyRW50cnk+KCk7XG4gICAgY29uc3Qgc3ViamVjdE9ic2VydmFibGUgPSBzdWJqZWN0LnBpcGUoXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIC8vIEFyZSB0aGVyZSBhbnkgb3RoZXIgdHJhY2tpbmcgZW50cmllcyBzdGlsbCB3YXRjaGluZyB0aGlzIGVsZW1lbnQ/XG4gICAgICAgIGNvbnN0IGNoZWNrVHJhY2tpbmcgPSB0aGlzLiN0cmFja2luZy5maW5kSW5kZXgoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHZhbHVlLnN1YmplY3QgIT09IHN1YmplY3QgJiZcbiAgICAgICAgICAgICF2YWx1ZS5zdWJqZWN0LmNsb3NlZCAmJlxuICAgICAgICAgICAgdmFsdWUuZWxlbWVudCA9PT0gZWxlbWVudC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGNoZWNrVHJhY2tpbmcgPT09IC0xKSB7XG4gICAgICAgICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXIudW5vYnNlcnZlKGVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHRyYWNraW5nID0ge1xuICAgICAgZWxlbWVudDogZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgc3ViamVjdCxcbiAgICAgIHN1YmplY3RPYnNlcnZhYmxlLFxuICAgIH07XG5cbiAgICB0aGlzLiN0cmFja2luZy5wdXNoKHRyYWNraW5nKTtcblxuICAgIHJldHVybiB0cmFja2luZztcbiAgfVxuXG4gICNjYWxsYmFjayhlbnRyeTogUmVzaXplT2JzZXJ2ZXJFbnRyeSk6IHZvaWQge1xuICAgIHRoaXMuI3RyYWNraW5nXG4gICAgICAuZmlsdGVyKCh2YWx1ZSkgPT4gISh2YWx1ZS5zdWJqZWN0LmNsb3NlZCB8fCB2YWx1ZS5zdWJqZWN0LmlzU3RvcHBlZCkpXG4gICAgICAuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHZhbHVlLmVsZW1lbnQgPT09IGVudHJ5LnRhcmdldCkge1xuICAgICAgICAgIC8vIEV4ZWN1dGUgdGhlIGNhbGxiYWNrIHdpdGhpbiBOZ1pvbmUgYmVjYXVzZSBBbmd1bGFyIGRvZXMgbm90IFwibW9ua2V5IHBhdGNoXCJcbiAgICAgICAgICAvLyBSZXNpemVPYnNlcnZlciBsaWtlIGl0IGRvZXMgZm9yIG90aGVyIGZlYXR1cmVzIGluIHRoZSBET00uXG4gICAgICAgICAgdGhpcy4jem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdmFsdWUuc3ViamVjdC5uZXh0KGVudHJ5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,218 +0,0 @@
|
|
1
|
-
var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_resizeObserverSvc, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible, _SkyScrollableHostService_getViewportSize;
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
3
|
-
import { Injectable, Optional } from '@angular/core';
|
4
|
-
import { Observable, Subject, animationFrameScheduler, concat, fromEvent, of, } from 'rxjs';
|
5
|
-
import { debounceTime, map, switchMap, takeUntil } from 'rxjs/operators';
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "../mutation/mutation-observer-service";
|
8
|
-
import * as i2 from "../window/window-ref";
|
9
|
-
import * as i3 from "../resize-observer/resize-observer.service";
|
10
|
-
function notifySubscribers(subscribers, item) {
|
11
|
-
for (const subscriber of subscribers) {
|
12
|
-
subscriber.next(item);
|
13
|
-
}
|
14
|
-
}
|
15
|
-
export class SkyScrollableHostService {
|
16
|
-
constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
|
17
|
-
_SkyScrollableHostService_instances.add(this);
|
18
|
-
_SkyScrollableHostService_mutationObserverSvc.set(this, void 0);
|
19
|
-
_SkyScrollableHostService_windowRef.set(this, void 0);
|
20
|
-
_SkyScrollableHostService_resizeObserverSvc.set(this, void 0);
|
21
|
-
__classPrivateFieldSet(this, _SkyScrollableHostService_mutationObserverSvc, mutationObserverSvc, "f");
|
22
|
-
__classPrivateFieldSet(this, _SkyScrollableHostService_resizeObserverSvc, resizeObserverSvc, "f");
|
23
|
-
__classPrivateFieldSet(this, _SkyScrollableHostService_windowRef, windowRef, "f");
|
24
|
-
}
|
25
|
-
/**
|
26
|
-
* Returns the given element's current scrollable host
|
27
|
-
* @param elementRef The element whose scrollable host is being requested
|
28
|
-
* @returns The current scrollable host
|
29
|
-
*/
|
30
|
-
getScrollableHost(elementRef) {
|
31
|
-
return __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_findScrollableHost).call(this, elementRef.nativeElement);
|
32
|
-
}
|
33
|
-
/**
|
34
|
-
* Returns an observable which emits the given element's current scrollable host
|
35
|
-
* @param elementRef The element whose scrollable host is being requested
|
36
|
-
* @returns An observable which emits the current scrollable host element.
|
37
|
-
* @internal
|
38
|
-
*/
|
39
|
-
watchScrollableHost(elementRef) {
|
40
|
-
const subscribers = [];
|
41
|
-
let parentMutationObserver;
|
42
|
-
let documentHiddenElementMutationObserver;
|
43
|
-
return new Observable((subscriber) => {
|
44
|
-
subscribers.push(subscriber);
|
45
|
-
let scrollableHost = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_findScrollableHost).call(this, elementRef.nativeElement);
|
46
|
-
// Setup mutation observers only once, for all subscribers.
|
47
|
-
if (subscribers.length === 1) {
|
48
|
-
parentMutationObserver = __classPrivateFieldGet(this, _SkyScrollableHostService_mutationObserverSvc, "f").create(() => {
|
49
|
-
const newScrollableHost = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_findScrollableHost).call(this, elementRef.nativeElement);
|
50
|
-
// Reset observer if scrollable host changes.
|
51
|
-
if (newScrollableHost !== scrollableHost &&
|
52
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_isElementVisible).call(this, elementRef)) {
|
53
|
-
scrollableHost = newScrollableHost;
|
54
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeForScrollableHostChanges).call(this, scrollableHost, parentMutationObserver);
|
55
|
-
notifySubscribers(subscribers, scrollableHost);
|
56
|
-
}
|
57
|
-
});
|
58
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeForScrollableHostChanges).call(this, scrollableHost, parentMutationObserver);
|
59
|
-
documentHiddenElementMutationObserver =
|
60
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_mutationObserverSvc, "f").create(() => {
|
61
|
-
if (scrollableHost && !__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_isElementVisible).call(this, elementRef)) {
|
62
|
-
// If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.
|
63
|
-
// Then, observe the document element so that a new scrollable host can be found.
|
64
|
-
scrollableHost = undefined;
|
65
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeForScrollableHostChanges).call(this, scrollableHost, parentMutationObserver);
|
66
|
-
notifySubscribers(subscribers, scrollableHost);
|
67
|
-
}
|
68
|
-
});
|
69
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeDocumentHiddenElementChanges).call(this, documentHiddenElementMutationObserver);
|
70
|
-
}
|
71
|
-
// Emit the scrollable host to the subscriber.
|
72
|
-
subscriber.next(scrollableHost);
|
73
|
-
// Teardown callback for the subscription.
|
74
|
-
subscriber.add(() => {
|
75
|
-
const subIndex = subscribers.indexOf(subscriber);
|
76
|
-
/* istanbul ignore else */
|
77
|
-
if (subIndex >= 0) {
|
78
|
-
subscribers.splice(subIndex, 1);
|
79
|
-
}
|
80
|
-
if (subscribers.length === 0) {
|
81
|
-
documentHiddenElementMutationObserver.disconnect();
|
82
|
-
parentMutationObserver.disconnect();
|
83
|
-
}
|
84
|
-
});
|
85
|
-
});
|
86
|
-
}
|
87
|
-
/**
|
88
|
-
* Returns an observable which emits whenever the element's scrollable host emits a scroll event. The observable will always emit the scroll events from the elements current scrollable host and will update based on any scrollable host changes. The observable will also emit once whenever the scrollable host changes.
|
89
|
-
* @param elementRef The element whose scrollable host scroll events are being requested
|
90
|
-
* @returns An observable which emits when the elements scrollable host is scrolled or is changed
|
91
|
-
*/
|
92
|
-
watchScrollableHostScrollEvents(elementRef) {
|
93
|
-
const subscribers = [];
|
94
|
-
let scrollableHost;
|
95
|
-
let newScrollableHostObservable = new Subject();
|
96
|
-
let scrollableHostSubscription;
|
97
|
-
let scrollEventSubscription;
|
98
|
-
return new Observable((subscriber) => {
|
99
|
-
subscribers.push(subscriber);
|
100
|
-
// Setup mutation observers only once, for all subscribers.
|
101
|
-
if (subscribers.length === 1) {
|
102
|
-
scrollableHostSubscription = this.watchScrollableHost(elementRef).subscribe((newScrollableHost) => {
|
103
|
-
newScrollableHostObservable.next();
|
104
|
-
newScrollableHostObservable.complete();
|
105
|
-
if (scrollableHost && scrollableHost !== newScrollableHost) {
|
106
|
-
notifySubscribers(subscribers);
|
107
|
-
}
|
108
|
-
scrollableHost = newScrollableHost;
|
109
|
-
newScrollableHostObservable = new Subject();
|
110
|
-
// Only subscribe to scroll events if the host element is defined.
|
111
|
-
/* istanbul ignore else */
|
112
|
-
if (newScrollableHost) {
|
113
|
-
scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')
|
114
|
-
.pipe(takeUntil(newScrollableHostObservable))
|
115
|
-
.subscribe(() => {
|
116
|
-
notifySubscribers(subscribers);
|
117
|
-
});
|
118
|
-
}
|
119
|
-
});
|
120
|
-
}
|
121
|
-
// Teardown callback for the subscription.
|
122
|
-
subscriber.add(() => {
|
123
|
-
const subIndex = subscribers.indexOf(subscriber);
|
124
|
-
/* istanbul ignore else */
|
125
|
-
if (subIndex >= 0) {
|
126
|
-
subscribers.splice(subIndex, 1);
|
127
|
-
}
|
128
|
-
if (subscribers.length === 0) {
|
129
|
-
scrollableHostSubscription.unsubscribe();
|
130
|
-
scrollEventSubscription.unsubscribe();
|
131
|
-
newScrollableHostObservable.complete();
|
132
|
-
}
|
133
|
-
});
|
134
|
-
});
|
135
|
-
}
|
136
|
-
watchScrollableHostClipPathChanges(elementRef) {
|
137
|
-
if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f")) {
|
138
|
-
return of('none');
|
139
|
-
}
|
140
|
-
return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
|
141
|
-
if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f") ||
|
142
|
-
!scrollableHost ||
|
143
|
-
scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
|
144
|
-
return of('none');
|
145
|
-
}
|
146
|
-
return concat([
|
147
|
-
of(undefined),
|
148
|
-
__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
|
149
|
-
]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
|
150
|
-
const viewportSize = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_getViewportSize).call(this);
|
151
|
-
const { top, left, width, height } = scrollableHost.getBoundingClientRect();
|
152
|
-
const right = Math.max(viewportSize.width - left - width, 0);
|
153
|
-
const bottom = Math.max(viewportSize.height - top - height, 0);
|
154
|
-
return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
|
155
|
-
}));
|
156
|
-
}));
|
157
|
-
}
|
158
|
-
}
|
159
|
-
_SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
|
160
|
-
const regex = /(auto|scroll)/;
|
161
|
-
const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
|
162
|
-
const bodyObj = windowObj.document.body;
|
163
|
-
if (!element) {
|
164
|
-
return windowObj;
|
165
|
-
}
|
166
|
-
let style = windowObj.getComputedStyle(element);
|
167
|
-
let parent = element;
|
168
|
-
do {
|
169
|
-
parent = parent.parentNode;
|
170
|
-
// Return `window` if the parent element has been removed from the DOM.
|
171
|
-
if (!(parent instanceof HTMLElement)) {
|
172
|
-
return windowObj;
|
173
|
-
}
|
174
|
-
style = windowObj.getComputedStyle(parent);
|
175
|
-
} while (!regex.test(style.overflow) &&
|
176
|
-
!regex.test(style.overflowY) &&
|
177
|
-
parent !== bodyObj);
|
178
|
-
if (parent === bodyObj) {
|
179
|
-
return windowObj;
|
180
|
-
}
|
181
|
-
return parent;
|
182
|
-
}, _SkyScrollableHostService_observeDocumentHiddenElementChanges = function _SkyScrollableHostService_observeDocumentHiddenElementChanges(mutationObserver) {
|
183
|
-
mutationObserver.observe(document.documentElement, {
|
184
|
-
attributes: true,
|
185
|
-
attributeFilter: ['class', 'style', 'hidden'],
|
186
|
-
childList: true,
|
187
|
-
subtree: true,
|
188
|
-
});
|
189
|
-
}, _SkyScrollableHostService_observeForScrollableHostChanges = function _SkyScrollableHostService_observeForScrollableHostChanges(element, mutationObserver) {
|
190
|
-
mutationObserver.disconnect();
|
191
|
-
const target = element instanceof HTMLElement ? element : document.documentElement;
|
192
|
-
mutationObserver.observe(target, {
|
193
|
-
attributes: true,
|
194
|
-
attributeFilter: ['class', 'style'],
|
195
|
-
childList: true,
|
196
|
-
subtree: true,
|
197
|
-
});
|
198
|
-
}, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
|
199
|
-
return !!elementRef.nativeElement?.offsetParent;
|
200
|
-
}, _SkyScrollableHostService_getViewportSize = function _SkyScrollableHostService_getViewportSize() {
|
201
|
-
const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
|
202
|
-
const docElem = win.document.documentElement;
|
203
|
-
return {
|
204
|
-
width: docElem.clientWidth,
|
205
|
-
height: docElem.clientHeight,
|
206
|
-
};
|
207
|
-
};
|
208
|
-
SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }, { token: i3.SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
209
|
-
SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyScrollableHostService, decorators: [{
|
211
|
-
type: Injectable,
|
212
|
-
args: [{
|
213
|
-
providedIn: 'root',
|
214
|
-
}]
|
215
|
-
}], ctorParameters: function () { return [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }, { type: i3.SkyResizeObserverService, decorators: [{
|
216
|
-
type: Optional
|
217
|
-
}] }]; } });
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBR1AsdUJBQXVCLEVBQ3ZCLE1BQU0sRUFDTixTQUFTLEVBQ1QsRUFBRSxHQUNILE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU16RSxTQUFTLGlCQUFpQixDQUFDLFdBQWtDLEVBQUUsSUFBYztJQUMzRSxLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsRUFBRTtRQUNwQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3ZCO0FBQ0gsQ0FBQztBQUtELE1BQU0sT0FBTyx3QkFBd0I7SUFPbkMsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEIsRUFDZCxpQkFBNEM7O1FBVDFELGdFQUFpRDtRQUVqRCxzREFBNEI7UUFFNUIsOERBQXlEO1FBT3ZELHVCQUFBLElBQUksaURBQXdCLG1CQUFtQixNQUFBLENBQUM7UUFDaEQsdUJBQUEsSUFBSSwrQ0FBc0IsaUJBQWlCLE1BQUEsQ0FBQztRQUM1Qyx1QkFBQSxJQUFJLHVDQUFjLFNBQVMsTUFBQSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCLENBQUMsVUFBc0I7UUFDN0MsT0FBTyx1QkFBQSxJQUFJLHlGQUFvQixNQUF4QixJQUFJLEVBQXFCLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FB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QixNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVk7S0FDN0IsQ0FBQztBQUNKLENBQUM7cUhBblNVLHdCQUF3Qjt5SEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07MkZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBV0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmliZXIsXG4gIFN1YnNjcmlwdGlvbixcbiAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsXG4gIGNvbmNhdCxcbiAgZnJvbUV2ZW50LFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnLi4vd2luZG93L3dpbmRvdy1yZWYnO1xuXG5mdW5jdGlvbiBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVyczogU3Vic2NyaWJlcjx1bmtub3duPltdLCBpdGVtPzogdW5rbm93bikge1xuICBmb3IgKGNvbnN0IHN1YnNjcmliZXIgb2Ygc3Vic2NyaWJlcnMpIHtcbiAgICBzdWJzY3JpYmVyLm5leHQoaXRlbSk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB7XG4gICNtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZTtcblxuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG5cbiAgI3Jlc2l6ZU9ic2VydmVyU3ZjOiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcmVzaXplT2JzZXJ2ZXJTdmM/OiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2YyA9IG11dGF0aW9uT2JzZXJ2ZXJTdmM7XG4gICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmMgPSByZXNpemVPYnNlcnZlclN2YztcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqL1xuICBwdWJsaWMgZ2V0U2Nyb2xsYWJsZUhvc3QoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICByZXR1cm4gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBnaXZlbiBlbGVtZW50J3MgY3VycmVudCBzY3JvbGxhYmxlIGhvc3RcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IGlzIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBlbGVtZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxIVE1MRWxlbWVudCB8IFdpbmRvdz4ge1xuICAgIGNvbnN0IHN1YnNjcmliZXJzOiBTdWJzY3JpYmVyPEhUTUxFbGVtZW50IHwgV2luZG93PltdID0gW107XG5cbiAgICBsZXQgcGFyZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcbiAgICBsZXQgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlcjtcblxuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgc3Vic2NyaWJlcnMucHVzaChzdWJzY3JpYmVyKTtcblxuICAgICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyID0gdGhpcy4jbXV0YXRpb25PYnNlcnZlclN2Yy5jcmVhdGUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbGFibGVIb3N0ID0gdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgICAgZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlc2V0IG9ic2VydmVyIGlmIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcblxuICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLiNvYnNlcnZlRm9yU2Nyb2xsYWJsZUhvc3RDaGFuZ2VzKFxuICAgICAgICAgIHNjcm9sbGFibGVIb3N0LFxuICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXJcbiAgICAgICAgKTtcblxuICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyID1cbiAgICAgICAgICB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgIXRoaXMuI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZikpIHtcbiAgICAgICAgICAgICAgLy8gSWYgdGhlIHNjcm9sbGFibGUgaG9zdCBpcyBub3QgdmlzaWJsZSwgc2V0IGl0IHRvIHVuZGVmaW5lZCBhbmQgdW5zdWJzY3JpYmUgZnJvbSBpdHMgbXV0YXRpb24gY2hhbmdlcy5cbiAgICAgICAgICAgICAgLy8gVGhlbiwgb2JzZXJ2ZSB0aGUgZG9jdW1lbnQgZWxlbWVudCBzbyB0aGF0IGEgbmV3IHNjcm9sbGFibGUgaG9zdCBjYW4gYmUgZm91bmQuXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgICAgIHRoaXMuI29ic2VydmVGb3JTY3JvbGxhYmxlSG9zdENoYW5nZXMoXG4gICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlclxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IHRoZSBzY3JvbGxhYmxlIGhvc3QgdG8gdGhlIHN1YnNjcmliZXIuXG4gICAgICBzdWJzY3JpYmVyLm5leHQoc2Nyb2xsYWJsZUhvc3QpO1xuXG4gICAgICAvLyBUZWFyZG93biBjYWxsYmFjayBmb3IgdGhlIHN1YnNjcmlwdGlvbi5cbiAgICAgIHN1YnNjcmliZXIuYWRkKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViSW5kZXggPSBzdWJzY3JpYmVycy5pbmRleE9mKHN1YnNjcmliZXIpO1xuXG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChzdWJJbmRleCA+PSAwKSB7XG4gICAgICAgICAgc3Vic2NyaWJlcnMuc3BsaWNlKHN1YkluZGV4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdWJzY3JpYmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW5ldmVyIHRoZSBlbGVtZW50J3Mgc2Nyb2xsYWJsZSBob3N0IGVtaXRzIGEgc2Nyb2xsIGV2ZW50LiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsd2F5cyBlbWl0IHRoZSBzY3JvbGwgZXZlbnRzIGZyb20gdGhlIGVsZW1lbnRzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0IGFuZCB3aWxsIHVwZGF0ZSBiYXNlZCBvbiBhbnkgc2Nyb2xsYWJsZSBob3N0IGNoYW5nZXMuIFRoZSBvYnNlcnZhYmxlIHdpbGwgYWxzbyBlbWl0IG9uY2Ugd2hlbmV2ZXIgdGhlIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3Qgc2Nyb2xsIGV2ZW50cyBhcmUgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgd2hpY2ggZW1pdHMgd2hlbiB0aGUgZWxlbWVudHMgc2Nyb2xsYWJsZSBob3N0IGlzIHNjcm9sbGVkIG9yIGlzIGNoYW5nZWRcbiAgICovXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0U2Nyb2xsRXZlbnRzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8dm9pZD5bXSA9IFtdO1xuXG4gICAgbGV0IHNjcm9sbGFibGVIb3N0OiBIVE1MRWxlbWVudCB8IFdpbmRvdztcblxuICAgIGxldCBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIGxldCBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIGxldCBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICAvLyBTZXR1cCBtdXRhdGlvbiBvYnNlcnZlcnMgb25seSBvbmNlLCBmb3IgYWxsIHN1YnNjcmliZXJzLlxuICAgICAgaWYgKHN1YnNjcmliZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBzY3JvbGxhYmxlSG9zdFN1YnNjcmlwdGlvbiA9IHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICAgICAgICBlbGVtZW50UmVmXG4gICAgICAgICkuc3Vic2NyaWJlKChuZXdTY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5uZXh0KCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgICAgLy8gT25seSBzdWJzY3JpYmUgdG8gc2Nyb2xsIGV2ZW50cyBpZiB0aGUgaG9zdCBlbGVtZW50IGlzIGRlZmluZWQuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0Q2xpcFBhdGhDaGFuZ2VzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICBpZiAoIXRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjKSB7XG4gICAgICByZXR1cm4gb2YoJ25vbmUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy53YXRjaFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHNjcm9sbGFibGVIb3N0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmMgfHxcbiAgICAgICAgICAhc2Nyb2xsYWJsZUhvc3QgfHxcbiAgICAgICAgICBzY3JvbGxhYmxlSG9zdCA9PT0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvd1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gb2YoJ25vbmUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb25jYXQoW1xuICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgdGhpcy4jcmVzaXplT2JzZXJ2ZXJTdmMub2JzZXJ2ZSh7IG5hdGl2ZUVsZW1lbnQ6IHNjcm9sbGFibGVIb3N0IH0pLFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZSgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlciksXG4gICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0U2l6ZSA9IHRoaXMuI2dldFZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICAgICAgY29uc3QgeyB0b3AsIGxlZnQsIHdpZHRoLCBoZWlnaHQgfSA9IChcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgICAgICkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IE1hdGgubWF4KHZpZXdwb3J0U2l6ZS53aWR0aCAtIGxlZnQgLSB3aWR0aCwgMCk7XG4gICAgICAgICAgICBjb25zdCBib3R0b20gPSBNYXRoLm1heCh2aWV3cG9ydFNpemUuaGVpZ2h0IC0gdG9wIC0gaGVpZ2h0LCAwKTtcbiAgICAgICAgICAgIHJldHVybiBgaW5zZXQoJHt0b3B9cHggJHtyaWdodH1weCAke2JvdHRvbX1weCAke2xlZnR9cHgpYDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICBjb25zdCByZWdleCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgICBjb25zdCB3aW5kb3dPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93O1xuICAgIGNvbnN0IGJvZHlPYmogPSB3aW5kb3dPYmouZG9jdW1lbnQuYm9keTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICBsZXQgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBsZXQgcGFyZW50ID0gZWxlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZXR1cm4gYHdpbmRvd2AgaWYgdGhlIHBhcmVudCBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICB9IHdoaWxlIChcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93KSAmJlxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3dZKSAmJlxuICAgICAgcGFyZW50ICE9PSBib2R5T2JqXG4gICAgKTtcblxuICAgIGlmIChwYXJlbnQgPT09IGJvZHlPYmopIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gICNvYnNlcnZlRG9jdW1lbnRIaWRkZW5FbGVtZW50Q2hhbmdlcyhtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZScsICdoaWRkZW4nXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAjb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCxcbiAgICBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyXG4gICkge1xuICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuXG4gICAgY29uc3QgdGFyZ2V0ID1cbiAgICAgIGVsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICBtdXRhdGlvbk9ic2VydmVyLm9ic2VydmUodGFyZ2V0LCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJywgJ3N0eWxlJ10sXG4gICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYW4gZWxlbWVudCBpcyBcInZpc2libGVcIiBpbiB0aGUgRE9NLlxuICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8xMTYzOTY2NC82MTc4ODg1XG4gICAqL1xuICAjaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5vZmZzZXRQYXJlbnQ7XG4gIH1cblxuICAjZ2V0Vmlld3BvcnRTaXplKCk6IHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfSB7XG4gICAgY29uc3Qgd2luID0gdGhpcy4jd2luZG93UmVmLm5hdGl2ZVdpbmRvdztcbiAgICBjb25zdCBkb2NFbGVtID0gd2luLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogZG9jRWxlbS5jbGllbnRXaWR0aCxcbiAgICAgIGhlaWdodDogZG9jRWxlbS5jbGllbnRIZWlnaHQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
@@ -1,72 +0,0 @@
|
|
1
|
-
/* eslint-disable eqeqeq */
|
2
|
-
// This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old
|
3
|
-
// behavior of using the `Intl` API for formatting numbers rather than having to register every
|
4
|
-
// supported locale.
|
5
|
-
// https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts
|
6
|
-
import { SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
|
7
|
-
function isNumeric(value) {
|
8
|
-
return !isNaN(value - parseFloat(value));
|
9
|
-
}
|
10
|
-
function parseIntAutoRadix(text) {
|
11
|
-
const result = parseInt(text, 10);
|
12
|
-
/* istanbul ignore next */
|
13
|
-
if (isNaN(result)) {
|
14
|
-
throw new Error('Invalid integer literal when parsing ' + text);
|
15
|
-
}
|
16
|
-
return result;
|
17
|
-
}
|
18
|
-
// Need to add the following to classes which contain static methods.
|
19
|
-
// See: https://github.com/ng-packagr/ng-packagr/issues/641
|
20
|
-
// @dynamic
|
21
|
-
export class SkyNumberFormatUtility {
|
22
|
-
static formatNumber(locale, value, style, digits, currency = null, currencyAsSymbol = false, currencySign) {
|
23
|
-
if (value == null) {
|
24
|
-
return null;
|
25
|
-
}
|
26
|
-
// Convert strings to numbers
|
27
|
-
value = typeof value === 'string' && isNumeric(value) ? +value : value;
|
28
|
-
if (typeof value !== 'number') {
|
29
|
-
throw Error(`SkyInvalidPipeArgument: '${value}'`);
|
30
|
-
}
|
31
|
-
let minInt = undefined;
|
32
|
-
let minFraction = undefined;
|
33
|
-
let maxFraction = undefined;
|
34
|
-
if (style !== SkyIntlNumberFormatStyle.Currency) {
|
35
|
-
// rely on Intl default for currency
|
36
|
-
minInt = 1;
|
37
|
-
minFraction = 0;
|
38
|
-
maxFraction = 3;
|
39
|
-
}
|
40
|
-
if (digits) {
|
41
|
-
const parts = digits.match(this._NUMBER_FORMAT_REGEXP);
|
42
|
-
if (parts === null) {
|
43
|
-
throw new Error(`${digits} is not a valid digit info for number pipes`);
|
44
|
-
}
|
45
|
-
/* istanbul ignore else */
|
46
|
-
if (parts[1] != null) {
|
47
|
-
// min integer digits
|
48
|
-
minInt = parseIntAutoRadix(parts[1]);
|
49
|
-
}
|
50
|
-
/* istanbul ignore else */
|
51
|
-
if (parts[3] != null) {
|
52
|
-
// min fraction digits
|
53
|
-
minFraction = parseIntAutoRadix(parts[3]);
|
54
|
-
}
|
55
|
-
/* istanbul ignore else */
|
56
|
-
if (parts[5] != null) {
|
57
|
-
// max fraction digits
|
58
|
-
maxFraction = parseIntAutoRadix(parts[5]);
|
59
|
-
}
|
60
|
-
}
|
61
|
-
return SkyIntlNumberFormatter.format(value, locale, style, {
|
62
|
-
minimumIntegerDigits: minInt,
|
63
|
-
minimumFractionDigits: minFraction,
|
64
|
-
maximumFractionDigits: maxFraction,
|
65
|
-
currency: currency,
|
66
|
-
currencyAsSymbol: currencyAsSymbol,
|
67
|
-
currencySign: currencySign,
|
68
|
-
});
|
69
|
-
}
|
70
|
-
}
|
71
|
-
SkyNumberFormatUtility._NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?)?$/;
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsMEZBQTBGO0FBQzFGLCtGQUErRjtBQUMvRixvQkFBb0I7QUFDcEIseUZBQXlGO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRSxTQUFTLFNBQVMsQ0FBQyxLQUFVO0lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUxQywwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsR0FBRyxJQUFJLENBQUMsQ0FBQztLQUNqRTtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxxRUFBcUU7QUFDckUsMkRBQTJEO0FBQzNELFdBQVc7QUFDWCxNQUFNLE9BQU8sc0JBQXNCO0lBRzFCLE1BQU0sQ0FBQyxZQUFZLENBQ3hCLE1BQWMsRUFDZCxLQUFzQixFQUN0QixLQUErQixFQUMvQixNQUFzQixFQUN0QixXQUEwQixJQUFJLEVBQzlCLG1CQUE0QixLQUFLLEVBQ2pDLFlBQXdDO1FBRXhDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsNkJBQTZCO1FBQzdCLEtBQUssR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3ZFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sS0FBSyxDQUFDLDRCQUE0QixLQUFLLEdBQUcsQ0FBQyxDQUFDO1NBQ25EO1FBRUQsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQztRQUMzQyxJQUFJLFdBQVcsR0FBdUIsU0FBUyxDQUFDO1FBQ2hELElBQUksV0FBVyxHQUF1QixTQUFTLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssd0JBQXdCLENBQUMsUUFBUSxFQUFFO1lBQy9DLG9DQUFvQztZQUNwQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ1gsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNoQixXQUFXLEdBQUcsQ0FBQyxDQUFDO1NBQ2pCO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRXZELElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDbEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sNkNBQTZDLENBQUMsQ0FBQzthQUN6RTtZQUVELDBCQUEwQjtZQUMxQixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUU7Z0JBQ3BCLHFCQUFxQjtnQkFDckIsTUFBTSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RDO1lBRUQsMEJBQTBCO1lBQzFCLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEIsc0JBQXNCO2dCQUN0QixXQUFXLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0M7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNwQixzQkFBc0I7Z0JBQ3RCLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzQztTQUNGO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDbkUsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixxQkFBcUIsRUFBRSxXQUFXO1lBQ2xDLHFCQUFxQixFQUFFLFdBQVc7WUFDbEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBakVjLDRDQUFxQixHQUFHLDZCQUE2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4vLyBUaGlzIGZpbGUgaXMgbW9zdGx5IHBvcnRlZCBmcm9tIHRoZSBBbmd1bGFyIDQueCBOdW1iZXJQaXBlIGluIG9yZGVyIHRvIG1haW50YWluIHRoZSBvbGRcbi8vIGJlaGF2aW9yIG9mIHVzaW5nIHRoZSBgSW50bGAgQVBJIGZvciBmb3JtYXR0aW5nIG51bWJlcnMgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHJlZ2lzdGVyIGV2ZXJ5XG4vLyBzdXBwb3J0ZWQgbG9jYWxlLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzQuNC54L3BhY2thZ2VzL2NvbW1vbi9zcmMvcGlwZXMvbnVtYmVyX3BpcGUudHNcbmltcG9ydCB7IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZSwgU2t5SW50bE51bWJlckZvcm1hdHRlciB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuZnVuY3Rpb24gaXNOdW1lcmljKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFpc05hTih2YWx1ZSAtIHBhcnNlRmxvYXQodmFsdWUpKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VJbnRBdXRvUmFkaXgodGV4dDogc3RyaW5nKTogbnVtYmVyIHtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBwYXJzZUludCh0ZXh0LCAxMCk7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKGlzTmFOKHJlc3VsdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW50ZWdlciBsaXRlcmFsIHdoZW4gcGFyc2luZyAnICsgdGV4dCk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBOZWVkIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIGNsYXNzZXMgd2hpY2ggY29udGFpbiBzdGF0aWMgbWV0aG9kcy5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL25nLXBhY2thZ3IvbmctcGFja2Fnci9pc3N1ZXMvNjQxXG4vLyBAZHluYW1pY1xuZXhwb3J0IGNsYXNzIFNreU51bWJlckZvcm1hdFV0aWxpdHkge1xuICBwcml2YXRlIHN0YXRpYyBfTlVNQkVSX0ZPUk1BVF9SRUdFWFAgPSAvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPyk/JC87XG5cbiAgcHVibGljIHN0YXRpYyBmb3JtYXROdW1iZXIoXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgdmFsdWU6IG51bWJlciB8IHN0cmluZyxcbiAgICBzdHlsZTogU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLFxuICAgIGRpZ2l0cz86IHN0cmluZyB8IG51bGwsXG4gICAgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsLFxuICAgIGN1cnJlbmN5QXNTeW1ib2w6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBjdXJyZW5jeVNpZ24/OiAnYWNjb3VudGluZycgfCAnc3RhbmRhcmQnXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBDb252ZXJ0IHN0cmluZ3MgdG8gbnVtYmVyc1xuICAgIHZhbHVlID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBpc051bWVyaWModmFsdWUpID8gK3ZhbHVlIDogdmFsdWU7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IEVycm9yKGBTa3lJbnZhbGlkUGlwZUFyZ3VtZW50OiAnJHt2YWx1ZX0nYCk7XG4gICAgfVxuXG4gICAgbGV0IG1pbkludDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCBtaW5GcmFjdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGxldCBtYXhGcmFjdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChzdHlsZSAhPT0gU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5KSB7XG4gICAgICAvLyByZWx5IG9uIEludGwgZGVmYXVsdCBmb3IgY3VycmVuY3lcbiAgICAgIG1pbkludCA9IDE7XG4gICAgICBtaW5GcmFjdGlvbiA9IDA7XG4gICAgICBtYXhGcmFjdGlvbiA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGRpZ2l0cykge1xuICAgICAgY29uc3QgcGFydHMgPSBkaWdpdHMubWF0Y2godGhpcy5fTlVNQkVSX0ZPUk1BVF9SRUdFWFApO1xuXG4gICAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RpZ2l0c30gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mbyBmb3IgbnVtYmVyIHBpcGVzYCk7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocGFydHNbMV0gIT0gbnVsbCkge1xuICAgICAgICAvLyBtaW4gaW50ZWdlciBkaWdpdHNcbiAgICAgICAgbWluSW50ID0gcGFyc2VJbnRBdXRvUmFkaXgocGFydHNbMV0pO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHBhcnRzWzNdICE9IG51bGwpIHtcbiAgICAgICAgLy8gbWluIGZyYWN0aW9uIGRpZ2l0c1xuICAgICAgICBtaW5GcmFjdGlvbiA9IHBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzNdKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwYXJ0c1s1XSAhPSBudWxsKSB7XG4gICAgICAgIC8vIG1heCBmcmFjdGlvbiBkaWdpdHNcbiAgICAgICAgbWF4RnJhY3Rpb24gPSBwYXJzZUludEF1dG9SYWRpeChwYXJ0c1s1XSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFNreUludGxOdW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHZhbHVlIGFzIG51bWJlciwgbG9jYWxlLCBzdHlsZSwge1xuICAgICAgbWluaW11bUludGVnZXJEaWdpdHM6IG1pbkludCxcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRnJhY3Rpb24sXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG1heEZyYWN0aW9uLFxuICAgICAgY3VycmVuY3k6IGN1cnJlbmN5LFxuICAgICAgY3VycmVuY3lBc1N5bWJvbDogY3VycmVuY3lBc1N5bWJvbCxcbiAgICAgIGN1cnJlbmN5U2lnbjogY3VycmVuY3lTaWduLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|