@skyux/core 8.7.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
@@ -0,0 +1,79 @@
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
3
|
+
import { ReplaySubject } from 'rxjs';
|
4
|
+
import { SkyIdService } from '../id/id.service';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
/**
|
7
|
+
* Allows for announcing messages to screen reader users through the use of a common `aria-live` element.
|
8
|
+
* @internal
|
9
|
+
*/
|
10
|
+
export class SkyLiveAnnouncerService {
|
11
|
+
#announcerElement;
|
12
|
+
#document;
|
13
|
+
#idService;
|
14
|
+
constructor() {
|
15
|
+
this.announcerElementChanged = new ReplaySubject(1);
|
16
|
+
this.#document = inject(DOCUMENT);
|
17
|
+
this.#idService = inject(SkyIdService);
|
18
|
+
this.#announcerElement = this.#createLiveElement();
|
19
|
+
this.announcerElementChanged.next(this.#announcerElement);
|
20
|
+
}
|
21
|
+
/**
|
22
|
+
* Announces a message to screen readers.
|
23
|
+
* @param message Message to be announced to the screen reader.
|
24
|
+
* @param args Options for the announcement of the message.
|
25
|
+
*/
|
26
|
+
announce(message, args) {
|
27
|
+
/* safety-check */
|
28
|
+
/* istanbul ignore if */
|
29
|
+
if (!this.#announcerElement) {
|
30
|
+
this.#announcerElement = this.#createLiveElement();
|
31
|
+
this.announcerElementChanged.next(this.#announcerElement);
|
32
|
+
}
|
33
|
+
const politeness = args?.politeness ?? 'polite';
|
34
|
+
this.clear();
|
35
|
+
this.#announcerElement.setAttribute('aria-live', politeness);
|
36
|
+
this.#announcerElement.textContent = message;
|
37
|
+
}
|
38
|
+
/**
|
39
|
+
* Clears the current text from the announcer element. Can be used to prevent
|
40
|
+
* screen readers from reading the text out again while the user is going
|
41
|
+
* through the page landmarks.
|
42
|
+
*/
|
43
|
+
clear() {
|
44
|
+
if (this.#announcerElement) {
|
45
|
+
this.#announcerElement.textContent = '';
|
46
|
+
}
|
47
|
+
}
|
48
|
+
/**
|
49
|
+
* @internal
|
50
|
+
*/
|
51
|
+
ngOnDestroy() {
|
52
|
+
this.#announcerElement?.remove();
|
53
|
+
this.#announcerElement = undefined;
|
54
|
+
this.announcerElementChanged.next(undefined);
|
55
|
+
}
|
56
|
+
#createLiveElement() {
|
57
|
+
const elementClass = 'sky-live-announcer-element';
|
58
|
+
const previousElements = this.#document.getElementsByClassName(elementClass);
|
59
|
+
const liveEl = this.#document.createElement('div');
|
60
|
+
// Remove any old containers. This can happen when coming in from a server-side-rendered page.
|
61
|
+
for (let i = 0; i < previousElements.length; i++) {
|
62
|
+
previousElements[i].remove();
|
63
|
+
}
|
64
|
+
liveEl.classList.add(elementClass);
|
65
|
+
liveEl.classList.add('sky-screen-reader-only');
|
66
|
+
liveEl.setAttribute('aria-atomic', 'true');
|
67
|
+
liveEl.setAttribute('aria-live', 'polite');
|
68
|
+
liveEl.id = this.#idService.generateId();
|
69
|
+
this.#document.body.appendChild(liveEl);
|
70
|
+
return liveEl;
|
71
|
+
}
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLiveAnnouncerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
73
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLiveAnnouncerService, providedIn: 'root' }); }
|
74
|
+
}
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLiveAnnouncerService, decorators: [{
|
76
|
+
type: Injectable,
|
77
|
+
args: [{ providedIn: 'root' }]
|
78
|
+
}], ctorParameters: function () { return []; } });
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1hbm5vdW5jZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9saXZlLWFubm91bmNlci9saXZlLWFubm91bmNlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXJDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFJaEQ7OztHQUdHO0FBRUgsTUFBTSxPQUFPLHVCQUF1QjtJQUtsQyxpQkFBaUIsQ0FBMEI7SUFDM0MsU0FBUyxDQUFvQjtJQUM3QixVQUFVLENBQXdCO0lBRWxDO1FBUk8sNEJBQXVCLEdBQUcsSUFBSSxhQUFhLENBQ2hELENBQUMsQ0FDRixDQUFDO1FBR0YsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBR2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLE9BQWUsRUFBRSxJQUEyQjtRQUMxRCxrQkFBa0I7UUFDbEIsd0JBQXdCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDM0Q7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLEVBQUUsVUFBVSxJQUFJLFFBQVEsQ0FBQztRQUVoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFYixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUs7UUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztTQUN6QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sWUFBWSxHQUFHLDRCQUE0QixDQUFDO1FBQ2xELE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkQsOEZBQThGO1FBQzlGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDOUI7UUFFRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs4R0E3RVUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FEVixNQUFNOzsyRkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5SWRTZXJ2aWNlIH0gZnJvbSAnLi4vaWQvaWQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreUxpdmVBbm5vdW5jZXJBcmdzIH0gZnJvbSAnLi90eXBlcy9saXZlLWFubm91bmNlci1hcmdzJztcblxuLyoqXG4gKiBBbGxvd3MgZm9yIGFubm91bmNpbmcgbWVzc2FnZXMgdG8gc2NyZWVuIHJlYWRlciB1c2VycyB0aHJvdWdoIHRoZSB1c2Ugb2YgYSBjb21tb24gYGFyaWEtbGl2ZWAgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIGFubm91bmNlckVsZW1lbnRDaGFuZ2VkID0gbmV3IFJlcGxheVN1YmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+KFxuICAgIDFcbiAgKTtcblxuICAjYW5ub3VuY2VyRWxlbWVudDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICNkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICNpZFNlcnZpY2UgPSBpbmplY3QoU2t5SWRTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNhbm5vdW5jZXJFbGVtZW50ID0gdGhpcy4jY3JlYXRlTGl2ZUVsZW1lbnQoKTtcbiAgICB0aGlzLmFubm91bmNlckVsZW1lbnRDaGFuZ2VkLm5leHQodGhpcy4jYW5ub3VuY2VyRWxlbWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQW5ub3VuY2VzIGEgbWVzc2FnZSB0byBzY3JlZW4gcmVhZGVycy5cbiAgICogQHBhcmFtIG1lc3NhZ2UgTWVzc2FnZSB0byBiZSBhbm5vdW5jZWQgdG8gdGhlIHNjcmVlbiByZWFkZXIuXG4gICAqIEBwYXJhbSBhcmdzIE9wdGlvbnMgZm9yIHRoZSBhbm5vdW5jZW1lbnQgb2YgdGhlIG1lc3NhZ2UuXG4gICAqL1xuICBwdWJsaWMgYW5ub3VuY2UobWVzc2FnZTogc3RyaW5nLCBhcmdzPzogU2t5TGl2ZUFubm91bmNlckFyZ3MpOiB2b2lkIHtcbiAgICAvKiBzYWZldHktY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuI2Fubm91bmNlckVsZW1lbnQpIHtcbiAgICAgIHRoaXMuI2Fubm91bmNlckVsZW1lbnQgPSB0aGlzLiNjcmVhdGVMaXZlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hbm5vdW5jZXJFbGVtZW50Q2hhbmdlZC5uZXh0KHRoaXMuI2Fubm91bmNlckVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHBvbGl0ZW5lc3MgPSBhcmdzPy5wb2xpdGVuZXNzID8/ICdwb2xpdGUnO1xuXG4gICAgdGhpcy5jbGVhcigpO1xuXG4gICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScsIHBvbGl0ZW5lc3MpO1xuXG4gICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudC50ZXh0Q29udGVudCA9IG1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBjdXJyZW50IHRleHQgZnJvbSB0aGUgYW5ub3VuY2VyIGVsZW1lbnQuIENhbiBiZSB1c2VkIHRvIHByZXZlbnRcbiAgICogc2NyZWVuIHJlYWRlcnMgZnJvbSByZWFkaW5nIHRoZSB0ZXh0IG91dCBhZ2FpbiB3aGlsZSB0aGUgdXNlciBpcyBnb2luZ1xuICAgKiB0aHJvdWdoIHRoZSBwYWdlIGxhbmRtYXJrcy5cbiAgICovXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jYW5ub3VuY2VyRWxlbWVudCkge1xuICAgICAgdGhpcy4jYW5ub3VuY2VyRWxlbWVudC50ZXh0Q29udGVudCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNhbm5vdW5jZXJFbGVtZW50Py5yZW1vdmUoKTtcbiAgICB0aGlzLiNhbm5vdW5jZXJFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYW5ub3VuY2VyRWxlbWVudENoYW5nZWQubmV4dCh1bmRlZmluZWQpO1xuICB9XG5cbiAgI2NyZWF0ZUxpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBjb25zdCBlbGVtZW50Q2xhc3MgPSAnc2t5LWxpdmUtYW5ub3VuY2VyLWVsZW1lbnQnO1xuICAgIGNvbnN0IHByZXZpb3VzRWxlbWVudHMgPVxuICAgICAgdGhpcy4jZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlbGVtZW50Q2xhc3MpO1xuICAgIGNvbnN0IGxpdmVFbCA9IHRoaXMuI2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgLy8gUmVtb3ZlIGFueSBvbGQgY29udGFpbmVycy4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gY29taW5nIGluIGZyb20gYSBzZXJ2ZXItc2lkZS1yZW5kZXJlZCBwYWdlLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcHJldmlvdXNFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgcHJldmlvdXNFbGVtZW50c1tpXS5yZW1vdmUoKTtcbiAgICB9XG5cbiAgICBsaXZlRWwuY2xhc3NMaXN0LmFkZChlbGVtZW50Q2xhc3MpO1xuICAgIGxpdmVFbC5jbGFzc0xpc3QuYWRkKCdza3ktc2NyZWVuLXJlYWRlci1vbmx5Jyk7XG5cbiAgICBsaXZlRWwuc2V0QXR0cmlidXRlKCdhcmlhLWF0b21pYycsICd0cnVlJyk7XG4gICAgbGl2ZUVsLnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgJ3BvbGl0ZScpO1xuICAgIGxpdmVFbC5pZCA9IHRoaXMuI2lkU2VydmljZS5nZW5lcmF0ZUlkKCk7XG5cbiAgICB0aGlzLiNkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpdmVFbCk7XG5cbiAgICByZXR1cm4gbGl2ZUVsO1xuICB9XG59XG4iXX0=
|
@@ -5,12 +5,12 @@ import * as i0 from "@angular/core";
|
|
5
5
|
* The `SkyLogModule` can be removed from your project.
|
6
6
|
*/
|
7
7
|
export class SkyLogModule {
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyLogModule }); }
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLogModule }); }
|
8
11
|
}
|
9
|
-
|
10
|
-
SkyLogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule });
|
11
|
-
SkyLogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule });
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule, decorators: [{
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLogModule, decorators: [{
|
13
13
|
type: NgModule,
|
14
14
|
args: [{}]
|
15
15
|
}] });
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9sb2cvbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sWUFBWTs4R0FBWixZQUFZOytHQUFaLFlBQVk7K0dBQVosWUFBWTs7MkZBQVosWUFBWTtrQkFEeEIsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgYFNreUxvZ1NlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreUxvZ01vZHVsZWAuXG4gKiBUaGUgYFNreUxvZ01vZHVsZWAgY2FuIGJlIHJlbW92ZWQgZnJvbSB5b3VyIHByb2plY3QuXG4gKi9cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lMb2dNb2R1bGUge31cbiJdfQ==
|
@@ -0,0 +1,148 @@
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
2
|
+
import { SKY_LOG_LEVEL } from './types/log-level-token';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "../format/app-format";
|
5
|
+
const previousWarnings = new Set();
|
6
|
+
/**
|
7
|
+
* Logs information to the console based on the application's log level as
|
8
|
+
* provided by the `SKY_LOG_LEVEL` injection token. If no token is provided,
|
9
|
+
* only `error` logs will be shown.
|
10
|
+
* @internal
|
11
|
+
*/
|
12
|
+
export class SkyLogService {
|
13
|
+
#applicationLogLevel;
|
14
|
+
#formatter;
|
15
|
+
constructor(formatter, applicationLogLevel) {
|
16
|
+
this.#formatter = formatter;
|
17
|
+
this.#applicationLogLevel = applicationLogLevel ?? 3 /* SkyLogLevel.Error */;
|
18
|
+
}
|
19
|
+
/**
|
20
|
+
* Clears previously-logged messages. Primarily used for unit
|
21
|
+
* testing this service.
|
22
|
+
*/
|
23
|
+
static clearPreviousLogs() {
|
24
|
+
previousWarnings.clear();
|
25
|
+
}
|
26
|
+
/**
|
27
|
+
* Logs a deprecation warning for a class, property, function, etc. This will
|
28
|
+
* be logged as a console warning unless a different log level is given in the
|
29
|
+
* `args` parameter.
|
30
|
+
* @param name The name of the deprecated class, property, function, etc.
|
31
|
+
* @param args Information about the deprecation and replacement recommendations.
|
32
|
+
* @returns
|
33
|
+
*/
|
34
|
+
async deprecated(name, args) {
|
35
|
+
const logLevel = args?.logLevel ?? 2 /* SkyLogLevel.Warn */;
|
36
|
+
name = this.#convertStringToCode(name);
|
37
|
+
if (this.#canLog(logLevel)) {
|
38
|
+
const messageParts = [];
|
39
|
+
if (args?.deprecationMajorVersion) {
|
40
|
+
messageParts.push(this.#formatter.formatText('{0} is deprecated starting in SKY UX {1}.', name, args.deprecationMajorVersion.toLocaleString()));
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
messageParts.push(this.#formatter.formatText('{0} is deprecated.', name));
|
44
|
+
}
|
45
|
+
if (args?.removalMajorVersion) {
|
46
|
+
messageParts.push(this.#formatter.formatText('We will remove it in version {0}.', args.removalMajorVersion.toLocaleString()));
|
47
|
+
}
|
48
|
+
else {
|
49
|
+
messageParts.push('We will remove it in a future major version.');
|
50
|
+
}
|
51
|
+
if (args?.replacementRecommendation) {
|
52
|
+
messageParts.push(args.replacementRecommendation);
|
53
|
+
}
|
54
|
+
if (args?.moreInfoUrl) {
|
55
|
+
messageParts.push(this.#formatter.formatText('For more information, see {0}.', args.moreInfoUrl));
|
56
|
+
}
|
57
|
+
this.#logBasedOnLevel(logLevel, messageParts.join(' '));
|
58
|
+
}
|
59
|
+
return Promise.resolve();
|
60
|
+
}
|
61
|
+
/**
|
62
|
+
* Logs a console error if the application's log level is `SkyLogLevel.Error`.
|
63
|
+
* @param message The error message
|
64
|
+
* @param params Optional parameters for the error message.
|
65
|
+
*/
|
66
|
+
error(message, params) {
|
67
|
+
if (this.#canLog(3 /* SkyLogLevel.Error */)) {
|
68
|
+
this.#logWithParams('error', message, params);
|
69
|
+
}
|
70
|
+
}
|
71
|
+
/**
|
72
|
+
* Logs console information if the application's log level is `SkyLogLevel.Info` or above.
|
73
|
+
* @param message The informational message
|
74
|
+
* @param params Optional parameters for the informational message.
|
75
|
+
*/
|
76
|
+
info(message, params) {
|
77
|
+
if (this.#canLog(1 /* SkyLogLevel.Info */)) {
|
78
|
+
this.#logWithParams('log', message, params);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
/**
|
82
|
+
* Logs a console warning if the application's log level is `SkyLogLevel.Warn` or above.
|
83
|
+
* @param message The warning message
|
84
|
+
* @param params Optional parameters for the warning message.
|
85
|
+
*/
|
86
|
+
warn(message, params) {
|
87
|
+
if (this.#canLog(2 /* SkyLogLevel.Warn */)) {
|
88
|
+
const messageKey = this.#buildMessageKey(message, params);
|
89
|
+
// Only log each warning once per application instance to avoid drowning out other
|
90
|
+
// important messages in the console.
|
91
|
+
if (!previousWarnings.has(message)) {
|
92
|
+
this.#logWithParams('warn', message, params);
|
93
|
+
previousWarnings.add(messageKey);
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
#convertStringToCode(typeString) {
|
98
|
+
if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {
|
99
|
+
typeString = '`' + typeString + '`';
|
100
|
+
}
|
101
|
+
return typeString;
|
102
|
+
}
|
103
|
+
#canLog(intendedLogLevel) {
|
104
|
+
return intendedLogLevel >= this.#applicationLogLevel;
|
105
|
+
}
|
106
|
+
#logBasedOnLevel(logLevel, message, params) {
|
107
|
+
switch (logLevel) {
|
108
|
+
case 1 /* SkyLogLevel.Info */:
|
109
|
+
this.info(message, params);
|
110
|
+
break;
|
111
|
+
case 2 /* SkyLogLevel.Warn */:
|
112
|
+
this.warn(message, params);
|
113
|
+
break;
|
114
|
+
case 3 /* SkyLogLevel.Error */:
|
115
|
+
this.error(message, params);
|
116
|
+
break;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
#logWithParams(logMethod, message, params) {
|
120
|
+
if (params) {
|
121
|
+
console[logMethod](message, ...params);
|
122
|
+
}
|
123
|
+
else {
|
124
|
+
console[logMethod](message);
|
125
|
+
}
|
126
|
+
}
|
127
|
+
#buildMessageKey(message, params) {
|
128
|
+
let key = message;
|
129
|
+
if (params?.length) {
|
130
|
+
key = `${key} ${params.join(' ')}`;
|
131
|
+
}
|
132
|
+
return key;
|
133
|
+
}
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLogService, deps: [{ token: i1.SkyAppFormat }, { token: SKY_LOG_LEVEL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
135
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLogService, providedIn: 'root' }); }
|
136
|
+
}
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyLogService, decorators: [{
|
138
|
+
type: Injectable,
|
139
|
+
args: [{
|
140
|
+
providedIn: 'root',
|
141
|
+
}]
|
142
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAppFormat }, { type: undefined, decorators: [{
|
143
|
+
type: Optional
|
144
|
+
}, {
|
145
|
+
type: Inject,
|
146
|
+
args: [SKY_LOG_LEVEL]
|
147
|
+
}] }]; } });
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbG9nL2xvZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU03RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUV4RCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7QUFFM0M7Ozs7O0dBS0c7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixvQkFBb0IsQ0FBYztJQUVsQyxVQUFVLENBQWU7SUFFekIsWUFDRSxTQUF1QixFQUd2QixtQkFBaUM7UUFFakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQiw2QkFBcUIsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLGlCQUFpQjtRQUM3QixnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQ3JCLElBQVksRUFDWixJQUEyQjtRQUUzQixNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsUUFBUSw0QkFBb0IsQ0FBQztRQUNwRCxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFFeEIsSUFBSSxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQ2pDLFlBQVksQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3hCLDJDQUEyQyxFQUMzQyxJQUFJLEVBQ0osSUFBSSxDQUFDLHVCQUF1QixDQUFDLGNBQWMsRUFBRSxDQUM5QyxDQUNGLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxZQUFZLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUN2RCxDQUFDO2FBQ0g7WUFFRCxJQUFJLElBQUksRUFBRSxtQkFBbUIsRUFBRTtnQkFDN0IsWUFBWSxDQUFDLElBQUksQ0FDZixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FDeEIsbUNBQW1DLEVBQ25DLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLEVBQUUsQ0FDMUMsQ0FDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsWUFBWSxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO2FBQ25FO1lBRUQsSUFBSSxJQUFJLEVBQUUseUJBQXlCLEVBQUU7Z0JBQ25DLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFDbkQ7WUFFRCxJQUFJLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQ3JCLFlBQVksQ0FBQyxJQUFJLENBQ2YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3hCLGdDQUFnQyxFQUNoQyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUNGLENBQUM7YUFDSDtZQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO1FBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsT0FBZSxFQUFFLE1BQWtCO1FBQzlDLElBQUksSUFBSSxDQUFDLE9BQU8sMkJBQW1CLEVBQUU7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxJQUFJLENBQUMsT0FBZSxFQUFFLE1BQWtCO1FBQzdDLElBQUksSUFBSSxDQUFDLE9BQU8sMEJBQWtCLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxJQUFJLENBQUMsT0FBZSxFQUFFLE1BQWtCO1FBQzdDLElBQUksSUFBSSxDQUFDLE9BQU8sMEJBQWtCLEVBQUU7WUFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUUxRCxrRkFBa0Y7WUFDbEYscUNBQXFDO1lBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDN0MsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsVUFBa0I7UUFDckMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO1lBQ2pFLFVBQVUsR0FBRyxHQUFHLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQztTQUNyQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLENBQUMsZ0JBQTZCO1FBQ25DLE9BQU8sZ0JBQWdCLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3ZELENBQUM7SUFFRCxnQkFBZ0IsQ0FDZCxRQUFxQixFQUNyQixPQUFlLEVBQ2YsTUFBa0I7UUFFbEIsUUFBUSxRQUFRLEVBQUU7WUFDaEI7Z0JBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDUjtnQkFDRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUNaLFNBQW1DLEVBQ25DLE9BQWUsRUFDZixNQUE2QjtRQUU3QixJQUFJLE1BQU0sRUFBRTtZQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztTQUN4QzthQUFNO1lBQ0wsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWUsRUFBRSxNQUFrQjtRQUNsRCxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUM7UUFFbEIsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFO1lBQ2xCLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7U0FDcEM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7OEdBN0tVLGFBQWEsOENBUWQsYUFBYTtrSEFSWixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFJLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2t5QXBwRm9ybWF0IH0gZnJvbSAnLi4vZm9ybWF0L2FwcC1mb3JtYXQnO1xuXG5pbXBvcnQgeyBTa3lMb2dEZXByZWNhdGVkQXJncyB9IGZyb20gJy4vdHlwZXMvbG9nLWRlcHJlY2F0aW9uLWFyZ3MnO1xuaW1wb3J0IHsgU2t5TG9nTGV2ZWwgfSBmcm9tICcuL3R5cGVzL2xvZy1sZXZlbCc7XG5pbXBvcnQgeyBTS1lfTE9HX0xFVkVMIH0gZnJvbSAnLi90eXBlcy9sb2ctbGV2ZWwtdG9rZW4nO1xuXG5jb25zdCBwcmV2aW91c1dhcm5pbmdzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbi8qKlxuICogTG9ncyBpbmZvcm1hdGlvbiB0byB0aGUgY29uc29sZSBiYXNlZCBvbiB0aGUgYXBwbGljYXRpb24ncyBsb2cgbGV2ZWwgYXNcbiAqIHByb3ZpZGVkIGJ5IHRoZSBgU0tZX0xPR19MRVZFTGAgaW5qZWN0aW9uIHRva2VuLiBJZiBubyB0b2tlbiBpcyBwcm92aWRlZCxcbiAqIG9ubHkgYGVycm9yYCBsb2dzIHdpbGwgYmUgc2hvd24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreUxvZ1NlcnZpY2Uge1xuICAjYXBwbGljYXRpb25Mb2dMZXZlbDogU2t5TG9nTGV2ZWw7XG5cbiAgI2Zvcm1hdHRlcjogU2t5QXBwRm9ybWF0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZvcm1hdHRlcjogU2t5QXBwRm9ybWF0LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChTS1lfTE9HX0xFVkVMKVxuICAgIGFwcGxpY2F0aW9uTG9nTGV2ZWw/OiBTa3lMb2dMZXZlbFxuICApIHtcbiAgICB0aGlzLiNmb3JtYXR0ZXIgPSBmb3JtYXR0ZXI7XG4gICAgdGhpcy4jYXBwbGljYXRpb25Mb2dMZXZlbCA9IGFwcGxpY2F0aW9uTG9nTGV2ZWwgPz8gU2t5TG9nTGV2ZWwuRXJyb3I7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHByZXZpb3VzbHktbG9nZ2VkIG1lc3NhZ2VzLiBQcmltYXJpbHkgdXNlZCBmb3IgdW5pdFxuICAgKiB0ZXN0aW5nIHRoaXMgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2xlYXJQcmV2aW91c0xvZ3MoKTogdm9pZCB7XG4gICAgcHJldmlvdXNXYXJuaW5ncy5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBhIGNsYXNzLCBwcm9wZXJ0eSwgZnVuY3Rpb24sIGV0Yy4gVGhpcyB3aWxsXG4gICAqIGJlIGxvZ2dlZCBhcyBhIGNvbnNvbGUgd2FybmluZyB1bmxlc3MgYSBkaWZmZXJlbnQgbG9nIGxldmVsIGlzIGdpdmVuIGluIHRoZVxuICAgKiBgYXJnc2AgcGFyYW1ldGVyLlxuICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVwcmVjYXRlZCBjbGFzcywgcHJvcGVydHksIGZ1bmN0aW9uLCBldGMuXG4gICAqIEBwYXJhbSBhcmdzIEluZm9ybWF0aW9uIGFib3V0IHRoZSBkZXByZWNhdGlvbiBhbmQgcmVwbGFjZW1lbnQgcmVjb21tZW5kYXRpb25zLlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGRlcHJlY2F0ZWQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGFyZ3M/OiBTa3lMb2dEZXByZWNhdGVkQXJnc1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dMZXZlbCA9IGFyZ3M/LmxvZ0xldmVsID8/IFNreUxvZ0xldmVsLldhcm47XG4gICAgbmFtZSA9IHRoaXMuI2NvbnZlcnRTdHJpbmdUb0NvZGUobmFtZSk7XG5cbiAgICBpZiAodGhpcy4jY2FuTG9nKGxvZ0xldmVsKSkge1xuICAgICAgY29uc3QgbWVzc2FnZVBhcnRzID0gW107XG5cbiAgICAgIGlmIChhcmdzPy5kZXByZWNhdGlvbk1ham9yVmVyc2lvbikge1xuICAgICAgICBtZXNzYWdlUGFydHMucHVzaChcbiAgICAgICAgICB0aGlzLiNmb3JtYXR0ZXIuZm9ybWF0VGV4dChcbiAgICAgICAgICAgICd7MH0gaXMgZGVwcmVjYXRlZCBzdGFydGluZyBpbiBTS1kgVVggezF9LicsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgYXJncy5kZXByZWNhdGlvbk1ham9yVmVyc2lvbi50b0xvY2FsZVN0cmluZygpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goXG4gICAgICAgICAgdGhpcy4jZm9ybWF0dGVyLmZvcm1hdFRleHQoJ3swfSBpcyBkZXByZWNhdGVkLicsIG5hbWUpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhcmdzPy5yZW1vdmFsTWFqb3JWZXJzaW9uKSB7XG4gICAgICAgIG1lc3NhZ2VQYXJ0cy5wdXNoKFxuICAgICAgICAgIHRoaXMuI2Zvcm1hdHRlci5mb3JtYXRUZXh0KFxuICAgICAgICAgICAgJ1dlIHdpbGwgcmVtb3ZlIGl0IGluIHZlcnNpb24gezB9LicsXG4gICAgICAgICAgICBhcmdzLnJlbW92YWxNYWpvclZlcnNpb24udG9Mb2NhbGVTdHJpbmcoKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2VQYXJ0cy5wdXNoKCdXZSB3aWxsIHJlbW92ZSBpdCBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXJncz8ucmVwbGFjZW1lbnRSZWNvbW1lbmRhdGlvbikge1xuICAgICAgICBtZXNzYWdlUGFydHMucHVzaChhcmdzLnJlcGxhY2VtZW50UmVjb21tZW5kYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXJncz8ubW9yZUluZm9VcmwpIHtcbiAgICAgICAgbWVzc2FnZVBhcnRzLnB1c2goXG4gICAgICAgICAgdGhpcy4jZm9ybWF0dGVyLmZvcm1hdFRleHQoXG4gICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB7MH0uJyxcbiAgICAgICAgICAgIGFyZ3MubW9yZUluZm9VcmxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI2xvZ0Jhc2VkT25MZXZlbChsb2dMZXZlbCwgbWVzc2FnZVBhcnRzLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dzIGEgY29uc29sZSBlcnJvciBpZiB0aGUgYXBwbGljYXRpb24ncyBsb2cgbGV2ZWwgaXMgYFNreUxvZ0xldmVsLkVycm9yYC5cbiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIGVycm9yIG1lc3NhZ2VcbiAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNjYW5Mb2coU2t5TG9nTGV2ZWwuRXJyb3IpKSB7XG4gICAgICB0aGlzLiNsb2dXaXRoUGFyYW1zKCdlcnJvcicsIG1lc3NhZ2UsIHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIExvZ3MgY29uc29sZSBpbmZvcm1hdGlvbiBpZiB0aGUgYXBwbGljYXRpb24ncyBsb2cgbGV2ZWwgaXMgYFNreUxvZ0xldmVsLkluZm9gIG9yIGFib3ZlLlxuICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgaW5mb3JtYXRpb25hbCBtZXNzYWdlXG4gICAqIEBwYXJhbSBwYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIGluZm9ybWF0aW9uYWwgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBpbmZvKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2NhbkxvZyhTa3lMb2dMZXZlbC5JbmZvKSkge1xuICAgICAgdGhpcy4jbG9nV2l0aFBhcmFtcygnbG9nJywgbWVzc2FnZSwgcGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9ncyBhIGNvbnNvbGUgd2FybmluZyBpZiB0aGUgYXBwbGljYXRpb24ncyBsb2cgbGV2ZWwgaXMgYFNreUxvZ0xldmVsLldhcm5gIG9yIGFib3ZlLlxuICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlXG4gICAqIEBwYXJhbSBwYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIHdhcm5pbmcgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyB3YXJuKG1lc3NhZ2U6IHN0cmluZywgcGFyYW1zPzogdW5rbm93bltdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2NhbkxvZyhTa3lMb2dMZXZlbC5XYXJuKSkge1xuICAgICAgY29uc3QgbWVzc2FnZUtleSA9IHRoaXMuI2J1aWxkTWVzc2FnZUtleShtZXNzYWdlLCBwYXJhbXMpO1xuXG4gICAgICAvLyBPbmx5IGxvZyBlYWNoIHdhcm5pbmcgb25jZSBwZXIgYXBwbGljYXRpb24gaW5zdGFuY2UgdG8gYXZvaWQgZHJvd25pbmcgb3V0IG90aGVyXG4gICAgICAvLyBpbXBvcnRhbnQgbWVzc2FnZXMgaW4gdGhlIGNvbnNvbGUuXG4gICAgICBpZiAoIXByZXZpb3VzV2FybmluZ3MuaGFzKG1lc3NhZ2UpKSB7XG4gICAgICAgIHRoaXMuI2xvZ1dpdGhQYXJhbXMoJ3dhcm4nLCBtZXNzYWdlLCBwYXJhbXMpO1xuICAgICAgICBwcmV2aW91c1dhcm5pbmdzLmFkZChtZXNzYWdlS2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjY29udmVydFN0cmluZ1RvQ29kZSh0eXBlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlU3RyaW5nLmNoYXJBdCgwKSAhPT0gJ2AnICYmIHR5cGVTdHJpbmcuY2hhckF0KC0xKSAhPT0gJ2AnKSB7XG4gICAgICB0eXBlU3RyaW5nID0gJ2AnICsgdHlwZVN0cmluZyArICdgJztcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVTdHJpbmc7XG4gIH1cblxuICAjY2FuTG9nKGludGVuZGVkTG9nTGV2ZWw6IFNreUxvZ0xldmVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGludGVuZGVkTG9nTGV2ZWwgPj0gdGhpcy4jYXBwbGljYXRpb25Mb2dMZXZlbDtcbiAgfVxuXG4gICNsb2dCYXNlZE9uTGV2ZWwoXG4gICAgbG9nTGV2ZWw6IFNreUxvZ0xldmVsLFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBwYXJhbXM/OiB1bmtub3duW11cbiAgKTogdm9pZCB7XG4gICAgc3dpdGNoIChsb2dMZXZlbCkge1xuICAgICAgY2FzZSBTa3lMb2dMZXZlbC5JbmZvOlxuICAgICAgICB0aGlzLmluZm8obWVzc2FnZSwgcGFyYW1zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNreUxvZ0xldmVsLldhcm46XG4gICAgICAgIHRoaXMud2FybihtZXNzYWdlLCBwYXJhbXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU2t5TG9nTGV2ZWwuRXJyb3I6XG4gICAgICAgIHRoaXMuZXJyb3IobWVzc2FnZSwgcGFyYW1zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgI2xvZ1dpdGhQYXJhbXMoXG4gICAgbG9nTWV0aG9kOiAnbG9nJyB8ICd3YXJuJyB8ICdlcnJvcicsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHBhcmFtczogdW5rbm93bltdIHwgdW5kZWZpbmVkXG4gICk6IHZvaWQge1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIGNvbnNvbGVbbG9nTWV0aG9kXShtZXNzYWdlLCAuLi5wYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlW2xvZ01ldGhvZF0obWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgI2J1aWxkTWVzc2FnZUtleShtZXNzYWdlOiBzdHJpbmcsIHBhcmFtcz86IHVua25vd25bXSk6IHN0cmluZyB7XG4gICAgbGV0IGtleSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAocGFyYW1zPy5sZW5ndGgpIHtcbiAgICAgIGtleSA9IGAke2tleX0gJHtwYXJhbXMuam9pbignICcpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbiAgfVxufVxuIl19
|
@@ -5,12 +5,12 @@ import * as i0 from "@angular/core";
|
|
5
5
|
* The `SkyMediaQueryModule` can be removed from your project.
|
6
6
|
*/
|
7
7
|
export class SkyMediaQueryModule {
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
9
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryModule }); }
|
10
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryModule }); }
|
8
11
|
}
|
9
|
-
|
10
|
-
SkyMediaQueryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule });
|
11
|
-
SkyMediaQueryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule });
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule, decorators: [{
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryModule, decorators: [{
|
13
13
|
type: NgModule,
|
14
14
|
args: [{}]
|
15
15
|
}] });
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL21lZGlhLXF1ZXJ5L21lZGlhLXF1ZXJ5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQjsrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixRQUFRO21CQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoZSBgU2t5TWVkaWFRdWVyeVNlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreU1lZGlhUXVlcnlNb2R1bGVgLlxuICogVGhlIGBTa3lNZWRpYVF1ZXJ5TW9kdWxlYCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHlvdXIgcHJvamVjdC5cbiAqL1xuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIFNreU1lZGlhUXVlcnlNb2R1bGUge31cbiJdfQ==
|
@@ -0,0 +1,123 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
3
|
+
import { SkyMediaBreakpoints } from './media-breakpoints';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
const DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;
|
6
|
+
export class SkyMediaQueryService {
|
7
|
+
/**
|
8
|
+
* The size for the `xs` breakpoint.
|
9
|
+
* @default "(max-width: 767px)"
|
10
|
+
*/
|
11
|
+
static { this.xs = '(max-width: 767px)'; }
|
12
|
+
/**
|
13
|
+
* The size for the `sm` breakpoint.
|
14
|
+
* @default "(min-width: 768px) and (max-width: 991px)"
|
15
|
+
*/
|
16
|
+
static { this.sm = '(min-width: 768px) and (max-width: 991px)'; }
|
17
|
+
/**
|
18
|
+
* The size for the `md` breakpoint.
|
19
|
+
* @default "(min-width: 992px) and (max-width: 1199px)"
|
20
|
+
*/
|
21
|
+
static { this.md = '(min-width: 992px) and (max-width: 1199px)'; }
|
22
|
+
/**
|
23
|
+
* The size for the `lg` breakpoint.
|
24
|
+
* @default "(min-width: 1200px)"
|
25
|
+
*/
|
26
|
+
static { this.lg = '(min-width: 1200px)'; }
|
27
|
+
/**
|
28
|
+
* Returns the current breakpoint.
|
29
|
+
*/
|
30
|
+
get current() {
|
31
|
+
return this.#currentBreakpoint;
|
32
|
+
}
|
33
|
+
#currentSubject = new BehaviorSubject(DEFAULT_BREAKPOINT);
|
34
|
+
#currentBreakpoint = DEFAULT_BREAKPOINT;
|
35
|
+
#breakpoints = [
|
36
|
+
{
|
37
|
+
mediaQueryString: SkyMediaQueryService.xs,
|
38
|
+
name: SkyMediaBreakpoints.xs,
|
39
|
+
},
|
40
|
+
{
|
41
|
+
mediaQueryString: SkyMediaQueryService.sm,
|
42
|
+
name: SkyMediaBreakpoints.sm,
|
43
|
+
},
|
44
|
+
{
|
45
|
+
mediaQueryString: SkyMediaQueryService.md,
|
46
|
+
name: SkyMediaBreakpoints.md,
|
47
|
+
},
|
48
|
+
{
|
49
|
+
mediaQueryString: SkyMediaQueryService.lg,
|
50
|
+
name: SkyMediaBreakpoints.lg,
|
51
|
+
},
|
52
|
+
];
|
53
|
+
#mediaQueries = [];
|
54
|
+
#zone;
|
55
|
+
constructor(zone) {
|
56
|
+
this.#zone = zone;
|
57
|
+
this.#addListeners();
|
58
|
+
}
|
59
|
+
ngOnDestroy() {
|
60
|
+
this.#removeListeners();
|
61
|
+
this.#currentSubject.complete();
|
62
|
+
}
|
63
|
+
/**
|
64
|
+
* Subscribes to screen size changes.
|
65
|
+
* @param listener Specifies a function that is called when breakpoints change.
|
66
|
+
*/
|
67
|
+
subscribe(listener) {
|
68
|
+
return this.#currentSubject.subscribe({
|
69
|
+
next: (breakpoints) => {
|
70
|
+
listener(breakpoints);
|
71
|
+
},
|
72
|
+
});
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* @internal
|
76
|
+
*/
|
77
|
+
destroy() {
|
78
|
+
this.#removeListeners();
|
79
|
+
this.#currentSubject.complete();
|
80
|
+
}
|
81
|
+
#addListeners() {
|
82
|
+
this.#mediaQueries = this.#breakpoints.map((breakpoint) => {
|
83
|
+
const mq = matchMedia(breakpoint.mediaQueryString);
|
84
|
+
const listener = (event) => {
|
85
|
+
// Run the check outside of Angular's change detection since Angular
|
86
|
+
// does not wrap matchMedia listeners in NgZone.
|
87
|
+
// See: https://blog.assaf.co/angular-2-change-detection-zones-and-an-example/
|
88
|
+
this.#zone.run(() => {
|
89
|
+
if (event.matches) {
|
90
|
+
this.#notifyBreakpointChange(breakpoint.name);
|
91
|
+
}
|
92
|
+
});
|
93
|
+
};
|
94
|
+
mq.addListener(listener);
|
95
|
+
if (mq.matches) {
|
96
|
+
this.#notifyBreakpointChange(breakpoint.name);
|
97
|
+
}
|
98
|
+
return {
|
99
|
+
mediaQueryList: mq,
|
100
|
+
listener,
|
101
|
+
};
|
102
|
+
});
|
103
|
+
}
|
104
|
+
#removeListeners() {
|
105
|
+
this.#mediaQueries.forEach((mediaQuery) => {
|
106
|
+
mediaQuery.mediaQueryList.removeListener(mediaQuery.listener);
|
107
|
+
});
|
108
|
+
this.#mediaQueries = [];
|
109
|
+
}
|
110
|
+
#notifyBreakpointChange(breakpoint) {
|
111
|
+
this.#currentBreakpoint = breakpoint;
|
112
|
+
this.#currentSubject.next(breakpoint);
|
113
|
+
}
|
114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
115
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryService, providedIn: 'root' }); }
|
116
|
+
}
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMediaQueryService, decorators: [{
|
118
|
+
type: Injectable,
|
119
|
+
args: [{
|
120
|
+
providedIn: 'root',
|
121
|
+
}]
|
122
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tZWRpYS1xdWVyeS9tZWRpYS1xdWVyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUcxRCxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztBQUtsRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9COzs7T0FHRzthQUNXLE9BQUUsR0FBRyxvQkFBb0IsQUFBdkIsQ0FBd0I7SUFFeEM7OztPQUdHO2FBQ1csT0FBRSxHQUFHLDJDQUEyQyxBQUE5QyxDQUErQztJQUUvRDs7O09BR0c7YUFDVyxPQUFFLEdBQUcsNENBQTRDLEFBQS9DLENBQWdEO0lBRWhFOzs7T0FHRzthQUNXLE9BQUUsR0FBRyxxQkFBcUIsQUFBeEIsQ0FBeUI7SUFFekM7O09BRUc7SUFDSCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztJQUVELGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FDbkMsa0JBQWtCLENBQ25CLENBQUM7SUFFRixrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztJQUV4QyxZQUFZLEdBR047UUFDSjtZQUNFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7WUFDekMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7U0FDN0I7UUFDRDtZQUNFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7WUFDekMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7U0FDN0I7UUFDRDtZQUNFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7WUFDekMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7U0FDN0I7UUFDRDtZQUNFLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7WUFDekMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLEVBQUU7U0FDN0I7S0FDRixDQUFDO0lBRUYsYUFBYSxHQUdQLEVBQUUsQ0FBQztJQUVULEtBQUssQ0FBUztJQUVkLFlBQVksSUFBWTtRQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLFFBQStCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUM7WUFDcEMsSUFBSSxFQUFFLENBQUMsV0FBZ0MsRUFBRSxFQUFFO2dCQUN6QyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3hELE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUVuRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQTBCLEVBQUUsRUFBRTtnQkFDOUMsb0VBQW9FO2dCQUNwRSxnREFBZ0Q7Z0JBQ2hELDhFQUE4RTtnQkFDOUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNsQixJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUU7d0JBQ2pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQy9DO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBRUYsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QixJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMvQztZQUVELE9BQU87Z0JBQ0wsY0FBYyxFQUFFLEVBQUU7Z0JBQ2xCLFFBQVE7YUFDVCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QyxVQUFVLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsVUFBK0I7UUFDckQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztRQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQXZJVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5TWVkaWFCcmVha3BvaW50cyB9IGZyb20gJy4vbWVkaWEtYnJlYWtwb2ludHMnO1xuaW1wb3J0IHsgU2t5TWVkaWFRdWVyeUxpc3RlbmVyIH0gZnJvbSAnLi9tZWRpYS1xdWVyeS1saXN0ZW5lcic7XG5cbmNvbnN0IERFRkFVTFRfQlJFQUtQT0lOVCA9IFNreU1lZGlhQnJlYWtwb2ludHMubWQ7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lNZWRpYVF1ZXJ5U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBmb3IgdGhlIGB4c2AgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgXCIobWF4LXdpZHRoOiA3NjdweClcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB4cyA9ICcobWF4LXdpZHRoOiA3NjdweCknO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBmb3IgdGhlIGBzbWAgYnJlYWtwb2ludC5cbiAgICogQGRlZmF1bHQgXCIobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MXB4KVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNtID0gJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpJztcblxuICAvKipcbiAgICogVGhlIHNpemUgZm9yIHRoZSBgbWRgIGJyZWFrcG9pbnQuXG4gICAqIEBkZWZhdWx0IFwiKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpXCJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWQgPSAnKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpJztcblxuICAvKipcbiAgICogVGhlIHNpemUgZm9yIHRoZSBgbGdgIGJyZWFrcG9pbnQuXG4gICAqIEBkZWZhdWx0IFwiKG1pbi13aWR0aDogMTIwMHB4KVwiXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxnID0gJyhtaW4td2lkdGg6IDEyMDBweCknO1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGN1cnJlbnQoKTogU2t5TWVkaWFCcmVha3BvaW50cyB7XG4gICAgcmV0dXJuIHRoaXMuI2N1cnJlbnRCcmVha3BvaW50O1xuICB9XG5cbiAgI2N1cnJlbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTa3lNZWRpYUJyZWFrcG9pbnRzPihcbiAgICBERUZBVUxUX0JSRUFLUE9JTlRcbiAgKTtcblxuICAjY3VycmVudEJyZWFrcG9pbnQgPSBERUZBVUxUX0JSRUFLUE9JTlQ7XG5cbiAgI2JyZWFrcG9pbnRzOiB7XG4gICAgbWVkaWFRdWVyeVN0cmluZzogc3RyaW5nO1xuICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHM7XG4gIH1bXSA9IFtcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS54cyxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMueHMsXG4gICAgfSxcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS5zbSxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMuc20sXG4gICAgfSxcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS5tZCxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMubWQsXG4gICAgfSxcbiAgICB7XG4gICAgICBtZWRpYVF1ZXJ5U3RyaW5nOiBTa3lNZWRpYVF1ZXJ5U2VydmljZS5sZyxcbiAgICAgIG5hbWU6IFNreU1lZGlhQnJlYWtwb2ludHMubGcsXG4gICAgfSxcbiAgXTtcblxuICAjbWVkaWFRdWVyaWVzOiB7XG4gICAgbWVkaWFRdWVyeUxpc3Q6IE1lZGlhUXVlcnlMaXN0O1xuICAgIGxpc3RlbmVyOiAoZXZlbnQ6IGFueSkgPT4gdm9pZDtcbiAgfVtdID0gW107XG5cbiAgI3pvbmU6IE5nWm9uZTtcblxuICBjb25zdHJ1Y3Rvcih6b25lOiBOZ1pvbmUpIHtcbiAgICB0aGlzLiN6b25lID0gem9uZTtcbiAgICB0aGlzLiNhZGRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLiNjdXJyZW50U3ViamVjdC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gc2NyZWVuIHNpemUgY2hhbmdlcy5cbiAgICogQHBhcmFtIGxpc3RlbmVyIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gYnJlYWtwb2ludHMgY2hhbmdlLlxuICAgKi9cbiAgcHVibGljIHN1YnNjcmliZShsaXN0ZW5lcjogU2t5TWVkaWFRdWVyeUxpc3RlbmVyKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy4jY3VycmVudFN1YmplY3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChicmVha3BvaW50czogU2t5TWVkaWFCcmVha3BvaW50cykgPT4ge1xuICAgICAgICBsaXN0ZW5lcihicmVha3BvaW50cyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlTGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jY3VycmVudFN1YmplY3QuY29tcGxldGUoKTtcbiAgfVxuXG4gICNhZGRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jbWVkaWFRdWVyaWVzID0gdGhpcy4jYnJlYWtwb2ludHMubWFwKChicmVha3BvaW50KSA9PiB7XG4gICAgICBjb25zdCBtcSA9IG1hdGNoTWVkaWEoYnJlYWtwb2ludC5tZWRpYVF1ZXJ5U3RyaW5nKTtcblxuICAgICAgY29uc3QgbGlzdGVuZXIgPSAoZXZlbnQ6IE1lZGlhUXVlcnlMaXN0RXZlbnQpID0+IHtcbiAgICAgICAgLy8gUnVuIHRoZSBjaGVjayBvdXRzaWRlIG9mIEFuZ3VsYXIncyBjaGFuZ2UgZGV0ZWN0aW9uIHNpbmNlIEFuZ3VsYXJcbiAgICAgICAgLy8gZG9lcyBub3Qgd3JhcCBtYXRjaE1lZGlhIGxpc3RlbmVycyBpbiBOZ1pvbmUuXG4gICAgICAgIC8vIFNlZTogaHR0cHM6Ly9ibG9nLmFzc2FmLmNvL2FuZ3VsYXItMi1jaGFuZ2UtZGV0ZWN0aW9uLXpvbmVzLWFuZC1hbi1leGFtcGxlL1xuICAgICAgICB0aGlzLiN6b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50Lm1hdGNoZXMpIHtcbiAgICAgICAgICAgIHRoaXMuI25vdGlmeUJyZWFrcG9pbnRDaGFuZ2UoYnJlYWtwb2ludC5uYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgbXEuYWRkTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gICAgICBpZiAobXEubWF0Y2hlcykge1xuICAgICAgICB0aGlzLiNub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQubmFtZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1lZGlhUXVlcnlMaXN0OiBtcSxcbiAgICAgICAgbGlzdGVuZXIsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgI3JlbW92ZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNtZWRpYVF1ZXJpZXMuZm9yRWFjaCgobWVkaWFRdWVyeSkgPT4ge1xuICAgICAgbWVkaWFRdWVyeS5tZWRpYVF1ZXJ5TGlzdC5yZW1vdmVMaXN0ZW5lcihtZWRpYVF1ZXJ5Lmxpc3RlbmVyKTtcbiAgICB9KTtcbiAgICB0aGlzLiNtZWRpYVF1ZXJpZXMgPSBbXTtcbiAgfVxuXG4gICNub3RpZnlCcmVha3BvaW50Q2hhbmdlKGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMpOiB2b2lkIHtcbiAgICB0aGlzLiNjdXJyZW50QnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7XG4gICAgdGhpcy4jY3VycmVudFN1YmplY3QubmV4dChicmVha3BvaW50KTtcbiAgfVxufVxuIl19
|
@@ -7,13 +7,13 @@ export class SkyMutationObserverService {
|
|
7
7
|
create(callback) {
|
8
8
|
return new MutationObserver(callback);
|
9
9
|
}
|
10
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMutationObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
11
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMutationObserverService, providedIn: 'root' }); }
|
10
12
|
}
|
11
|
-
|
12
|
-
SkyMutationObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMutationObserverService, providedIn: 'root' });
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMutationObserverService, decorators: [{
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyMutationObserverService, decorators: [{
|
14
14
|
type: Injectable,
|
15
15
|
args: [{
|
16
16
|
providedIn: 'root',
|
17
17
|
}]
|
18
18
|
}] });
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUM5QixNQUFNLENBQUMsUUFBMEI7UUFDdEMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBSFUsMEJBQTBCO2tIQUExQiwwQkFBMEIsY0FGekIsTUFBTTs7MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGNyZWF0ZShjYWxsYmFjazogTXV0YXRpb25DYWxsYmFjayk6IE11dGF0aW9uT2JzZXJ2ZXIge1xuICAgIHJldHVybiBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gIH1cbn1cbiJdfQ==
|
@@ -4,11 +4,11 @@ import { SkyCoreResourcesModule } from '../shared/sky-core-resources.module';
|
|
4
4
|
import { SkyNumericPipe } from './numeric.pipe';
|
5
5
|
import * as i0 from "@angular/core";
|
6
6
|
export class SkyNumericModule {
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
8
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericModule, declarations: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule], exports: [SkyNumericPipe] }); }
|
9
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericModule, providers: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule] }); }
|
7
10
|
}
|
8
|
-
|
9
|
-
SkyNumericModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, declarations: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule], exports: [SkyNumericPipe] });
|
10
|
-
SkyNumericModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, providers: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule] });
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, decorators: [{
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericModule, decorators: [{
|
12
12
|
type: NgModule,
|
13
13
|
args: [{
|
14
14
|
declarations: [SkyNumericPipe],
|
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
17
17
|
exports: [SkyNumericPipe],
|
18
18
|
}]
|
19
19
|
}] });
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbnVtZXJpYy9udW1lcmljLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVFoRCxNQUFNLE9BQU8sZ0JBQWdCOzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFMWixjQUFjLGFBRW5CLGFBQWEsRUFBRSxzQkFBc0IsYUFDckMsY0FBYzsrR0FFYixnQkFBZ0IsYUFKaEIsQ0FBQyxjQUFjLENBQUMsWUFDakIsYUFBYSxFQUFFLHNCQUFzQjs7MkZBR3BDLGdCQUFnQjtrQkFONUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDM0IsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO29CQUNoRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreUNvcmVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreU51bWVyaWNQaXBlIH0gZnJvbSAnLi9udW1lcmljLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lOdW1lcmljUGlwZV0sXG4gIHByb3ZpZGVyczogW1NreU51bWVyaWNQaXBlXSxcbiAgaW1wb3J0czogW1NreUkxOG5Nb2R1bGUsIFNreUNvcmVSZXNvdXJjZXNNb2R1bGVdLFxuICBleHBvcnRzOiBbU2t5TnVtZXJpY1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lOdW1lcmljTW9kdWxlIHt9XG4iXX0=
|
@@ -0,0 +1,81 @@
|
|
1
|
+
import { Pipe, } from '@angular/core';
|
2
|
+
import { Subject } from 'rxjs';
|
3
|
+
import { takeUntil } from 'rxjs/operators';
|
4
|
+
import { NumericOptions } from './numeric.options';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@skyux/i18n";
|
7
|
+
import * as i2 from "./numeric.service";
|
8
|
+
/**
|
9
|
+
* Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,
|
10
|
+
* M for millions, B for billions, and T for trillions. The pipe also formats for currency.
|
11
|
+
* Be sure you have a space after the two curly brackets opening the pipe and
|
12
|
+
* a space before the two curly brackets closing the pipe or it will not work.
|
13
|
+
*/
|
14
|
+
export class SkyNumericPipe {
|
15
|
+
#cacheKey;
|
16
|
+
#changeDetector;
|
17
|
+
#formattedValue;
|
18
|
+
#ngUnsubscribe = new Subject();
|
19
|
+
#numericSvc;
|
20
|
+
#providerLocale;
|
21
|
+
constructor(localeProvider, numericSvc, changeDetector) {
|
22
|
+
this.#numericSvc = numericSvc;
|
23
|
+
this.#changeDetector = changeDetector;
|
24
|
+
localeProvider
|
25
|
+
.getLocaleInfo()
|
26
|
+
.pipe(takeUntil(this.#ngUnsubscribe))
|
27
|
+
.subscribe((localeInfo) => {
|
28
|
+
this.#providerLocale = localeInfo.locale;
|
29
|
+
numericSvc.currentLocale = this.#providerLocale;
|
30
|
+
this.#changeDetector.markForCheck();
|
31
|
+
});
|
32
|
+
}
|
33
|
+
ngOnDestroy() {
|
34
|
+
this.#ngUnsubscribe.next();
|
35
|
+
this.#ngUnsubscribe.complete();
|
36
|
+
}
|
37
|
+
/**
|
38
|
+
* Formats a number based on the provided options.
|
39
|
+
*/
|
40
|
+
transform(value, config) {
|
41
|
+
const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +
|
42
|
+
`${value}_${config?.locale || this.#providerLocale}`;
|
43
|
+
/* If the value and locale are the same as the last transform then return the previous value
|
44
|
+
instead of reformatting. */
|
45
|
+
if (this.#formattedValue && this.#cacheKey === newCacheKey) {
|
46
|
+
return this.#formattedValue;
|
47
|
+
}
|
48
|
+
const options = new NumericOptions();
|
49
|
+
// The default number of digits is `1`. When truncate is disabled, set digits
|
50
|
+
// to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.
|
51
|
+
if (config && config.truncate === false && config.digits === undefined) {
|
52
|
+
options.digits = 0;
|
53
|
+
}
|
54
|
+
// If the minimum digits is less than the set maximum digits then throw an error
|
55
|
+
if (config &&
|
56
|
+
config.minDigits &&
|
57
|
+
config.digits &&
|
58
|
+
config.minDigits > config.digits) {
|
59
|
+
throw new Error('The `digits` property must be greater than or equal to the `minDigits` property');
|
60
|
+
// If there is a minimum digits given but not a maximum then default the maximum to the minimum
|
61
|
+
}
|
62
|
+
else if (config && config.minDigits && !config.digits) {
|
63
|
+
options.digits = config.minDigits;
|
64
|
+
}
|
65
|
+
Object.assign(options, config);
|
66
|
+
// Assign properties for proper result caching.
|
67
|
+
this.#cacheKey = newCacheKey;
|
68
|
+
this.#formattedValue = this.#numericSvc.formatNumber(value, options);
|
69
|
+
return this.#formattedValue;
|
70
|
+
}
|
71
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericPipe, deps: [{ token: i1.SkyAppLocaleProvider }, { token: i2.SkyNumericService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
72
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericPipe, name: "skyNumeric", pure: false }); }
|
73
|
+
}
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyNumericPipe, decorators: [{
|
75
|
+
type: Pipe,
|
76
|
+
args: [{
|
77
|
+
name: 'skyNumeric',
|
78
|
+
pure: false,
|
79
|
+
}]
|
80
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }, { type: i2.SkyNumericService }, { type: i0.ChangeDetectorRef }]; } });
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUd0RTs7Ozs7R0FLRztBQUtILE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBcUI7SUFFOUIsZUFBZSxDQUFvQjtJQUVuQyxlQUFlLENBQXFCO0lBRXBDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDLFdBQVcsQ0FBb0I7SUFFL0IsZUFBZSxDQUFxQjtJQUVwQyxZQUNFLGNBQW9DLEVBQ3BDLFVBQTZCLEVBQzdCLGNBQWlDO1FBRWpDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBRXRDLGNBQWM7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUFDLEtBQWEsRUFBRSxNQUEwQjtRQUN4RCxNQUFNLFdBQVcsR0FDZixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEUsR0FBRyxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkQ7bUNBQzJCO1FBQzNCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUMxRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDN0I7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBRXJDLDZFQUE2RTtRQUM3RSx1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7WUFDdEUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFFRCxnRkFBZ0Y7UUFDaEYsSUFDRSxNQUFNO1lBQ04sTUFBTSxDQUFDLFNBQVM7WUFDaEIsTUFBTSxDQUFDLE1BQU07WUFDYixNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQ2hDO1lBQ0EsTUFBTSxJQUFJLEtBQUssQ0FDYixpRkFBaUYsQ0FDbEYsQ0FBQztZQUVGLCtGQUErRjtTQUNoRzthQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztTQUNuQztRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLCtDQUErQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzs4R0FqRlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVtZXJpY09wdGlvbnMsIFNreU51bWVyaWNPcHRpb25zIH0gZnJvbSAnLi9udW1lcmljLm9wdGlvbnMnO1xuaW1wb3J0IHsgU2t5TnVtZXJpY1NlcnZpY2UgfSBmcm9tICcuL251bWVyaWMuc2VydmljZSc7XG5cbi8qKlxuICogU2hvcnRlbnMgbnVtYmVycyB0byByb3VuZGVkIG51bWJlcnMgYW5kIGFiYnJldmlhdGlvbiBjaGFyYWN0ZXJzIHN1Y2ggYXMgSyBmb3IgdGhvdXNhbmRzLFxuICogTSBmb3IgbWlsbGlvbnMsIEIgZm9yIGJpbGxpb25zLCBhbmQgVCBmb3IgdHJpbGxpb25zLiBUaGUgcGlwZSBhbHNvIGZvcm1hdHMgZm9yIGN1cnJlbmN5LlxuICogQmUgc3VyZSB5b3UgaGF2ZSBhIHNwYWNlIGFmdGVyIHRoZSB0d28gY3VybHkgYnJhY2tldHMgb3BlbmluZyB0aGUgcGlwZSBhbmRcbiAqIGEgc3BhY2UgYmVmb3JlIHRoZSB0d28gY3VybHkgYnJhY2tldHMgY2xvc2luZyB0aGUgcGlwZSBvciBpdCB3aWxsIG5vdCB3b3JrLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lOdW1lcmljJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreU51bWVyaWNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgI2NhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjZm9ybWF0dGVkVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI251bWVyaWNTdmM6IFNreU51bWVyaWNTZXJ2aWNlO1xuXG4gICNwcm92aWRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICBudW1lcmljU3ZjOiBTa3lOdW1lcmljU2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy4jbnVtZXJpY1N2YyA9IG51bWVyaWNTdmM7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcblxuICAgIGxvY2FsZVByb3ZpZGVyXG4gICAgICAuZ2V0TG9jYWxlSW5mbygpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChsb2NhbGVJbmZvKSA9PiB7XG4gICAgICAgIHRoaXMuI3Byb3ZpZGVyTG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICAgIG51bWVyaWNTdmMuY3VycmVudExvY2FsZSA9IHRoaXMuI3Byb3ZpZGVyTG9jYWxlO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIGEgbnVtYmVyIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCBjb25maWc/OiBTa3lOdW1lcmljT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgbmV3Q2FjaGVLZXkgPVxuICAgICAgKGNvbmZpZyA/IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgT2JqZWN0LmtleXMoY29uZmlnKS5zb3J0KCkpIDogJycpICtcbiAgICAgIGAke3ZhbHVlfV8ke2NvbmZpZz8ubG9jYWxlIHx8IHRoaXMuI3Byb3ZpZGVyTG9jYWxlfWA7XG5cbiAgICAvKiBJZiB0aGUgdmFsdWUgYW5kIGxvY2FsZSBhcmUgdGhlIHNhbWUgYXMgdGhlIGxhc3QgdHJhbnNmb3JtIHRoZW4gcmV0dXJuIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIGluc3RlYWQgb2YgcmVmb3JtYXR0aW5nLiAqL1xuICAgIGlmICh0aGlzLiNmb3JtYXR0ZWRWYWx1ZSAmJiB0aGlzLiNjYWNoZUtleSA9PT0gbmV3Q2FjaGVLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLiNmb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gbmV3IE51bWVyaWNPcHRpb25zKCk7XG5cbiAgICAvLyBUaGUgZGVmYXVsdCBudW1iZXIgb2YgZGlnaXRzIGlzIGAxYC4gV2hlbiB0cnVuY2F0ZSBpcyBkaXNhYmxlZCwgc2V0IGRpZ2l0c1xuICAgIC8vIHRvIGAwYCB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgYWRkaXRpb24gb2YgYC4wYCBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXR0ZWQgbnVtYmVyLlxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLnRydW5jYXRlID09PSBmYWxzZSAmJiBjb25maWcuZGlnaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMuZGlnaXRzID0gMDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbWluaW11bSBkaWdpdHMgaXMgbGVzcyB0aGFuIHRoZSBzZXQgbWF4aW11bSBkaWdpdHMgdGhlbiB0aHJvdyBhbiBlcnJvclxuICAgIGlmIChcbiAgICAgIGNvbmZpZyAmJlxuICAgICAgY29uZmlnLm1pbkRpZ2l0cyAmJlxuICAgICAgY29uZmlnLmRpZ2l0cyAmJlxuICAgICAgY29uZmlnLm1pbkRpZ2l0cyA+IGNvbmZpZy5kaWdpdHNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSBgZGlnaXRzYCBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgYG1pbkRpZ2l0c2AgcHJvcGVydHknXG4gICAgICApO1xuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBhIG1pbmltdW0gZGlnaXRzIGdpdmVuIGJ1dCBub3QgYSBtYXhpbXVtIHRoZW4gZGVmYXVsdCB0aGUgbWF4aW11bSB0byB0aGUgbWluaW11bVxuICAgIH0gZWxzZSBpZiAoY29uZmlnICYmIGNvbmZpZy5taW5EaWdpdHMgJiYgIWNvbmZpZy5kaWdpdHMpIHtcbiAgICAgIG9wdGlvbnMuZGlnaXRzID0gY29uZmlnLm1pbkRpZ2l0cztcbiAgICB9XG5cbiAgICBPYmplY3QuYXNzaWduKG9wdGlvbnMsIGNvbmZpZyk7XG5cbiAgICAvLyBBc3NpZ24gcHJvcGVydGllcyBmb3IgcHJvcGVyIHJlc3VsdCBjYWNoaW5nLlxuICAgIHRoaXMuI2NhY2hlS2V5ID0gbmV3Q2FjaGVLZXk7XG5cbiAgICB0aGlzLiNmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuI251bWVyaWNTdmMuZm9ybWF0TnVtYmVyKHZhbHVlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gdGhpcy4jZm9ybWF0dGVkVmFsdWU7XG4gIH1cbn1cbiJdfQ==
|