@skyux/core 11.31.0 → 12.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +520 -516
- package/fesm2022/skyux-core-testing.mjs +26 -26
- package/fesm2022/skyux-core-testing.mjs.map +1 -1
- package/fesm2022/skyux-core.mjs +180 -174
- package/fesm2022/skyux-core.mjs.map +1 -1
- package/package.json +8 -12
- package/esm2022/index.mjs +0 -67
- package/esm2022/lib/modules/adapter-service/adapter.module.mjs +0 -16
- package/esm2022/lib/modules/adapter-service/adapter.service.mjs +0 -205
- package/esm2022/lib/modules/adapter-service/focusable-children-options.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-auto-fit-context.mjs +0 -12
- package/esm2022/lib/modules/affix/affix-config.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-horizontal-alignment.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-offset-change.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-offset.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-placement-change.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-placement.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-position.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-rect.mjs +0 -2
- package/esm2022/lib/modules/affix/affix-utils.mjs +0 -18
- package/esm2022/lib/modules/affix/affix-vertical-alignment.mjs +0 -2
- package/esm2022/lib/modules/affix/affix.directive.mjs +0 -116
- package/esm2022/lib/modules/affix/affix.module.mjs +0 -18
- package/esm2022/lib/modules/affix/affix.service.mjs +0 -48
- package/esm2022/lib/modules/affix/affixer.mjs +0 -426
- package/esm2022/lib/modules/affix/dom-utils.mjs +0 -126
- package/esm2022/lib/modules/breakpoint-observer/breakpoint-observer.mjs +0 -2
- package/esm2022/lib/modules/breakpoint-observer/breakpoint-observer.token.mjs +0 -7
- package/esm2022/lib/modules/breakpoint-observer/breakpoint-utils.mjs +0 -38
- package/esm2022/lib/modules/breakpoint-observer/breakpoint.mjs +0 -6
- package/esm2022/lib/modules/breakpoint-observer/container-breakpoint-observer.mjs +0 -64
- package/esm2022/lib/modules/breakpoint-observer/media-breakpoint-observer.mjs +0 -58
- package/esm2022/lib/modules/breakpoint-observer/provide-breakpoint-observer.mjs +0 -24
- package/esm2022/lib/modules/breakpoint-observer/responsive-host.directive.mjs +0 -55
- package/esm2022/lib/modules/content-info-provider/content-info-descriptor.mjs +0 -2
- package/esm2022/lib/modules/content-info-provider/content-info-provider.mjs +0 -24
- package/esm2022/lib/modules/content-info-provider/content-info.mjs +0 -2
- package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +0 -26
- package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +0 -81
- package/esm2022/lib/modules/dock/dock-insert-component-config.mjs +0 -2
- package/esm2022/lib/modules/dock/dock-item-config.mjs +0 -2
- package/esm2022/lib/modules/dock/dock-item-reference.mjs +0 -2
- package/esm2022/lib/modules/dock/dock-item.mjs +0 -31
- package/esm2022/lib/modules/dock/dock-location.mjs +0 -19
- package/esm2022/lib/modules/dock/dock-options.mjs +0 -2
- package/esm2022/lib/modules/dock/dock.component.mjs +0 -101
- package/esm2022/lib/modules/dock/dock.module.mjs +0 -15
- package/esm2022/lib/modules/dock/dock.service.mjs +0 -95
- package/esm2022/lib/modules/dock/sort-by-stack-order.mjs +0 -13
- package/esm2022/lib/modules/dynamic-component/dynamic-component-location.mjs +0 -27
- package/esm2022/lib/modules/dynamic-component/dynamic-component-options.mjs +0 -2
- package/esm2022/lib/modules/dynamic-component/dynamic-component.module.mjs +0 -17
- package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +0 -113
- package/esm2022/lib/modules/file-reader/file-reader.service.mjs +0 -32
- package/esm2022/lib/modules/format/app-format.mjs +0 -18
- package/esm2022/lib/modules/help/help-global-options-token.mjs +0 -6
- package/esm2022/lib/modules/help/help-global-options.mjs +0 -2
- package/esm2022/lib/modules/help/help-open-args.mjs +0 -2
- package/esm2022/lib/modules/help/help-update-args.mjs +0 -2
- package/esm2022/lib/modules/help/help.service.mjs +0 -20
- package/esm2022/lib/modules/id/id.directive.mjs +0 -31
- package/esm2022/lib/modules/id/id.module.mjs +0 -16
- package/esm2022/lib/modules/id/id.service.mjs +0 -24
- package/esm2022/lib/modules/layout-host/layout-host-for-child-args.mjs +0 -2
- package/esm2022/lib/modules/layout-host/layout-host.service.mjs +0 -22
- package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +0 -81
- package/esm2022/lib/modules/live-announcer/types/live-announcer-args.mjs +0 -2
- package/esm2022/lib/modules/live-announcer/types/live-announcer-politeness.mjs +0 -2
- package/esm2022/lib/modules/log/log.module.mjs +0 -16
- package/esm2022/lib/modules/log/log.service.mjs +0 -148
- package/esm2022/lib/modules/log/types/log-deprecation-args.mjs +0 -2
- package/esm2022/lib/modules/log/types/log-level-token.mjs +0 -6
- package/esm2022/lib/modules/log/types/log-level.mjs +0 -10
- package/esm2022/lib/modules/media-query/media-breakpoints.mjs +0 -24
- package/esm2022/lib/modules/media-query/media-query-listener.mjs +0 -2
- package/esm2022/lib/modules/media-query/media-query.module.mjs +0 -16
- package/esm2022/lib/modules/media-query/media-query.service.mjs +0 -82
- package/esm2022/lib/modules/mutation/mutation-observer-service.mjs +0 -19
- package/esm2022/lib/modules/numeric/numeric-symbol.mjs +0 -2
- package/esm2022/lib/modules/numeric/numeric.module.mjs +0 -19
- package/esm2022/lib/modules/numeric/numeric.options.mjs +0 -24
- package/esm2022/lib/modules/numeric/numeric.pipe.mjs +0 -84
- package/esm2022/lib/modules/numeric/numeric.service.mjs +0 -200
- package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +0 -74
- package/esm2022/lib/modules/overlay/overlay-config.mjs +0 -2
- package/esm2022/lib/modules/overlay/overlay-context.mjs +0 -10
- package/esm2022/lib/modules/overlay/overlay-instance.mjs +0 -62
- package/esm2022/lib/modules/overlay/overlay-position.mjs +0 -2
- package/esm2022/lib/modules/overlay/overlay.component.mjs +0 -203
- package/esm2022/lib/modules/overlay/overlay.module.mjs +0 -15
- package/esm2022/lib/modules/overlay/overlay.service.mjs +0 -134
- package/esm2022/lib/modules/percent-pipe/percent-pipe.module.mjs +0 -19
- package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +0 -56
- package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +0 -153
- package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +0 -115
- package/esm2022/lib/modules/screen-reader-label/screen-reader-label.directive.mjs +0 -66
- package/esm2022/lib/modules/scroll-shadow/scroll-shadow-event-args.mjs +0 -2
- package/esm2022/lib/modules/scroll-shadow/scroll-shadow.directive.mjs +0 -123
- package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +0 -223
- package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +0 -72
- package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +0 -34
- package/esm2022/lib/modules/stacking-context/stacking-context-token.mjs +0 -6
- package/esm2022/lib/modules/stacking-context/stacking-context.mjs +0 -2
- package/esm2022/lib/modules/title/set-title-args.mjs +0 -2
- package/esm2022/lib/modules/title/title.service.mjs +0 -31
- package/esm2022/lib/modules/trim/trim.directive.mjs +0 -64
- package/esm2022/lib/modules/trim/trim.module.mjs +0 -16
- package/esm2022/lib/modules/ui-config/ui-config.service.mjs +0 -21
- package/esm2022/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper-host-options.mjs +0 -10
- package/esm2022/lib/modules/viewkeeper/viewkeeper-offset.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper-options.mjs +0 -2
- package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +0 -131
- package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +0 -296
- package/esm2022/lib/modules/viewkeeper/viewkeeper.module.mjs +0 -16
- package/esm2022/lib/modules/viewkeeper/viewkeeper.service.mjs +0 -39
- package/esm2022/lib/modules/window/window-ref.mjs +0 -30
- package/esm2022/skyux-core.mjs +0 -5
- package/esm2022/testing/legacy/core-testing.module.mjs +0 -32
- package/esm2022/testing/legacy/mock-media-query.service.mjs +0 -47
- package/esm2022/testing/legacy/mock-ui-config.service.mjs +0 -62
- package/esm2022/testing/legacy/resize-observer-mock.mjs +0 -50
- package/esm2022/testing/modules/file-reader/file-reader-testing.service.mjs +0 -19
- package/esm2022/testing/modules/file-reader/provide-file-reader-testing.mjs +0 -22
- package/esm2022/testing/modules/help/help-testing-controller.mjs +0 -28
- package/esm2022/testing/modules/help/help-testing.module.mjs +0 -32
- package/esm2022/testing/modules/help/help-testing.service.mjs +0 -37
- package/esm2022/testing/modules/media-query/breakpoint-observer-testing.mjs +0 -26
- package/esm2022/testing/modules/media-query/media-query-testing-controller.mjs +0 -22
- package/esm2022/testing/modules/media-query/provide-media-query-testing.mjs +0 -26
- package/esm2022/testing/modules/overlay/overlay-harness-filters.mjs +0 -2
- package/esm2022/testing/modules/overlay/overlay-harness.mjs +0 -20
- package/esm2022/testing/public-api.mjs +0 -15
- package/esm2022/testing/shared/component-harness.mjs +0 -13
- package/esm2022/testing/shared/harness-filters.mjs +0 -2
- package/esm2022/testing/shared/harness-utility.mjs +0 -7
- package/esm2022/testing/shared/input-harness.mjs +0 -63
- package/esm2022/testing/shared/queryable-component-harness.mjs +0 -43
- package/esm2022/testing/skyux-core-testing.mjs +0 -5
- package/esm2022/version.mjs +0 -19
@@ -1,84 +0,0 @@
|
|
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
|
-
if (value === undefined || value === null || isNaN(value)) {
|
42
|
-
return '';
|
43
|
-
}
|
44
|
-
const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +
|
45
|
-
`${value}_${config?.locale || this.#providerLocale}`;
|
46
|
-
/* If the value and locale are the same as the last transform then return the previous value
|
47
|
-
instead of reformatting. */
|
48
|
-
if (this.#formattedValue && this.#cacheKey === newCacheKey) {
|
49
|
-
return this.#formattedValue;
|
50
|
-
}
|
51
|
-
const options = new NumericOptions();
|
52
|
-
// The default number of digits is `1`. When truncate is disabled, set digits
|
53
|
-
// to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.
|
54
|
-
if (config && config.truncate === false && config.digits === undefined) {
|
55
|
-
options.digits = 0;
|
56
|
-
}
|
57
|
-
// If the minimum digits is less than the set maximum digits then throw an error
|
58
|
-
if (config &&
|
59
|
-
config.minDigits &&
|
60
|
-
config.digits &&
|
61
|
-
config.minDigits > config.digits) {
|
62
|
-
throw new Error('The `digits` property must be greater than or equal to the `minDigits` property');
|
63
|
-
// If there is a minimum digits given but not a maximum then default the maximum to the minimum
|
64
|
-
}
|
65
|
-
else if (config && config.minDigits && !config.digits) {
|
66
|
-
options.digits = config.minDigits;
|
67
|
-
}
|
68
|
-
Object.assign(options, config);
|
69
|
-
// Assign properties for proper result caching.
|
70
|
-
this.#cacheKey = newCacheKey;
|
71
|
-
this.#formattedValue = this.#numericSvc.formatNumber(value, options);
|
72
|
-
return this.#formattedValue;
|
73
|
-
}
|
74
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyNumericPipe, deps: [{ token: i1.SkyAppLocaleProvider }, { token: i2.SkyNumericService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
75
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SkyNumericPipe, name: "skyNumeric", pure: false }); }
|
76
|
-
}
|
77
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyNumericPipe, decorators: [{
|
78
|
-
type: Pipe,
|
79
|
-
args: [{
|
80
|
-
name: 'skyNumeric',
|
81
|
-
pure: false,
|
82
|
-
}]
|
83
|
-
}], ctorParameters: () => [{ type: i1.SkyAppLocaleProvider }, { type: i2.SkyNumericService }, { type: i0.ChangeDetectorRef }] });
|
84
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBcUIsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQUd0RTs7Ozs7R0FLRztBQUtILE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBcUI7SUFFOUIsZUFBZSxDQUFvQjtJQUVuQyxlQUFlLENBQXFCO0lBRXBDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDLFdBQVcsQ0FBb0I7SUFFL0IsZUFBZSxDQUFxQjtJQUVwQyxZQUNFLGNBQW9DLEVBQ3BDLFVBQTZCLEVBQzdCLGNBQWlDO1FBRWpDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksQ0FBQyxlQUFlLEdBQUcsY0FBYyxDQUFDO1FBRXRDLGNBQWM7YUFDWCxhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDekMsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksU0FBUyxDQUNkLEtBQWdDLEVBQ2hDLE1BQTBCO1FBRTFCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sV0FBVyxHQUNmLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxHQUFHLEtBQUssSUFBSSxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2RDttQ0FDMkI7UUFDM0IsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDM0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBRXJDLDZFQUE2RTtRQUM3RSx1RkFBdUY7UUFDdkYsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2RSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLElBQ0UsTUFBTTtZQUNOLE1BQU0sQ0FBQyxTQUFTO1lBQ2hCLE1BQU0sQ0FBQyxNQUFNO1lBQ2IsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUNoQyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixpRkFBaUYsQ0FDbEYsQ0FBQztZQUVGLCtGQUErRjtRQUNqRyxDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RCxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDcEMsQ0FBQztRQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLCtDQUErQztRQUMvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztRQUU3QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzsrR0F4RlUsY0FBYzs2R0FBZCxjQUFjOzs0RkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsS0FBSztpQkFDWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBPbkRlc3Ryb3ksXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwTG9jYWxlUHJvdmlkZXIgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTnVtZXJpY09wdGlvbnMsIFNreU51bWVyaWNPcHRpb25zIH0gZnJvbSAnLi9udW1lcmljLm9wdGlvbnMnO1xuaW1wb3J0IHsgU2t5TnVtZXJpY1NlcnZpY2UgfSBmcm9tICcuL251bWVyaWMuc2VydmljZSc7XG5cbi8qKlxuICogU2hvcnRlbnMgbnVtYmVycyB0byByb3VuZGVkIG51bWJlcnMgYW5kIGFiYnJldmlhdGlvbiBjaGFyYWN0ZXJzIHN1Y2ggYXMgSyBmb3IgdGhvdXNhbmRzLFxuICogTSBmb3IgbWlsbGlvbnMsIEIgZm9yIGJpbGxpb25zLCBhbmQgVCBmb3IgdHJpbGxpb25zLiBUaGUgcGlwZSBhbHNvIGZvcm1hdHMgZm9yIGN1cnJlbmN5LlxuICogQmUgc3VyZSB5b3UgaGF2ZSBhIHNwYWNlIGFmdGVyIHRoZSB0d28gY3VybHkgYnJhY2tldHMgb3BlbmluZyB0aGUgcGlwZSBhbmRcbiAqIGEgc3BhY2UgYmVmb3JlIHRoZSB0d28gY3VybHkgYnJhY2tldHMgY2xvc2luZyB0aGUgcGlwZSBvciBpdCB3aWxsIG5vdCB3b3JrLlxuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdza3lOdW1lcmljJyxcbiAgcHVyZTogZmFsc2UsXG59KVxuZXhwb3J0IGNsYXNzIFNreU51bWVyaWNQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgI2NhY2hlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjZm9ybWF0dGVkVmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI251bWVyaWNTdmM6IFNreU51bWVyaWNTZXJ2aWNlO1xuXG4gICNwcm92aWRlckxvY2FsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGxvY2FsZVByb3ZpZGVyOiBTa3lBcHBMb2NhbGVQcm92aWRlcixcbiAgICBudW1lcmljU3ZjOiBTa3lOdW1lcmljU2VydmljZSxcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge1xuICAgIHRoaXMuI251bWVyaWNTdmMgPSBudW1lcmljU3ZjO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG5cbiAgICBsb2NhbGVQcm92aWRlclxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNwcm92aWRlckxvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgICBudW1lcmljU3ZjLmN1cnJlbnRMb2NhbGUgPSB0aGlzLiNwcm92aWRlckxvY2FsZTtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0cyBhIG51bWJlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgb3B0aW9ucy5cbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgdmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsXG4gICAgY29uZmlnPzogU2t5TnVtZXJpY09wdGlvbnMsXG4gICk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3Q2FjaGVLZXkgPVxuICAgICAgKGNvbmZpZyA/IEpTT04uc3RyaW5naWZ5KGNvbmZpZywgT2JqZWN0LmtleXMoY29uZmlnKS5zb3J0KCkpIDogJycpICtcbiAgICAgIGAke3ZhbHVlfV8ke2NvbmZpZz8ubG9jYWxlIHx8IHRoaXMuI3Byb3ZpZGVyTG9jYWxlfWA7XG5cbiAgICAvKiBJZiB0aGUgdmFsdWUgYW5kIGxvY2FsZSBhcmUgdGhlIHNhbWUgYXMgdGhlIGxhc3QgdHJhbnNmb3JtIHRoZW4gcmV0dXJuIHRoZSBwcmV2aW91cyB2YWx1ZVxuICAgIGluc3RlYWQgb2YgcmVmb3JtYXR0aW5nLiAqL1xuICAgIGlmICh0aGlzLiNmb3JtYXR0ZWRWYWx1ZSAmJiB0aGlzLiNjYWNoZUtleSA9PT0gbmV3Q2FjaGVLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLiNmb3JtYXR0ZWRWYWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gbmV3IE51bWVyaWNPcHRpb25zKCk7XG5cbiAgICAvLyBUaGUgZGVmYXVsdCBudW1iZXIgb2YgZGlnaXRzIGlzIGAxYC4gV2hlbiB0cnVuY2F0ZSBpcyBkaXNhYmxlZCwgc2V0IGRpZ2l0c1xuICAgIC8vIHRvIGAwYCB0byBhdm9pZCB0aGUgdW5uZWNlc3NhcnkgYWRkaXRpb24gb2YgYC4wYCBhdCB0aGUgZW5kIG9mIHRoZSBmb3JtYXR0ZWQgbnVtYmVyLlxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLnRydW5jYXRlID09PSBmYWxzZSAmJiBjb25maWcuZGlnaXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG9wdGlvbnMuZGlnaXRzID0gMDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgbWluaW11bSBkaWdpdHMgaXMgbGVzcyB0aGFuIHRoZSBzZXQgbWF4aW11bSBkaWdpdHMgdGhlbiB0aHJvdyBhbiBlcnJvclxuICAgIGlmIChcbiAgICAgIGNvbmZpZyAmJlxuICAgICAgY29uZmlnLm1pbkRpZ2l0cyAmJlxuICAgICAgY29uZmlnLmRpZ2l0cyAmJlxuICAgICAgY29uZmlnLm1pbkRpZ2l0cyA+IGNvbmZpZy5kaWdpdHNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1RoZSBgZGlnaXRzYCBwcm9wZXJ0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgYG1pbkRpZ2l0c2AgcHJvcGVydHknLFxuICAgICAgKTtcblxuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtaW5pbXVtIGRpZ2l0cyBnaXZlbiBidXQgbm90IGEgbWF4aW11bSB0aGVuIGRlZmF1bHQgdGhlIG1heGltdW0gdG8gdGhlIG1pbmltdW1cbiAgICB9IGVsc2UgaWYgKGNvbmZpZyAmJiBjb25maWcubWluRGlnaXRzICYmICFjb25maWcuZGlnaXRzKSB7XG4gICAgICBvcHRpb25zLmRpZ2l0cyA9IGNvbmZpZy5taW5EaWdpdHM7XG4gICAgfVxuXG4gICAgT2JqZWN0LmFzc2lnbihvcHRpb25zLCBjb25maWcpO1xuXG4gICAgLy8gQXNzaWduIHByb3BlcnRpZXMgZm9yIHByb3BlciByZXN1bHQgY2FjaGluZy5cbiAgICB0aGlzLiNjYWNoZUtleSA9IG5ld0NhY2hlS2V5O1xuXG4gICAgdGhpcy4jZm9ybWF0dGVkVmFsdWUgPSB0aGlzLiNudW1lcmljU3ZjLmZvcm1hdE51bWJlcih2YWx1ZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHRoaXMuI2Zvcm1hdHRlZFZhbHVlO1xuICB9XG59XG4iXX0=
|
@@ -1,200 +0,0 @@
|
|
1
|
-
import { Injectable } from '@angular/core';
|
2
|
-
import { SkyIntlNumberFormatStyle } from '@skyux/i18n';
|
3
|
-
import { SkyNumberFormatUtility } from '../shared/number-format/number-format-utility';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
import * as i1 from "@skyux/i18n";
|
6
|
-
export class SkyNumericService {
|
7
|
-
#resourcesSvc;
|
8
|
-
#symbolIndex;
|
9
|
-
constructor(resourcesSvc) {
|
10
|
-
/**
|
11
|
-
* The browser's current locale.
|
12
|
-
* @internal
|
13
|
-
*/
|
14
|
-
this.currentLocale = 'en-US';
|
15
|
-
/**
|
16
|
-
* @internal
|
17
|
-
*/
|
18
|
-
this.shortSymbol = '';
|
19
|
-
this.#resourcesSvc = resourcesSvc;
|
20
|
-
this.#symbolIndex = [
|
21
|
-
{ value: 1e12, label: this.#getSymbol('skyux_numeric_trillions_symbol') },
|
22
|
-
{ value: 1e9, label: this.#getSymbol('skyux_numeric_billions_symbol') },
|
23
|
-
{ value: 1e6, label: this.#getSymbol('skyux_numeric_millions_symbol') },
|
24
|
-
{ value: 1e3, label: this.#getSymbol('skyux_numeric_thousands_symbol') },
|
25
|
-
];
|
26
|
-
}
|
27
|
-
/**
|
28
|
-
* Formats a number based on the provided options.
|
29
|
-
* @param value The number to format.
|
30
|
-
* @param options Format options.
|
31
|
-
*/
|
32
|
-
formatNumber(value, options) {
|
33
|
-
if (value === undefined || value === null || isNaN(value)) {
|
34
|
-
return '';
|
35
|
-
}
|
36
|
-
const numericOptions = {
|
37
|
-
digits: 0,
|
38
|
-
format: 'number',
|
39
|
-
currencySign: 'standard',
|
40
|
-
iso: 'USD',
|
41
|
-
truncateAfter: 1000,
|
42
|
-
...options,
|
43
|
-
};
|
44
|
-
const decimalPlaceRegExp = /\.0+$|(\.[0-9]*[1-9])0+$/;
|
45
|
-
const locale = numericOptions.locale || this.currentLocale;
|
46
|
-
const digits = numericOptions.digits || 0;
|
47
|
-
// Get the symbol for the number after rounding, since rounding could push the number
|
48
|
-
// into a different symbol range.
|
49
|
-
let roundedNumber = this.#roundNumber(value, digits);
|
50
|
-
const roundedNumberAbs = Math.abs(roundedNumber);
|
51
|
-
let suffix = '';
|
52
|
-
for (let i = 0; i < this.#symbolIndex.length; i++) {
|
53
|
-
let symbol = this.#symbolIndex[i];
|
54
|
-
if (numericOptions.truncate &&
|
55
|
-
numericOptions.truncateAfter !== undefined &&
|
56
|
-
roundedNumberAbs >= numericOptions.truncateAfter &&
|
57
|
-
roundedNumberAbs >= symbol.value) {
|
58
|
-
roundedNumber = this.#roundNumber(value / symbol.value, digits);
|
59
|
-
if (Math.abs(roundedNumber) === 1000 && i > 0) {
|
60
|
-
// Rounding caused the number to cross into the range of the next symbol.
|
61
|
-
symbol = this.#symbolIndex[i - 1];
|
62
|
-
roundedNumber /= 1000;
|
63
|
-
}
|
64
|
-
suffix = symbol.label;
|
65
|
-
break;
|
66
|
-
}
|
67
|
-
}
|
68
|
-
let output = roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;
|
69
|
-
this.#storeShortenSymbol(output);
|
70
|
-
let digitsFormatted;
|
71
|
-
let isDecimal = false;
|
72
|
-
// Checks the string entered for format. Using toLowerCase to ignore case.
|
73
|
-
switch (numericOptions.format?.toLowerCase()) {
|
74
|
-
// In a case where a decimal value was not shortened and
|
75
|
-
// the digit input is 2 or higher, it forces 2 digits.
|
76
|
-
// For example, this prevents a value like $15.50 from displaying as $15.5.
|
77
|
-
// Note: This will need to be reviewed if we support currencies with
|
78
|
-
// three decimal digits.
|
79
|
-
case 'currency':
|
80
|
-
isDecimal = value % 1 !== 0;
|
81
|
-
if (numericOptions.minDigits) {
|
82
|
-
digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;
|
83
|
-
}
|
84
|
-
else if (isDecimal && digits >= 2) {
|
85
|
-
digitsFormatted = `1.2-${digits}`;
|
86
|
-
}
|
87
|
-
else {
|
88
|
-
digitsFormatted = `1.0-${digits}`;
|
89
|
-
}
|
90
|
-
output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Currency, digitsFormatted, numericOptions.iso, numericOptions.currencyDisplay ?? 'symbol', numericOptions.currencySign);
|
91
|
-
// ^^^^^^ Result can't be null since the sanitized input is always a number.
|
92
|
-
break;
|
93
|
-
// The following is a catch-all to ensure that if
|
94
|
-
// anything but currency (or a future option) are entered,
|
95
|
-
// it will be treated like a number.
|
96
|
-
default:
|
97
|
-
// Ensures localization of the number to ensure comma and
|
98
|
-
// decimal separator
|
99
|
-
if (numericOptions.minDigits) {
|
100
|
-
digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;
|
101
|
-
}
|
102
|
-
else if (numericOptions.truncate) {
|
103
|
-
digitsFormatted = `1.0-${digits}`;
|
104
|
-
}
|
105
|
-
else {
|
106
|
-
digitsFormatted = `1.${digits}-${digits}`;
|
107
|
-
}
|
108
|
-
output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Decimal, digitsFormatted);
|
109
|
-
// ^^^^^^ Result can't be null since the sanitized input is always a number.
|
110
|
-
break;
|
111
|
-
}
|
112
|
-
if (numericOptions.truncate) {
|
113
|
-
output = this.#replaceShortenSymbol(output);
|
114
|
-
}
|
115
|
-
return output;
|
116
|
-
}
|
117
|
-
/**
|
118
|
-
* Rounds a given number
|
119
|
-
*
|
120
|
-
* JS's limitation - numbers bigger than Number.MIN_SAFE_INTEGER or Number.MAX_SAFE_INTEGER
|
121
|
-
* are not guaranteed to be represented or rounded correctly
|
122
|
-
* @param value - value to round
|
123
|
-
* @param precision - what precision to round with, defaults to 0 decimal places
|
124
|
-
*/
|
125
|
-
#roundNumber(value, precision) {
|
126
|
-
if (precision < 0) {
|
127
|
-
throw new Error('SkyInvalidArgument: precision must be >= 0');
|
128
|
-
}
|
129
|
-
/* Sanity check - ignoring coverage but should not ignore if we make this method public */
|
130
|
-
/* istanbul ignore next */
|
131
|
-
if (isNaN(value) || value === null) {
|
132
|
-
return 0;
|
133
|
-
}
|
134
|
-
const scaledValue = this.#scaleNumberByPowerOfTen(value, precision, true);
|
135
|
-
const scaledRoundedValue = Math.round(scaledValue);
|
136
|
-
const unscaledRoundedValue = this.#scaleNumberByPowerOfTen(scaledRoundedValue, precision, false);
|
137
|
-
return unscaledRoundedValue;
|
138
|
-
}
|
139
|
-
/**
|
140
|
-
* Scales a given number by a power of 10
|
141
|
-
* @param value - value to scale
|
142
|
-
* @param scalar - 10^scalar
|
143
|
-
* @param scaleUp - whether to increase or decrease the value
|
144
|
-
*/
|
145
|
-
#scaleNumberByPowerOfTen(value, scalar, scaleUp) {
|
146
|
-
const valueStr = value.toString().toLowerCase();
|
147
|
-
const isExponentFormat = valueStr.includes('e');
|
148
|
-
if (isExponentFormat) {
|
149
|
-
const [base, exp] = valueStr.split('e');
|
150
|
-
const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;
|
151
|
-
return Number(`${base}e${newExp}`);
|
152
|
-
}
|
153
|
-
else {
|
154
|
-
const e = scaleUp ? 'e' : 'e-';
|
155
|
-
return Number(`${value}${e}${scalar}`);
|
156
|
-
}
|
157
|
-
}
|
158
|
-
/**
|
159
|
-
* Stores the symbol added from shortening to reapply later.
|
160
|
-
* @param value The string to derive the shorten symbol from.
|
161
|
-
*/
|
162
|
-
#storeShortenSymbol(value) {
|
163
|
-
const symbols = this.#symbolIndex.map((s) => s.label);
|
164
|
-
const regexp = new RegExp(symbols.join('|'), 'ig');
|
165
|
-
const match = value.match(regexp);
|
166
|
-
this.shortSymbol = match ? match.toString() : '';
|
167
|
-
}
|
168
|
-
/**
|
169
|
-
* Must have previously called storeShortenSymbol to have something to replace.
|
170
|
-
* Finds the last number in the formatted number, gets the index of the position
|
171
|
-
* after that character and re-inserts the symbol.
|
172
|
-
* Works regardless of currency symbol position.
|
173
|
-
* @param value The string to modify.
|
174
|
-
*/
|
175
|
-
#replaceShortenSymbol(value) {
|
176
|
-
const result = /(\d)(?!.*\d)/g.exec(value);
|
177
|
-
/*istanbul ignore else*/
|
178
|
-
if (result) {
|
179
|
-
const pos = result.index + result.length;
|
180
|
-
const output = value.substring(0, pos) + this.shortSymbol + value.substring(pos);
|
181
|
-
return output;
|
182
|
-
}
|
183
|
-
else {
|
184
|
-
return value;
|
185
|
-
}
|
186
|
-
}
|
187
|
-
#getSymbol(key) {
|
188
|
-
// TODO: Need to implement the async `getString` method in a breaking change.
|
189
|
-
return this.#resourcesSvc.getStringForLocale({ locale: 'en_US' }, key);
|
190
|
-
}
|
191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyNumericService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
192
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyNumericService, providedIn: 'root' }); }
|
193
|
-
}
|
194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyNumericService, decorators: [{
|
195
|
-
type: Injectable,
|
196
|
-
args: [{
|
197
|
-
providedIn: 'root',
|
198
|
-
}]
|
199
|
-
}], ctorParameters: () => [{ type: i1.SkyLibResourcesService }] });
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL251bWVyaWMvbnVtZXJpYy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUEwQixNQUFNLGFBQWEsQ0FBQztBQUUvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7O0FBUXZGLE1BQU0sT0FBTyxpQkFBaUI7SUFZNUIsYUFBYSxDQUF5QjtJQUV0QyxZQUFZLENBQXFCO0lBRWpDLFlBQVksWUFBb0M7UUFmaEQ7OztXQUdHO1FBQ0ksa0JBQWEsR0FBRyxPQUFPLENBQUM7UUFFL0I7O1dBRUc7UUFDSSxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQU90QixJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUVsQyxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2xCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO1lBQ3pFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFO1lBQ3ZFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFFO1lBQ3ZFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQ0FBZ0MsQ0FBQyxFQUFFO1NBQ3pFLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFlBQVksQ0FDakIsS0FBZ0MsRUFDaEMs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QVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUVwRSxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQiw2RUFBNkU7UUFDN0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7K0dBclBVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUsIFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreU51bWJlckZvcm1hdFV0aWxpdHkgfSBmcm9tICcuLi9zaGFyZWQvbnVtYmVyLWZvcm1hdC9udW1iZXItZm9ybWF0LXV0aWxpdHknO1xuXG5pbXBvcnQgeyBTa3lOdW1lcmljU3ltYm9sIH0gZnJvbSAnLi9udW1lcmljLXN5bWJvbCc7XG5pbXBvcnQgeyBTa3lOdW1lcmljT3B0aW9ucyB9IGZyb20gJy4vbnVtZXJpYy5vcHRpb25zJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU51bWVyaWNTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBicm93c2VyJ3MgY3VycmVudCBsb2NhbGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIGN1cnJlbnRMb2NhbGUgPSAnZW4tVVMnO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzaG9ydFN5bWJvbCA9ICcnO1xuXG4gICNyZXNvdXJjZXNTdmM6IFNreUxpYlJlc291cmNlc1NlcnZpY2U7XG5cbiAgI3N5bWJvbEluZGV4OiBTa3lOdW1lcmljU3ltYm9sW107XG5cbiAgY29uc3RydWN0b3IocmVzb3VyY2VzU3ZjOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlKSB7XG4gICAgdGhpcy4jcmVzb3VyY2VzU3ZjID0gcmVzb3VyY2VzU3ZjO1xuXG4gICAgdGhpcy4jc3ltYm9sSW5kZXggPSBbXG4gICAgICB7IHZhbHVlOiAxZTEyLCBsYWJlbDogdGhpcy4jZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX3RyaWxsaW9uc19zeW1ib2wnKSB9LFxuICAgICAgeyB2YWx1ZTogMWU5LCBsYWJlbDogdGhpcy4jZ2V0U3ltYm9sKCdza3l1eF9udW1lcmljX2JpbGxpb25zX3N5bWJvbCcpIH0sXG4gICAgICB7IHZhbHVlOiAxZTYsIGxhYmVsOiB0aGlzLiNnZXRTeW1ib2woJ3NreXV4X251bWVyaWNfbWlsbGlvbnNfc3ltYm9sJykgfSxcbiAgICAgIHsgdmFsdWU6IDFlMywgbGFiZWw6IHRoaXMuI2dldFN5bWJvbCgnc2t5dXhfbnVtZXJpY190aG91c2FuZHNfc3ltYm9sJykgfSxcbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBudW1iZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGZvcm1hdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgRm9ybWF0IG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0TnVtYmVyKFxuICAgIHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgfCBudWxsLFxuICAgIG9wdGlvbnM6IFNreU51bWVyaWNPcHRpb25zLFxuICApOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IG51bWVyaWNPcHRpb25zOiBTa3lOdW1lcmljT3B0aW9ucyA9IHtcbiAgICAgIGRpZ2l0czogMCxcbiAgICAgIGZvcm1hdDogJ251bWJlcicsXG4gICAgICBjdXJyZW5jeVNpZ246ICdzdGFuZGFyZCcsXG4gICAgICBpc286ICdVU0QnLFxuICAgICAgdHJ1bmNhdGVBZnRlcjogMTAwMCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IGRlY2ltYWxQbGFjZVJlZ0V4cCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG4gICAgY29uc3QgbG9jYWxlID0gbnVtZXJpY09wdGlvbnMubG9jYWxlIHx8IHRoaXMuY3VycmVudExvY2FsZTtcbiAgICBjb25zdCBkaWdpdHMgPSBudW1lcmljT3B0aW9ucy5kaWdpdHMgfHwgMDtcblxuICAgIC8vIEdldCB0aGUgc3ltYm9sIGZvciB0aGUgbnVtYmVyIGFmdGVyIHJvdW5kaW5nLCBzaW5jZSByb3VuZGluZyBjb3VsZCBwdXNoIHRoZSBudW1iZXJcbiAgICAvLyBpbnRvIGEgZGlmZmVyZW50IHN5bWJvbCByYW5nZS5cbiAgICBsZXQgcm91bmRlZE51bWJlciA9IHRoaXMuI3JvdW5kTnVtYmVyKHZhbHVlLCBkaWdpdHMpO1xuICAgIGNvbnN0IHJvdW5kZWROdW1iZXJBYnMgPSBNYXRoLmFicyhyb3VuZGVkTnVtYmVyKTtcblxuICAgIGxldCBzdWZmaXggPSAnJztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy4jc3ltYm9sSW5kZXgubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBzeW1ib2wgPSB0aGlzLiNzeW1ib2xJbmRleFtpXTtcblxuICAgICAgaWYgKFxuICAgICAgICBudW1lcmljT3B0aW9ucy50cnVuY2F0ZSAmJlxuICAgICAgICBudW1lcmljT3B0aW9ucy50cnVuY2F0ZUFmdGVyICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgcm91bmRlZE51bWJlckFicyA+PSBudW1lcmljT3B0aW9ucy50cnVuY2F0ZUFmdGVyICYmXG4gICAgICAgIHJvdW5kZWROdW1iZXJBYnMgPj0gc3ltYm9sLnZhbHVlXG4gICAgICApIHtcbiAgICAgICAgcm91bmRlZE51bWJlciA9IHRoaXMuI3JvdW5kTnVtYmVyKHZhbHVlIC8gc3ltYm9sLnZhbHVlLCBkaWdpdHMpO1xuXG4gICAgICAgIGlmIChNYXRoLmFicyhyb3VuZGVkTnVtYmVyKSA9PT0gMTAwMCAmJiBpID4gMCkge1xuICAgICAgICAgIC8vIFJvdW5kaW5nIGNhdXNlZCB0aGUgbnVtYmVyIHRvIGNyb3NzIGludG8gdGhlIHJhbmdlIG9mIHRoZSBuZXh0IHN5bWJvbC5cbiAgICAgICAgICBzeW1ib2wgPSB0aGlzLiNzeW1ib2xJbmRleFtpIC0gMV07XG4gICAgICAgICAgcm91bmRlZE51bWJlciAvPSAxMDAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3VmZml4ID0gc3ltYm9sLmxhYmVsO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBvdXRwdXQ6IHN0cmluZyA9XG4gICAgICByb3VuZGVkTnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZShkZWNpbWFsUGxhY2VSZWdFeHAsICckMScpICsgc3VmZml4O1xuXG4gICAgdGhpcy4jc3RvcmVTaG9ydGVuU3ltYm9sKG91dHB1dCk7XG5cbiAgICBsZXQgZGlnaXRzRm9ybWF0dGVkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGlzRGVjaW1hbCA9IGZhbHNlO1xuXG4gICAgLy8gQ2hlY2tzIHRoZSBzdHJpbmcgZW50ZXJlZCBmb3IgZm9ybWF0LiBVc2luZyB0b0xvd2VyQ2FzZSB0byBpZ25vcmUgY2FzZS5cbiAgICBzd2l0Y2ggKG51bWVyaWNPcHRpb25zLmZvcm1hdD8udG9Mb3dlckNhc2UoKSkge1xuICAgICAgLy8gSW4gYSBjYXNlIHdoZXJlIGEgZGVjaW1hbCB2YWx1ZSB3YXMgbm90IHNob3J0ZW5lZCBhbmRcbiAgICAgIC8vIHRoZSBkaWdpdCBpbnB1dCBpcyAyIG9yIGhpZ2hlciwgaXQgZm9yY2VzIDIgZGlnaXRzLlxuICAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgcHJldmVudHMgYSB2YWx1ZSBsaWtlICQxNS41MCBmcm9tIGRpc3BsYXlpbmcgYXMgJDE1LjUuXG4gICAgICAvLyBOb3RlOiBUaGlzIHdpbGwgbmVlZCB0byBiZSByZXZpZXdlZCBpZiB3ZSBzdXBwb3J0IGN1cnJlbmNpZXMgd2l0aFxuICAgICAgLy8gdGhyZWUgZGVjaW1hbCBkaWdpdHMuXG4gICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgIGlzRGVjaW1hbCA9IHZhbHVlICUgMSAhPT0gMDtcblxuICAgICAgICBpZiAobnVtZXJpY09wdGlvbnMubWluRGlnaXRzKSB7XG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkID0gYDEuJHtudW1lcmljT3B0aW9ucy5taW5EaWdpdHN9LSR7ZGlnaXRzfWA7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNEZWNpbWFsICYmIGRpZ2l0cyA+PSAyKSB7XG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkID0gYDEuMi0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLjAtJHtkaWdpdHN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIG91dHB1dCA9IFNreU51bWJlckZvcm1hdFV0aWxpdHkuZm9ybWF0TnVtYmVyKFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBwYXJzZUZsb2F0KG91dHB1dCksXG4gICAgICAgICAgU2t5SW50bE51bWJlckZvcm1hdFN0eWxlLkN1cnJlbmN5LFxuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCxcbiAgICAgICAgICBudW1lcmljT3B0aW9ucy5pc28sXG4gICAgICAgICAgbnVtZXJpY09wdGlvbnMuY3VycmVuY3lEaXNwbGF5ID8/ICdzeW1ib2wnLFxuICAgICAgICAgIG51bWVyaWNPcHRpb25zLmN1cnJlbmN5U2lnbixcbiAgICAgICAgKSBhcyBzdHJpbmc7XG4gICAgICAgIC8vICAgXl5eXl5eIFJlc3VsdCBjYW4ndCBiZSBudWxsIHNpbmNlIHRoZSBzYW5pdGl6ZWQgaW5wdXQgaXMgYWx3YXlzIGEgbnVtYmVyLlxuICAgICAgICBicmVhaztcblxuICAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBhIGNhdGNoLWFsbCB0byBlbnN1cmUgdGhhdCBpZlxuICAgICAgLy8gYW55dGhpbmcgYnV0IGN1cnJlbmN5IChvciBhIGZ1dHVyZSBvcHRpb24pIGFyZSBlbnRlcmVkLFxuICAgICAgLy8gaXQgd2lsbCBiZSB0cmVhdGVkIGxpa2UgYSBudW1iZXIuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBFbnN1cmVzIGxvY2FsaXphdGlvbiBvZiB0aGUgbnVtYmVyIHRvIGVuc3VyZSBjb21tYSBhbmRcbiAgICAgICAgLy8gZGVjaW1hbCBzZXBhcmF0b3JcbiAgICAgICAgaWYgKG51bWVyaWNPcHRpb25zLm1pbkRpZ2l0cykge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLiR7bnVtZXJpY09wdGlvbnMubWluRGlnaXRzfS0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWVyaWNPcHRpb25zLnRydW5jYXRlKSB7XG4gICAgICAgICAgZGlnaXRzRm9ybWF0dGVkID0gYDEuMC0ke2RpZ2l0c31gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpZ2l0c0Zvcm1hdHRlZCA9IGAxLiR7ZGlnaXRzfS0ke2RpZ2l0c31gO1xuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gU2t5TnVtYmVyRm9ybWF0VXRpbGl0eS5mb3JtYXROdW1iZXIoXG4gICAgICAgICAgbG9jYWxlLFxuICAgICAgICAgIHBhcnNlRmxvYXQob3V0cHV0KSxcbiAgICAgICAgICBTa3lJbnRsTnVtYmVyRm9ybWF0U3R5bGUuRGVjaW1hbCxcbiAgICAgICAgICBkaWdpdHNGb3JtYXR0ZWQsXG4gICAgICAgICkgYXMgc3RyaW5nO1xuICAgICAgICAvLyAgIF5eXl5eXiBSZXN1bHQgY2FuJ3QgYmUgbnVsbCBzaW5jZSB0aGUgc2FuaXRpemVkIGlucHV0IGlzIGFsd2F5cyBhIG51bWJlci5cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKG51bWVyaWNPcHRpb25zLnRydW5jYXRlKSB7XG4gICAgICBvdXRwdXQgPSB0aGlzLiNyZXBsYWNlU2hvcnRlblN5bWJvbChvdXRwdXQpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICAvKipcbiAgICogUm91bmRzIGEgZ2l2ZW4gbnVtYmVyXG4gICAqXG4gICAqIEpTJ3MgbGltaXRhdGlvbiAtIG51bWJlcnMgYmlnZ2VyIHRoYW4gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIgb3IgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICogYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJlIHJlcHJlc2VudGVkIG9yIHJvdW5kZWQgY29ycmVjdGx5XG4gICAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRvIHJvdW5kXG4gICAqIEBwYXJhbSBwcmVjaXNpb24gLSB3aGF0IHByZWNpc2lvbiB0byByb3VuZCB3aXRoLCBkZWZhdWx0cyB0byAwIGRlY2ltYWwgcGxhY2VzXG4gICAqL1xuICAjcm91bmROdW1iZXIodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChwcmVjaXNpb24gPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NreUludmFsaWRBcmd1bWVudDogcHJlY2lzaW9uIG11c3QgYmUgPj0gMCcpO1xuICAgIH1cblxuICAgIC8qIFNhbml0eSBjaGVjayAtIGlnbm9yaW5nIGNvdmVyYWdlIGJ1dCBzaG91bGQgbm90IGlnbm9yZSBpZiB3ZSBtYWtlIHRoaXMgbWV0aG9kIHB1YmxpYyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3Qgc2NhbGVkVmFsdWU6IG51bWJlciA9IHRoaXMuI3NjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgICAgdmFsdWUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG4gICAgY29uc3Qgc2NhbGVkUm91bmRlZFZhbHVlOiBudW1iZXIgPSBNYXRoLnJvdW5kKHNjYWxlZFZhbHVlKTtcbiAgICBjb25zdCB1bnNjYWxlZFJvdW5kZWRWYWx1ZTogbnVtYmVyID0gdGhpcy4jc2NhbGVOdW1iZXJCeVBvd2VyT2ZUZW4oXG4gICAgICBzY2FsZWRSb3VuZGVkVmFsdWUsXG4gICAgICBwcmVjaXNpb24sXG4gICAgICBmYWxzZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHVuc2NhbGVkUm91bmRlZFZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjYWxlcyBhIGdpdmVuIG51bWJlciBieSBhIHBvd2VyIG9mIDEwXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIHRvIHNjYWxlXG4gICAqIEBwYXJhbSBzY2FsYXIgLSAxMF5zY2FsYXJcbiAgICogQHBhcmFtIHNjYWxlVXAgLSB3aGV0aGVyIHRvIGluY3JlYXNlIG9yIGRlY3JlYXNlIHRoZSB2YWx1ZVxuICAgKi9cbiAgI3NjYWxlTnVtYmVyQnlQb3dlck9mVGVuKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc2NhbGFyOiBudW1iZXIsXG4gICAgc2NhbGVVcDogYm9vbGVhbixcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCB2YWx1ZVN0cjogc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGlzRXhwb25lbnRGb3JtYXQ6IGJvb2xlYW4gPSB2YWx1ZVN0ci5pbmNsdWRlcygnZScpO1xuXG4gICAgaWYgKGlzRXhwb25lbnRGb3JtYXQpIHtcbiAgICAgIGNvbnN0IFtiYXNlLCBleHBdID0gdmFsdWVTdHIuc3BsaXQoJ2UnKTtcbiAgICAgIGNvbnN0IG5ld0V4cCA9IHNjYWxlVXAgPyBOdW1iZXIoZXhwKSArIHNjYWxhciA6IE51bWJlcihleHApIC0gc2NhbGFyO1xuICAgICAgcmV0dXJuIE51bWJlcihgJHtiYXNlfWUke25ld0V4cH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZSA9IHNjYWxlVXAgPyAnZScgOiAnZS0nO1xuICAgICAgcmV0dXJuIE51bWJlcihgJHt2YWx1ZX0ke2V9JHtzY2FsYXJ9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgc3ltYm9sIGFkZGVkIGZyb20gc2hvcnRlbmluZyB0byByZWFwcGx5IGxhdGVyLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB0byBkZXJpdmUgdGhlIHNob3J0ZW4gc3ltYm9sIGZyb20uXG4gICAqL1xuICAjc3RvcmVTaG9ydGVuU3ltYm9sKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzeW1ib2xzOiBzdHJpbmdbXSA9IHRoaXMuI3N5bWJvbEluZGV4Lm1hcCgocykgPT4gcy5sYWJlbCk7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChzeW1ib2xzLmpvaW4oJ3wnKSwgJ2lnJyk7XG4gICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZWdleHApO1xuICAgIHRoaXMuc2hvcnRTeW1ib2wgPSBtYXRjaCA/IG1hdGNoLnRvU3RyaW5nKCkgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBNdXN0IGhhdmUgcHJldmlvdXNseSBjYWxsZWQgc3RvcmVTaG9ydGVuU3ltYm9sIHRvIGhhdmUgc29tZXRoaW5nIHRvIHJlcGxhY2UuXG4gICAqIEZpbmRzIHRoZSBsYXN0IG51bWJlciBpbiB0aGUgZm9ybWF0dGVkIG51bWJlciwgZ2V0cyB0aGUgaW5kZXggb2YgdGhlIHBvc2l0aW9uXG4gICAqIGFmdGVyIHRoYXQgY2hhcmFjdGVyIGFuZCByZS1pbnNlcnRzIHRoZSBzeW1ib2wuXG4gICAqIFdvcmtzIHJlZ2FyZGxlc3Mgb2YgY3VycmVuY3kgc3ltYm9sIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHN0cmluZyB0byBtb2RpZnkuXG4gICAqL1xuICAjcmVwbGFjZVNob3J0ZW5TeW1ib2wodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVzdWx0ID0gLyhcXGQpKD8hLipcXGQpL2cuZXhlYyh2YWx1ZSk7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgY29uc3QgcG9zID0gcmVzdWx0LmluZGV4ICsgcmVzdWx0Lmxlbmd0aDtcbiAgICAgIGNvbnN0IG91dHB1dCA9XG4gICAgICAgIHZhbHVlLnN1YnN0cmluZygwLCBwb3MpICsgdGhpcy5zaG9ydFN5bWJvbCArIHZhbHVlLnN1YnN0cmluZyhwb3MpO1xuXG4gICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgI2dldFN5bWJvbChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogTmVlZCB0byBpbXBsZW1lbnQgdGhlIGFzeW5jIGBnZXRTdHJpbmdgIG1ldGhvZCBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICByZXR1cm4gdGhpcy4jcmVzb3VyY2VzU3ZjLmdldFN0cmluZ0ZvckxvY2FsZSh7IGxvY2FsZTogJ2VuX1VTJyB9LCBrZXkpO1xuICB9XG59XG4iXX0=
|
@@ -1,74 +0,0 @@
|
|
1
|
-
import { Injectable, } from '@angular/core';
|
2
|
-
import * as i0 from "@angular/core";
|
3
|
-
/**
|
4
|
-
* @internal
|
5
|
-
*/
|
6
|
-
export class SkyOverlayAdapterService {
|
7
|
-
#renderer;
|
8
|
-
#styleElement;
|
9
|
-
constructor(rendererFactory) {
|
10
|
-
this.#renderer = rendererFactory.createRenderer(undefined, null);
|
11
|
-
}
|
12
|
-
restrictBodyScroll() {
|
13
|
-
// Create a style element to avoid overwriting any existing inline body styles.
|
14
|
-
const styleElement = this.#renderer.createElement('style');
|
15
|
-
const textNode = this.#renderer.createText('body { overflow: hidden }');
|
16
|
-
// Apply a `data-` attribute to make unit testing easier.
|
17
|
-
this.#renderer.setAttribute(styleElement, 'data-test-selector', 'sky-overlay-restrict-scroll-styles');
|
18
|
-
this.#renderer.appendChild(styleElement, textNode);
|
19
|
-
this.#renderer.appendChild(document.head, styleElement);
|
20
|
-
if (this.#styleElement) {
|
21
|
-
this.#destroyStyleElement();
|
22
|
-
}
|
23
|
-
this.#styleElement = styleElement;
|
24
|
-
}
|
25
|
-
releaseBodyScroll() {
|
26
|
-
this.#destroyStyleElement();
|
27
|
-
}
|
28
|
-
#destroyStyleElement() {
|
29
|
-
/* istanbul ignore else */
|
30
|
-
if (this.#styleElement &&
|
31
|
-
this.#styleElement.parentElement === document.head) {
|
32
|
-
this.#renderer.removeChild(document.head, this.#styleElement);
|
33
|
-
}
|
34
|
-
}
|
35
|
-
addAriaHiddenToSiblings(overlayElementRef) {
|
36
|
-
const overlayElement = overlayElementRef.nativeElement;
|
37
|
-
const hostSiblings = overlayElement.parentElement.children;
|
38
|
-
const siblingAriaHiddenCache = new Map();
|
39
|
-
for (const element of hostSiblings) {
|
40
|
-
if (element !== overlayElement &&
|
41
|
-
!element.hasAttribute('aria-live') &&
|
42
|
-
element.nodeName.toLowerCase() !== 'script' &&
|
43
|
-
element.nodeName.toLowerCase() !== 'style') {
|
44
|
-
// preserve previous aria-hidden status of elements outside of modal host
|
45
|
-
siblingAriaHiddenCache.set(element, element.getAttribute('aria-hidden'));
|
46
|
-
element.setAttribute('aria-hidden', 'true');
|
47
|
-
}
|
48
|
-
}
|
49
|
-
return siblingAriaHiddenCache;
|
50
|
-
}
|
51
|
-
restoreAriaHiddenForSiblings(siblingAriaHiddenCache) {
|
52
|
-
siblingAriaHiddenCache.forEach((previousValue, element) => {
|
53
|
-
// if element had aria-hidden status prior, restore status
|
54
|
-
if (element.parentElement) {
|
55
|
-
if (previousValue) {
|
56
|
-
element.setAttribute('aria-hidden', previousValue);
|
57
|
-
}
|
58
|
-
else {
|
59
|
-
element.removeAttribute('aria-hidden');
|
60
|
-
}
|
61
|
-
}
|
62
|
-
});
|
63
|
-
siblingAriaHiddenCache.clear();
|
64
|
-
}
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyOverlayAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
66
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyOverlayAdapterService, providedIn: 'root' }); }
|
67
|
-
}
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyOverlayAdapterService, decorators: [{
|
69
|
-
type: Injectable,
|
70
|
-
args: [{
|
71
|
-
providedIn: 'root',
|
72
|
-
}]
|
73
|
-
}], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsVUFBVSxHQUdYLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7R0FFRztBQUlILE1BQU0sT0FBTyx3QkFBd0I7SUFDbkMsU0FBUyxDQUFZO0lBRXJCLGFBQWEsQ0FBK0I7SUFFNUMsWUFBWSxlQUFpQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsK0VBQStFO1FBQy9FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFeEUseURBQXlEO1FBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUN6QixZQUFZLEVBQ1osb0JBQW9CLEVBQ3BCLG9DQUFvQyxDQUNyQyxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQiwwQkFBMEI7UUFDMUIsSUFDRSxJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsSUFBSSxFQUNsRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FDNUIsaUJBQTZCO1FBRTdCLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztRQUN2RCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztRQUUzRCxNQUFNLHNCQUFzQixHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO1FBRWpFLEtBQUssTUFBTSxPQUFPLElBQUksWUFBWSxFQUFFLENBQUM7WUFDbkMsSUFDRSxPQUFPLEtBQUssY0FBYztnQkFDMUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztnQkFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRO2dCQUMzQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLE9BQU8sRUFDMUMsQ0FBQztnQkFDRCx5RUFBeUU7Z0JBQ3pFLHNCQUFzQixDQUFDLEdBQUcsQ0FDeEIsT0FBTyxFQUNQLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQ3BDLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDOUMsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFTSw0QkFBNEIsQ0FDakMsc0JBQW1EO1FBRW5ELHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN4RCwwREFBMEQ7WUFDMUQsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLElBQUksYUFBYSxFQUFFLENBQUM7b0JBQ2xCLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILHNCQUFzQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7K0dBdkZVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUFkYXB0ZXJTZXJ2aWNlIHtcbiAgI3JlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgI3N0eWxlRWxlbWVudDogSFRNTFN0eWxlRWxlbWVudCB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihyZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIpIHtcbiAgICB0aGlzLiNyZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIG51bGwpO1xuICB9XG5cbiAgcHVibGljIHJlc3RyaWN0Qm9keVNjcm9sbCgpOiB2b2lkIHtcbiAgICAvLyBDcmVhdGUgYSBzdHlsZSBlbGVtZW50IHRvIGF2b2lkIG92ZXJ3cml0aW5nIGFueSBleGlzdGluZyBpbmxpbmUgYm9keSBzdHlsZXMuXG4gICAgY29uc3Qgc3R5bGVFbGVtZW50ID0gdGhpcy4jcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IHRoaXMuI3JlbmRlcmVyLmNyZWF0ZVRleHQoJ2JvZHkgeyBvdmVyZmxvdzogaGlkZGVuIH0nKTtcblxuICAgIC8vIEFwcGx5IGEgYGRhdGEtYCBhdHRyaWJ1dGUgdG8gbWFrZSB1bml0IHRlc3RpbmcgZWFzaWVyLlxuICAgIHRoaXMuI3JlbmRlcmVyLnNldEF0dHJpYnV0ZShcbiAgICAgIHN0eWxlRWxlbWVudCxcbiAgICAgICdkYXRhLXRlc3Qtc2VsZWN0b3InLFxuICAgICAgJ3NreS1vdmVybGF5LXJlc3RyaWN0LXNjcm9sbC1zdHlsZXMnLFxuICAgICk7XG5cbiAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIHRleHROb2RlKTtcbiAgICB0aGlzLiNyZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5oZWFkLCBzdHlsZUVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuI3N0eWxlRWxlbWVudCkge1xuICAgICAgdGhpcy4jZGVzdHJveVN0eWxlRWxlbWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuI3N0eWxlRWxlbWVudCA9IHN0eWxlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWxlYXNlQm9keVNjcm9sbCgpOiB2b2lkIHtcbiAgICB0aGlzLiNkZXN0cm95U3R5bGVFbGVtZW50KCk7XG4gIH1cblxuICAjZGVzdHJveVN0eWxlRWxlbWVudCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChcbiAgICAgIHRoaXMuI3N0eWxlRWxlbWVudCAmJlxuICAgICAgdGhpcy4jc3R5bGVFbGVtZW50LnBhcmVudEVsZW1lbnQgPT09IGRvY3VtZW50LmhlYWRcbiAgICApIHtcbiAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNoaWxkKGRvY3VtZW50LmhlYWQsIHRoaXMuI3N0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEFyaWFIaWRkZW5Ub1NpYmxpbmdzKFxuICAgIG92ZXJsYXlFbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICApOiBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gb3ZlcmxheUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBob3N0U2libGluZ3MgPSBvdmVybGF5RWxlbWVudC5wYXJlbnRFbGVtZW50LmNoaWxkcmVuO1xuXG4gICAgY29uc3Qgc2libGluZ0FyaWFIaWRkZW5DYWNoZSA9IG5ldyBNYXA8RWxlbWVudCwgc3RyaW5nIHwgbnVsbD4oKTtcblxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBob3N0U2libGluZ3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgZWxlbWVudCAhPT0gb3ZlcmxheUVsZW1lbnQgJiZcbiAgICAgICAgIWVsZW1lbnQuaGFzQXR0cmlidXRlKCdhcmlhLWxpdmUnKSAmJlxuICAgICAgICBlbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICdzY3JpcHQnICYmXG4gICAgICAgIGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ3N0eWxlJ1xuICAgICAgKSB7XG4gICAgICAgIC8vIHByZXNlcnZlIHByZXZpb3VzIGFyaWEtaGlkZGVuIHN0YXR1cyBvZiBlbGVtZW50cyBvdXRzaWRlIG9mIG1vZGFsIGhvc3RcbiAgICAgICAgc2libGluZ0FyaWFIaWRkZW5DYWNoZS5zZXQoXG4gICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSxcbiAgICAgICAgKTtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2libGluZ0FyaWFIaWRkZW5DYWNoZTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0b3JlQXJpYUhpZGRlbkZvclNpYmxpbmdzKFxuICAgIHNpYmxpbmdBcmlhSGlkZGVuQ2FjaGU6IE1hcDxFbGVtZW50LCBzdHJpbmcgfCBudWxsPixcbiAgKTogdm9pZCB7XG4gICAgc2libGluZ0FyaWFIaWRkZW5DYWNoZS5mb3JFYWNoKChwcmV2aW91c1ZhbHVlLCBlbGVtZW50KSA9PiB7XG4gICAgICAvLyBpZiBlbGVtZW50IGhhZCBhcmlhLWhpZGRlbiBzdGF0dXMgcHJpb3IsIHJlc3RvcmUgc3RhdHVzXG4gICAgICBpZiAoZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgIGlmIChwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgcHJldmlvdXNWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNpYmxpbmdBcmlhSGlkZGVuQ2FjaGUuY2xlYXIoKTtcbiAgfVxufVxuIl19
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvb3ZlcmxheS9vdmVybGF5LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW52aXJvbm1lbnRJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lPdmVybGF5UG9zaXRpb24gfSBmcm9tICcuL292ZXJsYXktcG9zaXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNreU92ZXJsYXlDb25maWcge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgb3ZlcmxheSBjbG9zZXMgYWZ0ZXIgYSBuYXZpZ2F0aW9uIGNoYW5nZS5cbiAgICovXG4gIGNsb3NlT25OYXZpZ2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3ZlcmxheSBjbG9zZXMgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGUgdGhlIG92ZXJsYXkncyBjb250ZW50LlxuICAgKi9cbiAgZW5hYmxlQ2xvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG1vdXNlIGludGVyYWN0aW9ucyBhcmUgYWxsb3dlZCBiZWxvdyB0aGUgYmFja2Ryb3AuXG4gICAqL1xuICBlbmFibGVQb2ludGVyRXZlbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB3aW5kb3cgc2Nyb2xsaW5nIGlzIGVuYWJsZWQgd2hlbiB0aGUgb3ZlcmxheSBpcyBvcGVuZWQuXG4gICAqL1xuICBlbmFibGVTY3JvbGw/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgaW5qZWN0b3IgZm9yIHRoZSBvdmVybGF5IGNvbXBvbmVudC5cbiAgICovXG4gIGVudmlyb25tZW50SW5qZWN0b3I/OiBFbnZpcm9ubWVudEluamVjdG9yO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBvdmVybGF5J3MgYmFja2Ryb3AgaXMgdmlzaWJsZS5cbiAgICovXG4gIHNob3dCYWNrZHJvcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4dHJhIENTUyBjbGFzc2VzIHRvIGFkZCB0byB0aGUgb3ZlcmxheSdzIHdyYXBwZXIgZWxlbWVudC5cbiAgICovXG4gIHdyYXBwZXJDbGFzcz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBvdmVybGF5IGluc3RhbmNlLlxuICAgKi9cbiAgcG9zaXRpb24/OiBTa3lPdmVybGF5UG9zaXRpb247XG5cbiAgLyoqXG4gICAqIEhpZGVzIHRoZSBvdmVybGF5J3Mgc2libGluZ3MgZnJvbSBzY3JlZW4gcmVhZGVycyBzbyB1c2VycyBjYW4ndCBpbnRlcmFjdFxuICAgKiB3aXRoIGNvbnRlbnQgYmVoaW5kIHRoZSBvdmVybGF5IHdpdGggYXNzaXN0aXZlIHRlY2hub2xvZ3kuXG4gICAqL1xuICBoaWRlT3RoZXJzRnJvbVNjcmVlblJlYWRlcnM/OiBib29sZWFuO1xufVxuIl19
|
@@ -1,10 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Contextual information for each overlay.
|
3
|
-
* @internal
|
4
|
-
*/
|
5
|
-
export class SkyOverlayContext {
|
6
|
-
constructor(config) {
|
7
|
-
this.config = config;
|
8
|
-
}
|
9
|
-
}
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL292ZXJsYXkvb3ZlcmxheS1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNEIsTUFBd0I7UUFBeEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7SUFBRyxDQUFDO0NBQ3pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5T3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuXG4vKipcbiAqIENvbnRleHR1YWwgaW5mb3JtYXRpb24gZm9yIGVhY2ggb3ZlcmxheS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5T3ZlcmxheUNvbnRleHQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBTa3lPdmVybGF5Q29uZmlnKSB7fVxufVxuIl19
|
@@ -1,62 +0,0 @@
|
|
1
|
-
import { Subject } from 'rxjs';
|
2
|
-
/**
|
3
|
-
* Represents a new overlay instance. It is used to manage the "closed" state of the overlay,
|
4
|
-
* and access any public members on the appended content component instance.
|
5
|
-
*/
|
6
|
-
export class SkyOverlayInstance {
|
7
|
-
/**
|
8
|
-
* Emits when the overlay is clicked (but not its content).
|
9
|
-
*/
|
10
|
-
get backdropClick() {
|
11
|
-
return this.#backdropClickObs;
|
12
|
-
}
|
13
|
-
/**
|
14
|
-
* Emits after the overlay is closed.
|
15
|
-
*/
|
16
|
-
get closed() {
|
17
|
-
return this.#closedObs;
|
18
|
-
}
|
19
|
-
#backdropClick;
|
20
|
-
#backdropClickObs;
|
21
|
-
#closed;
|
22
|
-
#closedObs;
|
23
|
-
constructor(
|
24
|
-
/**
|
25
|
-
* The configuration for the overlay.
|
26
|
-
*/
|
27
|
-
config, componentRef) {
|
28
|
-
this.config = config;
|
29
|
-
this.componentRef = componentRef;
|
30
|
-
this.id = this.componentRef.instance.id;
|
31
|
-
this.componentRef.instance.closed.subscribe(() => {
|
32
|
-
this.#closed.next();
|
33
|
-
this.#closed.complete();
|
34
|
-
this.#backdropClick.complete();
|
35
|
-
});
|
36
|
-
this.componentRef.instance.backdropClick.subscribe(() => {
|
37
|
-
this.#backdropClick.next();
|
38
|
-
});
|
39
|
-
this.#backdropClick = new Subject();
|
40
|
-
this.#closed = new Subject();
|
41
|
-
this.#backdropClickObs = this.#backdropClick.asObservable();
|
42
|
-
this.#closedObs = this.#closed.asObservable();
|
43
|
-
}
|
44
|
-
/**
|
45
|
-
* Creates and attaches a component to the overlay.
|
46
|
-
* @param component The component to attach.
|
47
|
-
* @param providers Custom providers to apply to the component.
|
48
|
-
*/
|
49
|
-
attachComponent(component, providers) {
|
50
|
-
const componentRef = this.componentRef.instance.attachComponent(component, providers);
|
51
|
-
return componentRef.instance;
|
52
|
-
}
|
53
|
-
/**
|
54
|
-
* Attaches a `TemplateRef` to the overlay.
|
55
|
-
* @param templateRef The `TemplateRef` to attach.
|
56
|
-
* @param context The context to provide to the template.
|
57
|
-
*/
|
58
|
-
attachTemplate(templateRef, context) {
|
59
|
-
this.componentRef.instance.attachTemplate(templateRef, context);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1pbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXktaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUszQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCOztPQUVHO0lBQ0gsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBSUQsY0FBYyxDQUFnQjtJQUU5QixpQkFBaUIsQ0FBbUI7SUFFcEMsT0FBTyxDQUFnQjtJQUV2QixVQUFVLENBQW1CO0lBRTdCO0lBQ0U7O09BRUc7SUFDYSxNQUF3QixFQUN4QixZQUErQztRQUQvQyxXQUFNLEdBQU4sTUFBTSxDQUFrQjtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBbUM7UUFFL0QsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFFeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVuQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQ3BCLFNBQWtCLEVBQ2xCLFNBQTRCO1FBRTVCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDN0QsU0FBUyxFQUNULFNBQVMsQ0FDVixDQUFDO1FBQ0YsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksY0FBYyxDQUFJLFdBQTJCLEVBQUUsT0FBVztRQUMvRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgU3RhdGljUHJvdmlkZXIsIFRlbXBsYXRlUmVmLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbmZpZyB9IGZyb20gJy4vb3ZlcmxheS1jb25maWcnO1xuaW1wb3J0IHsgU2t5T3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBuZXcgb3ZlcmxheSBpbnN0YW5jZS4gSXQgaXMgdXNlZCB0byBtYW5hZ2UgdGhlIFwiY2xvc2VkXCIgc3RhdGUgb2YgdGhlIG92ZXJsYXksXG4gKiBhbmQgYWNjZXNzIGFueSBwdWJsaWMgbWVtYmVycyBvbiB0aGUgYXBwZW5kZWQgY29udGVudCBjb21wb25lbnQgaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lPdmVybGF5SW5zdGFuY2Uge1xuICAvKipcbiAgICogRW1pdHMgd2hlbiB0aGUgb3ZlcmxheSBpcyBjbGlja2VkIChidXQgbm90IGl0cyBjb250ZW50KS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYmFja2Ryb3BDbGljaygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2Ryb3BDbGlja09icztcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhZnRlciB0aGUgb3ZlcmxheSBpcyBjbG9zZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNsb3NlZCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy4jY2xvc2VkT2JzO1xuICB9XG5cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgI2JhY2tkcm9wQ2xpY2s6IFN1YmplY3Q8dm9pZD47XG5cbiAgI2JhY2tkcm9wQ2xpY2tPYnM6IE9ic2VydmFibGU8dm9pZD47XG5cbiAgI2Nsb3NlZDogU3ViamVjdDx2b2lkPjtcblxuICAjY2xvc2VkT2JzOiBPYnNlcnZhYmxlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgb3ZlcmxheS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY29uZmlnOiBTa3lPdmVybGF5Q29uZmlnLFxuICAgIHB1YmxpYyByZWFkb25seSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxTa3lPdmVybGF5Q29tcG9uZW50PixcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmlkO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLiNjbG9zZWQubmV4dCgpO1xuICAgICAgdGhpcy4jY2xvc2VkLmNvbXBsZXRlKCk7XG4gICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLmNvbXBsZXRlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5iYWNrZHJvcENsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLiNiYWNrZHJvcENsaWNrLm5leHQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuI2JhY2tkcm9wQ2xpY2sgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHRoaXMuI2Nsb3NlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICB0aGlzLiNiYWNrZHJvcENsaWNrT2JzID0gdGhpcy4jYmFja2Ryb3BDbGljay5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLiNjbG9zZWRPYnMgPSB0aGlzLiNjbG9zZWQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgYXR0YWNoZXMgYSBjb21wb25lbnQgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSBjb21wb25lbnQgVGhlIGNvbXBvbmVudCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBwcm92aWRlcnMgQ3VzdG9tIHByb3ZpZGVycyB0byBhcHBseSB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIGF0dGFjaENvbXBvbmVudDxDPihcbiAgICBjb21wb25lbnQ6IFR5cGU8Qz4sXG4gICAgcHJvdmlkZXJzPzogU3RhdGljUHJvdmlkZXJbXSxcbiAgKTogQyB7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXR0YWNoQ29tcG9uZW50KFxuICAgICAgY29tcG9uZW50LFxuICAgICAgcHJvdmlkZXJzLFxuICAgICk7XG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2hlcyBhIGBUZW1wbGF0ZVJlZmAgdG8gdGhlIG92ZXJsYXkuXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZVJlZiBUaGUgYFRlbXBsYXRlUmVmYCB0byBhdHRhY2guXG4gICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0IHRvIHByb3ZpZGUgdG8gdGhlIHRlbXBsYXRlLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaFRlbXBsYXRlPFQ+KHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxUPiwgY29udGV4dD86IFQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hdHRhY2hUZW1wbGF0ZSh0ZW1wbGF0ZVJlZiwgY29udGV4dCk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,2 +0,0 @@
|
|
1
|
-
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1wb3NpdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9vdmVybGF5L292ZXJsYXktcG9zaXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNreU92ZXJsYXlQb3NpdGlvbiA9ICdhYnNvbHV0ZScgfCAnZml4ZWQnO1xuIl19
|