@skyux/core 8.6.0 → 9.0.0-alpha.0

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