@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.
Files changed (151) hide show
  1. package/{esm2020 → esm2022}/lib/modules/adapter-service/adapter.module.mjs +5 -5
  2. package/esm2022/lib/modules/adapter-service/adapter.service.mjs +225 -0
  3. package/esm2022/lib/modules/affix/affix.directive.mjs +116 -0
  4. package/{esm2020 → esm2022}/lib/modules/affix/affix.module.mjs +5 -5
  5. package/esm2022/lib/modules/affix/affix.service.mjs +25 -0
  6. package/esm2022/lib/modules/affix/affixer.mjs +398 -0
  7. package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +26 -0
  8. package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +81 -0
  9. package/esm2022/lib/modules/dock/dock-item.mjs +31 -0
  10. package/esm2022/lib/modules/dock/dock.component.mjs +108 -0
  11. package/{esm2020 → esm2022}/lib/modules/dock/dock.module.mjs +5 -5
  12. package/esm2022/lib/modules/dock/dock.service.mjs +96 -0
  13. package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component.module.mjs +5 -5
  14. package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +106 -0
  15. package/{esm2020 → esm2022}/lib/modules/format/app-format.mjs +4 -4
  16. package/esm2022/lib/modules/id/id.directive.mjs +31 -0
  17. package/{esm2020 → esm2022}/lib/modules/id/id.module.mjs +5 -5
  18. package/{esm2020 → esm2022}/lib/modules/id/id.service.mjs +4 -4
  19. package/esm2022/lib/modules/layout-host/layout-host.service.mjs +22 -0
  20. package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +79 -0
  21. package/{esm2020 → esm2022}/lib/modules/log/log.module.mjs +5 -5
  22. package/esm2022/lib/modules/log/log.service.mjs +148 -0
  23. package/{esm2020 → esm2022}/lib/modules/media-query/media-query.module.mjs +5 -5
  24. package/esm2022/lib/modules/media-query/media-query.service.mjs +123 -0
  25. package/{esm2020 → esm2022}/lib/modules/mutation/mutation-observer-service.mjs +4 -4
  26. package/{esm2020 → esm2022}/lib/modules/numeric/numeric.module.mjs +5 -5
  27. package/esm2022/lib/modules/numeric/numeric.pipe.mjs +81 -0
  28. package/esm2022/lib/modules/numeric/numeric.service.mjs +205 -0
  29. package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +44 -0
  30. package/esm2022/lib/modules/overlay/overlay-instance.mjs +62 -0
  31. package/esm2022/lib/modules/overlay/overlay.component.mjs +193 -0
  32. package/{esm2020 → esm2022}/lib/modules/overlay/overlay.module.mjs +5 -5
  33. package/esm2022/lib/modules/overlay/overlay.service.mjs +124 -0
  34. package/{esm2020 → esm2022}/lib/modules/percent-pipe/percent-pipe.module.mjs +5 -5
  35. package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +56 -0
  36. package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +120 -0
  37. package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +77 -0
  38. package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +223 -0
  39. package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +72 -0
  40. package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +50 -0
  41. package/esm2022/lib/modules/title/title.service.mjs +31 -0
  42. package/esm2022/lib/modules/trim/trim.directive.mjs +64 -0
  43. package/{esm2020 → esm2022}/lib/modules/trim/trim.module.mjs +5 -5
  44. package/{esm2020 → esm2022}/lib/modules/ui-config/ui-config.service.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-host-options.mjs +4 -4
  46. package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +131 -0
  47. package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +283 -0
  48. package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper.module.mjs +5 -5
  49. package/esm2022/lib/modules/viewkeeper/viewkeeper.service.mjs +39 -0
  50. package/{esm2020 → esm2022}/lib/modules/window/window-ref.mjs +4 -4
  51. package/esm2022/testing/core-testing.module.mjs +32 -0
  52. package/esm2022/testing/mock-media-query.service.mjs +46 -0
  53. package/{esm2020 → esm2022}/testing/mock-ui-config.service.mjs +4 -4
  54. package/esm2022/testing/overlay/overlay-harness.mjs +43 -0
  55. package/esm2022/testing/shared/component-harness.mjs +13 -0
  56. package/{fesm2020 → fesm2022}/skyux-core-testing.mjs +28 -34
  57. package/{fesm2020 → fesm2022}/skyux-core-testing.mjs.map +1 -1
  58. package/fesm2022/skyux-core.mjs +3858 -0
  59. package/fesm2022/skyux-core.mjs.map +1 -0
  60. package/lib/modules/affix/affix.directive.d.ts +1 -1
  61. package/lib/modules/viewkeeper/viewkeeper.directive.d.ts +1 -1
  62. package/package.json +14 -22
  63. package/esm2020/lib/modules/adapter-service/adapter.service.mjs +0 -227
  64. package/esm2020/lib/modules/affix/affix.directive.mjs +0 -118
  65. package/esm2020/lib/modules/affix/affix.service.mjs +0 -28
  66. package/esm2020/lib/modules/affix/affixer.mjs +0 -377
  67. package/esm2020/lib/modules/default-input-provider/default-input-provider.mjs +0 -31
  68. package/esm2020/lib/modules/dock/dock-dom-adapter.service.mjs +0 -83
  69. package/esm2020/lib/modules/dock/dock-item.mjs +0 -34
  70. package/esm2020/lib/modules/dock/dock.component.mjs +0 -110
  71. package/esm2020/lib/modules/dock/dock.service.mjs +0 -98
  72. package/esm2020/lib/modules/dynamic-component/dynamic-component.service.mjs +0 -109
  73. package/esm2020/lib/modules/id/id.directive.mjs +0 -34
  74. package/esm2020/lib/modules/layout-host/layout-host.service.mjs +0 -27
  75. package/esm2020/lib/modules/live-announcer/live-announcer.service.mjs +0 -80
  76. package/esm2020/lib/modules/log/log.service.mjs +0 -147
  77. package/esm2020/lib/modules/media-query/media-query.service.mjs +0 -124
  78. package/esm2020/lib/modules/numeric/numeric.pipe.mjs +0 -84
  79. package/esm2020/lib/modules/numeric/numeric.service.mjs +0 -179
  80. package/esm2020/lib/modules/overlay/overlay-adapter.service.mjs +0 -47
  81. package/esm2020/lib/modules/overlay/overlay-instance.mjs +0 -65
  82. package/esm2020/lib/modules/overlay/overlay.component.mjs +0 -192
  83. package/esm2020/lib/modules/overlay/overlay.service.mjs +0 -125
  84. package/esm2020/lib/modules/percent-pipe/percent.pipe.mjs +0 -59
  85. package/esm2020/lib/modules/resize-observer/resize-observer-media-query.service.mjs +0 -121
  86. package/esm2020/lib/modules/resize-observer/resize-observer.service.mjs +0 -79
  87. package/esm2020/lib/modules/scrollable-host/scrollable-host.service.mjs +0 -218
  88. package/esm2020/lib/modules/shared/number-format/number-format-utility.mjs +0 -72
  89. package/esm2020/lib/modules/shared/sky-core-resources.module.mjs +0 -50
  90. package/esm2020/lib/modules/title/title.service.mjs +0 -34
  91. package/esm2020/lib/modules/trim/trim.directive.mjs +0 -65
  92. package/esm2020/lib/modules/viewkeeper/viewkeeper.directive.mjs +0 -131
  93. package/esm2020/lib/modules/viewkeeper/viewkeeper.mjs +0 -276
  94. package/esm2020/lib/modules/viewkeeper/viewkeeper.service.mjs +0 -42
  95. package/esm2020/testing/core-testing.module.mjs +0 -32
  96. package/esm2020/testing/mock-media-query.service.mjs +0 -46
  97. package/esm2020/testing/overlay/overlay-harness.mjs +0 -43
  98. package/esm2020/testing/shared/component-harness.mjs +0 -19
  99. package/fesm2015/skyux-core-testing.mjs +0 -209
  100. package/fesm2015/skyux-core-testing.mjs.map +0 -1
  101. package/fesm2015/skyux-core.mjs +0 -3835
  102. package/fesm2015/skyux-core.mjs.map +0 -1
  103. package/fesm2020/skyux-core.mjs +0 -3825
  104. package/fesm2020/skyux-core.mjs.map +0 -1
  105. /package/{esm2020 → esm2022}/index.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/modules/adapter-service/focusable-children-options.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/modules/affix/affix-auto-fit-context.mjs +0 -0
  108. /package/{esm2020 → esm2022}/lib/modules/affix/affix-config.mjs +0 -0
  109. /package/{esm2020 → esm2022}/lib/modules/affix/affix-horizontal-alignment.mjs +0 -0
  110. /package/{esm2020 → esm2022}/lib/modules/affix/affix-offset-change.mjs +0 -0
  111. /package/{esm2020 → esm2022}/lib/modules/affix/affix-offset.mjs +0 -0
  112. /package/{esm2020 → esm2022}/lib/modules/affix/affix-placement-change.mjs +0 -0
  113. /package/{esm2020 → esm2022}/lib/modules/affix/affix-placement.mjs +0 -0
  114. /package/{esm2020 → esm2022}/lib/modules/affix/affix-position.mjs +0 -0
  115. /package/{esm2020 → esm2022}/lib/modules/affix/affix-rect.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/modules/affix/affix-utils.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/modules/affix/affix-vertical-alignment.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/modules/affix/dom-utils.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/modules/dock/dock-insert-component-config.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/modules/dock/dock-item-config.mjs +0 -0
  121. /package/{esm2020 → esm2022}/lib/modules/dock/dock-item-reference.mjs +0 -0
  122. /package/{esm2020 → esm2022}/lib/modules/dock/dock-location.mjs +0 -0
  123. /package/{esm2020 → esm2022}/lib/modules/dock/dock-options.mjs +0 -0
  124. /package/{esm2020 → esm2022}/lib/modules/dock/sort-by-stack-order.mjs +0 -0
  125. /package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component-location.mjs +0 -0
  126. /package/{esm2020 → esm2022}/lib/modules/dynamic-component/dynamic-component-options.mjs +0 -0
  127. /package/{esm2020 → esm2022}/lib/modules/layout-host/layout-host-for-child-args.mjs +0 -0
  128. /package/{esm2020 → esm2022}/lib/modules/live-announcer/types/live-announcer-args.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/modules/live-announcer/types/live-announcer-politeness.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/modules/log/types/log-deprecation-args.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/modules/log/types/log-level-token.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/modules/log/types/log-level.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/modules/media-query/media-breakpoints.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/modules/media-query/media-query-listener.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/modules/numeric/numeric-symbol.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/modules/numeric/numeric.options.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-config.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-context.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/modules/overlay/overlay-position.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/modules/stacking-context/stacking-context-token.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/modules/stacking-context/stacking-context.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/modules/title/set-title-args.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-boundary-info.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-fixed-styles.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-offset.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/modules/viewkeeper/viewkeeper-options.mjs +0 -0
  147. /package/{esm2020 → esm2022}/skyux-core.mjs +0 -0
  148. /package/{esm2020 → esm2022}/testing/overlay/overlay-harness-filters.mjs +0 -0
  149. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  150. /package/{esm2020 → esm2022}/testing/shared/harness-filters.mjs +0 -0
  151. /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
- SkyLogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9sb2cvbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sWUFBWTs7eUdBQVosWUFBWTswR0FBWixZQUFZOzBHQUFaLFlBQVk7MkZBQVosWUFBWTtrQkFEeEIsUUFBUTttQkFBQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBUaGUgYFNreUxvZ1NlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreUxvZ01vZHVsZWAuXG4gKiBUaGUgYFNreUxvZ01vZHVsZWAgY2FuIGJlIHJlbW92ZWQgZnJvbSB5b3VyIHByb2plY3QuXG4gKi9cbkBOZ01vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBTa3lMb2dNb2R1bGUge31cbiJdfQ==
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
- SkyMediaQueryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2NvcmUvc3JjL2xpYi9tb2R1bGVzL21lZGlhLXF1ZXJ5L21lZGlhLXF1ZXJ5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUV6Qzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUI7aUhBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixRQUFRO21CQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoZSBgU2t5TWVkaWFRdWVyeVNlcnZpY2VgIG5vIGxvbmdlciBuZWVkcyB0aGUgYFNreU1lZGlhUXVlcnlNb2R1bGVgLlxuICogVGhlIGBTa3lNZWRpYVF1ZXJ5TW9kdWxlYCBjYW4gYmUgcmVtb3ZlZCBmcm9tIHlvdXIgcHJvamVjdC5cbiAqL1xuQE5nTW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIFNreU1lZGlhUXVlcnlNb2R1bGUge31cbiJdfQ==
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
- SkyMutationObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMutationObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXV0YXRpb24tb2JzZXJ2ZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy9saWIvbW9kdWxlcy9tdXRhdGlvbi9tdXRhdGlvbi1vYnNlcnZlci1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUM5QixNQUFNLENBQUMsUUFBMEI7UUFDdEMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O3VIQUhVLDBCQUEwQjsySEFBMUIsMEJBQTBCLGNBRnpCLE1BQU07MkZBRVAsMEJBQTBCO2tCQUh0QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreU11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlIHtcbiAgcHVibGljIGNyZWF0ZShjYWxsYmFjazogTXV0YXRpb25DYWxsYmFjayk6IE11dGF0aW9uT2JzZXJ2ZXIge1xuICAgIHJldHVybiBuZXcgTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gIH1cbn1cbiJdfQ==
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
- SkyNumericModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtZXJpYy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvbnVtZXJpYy9udW1lcmljLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFN0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVFoRCxNQUFNLE9BQU8sZ0JBQWdCOzs2R0FBaEIsZ0JBQWdCOzhHQUFoQixnQkFBZ0IsaUJBTFosY0FBYyxhQUVuQixhQUFhLEVBQUUsc0JBQXNCLGFBQ3JDLGNBQWM7OEdBRWIsZ0JBQWdCLGFBSmhCLENBQUMsY0FBYyxDQUFDLFlBQ2pCLGFBQWEsRUFBRSxzQkFBc0I7MkZBR3BDLGdCQUFnQjtrQkFONUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUM7b0JBQzlCLFNBQVMsRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDM0IsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLHNCQUFzQixDQUFDO29CQUNoRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreUNvcmVSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWNvcmUtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreU51bWVyaWNQaXBlIH0gZnJvbSAnLi9udW1lcmljLnBpcGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtTa3lOdW1lcmljUGlwZV0sXG4gIHByb3ZpZGVyczogW1NreU51bWVyaWNQaXBlXSxcbiAgaW1wb3J0czogW1NreUkxOG5Nb2R1bGUsIFNreUNvcmVSZXNvdXJjZXNNb2R1bGVdLFxuICBleHBvcnRzOiBbU2t5TnVtZXJpY1BpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lOdW1lcmljTW9kdWxlIHt9XG4iXX0=
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==