@skyux/core 11.39.0 → 12.0.0-alpha.1
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 +600 -536
- package/fesm2022/skyux-core-testing.mjs +26 -26
- package/fesm2022/skyux-core-testing.mjs.map +1 -1
- package/fesm2022/skyux-core.mjs +188 -188
- package/fesm2022/skyux-core.mjs.map +1 -1
- package/lib/modules/content-info-provider/content-info-provider.d.ts +0 -3
- package/lib/modules/dock/dock.service.d.ts +2 -0
- 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 -31
- 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 -97
- 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,223 +0,0 @@
|
|
1
|
-
import { Injectable, Optional } from '@angular/core';
|
2
|
-
import { Observable, Subject, animationFrameScheduler, concat, fromEvent, of, } from 'rxjs';
|
3
|
-
import { debounceTime, map, switchMap, 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 "../window/window-ref";
|
7
|
-
import * as i3 from "../resize-observer/resize-observer.service";
|
8
|
-
function notifySubscribers(subscribers, item) {
|
9
|
-
for (const subscriber of subscribers) {
|
10
|
-
subscriber.next(item);
|
11
|
-
}
|
12
|
-
}
|
13
|
-
export class SkyScrollableHostService {
|
14
|
-
#mutationObserverSvc;
|
15
|
-
#windowRef;
|
16
|
-
#resizeObserverSvc;
|
17
|
-
constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
|
18
|
-
this.#mutationObserverSvc = mutationObserverSvc;
|
19
|
-
this.#resizeObserverSvc = resizeObserverSvc;
|
20
|
-
this.#windowRef = windowRef;
|
21
|
-
}
|
22
|
-
/**
|
23
|
-
* Returns the given element's current scrollable host
|
24
|
-
* @param elementRef The element whose scrollable host is being requested
|
25
|
-
* @returns The current scrollable host
|
26
|
-
*/
|
27
|
-
getScrollableHost(elementRef) {
|
28
|
-
return this.#findScrollableHost(elementRef.nativeElement);
|
29
|
-
}
|
30
|
-
/**
|
31
|
-
* Returns an observable which emits the given element's current scrollable host
|
32
|
-
* @param elementRef The element whose scrollable host is being requested
|
33
|
-
* @returns An observable which emits the current scrollable host element.
|
34
|
-
* @internal
|
35
|
-
*/
|
36
|
-
watchScrollableHost(elementRef) {
|
37
|
-
const subscribers = [];
|
38
|
-
let parentMutationObserver;
|
39
|
-
let documentHiddenElementMutationObserver;
|
40
|
-
return new Observable((subscriber) => {
|
41
|
-
subscribers.push(subscriber);
|
42
|
-
let scrollableHost = this.#findScrollableHost(elementRef.nativeElement);
|
43
|
-
// Setup mutation observers only once, for all subscribers.
|
44
|
-
if (subscribers.length === 1) {
|
45
|
-
parentMutationObserver = this.#mutationObserverSvc.create(() => {
|
46
|
-
const newScrollableHost = this.#findScrollableHost(elementRef.nativeElement);
|
47
|
-
// Reset observer if scrollable host changes.
|
48
|
-
if (newScrollableHost !== scrollableHost &&
|
49
|
-
this.#isElementVisible(elementRef)) {
|
50
|
-
scrollableHost = newScrollableHost;
|
51
|
-
this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
|
52
|
-
notifySubscribers(subscribers, scrollableHost);
|
53
|
-
}
|
54
|
-
});
|
55
|
-
this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
|
56
|
-
documentHiddenElementMutationObserver =
|
57
|
-
this.#mutationObserverSvc.create(() => {
|
58
|
-
if (scrollableHost && !this.#isElementVisible(elementRef)) {
|
59
|
-
// If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.
|
60
|
-
// Then, observe the document element so that a new scrollable host can be found.
|
61
|
-
scrollableHost = undefined;
|
62
|
-
this.#observeForScrollableHostChanges(scrollableHost, parentMutationObserver);
|
63
|
-
notifySubscribers(subscribers, scrollableHost);
|
64
|
-
}
|
65
|
-
});
|
66
|
-
this.#observeDocumentHiddenElementChanges(documentHiddenElementMutationObserver);
|
67
|
-
}
|
68
|
-
// Emit the scrollable host to the subscriber.
|
69
|
-
subscriber.next(scrollableHost);
|
70
|
-
// Teardown callback for the subscription.
|
71
|
-
subscriber.add(() => {
|
72
|
-
const subIndex = subscribers.indexOf(subscriber);
|
73
|
-
/* istanbul ignore else */
|
74
|
-
if (subIndex >= 0) {
|
75
|
-
subscribers.splice(subIndex, 1);
|
76
|
-
}
|
77
|
-
if (subscribers.length === 0) {
|
78
|
-
documentHiddenElementMutationObserver.disconnect();
|
79
|
-
parentMutationObserver.disconnect();
|
80
|
-
}
|
81
|
-
});
|
82
|
-
});
|
83
|
-
}
|
84
|
-
/**
|
85
|
-
* 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.
|
86
|
-
* @param elementRef The element whose scrollable host scroll events are being requested
|
87
|
-
* @returns An observable which emits when the elements scrollable host is scrolled or is changed
|
88
|
-
*/
|
89
|
-
watchScrollableHostScrollEvents(elementRef) {
|
90
|
-
const subscribers = [];
|
91
|
-
let scrollableHost;
|
92
|
-
let newScrollableHostObservable = new Subject();
|
93
|
-
let scrollableHostSubscription;
|
94
|
-
let scrollEventSubscription;
|
95
|
-
return new Observable((subscriber) => {
|
96
|
-
subscribers.push(subscriber);
|
97
|
-
// Setup mutation observers only once, for all subscribers.
|
98
|
-
if (subscribers.length === 1) {
|
99
|
-
scrollableHostSubscription = this.watchScrollableHost(elementRef).subscribe((newScrollableHost) => {
|
100
|
-
newScrollableHostObservable.next();
|
101
|
-
newScrollableHostObservable.complete();
|
102
|
-
if (scrollableHost && scrollableHost !== newScrollableHost) {
|
103
|
-
notifySubscribers(subscribers);
|
104
|
-
}
|
105
|
-
scrollableHost = newScrollableHost;
|
106
|
-
newScrollableHostObservable = new Subject();
|
107
|
-
// Only subscribe to scroll events if the host element is defined.
|
108
|
-
/* istanbul ignore else */
|
109
|
-
if (newScrollableHost) {
|
110
|
-
scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')
|
111
|
-
.pipe(takeUntil(newScrollableHostObservable))
|
112
|
-
.subscribe(() => {
|
113
|
-
notifySubscribers(subscribers);
|
114
|
-
});
|
115
|
-
}
|
116
|
-
});
|
117
|
-
}
|
118
|
-
// Teardown callback for the subscription.
|
119
|
-
subscriber.add(() => {
|
120
|
-
const subIndex = subscribers.indexOf(subscriber);
|
121
|
-
/* istanbul ignore else */
|
122
|
-
if (subIndex >= 0) {
|
123
|
-
subscribers.splice(subIndex, 1);
|
124
|
-
}
|
125
|
-
if (subscribers.length === 0) {
|
126
|
-
scrollableHostSubscription.unsubscribe();
|
127
|
-
scrollEventSubscription.unsubscribe();
|
128
|
-
newScrollableHostObservable.complete();
|
129
|
-
}
|
130
|
-
});
|
131
|
-
});
|
132
|
-
}
|
133
|
-
watchScrollableHostClipPathChanges(elementRef) {
|
134
|
-
if (!this.#resizeObserverSvc) {
|
135
|
-
return of('none');
|
136
|
-
}
|
137
|
-
return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
|
138
|
-
if (!this.#resizeObserverSvc ||
|
139
|
-
!scrollableHost ||
|
140
|
-
scrollableHost === this.#windowRef.nativeWindow) {
|
141
|
-
return of('none');
|
142
|
-
}
|
143
|
-
return concat([
|
144
|
-
of(undefined),
|
145
|
-
this.#resizeObserverSvc.observe({ nativeElement: scrollableHost }),
|
146
|
-
]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
|
147
|
-
const viewportSize = this.#getViewportSize();
|
148
|
-
const { top, left, width, height } = scrollableHost.getBoundingClientRect();
|
149
|
-
const right = Math.max(viewportSize.width - left - width, 0);
|
150
|
-
const bottom = Math.max(viewportSize.height - top - height, 0);
|
151
|
-
return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
|
152
|
-
}));
|
153
|
-
}));
|
154
|
-
}
|
155
|
-
#findScrollableHost(element) {
|
156
|
-
const regex = /(auto|scroll)/;
|
157
|
-
const windowObj = this.#windowRef.nativeWindow;
|
158
|
-
const bodyObj = windowObj.document.body;
|
159
|
-
if (!element) {
|
160
|
-
return windowObj;
|
161
|
-
}
|
162
|
-
let style = windowObj.getComputedStyle(element);
|
163
|
-
let parent = element;
|
164
|
-
do {
|
165
|
-
parent = parent.parentNode;
|
166
|
-
// Return `window` if the parent element has been removed from the DOM.
|
167
|
-
if (!(parent instanceof HTMLElement)) {
|
168
|
-
return windowObj;
|
169
|
-
}
|
170
|
-
style = windowObj.getComputedStyle(parent);
|
171
|
-
} while (!regex.test(style.overflow) &&
|
172
|
-
!regex.test(style.overflowY) &&
|
173
|
-
parent !== bodyObj);
|
174
|
-
if (parent === bodyObj) {
|
175
|
-
return windowObj;
|
176
|
-
}
|
177
|
-
return parent;
|
178
|
-
}
|
179
|
-
#observeDocumentHiddenElementChanges(mutationObserver) {
|
180
|
-
mutationObserver.observe(document.documentElement, {
|
181
|
-
attributes: true,
|
182
|
-
attributeFilter: ['class', 'style', 'hidden'],
|
183
|
-
childList: true,
|
184
|
-
subtree: true,
|
185
|
-
});
|
186
|
-
}
|
187
|
-
#observeForScrollableHostChanges(element, mutationObserver) {
|
188
|
-
mutationObserver.disconnect();
|
189
|
-
const target = element instanceof HTMLElement ? element : document.documentElement;
|
190
|
-
mutationObserver.observe(target, {
|
191
|
-
attributes: true,
|
192
|
-
attributeFilter: ['class', 'style'],
|
193
|
-
childList: true,
|
194
|
-
subtree: true,
|
195
|
-
});
|
196
|
-
}
|
197
|
-
/**
|
198
|
-
* Determines if an element is "visible" in the DOM.
|
199
|
-
* @see https://stackoverflow.com/a/11639664/6178885
|
200
|
-
*/
|
201
|
-
#isElementVisible(elementRef) {
|
202
|
-
return !!elementRef.nativeElement?.offsetParent;
|
203
|
-
}
|
204
|
-
#getViewportSize() {
|
205
|
-
const win = this.#windowRef.nativeWindow;
|
206
|
-
const docElem = win.document.documentElement;
|
207
|
-
return {
|
208
|
-
width: docElem.clientWidth,
|
209
|
-
height: docElem.clientHeight,
|
210
|
-
};
|
211
|
-
}
|
212
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: i1.SkyMutationObserverService }, { token: i2.SkyAppWindowRef }, { token: i3.SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
213
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' }); }
|
214
|
-
}
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyScrollableHostService, decorators: [{
|
216
|
-
type: Injectable,
|
217
|
-
args: [{
|
218
|
-
providedIn: 'root',
|
219
|
-
}]
|
220
|
-
}], ctorParameters: () => [{ type: i1.SkyMutationObserverService }, { type: i2.SkyAppWindowRef }, { type: i3.SkyResizeObserverService, decorators: [{
|
221
|
-
type: Optional
|
222
|
-
}] }] });
|
223
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsYWJsZS1ob3N0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2Nyb2xsYWJsZS1ob3N0L3Njcm9sbGFibGUtaG9zdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUdQLHVCQUF1QixFQUN2QixNQUFNLEVBQ04sU0FBUyxFQUNULEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFNekUsU0FBUyxpQkFBaUIsQ0FBQyxXQUFrQyxFQUFFLElBQWM7SUFDM0UsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNyQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7QUFDSCxDQUFDO0FBS0QsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxvQkFBb0IsQ0FBNkI7SUFFakQsVUFBVSxDQUFrQjtJQUU1QixrQkFBa0IsQ0FBdUM7SUFFekQsWUFDRSxtQkFBK0MsRUFDL0MsU0FBMEIsRUFDZCxpQkFBNEM7UUFFeEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO1FBQ2hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztRQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGlCQUFpQixDQUFDLFVBQXNCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENB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VSxDQUFDLFlBQVksQ0FBQztRQUN6QyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1lBQzFCLE1BQU0sRUFBRSxPQUFPLENBQUMsWUFBWTtTQUM3QixDQUFDO0lBQ0osQ0FBQzsrR0FuU1Usd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBV0ksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmliZXIsXG4gIFN1YnNjcmlwdGlvbixcbiAgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIsXG4gIGNvbmNhdCxcbiAgZnJvbUV2ZW50LFxuICBvZixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgc3dpdGNoTWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi9yZXNpemUtb2JzZXJ2ZXIvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnLi4vd2luZG93L3dpbmRvdy1yZWYnO1xuXG5mdW5jdGlvbiBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVyczogU3Vic2NyaWJlcjx1bmtub3duPltdLCBpdGVtPzogdW5rbm93bikge1xuICBmb3IgKGNvbnN0IHN1YnNjcmliZXIgb2Ygc3Vic2NyaWJlcnMpIHtcbiAgICBzdWJzY3JpYmVyLm5leHQoaXRlbSk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB7XG4gICNtdXRhdGlvbk9ic2VydmVyU3ZjOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZTtcblxuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG5cbiAgI3Jlc2l6ZU9ic2VydmVyU3ZjOiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbXV0YXRpb25PYnNlcnZlclN2YzogU2t5TXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgQE9wdGlvbmFsKCkgcmVzaXplT2JzZXJ2ZXJTdmM/OiBTa3lSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMgPSBtdXRhdGlvbk9ic2VydmVyU3ZjO1xuICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjID0gcmVzaXplT2JzZXJ2ZXJTdmM7XG4gICAgdGhpcy4jd2luZG93UmVmID0gd2luZG93UmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGdpdmVuIGVsZW1lbnQncyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKiBAcGFyYW0gZWxlbWVudFJlZiBUaGUgZWxlbWVudCB3aG9zZSBzY3JvbGxhYmxlIGhvc3QgaXMgYmVpbmcgcmVxdWVzdGVkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHNjcm9sbGFibGUgaG9zdFxuICAgKi9cbiAgcHVibGljIGdldFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpOiBIVE1MRWxlbWVudCB8IFdpbmRvdyB7XG4gICAgcmV0dXJuIHRoaXMuI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgZ2l2ZW4gZWxlbWVudCdzIGN1cnJlbnQgc2Nyb2xsYWJsZSBob3N0XG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFRoZSBlbGVtZW50IHdob3NlIHNjcm9sbGFibGUgaG9zdCBpcyBiZWluZyByZXF1ZXN0ZWRcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB0aGUgY3VycmVudCBzY3JvbGxhYmxlIGhvc3QgZWxlbWVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdChcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApOiBPYnNlcnZhYmxlPEhUTUxFbGVtZW50IHwgV2luZG93PiB7XG4gICAgY29uc3Qgc3Vic2NyaWJlcnM6IFN1YnNjcmliZXI8SFRNTEVsZW1lbnQgfCBXaW5kb3c+W10gPSBbXTtcblxuICAgIGxldCBwYXJlbnRNdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuICAgIGxldCBkb2N1bWVudEhpZGRlbkVsZW1lbnRNdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBzdWJzY3JpYmVycy5wdXNoKHN1YnNjcmliZXIpO1xuXG4gICAgICBsZXQgc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgV2luZG93IHwgdW5kZWZpbmVkID1cbiAgICAgICAgdGhpcy4jZmluZFNjcm9sbGFibGVIb3N0KGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICAgIC8vIFNldHVwIG11dGF0aW9uIG9ic2VydmVycyBvbmx5IG9uY2UsIGZvciBhbGwgc3Vic2NyaWJlcnMuXG4gICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIgPSB0aGlzLiNtdXRhdGlvbk9ic2VydmVyU3ZjLmNyZWF0ZSgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmV3U2Nyb2xsYWJsZUhvc3QgPSB0aGlzLiNmaW5kU2Nyb2xsYWJsZUhvc3QoXG4gICAgICAgICAgICBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIFJlc2V0IG9ic2VydmVyIGlmIHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0ICE9PSBzY3JvbGxhYmxlSG9zdCAmJlxuICAgICAgICAgICAgdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcblxuICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QsXG4gICAgICAgICAgICAgIHBhcmVudE11dGF0aW9uT2JzZXJ2ZXIsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycywgc2Nyb2xsYWJsZUhvc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICBzY3JvbGxhYmxlSG9zdCxcbiAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLFxuICAgICAgICApO1xuXG4gICAgICAgIGRvY3VtZW50SGlkZGVuRWxlbWVudE11dGF0aW9uT2JzZXJ2ZXIgPVxuICAgICAgICAgIHRoaXMuI211dGF0aW9uT2JzZXJ2ZXJTdmMuY3JlYXRlKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlSG9zdCAmJiAhdGhpcy4jaXNFbGVtZW50VmlzaWJsZShlbGVtZW50UmVmKSkge1xuICAgICAgICAgICAgICAvLyBJZiB0aGUgc2Nyb2xsYWJsZSBob3N0IGlzIG5vdCB2aXNpYmxlLCBzZXQgaXQgdG8gdW5kZWZpbmVkIGFuZCB1bnN1YnNjcmliZSBmcm9tIGl0cyBtdXRhdGlvbiBjaGFuZ2VzLlxuICAgICAgICAgICAgICAvLyBUaGVuLCBvYnNlcnZlIHRoZSBkb2N1bWVudCBlbGVtZW50IHNvIHRoYXQgYSBuZXcgc2Nyb2xsYWJsZSBob3N0IGNhbiBiZSBmb3VuZC5cbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICAgICAgdGhpcy4jb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlSG9zdCxcbiAgICAgICAgICAgICAgICBwYXJlbnRNdXRhdGlvbk9ic2VydmVyLFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzLCBzY3JvbGxhYmxlSG9zdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy4jb2JzZXJ2ZURvY3VtZW50SGlkZGVuRWxlbWVudENoYW5nZXMoXG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlcixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gRW1pdCB0aGUgc2Nyb2xsYWJsZSBob3N0IHRvIHRoZSBzdWJzY3JpYmVyLlxuICAgICAgc3Vic2NyaWJlci5uZXh0KHNjcm9sbGFibGVIb3N0KTtcblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZG9jdW1lbnRIaWRkZW5FbGVtZW50TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgcGFyZW50TXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB3aGljaCBlbWl0cyB3aGVuZXZlciB0aGUgZWxlbWVudCdzIHNjcm9sbGFibGUgaG9zdCBlbWl0cyBhIHNjcm9sbCBldmVudC4gVGhlIG9ic2VydmFibGUgd2lsbCBhbHdheXMgZW1pdCB0aGUgc2Nyb2xsIGV2ZW50cyBmcm9tIHRoZSBlbGVtZW50cyBjdXJyZW50IHNjcm9sbGFibGUgaG9zdCBhbmQgd2lsbCB1cGRhdGUgYmFzZWQgb24gYW55IHNjcm9sbGFibGUgaG9zdCBjaGFuZ2VzLiBUaGUgb2JzZXJ2YWJsZSB3aWxsIGFsc28gZW1pdCBvbmNlIHdoZW5ldmVyIHRoZSBzY3JvbGxhYmxlIGhvc3QgY2hhbmdlcy5cbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgVGhlIGVsZW1lbnQgd2hvc2Ugc2Nyb2xsYWJsZSBob3N0IHNjcm9sbCBldmVudHMgYXJlIGJlaW5nIHJlcXVlc3RlZFxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIHdoaWNoIGVtaXRzIHdoZW4gdGhlIGVsZW1lbnRzIHNjcm9sbGFibGUgaG9zdCBpcyBzY3JvbGxlZCBvciBpcyBjaGFuZ2VkXG4gICAqL1xuICBwdWJsaWMgd2F0Y2hTY3JvbGxhYmxlSG9zdFNjcm9sbEV2ZW50cyhcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCBzdWJzY3JpYmVyczogU3Vic2NyaWJlcjx2b2lkPltdID0gW107XG5cbiAgICBsZXQgc2Nyb2xsYWJsZUhvc3Q6IEhUTUxFbGVtZW50IHwgV2luZG93O1xuXG4gICAgbGV0IG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgbGV0IHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgbGV0IHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHN1YnNjcmliZXJzLnB1c2goc3Vic2NyaWJlcik7XG5cbiAgICAgIC8vIFNldHVwIG11dGF0aW9uIG9ic2VydmVycyBvbmx5IG9uY2UsIGZvciBhbGwgc3Vic2NyaWJlcnMuXG4gICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHNjcm9sbGFibGVIb3N0U3Vic2NyaXB0aW9uID0gdGhpcy53YXRjaFNjcm9sbGFibGVIb3N0KFxuICAgICAgICAgIGVsZW1lbnRSZWYsXG4gICAgICAgICkuc3Vic2NyaWJlKChuZXdTY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5uZXh0KCk7XG4gICAgICAgICAgbmV3U2Nyb2xsYWJsZUhvc3RPYnNlcnZhYmxlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUhvc3QgJiYgc2Nyb2xsYWJsZUhvc3QgIT09IG5ld1Njcm9sbGFibGVIb3N0KSB7XG4gICAgICAgICAgICBub3RpZnlTdWJzY3JpYmVycyhzdWJzY3JpYmVycyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPSBuZXdTY3JvbGxhYmxlSG9zdDtcbiAgICAgICAgICBuZXdTY3JvbGxhYmxlSG9zdE9ic2VydmFibGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgICAgICAgLy8gT25seSBzdWJzY3JpYmUgdG8gc2Nyb2xsIGV2ZW50cyBpZiB0aGUgaG9zdCBlbGVtZW50IGlzIGRlZmluZWQuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAobmV3U2Nyb2xsYWJsZUhvc3QpIHtcbiAgICAgICAgICAgIHNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KG5ld1Njcm9sbGFibGVIb3N0LCAnc2Nyb2xsJylcbiAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZSkpXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIG5vdGlmeVN1YnNjcmliZXJzKHN1YnNjcmliZXJzKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gVGVhcmRvd24gY2FsbGJhY2sgZm9yIHRoZSBzdWJzY3JpcHRpb24uXG4gICAgICBzdWJzY3JpYmVyLmFkZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YkluZGV4ID0gc3Vic2NyaWJlcnMuaW5kZXhPZihzdWJzY3JpYmVyKTtcblxuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoc3ViSW5kZXggPj0gMCkge1xuICAgICAgICAgIHN1YnNjcmliZXJzLnNwbGljZShzdWJJbmRleCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3Vic2NyaWJlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIG5ld1Njcm9sbGFibGVIb3N0T2JzZXJ2YWJsZS5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB3YXRjaFNjcm9sbGFibGVIb3N0Q2xpcFBhdGhDaGFuZ2VzKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCF0aGlzLiNyZXNpemVPYnNlcnZlclN2Yykge1xuICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMud2F0Y2hTY3JvbGxhYmxlSG9zdChlbGVtZW50UmVmKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChzY3JvbGxhYmxlSG9zdCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjIHx8XG4gICAgICAgICAgIXNjcm9sbGFibGVIb3N0IHx8XG4gICAgICAgICAgc2Nyb2xsYWJsZUhvc3QgPT09IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3dcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCdub25lJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29uY2F0KFtcbiAgICAgICAgICBvZih1bmRlZmluZWQpLFxuICAgICAgICAgIHRoaXMuI3Jlc2l6ZU9ic2VydmVyU3ZjLm9ic2VydmUoeyBuYXRpdmVFbGVtZW50OiBzY3JvbGxhYmxlSG9zdCB9KSxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICBkZWJvdW5jZVRpbWUoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFNpemUgPSB0aGlzLiNnZXRWaWV3cG9ydFNpemUoKTtcbiAgICAgICAgICAgIGNvbnN0IHsgdG9wLCBsZWZ0LCB3aWR0aCwgaGVpZ2h0IH0gPSAoXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVIb3N0IGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgICApLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBNYXRoLm1heCh2aWV3cG9ydFNpemUud2lkdGggLSBsZWZ0IC0gd2lkdGgsIDApO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gTWF0aC5tYXgodmlld3BvcnRTaXplLmhlaWdodCAtIHRvcCAtIGhlaWdodCwgMCk7XG4gICAgICAgICAgICByZXR1cm4gYGluc2V0KCR7dG9wfXB4ICR7cmlnaHR9cHggJHtib3R0b219cHggJHtsZWZ0fXB4KWA7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgI2ZpbmRTY3JvbGxhYmxlSG9zdChlbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCk6IEhUTUxFbGVtZW50IHwgV2luZG93IHtcbiAgICBjb25zdCByZWdleCA9IC8oYXV0b3xzY3JvbGwpLztcbiAgICBjb25zdCB3aW5kb3dPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93O1xuICAgIGNvbnN0IGJvZHlPYmogPSB3aW5kb3dPYmouZG9jdW1lbnQuYm9keTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHdpbmRvd09iajtcbiAgICB9XG5cbiAgICBsZXQgc3R5bGUgPSB3aW5kb3dPYmouZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbiAgICBsZXQgcGFyZW50ID0gZWxlbWVudDtcblxuICAgIGRvIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAvLyBSZXR1cm4gYHdpbmRvd2AgaWYgdGhlIHBhcmVudCBlbGVtZW50IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NLlxuICAgICAgaWYgKCEocGFyZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlID0gd2luZG93T2JqLmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICB9IHdoaWxlIChcbiAgICAgICFyZWdleC50ZXN0KHN0eWxlLm92ZXJmbG93KSAmJlxuICAgICAgIXJlZ2V4LnRlc3Qoc3R5bGUub3ZlcmZsb3dZKSAmJlxuICAgICAgcGFyZW50ICE9PSBib2R5T2JqXG4gICAgKTtcblxuICAgIGlmIChwYXJlbnQgPT09IGJvZHlPYmopIHtcbiAgICAgIHJldHVybiB3aW5kb3dPYmo7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcmVudDtcbiAgfVxuXG4gICNvYnNlcnZlRG9jdW1lbnRIaWRkZW5FbGVtZW50Q2hhbmdlcyhtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyKSB7XG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZScsICdoaWRkZW4nXSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAjb2JzZXJ2ZUZvclNjcm9sbGFibGVIb3N0Q2hhbmdlcyhcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IFdpbmRvdyB8IHVuZGVmaW5lZCxcbiAgICBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyLFxuICApIHtcbiAgICBtdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcblxuICAgIGNvbnN0IHRhcmdldCA9XG4gICAgICBlbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gICAgbXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRhcmdldCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGF0dHJpYnV0ZUZpbHRlcjogWydjbGFzcycsICdzdHlsZSddLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lbnQgaXMgXCJ2aXNpYmxlXCIgaW4gdGhlIERPTS5cbiAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTE2Mzk2NjQvNjE3ODg4NVxuICAgKi9cbiAgI2lzRWxlbWVudFZpc2libGUoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8ub2Zmc2V0UGFyZW50O1xuICB9XG5cbiAgI2dldFZpZXdwb3J0U2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHdpbiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3c7XG4gICAgY29uc3QgZG9jRWxlbSA9IHdpbi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IGRvY0VsZW0uY2xpZW50V2lkdGgsXG4gICAgICBoZWlnaHQ6IGRvY0VsZW0uY2xpZW50SGVpZ2h0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
@@ -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 { this._NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?)?$/; }
|
23
|
-
static formatNumber(locale, value, style, digits, currency = null, currencyDisplay = 'code', currencySign) {
|
24
|
-
if (value == null) {
|
25
|
-
return null;
|
26
|
-
}
|
27
|
-
// Convert strings to numbers
|
28
|
-
value = typeof value === 'string' && isNumeric(value) ? +value : value;
|
29
|
-
if (typeof value !== 'number') {
|
30
|
-
throw Error(`SkyInvalidPipeArgument: '${value}'`);
|
31
|
-
}
|
32
|
-
let minInt = undefined;
|
33
|
-
let minFraction = undefined;
|
34
|
-
let maxFraction = undefined;
|
35
|
-
if (style !== SkyIntlNumberFormatStyle.Currency) {
|
36
|
-
// rely on Intl default for currency
|
37
|
-
minInt = 1;
|
38
|
-
minFraction = 0;
|
39
|
-
maxFraction = 3;
|
40
|
-
}
|
41
|
-
if (digits) {
|
42
|
-
const parts = digits.match(this._NUMBER_FORMAT_REGEXP);
|
43
|
-
if (parts === null) {
|
44
|
-
throw new Error(`${digits} is not a valid digit info for number pipes`);
|
45
|
-
}
|
46
|
-
/* istanbul ignore else */
|
47
|
-
if (parts[1] != null) {
|
48
|
-
// min integer digits
|
49
|
-
minInt = parseIntAutoRadix(parts[1]);
|
50
|
-
}
|
51
|
-
/* istanbul ignore else */
|
52
|
-
if (parts[3] != null) {
|
53
|
-
// min fraction digits
|
54
|
-
minFraction = parseIntAutoRadix(parts[3]);
|
55
|
-
}
|
56
|
-
/* istanbul ignore else */
|
57
|
-
if (parts[5] != null) {
|
58
|
-
// max fraction digits
|
59
|
-
maxFraction = parseIntAutoRadix(parts[5]);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
return SkyIntlNumberFormatter.format(value, locale, style, {
|
63
|
-
minimumIntegerDigits: minInt,
|
64
|
-
minimumFractionDigits: minFraction,
|
65
|
-
maximumFractionDigits: maxFraction,
|
66
|
-
currency: currency,
|
67
|
-
currencyDisplay: currencyDisplay,
|
68
|
-
currencySign: currencySign,
|
69
|
-
});
|
70
|
-
}
|
71
|
-
}
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdC11dGlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3NoYXJlZC9udW1iZXItZm9ybWF0L251bWJlci1mb3JtYXQtdXRpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBMkI7QUFDM0IsMEZBQTBGO0FBQzFGLCtGQUErRjtBQUMvRixvQkFBb0I7QUFDcEIseUZBQXlGO0FBQ3pGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUvRSxTQUFTLFNBQVMsQ0FBQyxLQUFVO0lBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLElBQVk7SUFDckMsTUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUUxQywwQkFBMEI7SUFDMUIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQscUVBQXFFO0FBQ3JFLDJEQUEyRDtBQUMzRCxXQUFXO0FBQ1gsTUFBTSxPQUFPLHNCQUFzQjthQUNsQiwwQkFBcUIsR0FBRyw2QkFBNkIsQ0FBQztJQUU5RCxNQUFNLENBQUMsWUFBWSxDQUN4QixNQUFjLEVBQ2QsS0FBc0IsRUFDdEIsS0FBK0IsRUFDL0IsTUFBc0IsRUFDdEIsV0FBMEIsSUFBSSxFQUM5QixrQkFBK0QsTUFBTSxFQUNyRSxZQUF3QztRQUV4QyxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCw2QkFBNkI7UUFDN0IsS0FBSyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdkUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssQ0FBQyw0QkFBNEIsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQXVCLFNBQVMsQ0FBQztRQUMzQyxJQUFJLFdBQVcsR0FBdUIsU0FBUyxDQUFDO1FBQ2hELElBQUksV0FBVyxHQUF1QixTQUFTLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEQsb0NBQW9DO1lBQ3BDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDWCxXQUFXLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDbEIsQ0FBQztRQUVELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBRXZELElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsTUFBTSw2Q0FBNkMsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHFCQUFxQjtnQkFDckIsTUFBTSxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFFRCwwQkFBMEI7WUFDMUIsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLHNCQUFzQjtnQkFDdEIsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsS0FBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDbkUsb0JBQW9CLEVBQUUsTUFBTTtZQUM1QixxQkFBcUIsRUFBRSxXQUFXO1lBQ2xDLHFCQUFxQixFQUFFLFdBQVc7WUFDbEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGVBQWU7WUFDaEMsWUFBWSxFQUFFLFlBQVk7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuLy8gVGhpcyBmaWxlIGlzIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggTnVtYmVyUGlwZSBpbiBvcmRlciB0byBtYWludGFpbiB0aGUgb2xkXG4vLyBiZWhhdmlvciBvZiB1c2luZyB0aGUgYEludGxgIEFQSSBmb3IgZm9ybWF0dGluZyBudW1iZXJzIHJhdGhlciB0aGFuIGhhdmluZyB0byByZWdpc3RlciBldmVyeVxuLy8gc3VwcG9ydGVkIGxvY2FsZS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi80LjQueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL251bWJlcl9waXBlLnRzXG5pbXBvcnQgeyBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUsIFNreUludGxOdW1iZXJGb3JtYXR0ZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmZ1bmN0aW9uIGlzTnVtZXJpYyh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAhaXNOYU4odmFsdWUgLSBwYXJzZUZsb2F0KHZhbHVlKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlSW50QXV0b1JhZGl4KHRleHQ6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHJlc3VsdDogbnVtYmVyID0gcGFyc2VJbnQodGV4dCwgMTApO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmIChpc05hTihyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGludGVnZXIgbGl0ZXJhbCB3aGVuIHBhcnNpbmcgJyArIHRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gTmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBjbGFzc2VzIHdoaWNoIGNvbnRhaW4gc3RhdGljIG1ldGhvZHMuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzY0MVxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBTa3lOdW1iZXJGb3JtYXRVdGlsaXR5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX05VTUJFUl9GT1JNQVRfUkVHRVhQID0gL14oXFxkKyk/XFwuKChcXGQrKSgtKFxcZCspKT8pPyQvO1xuXG4gIHB1YmxpYyBzdGF0aWMgZm9ybWF0TnVtYmVyKFxuICAgIGxvY2FsZTogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsXG4gICAgc3R5bGU6IFNreUludGxOdW1iZXJGb3JtYXRTdHlsZSxcbiAgICBkaWdpdHM/OiBzdHJpbmcgfCBudWxsLFxuICAgIGN1cnJlbmN5OiBzdHJpbmcgfCBudWxsID0gbnVsbCxcbiAgICBjdXJyZW5jeURpc3BsYXk6ICdjb2RlJyB8ICdzeW1ib2wnIHwgJ25hcnJvd1N5bWJvbCcgfCAnbmFtZScgPSAnY29kZScsXG4gICAgY3VycmVuY3lTaWduPzogJ2FjY291bnRpbmcnIHwgJ3N0YW5kYXJkJyxcbiAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgc3RyaW5ncyB0byBudW1iZXJzXG4gICAgdmFsdWUgPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIGlzTnVtZXJpYyh2YWx1ZSkgPyArdmFsdWUgOiB2YWx1ZTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgRXJyb3IoYFNreUludmFsaWRQaXBlQXJndW1lbnQ6ICcke3ZhbHVlfSdgKTtcbiAgICB9XG5cbiAgICBsZXQgbWluSW50OiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IG1pbkZyYWN0aW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IG1heEZyYWN0aW9uOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgaWYgKHN0eWxlICE9PSBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUuQ3VycmVuY3kpIHtcbiAgICAgIC8vIHJlbHkgb24gSW50bCBkZWZhdWx0IGZvciBjdXJyZW5jeVxuICAgICAgbWluSW50ID0gMTtcbiAgICAgIG1pbkZyYWN0aW9uID0gMDtcbiAgICAgIG1heEZyYWN0aW9uID0gMztcbiAgICB9XG5cbiAgICBpZiAoZGlnaXRzKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGRpZ2l0cy5tYXRjaCh0aGlzLl9OVU1CRVJfRk9STUFUX1JFR0VYUCk7XG5cbiAgICAgIGlmIChwYXJ0cyA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZGlnaXRzfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvIGZvciBudW1iZXIgcGlwZXNgKTtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwYXJ0c1sxXSAhPSBudWxsKSB7XG4gICAgICAgIC8vIG1pbiBpbnRlZ2VyIGRpZ2l0c1xuICAgICAgICBtaW5JbnQgPSBwYXJzZUludEF1dG9SYWRpeChwYXJ0c1sxXSk7XG4gICAgICB9XG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocGFydHNbM10gIT0gbnVsbCkge1xuICAgICAgICAvLyBtaW4gZnJhY3Rpb24gZGlnaXRzXG4gICAgICAgIG1pbkZyYWN0aW9uID0gcGFyc2VJbnRBdXRvUmFkaXgocGFydHNbM10pO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHBhcnRzWzVdICE9IG51bGwpIHtcbiAgICAgICAgLy8gbWF4IGZyYWN0aW9uIGRpZ2l0c1xuICAgICAgICBtYXhGcmFjdGlvbiA9IHBhcnNlSW50QXV0b1JhZGl4KHBhcnRzWzVdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gU2t5SW50bE51bWJlckZvcm1hdHRlci5mb3JtYXQodmFsdWUgYXMgbnVtYmVyLCBsb2NhbGUsIHN0eWxlLCB7XG4gICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogbWluSW50LFxuICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBtaW5GcmFjdGlvbixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbWF4RnJhY3Rpb24sXG4gICAgICBjdXJyZW5jeTogY3VycmVuY3ksXG4gICAgICBjdXJyZW5jeURpc3BsYXk6IGN1cnJlbmN5RGlzcGxheSxcbiAgICAgIGN1cnJlbmN5U2lnbjogY3VycmVuY3lTaWduLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
@@ -1,34 +0,0 @@
|
|
1
|
-
/* istanbul ignore file */
|
2
|
-
/**
|
3
|
-
* NOTICE: DO NOT MODIFY THIS FILE!
|
4
|
-
* The contents of this file were automatically generated by
|
5
|
-
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.
|
6
|
-
* To update this file, simply rerun the command.
|
7
|
-
*/
|
8
|
-
import { NgModule } from '@angular/core';
|
9
|
-
import { SkyI18nModule, SkyLibResourcesService, } from '@skyux/i18n';
|
10
|
-
import * as i0 from "@angular/core";
|
11
|
-
const RESOURCES = {
|
12
|
-
'EN-US': {
|
13
|
-
skyux_numeric_billions_symbol: { message: 'B' },
|
14
|
-
skyux_numeric_millions_symbol: { message: 'M' },
|
15
|
-
skyux_numeric_thousands_symbol: { message: 'K' },
|
16
|
-
skyux_numeric_trillions_symbol: { message: 'T' },
|
17
|
-
},
|
18
|
-
};
|
19
|
-
SkyLibResourcesService.addResources(RESOURCES);
|
20
|
-
/**
|
21
|
-
* Import into any component library module that needs to use resource strings.
|
22
|
-
*/
|
23
|
-
export class SkyCoreResourcesModule {
|
24
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
25
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, exports: [SkyI18nModule] }); }
|
26
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, imports: [SkyI18nModule] }); }
|
27
|
-
}
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyCoreResourcesModule, decorators: [{
|
29
|
-
type: NgModule,
|
30
|
-
args: [{
|
31
|
-
exports: [SkyI18nModule],
|
32
|
-
}]
|
33
|
-
}] });
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQkFBMEI7QUFDMUI7Ozs7O0dBS0c7QUFDSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxhQUFhLEVBRWIsc0JBQXNCLEdBQ3ZCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBb0M7SUFDakQsT0FBTyxFQUFFO1FBQ1AsNkJBQTZCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQy9DLDZCQUE2QixFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUMvQyw4QkFBOEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDaEQsOEJBQThCLEVBQUUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFO0tBQ2pEO0NBQ0YsQ0FBQztBQUVGLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUUvQzs7R0FFRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7K0dBQXRCLHNCQUFzQjtnSEFBdEIsc0JBQXNCLFlBRnZCLGFBQWE7Z0hBRVosc0JBQXNCLFlBRnZCLGFBQWE7OzRGQUVaLHNCQUFzQjtrQkFIbEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbi8qKlxuICogTk9USUNFOiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSFcbiAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieVxuICogdGhlICduZyBnZW5lcmF0ZSBAc2t5dXgvaTE4bjpsaWItcmVzb3VyY2VzLW1vZHVsZSBsaWIvbW9kdWxlcy9zaGFyZWQvc2t5LWNvcmUnIHNjaGVtYXRpYy5cbiAqIFRvIHVwZGF0ZSB0aGlzIGZpbGUsIHNpbXBseSByZXJ1biB0aGUgY29tbWFuZC5cbiAqL1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IFJlY29yZDxzdHJpbmcsIFNreUxpYlJlc291cmNlcz4gPSB7XG4gICdFTi1VUyc6IHtcbiAgICBza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnQicgfSxcbiAgICBza3l1eF9udW1lcmljX21pbGxpb25zX3N5bWJvbDogeyBtZXNzYWdlOiAnTScgfSxcbiAgICBza3l1eF9udW1lcmljX3Rob3VzYW5kc19zeW1ib2w6IHsgbWVzc2FnZTogJ0snIH0sXG4gICAgc2t5dXhfbnVtZXJpY190cmlsbGlvbnNfc3ltYm9sOiB7IG1lc3NhZ2U6ICdUJyB9LFxuICB9LFxufTtcblxuU2t5TGliUmVzb3VyY2VzU2VydmljZS5hZGRSZXNvdXJjZXMoUkVTT1VSQ0VTKTtcblxuLyoqXG4gKiBJbXBvcnQgaW50byBhbnkgY29tcG9uZW50IGxpYnJhcnkgbW9kdWxlIHRoYXQgbmVlZHMgdG8gdXNlIHJlc291cmNlIHN0cmluZ3MuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtTa3lJMThuTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5Q29yZVJlc291cmNlc01vZHVsZSB7fVxuIl19
|
@@ -1,6 +0,0 @@
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
2
|
-
/**
|
3
|
-
* @internal
|
4
|
-
*/
|
5
|
-
export const SKY_STACKING_CONTEXT = new InjectionToken('SkyStackingContext');
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tpbmctY29udGV4dC10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zdGFja2luZy1jb250ZXh0L3N0YWNraW5nLWNvbnRleHQtdG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLElBQUksY0FBYyxDQUNwRCxvQkFBb0IsQ0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreVN0YWNraW5nQ29udGV4dCB9IGZyb20gJy4vc3RhY2tpbmctY29udGV4dCc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBTS1lfU1RBQ0tJTkdfQ09OVEVYVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTa3lTdGFja2luZ0NvbnRleHQ+KFxuICAnU2t5U3RhY2tpbmdDb250ZXh0Jyxcbik7XG4iXX0=
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2tpbmctY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9zdGFja2luZy1jb250ZXh0L3N0YWNraW5nLWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lTdGFja2luZ0NvbnRleHQge1xuICAvLyBUaGUgei1pbmRleCB0byB1c2UgZm9yIHRoZSBzdGFja2luZyBjb250ZXh0LlxuICB6SW5kZXg6IE9ic2VydmFibGU8bnVtYmVyPjtcbn1cbiJdfQ==
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXRpdGxlLWFyZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdGl0bGUvc2V0LXRpdGxlLWFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2t5QXBwU2V0VGl0bGVBcmdzIHtcbiAgdGl0bGVQYXJ0czogc3RyaW5nW107XG59XG4iXX0=
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
import * as i1 from "@angular/platform-browser";
|
4
|
-
/**
|
5
|
-
* Provides a method for setting a formatted title on the current window.
|
6
|
-
*/
|
7
|
-
export class SkyAppTitleService {
|
8
|
-
#title;
|
9
|
-
constructor(title) {
|
10
|
-
this.#title = title;
|
11
|
-
}
|
12
|
-
/**
|
13
|
-
* Sets the title on the current window.
|
14
|
-
* @param args An array of title parts. The parts will be concatenated with a hyphen between
|
15
|
-
* each part.
|
16
|
-
*/
|
17
|
-
setTitle(args) {
|
18
|
-
if (args?.titleParts) {
|
19
|
-
this.#title.setTitle(args.titleParts.join(' - '));
|
20
|
-
}
|
21
|
-
}
|
22
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppTitleService, deps: [{ token: i1.Title }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
23
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppTitleService, providedIn: 'root' }); }
|
24
|
-
}
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAppTitleService, decorators: [{
|
26
|
-
type: Injectable,
|
27
|
-
args: [{
|
28
|
-
providedIn: 'root',
|
29
|
-
}]
|
30
|
-
}], ctorParameters: () => [{ type: i1.Title }] });
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGl0bGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy90aXRsZS90aXRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUszQzs7R0FFRztBQUlILE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsTUFBTSxDQUFRO0lBRWQsWUFBWSxLQUFZO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQW9DO1FBQ2xELElBQUksSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7K0dBaEJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBTa3lBcHBTZXRUaXRsZUFyZ3MgfSBmcm9tICcuL3NldC10aXRsZS1hcmdzJztcblxuLyoqXG4gKiBQcm92aWRlcyBhIG1ldGhvZCBmb3Igc2V0dGluZyBhIGZvcm1hdHRlZCB0aXRsZSBvbiB0aGUgY3VycmVudCB3aW5kb3cuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lBcHBUaXRsZVNlcnZpY2Uge1xuICAjdGl0bGU6IFRpdGxlO1xuXG4gIGNvbnN0cnVjdG9yKHRpdGxlOiBUaXRsZSkge1xuICAgIHRoaXMuI3RpdGxlID0gdGl0bGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdGl0bGUgb24gdGhlIGN1cnJlbnQgd2luZG93LlxuICAgKiBAcGFyYW0gYXJncyBBbiBhcnJheSBvZiB0aXRsZSBwYXJ0cy4gVGhlIHBhcnRzIHdpbGwgYmUgY29uY2F0ZW5hdGVkIHdpdGggYSBoeXBoZW4gYmV0d2VlblxuICAgKiBlYWNoIHBhcnQuXG4gICAqL1xuICBwdWJsaWMgc2V0VGl0bGUoYXJnczogU2t5QXBwU2V0VGl0bGVBcmdzIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgaWYgKGFyZ3M/LnRpdGxlUGFydHMpIHtcbiAgICAgIHRoaXMuI3RpdGxlLnNldFRpdGxlKGFyZ3MudGl0bGVQYXJ0cy5qb2luKCcgLSAnKSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
@@ -1,64 +0,0 @@
|
|
1
|
-
import { Directive } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
import * as i1 from "../mutation/mutation-observer-service";
|
4
|
-
/**
|
5
|
-
* Trims whitespace in each text node that is a direct descendent of the current element.
|
6
|
-
*/
|
7
|
-
export class SkyTrimDirective {
|
8
|
-
#elRef;
|
9
|
-
#obs;
|
10
|
-
constructor(elRef, mutationObs) {
|
11
|
-
this.#elRef = elRef;
|
12
|
-
this.#obs = mutationObs.create((mutations) => {
|
13
|
-
const nodes = [];
|
14
|
-
// Only trim white space inside direct descendants of the current element.
|
15
|
-
for (const mutation of mutations) {
|
16
|
-
if (mutation.target.parentNode === elRef.nativeElement) {
|
17
|
-
nodes.push(mutation.target);
|
18
|
-
}
|
19
|
-
}
|
20
|
-
this.#trim(nodes);
|
21
|
-
});
|
22
|
-
this.#observe();
|
23
|
-
}
|
24
|
-
ngOnInit() {
|
25
|
-
const el = this.#elRef.nativeElement;
|
26
|
-
this.#trim(Array.from(el.childNodes));
|
27
|
-
}
|
28
|
-
ngOnDestroy() {
|
29
|
-
this.#disconnect();
|
30
|
-
}
|
31
|
-
#observe() {
|
32
|
-
this.#obs.observe(this.#elRef.nativeElement, {
|
33
|
-
characterData: true,
|
34
|
-
subtree: true,
|
35
|
-
});
|
36
|
-
}
|
37
|
-
#disconnect() {
|
38
|
-
this.#obs.disconnect();
|
39
|
-
}
|
40
|
-
#trim(nodes) {
|
41
|
-
// Suspend the MutationObserver so altering the text content of each node
|
42
|
-
// doesn't retrigger the observe callback.
|
43
|
-
this.#disconnect();
|
44
|
-
for (const node of nodes) {
|
45
|
-
if (node.nodeType === Node.TEXT_NODE && node.textContent) {
|
46
|
-
const textContent = node.textContent;
|
47
|
-
const textContentTrimmed = textContent.trim();
|
48
|
-
if (textContent !== textContentTrimmed) {
|
49
|
-
node.textContent = textContentTrimmed;
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
this.#observe();
|
54
|
-
}
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimDirective, deps: [{ token: i0.ElementRef }, { token: i1.SkyMutationObserverService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
56
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: SkyTrimDirective, selector: "[skyTrim]", ngImport: i0 }); }
|
57
|
-
}
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimDirective, decorators: [{
|
59
|
-
type: Directive,
|
60
|
-
args: [{
|
61
|
-
selector: '[skyTrim]',
|
62
|
-
}]
|
63
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.SkyMutationObserverService }] });
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdHJpbS90cmltLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQzs7O0FBSXpFOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixNQUFNLENBQWE7SUFFbkIsSUFBSSxDQUFtQjtJQUV2QixZQUFZLEtBQWlCLEVBQUUsV0FBdUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFFcEIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBMkIsRUFBRSxFQUFFO1lBQzdELE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztZQUV6QiwwRUFBMEU7WUFDMUUsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7b0JBQ3ZELEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQXdCLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzNDLGFBQWEsRUFBRSxJQUFJO1lBQ25CLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBYTtRQUNqQix5RUFBeUU7UUFDekUsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDekQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFDckMsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBRTlDLElBQUksV0FBVyxLQUFLLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDOytHQTdEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFINUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsV0FBVztpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vbXV0YXRpb24vbXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZSc7XG5cbi8qKlxuICogVHJpbXMgd2hpdGVzcGFjZSBpbiBlYWNoIHRleHQgbm9kZSB0aGF0IGlzIGEgZGlyZWN0IGRlc2NlbmRlbnQgb2YgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3NreVRyaW1dJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VHJpbURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgI2VsUmVmOiBFbGVtZW50UmVmO1xuXG4gICNvYnM6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoZWxSZWY6IEVsZW1lbnRSZWYsIG11dGF0aW9uT2JzOiBTa3lNdXRhdGlvbk9ic2VydmVyU2VydmljZSkge1xuICAgIHRoaXMuI2VsUmVmID0gZWxSZWY7XG5cbiAgICB0aGlzLiNvYnMgPSBtdXRhdGlvbk9icy5jcmVhdGUoKG11dGF0aW9uczogTXV0YXRpb25SZWNvcmRbXSkgPT4ge1xuICAgICAgY29uc3Qgbm9kZXM6IE5vZGVbXSA9IFtdO1xuXG4gICAgICAvLyBPbmx5IHRyaW0gd2hpdGUgc3BhY2UgaW5zaWRlIGRpcmVjdCBkZXNjZW5kYW50cyBvZiB0aGUgY3VycmVudCBlbGVtZW50LlxuICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldC5wYXJlbnROb2RlID09PSBlbFJlZi5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgbm9kZXMucHVzaChtdXRhdGlvbi50YXJnZXQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3RyaW0obm9kZXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4jb2JzZXJ2ZSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGVsID0gdGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCBhcyBFbGVtZW50O1xuICAgIHRoaXMuI3RyaW0oQXJyYXkuZnJvbShlbC5jaGlsZE5vZGVzKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgI29ic2VydmUoKTogdm9pZCB7XG4gICAgdGhpcy4jb2JzLm9ic2VydmUodGhpcy4jZWxSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgY2hhcmFjdGVyRGF0YTogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAjZGlzY29ubmVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNvYnMuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgI3RyaW0obm9kZXM6IE5vZGVbXSk6IHZvaWQge1xuICAgIC8vIFN1c3BlbmQgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgc28gYWx0ZXJpbmcgdGhlIHRleHQgY29udGVudCBvZiBlYWNoIG5vZGVcbiAgICAvLyBkb2Vzbid0IHJldHJpZ2dlciB0aGUgb2JzZXJ2ZSBjYWxsYmFjay5cbiAgICB0aGlzLiNkaXNjb25uZWN0KCk7XG5cbiAgICBmb3IgKGNvbnN0IG5vZGUgb2Ygbm9kZXMpIHtcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSAmJiBub2RlLnRleHRDb250ZW50KSB7XG4gICAgICAgIGNvbnN0IHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudDtcbiAgICAgICAgY29uc3QgdGV4dENvbnRlbnRUcmltbWVkID0gdGV4dENvbnRlbnQudHJpbSgpO1xuXG4gICAgICAgIGlmICh0ZXh0Q29udGVudCAhPT0gdGV4dENvbnRlbnRUcmltbWVkKSB7XG4gICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IHRleHRDb250ZW50VHJpbW1lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuI29ic2VydmUoKTtcbiAgfVxufVxuIl19
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { NgModule } from '@angular/core';
|
2
|
-
import { SkyTrimDirective } from './trim.directive';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class SkyTrimModule {
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
6
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule, declarations: [SkyTrimDirective], exports: [SkyTrimDirective] }); }
|
7
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule }); }
|
8
|
-
}
|
9
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyTrimModule, decorators: [{
|
10
|
-
type: NgModule,
|
11
|
-
args: [{
|
12
|
-
declarations: [SkyTrimDirective],
|
13
|
-
exports: [SkyTrimDirective],
|
14
|
-
}]
|
15
|
-
}] });
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdHJpbS90cmltLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU1wRCxNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWEsaUJBSFQsZ0JBQWdCLGFBQ3JCLGdCQUFnQjtnSEFFZixhQUFhOzs0RkFBYixhQUFhO2tCQUp6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUNoQyxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lUcmltRGlyZWN0aXZlIH0gZnJvbSAnLi90cmltLmRpcmVjdGl2ZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVRyaW1EaXJlY3RpdmVdLFxuICBleHBvcnRzOiBbU2t5VHJpbURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVRyaW1Nb2R1bGUge31cbiJdfQ==
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { of as observableOf } from 'rxjs';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class SkyUIConfigService {
|
5
|
-
getConfig(key, defaultConfig) {
|
6
|
-
return observableOf(defaultConfig);
|
7
|
-
}
|
8
|
-
/* istanbul ignore next */
|
9
|
-
setConfig(key, value) {
|
10
|
-
return observableOf({});
|
11
|
-
}
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyUIConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
13
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyUIConfigService, providedIn: 'root' }); }
|
14
|
-
}
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyUIConfigService, decorators: [{
|
16
|
-
type: Injectable,
|
17
|
-
args: [{
|
18
|
-
providedIn: 'root',
|
19
|
-
}]
|
20
|
-
}] });
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdWktY29uZmlnL3VpLWNvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3RELE1BQU0sT0FBTyxrQkFBa0I7SUFDdEIsU0FBUyxDQUFDLEdBQVcsRUFBRSxhQUFtQjtRQUMvQyxPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBVTtRQUN0QyxPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQVJVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIGFzIG9ic2VydmFibGVPZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VUlDb25maWdTZXJ2aWNlIHtcbiAgcHVibGljIGdldENvbmZpZyhrZXk6IHN0cmluZywgZGVmYXVsdENvbmZpZz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihkZWZhdWx0Q29uZmlnKTtcbiAgfVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBzZXRDb25maWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2Yoe30pO1xuICB9XG59XG4iXX0=
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ib3VuZGFyeS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci1ib3VuZGFyeS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lWaWV3a2VlcGVyT2Zmc2V0IH0gZnJvbSAnLi92aWV3a2VlcGVyLW9mZnNldCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2t5Vmlld2tlZXBlckJvdW5kYXJ5SW5mbyB7XG4gIGVsSGVpZ2h0OiBudW1iZXI7XG5cbiAgc3BhY2VyRWw6IEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICBzcGFjZXJJZDogc3RyaW5nO1xuXG4gIGJvdW5kYXJ5Qm90dG9tOiBudW1iZXI7XG5cbiAgYm91bmRhcnlPZmZzZXQ6IFNreVZpZXdrZWVwZXJPZmZzZXQ7XG5cbiAgYm91bmRhcnlFbDogSFRNTEVsZW1lbnQ7XG5cbiAgc2Nyb2xsTGVmdDogbnVtYmVyO1xuXG4gIHNjcm9sbFRvcDogbnVtYmVyO1xufVxuIl19
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1maXhlZC1zdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWZpeGVkLXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyRml4ZWRTdHlsZXMge1xuICBlbEZpeGVkTGVmdDogbnVtYmVyO1xuXG4gIGVsRml4ZWRUb3A6IG51bWJlcjtcblxuICBlbEZpeGVkV2lkdGg6IG51bWJlcjtcblxuICBlbENsaXBMZWZ0OiBudW1iZXI7XG5cbiAgZWxDbGlwVG9wOiBudW1iZXI7XG59XG4iXX0=
|
@@ -1,10 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
export class SkyViewkeeperHostOptions {
|
4
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperHostOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
5
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperHostOptions }); }
|
6
|
-
}
|
7
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyViewkeeperHostOptions, decorators: [{
|
8
|
-
type: Injectable
|
9
|
-
}] });
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1ob3N0LW9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLWhvc3Qtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sd0JBQXdCOytHQUF4Qix3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEcEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5Vmlld2tlZXBlck9wdGlvbnMgfSBmcm9tICcuL3ZpZXdrZWVwZXItb3B0aW9ucyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lWaWV3a2VlcGVySG9zdE9wdGlvbnMgaW1wbGVtZW50cyBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIHB1YmxpYyBib3VuZGFyeUVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIGVsPzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNjcm9sbGFibGVIb3N0PzogSFRNTEVsZW1lbnQ7XG5cbiAgcHVibGljIHNldFdpZHRoPzogYm9vbGVhbjtcblxuICBwdWJsaWMgdmVydGljYWxPZmZzZXQ/OiBudW1iZXI7XG5cbiAgcHVibGljIHZlcnRpY2FsT2Zmc2V0RWw/OiBIVE1MRWxlbWVudDtcblxuICBwdWJsaWMgdmlld3BvcnRNYXJnaW5Ub3A/OiBudW1iZXI7XG59XG4iXX0=
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1vZmZzZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvdmlld2tlZXBlci92aWV3a2VlcGVyLW9mZnNldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyT2Zmc2V0IHtcbiAgdG9wOiBudW1iZXI7XG5cbiAgbGVmdDogbnVtYmVyO1xufVxuIl19
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlld2tlZXBlci1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL3ZpZXdrZWVwZXIvdmlld2tlZXBlci1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgdmlld2tlZXBlciBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTa3lWaWV3a2VlcGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGF0IGRlZmluZXMgdGhlIGJvdW5kcyBpbiB3aGljaCB0byBrZWVwIHRoZSBlbGVtZW50IGluIHZpZXcuIFdoZW4gdGhlXG4gICAqIGJvdW5kYXJ5IGVsZW1lbnQgaXMgc2Nyb2xsZWQgb3V0IG9mIHZpZXcsIHRoZSB2aWV3a2VlcGVyIGVsZW1lbnQgd2lsbCBiZSBzY3JvbGxlZFxuICAgKiBvdXQgb2Ygdmlldy5cbiAgICovXG4gIGJvdW5kYXJ5RWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQgdG8ga2VlcCBpbiB2aWV3LlxuICAgKi9cbiAgZWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIHNjcm9sbGFibGUgcGFyZW50IHdoZXJlIHRoZSB2aWV3a2VlcGVyIHJlc2lkZXMuIEl0IHNob3VsZCBsaXN0ZW4gdG8gYW5kIGJlXG4gICAqIHBvc2l0aW9uZWQgd2l0aGluIHRoZSBwYXJlbnQuXG4gICAqL1xuICBzY3JvbGxhYmxlSG9zdD86IEhUTUxFbGVtZW50O1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB3aWR0aCBvZiB0aGUgdmlld2tlZXBlciBlbGVtZW50IHRvIHRoZSB3aWR0aCBvZiBpdHNcbiAgICogaG9zdCBlbGVtZW50LiBPdGhlcndpc2UsIGlmIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgd2lkdGggc3BlY2lmaWVkLFxuICAgKiB0aGUgZWxlbWVudCB3b3VsZCBjb2xsYXBzZSBob3Jpem9udGFsbHkgYXMgYSByZXN1bHQgb2YgZml4aW5nIHRoZSBlbGVtZW50IHRvIHRoZSB0b3BcbiAgICogb2YgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgc2V0V2lkdGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZXNlcnZlZCBzcGFjZSBpbiBwaXhlbHMgYWJvdmUgdGhlIHZpZXdrZWVwZXIgZWxlbWVudC5cbiAgICovXG4gIHZlcnRpY2FsT2Zmc2V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB1bmRlciB3aGljaCB0aGUgdmlld2tlZXBlciBlbGVtZW50IHNob3VsZCBiZSBmaXhlZC4gVHlwaWNhbGx5IHRoaXMgaXNcbiAgICogYW5vdGhlciB2aWV3a2VlcGVyIGVsZW1lbnQgdGhhdCBpcyBhYm92ZSB0aGUgY3VycmVudCB2aWV3a2VlcGVyIGVsZW1lbnQgaW4gdGhlIHNhbWVcbiAgICogYm91bmRhcnkgZWxlbWVudC5cbiAgICovXG4gIHZlcnRpY2FsT2Zmc2V0RWw/OiBIVE1MRWxlbWVudDtcblxuICAvKipcbiAgICogUmVzZXJ2ZWQgc3BhY2UgaW4gcGl4ZWxzIGF0IHRoZSB0b3Agb2YgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgdmlld3BvcnRNYXJnaW5Ub3A/OiBudW1iZXI7XG59XG4iXX0=
|