@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
@@ -1,3835 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { NgModule, Injectable, EventEmitter, Directive, Input, Output, Injector, ViewContainerRef, Component, ChangeDetectionStrategy, ViewChild, createComponent, inject, InjectionToken, Optional, Inject, Pipe, ElementRef, HostBinding } from '@angular/core';
3
- import { __classPrivateFieldSet, __classPrivateFieldGet, __awaiter } from 'tslib';
4
- import * as i5 from '@angular/common';
5
- import { CommonModule, DOCUMENT } from '@angular/common';
6
- import { Subject, fromEvent, ReplaySubject, BehaviorSubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
7
- import { takeUntil, debounceTime, finalize, switchMap, map } from 'rxjs/operators';
8
- import * as i1 from '@skyux/i18n';
9
- import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
10
- import * as i4 from '@angular/router';
11
- import { NavigationStart } from '@angular/router';
12
- import * as i1$1 from '@angular/platform-browser';
13
-
14
- /**
15
- * @deprecated The `SkyCoreAdapterService` no longer needs the `SkyCoreAdapterModule`.
16
- * The `SkyCoreAdapterModule` can be removed from your project.
17
- */
18
- class SkyCoreAdapterModule {
19
- }
20
- SkyCoreAdapterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
21
- SkyCoreAdapterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterModule });
22
- SkyCoreAdapterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterModule });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterModule, decorators: [{
24
- type: NgModule,
25
- args: [{}]
26
- }] });
27
-
28
- var SkyMediaBreakpoints;
29
- (function (SkyMediaBreakpoints) {
30
- /**
31
- * Screen widths of 767px or less.
32
- */
33
- SkyMediaBreakpoints[SkyMediaBreakpoints["xs"] = 1] = "xs";
34
- /**
35
- * Screen widths of 768px to 991px.
36
- */
37
- SkyMediaBreakpoints[SkyMediaBreakpoints["sm"] = 2] = "sm";
38
- /**
39
- * Screen widths of 992px to 1199px.
40
- */
41
- SkyMediaBreakpoints[SkyMediaBreakpoints["md"] = 3] = "md";
42
- /**
43
- * Screen widths of 1200px or greater.
44
- */
45
- SkyMediaBreakpoints[SkyMediaBreakpoints["lg"] = 4] = "lg";
46
- })(SkyMediaBreakpoints || (SkyMediaBreakpoints = {}));
47
-
48
- var _SkyCoreAdapterService_instances, _SkyCoreAdapterService_renderer, _SkyCoreAdapterService_focusFirstElement, _SkyCoreAdapterService_isVisible;
49
- const SKY_TABBABLE_SELECTOR = [
50
- 'a[href]',
51
- 'area[href]',
52
- 'input:not([disabled])',
53
- 'button:not([disabled])',
54
- 'select:not([disabled])',
55
- 'textarea:not([disabled])',
56
- 'iframe',
57
- 'object',
58
- 'embed',
59
- '*[contenteditable=true]:not([disabled])',
60
- '*[tabindex]:not([disabled])',
61
- ].join(', ');
62
- class SkyCoreAdapterService {
63
- constructor(rendererFactory) {
64
- _SkyCoreAdapterService_instances.add(this);
65
- _SkyCoreAdapterService_renderer.set(this, void 0);
66
- __classPrivateFieldSet(this, _SkyCoreAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
67
- }
68
- /**
69
- * Set the responsive container CSS class for a given element.
70
- *
71
- * @param elementRef - The element that will receive the new CSS class.
72
- * @param breakpoint - The SkyMediaBreakpoint will determine which class
73
- * gets set. For example a SkyMediaBreakpoint of `xs` will set a CSS class of `sky-responsive-container-xs`.
74
- */
75
- setResponsiveContainerClass(elementRef, breakpoint) {
76
- const nativeEl = elementRef.nativeElement;
77
- __classPrivateFieldGet(this, _SkyCoreAdapterService_renderer, "f").removeClass(nativeEl, 'sky-responsive-container-xs');
78
- __classPrivateFieldGet(this, _SkyCoreAdapterService_renderer, "f").removeClass(nativeEl, 'sky-responsive-container-sm');
79
- __classPrivateFieldGet(this, _SkyCoreAdapterService_renderer, "f").removeClass(nativeEl, 'sky-responsive-container-md');
80
- __classPrivateFieldGet(this, _SkyCoreAdapterService_renderer, "f").removeClass(nativeEl, 'sky-responsive-container-lg');
81
- let newClass;
82
- switch (breakpoint) {
83
- case SkyMediaBreakpoints.xs: {
84
- newClass = 'sky-responsive-container-xs';
85
- break;
86
- }
87
- case SkyMediaBreakpoints.sm: {
88
- newClass = 'sky-responsive-container-sm';
89
- break;
90
- }
91
- case SkyMediaBreakpoints.md: {
92
- newClass = 'sky-responsive-container-md';
93
- break;
94
- }
95
- default: {
96
- newClass = 'sky-responsive-container-lg';
97
- break;
98
- }
99
- }
100
- __classPrivateFieldGet(this, _SkyCoreAdapterService_renderer, "f").addClass(nativeEl, newClass);
101
- }
102
- /**
103
- * This method temporarily enables/disables pointer events.
104
- * This is helpful to prevent iFrames from interfering with drag events.
105
- *
106
- * @param enable - Set to `true` to enable pointer events. Set to `false` to disable.
107
- */
108
- toggleIframePointerEvents(enable) {
109
- const iframes = document.querySelectorAll('iframe');
110
- for (let i = 0; i < iframes.length; i++) {
111
- // Setting to empty string will allow iframe to fall back to its prior CSS assignment.
112
- iframes[i].style.pointerEvents = enable ? '' : 'none';
113
- }
114
- }
115
- /**
116
- * Focuses on the first element found with an `autofocus` attribute inside the supplied `elementRef`.
117
- *
118
- * @param elementRef - The element to search within.
119
- * @return Returns `true` if a child element with autofocus is found.
120
- */
121
- applyAutoFocus(elementRef) {
122
- if (!elementRef) {
123
- return false;
124
- }
125
- const elementWithAutoFocus = elementRef.nativeElement.querySelector('[autofocus]');
126
- // Child was found with the autofocus property. Set focus and return true.
127
- if (elementWithAutoFocus) {
128
- elementWithAutoFocus.focus();
129
- return true;
130
- }
131
- // No children were found with autofocus property. Return false.
132
- return false;
133
- }
134
- /**
135
- * Sets focus on the first focusable child of the `elementRef` parameter.
136
- * If no focusable children are found, and `focusOnContainerIfNoChildrenFound` is `true`,
137
- * focus will be set on the container element.
138
- *
139
- * @param elementRef - The element to search within.
140
- * @param containerSelector - A CSS selector indicating the container that should
141
- * receive focus if no focusable children are found.
142
- * @param focusOnContainerIfNoChildrenFound - It set to `true`, the container will
143
- * receive focus if no focusable children are found.
144
- */
145
- getFocusableChildrenAndApplyFocus(elementRef, containerSelector, focusOnContainerIfNoChildrenFound = false) {
146
- const containerElement = elementRef.nativeElement.querySelector(containerSelector);
147
- if (containerElement) {
148
- const focusableChildren = this.getFocusableChildren(containerElement);
149
- // Focus first focusable child if available. Otherwise, set focus on container.
150
- if (!__classPrivateFieldGet(this, _SkyCoreAdapterService_instances, "m", _SkyCoreAdapterService_focusFirstElement).call(this, focusableChildren) &&
151
- focusOnContainerIfNoChildrenFound) {
152
- containerElement.focus();
153
- }
154
- }
155
- }
156
- /**
157
- * Returns an array of all focusable children of provided `element`.
158
- *
159
- * @param element - The HTMLElement to search within.
160
- * @param options - Options for getting focusable children.
161
- */
162
- getFocusableChildren(element, options) {
163
- if (!element) {
164
- return [];
165
- }
166
- let elements = Array.prototype.slice.call(element.querySelectorAll(SKY_TABBABLE_SELECTOR));
167
- // Unless ignoreTabIndex = true, filter out elements with tabindex = -1.
168
- if (!options || !options.ignoreTabIndex) {
169
- elements = elements.filter((el) => {
170
- return el.tabIndex !== -1;
171
- });
172
- }
173
- // Unless ignoreVisibility = true, filter out elements that are not visible.
174
- if (!options || !options.ignoreVisibility) {
175
- elements = elements.filter((el) => {
176
- return __classPrivateFieldGet(this, _SkyCoreAdapterService_instances, "m", _SkyCoreAdapterService_isVisible).call(this, el);
177
- });
178
- }
179
- return elements;
180
- }
181
- /**
182
- * Returns the clientWidth of the provided elementRef.
183
- * @param elementRef - The element to calculate width from.
184
- */
185
- getWidth(elementRef) {
186
- return elementRef.nativeElement.clientWidth;
187
- }
188
- /**
189
- * Checks if an event target has a higher z-index than a given element.
190
- * @param target The event target element.
191
- * @param element The element to test against. A z-index must be explicitly set for this element.
192
- */
193
- isTargetAboveElement(target, element) {
194
- const zIndex = getComputedStyle(element).zIndex;
195
- let el = target;
196
- while (el) {
197
- // Getting the computed style only works for elements that exist in the DOM.
198
- // In certain scenarios, an element is removed after a click event; by the time the event
199
- // bubbles up to other elements, however, the element has been removed and the computed style returns empty.
200
- // In this case, we'll need to check the z-index directly, via the style property.
201
- const targetZIndex = getComputedStyle(el).zIndex || el.style.zIndex;
202
- if (targetZIndex !== '' &&
203
- targetZIndex !== 'auto' &&
204
- +targetZIndex > +zIndex) {
205
- return true;
206
- }
207
- el = el.parentElement;
208
- }
209
- return false;
210
- }
211
- /**
212
- * Remove inline height styles from the provided elements.
213
- * @param elementRef - The element to search within.
214
- * @param selector - The CSS selector to use when finding elements for removing height.
215
- */
216
- resetHeight(elementRef, selector) {
217
- const children = elementRef.nativeElement.querySelectorAll(selector);
218
- /* istanbul ignore else */
219
- if (children.length > 0) {
220
- for (let i = 0; i < children.length; i++) {
221
- // Setting style attributes with Web API requires null instead of undefined.
222
- children[i].style.height = null;
223
- }
224
- }
225
- }
226
- /**
227
- * Sets all element heights to match the height of the tallest element.
228
- * @param elementRef - The element to search within.
229
- * @param selector - The CSS selector to use when finding elements for syncing height.
230
- */
231
- syncMaxHeight(elementRef, selector) {
232
- const children = elementRef.nativeElement.querySelectorAll(selector);
233
- /* istanbul ignore else */
234
- if (children.length > 0) {
235
- let maxHeight = 0;
236
- for (let i = 0; i < children.length; i++) {
237
- maxHeight = Math.max(maxHeight, children[i].offsetHeight);
238
- }
239
- for (let i = 0; i < children.length; i++) {
240
- children[i].style.height = maxHeight + 'px';
241
- }
242
- }
243
- }
244
- }
245
- _SkyCoreAdapterService_renderer = new WeakMap(), _SkyCoreAdapterService_instances = new WeakSet(), _SkyCoreAdapterService_focusFirstElement = function _SkyCoreAdapterService_focusFirstElement(list) {
246
- if (list.length > 0) {
247
- list[0].focus();
248
- return true;
249
- }
250
- return false;
251
- }, _SkyCoreAdapterService_isVisible = function _SkyCoreAdapterService_isVisible(element) {
252
- const style = window.getComputedStyle(element);
253
- const isHidden = style.display === 'none' || style.visibility === 'hidden';
254
- if (isHidden) {
255
- return false;
256
- }
257
- const hasBounds = !!(element.offsetWidth ||
258
- element.offsetHeight ||
259
- element.getClientRects().length);
260
- return hasBounds;
261
- };
262
- SkyCoreAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
263
- SkyCoreAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterService, providedIn: 'root' });
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreAdapterService, decorators: [{
265
- type: Injectable,
266
- args: [{
267
- providedIn: 'root',
268
- }]
269
- }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
270
-
271
- var SkyAffixAutoFitContext;
272
- (function (SkyAffixAutoFitContext) {
273
- /**
274
- * Auto-fit functionality will respect the nearest overflow parent element's dimensions.
275
- */
276
- SkyAffixAutoFitContext[SkyAffixAutoFitContext["OverflowParent"] = 0] = "OverflowParent";
277
- /**
278
- * Auto-fit functionality will respect the browser viewport dimensions.
279
- */
280
- SkyAffixAutoFitContext[SkyAffixAutoFitContext["Viewport"] = 1] = "Viewport";
281
- })(SkyAffixAutoFitContext || (SkyAffixAutoFitContext = {}));
282
-
283
- function getNextPlacement(placement) {
284
- const placements = ['above', 'right', 'below', 'left'];
285
- let index = placements.indexOf(placement) + 1;
286
- if (index >= placements.length) {
287
- index = 0;
288
- }
289
- return placements[index];
290
- }
291
- function getInversePlacement(placement) {
292
- const pairings = {
293
- above: 'below',
294
- below: 'above',
295
- right: 'left',
296
- left: 'right',
297
- };
298
- return pairings[placement];
299
- }
300
-
301
- /**
302
- * Returns the offset values of a given element.
303
- * @param element The HTML element.
304
- * @param bufferOffset An optional offset to add/subtract to the element's actual offset.
305
- */
306
- function getElementOffset(element, bufferOffset) {
307
- const bufferOffsetBottom = (bufferOffset === null || bufferOffset === void 0 ? void 0 : bufferOffset.bottom) || 0;
308
- const bufferOffsetLeft = (bufferOffset === null || bufferOffset === void 0 ? void 0 : bufferOffset.left) || 0;
309
- const bufferOffsetRight = (bufferOffset === null || bufferOffset === void 0 ? void 0 : bufferOffset.right) || 0;
310
- const bufferOffsetTop = (bufferOffset === null || bufferOffset === void 0 ? void 0 : bufferOffset.top) || 0;
311
- let top;
312
- let left;
313
- let right;
314
- let bottom;
315
- if (element === document.body) {
316
- left = 0;
317
- top = 0;
318
- right = document.documentElement.clientWidth;
319
- bottom = document.documentElement.clientHeight;
320
- }
321
- else {
322
- const clientRect = element.getBoundingClientRect();
323
- left = clientRect.left;
324
- top = clientRect.top;
325
- right = clientRect.right;
326
- bottom = clientRect.bottom;
327
- }
328
- bottom -= bufferOffsetBottom;
329
- left += bufferOffsetLeft;
330
- right -= bufferOffsetRight;
331
- top += bufferOffsetTop;
332
- return {
333
- bottom,
334
- left,
335
- right,
336
- top,
337
- };
338
- }
339
- function getOverflowParents(child) {
340
- const bodyElement = window.document.body;
341
- const results = [bodyElement];
342
- let parentElement = child === null || child === void 0 ? void 0 : child.parentNode;
343
- while (parentElement !== undefined &&
344
- parentElement !== bodyElement &&
345
- parentElement instanceof HTMLElement) {
346
- const overflowY = window
347
- .getComputedStyle(parentElement, undefined)
348
- .overflowY.toLowerCase();
349
- if (overflowY === 'auto' ||
350
- overflowY === 'hidden' ||
351
- overflowY === 'scroll') {
352
- results.push(parentElement);
353
- }
354
- parentElement = parentElement.parentNode;
355
- }
356
- return results;
357
- }
358
- /**
359
- * Confirms offset is fully visible within a parent element.
360
- * @param parent
361
- * @param offset
362
- */
363
- function isOffsetFullyVisibleWithinParent(parent, offset, bufferOffset) {
364
- const parentOffset = getElementOffset(parent, bufferOffset);
365
- return !(parentOffset.top > offset.top ||
366
- parentOffset.right < offset.right ||
367
- parentOffset.bottom < offset.bottom ||
368
- parentOffset.left > offset.left);
369
- }
370
- function isOffsetPartiallyVisibleWithinParent(parent, offset, bufferOffset) {
371
- const parentOffset = getElementOffset(parent, bufferOffset);
372
- return !(parentOffset.top >= offset.bottom ||
373
- parentOffset.right <= offset.left ||
374
- parentOffset.bottom <= offset.top ||
375
- parentOffset.left >= offset.right);
376
- }
377
-
378
- var _SkyAffixer_instances, _SkyAffixer_config_get, _SkyAffixer_config_set, _SkyAffixer_affixedElement, _SkyAffixer_baseElement, _SkyAffixer_currentOffset, _SkyAffixer_currentPlacement, _SkyAffixer_offsetChange, _SkyAffixer_offsetChangeObs, _SkyAffixer_overflowParents, _SkyAffixer_overflowScroll, _SkyAffixer_overflowScrollObs, _SkyAffixer_placementChange, _SkyAffixer_placementChangeObs, _SkyAffixer_renderer, _SkyAffixer_resizeListener, _SkyAffixer_scrollListeners, _SkyAffixer__config, _SkyAffixer_affix, _SkyAffixer_getOffset, _SkyAffixer_getRect, _SkyAffixer_getPreferredOffset, _SkyAffixer_adjustOffsetToOverflowParent, _SkyAffixer_getImmediateOverflowParent, _SkyAffixer_getAutoFitContextParent, _SkyAffixer_notifyPlacementChange, _SkyAffixer_reset, _SkyAffixer_isNewOffset, _SkyAffixer_isBaseElementVisible, _SkyAffixer_addScrollListeners, _SkyAffixer_addResizeListener, _SkyAffixer_removeResizeListener, _SkyAffixer_removeScrollListeners;
379
- const DEFAULT_AFFIX_CONFIG = {
380
- autoFitContext: SkyAffixAutoFitContext.OverflowParent,
381
- enableAutoFit: false,
382
- horizontalAlignment: 'center',
383
- isSticky: false,
384
- placement: 'above',
385
- };
386
- class SkyAffixer {
387
- /**
388
- * Fires when the affixed element's offset changes.
389
- */
390
- get offsetChange() {
391
- return __classPrivateFieldGet(this, _SkyAffixer_offsetChangeObs, "f");
392
- }
393
- /**
394
- * Fires when the base element's nearest overflow parent is scrolling. This is useful if you need
395
- * to perform an additional action during the scroll event but don't want to generate another
396
- * event listener.
397
- */
398
- get overflowScroll() {
399
- return __classPrivateFieldGet(this, _SkyAffixer_overflowScrollObs, "f");
400
- }
401
- /**
402
- * Fires when the placement value changes. A `null` value indicates that a suitable
403
- * placement could not be found.
404
- */
405
- get placementChange() {
406
- return __classPrivateFieldGet(this, _SkyAffixer_placementChangeObs, "f");
407
- }
408
- constructor(affixedElement, renderer) {
409
- _SkyAffixer_instances.add(this);
410
- _SkyAffixer_affixedElement.set(this, void 0);
411
- _SkyAffixer_baseElement.set(this, void 0);
412
- _SkyAffixer_currentOffset.set(this, void 0);
413
- _SkyAffixer_currentPlacement.set(this, void 0);
414
- _SkyAffixer_offsetChange.set(this, void 0);
415
- _SkyAffixer_offsetChangeObs.set(this, void 0);
416
- _SkyAffixer_overflowParents.set(this, []);
417
- _SkyAffixer_overflowScroll.set(this, void 0);
418
- _SkyAffixer_overflowScrollObs.set(this, void 0);
419
- _SkyAffixer_placementChange.set(this, void 0);
420
- _SkyAffixer_placementChangeObs.set(this, void 0);
421
- _SkyAffixer_renderer.set(this, void 0);
422
- _SkyAffixer_resizeListener.set(this, void 0);
423
- _SkyAffixer_scrollListeners.set(this, void 0);
424
- _SkyAffixer__config.set(this, DEFAULT_AFFIX_CONFIG);
425
- __classPrivateFieldSet(this, _SkyAffixer_affixedElement, affixedElement, "f");
426
- __classPrivateFieldSet(this, _SkyAffixer_renderer, renderer, "f");
427
- __classPrivateFieldSet(this, _SkyAffixer_offsetChange, new Subject(), "f");
428
- __classPrivateFieldSet(this, _SkyAffixer_overflowScroll, new Subject(), "f");
429
- __classPrivateFieldSet(this, _SkyAffixer_placementChange, new Subject(), "f");
430
- __classPrivateFieldSet(this, _SkyAffixer_offsetChangeObs, __classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").asObservable(), "f");
431
- __classPrivateFieldSet(this, _SkyAffixer_overflowScrollObs, __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").asObservable(), "f");
432
- __classPrivateFieldSet(this, _SkyAffixer_placementChangeObs, __classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").asObservable(), "f");
433
- }
434
- /**
435
- * Affixes an element to a base element.
436
- * @param baseElement The base element.
437
- * @param config Configuration for the affix action.
438
- */
439
- affixTo(baseElement, config) {
440
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_reset).call(this);
441
- __classPrivateFieldSet(this, _SkyAffixer_instances, config, "a", _SkyAffixer_config_set);
442
- __classPrivateFieldSet(this, _SkyAffixer_baseElement, baseElement, "f");
443
- __classPrivateFieldSet(this, _SkyAffixer_overflowParents, getOverflowParents(baseElement), "f");
444
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
445
- if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).isSticky) {
446
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addScrollListeners).call(this);
447
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addResizeListener).call(this);
448
- }
449
- }
450
- getConfig() {
451
- return __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get);
452
- }
453
- /**
454
- * Re-runs the affix calculation.
455
- */
456
- reaffix() {
457
- // Reset current placement to preferred placement.
458
- __classPrivateFieldSet(this, _SkyAffixer_currentPlacement, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement, "f");
459
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
460
- }
461
- /**
462
- * Destroys the affixer.
463
- */
464
- destroy() {
465
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_reset).call(this);
466
- __classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").complete();
467
- __classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").complete();
468
- __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").complete();
469
- }
470
- }
471
- _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMap(), _SkyAffixer_currentOffset = new WeakMap(), _SkyAffixer_currentPlacement = new WeakMap(), _SkyAffixer_offsetChange = new WeakMap(), _SkyAffixer_offsetChangeObs = new WeakMap(), _SkyAffixer_overflowParents = new WeakMap(), _SkyAffixer_overflowScroll = new WeakMap(), _SkyAffixer_overflowScrollObs = new WeakMap(), _SkyAffixer_placementChange = new WeakMap(), _SkyAffixer_placementChangeObs = new WeakMap(), _SkyAffixer_renderer = new WeakMap(), _SkyAffixer_resizeListener = new WeakMap(), _SkyAffixer_scrollListeners = new WeakMap(), _SkyAffixer__config = new WeakMap(), _SkyAffixer_instances = new WeakSet(), _SkyAffixer_config_get = function _SkyAffixer_config_get() {
472
- return __classPrivateFieldGet(this, _SkyAffixer__config, "f");
473
- }, _SkyAffixer_config_set = function _SkyAffixer_config_set(value) {
474
- const merged = Object.assign(Object.assign({}, DEFAULT_AFFIX_CONFIG), value);
475
- // Make sure none of the values are undefined.
476
- let key;
477
- for (key in merged) {
478
- if (merged[key] === undefined) {
479
- merged[key] = DEFAULT_AFFIX_CONFIG[key];
480
- }
481
- }
482
- __classPrivateFieldSet(this, _SkyAffixer__config, merged, "f");
483
- }, _SkyAffixer_affix = function _SkyAffixer_affix() {
484
- const offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getOffset).call(this);
485
- if (__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_isNewOffset).call(this, offset)) {
486
- __classPrivateFieldGet(this, _SkyAffixer_renderer, "f").setStyle(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"), 'top', `${offset.top}px`);
487
- __classPrivateFieldGet(this, _SkyAffixer_renderer, "f").setStyle(__classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"), 'left', `${offset.left}px`);
488
- __classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").next({ offset });
489
- }
490
- }, _SkyAffixer_getOffset = function _SkyAffixer_getOffset() {
491
- const parent = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getAutoFitContextParent).call(this);
492
- const maxAttempts = 4;
493
- let attempts = 0;
494
- let isAffixedElementFullyVisible = false;
495
- let offset;
496
- let placement = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement;
497
- const autoFitOverflowOffset = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset || {
498
- bottom: 0,
499
- left: 0,
500
- right: 0,
501
- top: 0,
502
- };
503
- if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
504
- autoFitOverflowOffset.top =
505
- (autoFitOverflowOffset.top || 0) + window.scrollY;
506
- }
507
- do {
508
- offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, placement);
509
- isAffixedElementFullyVisible = isOffsetFullyVisibleWithinParent(parent, offset, autoFitOverflowOffset);
510
- if (!__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit) {
511
- break;
512
- }
513
- if (!isAffixedElementFullyVisible) {
514
- placement =
515
- attempts % 2 === 0
516
- ? getInversePlacement(placement)
517
- : getNextPlacement(placement);
518
- }
519
- attempts++;
520
- } while (!isAffixedElementFullyVisible && attempts < maxAttempts);
521
- if (isAffixedElementFullyVisible) {
522
- if (__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_isBaseElementVisible).call(this)) {
523
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_notifyPlacementChange).call(this, placement);
524
- }
525
- else {
526
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_notifyPlacementChange).call(this, null);
527
- }
528
- return offset;
529
- }
530
- if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit) {
531
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_notifyPlacementChange).call(this, null);
532
- }
533
- // No suitable placement was found, so revert to preferred placement.
534
- return __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).placement);
535
- }, _SkyAffixer_getRect = function _SkyAffixer_getRect(baseElement) {
536
- const baseDomRect = baseElement.getBoundingClientRect();
537
- const baseRect = {
538
- top: baseDomRect.top,
539
- bottom: baseDomRect.bottom,
540
- left: baseDomRect.left,
541
- right: baseDomRect.right,
542
- width: baseDomRect.width,
543
- height: baseDomRect.height,
544
- };
545
- if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
546
- baseRect.top += window.scrollY;
547
- baseRect.bottom = baseRect.top + baseDomRect.height;
548
- }
549
- return baseRect;
550
- }, _SkyAffixer_getPreferredOffset = function _SkyAffixer_getPreferredOffset(placement) {
551
- if (!__classPrivateFieldGet(this, _SkyAffixer_baseElement, "f")) {
552
- return { top: 0, left: 0, bottom: 0, right: 0 };
553
- }
554
- const affixedRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, __classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"));
555
- const baseRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f"));
556
- const horizontalAlignment = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).horizontalAlignment;
557
- const verticalAlignment = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).verticalAlignment;
558
- const enableAutoFit = __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).enableAutoFit;
559
- let top;
560
- let left;
561
- if (placement === 'above' || placement === 'below') {
562
- if (placement === 'above') {
563
- top = baseRect.top - affixedRect.height;
564
- switch (verticalAlignment) {
565
- case 'top':
566
- top = top + affixedRect.height;
567
- break;
568
- case 'middle':
569
- top = top + affixedRect.height / 2;
570
- break;
571
- case 'bottom':
572
- default:
573
- break;
574
- }
575
- }
576
- else {
577
- top = baseRect.bottom;
578
- switch (verticalAlignment) {
579
- case 'top':
580
- default:
581
- break;
582
- case 'middle':
583
- top = top - affixedRect.height / 2;
584
- break;
585
- case 'bottom':
586
- top = top - affixedRect.height;
587
- break;
588
- }
589
- }
590
- switch (horizontalAlignment) {
591
- case 'left':
592
- left = baseRect.left;
593
- break;
594
- case 'center':
595
- default:
596
- left = baseRect.left + baseRect.width / 2 - affixedRect.width / 2;
597
- break;
598
- case 'right':
599
- left = baseRect.right - affixedRect.width;
600
- break;
601
- }
602
- }
603
- else {
604
- if (placement === 'left') {
605
- left = baseRect.left - affixedRect.width;
606
- }
607
- else {
608
- left = baseRect.right;
609
- }
610
- switch (verticalAlignment) {
611
- case 'top':
612
- top = baseRect.top;
613
- break;
614
- case 'middle':
615
- default:
616
- top = baseRect.top + baseRect.height / 2 - affixedRect.height / 2;
617
- break;
618
- case 'bottom':
619
- top = baseRect.bottom - affixedRect.height;
620
- break;
621
- }
622
- }
623
- const offset = { top, left, bottom: 0, right: 0 };
624
- if (enableAutoFit) {
625
- const adjustments = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_adjustOffsetToOverflowParent).call(this, { top, left }, placement, __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f"));
626
- offset.top = adjustments.top;
627
- offset.left = adjustments.left;
628
- }
629
- offset.bottom = offset.top + affixedRect.height;
630
- offset.right = offset.left + affixedRect.width;
631
- return offset;
632
- }, _SkyAffixer_adjustOffsetToOverflowParent = function _SkyAffixer_adjustOffsetToOverflowParent(offset, placement, baseElement) {
633
- const parent = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getAutoFitContextParent).call(this);
634
- const parentOffset = getElementOffset(parent, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
635
- const affixedRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, __classPrivateFieldGet(this, _SkyAffixer_affixedElement, "f"));
636
- const baseRect = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getRect).call(this, baseElement);
637
- // A pixel value representing the leeway between the edge of the overflow parent and the edge
638
- // of the base element before it disappears from view.
639
- // If the visible portion of the base element is less than this pixel value, the auto-fit
640
- // functionality attempts to find another placement.
641
- const defaultPixelTolerance = 40;
642
- let pixelTolerance;
643
- const originalOffsetTop = offset.top;
644
- const originalOffsetLeft = offset.left;
645
- switch (placement) {
646
- case 'above':
647
- case 'below':
648
- // Keep the affixed element within the overflow parent.
649
- if (offset.left < parentOffset.left) {
650
- offset.left = parentOffset.left;
651
- }
652
- else if (offset.left + affixedRect.width > parentOffset.right) {
653
- offset.left = parentOffset.right - affixedRect.width;
654
- }
655
- // Use a smaller pixel tolerance if the base element width is less than the default.
656
- pixelTolerance = Math.min(defaultPixelTolerance, baseRect.width);
657
- // Make sure the affixed element never detaches from the base element.
658
- if (offset.left + pixelTolerance > baseRect.right ||
659
- offset.left + affixedRect.width - pixelTolerance < baseRect.left) {
660
- offset.left = originalOffsetLeft;
661
- }
662
- break;
663
- case 'left':
664
- case 'right':
665
- // Keep the affixed element within the overflow parent.
666
- if (offset.top < parentOffset.top) {
667
- offset.top = parentOffset.top;
668
- }
669
- else if (offset.top + affixedRect.height > parentOffset.bottom) {
670
- offset.top = parentOffset.bottom - affixedRect.height;
671
- }
672
- // Use a smaller pixel tolerance if the base element height is less than the default.
673
- pixelTolerance = Math.min(defaultPixelTolerance, baseRect.height);
674
- // Make sure the affixed element never detaches from the base element.
675
- if (offset.top + pixelTolerance > baseRect.bottom ||
676
- offset.top + affixedRect.height - pixelTolerance < baseRect.top) {
677
- offset.top = originalOffsetTop;
678
- }
679
- break;
680
- }
681
- return offset;
682
- }, _SkyAffixer_getImmediateOverflowParent = function _SkyAffixer_getImmediateOverflowParent() {
683
- return __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[__classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").length - 1];
684
- }, _SkyAffixer_getAutoFitContextParent = function _SkyAffixer_getAutoFitContextParent() {
685
- const bodyElement = __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")[0];
686
- return __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitContext === SkyAffixAutoFitContext.OverflowParent
687
- ? __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this)
688
- : bodyElement;
689
- }, _SkyAffixer_notifyPlacementChange = function _SkyAffixer_notifyPlacementChange(placement) {
690
- if (__classPrivateFieldGet(this, _SkyAffixer_currentPlacement, "f") !== placement) {
691
- __classPrivateFieldSet(this, _SkyAffixer_currentPlacement, placement !== null && placement !== void 0 ? placement : undefined, "f");
692
- __classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").next({
693
- placement,
694
- });
695
- }
696
- }, _SkyAffixer_reset = function _SkyAffixer_reset() {
697
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeScrollListeners).call(this);
698
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeResizeListener).call(this);
699
- __classPrivateFieldSet(this, _SkyAffixer_overflowParents, [], "f");
700
- __classPrivateFieldSet(this, _SkyAffixer_instances, __classPrivateFieldSet(this, _SkyAffixer_baseElement, __classPrivateFieldSet(this, _SkyAffixer_currentPlacement, __classPrivateFieldSet(this, _SkyAffixer_currentOffset, undefined, "f"), "f"), "f"), "a", _SkyAffixer_config_set);
701
- }, _SkyAffixer_isNewOffset = function _SkyAffixer_isNewOffset(offset) {
702
- if (__classPrivateFieldGet(this, _SkyAffixer_currentOffset, "f") === undefined) {
703
- __classPrivateFieldSet(this, _SkyAffixer_currentOffset, offset, "f");
704
- return true;
705
- }
706
- if (__classPrivateFieldGet(this, _SkyAffixer_currentOffset, "f").top === offset.top &&
707
- __classPrivateFieldGet(this, _SkyAffixer_currentOffset, "f").left === offset.left) {
708
- return false;
709
- }
710
- __classPrivateFieldSet(this, _SkyAffixer_currentOffset, offset, "f");
711
- return true;
712
- }, _SkyAffixer_isBaseElementVisible = function _SkyAffixer_isBaseElementVisible() {
713
- if (!__classPrivateFieldGet(this, _SkyAffixer_baseElement, "f")) {
714
- return false;
715
- }
716
- const baseRect = __classPrivateFieldGet(this, _SkyAffixer_baseElement, "f").getBoundingClientRect();
717
- return isOffsetPartiallyVisibleWithinParent(__classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getImmediateOverflowParent).call(this), {
718
- top: baseRect.top,
719
- left: baseRect.left,
720
- right: baseRect.right,
721
- bottom: baseRect.bottom,
722
- }, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
723
- }, _SkyAffixer_addScrollListeners = function _SkyAffixer_addScrollListeners() {
724
- __classPrivateFieldSet(this, _SkyAffixer_scrollListeners, __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").map((parentElement) => {
725
- const overflow = parentElement === document.body ? 'window' : parentElement;
726
- return __classPrivateFieldGet(this, _SkyAffixer_renderer, "f").listen(overflow, 'scroll', () => {
727
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
728
- __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").next();
729
- });
730
- }), "f");
731
- }, _SkyAffixer_addResizeListener = function _SkyAffixer_addResizeListener() {
732
- __classPrivateFieldSet(this, _SkyAffixer_resizeListener, fromEvent(window, 'resize').subscribe(() => __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this)), "f");
733
- }, _SkyAffixer_removeResizeListener = function _SkyAffixer_removeResizeListener() {
734
- if (__classPrivateFieldGet(this, _SkyAffixer_resizeListener, "f")) {
735
- __classPrivateFieldGet(this, _SkyAffixer_resizeListener, "f").unsubscribe();
736
- __classPrivateFieldSet(this, _SkyAffixer_resizeListener, undefined, "f");
737
- }
738
- }, _SkyAffixer_removeScrollListeners = function _SkyAffixer_removeScrollListeners() {
739
- if (__classPrivateFieldGet(this, _SkyAffixer_scrollListeners, "f")) {
740
- // Remove renderer-generated listeners by calling the listener itself.
741
- // https://github.com/angular/angular/issues/9368#issuecomment-227199778
742
- __classPrivateFieldGet(this, _SkyAffixer_scrollListeners, "f").forEach((listener) => listener());
743
- __classPrivateFieldSet(this, _SkyAffixer_scrollListeners, undefined, "f");
744
- }
745
- };
746
-
747
- var _SkyAffixService_renderer;
748
- class SkyAffixService {
749
- constructor(rendererFactory) {
750
- _SkyAffixService_renderer.set(this, void 0);
751
- __classPrivateFieldSet(this, _SkyAffixService_renderer, rendererFactory.createRenderer(undefined, null), "f");
752
- }
753
- /**
754
- * Creates an instance of [[SkyAffixer]].
755
- * @param affixed The element to be affixed.
756
- */
757
- createAffixer(affixed) {
758
- return new SkyAffixer(affixed.nativeElement, __classPrivateFieldGet(this, _SkyAffixService_renderer, "f"));
759
- }
760
- }
761
- _SkyAffixService_renderer = new WeakMap();
762
- SkyAffixService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
763
- SkyAffixService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, providedIn: 'root' });
764
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, decorators: [{
765
- type: Injectable,
766
- args: [{
767
- providedIn: 'root',
768
- }]
769
- }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
770
-
771
- var _SkyAffixDirective_instances, _SkyAffixDirective_affixer, _SkyAffixDirective_affixService, _SkyAffixDirective_elementRef, _SkyAffixDirective_ngUnsubscribe, _SkyAffixDirective_updateAlignment;
772
- /**
773
- * Affixes the host element to a base element.
774
- */
775
- class SkyAffixDirective {
776
- constructor(elementRef, affixService) {
777
- _SkyAffixDirective_instances.add(this);
778
- /**
779
- * Fires when the affixed element's offset changes.
780
- */
781
- this.affixOffsetChange = new EventEmitter();
782
- /**
783
- * Fires when the affixed element's overflow container is scrolled.
784
- */
785
- this.affixOverflowScroll = new EventEmitter();
786
- /**
787
- * Fires when the placement value changes.
788
- */
789
- this.affixPlacementChange = new EventEmitter();
790
- _SkyAffixDirective_affixer.set(this, void 0);
791
- _SkyAffixDirective_affixService.set(this, void 0);
792
- _SkyAffixDirective_elementRef.set(this, void 0);
793
- _SkyAffixDirective_ngUnsubscribe.set(this, new Subject());
794
- __classPrivateFieldSet(this, _SkyAffixDirective_elementRef, elementRef, "f");
795
- __classPrivateFieldSet(this, _SkyAffixDirective_affixService, affixService, "f");
796
- }
797
- ngOnInit() {
798
- __classPrivateFieldSet(this, _SkyAffixDirective_affixer, __classPrivateFieldGet(this, _SkyAffixDirective_affixService, "f").createAffixer(__classPrivateFieldGet(this, _SkyAffixDirective_elementRef, "f")), "f");
799
- __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").offsetChange
800
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f")))
801
- .subscribe((change) => this.affixOffsetChange.emit(change));
802
- __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").overflowScroll
803
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f")))
804
- .subscribe((change) => this.affixOverflowScroll.emit(change));
805
- __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").placementChange
806
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f")))
807
- .subscribe((change) => this.affixPlacementChange.emit(change));
808
- __classPrivateFieldGet(this, _SkyAffixDirective_instances, "m", _SkyAffixDirective_updateAlignment).call(this);
809
- }
810
- ngOnChanges(changes) {
811
- /* istanbul ignore else */
812
- if (changes['affixAutoFitContext'] ||
813
- changes['affixAutoFitOverflowOffset'] ||
814
- changes['affixEnableAutoFit'] ||
815
- changes['affixHorizontalAlignment'] ||
816
- changes['affixIsSticky'] ||
817
- changes['affixPlacement'] ||
818
- changes['affixPosition'] ||
819
- changes['affixVerticalAlignment']) {
820
- __classPrivateFieldGet(this, _SkyAffixDirective_instances, "m", _SkyAffixDirective_updateAlignment).call(this);
821
- }
822
- }
823
- ngOnDestroy() {
824
- this.affixOffsetChange.complete();
825
- this.affixOverflowScroll.complete();
826
- this.affixPlacementChange.complete();
827
- __classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f").next();
828
- __classPrivateFieldGet(this, _SkyAffixDirective_ngUnsubscribe, "f").complete();
829
- /*istanbul ignore else*/
830
- if (__classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f")) {
831
- __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").destroy();
832
- __classPrivateFieldSet(this, _SkyAffixDirective_affixer, undefined, "f");
833
- }
834
- }
835
- }
836
- _SkyAffixDirective_affixer = new WeakMap(), _SkyAffixDirective_affixService = new WeakMap(), _SkyAffixDirective_elementRef = new WeakMap(), _SkyAffixDirective_ngUnsubscribe = new WeakMap(), _SkyAffixDirective_instances = new WeakSet(), _SkyAffixDirective_updateAlignment = function _SkyAffixDirective_updateAlignment() {
837
- if (this.skyAffixTo && __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f")) {
838
- __classPrivateFieldGet(this, _SkyAffixDirective_affixer, "f").affixTo(this.skyAffixTo, {
839
- autoFitContext: this.affixAutoFitContext,
840
- autoFitOverflowOffset: this.affixAutoFitOverflowOffset,
841
- enableAutoFit: this.affixEnableAutoFit,
842
- horizontalAlignment: this.affixHorizontalAlignment,
843
- isSticky: this.affixIsSticky,
844
- placement: this.affixPlacement,
845
- position: this.affixPosition,
846
- verticalAlignment: this.affixVerticalAlignment,
847
- });
848
- }
849
- };
850
- SkyAffixDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixDirective, deps: [{ token: i0.ElementRef }, { token: SkyAffixService }], target: i0.ɵɵFactoryTarget.Directive });
851
- SkyAffixDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyAffixDirective, selector: "[skyAffixTo]", inputs: { skyAffixTo: "skyAffixTo", affixAutoFitContext: "affixAutoFitContext", affixAutoFitOverflowOffset: "affixAutoFitOverflowOffset", affixEnableAutoFit: "affixEnableAutoFit", affixHorizontalAlignment: "affixHorizontalAlignment", affixIsSticky: "affixIsSticky", affixPlacement: "affixPlacement", affixPosition: "affixPosition", affixVerticalAlignment: "affixVerticalAlignment" }, outputs: { affixOffsetChange: "affixOffsetChange", affixOverflowScroll: "affixOverflowScroll", affixPlacementChange: "affixPlacementChange" }, usesOnChanges: true, ngImport: i0 });
852
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixDirective, decorators: [{
853
- type: Directive,
854
- args: [{
855
- selector: '[skyAffixTo]',
856
- }]
857
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SkyAffixService }]; }, propDecorators: { skyAffixTo: [{
858
- type: Input
859
- }], affixAutoFitContext: [{
860
- type: Input
861
- }], affixAutoFitOverflowOffset: [{
862
- type: Input
863
- }], affixEnableAutoFit: [{
864
- type: Input
865
- }], affixHorizontalAlignment: [{
866
- type: Input
867
- }], affixIsSticky: [{
868
- type: Input
869
- }], affixPlacement: [{
870
- type: Input
871
- }], affixPosition: [{
872
- type: Input
873
- }], affixVerticalAlignment: [{
874
- type: Input
875
- }], affixOffsetChange: [{
876
- type: Output
877
- }], affixOverflowScroll: [{
878
- type: Output
879
- }], affixPlacementChange: [{
880
- type: Output
881
- }] } });
882
-
883
- class SkyAffixModule {
884
- }
885
- SkyAffixModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
886
- SkyAffixModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixModule, declarations: [SkyAffixDirective], imports: [CommonModule], exports: [SkyAffixDirective] });
887
- SkyAffixModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixModule, imports: [CommonModule] });
888
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixModule, decorators: [{
889
- type: NgModule,
890
- args: [{
891
- imports: [CommonModule],
892
- exports: [SkyAffixDirective],
893
- declarations: [SkyAffixDirective],
894
- }]
895
- }] });
896
-
897
- var _SkyDefaultInputProvider_instances, _SkyDefaultInputProvider_props, _SkyDefaultInputProvider_getSubject;
898
- /**
899
- * @internal
900
- * An API to provide default Angular component input values to child components.
901
- */
902
- class SkyDefaultInputProvider {
903
- constructor() {
904
- _SkyDefaultInputProvider_instances.add(this);
905
- _SkyDefaultInputProvider_props.set(this, {});
906
- }
907
- setValue(componentName, inputName, value) {
908
- const subject = __classPrivateFieldGet(this, _SkyDefaultInputProvider_instances, "m", _SkyDefaultInputProvider_getSubject).call(this, componentName, inputName);
909
- subject.next(value);
910
- }
911
- getValue(componentName, inputName) {
912
- const test = __classPrivateFieldGet(this, _SkyDefaultInputProvider_instances, "m", _SkyDefaultInputProvider_getSubject).call(this, componentName, inputName);
913
- return test.asObservable();
914
- }
915
- }
916
- _SkyDefaultInputProvider_props = new WeakMap(), _SkyDefaultInputProvider_instances = new WeakSet(), _SkyDefaultInputProvider_getSubject = function _SkyDefaultInputProvider_getSubject(componentName, inputName) {
917
- const componentSubjects = __classPrivateFieldGet(this, _SkyDefaultInputProvider_props, "f")[componentName] || {};
918
- const inputSubject = componentSubjects[inputName];
919
- if (!inputSubject) {
920
- componentSubjects[inputName] = new ReplaySubject(1);
921
- __classPrivateFieldGet(this, _SkyDefaultInputProvider_props, "f")[componentName] = componentSubjects;
922
- }
923
- return componentSubjects[inputName];
924
- };
925
-
926
- var _SkyDockItem_destroyed, _SkyDockItem_destroyedObs;
927
- /**
928
- * Represents a single item added to the dock.
929
- */
930
- class SkyDockItem {
931
- /**
932
- * An event that emits when the item is removed from the dock.
933
- */
934
- get destroyed() {
935
- return __classPrivateFieldGet(this, _SkyDockItem_destroyedObs, "f");
936
- }
937
- /**
938
- * @param componentInstance The item's component instance.
939
- * @param stackOrder The assigned stack order of the docked item.
940
- */
941
- constructor(componentInstance, stackOrder) {
942
- this.componentInstance = componentInstance;
943
- this.stackOrder = stackOrder;
944
- _SkyDockItem_destroyed.set(this, new Subject());
945
- _SkyDockItem_destroyedObs.set(this, void 0);
946
- __classPrivateFieldSet(this, _SkyDockItem_destroyedObs, __classPrivateFieldGet(this, _SkyDockItem_destroyed, "f").asObservable(), "f");
947
- }
948
- /**
949
- * Removes the item from the dock.
950
- */
951
- destroy() {
952
- __classPrivateFieldGet(this, _SkyDockItem_destroyed, "f").next();
953
- __classPrivateFieldGet(this, _SkyDockItem_destroyed, "f").complete();
954
- }
955
- }
956
- _SkyDockItem_destroyed = new WeakMap(), _SkyDockItem_destroyedObs = new WeakMap();
957
-
958
- /**
959
- * The location on the page where the dock component should be rendered.
960
- */
961
- var SkyDockLocation;
962
- (function (SkyDockLocation) {
963
- /**
964
- * Renders the dock component before a given element.
965
- */
966
- SkyDockLocation[SkyDockLocation["BeforeElement"] = 0] = "BeforeElement";
967
- /**
968
- * Renders the dock component as the last element inside the BODY element.
969
- */
970
- SkyDockLocation[SkyDockLocation["BodyBottom"] = 1] = "BodyBottom";
971
- /**
972
- * Renders the dock component as the last element inside a given element.
973
- */
974
- SkyDockLocation[SkyDockLocation["ElementBottom"] = 2] = "ElementBottom";
975
- })(SkyDockLocation || (SkyDockLocation = {}));
976
-
977
- /**
978
- * @internal
979
- */
980
- class SkyMutationObserverService {
981
- create(callback) {
982
- return new MutationObserver(callback);
983
- }
984
- }
985
- SkyMutationObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMutationObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
986
- SkyMutationObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMutationObserverService, providedIn: 'root' });
987
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMutationObserverService, decorators: [{
988
- type: Injectable,
989
- args: [{
990
- providedIn: 'root',
991
- }]
992
- }] });
993
-
994
- var _SkyDockDomAdapterService_instances, _SkyDockDomAdapterService_currentDockHeight, _SkyDockDomAdapterService_mutationSvc, _SkyDockDomAdapterService_ngUnsubscribe, _SkyDockDomAdapterService_observer, _SkyDockDomAdapterService_renderer, _SkyDockDomAdapterService_styleElement, _SkyDockDomAdapterService_adjustBodyStyles, _SkyDockDomAdapterService_destroyStyleElement;
995
- /**
996
- * @internal
997
- */
998
- class SkyDockDomAdapterService {
999
- constructor(mutationSvc, rendererFactory) {
1000
- _SkyDockDomAdapterService_instances.add(this);
1001
- _SkyDockDomAdapterService_currentDockHeight.set(this, void 0);
1002
- _SkyDockDomAdapterService_mutationSvc.set(this, void 0);
1003
- _SkyDockDomAdapterService_ngUnsubscribe.set(this, new Subject());
1004
- _SkyDockDomAdapterService_observer.set(this, void 0);
1005
- _SkyDockDomAdapterService_renderer.set(this, void 0);
1006
- _SkyDockDomAdapterService_styleElement.set(this, void 0);
1007
- __classPrivateFieldSet(this, _SkyDockDomAdapterService_mutationSvc, mutationSvc, "f");
1008
- __classPrivateFieldSet(this, _SkyDockDomAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
1009
- }
1010
- ngOnDestroy() {
1011
- if (__classPrivateFieldGet(this, _SkyDockDomAdapterService_observer, "f")) {
1012
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_observer, "f").disconnect();
1013
- }
1014
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_ngUnsubscribe, "f").next();
1015
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_ngUnsubscribe, "f").complete();
1016
- if (__classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f")) {
1017
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_destroyStyleElement).call(this);
1018
- }
1019
- __classPrivateFieldSet(this, _SkyDockDomAdapterService_currentDockHeight, __classPrivateFieldSet(this, _SkyDockDomAdapterService_observer, __classPrivateFieldSet(this, _SkyDockDomAdapterService_styleElement, undefined, "f"), "f"), "f");
1020
- }
1021
- setSticky(elementRef) {
1022
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").addClass(elementRef.nativeElement, 'sky-dock-sticky');
1023
- }
1024
- setZIndex(zIndex, elementRef) {
1025
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").setStyle(elementRef.nativeElement, 'z-index', zIndex);
1026
- }
1027
- unbindDock(elementRef) {
1028
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").addClass(elementRef.nativeElement, 'sky-dock-unbound');
1029
- }
1030
- watchDomChanges(elementRef) {
1031
- __classPrivateFieldSet(this, _SkyDockDomAdapterService_observer, __classPrivateFieldGet(this, _SkyDockDomAdapterService_mutationSvc, "f").create(() => {
1032
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_adjustBodyStyles).call(this, elementRef);
1033
- }), "f");
1034
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_observer, "f").observe(elementRef.nativeElement, {
1035
- attributes: true,
1036
- childList: true,
1037
- characterData: true,
1038
- subtree: true,
1039
- });
1040
- fromEvent(window, 'resize')
1041
- .pipe(debounceTime(250), takeUntil(__classPrivateFieldGet(this, _SkyDockDomAdapterService_ngUnsubscribe, "f")))
1042
- .subscribe(() => __classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_adjustBodyStyles).call(this, elementRef));
1043
- }
1044
- }
1045
- _SkyDockDomAdapterService_currentDockHeight = new WeakMap(), _SkyDockDomAdapterService_mutationSvc = new WeakMap(), _SkyDockDomAdapterService_ngUnsubscribe = new WeakMap(), _SkyDockDomAdapterService_observer = new WeakMap(), _SkyDockDomAdapterService_renderer = new WeakMap(), _SkyDockDomAdapterService_styleElement = new WeakMap(), _SkyDockDomAdapterService_instances = new WeakSet(), _SkyDockDomAdapterService_adjustBodyStyles = function _SkyDockDomAdapterService_adjustBodyStyles(elementRef) {
1046
- const dockHeight = elementRef.nativeElement.getBoundingClientRect().height;
1047
- if (dockHeight === __classPrivateFieldGet(this, _SkyDockDomAdapterService_currentDockHeight, "f")) {
1048
- return;
1049
- }
1050
- // Create a style element to avoid overwriting any existing inline body styles.
1051
- const styleElement = __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").createElement('style');
1052
- const textNode = __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").createText(`body { margin-bottom: ${dockHeight}px; }`);
1053
- // Apply a `data-` attribute to make unit testing easier.
1054
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").setAttribute(styleElement, 'data-test-selector', 'sky-layout-dock-bottom-styles');
1055
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").appendChild(styleElement, textNode);
1056
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").appendChild(document.head, styleElement);
1057
- if (__classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f")) {
1058
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_instances, "m", _SkyDockDomAdapterService_destroyStyleElement).call(this);
1059
- }
1060
- __classPrivateFieldSet(this, _SkyDockDomAdapterService_currentDockHeight, dockHeight, "f");
1061
- __classPrivateFieldSet(this, _SkyDockDomAdapterService_styleElement, styleElement, "f");
1062
- }, _SkyDockDomAdapterService_destroyStyleElement = function _SkyDockDomAdapterService_destroyStyleElement() {
1063
- __classPrivateFieldGet(this, _SkyDockDomAdapterService_renderer, "f").removeChild(document.head, __classPrivateFieldGet(this, _SkyDockDomAdapterService_styleElement, "f"));
1064
- };
1065
- SkyDockDomAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockDomAdapterService, deps: [{ token: SkyMutationObserverService }, { token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
1066
- SkyDockDomAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockDomAdapterService });
1067
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockDomAdapterService, decorators: [{
1068
- type: Injectable
1069
- }], ctorParameters: function () { return [{ type: SkyMutationObserverService }, { type: i0.RendererFactory2 }]; } });
1070
-
1071
- /**
1072
- * @internal
1073
- */
1074
- function sortByStackOrder(a, b) {
1075
- if (a.stackOrder > b.stackOrder) {
1076
- return -1;
1077
- }
1078
- if (a.stackOrder < b.stackOrder) {
1079
- return 1;
1080
- }
1081
- return 0;
1082
- }
1083
-
1084
- var _SkyDockComponent_instances, _SkyDockComponent_changeDetector, _SkyDockComponent_domAdapter, _SkyDockComponent_elementRef, _SkyDockComponent_injector, _SkyDockComponent_itemRefs, _SkyDockComponent_options, _SkyDockComponent_sortItemsByStackOrder, _SkyDockComponent_getHighestStackOrder;
1085
- /**
1086
- * @internal
1087
- */
1088
- class SkyDockComponent {
1089
- constructor(changeDetector, elementRef, injector, domAdapter) {
1090
- _SkyDockComponent_instances.add(this);
1091
- _SkyDockComponent_changeDetector.set(this, void 0);
1092
- _SkyDockComponent_domAdapter.set(this, void 0);
1093
- _SkyDockComponent_elementRef.set(this, void 0);
1094
- _SkyDockComponent_injector.set(this, void 0);
1095
- _SkyDockComponent_itemRefs.set(this, []);
1096
- _SkyDockComponent_options.set(this, void 0);
1097
- __classPrivateFieldSet(this, _SkyDockComponent_changeDetector, changeDetector, "f");
1098
- __classPrivateFieldSet(this, _SkyDockComponent_elementRef, elementRef, "f");
1099
- __classPrivateFieldSet(this, _SkyDockComponent_injector, injector, "f");
1100
- __classPrivateFieldSet(this, _SkyDockComponent_domAdapter, domAdapter, "f");
1101
- }
1102
- insertComponent(component, config = {}) {
1103
- /*istanbul ignore if: untestable*/
1104
- if (!this.target) {
1105
- throw Error('[SkyDockComponent] Could not insert the component because the target element could not be found.');
1106
- }
1107
- const injector = Injector.create({
1108
- providers: config.providers || [],
1109
- parent: __classPrivateFieldGet(this, _SkyDockComponent_injector, "f"),
1110
- });
1111
- const componentRef = this.target.createComponent(component, {
1112
- injector,
1113
- });
1114
- const stackOrder = config.stackOrder !== null && config.stackOrder !== undefined
1115
- ? config.stackOrder
1116
- : __classPrivateFieldGet(this, _SkyDockComponent_instances, "m", _SkyDockComponent_getHighestStackOrder).call(this);
1117
- __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").push({
1118
- componentRef,
1119
- stackOrder,
1120
- });
1121
- __classPrivateFieldGet(this, _SkyDockComponent_instances, "m", _SkyDockComponent_sortItemsByStackOrder).call(this);
1122
- __classPrivateFieldGet(this, _SkyDockComponent_changeDetector, "f").markForCheck();
1123
- return {
1124
- componentRef,
1125
- stackOrder,
1126
- };
1127
- }
1128
- removeItem(item) {
1129
- /*istanbul ignore if: untestable*/
1130
- if (!this.target) {
1131
- throw Error('[SkyDockComponent] Could not remove the item because the target element could not be found.');
1132
- }
1133
- const viewRef = item.componentRef.hostView;
1134
- this.target.remove(this.target.indexOf(viewRef));
1135
- const found = __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").find((i) => i.componentRef.hostView === viewRef);
1136
- if (found) {
1137
- __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").splice(__classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").indexOf(found), 1);
1138
- }
1139
- }
1140
- setOptions(options) {
1141
- var _a, _b;
1142
- __classPrivateFieldSet(this, _SkyDockComponent_options, options, "f");
1143
- switch ((_a = __classPrivateFieldGet(this, _SkyDockComponent_options, "f")) === null || _a === void 0 ? void 0 : _a.location) {
1144
- case SkyDockLocation.BeforeElement:
1145
- __classPrivateFieldGet(this, _SkyDockComponent_domAdapter, "f").unbindDock(__classPrivateFieldGet(this, _SkyDockComponent_elementRef, "f"));
1146
- break;
1147
- case SkyDockLocation.ElementBottom:
1148
- __classPrivateFieldGet(this, _SkyDockComponent_domAdapter, "f").setSticky(__classPrivateFieldGet(this, _SkyDockComponent_elementRef, "f"));
1149
- break;
1150
- case SkyDockLocation.BodyBottom:
1151
- default:
1152
- __classPrivateFieldGet(this, _SkyDockComponent_domAdapter, "f").watchDomChanges(__classPrivateFieldGet(this, _SkyDockComponent_elementRef, "f"));
1153
- break;
1154
- }
1155
- if ((_b = __classPrivateFieldGet(this, _SkyDockComponent_options, "f")) === null || _b === void 0 ? void 0 : _b.zIndex) {
1156
- __classPrivateFieldGet(this, _SkyDockComponent_domAdapter, "f").setZIndex(__classPrivateFieldGet(this, _SkyDockComponent_options, "f").zIndex, __classPrivateFieldGet(this, _SkyDockComponent_elementRef, "f"));
1157
- }
1158
- }
1159
- }
1160
- _SkyDockComponent_changeDetector = new WeakMap(), _SkyDockComponent_domAdapter = new WeakMap(), _SkyDockComponent_elementRef = new WeakMap(), _SkyDockComponent_injector = new WeakMap(), _SkyDockComponent_itemRefs = new WeakMap(), _SkyDockComponent_options = new WeakMap(), _SkyDockComponent_instances = new WeakSet(), _SkyDockComponent_sortItemsByStackOrder = function _SkyDockComponent_sortItemsByStackOrder() {
1161
- if (this.target) {
1162
- __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").sort(sortByStackOrder);
1163
- // Reassign the correct index for each view.
1164
- for (let i = 0, len = __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").length; i < len; i++) {
1165
- const item = __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f")[i];
1166
- this.target.move(item.componentRef.hostView, i);
1167
- }
1168
- }
1169
- }, _SkyDockComponent_getHighestStackOrder = function _SkyDockComponent_getHighestStackOrder() {
1170
- if (__classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f").length === 0) {
1171
- return 0;
1172
- }
1173
- return __classPrivateFieldGet(this, _SkyDockComponent_itemRefs, "f")[0].stackOrder + 1;
1174
- };
1175
- SkyDockComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Injector }, { token: SkyDockDomAdapterService }], target: i0.ɵɵFactoryTarget.Component });
1176
- SkyDockComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyDockComponent, selector: "sky-dock", providers: [SkyDockDomAdapterService], viewQueries: [{ propertyName: "target", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-container #target></ng-container>\n", styles: [":host{display:flex;flex-direction:column;width:100%}:host:not(.sky-dock-unbound){position:fixed;left:var(--sky-viewport-left, 0);bottom:var(--sky-viewport-bottom, 0);right:var(--sky-viewport-right, 0);width:auto}:host.sky-dock-sticky{position:sticky}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockComponent, decorators: [{
1178
- type: Component,
1179
- args: [{ selector: 'sky-dock', providers: [SkyDockDomAdapterService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container #target></ng-container>\n", styles: [":host{display:flex;flex-direction:column;width:100%}:host:not(.sky-dock-unbound){position:fixed;left:var(--sky-viewport-left, 0);bottom:var(--sky-viewport-bottom, 0);right:var(--sky-viewport-right, 0);width:auto}:host.sky-dock-sticky{position:sticky}\n"] }]
1180
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Injector }, { type: SkyDockDomAdapterService }]; }, propDecorators: { target: [{
1181
- type: ViewChild,
1182
- args: ['target', {
1183
- read: ViewContainerRef,
1184
- static: true,
1185
- }]
1186
- }] } });
1187
-
1188
- class SkyDockModule {
1189
- }
1190
- SkyDockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1191
- SkyDockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyDockModule, declarations: [SkyDockComponent], imports: [CommonModule] });
1192
- SkyDockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockModule, providers: [SkyMutationObserverService], imports: [CommonModule] });
1193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockModule, decorators: [{
1194
- type: NgModule,
1195
- args: [{
1196
- imports: [CommonModule],
1197
- declarations: [SkyDockComponent],
1198
- providers: [SkyMutationObserverService],
1199
- }]
1200
- }] });
1201
-
1202
- /**
1203
- * The location on the page where the dynamic component should be rendered.
1204
- */
1205
- var SkyDynamicComponentLocation;
1206
- (function (SkyDynamicComponentLocation) {
1207
- /**
1208
- * Renders the dynamic component before a given element.
1209
- */
1210
- SkyDynamicComponentLocation[SkyDynamicComponentLocation["BeforeElement"] = 0] = "BeforeElement";
1211
- /**
1212
- * Renders the dynamic component as the last element inside the BODY element.
1213
- */
1214
- SkyDynamicComponentLocation[SkyDynamicComponentLocation["BodyBottom"] = 1] = "BodyBottom";
1215
- /**
1216
- * Renders the dynamic component as the first element inside the BODY element.
1217
- */
1218
- SkyDynamicComponentLocation[SkyDynamicComponentLocation["BodyTop"] = 2] = "BodyTop";
1219
- /**
1220
- * Renders the dynamic component as the last element inside a given element.
1221
- */
1222
- SkyDynamicComponentLocation[SkyDynamicComponentLocation["ElementBottom"] = 3] = "ElementBottom";
1223
- /**
1224
- * Renders the dynamic component as the first element inside a given element.
1225
- */
1226
- SkyDynamicComponentLocation[SkyDynamicComponentLocation["ElementTop"] = 4] = "ElementTop";
1227
- })(SkyDynamicComponentLocation || (SkyDynamicComponentLocation = {}));
1228
-
1229
- /**
1230
- * @internal
1231
- */
1232
- function getWindow() {
1233
- return window;
1234
- }
1235
- /**
1236
- * The application window reference service references the global window variable.
1237
- * After users inject SkyAppWindowRef into a component, they can use the service to interact with
1238
- * window properties and event handlers by referencing its nativeWindow property.
1239
- */
1240
- class SkyAppWindowRef {
1241
- /**
1242
- * The global `window` variable.
1243
- */
1244
- get nativeWindow() {
1245
- return getWindow();
1246
- }
1247
- }
1248
- SkyAppWindowRef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppWindowRef, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1249
- SkyAppWindowRef.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppWindowRef, providedIn: 'root' });
1250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppWindowRef, decorators: [{
1251
- type: Injectable,
1252
- args: [{
1253
- providedIn: 'root',
1254
- }]
1255
- }] });
1256
-
1257
- var _SkyDynamicComponentService_instances, _SkyDynamicComponentService_applicationRef, _SkyDynamicComponentService_environmentInjector, _SkyDynamicComponentService_injector, _SkyDynamicComponentService_renderer, _SkyDynamicComponentService_windowRef, _SkyDynamicComponentService_getRootNode;
1258
- /**
1259
- * Angular service for creating and rendering a dynamic component.
1260
- * @internal
1261
- */
1262
- class SkyDynamicComponentService {
1263
- constructor(applicationRef, injector, windowRef, rendererFactory, environmentInjector) {
1264
- _SkyDynamicComponentService_instances.add(this);
1265
- _SkyDynamicComponentService_applicationRef.set(this, void 0);
1266
- _SkyDynamicComponentService_environmentInjector.set(this, void 0);
1267
- _SkyDynamicComponentService_injector.set(this, void 0);
1268
- _SkyDynamicComponentService_renderer.set(this, void 0);
1269
- _SkyDynamicComponentService_windowRef.set(this, void 0);
1270
- __classPrivateFieldSet(this, _SkyDynamicComponentService_applicationRef, applicationRef, "f");
1271
- __classPrivateFieldSet(this, _SkyDynamicComponentService_injector, injector, "f");
1272
- __classPrivateFieldSet(this, _SkyDynamicComponentService_windowRef, windowRef, "f");
1273
- __classPrivateFieldSet(this, _SkyDynamicComponentService_environmentInjector, environmentInjector, "f");
1274
- // Based on suggestions from https://github.com/angular/angular/issues/17824
1275
- // for accessing an instance of Renderer2 in a service since Renderer2 can't
1276
- // be injected into a service. Passing undefined for both parameters results
1277
- // in the default renderer which is what we want here.
1278
- __classPrivateFieldSet(this, _SkyDynamicComponentService_renderer, rendererFactory.createRenderer(undefined, null), "f");
1279
- }
1280
- /**
1281
- * Creates an instance of the specified component and adds it to the specified location
1282
- * on the page.
1283
- */
1284
- createComponent(componentType, options) {
1285
- options = options || {
1286
- location: SkyDynamicComponentLocation.BodyBottom,
1287
- };
1288
- const injector = Injector.create({
1289
- providers: options.providers || [],
1290
- parent: options.parentInjector || __classPrivateFieldGet(this, _SkyDynamicComponentService_injector, "f"),
1291
- });
1292
- let componentRef;
1293
- if (options.viewContainerRef) {
1294
- componentRef = options.viewContainerRef.createComponent(componentType, {
1295
- injector,
1296
- });
1297
- }
1298
- else {
1299
- componentRef = createComponent(componentType, {
1300
- environmentInjector: __classPrivateFieldGet(this, _SkyDynamicComponentService_environmentInjector, "f"),
1301
- elementInjector: injector,
1302
- });
1303
- __classPrivateFieldGet(this, _SkyDynamicComponentService_applicationRef, "f").attachView(componentRef.hostView);
1304
- const el = __classPrivateFieldGet(this, _SkyDynamicComponentService_instances, "m", _SkyDynamicComponentService_getRootNode).call(this, componentRef);
1305
- const bodyEl = __classPrivateFieldGet(this, _SkyDynamicComponentService_windowRef, "f").nativeWindow.document.body;
1306
- switch (options.location) {
1307
- case SkyDynamicComponentLocation.BeforeElement:
1308
- if (!options.referenceEl) {
1309
- throw new Error('[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.BeforeElement` because a reference element was not provided.');
1310
- }
1311
- __classPrivateFieldGet(this, _SkyDynamicComponentService_renderer, "f").insertBefore(options.referenceEl.parentElement, el, options.referenceEl);
1312
- break;
1313
- case SkyDynamicComponentLocation.ElementTop:
1314
- if (!options.referenceEl) {
1315
- throw new Error('[SkyDynamicComponentService] Could not create a component at location `SkyDynamicComponentLocation.ElementTop` because a reference element was not provided.');
1316
- }
1317
- __classPrivateFieldGet(this, _SkyDynamicComponentService_renderer, "f").insertBefore(options.referenceEl, el, options.referenceEl.firstChild);
1318
- break;
1319
- case SkyDynamicComponentLocation.ElementBottom:
1320
- __classPrivateFieldGet(this, _SkyDynamicComponentService_renderer, "f").appendChild(options.referenceEl, el);
1321
- break;
1322
- case SkyDynamicComponentLocation.BodyTop:
1323
- __classPrivateFieldGet(this, _SkyDynamicComponentService_renderer, "f").insertBefore(bodyEl, el, bodyEl.firstChild);
1324
- break;
1325
- default:
1326
- __classPrivateFieldGet(this, _SkyDynamicComponentService_renderer, "f").appendChild(bodyEl, el);
1327
- break;
1328
- }
1329
- }
1330
- return componentRef;
1331
- }
1332
- /**
1333
- * Removes a component ref from the page
1334
- * @param componentRef Component ref for the component being removed
1335
- */
1336
- removeComponent(componentRef) {
1337
- if (!componentRef) {
1338
- return;
1339
- }
1340
- __classPrivateFieldGet(this, _SkyDynamicComponentService_applicationRef, "f").detachView(componentRef.hostView);
1341
- componentRef.destroy();
1342
- }
1343
- }
1344
- _SkyDynamicComponentService_applicationRef = new WeakMap(), _SkyDynamicComponentService_environmentInjector = new WeakMap(), _SkyDynamicComponentService_injector = new WeakMap(), _SkyDynamicComponentService_renderer = new WeakMap(), _SkyDynamicComponentService_windowRef = new WeakMap(), _SkyDynamicComponentService_instances = new WeakSet(), _SkyDynamicComponentService_getRootNode = function _SkyDynamicComponentService_getRootNode(componentRef) {
1345
- // Technique for retrieving the component's root node taken from here:
1346
- // https://malcoded.com/posts/angular-dynamic-components
1347
- return componentRef.hostView.rootNodes[0];
1348
- };
1349
- SkyDynamicComponentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentService, deps: [{ token: i0.ApplicationRef }, { token: i0.Injector }, { token: SkyAppWindowRef }, { token: i0.RendererFactory2 }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable });
1350
- SkyDynamicComponentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentService, providedIn: 'any' });
1351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentService, decorators: [{
1352
- type: Injectable,
1353
- args: [{
1354
- // Must be 'any' so that the component is created in the context of its module's injector.
1355
- // If set to 'root', the component's dependency injections would only be derived from the root
1356
- // injector and may lose context if the component is created within a lazy-loaded module.
1357
- providedIn: 'any',
1358
- }]
1359
- }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.Injector }, { type: SkyAppWindowRef }, { type: i0.RendererFactory2 }, { type: i0.EnvironmentInjector }]; } });
1360
-
1361
- var _SkyDockService_instances, _SkyDockService_dynamicComponentSvc, _SkyDockService_options, _SkyDockService_createDock, _SkyDockService_destroyDock;
1362
- /**
1363
- * This service docks components to specific areas on the page.
1364
- */
1365
- class SkyDockService {
1366
- /**
1367
- * Returns all docked items.
1368
- */
1369
- get items() {
1370
- return SkyDockService._items;
1371
- }
1372
- constructor(dynamicComponentSvc) {
1373
- _SkyDockService_instances.add(this);
1374
- _SkyDockService_dynamicComponentSvc.set(this, void 0);
1375
- _SkyDockService_options.set(this, void 0);
1376
- __classPrivateFieldSet(this, _SkyDockService_dynamicComponentSvc, dynamicComponentSvc, "f");
1377
- }
1378
- /**
1379
- * Docks a component to the bottom of the page.
1380
- * @param component The component to dock.
1381
- * @param config Options that affect the docking action.
1382
- */
1383
- insertComponent(component, config) {
1384
- const dockRef = (SkyDockService.dockRef =
1385
- SkyDockService.dockRef || __classPrivateFieldGet(this, _SkyDockService_instances, "m", _SkyDockService_createDock).call(this));
1386
- const itemRef = dockRef.instance.insertComponent(component, config);
1387
- const item = new SkyDockItem(itemRef.componentRef.instance, itemRef.stackOrder);
1388
- item.destroyed.subscribe(() => {
1389
- dockRef.instance.removeItem(itemRef);
1390
- SkyDockService._items.splice(SkyDockService._items.indexOf(item), 1);
1391
- if (SkyDockService._items.length === 0) {
1392
- __classPrivateFieldGet(this, _SkyDockService_instances, "m", _SkyDockService_destroyDock).call(this);
1393
- }
1394
- });
1395
- SkyDockService._items.push(item);
1396
- SkyDockService._items.sort(sortByStackOrder);
1397
- return item;
1398
- }
1399
- /**
1400
- * Sets options for the positioning and styling of the dock component. Since the dock service is a
1401
- * singleton instance, these options will be applied to all components inserted into the dock. In
1402
- * order to create a separate dock with different options, consumers should provide a different
1403
- * instance of the dock service.
1404
- * @param options The options for positioning and styling
1405
- */
1406
- setDockOptions(options) {
1407
- __classPrivateFieldSet(this, _SkyDockService_options, options, "f");
1408
- }
1409
- }
1410
- _SkyDockService_dynamicComponentSvc = new WeakMap(), _SkyDockService_options = new WeakMap(), _SkyDockService_instances = new WeakSet(), _SkyDockService_createDock = function _SkyDockService_createDock() {
1411
- let dockOptions;
1412
- if (__classPrivateFieldGet(this, _SkyDockService_options, "f")) {
1413
- let dynamicLocation;
1414
- switch (__classPrivateFieldGet(this, _SkyDockService_options, "f").location) {
1415
- case SkyDockLocation.BeforeElement:
1416
- dynamicLocation = SkyDynamicComponentLocation.BeforeElement;
1417
- break;
1418
- case SkyDockLocation.ElementBottom:
1419
- dynamicLocation = SkyDynamicComponentLocation.ElementBottom;
1420
- break;
1421
- default:
1422
- dynamicLocation = SkyDynamicComponentLocation.BodyTop;
1423
- break;
1424
- }
1425
- dockOptions = {
1426
- location: dynamicLocation,
1427
- referenceEl: __classPrivateFieldGet(this, _SkyDockService_options, "f").referenceEl,
1428
- };
1429
- }
1430
- const dockRef = __classPrivateFieldGet(this, _SkyDockService_dynamicComponentSvc, "f").createComponent(SkyDockComponent, dockOptions);
1431
- dockRef.instance.setOptions(__classPrivateFieldGet(this, _SkyDockService_options, "f"));
1432
- return dockRef;
1433
- }, _SkyDockService_destroyDock = function _SkyDockService_destroyDock() {
1434
- __classPrivateFieldGet(this, _SkyDockService_dynamicComponentSvc, "f").removeComponent(SkyDockService.dockRef);
1435
- SkyDockService.dockRef = undefined;
1436
- };
1437
- SkyDockService._items = [];
1438
- SkyDockService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockService, deps: [{ token: SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable });
1439
- SkyDockService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockService, providedIn: 'any' });
1440
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDockService, decorators: [{
1441
- type: Injectable,
1442
- args: [{
1443
- // Must be 'any' so that the dock component is created in the context of its module's injector.
1444
- // If set to 'root', the component's dependency injections would only be derived from the root
1445
- // injector and may loose context if the dock was opened from within a lazy-loaded module.
1446
- providedIn: 'any',
1447
- }]
1448
- }], ctorParameters: function () { return [{ type: SkyDynamicComponentService }]; } });
1449
-
1450
- /**
1451
- * Provides services required to create dynamic components on the page.
1452
- * @deprecated The `SkyDynamicComponentService` no longer needs the `SkyDynamicComponentModule`.
1453
- * The `SkyDynamicComponentModule` can be removed from your project.
1454
- */
1455
- class SkyDynamicComponentModule {
1456
- }
1457
- SkyDynamicComponentModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1458
- SkyDynamicComponentModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentModule });
1459
- SkyDynamicComponentModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentModule });
1460
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyDynamicComponentModule, decorators: [{
1461
- type: NgModule,
1462
- args: [{}]
1463
- }] });
1464
-
1465
- class SkyAppFormat {
1466
- formatText(format, ...args) {
1467
- return String(format).replace(/\{(\d+)\}/g, function (match, capture) {
1468
- return args[parseInt(capture, 10)];
1469
- });
1470
- }
1471
- }
1472
- SkyAppFormat.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppFormat, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1473
- SkyAppFormat.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppFormat, providedIn: 'root' });
1474
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppFormat, decorators: [{
1475
- type: Injectable,
1476
- args: [{
1477
- providedIn: 'root',
1478
- }]
1479
- }] });
1480
-
1481
- let idIndex = 0;
1482
- /**
1483
- * Generates unique IDs to be used with HTML elements.
1484
- */
1485
- class SkyIdService {
1486
- generateId() {
1487
- idIndex++;
1488
- // Include timestamp and an incrementing index to guarantee unique IDs both during the application
1489
- // lifecycle as well as across sessions, since browsers will try to apply autocomplete options to
1490
- // elements with the same ID across sessions.
1491
- return `sky-id-gen__${new Date().getTime()}__${idIndex}`;
1492
- }
1493
- }
1494
- SkyIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1495
- SkyIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdService, providedIn: 'root' });
1496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdService, decorators: [{
1497
- type: Injectable,
1498
- args: [{
1499
- providedIn: 'root',
1500
- }]
1501
- }] });
1502
-
1503
- var _SkyIdDirective__id;
1504
- /**
1505
- * Sets the element's `id` attribute to a unique ID. To reference this unique ID on other elements,
1506
- * such as in a `label` element's `for` attribute, assign this directive to a template reference
1507
- * variable, then use its `id` property.
1508
- */
1509
- class SkyIdDirective {
1510
- get id() {
1511
- return __classPrivateFieldGet(this, _SkyIdDirective__id, "f");
1512
- }
1513
- constructor(elRef, renderer, idSvc) {
1514
- _SkyIdDirective__id.set(this, void 0);
1515
- // Generate and apply the ID before the template is rendered
1516
- // to avoid a changed-after-checked error.
1517
- const id = idSvc.generateId();
1518
- renderer.setAttribute(elRef.nativeElement, 'id', id);
1519
- __classPrivateFieldSet(this, _SkyIdDirective__id, id, "f");
1520
- }
1521
- }
1522
- _SkyIdDirective__id = new WeakMap();
1523
- SkyIdDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: SkyIdService }], target: i0.ɵɵFactoryTarget.Directive });
1524
- SkyIdDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyIdDirective, selector: "[skyId]", exportAs: ["skyId"], ngImport: i0 });
1525
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdDirective, decorators: [{
1526
- type: Directive,
1527
- args: [{
1528
- selector: '[skyId]',
1529
- exportAs: 'skyId',
1530
- }]
1531
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: SkyIdService }]; } });
1532
-
1533
- class SkyIdModule {
1534
- }
1535
- SkyIdModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1536
- SkyIdModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyIdModule, declarations: [SkyIdDirective], exports: [SkyIdDirective] });
1537
- SkyIdModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdModule });
1538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyIdModule, decorators: [{
1539
- type: NgModule,
1540
- args: [{
1541
- declarations: [SkyIdDirective],
1542
- exports: [SkyIdDirective],
1543
- }]
1544
- }] });
1545
-
1546
- var _SkyLayoutHostService_hostLayoutForChild, _SkyLayoutHostService_hostLayoutForChildObs;
1547
- /**
1548
- * @internal
1549
- */
1550
- class SkyLayoutHostService {
1551
- constructor() {
1552
- _SkyLayoutHostService_hostLayoutForChild.set(this, new Subject());
1553
- _SkyLayoutHostService_hostLayoutForChildObs.set(this, __classPrivateFieldGet(this, _SkyLayoutHostService_hostLayoutForChild, "f").asObservable());
1554
- }
1555
- get hostLayoutForChild() {
1556
- return __classPrivateFieldGet(this, _SkyLayoutHostService_hostLayoutForChildObs, "f");
1557
- }
1558
- setHostLayoutForChild(layout) {
1559
- __classPrivateFieldGet(this, _SkyLayoutHostService_hostLayoutForChild, "f").next(layout);
1560
- }
1561
- }
1562
- _SkyLayoutHostService_hostLayoutForChild = new WeakMap(), _SkyLayoutHostService_hostLayoutForChildObs = new WeakMap();
1563
- SkyLayoutHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLayoutHostService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1564
- SkyLayoutHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLayoutHostService });
1565
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLayoutHostService, decorators: [{
1566
- type: Injectable
1567
- }] });
1568
-
1569
- var _SkyLiveAnnouncerService_instances, _SkyLiveAnnouncerService_announcerElement, _SkyLiveAnnouncerService_document, _SkyLiveAnnouncerService_idService, _SkyLiveAnnouncerService_createLiveElement;
1570
- /**
1571
- * Allows for announcing messages to screen reader users through the use of a common `aria-live` element.
1572
- * @internal
1573
- */
1574
- class SkyLiveAnnouncerService {
1575
- constructor() {
1576
- _SkyLiveAnnouncerService_instances.add(this);
1577
- this.announcerElementChanged = new ReplaySubject(1);
1578
- _SkyLiveAnnouncerService_announcerElement.set(this, void 0);
1579
- _SkyLiveAnnouncerService_document.set(this, inject(DOCUMENT));
1580
- _SkyLiveAnnouncerService_idService.set(this, inject(SkyIdService));
1581
- __classPrivateFieldSet(this, _SkyLiveAnnouncerService_announcerElement, __classPrivateFieldGet(this, _SkyLiveAnnouncerService_instances, "m", _SkyLiveAnnouncerService_createLiveElement).call(this), "f");
1582
- this.announcerElementChanged.next(__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f"));
1583
- }
1584
- /**
1585
- * Announces a message to screen readers.
1586
- * @param message Message to be announced to the screen reader.
1587
- * @param args Options for the announcement of the message.
1588
- */
1589
- announce(message, args) {
1590
- var _a;
1591
- /* safety-check */
1592
- /* istanbul ignore if */
1593
- if (!__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f")) {
1594
- __classPrivateFieldSet(this, _SkyLiveAnnouncerService_announcerElement, __classPrivateFieldGet(this, _SkyLiveAnnouncerService_instances, "m", _SkyLiveAnnouncerService_createLiveElement).call(this), "f");
1595
- this.announcerElementChanged.next(__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f"));
1596
- }
1597
- const politeness = (_a = args === null || args === void 0 ? void 0 : args.politeness) !== null && _a !== void 0 ? _a : 'polite';
1598
- this.clear();
1599
- __classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f").setAttribute('aria-live', politeness);
1600
- __classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f").textContent = message;
1601
- }
1602
- /**
1603
- * Clears the current text from the announcer element. Can be used to prevent
1604
- * screen readers from reading the text out again while the user is going
1605
- * through the page landmarks.
1606
- */
1607
- clear() {
1608
- if (__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f")) {
1609
- __classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f").textContent = '';
1610
- }
1611
- }
1612
- /**
1613
- * @internal
1614
- */
1615
- ngOnDestroy() {
1616
- var _a;
1617
- (_a = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f")) === null || _a === void 0 ? void 0 : _a.remove();
1618
- __classPrivateFieldSet(this, _SkyLiveAnnouncerService_announcerElement, undefined, "f");
1619
- this.announcerElementChanged.next(undefined);
1620
- }
1621
- }
1622
- _SkyLiveAnnouncerService_announcerElement = new WeakMap(), _SkyLiveAnnouncerService_document = new WeakMap(), _SkyLiveAnnouncerService_idService = new WeakMap(), _SkyLiveAnnouncerService_instances = new WeakSet(), _SkyLiveAnnouncerService_createLiveElement = function _SkyLiveAnnouncerService_createLiveElement() {
1623
- const elementClass = 'sky-live-announcer-element';
1624
- const previousElements = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_document, "f").getElementsByClassName(elementClass);
1625
- const liveEl = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_document, "f").createElement('div');
1626
- // Remove any old containers. This can happen when coming in from a server-side-rendered page.
1627
- for (let i = 0; i < previousElements.length; i++) {
1628
- previousElements[i].remove();
1629
- }
1630
- liveEl.classList.add(elementClass);
1631
- liveEl.classList.add('sky-screen-reader-only');
1632
- liveEl.setAttribute('aria-atomic', 'true');
1633
- liveEl.setAttribute('aria-live', 'polite');
1634
- liveEl.id = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_idService, "f").generateId();
1635
- __classPrivateFieldGet(this, _SkyLiveAnnouncerService_document, "f").body.appendChild(liveEl);
1636
- return liveEl;
1637
- };
1638
- SkyLiveAnnouncerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLiveAnnouncerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1639
- SkyLiveAnnouncerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLiveAnnouncerService, providedIn: 'root' });
1640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLiveAnnouncerService, decorators: [{
1641
- type: Injectable,
1642
- args: [{ providedIn: 'root' }]
1643
- }], ctorParameters: function () { return []; } });
1644
-
1645
- /**
1646
- * @deprecated The `SkyLogService` no longer needs the `SkyLogModule`.
1647
- * The `SkyLogModule` can be removed from your project.
1648
- */
1649
- class SkyLogModule {
1650
- }
1651
- SkyLogModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1652
- SkyLogModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule });
1653
- SkyLogModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule });
1654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogModule, decorators: [{
1655
- type: NgModule,
1656
- args: [{}]
1657
- }] });
1658
-
1659
- /**
1660
- * @internal
1661
- */
1662
- const SKY_LOG_LEVEL = new InjectionToken('SkyLogLevel');
1663
-
1664
- var _SkyLogService_instances, _SkyLogService_applicationLogLevel, _SkyLogService_formatter, _SkyLogService_convertStringToCode, _SkyLogService_canLog, _SkyLogService_logBasedOnLevel, _SkyLogService_logWithParams, _SkyLogService_buildMessageKey;
1665
- const previousWarnings = new Set();
1666
- /**
1667
- * Logs information to the console based on the application's log level as
1668
- * provided by the `SKY_LOG_LEVEL` injection token. If no token is provided,
1669
- * only `error` logs will be shown.
1670
- * @internal
1671
- */
1672
- class SkyLogService {
1673
- constructor(formatter, applicationLogLevel) {
1674
- _SkyLogService_instances.add(this);
1675
- _SkyLogService_applicationLogLevel.set(this, void 0);
1676
- _SkyLogService_formatter.set(this, void 0);
1677
- __classPrivateFieldSet(this, _SkyLogService_formatter, formatter, "f");
1678
- __classPrivateFieldSet(this, _SkyLogService_applicationLogLevel, applicationLogLevel !== null && applicationLogLevel !== void 0 ? applicationLogLevel : 3 /* SkyLogLevel.Error */, "f");
1679
- }
1680
- /**
1681
- * Clears previously-logged messages. Primarily used for unit
1682
- * testing this service.
1683
- */
1684
- static clearPreviousLogs() {
1685
- previousWarnings.clear();
1686
- }
1687
- /**
1688
- * Logs a deprecation warning for a class, property, function, etc. This will
1689
- * be logged as a console warning unless a different log level is given in the
1690
- * `args` parameter.
1691
- * @param name The name of the deprecated class, property, function, etc.
1692
- * @param args Information about the deprecation and replacement recommendations.
1693
- * @returns
1694
- */
1695
- deprecated(name, args) {
1696
- var _a;
1697
- return __awaiter(this, void 0, void 0, function* () {
1698
- const logLevel = (_a = args === null || args === void 0 ? void 0 : args.logLevel) !== null && _a !== void 0 ? _a : 2 /* SkyLogLevel.Warn */;
1699
- name = __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_convertStringToCode).call(this, name);
1700
- if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, logLevel)) {
1701
- const messageParts = [];
1702
- if (args === null || args === void 0 ? void 0 : args.deprecationMajorVersion) {
1703
- messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('{0} is deprecated starting in SKY UX {1}.', name, args.deprecationMajorVersion.toLocaleString()));
1704
- }
1705
- else {
1706
- messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('{0} is deprecated.', name));
1707
- }
1708
- if (args === null || args === void 0 ? void 0 : args.removalMajorVersion) {
1709
- messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('We will remove it in version {0}.', args.removalMajorVersion.toLocaleString()));
1710
- }
1711
- else {
1712
- messageParts.push('We will remove it in a future major version.');
1713
- }
1714
- if (args === null || args === void 0 ? void 0 : args.replacementRecommendation) {
1715
- messageParts.push(args.replacementRecommendation);
1716
- }
1717
- if (args === null || args === void 0 ? void 0 : args.moreInfoUrl) {
1718
- messageParts.push(__classPrivateFieldGet(this, _SkyLogService_formatter, "f").formatText('For more information, see {0}.', args.moreInfoUrl));
1719
- }
1720
- __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logBasedOnLevel).call(this, logLevel, messageParts.join(' '));
1721
- }
1722
- return Promise.resolve();
1723
- });
1724
- }
1725
- /**
1726
- * Logs a console error if the application's log level is `SkyLogLevel.Error`.
1727
- * @param message The error message
1728
- * @param params Optional parameters for the error message.
1729
- */
1730
- error(message, params) {
1731
- if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, 3 /* SkyLogLevel.Error */)) {
1732
- __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logWithParams).call(this, 'error', message, params);
1733
- }
1734
- }
1735
- /**
1736
- * Logs console information if the application's log level is `SkyLogLevel.Info` or above.
1737
- * @param message The informational message
1738
- * @param params Optional parameters for the informational message.
1739
- */
1740
- info(message, params) {
1741
- if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, 1 /* SkyLogLevel.Info */)) {
1742
- __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logWithParams).call(this, 'log', message, params);
1743
- }
1744
- }
1745
- /**
1746
- * Logs a console warning if the application's log level is `SkyLogLevel.Warn` or above.
1747
- * @param message The warning message
1748
- * @param params Optional parameters for the warning message.
1749
- */
1750
- warn(message, params) {
1751
- if (__classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_canLog).call(this, 2 /* SkyLogLevel.Warn */)) {
1752
- const messageKey = __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_buildMessageKey).call(this, message, params);
1753
- // Only log each warning once per application instance to avoid drowning out other
1754
- // important messages in the console.
1755
- if (!previousWarnings.has(message)) {
1756
- __classPrivateFieldGet(this, _SkyLogService_instances, "m", _SkyLogService_logWithParams).call(this, 'warn', message, params);
1757
- previousWarnings.add(messageKey);
1758
- }
1759
- }
1760
- }
1761
- }
1762
- _SkyLogService_applicationLogLevel = new WeakMap(), _SkyLogService_formatter = new WeakMap(), _SkyLogService_instances = new WeakSet(), _SkyLogService_convertStringToCode = function _SkyLogService_convertStringToCode(typeString) {
1763
- if (typeString.charAt(0) !== '`' && typeString.charAt(-1) !== '`') {
1764
- typeString = '`' + typeString + '`';
1765
- }
1766
- return typeString;
1767
- }, _SkyLogService_canLog = function _SkyLogService_canLog(intendedLogLevel) {
1768
- return intendedLogLevel >= __classPrivateFieldGet(this, _SkyLogService_applicationLogLevel, "f");
1769
- }, _SkyLogService_logBasedOnLevel = function _SkyLogService_logBasedOnLevel(logLevel, message, params) {
1770
- switch (logLevel) {
1771
- case 1 /* SkyLogLevel.Info */:
1772
- this.info(message, params);
1773
- break;
1774
- case 2 /* SkyLogLevel.Warn */:
1775
- this.warn(message, params);
1776
- break;
1777
- case 3 /* SkyLogLevel.Error */:
1778
- this.error(message, params);
1779
- break;
1780
- }
1781
- }, _SkyLogService_logWithParams = function _SkyLogService_logWithParams(logMethod, message, params) {
1782
- if (params) {
1783
- console[logMethod](message, ...params);
1784
- }
1785
- else {
1786
- console[logMethod](message);
1787
- }
1788
- }, _SkyLogService_buildMessageKey = function _SkyLogService_buildMessageKey(message, params) {
1789
- let key = message;
1790
- if (params === null || params === void 0 ? void 0 : params.length) {
1791
- key = `${key} ${params.join(' ')}`;
1792
- }
1793
- return key;
1794
- };
1795
- SkyLogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogService, deps: [{ token: SkyAppFormat }, { token: SKY_LOG_LEVEL, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
1796
- SkyLogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogService, providedIn: 'root' });
1797
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyLogService, decorators: [{
1798
- type: Injectable,
1799
- args: [{
1800
- providedIn: 'root',
1801
- }]
1802
- }], ctorParameters: function () {
1803
- return [{ type: SkyAppFormat }, { type: undefined, decorators: [{
1804
- type: Optional
1805
- }, {
1806
- type: Inject,
1807
- args: [SKY_LOG_LEVEL]
1808
- }] }];
1809
- } });
1810
-
1811
- /**
1812
- * @deprecated The `SkyMediaQueryService` no longer needs the `SkyMediaQueryModule`.
1813
- * The `SkyMediaQueryModule` can be removed from your project.
1814
- */
1815
- class SkyMediaQueryModule {
1816
- }
1817
- SkyMediaQueryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1818
- SkyMediaQueryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule });
1819
- SkyMediaQueryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule });
1820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryModule, decorators: [{
1821
- type: NgModule,
1822
- args: [{}]
1823
- }] });
1824
-
1825
- var _SkyMediaQueryService_instances, _SkyMediaQueryService_currentSubject, _SkyMediaQueryService_currentBreakpoint, _SkyMediaQueryService_breakpoints, _SkyMediaQueryService_mediaQueries, _SkyMediaQueryService_zone, _SkyMediaQueryService_addListeners, _SkyMediaQueryService_removeListeners, _SkyMediaQueryService_notifyBreakpointChange;
1826
- const DEFAULT_BREAKPOINT$1 = SkyMediaBreakpoints.md;
1827
- class SkyMediaQueryService {
1828
- /**
1829
- * Returns the current breakpoint.
1830
- */
1831
- get current() {
1832
- return __classPrivateFieldGet(this, _SkyMediaQueryService_currentBreakpoint, "f");
1833
- }
1834
- constructor(zone) {
1835
- _SkyMediaQueryService_instances.add(this);
1836
- _SkyMediaQueryService_currentSubject.set(this, new BehaviorSubject(DEFAULT_BREAKPOINT$1));
1837
- _SkyMediaQueryService_currentBreakpoint.set(this, DEFAULT_BREAKPOINT$1);
1838
- _SkyMediaQueryService_breakpoints.set(this, [
1839
- {
1840
- mediaQueryString: SkyMediaQueryService.xs,
1841
- name: SkyMediaBreakpoints.xs,
1842
- },
1843
- {
1844
- mediaQueryString: SkyMediaQueryService.sm,
1845
- name: SkyMediaBreakpoints.sm,
1846
- },
1847
- {
1848
- mediaQueryString: SkyMediaQueryService.md,
1849
- name: SkyMediaBreakpoints.md,
1850
- },
1851
- {
1852
- mediaQueryString: SkyMediaQueryService.lg,
1853
- name: SkyMediaBreakpoints.lg,
1854
- },
1855
- ]);
1856
- _SkyMediaQueryService_mediaQueries.set(this, []);
1857
- _SkyMediaQueryService_zone.set(this, void 0);
1858
- __classPrivateFieldSet(this, _SkyMediaQueryService_zone, zone, "f");
1859
- __classPrivateFieldGet(this, _SkyMediaQueryService_instances, "m", _SkyMediaQueryService_addListeners).call(this);
1860
- }
1861
- ngOnDestroy() {
1862
- __classPrivateFieldGet(this, _SkyMediaQueryService_instances, "m", _SkyMediaQueryService_removeListeners).call(this);
1863
- __classPrivateFieldGet(this, _SkyMediaQueryService_currentSubject, "f").complete();
1864
- }
1865
- /**
1866
- * Subscribes to screen size changes.
1867
- * @param listener Specifies a function that is called when breakpoints change.
1868
- */
1869
- subscribe(listener) {
1870
- return __classPrivateFieldGet(this, _SkyMediaQueryService_currentSubject, "f").subscribe({
1871
- next: (breakpoints) => {
1872
- listener(breakpoints);
1873
- },
1874
- });
1875
- }
1876
- /**
1877
- * @internal
1878
- */
1879
- destroy() {
1880
- __classPrivateFieldGet(this, _SkyMediaQueryService_instances, "m", _SkyMediaQueryService_removeListeners).call(this);
1881
- __classPrivateFieldGet(this, _SkyMediaQueryService_currentSubject, "f").complete();
1882
- }
1883
- }
1884
- _SkyMediaQueryService_currentSubject = new WeakMap(), _SkyMediaQueryService_currentBreakpoint = new WeakMap(), _SkyMediaQueryService_breakpoints = new WeakMap(), _SkyMediaQueryService_mediaQueries = new WeakMap(), _SkyMediaQueryService_zone = new WeakMap(), _SkyMediaQueryService_instances = new WeakSet(), _SkyMediaQueryService_addListeners = function _SkyMediaQueryService_addListeners() {
1885
- __classPrivateFieldSet(this, _SkyMediaQueryService_mediaQueries, __classPrivateFieldGet(this, _SkyMediaQueryService_breakpoints, "f").map((breakpoint) => {
1886
- const mq = matchMedia(breakpoint.mediaQueryString);
1887
- const listener = (event) => {
1888
- // Run the check outside of Angular's change detection since Angular
1889
- // does not wrap matchMedia listeners in NgZone.
1890
- // See: https://blog.assaf.co/angular-2-change-detection-zones-and-an-example/
1891
- __classPrivateFieldGet(this, _SkyMediaQueryService_zone, "f").run(() => {
1892
- if (event.matches) {
1893
- __classPrivateFieldGet(this, _SkyMediaQueryService_instances, "m", _SkyMediaQueryService_notifyBreakpointChange).call(this, breakpoint.name);
1894
- }
1895
- });
1896
- };
1897
- mq.addListener(listener);
1898
- if (mq.matches) {
1899
- __classPrivateFieldGet(this, _SkyMediaQueryService_instances, "m", _SkyMediaQueryService_notifyBreakpointChange).call(this, breakpoint.name);
1900
- }
1901
- return {
1902
- mediaQueryList: mq,
1903
- listener,
1904
- };
1905
- }), "f");
1906
- }, _SkyMediaQueryService_removeListeners = function _SkyMediaQueryService_removeListeners() {
1907
- __classPrivateFieldGet(this, _SkyMediaQueryService_mediaQueries, "f").forEach((mediaQuery) => {
1908
- mediaQuery.mediaQueryList.removeListener(mediaQuery.listener);
1909
- });
1910
- __classPrivateFieldSet(this, _SkyMediaQueryService_mediaQueries, [], "f");
1911
- }, _SkyMediaQueryService_notifyBreakpointChange = function _SkyMediaQueryService_notifyBreakpointChange(breakpoint) {
1912
- __classPrivateFieldSet(this, _SkyMediaQueryService_currentBreakpoint, breakpoint, "f");
1913
- __classPrivateFieldGet(this, _SkyMediaQueryService_currentSubject, "f").next(breakpoint);
1914
- };
1915
- /**
1916
- * The size for the `xs` breakpoint.
1917
- * @default "(max-width: 767px)"
1918
- */
1919
- SkyMediaQueryService.xs = '(max-width: 767px)';
1920
- /**
1921
- * The size for the `sm` breakpoint.
1922
- * @default "(min-width: 768px) and (max-width: 991px)"
1923
- */
1924
- SkyMediaQueryService.sm = '(min-width: 768px) and (max-width: 991px)';
1925
- /**
1926
- * The size for the `md` breakpoint.
1927
- * @default "(min-width: 992px) and (max-width: 1199px)"
1928
- */
1929
- SkyMediaQueryService.md = '(min-width: 992px) and (max-width: 1199px)';
1930
- /**
1931
- * The size for the `lg` breakpoint.
1932
- * @default "(min-width: 1200px)"
1933
- */
1934
- SkyMediaQueryService.lg = '(min-width: 1200px)';
1935
- SkyMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
1936
- SkyMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryService, providedIn: 'root' });
1937
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyMediaQueryService, decorators: [{
1938
- type: Injectable,
1939
- args: [{
1940
- providedIn: 'root',
1941
- }]
1942
- }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
1943
-
1944
- /**
1945
- * NOTICE: DO NOT MODIFY THIS FILE!
1946
- * The contents of this file were automatically generated by
1947
- * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-core' schematic.
1948
- * To update this file, simply rerun the command.
1949
- */
1950
- const RESOURCES = {
1951
- 'EN-US': {
1952
- skyux_numeric_billions_symbol: { message: 'B' },
1953
- skyux_numeric_millions_symbol: { message: 'M' },
1954
- skyux_numeric_thousands_symbol: { message: 'K' },
1955
- skyux_numeric_trillions_symbol: { message: 'T' },
1956
- },
1957
- };
1958
- class SkyCoreResourcesProvider {
1959
- getString(localeInfo, name) {
1960
- return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
1961
- }
1962
- }
1963
- /**
1964
- * Import into any component library module that needs to use resource strings.
1965
- */
1966
- class SkyCoreResourcesModule {
1967
- }
1968
- SkyCoreResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1969
- SkyCoreResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreResourcesModule, exports: [SkyI18nModule] });
1970
- SkyCoreResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreResourcesModule, providers: [
1971
- {
1972
- provide: SKY_LIB_RESOURCES_PROVIDERS,
1973
- useClass: SkyCoreResourcesProvider,
1974
- multi: true,
1975
- },
1976
- ], imports: [SkyI18nModule] });
1977
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyCoreResourcesModule, decorators: [{
1978
- type: NgModule,
1979
- args: [{
1980
- exports: [SkyI18nModule],
1981
- providers: [
1982
- {
1983
- provide: SKY_LIB_RESOURCES_PROVIDERS,
1984
- useClass: SkyCoreResourcesProvider,
1985
- multi: true,
1986
- },
1987
- ],
1988
- }]
1989
- }] });
1990
-
1991
- /**
1992
- * Provides arguments for the number to format.
1993
- * @deprecated Use the `SkyNumericOptions` interface instead.
1994
- * @internal
1995
- */
1996
- class NumericOptions {
1997
- constructor() {
1998
- this.digits = 1;
1999
- this.format = 'number';
2000
- this.currencySign = 'standard';
2001
- this.iso = 'USD';
2002
- this.truncate = true;
2003
- this.truncateAfter = 1000;
2004
- const logService = new SkyLogService(new SkyAppFormat());
2005
- logService
2006
- .deprecated('NumericOptions', {
2007
- deprecationMajorVersion: 7,
2008
- moreInfoUrl: 'https://developer.blackbaud.com/skyux/components/numeric',
2009
- replacementRecommendation: 'Use the `SkyNumericOptions` interface instead.',
2010
- })
2011
- .then();
2012
- }
2013
- }
2014
-
2015
- /* eslint-disable eqeqeq */
2016
- // This file is mostly ported from the Angular 4.x NumberPipe in order to maintain the old
2017
- // behavior of using the `Intl` API for formatting numbers rather than having to register every
2018
- // supported locale.
2019
- // https://github.com/angular/angular/blob/4.4.x/packages/common/src/pipes/number_pipe.ts
2020
- function isNumeric(value) {
2021
- return !isNaN(value - parseFloat(value));
2022
- }
2023
- function parseIntAutoRadix(text) {
2024
- const result = parseInt(text, 10);
2025
- /* istanbul ignore next */
2026
- if (isNaN(result)) {
2027
- throw new Error('Invalid integer literal when parsing ' + text);
2028
- }
2029
- return result;
2030
- }
2031
- // Need to add the following to classes which contain static methods.
2032
- // See: https://github.com/ng-packagr/ng-packagr/issues/641
2033
- // @dynamic
2034
- class SkyNumberFormatUtility {
2035
- static formatNumber(locale, value, style, digits, currency = null, currencyAsSymbol = false, currencySign) {
2036
- if (value == null) {
2037
- return null;
2038
- }
2039
- // Convert strings to numbers
2040
- value = typeof value === 'string' && isNumeric(value) ? +value : value;
2041
- if (typeof value !== 'number') {
2042
- throw Error(`SkyInvalidPipeArgument: '${value}'`);
2043
- }
2044
- let minInt = undefined;
2045
- let minFraction = undefined;
2046
- let maxFraction = undefined;
2047
- if (style !== SkyIntlNumberFormatStyle.Currency) {
2048
- // rely on Intl default for currency
2049
- minInt = 1;
2050
- minFraction = 0;
2051
- maxFraction = 3;
2052
- }
2053
- if (digits) {
2054
- const parts = digits.match(this._NUMBER_FORMAT_REGEXP);
2055
- if (parts === null) {
2056
- throw new Error(`${digits} is not a valid digit info for number pipes`);
2057
- }
2058
- /* istanbul ignore else */
2059
- if (parts[1] != null) {
2060
- // min integer digits
2061
- minInt = parseIntAutoRadix(parts[1]);
2062
- }
2063
- /* istanbul ignore else */
2064
- if (parts[3] != null) {
2065
- // min fraction digits
2066
- minFraction = parseIntAutoRadix(parts[3]);
2067
- }
2068
- /* istanbul ignore else */
2069
- if (parts[5] != null) {
2070
- // max fraction digits
2071
- maxFraction = parseIntAutoRadix(parts[5]);
2072
- }
2073
- }
2074
- return SkyIntlNumberFormatter.format(value, locale, style, {
2075
- minimumIntegerDigits: minInt,
2076
- minimumFractionDigits: minFraction,
2077
- maximumFractionDigits: maxFraction,
2078
- currency: currency,
2079
- currencyAsSymbol: currencyAsSymbol,
2080
- currencySign: currencySign,
2081
- });
2082
- }
2083
- }
2084
- SkyNumberFormatUtility._NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?)?$/;
2085
-
2086
- var _SkyNumericService_instances, _SkyNumericService_resourcesSvc, _SkyNumericService_symbolIndex, _SkyNumericService_roundNumber, _SkyNumericService_scaleNumberByPowerOfTen, _SkyNumericService_storeShortenSymbol, _SkyNumericService_replaceShortenSymbol, _SkyNumericService_getSymbol;
2087
- class SkyNumericService {
2088
- constructor(resourcesSvc) {
2089
- _SkyNumericService_instances.add(this);
2090
- /**
2091
- * The browser's current locale.
2092
- * @internal
2093
- */
2094
- this.currentLocale = 'en-US';
2095
- /**
2096
- * @internal
2097
- */
2098
- this.shortSymbol = '';
2099
- _SkyNumericService_resourcesSvc.set(this, void 0);
2100
- _SkyNumericService_symbolIndex.set(this, void 0);
2101
- __classPrivateFieldSet(this, _SkyNumericService_resourcesSvc, resourcesSvc, "f");
2102
- __classPrivateFieldSet(this, _SkyNumericService_symbolIndex, [
2103
- { value: 1e12, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_trillions_symbol') },
2104
- { value: 1e9, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_billions_symbol') },
2105
- { value: 1e6, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_millions_symbol') },
2106
- { value: 1e3, label: __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_getSymbol).call(this, 'skyux_numeric_thousands_symbol') },
2107
- ], "f");
2108
- }
2109
- /**
2110
- * Formats a number based on the provided options.
2111
- * @param value The number to format.
2112
- * @param options Format options.
2113
- */
2114
- formatNumber(value, options) {
2115
- var _a;
2116
- if (isNaN(value) || value === null) {
2117
- return '';
2118
- }
2119
- const numericOptions = Object.assign({ digits: 0, format: 'number', currencySign: 'standard', iso: 'USD', truncateAfter: 1000 }, options);
2120
- const decimalPlaceRegExp = /\.0+$|(\.[0-9]*[1-9])0+$/;
2121
- const locale = numericOptions.locale || this.currentLocale;
2122
- const digits = numericOptions.digits || 0;
2123
- // Get the symbol for the number after rounding, since rounding could push the number
2124
- // into a different symbol range.
2125
- let roundedNumber = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_roundNumber).call(this, value, digits);
2126
- const roundedNumberAbs = Math.abs(roundedNumber);
2127
- let suffix = '';
2128
- for (let i = 0; i < __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f").length; i++) {
2129
- let symbol = __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f")[i];
2130
- if (numericOptions.truncate &&
2131
- numericOptions.truncateAfter !== undefined &&
2132
- roundedNumberAbs >= numericOptions.truncateAfter &&
2133
- roundedNumberAbs >= symbol.value) {
2134
- roundedNumber = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_roundNumber).call(this, value / symbol.value, digits);
2135
- if (Math.abs(roundedNumber) === 1000 && i > 0) {
2136
- // Rounding caused the number to cross into the range of the next symbol.
2137
- symbol = __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f")[i - 1];
2138
- roundedNumber /= 1000;
2139
- }
2140
- suffix = symbol.label;
2141
- break;
2142
- }
2143
- }
2144
- let output = roundedNumber.toString().replace(decimalPlaceRegExp, '$1') + suffix;
2145
- __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_storeShortenSymbol).call(this, output);
2146
- let digitsFormatted;
2147
- let isDecimal = false;
2148
- // Checks the string entered for format. Using toLowerCase to ignore case.
2149
- switch ((_a = numericOptions.format) === null || _a === void 0 ? void 0 : _a.toLowerCase()) {
2150
- // In a case where a decimal value was not shortened and
2151
- // the digit input is 2 or higher, it forces 2 digits.
2152
- // For example, this prevents a value like $15.50 from displaying as $15.5.
2153
- // Note: This will need to be reviewed if we support currencies with
2154
- // three decimal digits.
2155
- case 'currency':
2156
- isDecimal = value % 1 !== 0;
2157
- if (numericOptions.minDigits) {
2158
- digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;
2159
- }
2160
- else if (isDecimal && digits >= 2) {
2161
- digitsFormatted = `1.2-${digits}`;
2162
- }
2163
- else {
2164
- digitsFormatted = `1.0-${digits}`;
2165
- }
2166
- output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Currency, digitsFormatted, numericOptions.iso,
2167
- // Angular 5+ needs a string for this parameter, but Angular 4 needs a boolean.
2168
- // To support both versions we can supply 'symbol' which will evaluate truthy for Angular 4
2169
- // and the appropriate string value for Angular 5+.
2170
- // See: https://angular.io/api/common/CurrencyPipe#parameters
2171
- 'symbol', numericOptions.currencySign);
2172
- // ^^^^^^ Result can't be null since the sanitized input is always a number.
2173
- break;
2174
- // The following is a catch-all to ensure that if
2175
- // anything but currency (or a future option) are entered,
2176
- // it will be treated like a number.
2177
- default:
2178
- // Ensures localization of the number to ensure comma and
2179
- // decimal separator
2180
- if (numericOptions.minDigits) {
2181
- digitsFormatted = `1.${numericOptions.minDigits}-${digits}`;
2182
- }
2183
- else if (numericOptions.truncate) {
2184
- digitsFormatted = `1.0-${digits}`;
2185
- }
2186
- else {
2187
- digitsFormatted = `1.${digits}-${digits}`;
2188
- }
2189
- output = SkyNumberFormatUtility.formatNumber(locale, parseFloat(output), SkyIntlNumberFormatStyle.Decimal, digitsFormatted);
2190
- // ^^^^^^ Result can't be null since the sanitized input is always a number.
2191
- break;
2192
- }
2193
- if (numericOptions.truncate) {
2194
- output = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_replaceShortenSymbol).call(this, output);
2195
- }
2196
- return output;
2197
- }
2198
- }
2199
- _SkyNumericService_resourcesSvc = new WeakMap(), _SkyNumericService_symbolIndex = new WeakMap(), _SkyNumericService_instances = new WeakSet(), _SkyNumericService_roundNumber = function _SkyNumericService_roundNumber(value, precision) {
2200
- if (precision < 0) {
2201
- throw new Error('SkyInvalidArgument: precision must be >= 0');
2202
- }
2203
- /* Sanity check - ignoring coverage but should not ignore if we make this method public */
2204
- /* istanbul ignore next */
2205
- if (isNaN(value) || value === null) {
2206
- return 0;
2207
- }
2208
- const scaledValue = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_scaleNumberByPowerOfTen).call(this, value, precision, true);
2209
- const scaledRoundedValue = Math.round(scaledValue);
2210
- const unscaledRoundedValue = __classPrivateFieldGet(this, _SkyNumericService_instances, "m", _SkyNumericService_scaleNumberByPowerOfTen).call(this, scaledRoundedValue, precision, false);
2211
- return unscaledRoundedValue;
2212
- }, _SkyNumericService_scaleNumberByPowerOfTen = function _SkyNumericService_scaleNumberByPowerOfTen(value, scalar, scaleUp) {
2213
- const valueStr = value.toString().toLowerCase();
2214
- const isExponentFormat = valueStr.includes('e');
2215
- if (isExponentFormat) {
2216
- const [base, exp] = valueStr.split('e');
2217
- const newExp = scaleUp ? Number(exp) + scalar : Number(exp) - scalar;
2218
- return Number(`${base}e${newExp}`);
2219
- }
2220
- else {
2221
- const e = scaleUp ? 'e' : 'e-';
2222
- return Number(`${value}${e}${scalar}`);
2223
- }
2224
- }, _SkyNumericService_storeShortenSymbol = function _SkyNumericService_storeShortenSymbol(value) {
2225
- const symbols = __classPrivateFieldGet(this, _SkyNumericService_symbolIndex, "f").map((s) => s.label);
2226
- const regexp = new RegExp(symbols.join('|'), 'ig');
2227
- const match = value.match(regexp);
2228
- this.shortSymbol = match ? match.toString() : '';
2229
- }, _SkyNumericService_replaceShortenSymbol = function _SkyNumericService_replaceShortenSymbol(value) {
2230
- const result = /(\d)(?!.*\d)/g.exec(value);
2231
- /*istanbul ignore else*/
2232
- if (result) {
2233
- const pos = result.index + result.length;
2234
- const output = value.substring(0, pos) + this.shortSymbol + value.substring(pos);
2235
- return output;
2236
- }
2237
- else {
2238
- return value;
2239
- }
2240
- }, _SkyNumericService_getSymbol = function _SkyNumericService_getSymbol(key) {
2241
- // TODO: Need to implement the async `getString` method in a breaking change.
2242
- return __classPrivateFieldGet(this, _SkyNumericService_resourcesSvc, "f").getStringForLocale({ locale: 'en_US' }, key);
2243
- };
2244
- SkyNumericService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericService, deps: [{ token: i1.SkyLibResourcesService }], target: i0.ɵɵFactoryTarget.Injectable });
2245
- SkyNumericService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericService, providedIn: 'any' });
2246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericService, decorators: [{
2247
- type: Injectable,
2248
- args: [{
2249
- providedIn: 'any',
2250
- }]
2251
- }], ctorParameters: function () { return [{ type: i1.SkyLibResourcesService }]; } });
2252
-
2253
- var _SkyNumericPipe_cacheKey, _SkyNumericPipe_changeDetector, _SkyNumericPipe_formattedValue, _SkyNumericPipe_ngUnsubscribe, _SkyNumericPipe_numericSvc, _SkyNumericPipe_providerLocale;
2254
- /**
2255
- * Shortens numbers to rounded numbers and abbreviation characters such as K for thousands,
2256
- * M for millions, B for billions, and T for trillions. The pipe also formats for currency.
2257
- * Be sure you have a space after the two curly brackets opening the pipe and
2258
- * a space before the two curly brackets closing the pipe or it will not work.
2259
- */
2260
- class SkyNumericPipe {
2261
- constructor(localeProvider, numericSvc, changeDetector) {
2262
- _SkyNumericPipe_cacheKey.set(this, void 0);
2263
- _SkyNumericPipe_changeDetector.set(this, void 0);
2264
- _SkyNumericPipe_formattedValue.set(this, void 0);
2265
- _SkyNumericPipe_ngUnsubscribe.set(this, new Subject());
2266
- _SkyNumericPipe_numericSvc.set(this, void 0);
2267
- _SkyNumericPipe_providerLocale.set(this, void 0);
2268
- __classPrivateFieldSet(this, _SkyNumericPipe_numericSvc, numericSvc, "f");
2269
- __classPrivateFieldSet(this, _SkyNumericPipe_changeDetector, changeDetector, "f");
2270
- localeProvider
2271
- .getLocaleInfo()
2272
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyNumericPipe_ngUnsubscribe, "f")))
2273
- .subscribe((localeInfo) => {
2274
- __classPrivateFieldSet(this, _SkyNumericPipe_providerLocale, localeInfo.locale, "f");
2275
- numericSvc.currentLocale = __classPrivateFieldGet(this, _SkyNumericPipe_providerLocale, "f");
2276
- __classPrivateFieldGet(this, _SkyNumericPipe_changeDetector, "f").markForCheck();
2277
- });
2278
- }
2279
- ngOnDestroy() {
2280
- __classPrivateFieldGet(this, _SkyNumericPipe_ngUnsubscribe, "f").next();
2281
- __classPrivateFieldGet(this, _SkyNumericPipe_ngUnsubscribe, "f").complete();
2282
- }
2283
- /**
2284
- * Formats a number based on the provided options.
2285
- */
2286
- transform(value, config) {
2287
- const newCacheKey = (config ? JSON.stringify(config, Object.keys(config).sort()) : '') +
2288
- `${value}_${(config === null || config === void 0 ? void 0 : config.locale) || __classPrivateFieldGet(this, _SkyNumericPipe_providerLocale, "f")}`;
2289
- /* If the value and locale are the same as the last transform then return the previous value
2290
- instead of reformatting. */
2291
- if (__classPrivateFieldGet(this, _SkyNumericPipe_formattedValue, "f") && __classPrivateFieldGet(this, _SkyNumericPipe_cacheKey, "f") === newCacheKey) {
2292
- return __classPrivateFieldGet(this, _SkyNumericPipe_formattedValue, "f");
2293
- }
2294
- const options = new NumericOptions();
2295
- // The default number of digits is `1`. When truncate is disabled, set digits
2296
- // to `0` to avoid the unnecessary addition of `.0` at the end of the formatted number.
2297
- if (config && config.truncate === false && config.digits === undefined) {
2298
- options.digits = 0;
2299
- }
2300
- // If the minimum digits is less than the set maximum digits then throw an error
2301
- if (config &&
2302
- config.minDigits &&
2303
- config.digits &&
2304
- config.minDigits > config.digits) {
2305
- throw new Error('The `digits` property must be greater than or equal to the `minDigits` property');
2306
- // If there is a minimum digits given but not a maximum then default the maximum to the minimum
2307
- }
2308
- else if (config && config.minDigits && !config.digits) {
2309
- options.digits = config.minDigits;
2310
- }
2311
- Object.assign(options, config);
2312
- // Assign properties for proper result caching.
2313
- __classPrivateFieldSet(this, _SkyNumericPipe_cacheKey, newCacheKey, "f");
2314
- __classPrivateFieldSet(this, _SkyNumericPipe_formattedValue, __classPrivateFieldGet(this, _SkyNumericPipe_numericSvc, "f").formatNumber(value, options), "f");
2315
- return __classPrivateFieldGet(this, _SkyNumericPipe_formattedValue, "f");
2316
- }
2317
- }
2318
- _SkyNumericPipe_cacheKey = new WeakMap(), _SkyNumericPipe_changeDetector = new WeakMap(), _SkyNumericPipe_formattedValue = new WeakMap(), _SkyNumericPipe_ngUnsubscribe = new WeakMap(), _SkyNumericPipe_numericSvc = new WeakMap(), _SkyNumericPipe_providerLocale = new WeakMap();
2319
- SkyNumericPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericPipe, deps: [{ token: i1.SkyAppLocaleProvider }, { token: SkyNumericService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });
2320
- SkyNumericPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericPipe, name: "skyNumeric", pure: false });
2321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericPipe, decorators: [{
2322
- type: Pipe,
2323
- args: [{
2324
- name: 'skyNumeric',
2325
- pure: false,
2326
- }]
2327
- }], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }, { type: SkyNumericService }, { type: i0.ChangeDetectorRef }]; } });
2328
-
2329
- class SkyNumericModule {
2330
- }
2331
- SkyNumericModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2332
- SkyNumericModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, declarations: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule], exports: [SkyNumericPipe] });
2333
- SkyNumericModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, providers: [SkyNumericPipe], imports: [SkyI18nModule, SkyCoreResourcesModule] });
2334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyNumericModule, decorators: [{
2335
- type: NgModule,
2336
- args: [{
2337
- declarations: [SkyNumericPipe],
2338
- providers: [SkyNumericPipe],
2339
- imports: [SkyI18nModule, SkyCoreResourcesModule],
2340
- exports: [SkyNumericPipe],
2341
- }]
2342
- }] });
2343
-
2344
- var _SkyOverlayInstance_backdropClick, _SkyOverlayInstance_backdropClickObs, _SkyOverlayInstance_closed, _SkyOverlayInstance_closedObs;
2345
- /**
2346
- * Represents a new overlay instance. It is used to manage the "closed" state of the overlay,
2347
- * and access any public members on the appended content component instance.
2348
- */
2349
- class SkyOverlayInstance {
2350
- /**
2351
- * Emits when the overlay is clicked (but not its content).
2352
- */
2353
- get backdropClick() {
2354
- return __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClickObs, "f");
2355
- }
2356
- /**
2357
- * Emits after the overlay is closed.
2358
- */
2359
- get closed() {
2360
- return __classPrivateFieldGet(this, _SkyOverlayInstance_closedObs, "f");
2361
- }
2362
- constructor(
2363
- /**
2364
- * The configuration for the overlay.
2365
- */
2366
- config, componentRef) {
2367
- this.config = config;
2368
- this.componentRef = componentRef;
2369
- _SkyOverlayInstance_backdropClick.set(this, void 0);
2370
- _SkyOverlayInstance_backdropClickObs.set(this, void 0);
2371
- _SkyOverlayInstance_closed.set(this, void 0);
2372
- _SkyOverlayInstance_closedObs.set(this, void 0);
2373
- this.id = this.componentRef.instance.id;
2374
- this.componentRef.instance.closed.subscribe(() => {
2375
- __classPrivateFieldGet(this, _SkyOverlayInstance_closed, "f").next();
2376
- __classPrivateFieldGet(this, _SkyOverlayInstance_closed, "f").complete();
2377
- __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClick, "f").complete();
2378
- });
2379
- this.componentRef.instance.backdropClick.subscribe(() => {
2380
- __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClick, "f").next();
2381
- });
2382
- __classPrivateFieldSet(this, _SkyOverlayInstance_backdropClick, new Subject(), "f");
2383
- __classPrivateFieldSet(this, _SkyOverlayInstance_closed, new Subject(), "f");
2384
- __classPrivateFieldSet(this, _SkyOverlayInstance_backdropClickObs, __classPrivateFieldGet(this, _SkyOverlayInstance_backdropClick, "f").asObservable(), "f");
2385
- __classPrivateFieldSet(this, _SkyOverlayInstance_closedObs, __classPrivateFieldGet(this, _SkyOverlayInstance_closed, "f").asObservable(), "f");
2386
- }
2387
- /**
2388
- * Creates and attaches a component to the overlay.
2389
- * @param component The component to attach.
2390
- * @param providers Custom providers to apply to the component.
2391
- */
2392
- attachComponent(component, providers) {
2393
- const componentRef = this.componentRef.instance.attachComponent(component, providers);
2394
- return componentRef.instance;
2395
- }
2396
- /**
2397
- * Attaches a `TemplateRef` to the overlay.
2398
- * @param templateRef The `TemplateRef` to attach.
2399
- * @param context The context to provide to the template.
2400
- */
2401
- attachTemplate(templateRef, context) {
2402
- this.componentRef.instance.attachTemplate(templateRef, context);
2403
- }
2404
- }
2405
- _SkyOverlayInstance_backdropClick = new WeakMap(), _SkyOverlayInstance_backdropClickObs = new WeakMap(), _SkyOverlayInstance_closed = new WeakMap(), _SkyOverlayInstance_closedObs = new WeakMap();
2406
-
2407
- /**
2408
- * @internal
2409
- */
2410
- const SKY_STACKING_CONTEXT = new InjectionToken('SkyStackingContext');
2411
-
2412
- /**
2413
- * Contextual information for each overlay.
2414
- * @internal
2415
- */
2416
- class SkyOverlayContext {
2417
- constructor(config) {
2418
- this.config = config;
2419
- }
2420
- }
2421
-
2422
- var _SkyOverlayComponent_instances, _SkyOverlayComponent_backdropClick, _SkyOverlayComponent_backdropClickObs, _SkyOverlayComponent_changeDetector, _SkyOverlayComponent_closed, _SkyOverlayComponent_closedObs, _SkyOverlayComponent_context, _SkyOverlayComponent_coreAdapter, _SkyOverlayComponent_injector, _SkyOverlayComponent_ngUnsubscribe, _SkyOverlayComponent_router, _SkyOverlayComponent_routerSubscription, _SkyOverlayComponent_applyConfig, _SkyOverlayComponent_addBackdropClickListener, _SkyOverlayComponent_addRouteListener, _SkyOverlayComponent_removeRouteListener;
2423
- const POSITION_DEFAULT = 'fixed';
2424
- /**
2425
- * Omnibar is 1000.
2426
- * See: https://github.com/blackbaud/auth-client/blob/master/src/omnibar/omnibar.ts#L139
2427
- * ---
2428
- * Modals start their z-indexes at 1040. However, each modal's z-index is a multiple of 10, so it
2429
- * will be difficult to reliably predict a z-index that will always appear above all other
2430
- * layers. Starting the z-index for overlays at a number much greater than modals will accommodate
2431
- * the most reasonable of scenarios.
2432
- * See: https://github.com/blackbaud/skyux-modals/blob/master/src/app/public/modules/modal/modal-host.service.ts#L22
2433
- * (NOTE: It should be noted that modals do not use the overlay service, which is something we
2434
- * should do in the near future to make sure z-indexes are predictable across all component
2435
- * libraries.)
2436
- */
2437
- let uniqueZIndex = 5000;
2438
- /**
2439
- * @internal
2440
- */
2441
- class SkyOverlayComponent {
2442
- get backdropClick() {
2443
- return __classPrivateFieldGet(this, _SkyOverlayComponent_backdropClickObs, "f");
2444
- }
2445
- get closed() {
2446
- return __classPrivateFieldGet(this, _SkyOverlayComponent_closedObs, "f");
2447
- }
2448
- constructor(changeDetector, injector, coreAdapter, context, idSvc, router) {
2449
- _SkyOverlayComponent_instances.add(this);
2450
- this.wrapperClass = '';
2451
- this.enablePointerEvents = false;
2452
- this.showBackdrop = false;
2453
- this.zIndex = `${++uniqueZIndex}`;
2454
- this.clipPath$ = new ReplaySubject(1);
2455
- this.position = POSITION_DEFAULT;
2456
- _SkyOverlayComponent_backdropClick.set(this, void 0);
2457
- _SkyOverlayComponent_backdropClickObs.set(this, void 0);
2458
- _SkyOverlayComponent_changeDetector.set(this, void 0);
2459
- _SkyOverlayComponent_closed.set(this, void 0);
2460
- _SkyOverlayComponent_closedObs.set(this, void 0);
2461
- _SkyOverlayComponent_context.set(this, void 0);
2462
- _SkyOverlayComponent_coreAdapter.set(this, void 0);
2463
- _SkyOverlayComponent_injector.set(this, void 0);
2464
- _SkyOverlayComponent_ngUnsubscribe.set(this, new Subject());
2465
- _SkyOverlayComponent_router.set(this, void 0);
2466
- _SkyOverlayComponent_routerSubscription.set(this, void 0);
2467
- __classPrivateFieldSet(this, _SkyOverlayComponent_changeDetector, changeDetector, "f");
2468
- __classPrivateFieldSet(this, _SkyOverlayComponent_injector, injector, "f");
2469
- __classPrivateFieldSet(this, _SkyOverlayComponent_coreAdapter, coreAdapter, "f");
2470
- __classPrivateFieldSet(this, _SkyOverlayComponent_context, context, "f");
2471
- __classPrivateFieldSet(this, _SkyOverlayComponent_router, router, "f");
2472
- this.id = idSvc.generateId();
2473
- __classPrivateFieldSet(this, _SkyOverlayComponent_backdropClick, new Subject(), "f");
2474
- __classPrivateFieldSet(this, _SkyOverlayComponent_closed, new Subject(), "f");
2475
- __classPrivateFieldSet(this, _SkyOverlayComponent_backdropClickObs, __classPrivateFieldGet(this, _SkyOverlayComponent_backdropClick, "f").asObservable(), "f");
2476
- __classPrivateFieldSet(this, _SkyOverlayComponent_closedObs, __classPrivateFieldGet(this, _SkyOverlayComponent_closed, "f").asObservable(), "f");
2477
- }
2478
- ngOnInit() {
2479
- __classPrivateFieldGet(this, _SkyOverlayComponent_instances, "m", _SkyOverlayComponent_applyConfig).call(this, __classPrivateFieldGet(this, _SkyOverlayComponent_context, "f").config);
2480
- setTimeout(() => {
2481
- __classPrivateFieldGet(this, _SkyOverlayComponent_instances, "m", _SkyOverlayComponent_addBackdropClickListener).call(this);
2482
- });
2483
- if (__classPrivateFieldGet(this, _SkyOverlayComponent_context, "f").config.closeOnNavigation) {
2484
- __classPrivateFieldGet(this, _SkyOverlayComponent_instances, "m", _SkyOverlayComponent_addRouteListener).call(this);
2485
- }
2486
- }
2487
- ngOnDestroy() {
2488
- __classPrivateFieldGet(this, _SkyOverlayComponent_instances, "m", _SkyOverlayComponent_removeRouteListener).call(this);
2489
- __classPrivateFieldGet(this, _SkyOverlayComponent_ngUnsubscribe, "f").next();
2490
- __classPrivateFieldGet(this, _SkyOverlayComponent_ngUnsubscribe, "f").complete();
2491
- __classPrivateFieldGet(this, _SkyOverlayComponent_backdropClick, "f").complete();
2492
- __classPrivateFieldGet(this, _SkyOverlayComponent_closed, "f").next();
2493
- __classPrivateFieldGet(this, _SkyOverlayComponent_closed, "f").complete();
2494
- }
2495
- attachComponent(component, providers = []) {
2496
- /*istanbul ignore if: untestable*/
2497
- if (!this.targetRef) {
2498
- throw new Error('[SkyOverlayComponent] Could not attach the component because the target element could not be found.');
2499
- }
2500
- this.targetRef.clear();
2501
- const injector = Injector.create({
2502
- providers: [
2503
- {
2504
- provide: SKY_STACKING_CONTEXT,
2505
- useValue: {
2506
- zIndex: new BehaviorSubject(parseInt(this.zIndex, 10))
2507
- .asObservable()
2508
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyOverlayComponent_ngUnsubscribe, "f"))),
2509
- },
2510
- },
2511
- ...providers,
2512
- ],
2513
- parent: __classPrivateFieldGet(this, _SkyOverlayComponent_injector, "f"),
2514
- });
2515
- const componentRef = this.targetRef.createComponent(component, {
2516
- injector,
2517
- });
2518
- // Run an initial change detection cycle after the component has been created.
2519
- componentRef.changeDetectorRef.detectChanges();
2520
- return componentRef;
2521
- }
2522
- attachTemplate(templateRef, context) {
2523
- /*istanbul ignore if: untestable*/
2524
- if (!this.targetRef) {
2525
- throw new Error('[SkyOverlayComponent] Could not attach the template because the target element could not be found.');
2526
- }
2527
- this.targetRef.clear();
2528
- return this.targetRef.createEmbeddedView(templateRef, context);
2529
- }
2530
- updateClipPath(clipPath) {
2531
- this.clipPath$.next(clipPath);
2532
- }
2533
- }
2534
- _SkyOverlayComponent_backdropClick = new WeakMap(), _SkyOverlayComponent_backdropClickObs = new WeakMap(), _SkyOverlayComponent_changeDetector = new WeakMap(), _SkyOverlayComponent_closed = new WeakMap(), _SkyOverlayComponent_closedObs = new WeakMap(), _SkyOverlayComponent_context = new WeakMap(), _SkyOverlayComponent_coreAdapter = new WeakMap(), _SkyOverlayComponent_injector = new WeakMap(), _SkyOverlayComponent_ngUnsubscribe = new WeakMap(), _SkyOverlayComponent_router = new WeakMap(), _SkyOverlayComponent_routerSubscription = new WeakMap(), _SkyOverlayComponent_instances = new WeakSet(), _SkyOverlayComponent_applyConfig = function _SkyOverlayComponent_applyConfig(config) {
2535
- this.wrapperClass = config.wrapperClass || '';
2536
- this.showBackdrop = !!config.showBackdrop;
2537
- this.enablePointerEvents = !!config.enablePointerEvents;
2538
- this.position = config.position || POSITION_DEFAULT;
2539
- __classPrivateFieldGet(this, _SkyOverlayComponent_changeDetector, "f").markForCheck();
2540
- }, _SkyOverlayComponent_addBackdropClickListener = function _SkyOverlayComponent_addBackdropClickListener() {
2541
- fromEvent(window.document, 'click')
2542
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyOverlayComponent_ngUnsubscribe, "f")))
2543
- .subscribe((event) => {
2544
- if (event.target && this.overlayContentRef && this.overlayRef) {
2545
- const isChild = this.overlayContentRef.nativeElement.contains(event.target);
2546
- const isAbove = __classPrivateFieldGet(this, _SkyOverlayComponent_coreAdapter, "f").isTargetAboveElement(event.target, this.overlayRef.nativeElement);
2547
- /* istanbul ignore else */
2548
- if (!isChild && !isAbove) {
2549
- __classPrivateFieldGet(this, _SkyOverlayComponent_backdropClick, "f").next();
2550
- if (__classPrivateFieldGet(this, _SkyOverlayComponent_context, "f").config.enableClose) {
2551
- __classPrivateFieldGet(this, _SkyOverlayComponent_closed, "f").next();
2552
- }
2553
- }
2554
- }
2555
- });
2556
- }, _SkyOverlayComponent_addRouteListener = function _SkyOverlayComponent_addRouteListener() {
2557
- /*istanbul ignore else*/
2558
- if (__classPrivateFieldGet(this, _SkyOverlayComponent_router, "f")) {
2559
- __classPrivateFieldSet(this, _SkyOverlayComponent_routerSubscription, __classPrivateFieldGet(this, _SkyOverlayComponent_router, "f").events.subscribe((event) => {
2560
- /* istanbul ignore else */
2561
- if (event instanceof NavigationStart) {
2562
- __classPrivateFieldGet(this, _SkyOverlayComponent_closed, "f").next();
2563
- }
2564
- }), "f");
2565
- }
2566
- }, _SkyOverlayComponent_removeRouteListener = function _SkyOverlayComponent_removeRouteListener() {
2567
- if (__classPrivateFieldGet(this, _SkyOverlayComponent_routerSubscription, "f")) {
2568
- __classPrivateFieldGet(this, _SkyOverlayComponent_routerSubscription, "f").unsubscribe();
2569
- __classPrivateFieldSet(this, _SkyOverlayComponent_routerSubscription, undefined, "f");
2570
- }
2571
- };
2572
- SkyOverlayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: SkyCoreAdapterService }, { token: SkyOverlayContext }, { token: SkyIdService }, { token: i4.Router, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2573
- SkyOverlayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyOverlayComponent, selector: "sky-overlay", host: { properties: { "id": "this.id" } }, viewQueries: [{ propertyName: "overlayContentRef", first: true, predicate: ["overlayContentRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "overlayRef", first: true, predicate: ["overlayRef"], descendants: true, read: ElementRef, static: true }, { propertyName: "targetRef", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<div\n [class]=\"'sky-overlay-position-' + position + ' ' + wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-position-absolute{position:absolute}.sky-overlay-position-fixed{position:fixed}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2574
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayComponent, decorators: [{
2575
- type: Component,
2576
- args: [{ selector: 'sky-overlay', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [class]=\"'sky-overlay-position-' + position + ' ' + wrapperClass\"\n [style.z-index]=\"zIndex\"\n [style.clip-path]=\"clipPath$ | async\"\n [ngClass]=\"{\n 'enable-pointer-events-pass-through': enablePointerEvents,\n 'sky-overlay': true\n }\"\n #overlayRef\n>\n <div class=\"sky-overlay-content\" #overlayContentRef>\n <ng-template #target> </ng-template>\n </div>\n <div *ngIf=\"showBackdrop\" class=\"sky-overlay-backdrop\"></div>\n</div>\n", styles: [".sky-overlay{inset:0;width:100%;height:100%;display:flex;pointer-events:auto}.sky-overlay-position-absolute{position:absolute}.sky-overlay-position-fixed{position:fixed}.sky-overlay-content{position:relative;z-index:1;display:inline-flex;align-self:start;pointer-events:auto}.sky-overlay-backdrop{background:rgba(0,0,0,.5);inset:0;width:100%;height:100%;position:absolute}.enable-pointer-events-pass-through,.enable-pointer-events-pass-through .sky-overlay-backdrop{pointer-events:none}.enable-pointer-events-pass-through .sky-overlay-content{pointer-events:auto}\n"] }]
2577
- }], ctorParameters: function () {
2578
- return [{ type: i0.ChangeDetectorRef }, { type: i0.Injector }, { type: SkyCoreAdapterService }, { type: SkyOverlayContext }, { type: SkyIdService }, { type: i4.Router, decorators: [{
2579
- type: Optional
2580
- }] }];
2581
- }, propDecorators: { id: [{
2582
- type: HostBinding,
2583
- args: ['id']
2584
- }], overlayContentRef: [{
2585
- type: ViewChild,
2586
- args: ['overlayContentRef', {
2587
- read: ElementRef,
2588
- static: true,
2589
- }]
2590
- }], overlayRef: [{
2591
- type: ViewChild,
2592
- args: ['overlayRef', {
2593
- read: ElementRef,
2594
- static: true,
2595
- }]
2596
- }], targetRef: [{
2597
- type: ViewChild,
2598
- args: ['target', {
2599
- read: ViewContainerRef,
2600
- static: true,
2601
- }]
2602
- }] } });
2603
-
2604
- class SkyOverlayModule {
2605
- }
2606
- SkyOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2607
- SkyOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayModule, declarations: [SkyOverlayComponent], imports: [CommonModule] });
2608
- SkyOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayModule, imports: [CommonModule] });
2609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayModule, decorators: [{
2610
- type: NgModule,
2611
- args: [{
2612
- imports: [CommonModule],
2613
- declarations: [SkyOverlayComponent],
2614
- }]
2615
- }] });
2616
-
2617
- var _SkyOverlayAdapterService_instances, _SkyOverlayAdapterService_renderer, _SkyOverlayAdapterService_styleElement, _SkyOverlayAdapterService_destroyStyleElement;
2618
- /**
2619
- * @internal
2620
- */
2621
- class SkyOverlayAdapterService {
2622
- constructor(rendererFactory) {
2623
- _SkyOverlayAdapterService_instances.add(this);
2624
- _SkyOverlayAdapterService_renderer.set(this, void 0);
2625
- _SkyOverlayAdapterService_styleElement.set(this, void 0);
2626
- __classPrivateFieldSet(this, _SkyOverlayAdapterService_renderer, rendererFactory.createRenderer(undefined, null), "f");
2627
- }
2628
- restrictBodyScroll() {
2629
- // Create a style element to avoid overwriting any existing inline body styles.
2630
- const styleElement = __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").createElement('style');
2631
- const textNode = __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").createText('body { overflow: hidden }');
2632
- // Apply a `data-` attribute to make unit testing easier.
2633
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").setAttribute(styleElement, 'data-test-selector', 'sky-overlay-restrict-scroll-styles');
2634
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").appendChild(styleElement, textNode);
2635
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").appendChild(document.head, styleElement);
2636
- if (__classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f")) {
2637
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_instances, "m", _SkyOverlayAdapterService_destroyStyleElement).call(this);
2638
- }
2639
- __classPrivateFieldSet(this, _SkyOverlayAdapterService_styleElement, styleElement, "f");
2640
- }
2641
- releaseBodyScroll() {
2642
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_instances, "m", _SkyOverlayAdapterService_destroyStyleElement).call(this);
2643
- }
2644
- }
2645
- _SkyOverlayAdapterService_renderer = new WeakMap(), _SkyOverlayAdapterService_styleElement = new WeakMap(), _SkyOverlayAdapterService_instances = new WeakSet(), _SkyOverlayAdapterService_destroyStyleElement = function _SkyOverlayAdapterService_destroyStyleElement() {
2646
- /* istanbul ignore else */
2647
- if (__classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f") &&
2648
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f").parentElement === document.head) {
2649
- __classPrivateFieldGet(this, _SkyOverlayAdapterService_renderer, "f").removeChild(document.head, __classPrivateFieldGet(this, _SkyOverlayAdapterService_styleElement, "f"));
2650
- }
2651
- };
2652
- SkyOverlayAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
2653
- SkyOverlayAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayAdapterService, providedIn: 'root' });
2654
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayAdapterService, decorators: [{
2655
- type: Injectable,
2656
- args: [{
2657
- providedIn: 'root',
2658
- }]
2659
- }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
2660
-
2661
- var _SkyOverlayService_instances, _SkyOverlayService_adapter, _SkyOverlayService_applicationRef, _SkyOverlayService_componentFactoryResolver, _SkyOverlayService_injector, _SkyOverlayService_createOverlay, _SkyOverlayService_prepareConfig, _SkyOverlayService_destroyOverlay;
2662
- /**
2663
- * This service is used to create new overlays.
2664
- * @dynamic
2665
- */
2666
- class SkyOverlayService {
2667
- // TODO: Replace deprecated `ComponentFactoryResolver`.
2668
- constructor(applicationRef, componentFactoryResolver, injector, adapter) {
2669
- _SkyOverlayService_instances.add(this);
2670
- _SkyOverlayService_adapter.set(this, void 0);
2671
- _SkyOverlayService_applicationRef.set(this, void 0);
2672
- _SkyOverlayService_componentFactoryResolver.set(this, void 0);
2673
- _SkyOverlayService_injector.set(this, void 0);
2674
- __classPrivateFieldSet(this, _SkyOverlayService_applicationRef, applicationRef, "f");
2675
- __classPrivateFieldSet(this, _SkyOverlayService_componentFactoryResolver, componentFactoryResolver, "f");
2676
- __classPrivateFieldSet(this, _SkyOverlayService_injector, injector, "f");
2677
- __classPrivateFieldSet(this, _SkyOverlayService_adapter, adapter, "f");
2678
- }
2679
- /**
2680
- * Creates an empty overlay. Use the returned `SkyOverlayInstance` to append content.
2681
- * @param config Configuration for the overlay.
2682
- */
2683
- create(config) {
2684
- const settings = __classPrivateFieldGet(this, _SkyOverlayService_instances, "m", _SkyOverlayService_prepareConfig).call(this, config);
2685
- if (settings.enableScroll === false) {
2686
- __classPrivateFieldGet(this, _SkyOverlayService_adapter, "f").restrictBodyScroll();
2687
- }
2688
- const componentRef = __classPrivateFieldGet(this, _SkyOverlayService_instances, "m", _SkyOverlayService_createOverlay).call(this, settings);
2689
- const instance = new SkyOverlayInstance(settings, componentRef);
2690
- instance.closed.subscribe(() => {
2691
- // Only execute the service's close method if the instance still exists.
2692
- // This is needed to address a race condition if the deprecated instance.close method is used instead.
2693
- if (SkyOverlayService.overlays.indexOf(instance) > -1) {
2694
- this.close(instance);
2695
- }
2696
- });
2697
- SkyOverlayService.overlays.push(instance);
2698
- return instance;
2699
- }
2700
- /**
2701
- * Closes (and destroys) an overlay instance.
2702
- * @param instance The instance to close.
2703
- */
2704
- close(instance) {
2705
- __classPrivateFieldGet(this, _SkyOverlayService_instances, "m", _SkyOverlayService_destroyOverlay).call(this, instance);
2706
- __classPrivateFieldGet(this, _SkyOverlayService_applicationRef, "f").detachView(instance.componentRef.hostView);
2707
- instance.componentRef.destroy();
2708
- // In some cases, Angular keeps dynamically-generated component's nodes in the DOM during
2709
- // unit tests. This can make querying difficult because the older DOM nodes still exist and
2710
- // produce inconsistent results.
2711
- // Angular Material's overlay appears to do the same thing:
2712
- // https://github.com/angular/components/blob/master/src/cdk/portal/dom-portal-outlet.ts#L143-L145
2713
- // (Ignoring coverage since this branch will only be hit by consumer unit tests.)
2714
- const componentElement = instance.componentRef.location.nativeElement;
2715
- /* istanbul ignore if */
2716
- if (componentElement.parentNode !== null) {
2717
- componentElement.parentNode.removeChild(componentElement);
2718
- }
2719
- }
2720
- /**
2721
- * Closes all overlay instances.
2722
- */
2723
- closeAll() {
2724
- // The `close` event handler for each instance alters the array's length asynchronously,
2725
- // so the only "safe" index to call is zero.
2726
- while (SkyOverlayService.overlays.length > 0) {
2727
- this.close(SkyOverlayService.overlays[0]);
2728
- }
2729
- }
2730
- }
2731
- _SkyOverlayService_adapter = new WeakMap(), _SkyOverlayService_applicationRef = new WeakMap(), _SkyOverlayService_componentFactoryResolver = new WeakMap(), _SkyOverlayService_injector = new WeakMap(), _SkyOverlayService_instances = new WeakSet(), _SkyOverlayService_createOverlay = function _SkyOverlayService_createOverlay(config) {
2732
- const injector = Injector.create({
2733
- parent: __classPrivateFieldGet(this, _SkyOverlayService_injector, "f"),
2734
- providers: [
2735
- {
2736
- provide: SkyOverlayContext,
2737
- useValue: new SkyOverlayContext(config),
2738
- },
2739
- ],
2740
- });
2741
- const componentRef = __classPrivateFieldGet(this, _SkyOverlayService_componentFactoryResolver, "f")
2742
- .resolveComponentFactory(SkyOverlayComponent)
2743
- .create(injector);
2744
- __classPrivateFieldGet(this, _SkyOverlayService_applicationRef, "f").attachView(componentRef.hostView);
2745
- const domElem = componentRef.hostView
2746
- .rootNodes[0];
2747
- document.body.appendChild(domElem);
2748
- return componentRef;
2749
- }, _SkyOverlayService_prepareConfig = function _SkyOverlayService_prepareConfig(config = {}) {
2750
- const defaults = {
2751
- closeOnNavigation: true,
2752
- enableClose: false,
2753
- enablePointerEvents: false,
2754
- enableScroll: true,
2755
- showBackdrop: false,
2756
- wrapperClass: '',
2757
- };
2758
- return Object.assign(Object.assign({}, defaults), config);
2759
- }, _SkyOverlayService_destroyOverlay = function _SkyOverlayService_destroyOverlay(instance) {
2760
- SkyOverlayService.overlays.splice(SkyOverlayService.overlays.indexOf(instance), 1);
2761
- if (instance.config.enableScroll === false) {
2762
- // Only release the body scroll if no other overlay wishes it to be disabled.
2763
- const anotherOverlayDisablesScroll = SkyOverlayService.overlays.some((o) => !o.config.enableScroll);
2764
- if (!anotherOverlayDisablesScroll) {
2765
- __classPrivateFieldGet(this, _SkyOverlayService_adapter, "f").releaseBodyScroll();
2766
- }
2767
- }
2768
- };
2769
- SkyOverlayService.overlays = [];
2770
- SkyOverlayService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayService, deps: [{ token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: SkyOverlayAdapterService }], target: i0.ɵɵFactoryTarget.Injectable });
2771
- SkyOverlayService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayService, providedIn: 'root' });
2772
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyOverlayService, decorators: [{
2773
- type: Injectable,
2774
- args: [{
2775
- providedIn: 'root',
2776
- }]
2777
- }], ctorParameters: function () { return [{ type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: SkyOverlayAdapterService }]; } });
2778
-
2779
- var _SkyPercentPipe_instances, _SkyPercentPipe_defaultFormat, _SkyPercentPipe_defaultLocale, _SkyPercentPipe_format, _SkyPercentPipe_formattedValue, _SkyPercentPipe_locale, _SkyPercentPipe_ngUnsubscribe, _SkyPercentPipe_value, _SkyPercentPipe_updateFormattedValue;
2780
- class SkyPercentPipe {
2781
- get defaultLocale() {
2782
- return __classPrivateFieldGet(this, _SkyPercentPipe_defaultLocale, "f");
2783
- }
2784
- constructor(localeProvider) {
2785
- _SkyPercentPipe_instances.add(this);
2786
- _SkyPercentPipe_defaultFormat.set(this, '1.0-2');
2787
- _SkyPercentPipe_defaultLocale.set(this, 'en-US');
2788
- _SkyPercentPipe_format.set(this, void 0);
2789
- _SkyPercentPipe_formattedValue.set(this, '');
2790
- _SkyPercentPipe_locale.set(this, void 0);
2791
- _SkyPercentPipe_ngUnsubscribe.set(this, new Subject());
2792
- _SkyPercentPipe_value.set(this, void 0);
2793
- localeProvider
2794
- .getLocaleInfo()
2795
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyPercentPipe_ngUnsubscribe, "f")))
2796
- .subscribe((localeInfo) => {
2797
- __classPrivateFieldSet(this, _SkyPercentPipe_defaultLocale, localeInfo.locale, "f");
2798
- __classPrivateFieldGet(this, _SkyPercentPipe_instances, "m", _SkyPercentPipe_updateFormattedValue).call(this);
2799
- });
2800
- }
2801
- ngOnDestroy() {
2802
- __classPrivateFieldGet(this, _SkyPercentPipe_ngUnsubscribe, "f").next();
2803
- __classPrivateFieldGet(this, _SkyPercentPipe_ngUnsubscribe, "f").complete();
2804
- }
2805
- transform(value, format, locale) {
2806
- __classPrivateFieldSet(this, _SkyPercentPipe_value, value, "f");
2807
- __classPrivateFieldSet(this, _SkyPercentPipe_format, format, "f");
2808
- __classPrivateFieldSet(this, _SkyPercentPipe_locale, locale, "f");
2809
- __classPrivateFieldGet(this, _SkyPercentPipe_instances, "m", _SkyPercentPipe_updateFormattedValue).call(this);
2810
- return __classPrivateFieldGet(this, _SkyPercentPipe_formattedValue, "f");
2811
- }
2812
- }
2813
- _SkyPercentPipe_defaultFormat = new WeakMap(), _SkyPercentPipe_defaultLocale = new WeakMap(), _SkyPercentPipe_format = new WeakMap(), _SkyPercentPipe_formattedValue = new WeakMap(), _SkyPercentPipe_locale = new WeakMap(), _SkyPercentPipe_ngUnsubscribe = new WeakMap(), _SkyPercentPipe_value = new WeakMap(), _SkyPercentPipe_instances = new WeakSet(), _SkyPercentPipe_updateFormattedValue = function _SkyPercentPipe_updateFormattedValue() {
2814
- const locale = __classPrivateFieldGet(this, _SkyPercentPipe_locale, "f") || __classPrivateFieldGet(this, _SkyPercentPipe_defaultLocale, "f");
2815
- const format = __classPrivateFieldGet(this, _SkyPercentPipe_format, "f") || __classPrivateFieldGet(this, _SkyPercentPipe_defaultFormat, "f");
2816
- __classPrivateFieldSet(this, _SkyPercentPipe_formattedValue, __classPrivateFieldGet(this, _SkyPercentPipe_value, "f")
2817
- ? SkyNumberFormatUtility.formatNumber(locale, __classPrivateFieldGet(this, _SkyPercentPipe_value, "f"), SkyIntlNumberFormatStyle.Percent, format)
2818
- : '', "f");
2819
- };
2820
- SkyPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipe, deps: [{ token: i1.SkyAppLocaleProvider }], target: i0.ɵɵFactoryTarget.Pipe });
2821
- SkyPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipe, name: "skyPercent", pure: false });
2822
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipe, decorators: [{
2823
- type: Pipe,
2824
- args: [{
2825
- name: 'skyPercent',
2826
- pure: false,
2827
- }]
2828
- }], ctorParameters: function () { return [{ type: i1.SkyAppLocaleProvider }]; } });
2829
-
2830
- class SkyPercentPipeModule {
2831
- }
2832
- SkyPercentPipeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2833
- SkyPercentPipeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipeModule, declarations: [SkyPercentPipe], imports: [CommonModule, SkyCoreResourcesModule], exports: [SkyPercentPipe] });
2834
- SkyPercentPipeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipeModule, providers: [SkyPercentPipe], imports: [CommonModule, SkyCoreResourcesModule] });
2835
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyPercentPipeModule, decorators: [{
2836
- type: NgModule,
2837
- args: [{
2838
- declarations: [SkyPercentPipe],
2839
- providers: [SkyPercentPipe],
2840
- imports: [CommonModule, SkyCoreResourcesModule],
2841
- exports: [SkyPercentPipe],
2842
- }]
2843
- }] });
2844
-
2845
- var _SkyResizeObserverService_instances, _SkyResizeObserverService_resizeObserver, _SkyResizeObserverService_tracking, _SkyResizeObserverService_zone, _SkyResizeObserverService_observeAndTrack, _SkyResizeObserverService_callback;
2846
- /**
2847
- * Service to create rxjs observables for changes to the content box dimensions of elements.
2848
- */
2849
- class SkyResizeObserverService {
2850
- constructor(zone) {
2851
- _SkyResizeObserverService_instances.add(this);
2852
- _SkyResizeObserverService_resizeObserver.set(this, void 0);
2853
- _SkyResizeObserverService_tracking.set(this, []);
2854
- _SkyResizeObserverService_zone.set(this, void 0);
2855
- __classPrivateFieldSet(this, _SkyResizeObserverService_zone, zone, "f");
2856
- __classPrivateFieldSet(this, _SkyResizeObserverService_resizeObserver, new ResizeObserver((entries) => {
2857
- entries.forEach((entry) => __classPrivateFieldGet(this, _SkyResizeObserverService_instances, "m", _SkyResizeObserverService_callback).call(this, entry));
2858
- }), "f");
2859
- }
2860
- ngOnDestroy() {
2861
- __classPrivateFieldGet(this, _SkyResizeObserverService_resizeObserver, "f").disconnect();
2862
- }
2863
- /**
2864
- * Create rxjs observable to get size changes for an element ref.
2865
- */
2866
- observe(element) {
2867
- return __classPrivateFieldGet(this, _SkyResizeObserverService_instances, "m", _SkyResizeObserverService_observeAndTrack).call(this, element).subjectObservable;
2868
- }
2869
- }
2870
- _SkyResizeObserverService_resizeObserver = new WeakMap(), _SkyResizeObserverService_tracking = new WeakMap(), _SkyResizeObserverService_zone = new WeakMap(), _SkyResizeObserverService_instances = new WeakSet(), _SkyResizeObserverService_observeAndTrack = function _SkyResizeObserverService_observeAndTrack(element) {
2871
- const checkTracking = __classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f").findIndex((value) => {
2872
- return !value.subject.closed && value.element === element.nativeElement;
2873
- });
2874
- if (checkTracking === -1) {
2875
- __classPrivateFieldGet(this, _SkyResizeObserverService_resizeObserver, "f").observe(element.nativeElement);
2876
- }
2877
- const subject = new Subject();
2878
- const subjectObservable = subject.pipe(finalize(() => {
2879
- // Are there any other tracking entries still watching this element?
2880
- const checkTracking = __classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f").findIndex((value) => {
2881
- return (value.subject !== subject &&
2882
- !value.subject.closed &&
2883
- value.element === element.nativeElement);
2884
- });
2885
- if (checkTracking === -1) {
2886
- __classPrivateFieldGet(this, _SkyResizeObserverService_resizeObserver, "f").unobserve(element.nativeElement);
2887
- }
2888
- }));
2889
- const tracking = {
2890
- element: element.nativeElement,
2891
- subject,
2892
- subjectObservable,
2893
- };
2894
- __classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f").push(tracking);
2895
- return tracking;
2896
- }, _SkyResizeObserverService_callback = function _SkyResizeObserverService_callback(entry) {
2897
- __classPrivateFieldGet(this, _SkyResizeObserverService_tracking, "f")
2898
- .filter((value) => !(value.subject.closed || value.subject.isStopped))
2899
- .forEach((value) => {
2900
- /* istanbul ignore else */
2901
- if (value.element === entry.target) {
2902
- // Execute the callback within NgZone because Angular does not "monkey patch"
2903
- // ResizeObserver like it does for other features in the DOM.
2904
- __classPrivateFieldGet(this, _SkyResizeObserverService_zone, "f").run(() => {
2905
- value.subject.next(entry);
2906
- });
2907
- }
2908
- });
2909
- };
2910
- SkyResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
2911
- SkyResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverService, providedIn: 'any' });
2912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverService, decorators: [{
2913
- type: Injectable,
2914
- args: [{
2915
- providedIn: 'any',
2916
- }]
2917
- }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
2918
-
2919
- var _SkyResizeObserverMediaQueryService_instances, _SkyResizeObserverMediaQueryService_breakpoints, _SkyResizeObserverMediaQueryService_currentBreakpoint, _SkyResizeObserverMediaQueryService_currentBreakpointObs, _SkyResizeObserverMediaQueryService_ngUnsubscribe, _SkyResizeObserverMediaQueryService_resizeObserverSvc, _SkyResizeObserverMediaQueryService_target, _SkyResizeObserverMediaQueryService_updateBreakpoint, _SkyResizeObserverMediaQueryService_checkBreakpoint, _SkyResizeObserverMediaQueryService_checkWidth;
2920
- const DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;
2921
- /**
2922
- * Acts like `SkyMediaQueryService` for a container element, emitting the same responsive breakpoints.
2923
- */
2924
- class SkyResizeObserverMediaQueryService {
2925
- /**
2926
- * Returns the current breakpoint.
2927
- */
2928
- get current() {
2929
- return __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpoint, "f");
2930
- }
2931
- constructor(resizeObserverSvc) {
2932
- _SkyResizeObserverMediaQueryService_instances.add(this);
2933
- _SkyResizeObserverMediaQueryService_breakpoints.set(this, [
2934
- {
2935
- check: (width) => width > 0 && width <= 767,
2936
- name: SkyMediaBreakpoints.xs,
2937
- },
2938
- {
2939
- check: (width) => width > 767 && width <= 991,
2940
- name: SkyMediaBreakpoints.sm,
2941
- },
2942
- {
2943
- check: (width) => width > 991 && width <= 1199,
2944
- name: SkyMediaBreakpoints.md,
2945
- },
2946
- {
2947
- check: (width) => width > 1199,
2948
- name: SkyMediaBreakpoints.lg,
2949
- },
2950
- ]);
2951
- _SkyResizeObserverMediaQueryService_currentBreakpoint.set(this, DEFAULT_BREAKPOINT);
2952
- _SkyResizeObserverMediaQueryService_currentBreakpointObs.set(this, new ReplaySubject(1));
2953
- _SkyResizeObserverMediaQueryService_ngUnsubscribe.set(this, new Subject());
2954
- _SkyResizeObserverMediaQueryService_resizeObserverSvc.set(this, void 0);
2955
- _SkyResizeObserverMediaQueryService_target.set(this, void 0);
2956
- __classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_resizeObserverSvc, resizeObserverSvc, "f");
2957
- }
2958
- ngOnDestroy() {
2959
- this.unobserve();
2960
- __classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_target, undefined, "f");
2961
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpointObs, "f").complete();
2962
- }
2963
- /**
2964
- * @internal
2965
- */
2966
- destroy() {
2967
- this.ngOnDestroy();
2968
- }
2969
- /**
2970
- * Sets the container element to watch. The `SkyResizeObserverMediaQueryService` will only observe one element at a
2971
- * time. Any previous subscriptions will be unsubscribed when a new element is observed.
2972
- */
2973
- observe(element) {
2974
- if (__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_target, "f")) {
2975
- if (__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_target, "f") === element) {
2976
- return this;
2977
- }
2978
- this.unobserve();
2979
- }
2980
- __classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_target, element, "f");
2981
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_checkWidth).call(this, element);
2982
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_resizeObserverSvc, "f")
2983
- .observe(element)
2984
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f")))
2985
- .subscribe((value) => {
2986
- const breakpoint = __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_checkBreakpoint).call(this, value.contentRect.width);
2987
- if (breakpoint && breakpoint !== this.current) {
2988
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_updateBreakpoint).call(this, breakpoint);
2989
- }
2990
- });
2991
- return this;
2992
- }
2993
- /**
2994
- * Stop watching the container element.
2995
- */
2996
- unobserve() {
2997
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f").next();
2998
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f").complete();
2999
- }
3000
- /**
3001
- * Subscribes to element size changes that cross breakpoints.
3002
- */
3003
- subscribe(listener) {
3004
- return __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpointObs, "f")
3005
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_ngUnsubscribe, "f")))
3006
- .subscribe((value) => {
3007
- listener(value);
3008
- });
3009
- }
3010
- }
3011
- _SkyResizeObserverMediaQueryService_breakpoints = new WeakMap(), _SkyResizeObserverMediaQueryService_currentBreakpoint = new WeakMap(), _SkyResizeObserverMediaQueryService_currentBreakpointObs = new WeakMap(), _SkyResizeObserverMediaQueryService_ngUnsubscribe = new WeakMap(), _SkyResizeObserverMediaQueryService_resizeObserverSvc = new WeakMap(), _SkyResizeObserverMediaQueryService_target = new WeakMap(), _SkyResizeObserverMediaQueryService_instances = new WeakSet(), _SkyResizeObserverMediaQueryService_updateBreakpoint = function _SkyResizeObserverMediaQueryService_updateBreakpoint(breakpoint) {
3012
- __classPrivateFieldSet(this, _SkyResizeObserverMediaQueryService_currentBreakpoint, breakpoint, "f");
3013
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpointObs, "f").next(breakpoint);
3014
- }, _SkyResizeObserverMediaQueryService_checkBreakpoint = function _SkyResizeObserverMediaQueryService_checkBreakpoint(width) {
3015
- const breakpoint = __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_breakpoints, "f").find((breakpoint) => breakpoint.check(width));
3016
- return breakpoint ? breakpoint.name : undefined;
3017
- }, _SkyResizeObserverMediaQueryService_checkWidth = function _SkyResizeObserverMediaQueryService_checkWidth(el) {
3018
- const width = el.nativeElement.offsetWidth || 0;
3019
- const breakpoint = __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_checkBreakpoint).call(this, width);
3020
- if (breakpoint && breakpoint !== __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_currentBreakpoint, "f")) {
3021
- __classPrivateFieldGet(this, _SkyResizeObserverMediaQueryService_instances, "m", _SkyResizeObserverMediaQueryService_updateBreakpoint).call(this, breakpoint);
3022
- }
3023
- };
3024
- SkyResizeObserverMediaQueryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverMediaQueryService, deps: [{ token: SkyResizeObserverService }], target: i0.ɵɵFactoryTarget.Injectable });
3025
- SkyResizeObserverMediaQueryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverMediaQueryService, providedIn: 'any' });
3026
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyResizeObserverMediaQueryService, decorators: [{
3027
- type: Injectable,
3028
- args: [{
3029
- providedIn: 'any',
3030
- }]
3031
- }], ctorParameters: function () { return [{ type: SkyResizeObserverService }]; } });
3032
-
3033
- var _SkyScrollableHostService_instances, _SkyScrollableHostService_mutationObserverSvc, _SkyScrollableHostService_windowRef, _SkyScrollableHostService_resizeObserverSvc, _SkyScrollableHostService_findScrollableHost, _SkyScrollableHostService_observeDocumentHiddenElementChanges, _SkyScrollableHostService_observeForScrollableHostChanges, _SkyScrollableHostService_isElementVisible, _SkyScrollableHostService_getViewportSize;
3034
- function notifySubscribers(subscribers, item) {
3035
- for (const subscriber of subscribers) {
3036
- subscriber.next(item);
3037
- }
3038
- }
3039
- class SkyScrollableHostService {
3040
- constructor(mutationObserverSvc, windowRef, resizeObserverSvc) {
3041
- _SkyScrollableHostService_instances.add(this);
3042
- _SkyScrollableHostService_mutationObserverSvc.set(this, void 0);
3043
- _SkyScrollableHostService_windowRef.set(this, void 0);
3044
- _SkyScrollableHostService_resizeObserverSvc.set(this, void 0);
3045
- __classPrivateFieldSet(this, _SkyScrollableHostService_mutationObserverSvc, mutationObserverSvc, "f");
3046
- __classPrivateFieldSet(this, _SkyScrollableHostService_resizeObserverSvc, resizeObserverSvc, "f");
3047
- __classPrivateFieldSet(this, _SkyScrollableHostService_windowRef, windowRef, "f");
3048
- }
3049
- /**
3050
- * Returns the given element's current scrollable host
3051
- * @param elementRef The element whose scrollable host is being requested
3052
- * @returns The current scrollable host
3053
- */
3054
- getScrollableHost(elementRef) {
3055
- return __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_findScrollableHost).call(this, elementRef.nativeElement);
3056
- }
3057
- /**
3058
- * Returns an observable which emits the given element's current scrollable host
3059
- * @param elementRef The element whose scrollable host is being requested
3060
- * @returns An observable which emits the current scrollable host element.
3061
- * @internal
3062
- */
3063
- watchScrollableHost(elementRef) {
3064
- const subscribers = [];
3065
- let parentMutationObserver;
3066
- let documentHiddenElementMutationObserver;
3067
- return new Observable((subscriber) => {
3068
- subscribers.push(subscriber);
3069
- let scrollableHost = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_findScrollableHost).call(this, elementRef.nativeElement);
3070
- // Setup mutation observers only once, for all subscribers.
3071
- if (subscribers.length === 1) {
3072
- parentMutationObserver = __classPrivateFieldGet(this, _SkyScrollableHostService_mutationObserverSvc, "f").create(() => {
3073
- const newScrollableHost = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_findScrollableHost).call(this, elementRef.nativeElement);
3074
- // Reset observer if scrollable host changes.
3075
- if (newScrollableHost !== scrollableHost &&
3076
- __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_isElementVisible).call(this, elementRef)) {
3077
- scrollableHost = newScrollableHost;
3078
- __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeForScrollableHostChanges).call(this, scrollableHost, parentMutationObserver);
3079
- notifySubscribers(subscribers, scrollableHost);
3080
- }
3081
- });
3082
- __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeForScrollableHostChanges).call(this, scrollableHost, parentMutationObserver);
3083
- documentHiddenElementMutationObserver =
3084
- __classPrivateFieldGet(this, _SkyScrollableHostService_mutationObserverSvc, "f").create(() => {
3085
- if (scrollableHost && !__classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_isElementVisible).call(this, elementRef)) {
3086
- // If the scrollable host is not visible, set it to undefined and unsubscribe from its mutation changes.
3087
- // Then, observe the document element so that a new scrollable host can be found.
3088
- scrollableHost = undefined;
3089
- __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeForScrollableHostChanges).call(this, scrollableHost, parentMutationObserver);
3090
- notifySubscribers(subscribers, scrollableHost);
3091
- }
3092
- });
3093
- __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_observeDocumentHiddenElementChanges).call(this, documentHiddenElementMutationObserver);
3094
- }
3095
- // Emit the scrollable host to the subscriber.
3096
- subscriber.next(scrollableHost);
3097
- // Teardown callback for the subscription.
3098
- subscriber.add(() => {
3099
- const subIndex = subscribers.indexOf(subscriber);
3100
- /* istanbul ignore else */
3101
- if (subIndex >= 0) {
3102
- subscribers.splice(subIndex, 1);
3103
- }
3104
- if (subscribers.length === 0) {
3105
- documentHiddenElementMutationObserver.disconnect();
3106
- parentMutationObserver.disconnect();
3107
- }
3108
- });
3109
- });
3110
- }
3111
- /**
3112
- * 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.
3113
- * @param elementRef The element whose scrollable host scroll events are being requested
3114
- * @returns An observable which emits when the elements scrollable host is scrolled or is changed
3115
- */
3116
- watchScrollableHostScrollEvents(elementRef) {
3117
- const subscribers = [];
3118
- let scrollableHost;
3119
- let newScrollableHostObservable = new Subject();
3120
- let scrollableHostSubscription;
3121
- let scrollEventSubscription;
3122
- return new Observable((subscriber) => {
3123
- subscribers.push(subscriber);
3124
- // Setup mutation observers only once, for all subscribers.
3125
- if (subscribers.length === 1) {
3126
- scrollableHostSubscription = this.watchScrollableHost(elementRef).subscribe((newScrollableHost) => {
3127
- newScrollableHostObservable.next();
3128
- newScrollableHostObservable.complete();
3129
- if (scrollableHost && scrollableHost !== newScrollableHost) {
3130
- notifySubscribers(subscribers);
3131
- }
3132
- scrollableHost = newScrollableHost;
3133
- newScrollableHostObservable = new Subject();
3134
- // Only subscribe to scroll events if the host element is defined.
3135
- /* istanbul ignore else */
3136
- if (newScrollableHost) {
3137
- scrollEventSubscription = fromEvent(newScrollableHost, 'scroll')
3138
- .pipe(takeUntil(newScrollableHostObservable))
3139
- .subscribe(() => {
3140
- notifySubscribers(subscribers);
3141
- });
3142
- }
3143
- });
3144
- }
3145
- // Teardown callback for the subscription.
3146
- subscriber.add(() => {
3147
- const subIndex = subscribers.indexOf(subscriber);
3148
- /* istanbul ignore else */
3149
- if (subIndex >= 0) {
3150
- subscribers.splice(subIndex, 1);
3151
- }
3152
- if (subscribers.length === 0) {
3153
- scrollableHostSubscription.unsubscribe();
3154
- scrollEventSubscription.unsubscribe();
3155
- newScrollableHostObservable.complete();
3156
- }
3157
- });
3158
- });
3159
- }
3160
- watchScrollableHostClipPathChanges(elementRef) {
3161
- if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f")) {
3162
- return of('none');
3163
- }
3164
- return this.watchScrollableHost(elementRef).pipe(switchMap((scrollableHost) => {
3165
- if (!__classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f") ||
3166
- !scrollableHost ||
3167
- scrollableHost === __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow) {
3168
- return of('none');
3169
- }
3170
- return concat([
3171
- of(undefined),
3172
- __classPrivateFieldGet(this, _SkyScrollableHostService_resizeObserverSvc, "f").observe({ nativeElement: scrollableHost }),
3173
- ]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
3174
- const viewportSize = __classPrivateFieldGet(this, _SkyScrollableHostService_instances, "m", _SkyScrollableHostService_getViewportSize).call(this);
3175
- const { top, left, width, height } = scrollableHost.getBoundingClientRect();
3176
- const right = Math.max(viewportSize.width - left - width, 0);
3177
- const bottom = Math.max(viewportSize.height - top - height, 0);
3178
- return `inset(${top}px ${right}px ${bottom}px ${left}px)`;
3179
- }));
3180
- }));
3181
- }
3182
- }
3183
- _SkyScrollableHostService_mutationObserverSvc = new WeakMap(), _SkyScrollableHostService_windowRef = new WeakMap(), _SkyScrollableHostService_resizeObserverSvc = new WeakMap(), _SkyScrollableHostService_instances = new WeakSet(), _SkyScrollableHostService_findScrollableHost = function _SkyScrollableHostService_findScrollableHost(element) {
3184
- const regex = /(auto|scroll)/;
3185
- const windowObj = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
3186
- const bodyObj = windowObj.document.body;
3187
- if (!element) {
3188
- return windowObj;
3189
- }
3190
- let style = windowObj.getComputedStyle(element);
3191
- let parent = element;
3192
- do {
3193
- parent = parent.parentNode;
3194
- // Return `window` if the parent element has been removed from the DOM.
3195
- if (!(parent instanceof HTMLElement)) {
3196
- return windowObj;
3197
- }
3198
- style = windowObj.getComputedStyle(parent);
3199
- } while (!regex.test(style.overflow) &&
3200
- !regex.test(style.overflowY) &&
3201
- parent !== bodyObj);
3202
- if (parent === bodyObj) {
3203
- return windowObj;
3204
- }
3205
- return parent;
3206
- }, _SkyScrollableHostService_observeDocumentHiddenElementChanges = function _SkyScrollableHostService_observeDocumentHiddenElementChanges(mutationObserver) {
3207
- mutationObserver.observe(document.documentElement, {
3208
- attributes: true,
3209
- attributeFilter: ['class', 'style', 'hidden'],
3210
- childList: true,
3211
- subtree: true,
3212
- });
3213
- }, _SkyScrollableHostService_observeForScrollableHostChanges = function _SkyScrollableHostService_observeForScrollableHostChanges(element, mutationObserver) {
3214
- mutationObserver.disconnect();
3215
- const target = element instanceof HTMLElement ? element : document.documentElement;
3216
- mutationObserver.observe(target, {
3217
- attributes: true,
3218
- attributeFilter: ['class', 'style'],
3219
- childList: true,
3220
- subtree: true,
3221
- });
3222
- }, _SkyScrollableHostService_isElementVisible = function _SkyScrollableHostService_isElementVisible(elementRef) {
3223
- var _a;
3224
- return !!((_a = elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.offsetParent);
3225
- }, _SkyScrollableHostService_getViewportSize = function _SkyScrollableHostService_getViewportSize() {
3226
- const win = __classPrivateFieldGet(this, _SkyScrollableHostService_windowRef, "f").nativeWindow;
3227
- const docElem = win.document.documentElement;
3228
- return {
3229
- width: docElem.clientWidth,
3230
- height: docElem.clientHeight,
3231
- };
3232
- };
3233
- SkyScrollableHostService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyScrollableHostService, deps: [{ token: SkyMutationObserverService }, { token: SkyAppWindowRef }, { token: SkyResizeObserverService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
3234
- SkyScrollableHostService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyScrollableHostService, providedIn: 'root' });
3235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyScrollableHostService, decorators: [{
3236
- type: Injectable,
3237
- args: [{
3238
- providedIn: 'root',
3239
- }]
3240
- }], ctorParameters: function () {
3241
- return [{ type: SkyMutationObserverService }, { type: SkyAppWindowRef }, { type: SkyResizeObserverService, decorators: [{
3242
- type: Optional
3243
- }] }];
3244
- } });
3245
-
3246
- var _SkyAppTitleService_title;
3247
- /**
3248
- * Provides a method for setting a formatted title on the current window.
3249
- */
3250
- class SkyAppTitleService {
3251
- constructor(title) {
3252
- _SkyAppTitleService_title.set(this, void 0);
3253
- __classPrivateFieldSet(this, _SkyAppTitleService_title, title, "f");
3254
- }
3255
- /**
3256
- * Sets the title on the current window.
3257
- * @param args An array of title parts. The parts will be concatenated with a hyphen between
3258
- * each part.
3259
- */
3260
- setTitle(args) {
3261
- if (args === null || args === void 0 ? void 0 : args.titleParts) {
3262
- __classPrivateFieldGet(this, _SkyAppTitleService_title, "f").setTitle(args.titleParts.join(' - '));
3263
- }
3264
- }
3265
- }
3266
- _SkyAppTitleService_title = new WeakMap();
3267
- SkyAppTitleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppTitleService, deps: [{ token: i1$1.Title }], target: i0.ɵɵFactoryTarget.Injectable });
3268
- SkyAppTitleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppTitleService, providedIn: 'root' });
3269
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAppTitleService, decorators: [{
3270
- type: Injectable,
3271
- args: [{
3272
- providedIn: 'root',
3273
- }]
3274
- }], ctorParameters: function () { return [{ type: i1$1.Title }]; } });
3275
-
3276
- var _SkyTrimDirective_instances, _SkyTrimDirective_elRef, _SkyTrimDirective_obs, _SkyTrimDirective_observe, _SkyTrimDirective_disconnect, _SkyTrimDirective_trim;
3277
- /**
3278
- * Trims whitespace in each text node that is a direct descendent of the current element.
3279
- */
3280
- class SkyTrimDirective {
3281
- constructor(elRef, mutationObs) {
3282
- _SkyTrimDirective_instances.add(this);
3283
- _SkyTrimDirective_elRef.set(this, void 0);
3284
- _SkyTrimDirective_obs.set(this, void 0);
3285
- __classPrivateFieldSet(this, _SkyTrimDirective_elRef, elRef, "f");
3286
- __classPrivateFieldSet(this, _SkyTrimDirective_obs, mutationObs.create((mutations) => {
3287
- const nodes = [];
3288
- // Only trim white space inside direct descendants of the current element.
3289
- for (const mutation of mutations) {
3290
- if (mutation.target.parentNode === elRef.nativeElement) {
3291
- nodes.push(mutation.target);
3292
- }
3293
- }
3294
- __classPrivateFieldGet(this, _SkyTrimDirective_instances, "m", _SkyTrimDirective_trim).call(this, nodes);
3295
- }), "f");
3296
- __classPrivateFieldGet(this, _SkyTrimDirective_instances, "m", _SkyTrimDirective_observe).call(this);
3297
- }
3298
- ngOnInit() {
3299
- const el = __classPrivateFieldGet(this, _SkyTrimDirective_elRef, "f").nativeElement;
3300
- __classPrivateFieldGet(this, _SkyTrimDirective_instances, "m", _SkyTrimDirective_trim).call(this, Array.from(el.childNodes));
3301
- }
3302
- ngOnDestroy() {
3303
- __classPrivateFieldGet(this, _SkyTrimDirective_instances, "m", _SkyTrimDirective_disconnect).call(this);
3304
- }
3305
- }
3306
- _SkyTrimDirective_elRef = new WeakMap(), _SkyTrimDirective_obs = new WeakMap(), _SkyTrimDirective_instances = new WeakSet(), _SkyTrimDirective_observe = function _SkyTrimDirective_observe() {
3307
- __classPrivateFieldGet(this, _SkyTrimDirective_obs, "f").observe(__classPrivateFieldGet(this, _SkyTrimDirective_elRef, "f").nativeElement, {
3308
- characterData: true,
3309
- subtree: true,
3310
- });
3311
- }, _SkyTrimDirective_disconnect = function _SkyTrimDirective_disconnect() {
3312
- __classPrivateFieldGet(this, _SkyTrimDirective_obs, "f").disconnect();
3313
- }, _SkyTrimDirective_trim = function _SkyTrimDirective_trim(nodes) {
3314
- // Suspend the MutationObserver so altering the text content of each node
3315
- // doesn't retrigger the observe callback.
3316
- __classPrivateFieldGet(this, _SkyTrimDirective_instances, "m", _SkyTrimDirective_disconnect).call(this);
3317
- for (const node of nodes) {
3318
- if (node.nodeType === Node.TEXT_NODE && node.textContent) {
3319
- const textContent = node.textContent;
3320
- const textContentTrimmed = textContent.trim();
3321
- if (textContent !== textContentTrimmed) {
3322
- node.textContent = textContentTrimmed;
3323
- }
3324
- }
3325
- }
3326
- __classPrivateFieldGet(this, _SkyTrimDirective_instances, "m", _SkyTrimDirective_observe).call(this);
3327
- };
3328
- SkyTrimDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTrimDirective, deps: [{ token: i0.ElementRef }, { token: SkyMutationObserverService }], target: i0.ɵɵFactoryTarget.Directive });
3329
- SkyTrimDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyTrimDirective, selector: "[skyTrim]", ngImport: i0 });
3330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTrimDirective, decorators: [{
3331
- type: Directive,
3332
- args: [{
3333
- selector: '[skyTrim]',
3334
- }]
3335
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: SkyMutationObserverService }]; } });
3336
-
3337
- class SkyTrimModule {
3338
- }
3339
- SkyTrimModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTrimModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3340
- SkyTrimModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyTrimModule, declarations: [SkyTrimDirective], exports: [SkyTrimDirective] });
3341
- SkyTrimModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTrimModule });
3342
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyTrimModule, decorators: [{
3343
- type: NgModule,
3344
- args: [{
3345
- declarations: [SkyTrimDirective],
3346
- exports: [SkyTrimDirective],
3347
- }]
3348
- }] });
3349
-
3350
- class SkyUIConfigService {
3351
- getConfig(key, defaultConfig) {
3352
- return of(defaultConfig);
3353
- }
3354
- /* istanbul ignore next */
3355
- setConfig(key, value) {
3356
- return of({});
3357
- }
3358
- }
3359
- SkyUIConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyUIConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3360
- SkyUIConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyUIConfigService, providedIn: 'root' });
3361
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyUIConfigService, decorators: [{
3362
- type: Injectable,
3363
- args: [{
3364
- providedIn: 'root',
3365
- }]
3366
- }] });
3367
-
3368
- class SkyViewkeeperHostOptions {
3369
- }
3370
- SkyViewkeeperHostOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperHostOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3371
- SkyViewkeeperHostOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperHostOptions });
3372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperHostOptions, decorators: [{
3373
- type: Injectable
3374
- }] });
3375
-
3376
- var _SkyViewkeeper_instances, _SkyViewkeeper_boundaryEl, _SkyViewkeeper_el, _SkyViewkeeper_id, _SkyViewkeeper_setWidth, _SkyViewkeeper_verticalOffset, _SkyViewkeeper_verticalOffsetEl, _SkyViewkeeper_viewportMarginTop, _SkyViewkeeper_currentElFixedLeft, _SkyViewkeeper_currentElFixedTop, _SkyViewkeeper_currentElFixedWidth, _SkyViewkeeper_currentElClipLeft, _SkyViewkeeper_currentElClipTop, _SkyViewkeeper_isDestroyed, _SkyViewkeeper_scrollableHost, _SkyViewkeeper_syncElPositionHandler, _SkyViewkeeper_intersectionObserver, _SkyViewkeeper_getSpacerId, _SkyViewkeeper_unfixEl, _SkyViewkeeper_calculateVerticalOffset, _SkyViewkeeper_shouldFixEl, _SkyViewkeeper_getFixedStyles, _SkyViewkeeper_needsUpdating, _SkyViewkeeper_fixEl, _SkyViewkeeper_getBoundaryInfo;
3377
- const CLS_VIEWKEEPER_FIXED = 'sky-viewkeeper-fixed';
3378
- const EVT_AFTER_VIEWKEEPER_SYNC = 'afterViewkeeperSync';
3379
- let styleEl;
3380
- let nextIdIndex;
3381
- function ensureStyleEl() {
3382
- if (!styleEl) {
3383
- styleEl = document.createElement('style');
3384
- const css = document.createTextNode(`
3385
- .${CLS_VIEWKEEPER_FIXED} {
3386
- position: fixed !important;
3387
- z-index: 999;
3388
- opacity: 0.95;
3389
- overflow: hidden;
3390
- }
3391
-
3392
- .sky-theme-modern .${CLS_VIEWKEEPER_FIXED} {
3393
- box-shadow: 0px 1px 8px -1px rgba(0, 0, 0, 0.3);
3394
- opacity: initial;
3395
- }
3396
- `);
3397
- styleEl.appendChild(css);
3398
- document.head.appendChild(styleEl);
3399
- }
3400
- }
3401
- function nextId() {
3402
- nextIdIndex = (nextIdIndex || 0) + 1;
3403
- return 'viewkeeper-' + nextIdIndex;
3404
- }
3405
- function getOffset(el, scrollableHost) {
3406
- const rect = el.getBoundingClientRect();
3407
- const parent = scrollableHost ? scrollableHost : document.documentElement;
3408
- return {
3409
- top: rect.top + parent.scrollTop,
3410
- left: rect.left + parent.scrollLeft,
3411
- };
3412
- }
3413
- function px(value) {
3414
- let pxValue = value ? value.toString() : '';
3415
- if (typeof value === 'number') {
3416
- pxValue = value + 'px';
3417
- }
3418
- return pxValue;
3419
- }
3420
- function setElPosition(el, left, top, width, marginTop, clipTop, clipLeft) {
3421
- el.style.top = px(top);
3422
- el.style.left = px(left);
3423
- el.style.marginTop = px(marginTop);
3424
- el.style.clipPath =
3425
- clipTop || clipLeft ? `inset(${px(clipTop)} 0 0 ${px(clipLeft)})` : 'none';
3426
- /*istanbul ignore else*/
3427
- /* sanity check */
3428
- if (width !== null) {
3429
- el.style.width = px(width);
3430
- }
3431
- }
3432
- function getHeightWithMargin(el) {
3433
- const computedStyle = getComputedStyle(el);
3434
- return (el.offsetHeight +
3435
- parseInt(computedStyle.marginTop, 10) +
3436
- parseInt(computedStyle.marginBottom, 10));
3437
- }
3438
- function createCustomEvent(name) {
3439
- const evt = document.createEvent('CustomEvent');
3440
- evt.initCustomEvent(name, false, false, undefined);
3441
- return evt;
3442
- }
3443
- class SkyViewkeeper {
3444
- constructor(options) {
3445
- var _a;
3446
- _SkyViewkeeper_instances.add(this);
3447
- _SkyViewkeeper_boundaryEl.set(this, void 0);
3448
- _SkyViewkeeper_el.set(this, void 0);
3449
- _SkyViewkeeper_id.set(this, void 0);
3450
- _SkyViewkeeper_setWidth.set(this, void 0);
3451
- _SkyViewkeeper_verticalOffset.set(this, void 0);
3452
- _SkyViewkeeper_verticalOffsetEl.set(this, void 0);
3453
- _SkyViewkeeper_viewportMarginTop.set(this, 0);
3454
- _SkyViewkeeper_currentElFixedLeft.set(this, void 0);
3455
- _SkyViewkeeper_currentElFixedTop.set(this, void 0);
3456
- _SkyViewkeeper_currentElFixedWidth.set(this, void 0);
3457
- _SkyViewkeeper_currentElClipLeft.set(this, void 0);
3458
- _SkyViewkeeper_currentElClipTop.set(this, void 0);
3459
- _SkyViewkeeper_isDestroyed.set(this, false);
3460
- _SkyViewkeeper_scrollableHost.set(this, void 0);
3461
- _SkyViewkeeper_syncElPositionHandler.set(this, void 0);
3462
- _SkyViewkeeper_intersectionObserver.set(this, void 0);
3463
- options = options || /* istanbul ignore next */ {};
3464
- __classPrivateFieldSet(this, _SkyViewkeeper_el, options.el, "f");
3465
- __classPrivateFieldSet(this, _SkyViewkeeper_boundaryEl, options.boundaryEl, "f");
3466
- if (!__classPrivateFieldGet(this, _SkyViewkeeper_el, "f")) {
3467
- throw new Error('[SkyViewkeeper] The option `el` is required.');
3468
- }
3469
- if (!__classPrivateFieldGet(this, _SkyViewkeeper_boundaryEl, "f")) {
3470
- throw new Error('[SkyViewkeeper] The option `boundaryEl` is required.');
3471
- }
3472
- const el = __classPrivateFieldGet(this, _SkyViewkeeper_el, "f");
3473
- const boundaryEl = __classPrivateFieldGet(this, _SkyViewkeeper_boundaryEl, "f");
3474
- __classPrivateFieldSet(this, _SkyViewkeeper_setWidth, !!options.setWidth, "f");
3475
- __classPrivateFieldSet(this, _SkyViewkeeper_id, nextId(), "f");
3476
- __classPrivateFieldSet(this, _SkyViewkeeper_scrollableHost, options.scrollableHost, "f");
3477
- __classPrivateFieldSet(this, _SkyViewkeeper_verticalOffset, options.verticalOffset || 0, "f");
3478
- __classPrivateFieldSet(this, _SkyViewkeeper_verticalOffsetEl, options.verticalOffsetEl, "f");
3479
- // Only set viewport margin if the scrollable host is undefined.
3480
- if (!__classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")) {
3481
- __classPrivateFieldSet(this, _SkyViewkeeper_viewportMarginTop, (_a = options.viewportMarginTop) !== null && _a !== void 0 ? _a : 0, "f");
3482
- }
3483
- __classPrivateFieldSet(this, _SkyViewkeeper_syncElPositionHandler, () => this.syncElPosition(el, boundaryEl), "f");
3484
- if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
3485
- __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").addEventListener(EVT_AFTER_VIEWKEEPER_SYNC, __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
3486
- }
3487
- window.addEventListener('scroll', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"), true);
3488
- window.addEventListener('resize', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
3489
- window.addEventListener('orientationchange', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
3490
- ensureStyleEl();
3491
- this.syncElPosition(el, boundaryEl);
3492
- }
3493
- syncElPosition(el, boundaryEl) {
3494
- const verticalOffset = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_calculateVerticalOffset).call(this);
3495
- // When the element isn't visible, its size can't be calculated, so don't attempt syncing position in this case.
3496
- if (el.offsetWidth === 0 && el.offsetHeight === 0) {
3497
- return;
3498
- }
3499
- const boundaryInfo = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getBoundaryInfo).call(this, el, boundaryEl);
3500
- const fixedStyles = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getFixedStyles).call(this, boundaryInfo, verticalOffset);
3501
- const doFixEl = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_shouldFixEl).call(this, el, boundaryInfo, verticalOffset);
3502
- if (__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_needsUpdating).call(this, doFixEl, fixedStyles)) {
3503
- if (doFixEl) {
3504
- __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_fixEl).call(this, el, boundaryInfo, fixedStyles);
3505
- }
3506
- else {
3507
- __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_unfixEl).call(this, el);
3508
- }
3509
- }
3510
- const evt = createCustomEvent(EVT_AFTER_VIEWKEEPER_SYNC);
3511
- el.dispatchEvent(evt);
3512
- }
3513
- destroy() {
3514
- var _a;
3515
- if (!__classPrivateFieldGet(this, _SkyViewkeeper_isDestroyed, "f")) {
3516
- (_a = __classPrivateFieldGet(this, _SkyViewkeeper_intersectionObserver, "f")) === null || _a === void 0 ? void 0 : _a.disconnect();
3517
- window.removeEventListener('scroll', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"), true);
3518
- window.removeEventListener('resize', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
3519
- window.removeEventListener('orientationchange', __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
3520
- if (__classPrivateFieldGet(this, _SkyViewkeeper_el, "f")) {
3521
- __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_unfixEl).call(this, __classPrivateFieldGet(this, _SkyViewkeeper_el, "f"));
3522
- }
3523
- if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
3524
- __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").removeEventListener(EVT_AFTER_VIEWKEEPER_SYNC, __classPrivateFieldGet(this, _SkyViewkeeper_syncElPositionHandler, "f"));
3525
- }
3526
- __classPrivateFieldSet(this, _SkyViewkeeper_el, __classPrivateFieldSet(this, _SkyViewkeeper_boundaryEl, __classPrivateFieldSet(this, _SkyViewkeeper_verticalOffsetEl, undefined, "f"), "f"), "f");
3527
- __classPrivateFieldSet(this, _SkyViewkeeper_isDestroyed, true, "f");
3528
- }
3529
- }
3530
- }
3531
- _SkyViewkeeper_boundaryEl = new WeakMap(), _SkyViewkeeper_el = new WeakMap(), _SkyViewkeeper_id = new WeakMap(), _SkyViewkeeper_setWidth = new WeakMap(), _SkyViewkeeper_verticalOffset = new WeakMap(), _SkyViewkeeper_verticalOffsetEl = new WeakMap(), _SkyViewkeeper_viewportMarginTop = new WeakMap(), _SkyViewkeeper_currentElFixedLeft = new WeakMap(), _SkyViewkeeper_currentElFixedTop = new WeakMap(), _SkyViewkeeper_currentElFixedWidth = new WeakMap(), _SkyViewkeeper_currentElClipLeft = new WeakMap(), _SkyViewkeeper_currentElClipTop = new WeakMap(), _SkyViewkeeper_isDestroyed = new WeakMap(), _SkyViewkeeper_scrollableHost = new WeakMap(), _SkyViewkeeper_syncElPositionHandler = new WeakMap(), _SkyViewkeeper_intersectionObserver = new WeakMap(), _SkyViewkeeper_instances = new WeakSet(), _SkyViewkeeper_getSpacerId = function _SkyViewkeeper_getSpacerId() {
3532
- return __classPrivateFieldGet(this, _SkyViewkeeper_id, "f") + '-spacer';
3533
- }, _SkyViewkeeper_unfixEl = function _SkyViewkeeper_unfixEl(el) {
3534
- const spacerEl = document.getElementById(__classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this));
3535
- /*istanbul ignore else*/
3536
- if (spacerEl === null || spacerEl === void 0 ? void 0 : spacerEl.parentElement) {
3537
- spacerEl.parentElement.removeChild(spacerEl);
3538
- }
3539
- el.classList.remove(CLS_VIEWKEEPER_FIXED);
3540
- __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedLeft, __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedTop, __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedWidth, undefined, "f"), "f"), "f");
3541
- let width = '';
3542
- if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
3543
- width = 'auto';
3544
- }
3545
- setElPosition(el, '', '', width, '', 0, 0);
3546
- }, _SkyViewkeeper_calculateVerticalOffset = function _SkyViewkeeper_calculateVerticalOffset() {
3547
- let offset = __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffset, "f");
3548
- if (__classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f")) {
3549
- const verticalOffsetElTopStyle = __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").style.top;
3550
- const verticalOffsetElTop = parseInt(verticalOffsetElTopStyle, 10) || 0;
3551
- offset += __classPrivateFieldGet(this, _SkyViewkeeper_verticalOffsetEl, "f").offsetHeight + verticalOffsetElTop;
3552
- }
3553
- else if (__classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")) {
3554
- offset += __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f").getBoundingClientRect().top;
3555
- }
3556
- return offset;
3557
- }, _SkyViewkeeper_shouldFixEl = function _SkyViewkeeper_shouldFixEl(el, boundaryInfo, verticalOffset) {
3558
- let anchorTop;
3559
- if (boundaryInfo.spacerEl) {
3560
- anchorTop = getOffset(boundaryInfo.spacerEl, __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")).top;
3561
- }
3562
- else {
3563
- anchorTop = getOffset(el, __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")).top;
3564
- }
3565
- const doFixEl = boundaryInfo.scrollTop + verticalOffset + __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f") >
3566
- anchorTop;
3567
- return doFixEl;
3568
- }, _SkyViewkeeper_getFixedStyles = function _SkyViewkeeper_getFixedStyles(boundaryInfo, verticalOffset) {
3569
- // If the element needs to be fixed, this will calculate its position. The position
3570
- // will be 0 (fully visible) unless the user is scrolling the boundary out of view.
3571
- // In that case, the element should begin to scroll out of view with the
3572
- // rest of the boundary by setting its top position to a negative value.
3573
- const elTop = boundaryInfo.boundaryBottom -
3574
- boundaryInfo.elHeight -
3575
- boundaryInfo.scrollTop;
3576
- const elClipTop = elTop < verticalOffset ? verticalOffset - elTop : 0;
3577
- const elFixedTop = Math.min(elTop, verticalOffset);
3578
- const elFixedWidth = boundaryInfo.boundaryEl.getBoundingClientRect().width;
3579
- const elFixedLeft = boundaryInfo.boundaryOffset.left - boundaryInfo.scrollLeft;
3580
- const elClipLeft = elFixedLeft < 0 ? 0 - elFixedLeft : 0;
3581
- return {
3582
- elFixedLeft,
3583
- elFixedTop,
3584
- elFixedWidth,
3585
- elClipLeft,
3586
- elClipTop,
3587
- };
3588
- }, _SkyViewkeeper_needsUpdating = function _SkyViewkeeper_needsUpdating(doFixEl, fixedStyles) {
3589
- if ((doFixEl &&
3590
- __classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") === fixedStyles.elFixedLeft &&
3591
- __classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedTop, "f") === fixedStyles.elFixedTop &&
3592
- __classPrivateFieldGet(this, _SkyViewkeeper_currentElClipLeft, "f") === fixedStyles.elClipLeft &&
3593
- __classPrivateFieldGet(this, _SkyViewkeeper_currentElClipTop, "f") === fixedStyles.elClipTop &&
3594
- __classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedWidth, "f") === fixedStyles.elFixedWidth) ||
3595
- (!doFixEl &&
3596
- !(__classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") !== undefined &&
3597
- __classPrivateFieldGet(this, _SkyViewkeeper_currentElFixedLeft, "f") !== null))) {
3598
- // The element is either currently fixed and its position and width do not need
3599
- // to change, or the element is not currently fixed and does not need to be fixed.
3600
- // No changes are needed.
3601
- return false;
3602
- }
3603
- return true;
3604
- }, _SkyViewkeeper_fixEl = function _SkyViewkeeper_fixEl(el, boundaryInfo, fixedStyles) {
3605
- /* istanbul ignore else */
3606
- /* sanity check */
3607
- if (!boundaryInfo.spacerEl) {
3608
- const spacerHeight = boundaryInfo.elHeight;
3609
- const spacerEl = document.createElement('div');
3610
- spacerEl.id = boundaryInfo.spacerId;
3611
- spacerEl.style.height = px(spacerHeight);
3612
- /*istanbul ignore else*/
3613
- if (el.parentNode) {
3614
- el.parentNode.insertBefore(spacerEl, el.nextSibling);
3615
- }
3616
- }
3617
- el.classList.add(CLS_VIEWKEEPER_FIXED);
3618
- __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedTop, fixedStyles.elFixedTop, "f");
3619
- __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedLeft, fixedStyles.elFixedLeft, "f");
3620
- __classPrivateFieldSet(this, _SkyViewkeeper_currentElClipTop, fixedStyles.elClipTop, "f");
3621
- __classPrivateFieldSet(this, _SkyViewkeeper_currentElClipLeft, fixedStyles.elClipLeft, "f");
3622
- __classPrivateFieldSet(this, _SkyViewkeeper_currentElFixedWidth, fixedStyles.elFixedWidth, "f");
3623
- let width = 0;
3624
- if (__classPrivateFieldGet(this, _SkyViewkeeper_setWidth, "f")) {
3625
- width = fixedStyles.elFixedWidth;
3626
- }
3627
- setElPosition(el, fixedStyles.elFixedLeft, fixedStyles.elFixedTop, width, __classPrivateFieldGet(this, _SkyViewkeeper_viewportMarginTop, "f"), fixedStyles.elClipTop, fixedStyles.elClipLeft);
3628
- }, _SkyViewkeeper_getBoundaryInfo = function _SkyViewkeeper_getBoundaryInfo(el, boundaryEl) {
3629
- const spacerId = __classPrivateFieldGet(this, _SkyViewkeeper_instances, "m", _SkyViewkeeper_getSpacerId).call(this);
3630
- const spacerEl = document.getElementById(spacerId);
3631
- const boundaryOffset = getOffset(boundaryEl, __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f"));
3632
- const boundaryTop = boundaryOffset.top;
3633
- const boundaryBottom = boundaryTop + boundaryEl.getBoundingClientRect().height;
3634
- const scrollLeft = __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")
3635
- ? __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f").scrollLeft
3636
- : document.documentElement.scrollLeft;
3637
- const scrollTop = __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f")
3638
- ? __classPrivateFieldGet(this, _SkyViewkeeper_scrollableHost, "f").scrollTop
3639
- : document.documentElement.scrollTop;
3640
- const elHeight = getHeightWithMargin(el);
3641
- return {
3642
- boundaryBottom,
3643
- boundaryOffset,
3644
- boundaryEl,
3645
- elHeight,
3646
- scrollLeft,
3647
- scrollTop,
3648
- spacerId,
3649
- spacerEl,
3650
- };
3651
- };
3652
-
3653
- var _SkyViewkeeperService_hostOptions;
3654
- /**
3655
- * Provides methods for creating and destroying viewkeeper instances.
3656
- */
3657
- class SkyViewkeeperService {
3658
- constructor(hostOptions) {
3659
- _SkyViewkeeperService_hostOptions.set(this, void 0);
3660
- __classPrivateFieldSet(this, _SkyViewkeeperService_hostOptions, hostOptions, "f");
3661
- }
3662
- /**
3663
- *
3664
- * @param options Creates a viewkeeper instance, applying host options where applicable.
3665
- */
3666
- create(options) {
3667
- options = Object.assign({}, __classPrivateFieldGet(this, _SkyViewkeeperService_hostOptions, "f") || {}, options);
3668
- return new SkyViewkeeper(options);
3669
- }
3670
- /**
3671
- * Destroys a viewkeeper instance.
3672
- * @param vk Viewkeeper instance to destroy.
3673
- */
3674
- destroy(vk) {
3675
- vk.destroy();
3676
- }
3677
- }
3678
- _SkyViewkeeperService_hostOptions = new WeakMap();
3679
- SkyViewkeeperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperService, deps: [{ token: SkyViewkeeperHostOptions, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
3680
- SkyViewkeeperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperService, providedIn: 'root' });
3681
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperService, decorators: [{
3682
- type: Injectable,
3683
- args: [{
3684
- providedIn: 'root',
3685
- }]
3686
- }], ctorParameters: function () {
3687
- return [{ type: SkyViewkeeperHostOptions, decorators: [{
3688
- type: Optional
3689
- }] }];
3690
- } });
3691
-
3692
- var _SkyViewkeeperDirective_instances, _SkyViewkeeperDirective__skyViewkeeper, _SkyViewkeeperDirective_currentViewkeeperEls, _SkyViewkeeperDirective_el, _SkyViewkeeperDirective_mutationObserverSvc, _SkyViewkeeperDirective_observer, _SkyViewkeeperDirective_scrollableHostSvc, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, _SkyViewkeeperDirective_viewkeepers, _SkyViewkeeperDirective_viewkeeperSvc, _SkyViewkeeperDirective_destroyViewkeepers, _SkyViewkeeperDirective_getViewkeeperEls, _SkyViewkeeperDirective_viewkeeperElsChanged, _SkyViewkeeperDirective_detectElements;
3693
- class SkyViewkeeperDirective {
3694
- set skyViewkeeper(value) {
3695
- __classPrivateFieldSet(this, _SkyViewkeeperDirective__skyViewkeeper, value, "f");
3696
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_instances, "m", _SkyViewkeeperDirective_detectElements).call(this);
3697
- }
3698
- get skyViewkeeper() {
3699
- return __classPrivateFieldGet(this, _SkyViewkeeperDirective__skyViewkeeper, "f");
3700
- }
3701
- constructor(el, mutationObserverSvc, viewkeeperSvc, scrollableHostSvc) {
3702
- _SkyViewkeeperDirective_instances.add(this);
3703
- _SkyViewkeeperDirective__skyViewkeeper.set(this, void 0);
3704
- _SkyViewkeeperDirective_currentViewkeeperEls.set(this, void 0);
3705
- _SkyViewkeeperDirective_el.set(this, void 0);
3706
- _SkyViewkeeperDirective_mutationObserverSvc.set(this, void 0);
3707
- _SkyViewkeeperDirective_observer.set(this, void 0);
3708
- _SkyViewkeeperDirective_scrollableHostSvc.set(this, void 0);
3709
- _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe.set(this, void 0);
3710
- _SkyViewkeeperDirective_viewkeepers.set(this, []);
3711
- _SkyViewkeeperDirective_viewkeeperSvc.set(this, void 0);
3712
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_el, el, "f");
3713
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_mutationObserverSvc, mutationObserverSvc, "f");
3714
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_viewkeeperSvc, viewkeeperSvc, "f");
3715
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_scrollableHostSvc, scrollableHostSvc, "f");
3716
- }
3717
- ngOnInit() {
3718
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_observer, __classPrivateFieldGet(this, _SkyViewkeeperDirective_mutationObserverSvc, "f").create(() => __classPrivateFieldGet(this, _SkyViewkeeperDirective_instances, "m", _SkyViewkeeperDirective_detectElements).call(this)), "f");
3719
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_observer, "f").observe(__classPrivateFieldGet(this, _SkyViewkeeperDirective_el, "f").nativeElement, {
3720
- childList: true,
3721
- subtree: true,
3722
- });
3723
- }
3724
- ngOnDestroy() {
3725
- /*istanbul ignore else*/
3726
- if (__classPrivateFieldGet(this, _SkyViewkeeperDirective_observer, "f")) {
3727
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_observer, "f").disconnect();
3728
- }
3729
- /*istanbul ignore else*/
3730
- if (__classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f")) {
3731
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f").next();
3732
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f").complete();
3733
- }
3734
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_instances, "m", _SkyViewkeeperDirective_destroyViewkeepers).call(this);
3735
- }
3736
- }
3737
- _SkyViewkeeperDirective__skyViewkeeper = new WeakMap(), _SkyViewkeeperDirective_currentViewkeeperEls = new WeakMap(), _SkyViewkeeperDirective_el = new WeakMap(), _SkyViewkeeperDirective_mutationObserverSvc = new WeakMap(), _SkyViewkeeperDirective_observer = new WeakMap(), _SkyViewkeeperDirective_scrollableHostSvc = new WeakMap(), _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe = new WeakMap(), _SkyViewkeeperDirective_viewkeepers = new WeakMap(), _SkyViewkeeperDirective_viewkeeperSvc = new WeakMap(), _SkyViewkeeperDirective_instances = new WeakSet(), _SkyViewkeeperDirective_destroyViewkeepers = function _SkyViewkeeperDirective_destroyViewkeepers() {
3738
- for (const viewkeeper of __classPrivateFieldGet(this, _SkyViewkeeperDirective_viewkeepers, "f")) {
3739
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_viewkeeperSvc, "f").destroy(viewkeeper);
3740
- }
3741
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_viewkeepers, [], "f");
3742
- }, _SkyViewkeeperDirective_getViewkeeperEls = function _SkyViewkeeperDirective_getViewkeeperEls() {
3743
- let viewkeeperEls = [];
3744
- if (this.skyViewkeeper) {
3745
- viewkeeperEls = [];
3746
- for (const item of this.skyViewkeeper) {
3747
- const matchingEls = Array.from(__classPrivateFieldGet(this, _SkyViewkeeperDirective_el, "f").nativeElement.querySelectorAll(item));
3748
- viewkeeperEls = [...viewkeeperEls, ...matchingEls];
3749
- }
3750
- }
3751
- return viewkeeperEls;
3752
- }, _SkyViewkeeperDirective_viewkeeperElsChanged = function _SkyViewkeeperDirective_viewkeeperElsChanged(viewkeeperEls) {
3753
- if (!viewkeeperEls !== !__classPrivateFieldGet(this, _SkyViewkeeperDirective_currentViewkeeperEls, "f")) {
3754
- return true;
3755
- }
3756
- if (viewkeeperEls && __classPrivateFieldGet(this, _SkyViewkeeperDirective_currentViewkeeperEls, "f")) {
3757
- if (viewkeeperEls.length !== __classPrivateFieldGet(this, _SkyViewkeeperDirective_currentViewkeeperEls, "f").length) {
3758
- return true;
3759
- }
3760
- for (let i = 0, n = viewkeeperEls.length; i < n; i++) {
3761
- if (viewkeeperEls[i] !== __classPrivateFieldGet(this, _SkyViewkeeperDirective_currentViewkeeperEls, "f")[i]) {
3762
- return true;
3763
- }
3764
- }
3765
- }
3766
- return false;
3767
- }, _SkyViewkeeperDirective_detectElements = function _SkyViewkeeperDirective_detectElements() {
3768
- const viewkeeperEls = __classPrivateFieldGet(this, _SkyViewkeeperDirective_instances, "m", _SkyViewkeeperDirective_getViewkeeperEls).call(this);
3769
- if (__classPrivateFieldGet(this, _SkyViewkeeperDirective_instances, "m", _SkyViewkeeperDirective_viewkeeperElsChanged).call(this, viewkeeperEls)) {
3770
- if (__classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f")) {
3771
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f").next();
3772
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f").complete();
3773
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, new Subject(), "f");
3774
- }
3775
- else {
3776
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, new Subject(), "f");
3777
- }
3778
- if (__classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostSvc, "f")) {
3779
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostSvc, "f")
3780
- .watchScrollableHost(__classPrivateFieldGet(this, _SkyViewkeeperDirective_el, "f"))
3781
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyViewkeeperDirective_scrollableHostWatchUnsubscribe, "f")))
3782
- .subscribe((scrollableHost) => {
3783
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_instances, "m", _SkyViewkeeperDirective_destroyViewkeepers).call(this);
3784
- let previousViewkeeperEl;
3785
- for (const viewkeeperEl of viewkeeperEls) {
3786
- __classPrivateFieldGet(this, _SkyViewkeeperDirective_viewkeepers, "f").push(__classPrivateFieldGet(this, _SkyViewkeeperDirective_viewkeeperSvc, "f").create({
3787
- boundaryEl: __classPrivateFieldGet(this, _SkyViewkeeperDirective_el, "f").nativeElement,
3788
- scrollableHost: scrollableHost instanceof HTMLElement
3789
- ? scrollableHost
3790
- : undefined,
3791
- el: viewkeeperEl,
3792
- setWidth: true,
3793
- verticalOffsetEl: previousViewkeeperEl,
3794
- }));
3795
- previousViewkeeperEl = viewkeeperEl;
3796
- }
3797
- });
3798
- }
3799
- __classPrivateFieldSet(this, _SkyViewkeeperDirective_currentViewkeeperEls, viewkeeperEls, "f");
3800
- }
3801
- };
3802
- SkyViewkeeperDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperDirective, deps: [{ token: i0.ElementRef }, { token: SkyMutationObserverService }, { token: SkyViewkeeperService }, { token: SkyScrollableHostService, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
3803
- SkyViewkeeperDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: SkyViewkeeperDirective, selector: "[skyViewkeeper]", inputs: { skyViewkeeper: "skyViewkeeper" }, ngImport: i0 });
3804
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperDirective, decorators: [{
3805
- type: Directive,
3806
- args: [{
3807
- selector: '[skyViewkeeper]',
3808
- }]
3809
- }], ctorParameters: function () {
3810
- return [{ type: i0.ElementRef }, { type: SkyMutationObserverService }, { type: SkyViewkeeperService }, { type: SkyScrollableHostService, decorators: [{
3811
- type: Optional
3812
- }] }];
3813
- }, propDecorators: { skyViewkeeper: [{
3814
- type: Input
3815
- }] } });
3816
-
3817
- class SkyViewkeeperModule {
3818
- }
3819
- SkyViewkeeperModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3820
- SkyViewkeeperModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperModule, declarations: [SkyViewkeeperDirective], exports: [SkyViewkeeperDirective] });
3821
- SkyViewkeeperModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperModule });
3822
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyViewkeeperModule, decorators: [{
3823
- type: NgModule,
3824
- args: [{
3825
- declarations: [SkyViewkeeperDirective],
3826
- exports: [SkyViewkeeperDirective],
3827
- }]
3828
- }] });
3829
-
3830
- /**
3831
- * Generated bundle index. Do not edit.
3832
- */
3833
-
3834
- export { NumericOptions, SKY_LOG_LEVEL, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDefaultInputProvider, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLayoutHostService, SkyLiveAnnouncerService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, getWindow, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
3835
- //# sourceMappingURL=skyux-core.mjs.map