@skyux/indicators 8.7.2 → 9.0.0-alpha.1

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 (118) hide show
  1. package/documentation.json +162 -162
  2. package/{esm2020 → esm2022}/lib/modules/alert/alert.component.mjs +56 -55
  3. package/{esm2020 → esm2022}/lib/modules/alert/alert.module.mjs +13 -13
  4. package/{esm2020 → esm2022}/lib/modules/chevron/chevron.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/modules/chevron/chevron.module.mjs +13 -13
  6. package/{esm2020 → esm2022}/lib/modules/expansion-indicator/expansion-indicator.component.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/modules/expansion-indicator/expansion-indicator.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/modules/help-inline/help-inline-aria-expanded.pipe.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/modules/help-inline/help-inline.component.mjs +4 -4
  10. package/{esm2020 → esm2022}/lib/modules/help-inline/help-inline.module.mjs +13 -13
  11. package/esm2022/lib/modules/icon/icon-class-list.pipe.mjs +35 -0
  12. package/esm2022/lib/modules/icon/icon-resolver.service.mjs +57 -0
  13. package/{esm2020 → esm2022}/lib/modules/icon/icon-stack.component.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/modules/icon/icon.component.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/modules/icon/icon.module.mjs +5 -5
  16. package/{esm2020 → esm2022}/lib/modules/key-info/key-info-label.component.mjs +4 -4
  17. package/{esm2020 → esm2022}/lib/modules/key-info/key-info-value.component.mjs +4 -4
  18. package/{esm2020 → esm2022}/lib/modules/key-info/key-info.component.mjs +4 -4
  19. package/{esm2020 → esm2022}/lib/modules/key-info/key-info.module.mjs +9 -9
  20. package/esm2022/lib/modules/label/label.component.mjs +118 -0
  21. package/{esm2020 → esm2022}/lib/modules/label/label.module.mjs +11 -11
  22. package/{esm2020 → esm2022}/lib/modules/shared/sky-indicators-resources.module.mjs +11 -11
  23. package/esm2022/lib/modules/status-indicator/status-indicator.component.mjs +104 -0
  24. package/{esm2020 → esm2022}/lib/modules/status-indicator/status-indicator.module.mjs +13 -13
  25. package/esm2022/lib/modules/text-highlight/text-highlight.directive.mjs +151 -0
  26. package/{esm2020 → esm2022}/lib/modules/text-highlight/text-highlight.module.mjs +5 -5
  27. package/{esm2020 → esm2022}/lib/modules/tokens/token.component.mjs +15 -15
  28. package/esm2022/lib/modules/tokens/tokens.component.mjs +332 -0
  29. package/{esm2020 → esm2022}/lib/modules/tokens/tokens.module.mjs +11 -11
  30. package/esm2022/lib/modules/wait/wait-adapter.service.mjs +224 -0
  31. package/{esm2020 → esm2022}/lib/modules/wait/wait-page.component.mjs +4 -4
  32. package/esm2022/lib/modules/wait/wait.component.mjs +171 -0
  33. package/{esm2020 → esm2022}/lib/modules/wait/wait.module.mjs +5 -5
  34. package/esm2022/lib/modules/wait/wait.service.mjs +159 -0
  35. package/esm2022/testing/alert/alert-harness.mjs +112 -0
  36. package/esm2022/testing/alert-fixture.mjs +70 -0
  37. package/esm2022/testing/chevron/chevron-harness.mjs +38 -0
  38. package/esm2022/testing/help-inline/help-inline-harness.mjs +25 -0
  39. package/esm2022/testing/icon/icon-harness.mjs +86 -0
  40. package/esm2022/testing/key-info/key-info-harness.mjs +43 -0
  41. package/{esm2020 → esm2022}/testing/key-info/key-info-label-harness.mjs +5 -5
  42. package/{esm2020 → esm2022}/testing/key-info/key-info-value-harness.mjs +5 -5
  43. package/esm2022/testing/label/label-harness.mjs +88 -0
  44. package/esm2022/testing/label-fixture.mjs +42 -0
  45. package/esm2022/testing/tokens/token-harness.mjs +63 -0
  46. package/esm2022/testing/tokens/tokens-harness.mjs +45 -0
  47. package/esm2022/testing/wait/wait-harness.mjs +60 -0
  48. package/esm2022/testing/wait-fixture.mjs +28 -0
  49. package/{fesm2020 → fesm2022}/skyux-indicators-testing.mjs +146 -190
  50. package/{fesm2020 → fesm2022}/skyux-indicators-testing.mjs.map +1 -1
  51. package/{fesm2020 → fesm2022}/skyux-indicators.mjs +755 -736
  52. package/{fesm2020 → fesm2022}/skyux-indicators.mjs.map +1 -1
  53. package/lib/modules/alert/alert.component.d.ts +1 -1
  54. package/lib/modules/chevron/chevron.component.d.ts +1 -1
  55. package/lib/modules/expansion-indicator/expansion-indicator.component.d.ts +1 -1
  56. package/lib/modules/help-inline/help-inline.component.d.ts +1 -1
  57. package/lib/modules/icon/icon-stack.component.d.ts +1 -1
  58. package/lib/modules/icon/icon.component.d.ts +1 -1
  59. package/lib/modules/key-info/key-info.component.d.ts +1 -1
  60. package/lib/modules/label/label.component.d.ts +1 -1
  61. package/lib/modules/status-indicator/status-indicator.component.d.ts +1 -1
  62. package/lib/modules/text-highlight/text-highlight.directive.d.ts +1 -1
  63. package/lib/modules/tokens/token.component.d.ts +1 -1
  64. package/lib/modules/tokens/tokens.component.d.ts +1 -1
  65. package/lib/modules/wait/wait-page.component.d.ts +1 -1
  66. package/lib/modules/wait/wait.component.d.ts +1 -1
  67. package/package.json +17 -25
  68. package/esm2020/lib/modules/icon/icon-class-list.pipe.mjs +0 -40
  69. package/esm2020/lib/modules/icon/icon-resolver.service.mjs +0 -60
  70. package/esm2020/lib/modules/label/label.component.mjs +0 -116
  71. package/esm2020/lib/modules/status-indicator/status-indicator.component.mjs +0 -104
  72. package/esm2020/lib/modules/text-highlight/text-highlight.directive.mjs +0 -154
  73. package/esm2020/lib/modules/tokens/tokens.component.mjs +0 -320
  74. package/esm2020/lib/modules/wait/wait-adapter.service.mjs +0 -221
  75. package/esm2020/lib/modules/wait/wait.component.mjs +0 -167
  76. package/esm2020/lib/modules/wait/wait.service.mjs +0 -161
  77. package/esm2020/testing/alert/alert-harness.mjs +0 -118
  78. package/esm2020/testing/alert-fixture.mjs +0 -72
  79. package/esm2020/testing/chevron/chevron-harness.mjs +0 -44
  80. package/esm2020/testing/help-inline/help-inline-harness.mjs +0 -31
  81. package/esm2020/testing/icon/icon-harness.mjs +0 -90
  82. package/esm2020/testing/key-info/key-info-harness.mjs +0 -49
  83. package/esm2020/testing/label/label-harness.mjs +0 -94
  84. package/esm2020/testing/label-fixture.mjs +0 -45
  85. package/esm2020/testing/tokens/token-harness.mjs +0 -69
  86. package/esm2020/testing/tokens/tokens-harness.mjs +0 -45
  87. package/esm2020/testing/wait/wait-harness.mjs +0 -66
  88. package/esm2020/testing/wait-fixture.mjs +0 -31
  89. package/fesm2015/skyux-indicators-testing.mjs +0 -854
  90. package/fesm2015/skyux-indicators-testing.mjs.map +0 -1
  91. package/fesm2015/skyux-indicators.mjs +0 -2172
  92. package/fesm2015/skyux-indicators.mjs.map +0 -1
  93. /package/{esm2020 → esm2022}/index.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/modules/icon/icon-stack-item.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/modules/icon/types/icon-resolved.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/modules/icon/types/icon-type.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/modules/icon/types/icon-variant-type.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/modules/key-info/key-info-layout-type.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/modules/label/label-type.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-description-type.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-icon-type.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-icon-utility.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/modules/shared/indicator-icon.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/modules/tokens/types/token-selected-event-args.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/modules/tokens/types/token.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/modules/tokens/types/tokens-message-type.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/modules/tokens/types/tokens-message.mjs +0 -0
  108. /package/{esm2020 → esm2022}/skyux-indicators.mjs +0 -0
  109. /package/{esm2020 → esm2022}/testing/alert/alert-harness-filters.mjs +0 -0
  110. /package/{esm2020 → esm2022}/testing/help-inline/help-inline-harness-filters.mjs +0 -0
  111. /package/{esm2020 → esm2022}/testing/icon/icon-harness-filters.mjs +0 -0
  112. /package/{esm2020 → esm2022}/testing/key-info/key-info-harness-filters.mjs +0 -0
  113. /package/{esm2020 → esm2022}/testing/label/label-harness-filters.mjs +0 -0
  114. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  115. /package/{esm2020 → esm2022}/testing/skyux-indicators-testing.mjs +0 -0
  116. /package/{esm2020 → esm2022}/testing/tokens/token-harness-filters.mjs +0 -0
  117. /package/{esm2020 → esm2022}/testing/tokens/tokens-harness-filters.mjs +0 -0
  118. /package/{esm2020 → esm2022}/testing/wait/wait-harness-filters.mjs +0 -0
@@ -0,0 +1,224 @@
1
+ import { Injectable, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const busyElements = {};
4
+ // Need to add the following to classes which contain static methods.
5
+ // See: https://github.com/ng-packagr/ng-packagr/issues/641
6
+ /**
7
+ * @internal
8
+ * @dynamic
9
+ */
10
+ export class SkyWaitAdapterService {
11
+ static { this.isPageWaitActive = false; }
12
+ #focusableElements;
13
+ #renderer;
14
+ constructor(rendererFactory) {
15
+ this.#renderer = rendererFactory.createRenderer(undefined, null);
16
+ }
17
+ ngOnDestroy() {
18
+ this.#clearListeners();
19
+ }
20
+ setWaitBounds(waitEl) {
21
+ this.#renderer.setStyle(waitEl.nativeElement.parentElement, 'position', 'relative');
22
+ }
23
+ removeWaitBounds(waitEl) {
24
+ this.#renderer.removeStyle(waitEl.nativeElement.parentElement, 'position');
25
+ }
26
+ setBusyState(waitEl, isFullPage, isWaiting, isNonBlocking, waitComponentId) {
27
+ const busyEl = isFullPage
28
+ ? document.body
29
+ : waitEl.nativeElement.parentElement;
30
+ if (!isNonBlocking) {
31
+ if (isWaiting) {
32
+ let restoreFocusElement = undefined;
33
+ let restoreFocusCheckElement = undefined;
34
+ this.#renderer.setAttribute(busyEl, 'aria-busy', 'true');
35
+ // Remove focus from page when full page blocking wait
36
+ if (isFullPage || busyEl.contains(document.activeElement)) {
37
+ if (document.activeElement !== document.body) {
38
+ restoreFocusElement = document.activeElement;
39
+ }
40
+ this.#clearDocumentFocus();
41
+ restoreFocusCheckElement = document.activeElement;
42
+ }
43
+ if (isFullPage) {
44
+ SkyWaitAdapterService.isPageWaitActive = true;
45
+ const endListenerFunc = this.#renderer.listen(document.body, 'keydown', (event) => {
46
+ /*istanbul ignore else */
47
+ if (event.key) {
48
+ /* istanbul ignore else */
49
+ if (event.key.toLowerCase() === 'tab') {
50
+ event.target.blur();
51
+ event.preventDefault();
52
+ event.stopPropagation();
53
+ event.stopImmediatePropagation();
54
+ this.#clearDocumentFocus();
55
+ }
56
+ }
57
+ });
58
+ if (waitComponentId) {
59
+ busyElements[waitComponentId] = {
60
+ listener: endListenerFunc,
61
+ busyEl: undefined,
62
+ restoreFocusElement,
63
+ restoreFocusCheckElement,
64
+ };
65
+ }
66
+ }
67
+ else {
68
+ const endListenerFunc = this.#renderer.listen(busyEl, 'focusin', (event) => {
69
+ /* istanbul ignore else */
70
+ if (!isNonBlocking) {
71
+ event.preventDefault();
72
+ event.stopPropagation();
73
+ event.stopImmediatePropagation();
74
+ if (SkyWaitAdapterService.isPageWaitActive) {
75
+ this.#clearDocumentFocus();
76
+ }
77
+ else {
78
+ // Propagate tab navigation if attempted into waited element
79
+ const target = event.target;
80
+ if (target) {
81
+ target.blur();
82
+ this.#focusNextElement(target, this.#isShift(event));
83
+ }
84
+ }
85
+ }
86
+ });
87
+ if (waitComponentId) {
88
+ busyElements[waitComponentId] = {
89
+ listener: endListenerFunc,
90
+ busyEl,
91
+ restoreFocusElement,
92
+ restoreFocusCheckElement,
93
+ };
94
+ }
95
+ }
96
+ }
97
+ else {
98
+ this.#renderer.removeAttribute(busyEl, 'aria-busy');
99
+ if (isFullPage) {
100
+ SkyWaitAdapterService.isPageWaitActive = false;
101
+ }
102
+ if (waitComponentId && waitComponentId in busyElements) {
103
+ const busyElement = busyElements[waitComponentId];
104
+ busyElement.listener();
105
+ // If there is a restore focus element and the focus has not moved, restore focus.
106
+ if (busyElement.restoreFocusCheckElement === document.activeElement) {
107
+ busyElement.restoreFocusElement?.focus();
108
+ }
109
+ delete busyElements[waitComponentId];
110
+ }
111
+ }
112
+ }
113
+ }
114
+ #focusNextElement(targetElement, shiftKey) {
115
+ const focusable = this.#getFocusableElements();
116
+ // If shift tab, go in the other direction
117
+ const modifier = shiftKey ? -1 : 1;
118
+ // Find the next navigable element that isn't waiting
119
+ const startingIndex = focusable.indexOf(targetElement);
120
+ let curIndex = startingIndex + modifier;
121
+ while (focusable[curIndex] &&
122
+ this.#isElementBusyOrHidden(focusable[curIndex])) {
123
+ curIndex += modifier;
124
+ }
125
+ if (focusable[curIndex] &&
126
+ !this.#isElementBusyOrHidden(focusable[curIndex])) {
127
+ focusable[curIndex].focus();
128
+ }
129
+ else {
130
+ // Try wrapping the navigation
131
+ /* istanbul ignore next */
132
+ /* sanity check */
133
+ curIndex = modifier > 0 ? 0 : focusable.length - 1;
134
+ while (curIndex !== startingIndex &&
135
+ focusable[curIndex] &&
136
+ this.#isElementBusyOrHidden(focusable[curIndex])) {
137
+ /* istanbul ignore next */
138
+ /* sanity check */
139
+ curIndex += modifier;
140
+ }
141
+ /* istanbul ignore else */
142
+ /* sanity check */
143
+ if (focusable[curIndex] &&
144
+ !this.#isElementBusyOrHidden(focusable[curIndex])) {
145
+ focusable[curIndex].focus();
146
+ }
147
+ else {
148
+ // No valid target, wipe focus
149
+ this.#clearDocumentFocus();
150
+ }
151
+ }
152
+ // clear focusableElements list
153
+ this.#focusableElements = undefined;
154
+ }
155
+ #isShift(event) {
156
+ // Determine if shift+tab was used based on element order
157
+ const elements = this.#getFocusableElements().filter((elem) => !this.#isElementHidden(elem));
158
+ const previousInd = elements.indexOf(event.relatedTarget);
159
+ const currentInd = elements.indexOf(event.target);
160
+ return (previousInd === currentInd + 1 ||
161
+ (previousInd === 0 && currentInd === elements.length - 1) ||
162
+ previousInd > currentInd ||
163
+ !event.relatedTarget);
164
+ }
165
+ #isElementHidden(element) {
166
+ const style = window.getComputedStyle(element);
167
+ return style.display === 'none' || style.visibility === 'hidden';
168
+ }
169
+ #isElementBusyOrHidden(element) {
170
+ if (this.#isElementHidden(element)) {
171
+ return true;
172
+ }
173
+ for (const key of Object.keys(busyElements)) {
174
+ const parentElement = busyElements[key].busyEl;
175
+ if (parentElement && parentElement.contains(element)) {
176
+ return true;
177
+ }
178
+ }
179
+ return false;
180
+ }
181
+ #clearDocumentFocus() {
182
+ const activeElement = document.activeElement;
183
+ /* istanbul ignore else */
184
+ if (activeElement) {
185
+ activeElement.blur();
186
+ }
187
+ document.body.focus();
188
+ }
189
+ #getFocusableElements() {
190
+ // Keep this cached so we can reduce queries
191
+ if (this.#focusableElements) {
192
+ return this.#focusableElements;
193
+ }
194
+ // Select all possible focusable elements
195
+ const focusableElements = 'a[href], ' +
196
+ 'area[href], ' +
197
+ "input:not([disabled]):not([tabindex='-1']), " +
198
+ "button:not([disabled]):not([tabindex='-1']), " +
199
+ "select:not([disabled]):not([tabindex='-1']), " +
200
+ "textarea:not([disabled]):not([tabindex='-1']), " +
201
+ 'iframe, object, embed, ' +
202
+ "*[tabindex]:not([tabindex='-1']), " +
203
+ '*[contenteditable=true]';
204
+ this.#focusableElements = Array.prototype.filter.call(document.body.querySelectorAll(focusableElements), (element) => {
205
+ return (element.offsetWidth > 0 ||
206
+ element.offsetHeight > 0 ||
207
+ element === document.activeElement);
208
+ });
209
+ return this.#focusableElements;
210
+ }
211
+ #clearListeners() {
212
+ SkyWaitAdapterService.isPageWaitActive = false;
213
+ for (const key of Object.keys(busyElements)) {
214
+ busyElements[key].listener();
215
+ delete busyElements[key];
216
+ }
217
+ }
218
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
219
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitAdapterService }); }
220
+ }
221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitAdapterService, decorators: [{
222
+ type: Injectable
223
+ }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1hZGFwdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsVUFBVSxHQUlYLE1BQU0sZUFBZSxDQUFDOztBQUV2QixNQUFNLFlBQVksR0FPZCxFQUFFLENBQUM7QUFFUCxxRUFBcUU7QUFDckUsMkRBQTJEO0FBQzNEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7YUFDbEIscUJBQWdCLEdBQUcsS0FBSyxBQUFSLENBQVM7SUFFdkMsa0JBQWtCLENBQTRCO0lBQzlDLFNBQVMsQ0FBWTtJQUVyQixZQUFZLGVBQWlDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxhQUFhLENBQUMsTUFBa0I7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQ3JCLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxFQUNsQyxVQUFVLEVBQ1YsVUFBVSxDQUNYLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBa0I7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVNLFlBQVksQ0FDakIsTUFBa0IsRUFDbEIsVUFBbUIsRUFDbkIsU0FBa0IsRUFDbEIsYUFBc0IsRUFDdEIsZUFBd0I7UUFFeEIsTUFBTSxNQUFNLEdBQUcsVUFBVTtZQUN2QixDQUFDLENBQUMsUUFB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VSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGFibGUsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3QgYnVzeUVsZW1lbnRzOiB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBidXN5RWw6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICAgIHJlc3RvcmVGb2N1c0VsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICByZXN0b3JlRm9jdXNDaGVja0VsZW1lbnQ/OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgfTtcbn0gPSB7fTtcblxuLy8gTmVlZCB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBjbGFzc2VzIHdoaWNoIGNvbnRhaW4gc3RhdGljIG1ldGhvZHMuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZy1wYWNrYWdyL25nLXBhY2thZ3IvaXNzdWVzLzY0MVxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lXYWl0QWRhcHRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgc3RhdGljIGlzUGFnZVdhaXRBY3RpdmUgPSBmYWxzZTtcblxuICAjZm9jdXNhYmxlRWxlbWVudHM6IEhUTUxFbGVtZW50W10gfCB1bmRlZmluZWQ7XG4gICNyZW5kZXJlcjogUmVuZGVyZXIyO1xuXG4gIGNvbnN0cnVjdG9yKHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xuICAgIHRoaXMuI3JlbmRlcmVyID0gcmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHVuZGVmaW5lZCwgbnVsbCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jY2xlYXJMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRXYWl0Qm91bmRzKHdhaXRFbDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgd2FpdEVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCxcbiAgICAgICdwb3NpdGlvbicsXG4gICAgICAncmVsYXRpdmUnXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVXYWl0Qm91bmRzKHdhaXRFbDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZVN0eWxlKHdhaXRFbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQsICdwb3NpdGlvbicpO1xuICB9XG5cbiAgcHVibGljIHNldEJ1c3lTdGF0ZShcbiAgICB3YWl0RWw6IEVsZW1lbnRSZWYsXG4gICAgaXNGdWxsUGFnZTogYm9vbGVhbixcbiAgICBpc1dhaXRpbmc6IGJvb2xlYW4sXG4gICAgaXNOb25CbG9ja2luZzogYm9vbGVhbixcbiAgICB3YWl0Q29tcG9uZW50SWQ/OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgYnVzeUVsID0gaXNGdWxsUGFnZVxuICAgICAgPyBkb2N1bWVudC5ib2R5XG4gICAgICA6IHdhaXRFbC5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG5cbiAgICBpZiAoIWlzTm9uQmxvY2tpbmcpIHtcbiAgICAgIGlmIChpc1dhaXRpbmcpIHtcbiAgICAgICAgbGV0IHJlc3RvcmVGb2N1c0VsZW1lbnQ6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgcmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50OiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy4jcmVuZGVyZXIuc2V0QXR0cmlidXRlKGJ1c3lFbCwgJ2FyaWEtYnVzeScsICd0cnVlJyk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGZvY3VzIGZyb20gcGFnZSB3aGVuIGZ1bGwgcGFnZSBibG9ja2luZyB3YWl0XG4gICAgICAgIGlmIChpc0Z1bGxQYWdlIHx8IGJ1c3lFbC5jb250YWlucyhkb2N1bWVudC5hY3RpdmVFbGVtZW50KSkge1xuICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBkb2N1bWVudC5ib2R5KSB7XG4gICAgICAgICAgICByZXN0b3JlRm9jdXNFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy4jY2xlYXJEb2N1bWVudEZvY3VzKCk7XG4gICAgICAgICAgcmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpc0Z1bGxQYWdlKSB7XG4gICAgICAgICAgU2t5V2FpdEFkYXB0ZXJTZXJ2aWNlLmlzUGFnZVdhaXRBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgIGNvbnN0IGVuZExpc3RlbmVyRnVuYyA9IHRoaXMuI3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICAgICAgICAna2V5ZG93bicsXG4gICAgICAgICAgICAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5KSB7XG4gICAgICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICd0YWInKSB7XG4gICAgICAgICAgICAgICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuI2NsZWFyRG9jdW1lbnRGb2N1cygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAod2FpdENvbXBvbmVudElkKSB7XG4gICAgICAgICAgICBidXN5RWxlbWVudHNbd2FpdENvbXBvbmVudElkXSA9IHtcbiAgICAgICAgICAgICAgbGlzdGVuZXI6IGVuZExpc3RlbmVyRnVuYyxcbiAgICAgICAgICAgICAgYnVzeUVsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc3RvcmVGb2N1c0VsZW1lbnQsXG4gICAgICAgICAgICAgIHJlc3RvcmVGb2N1c0NoZWNrRWxlbWVudCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGVuZExpc3RlbmVyRnVuYyA9IHRoaXMuI3JlbmRlcmVyLmxpc3RlbihcbiAgICAgICAgICAgIGJ1c3lFbCxcbiAgICAgICAgICAgICdmb2N1c2luJyxcbiAgICAgICAgICAgIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgICBpZiAoIWlzTm9uQmxvY2tpbmcpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKFNreVdhaXRBZGFwdGVyU2VydmljZS5pc1BhZ2VXYWl0QWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLiNjbGVhckRvY3VtZW50Rm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gUHJvcGFnYXRlIHRhYiBuYXZpZ2F0aW9uIGlmIGF0dGVtcHRlZCBpbnRvIHdhaXRlZCBlbGVtZW50XG4gICAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmJsdXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jZm9jdXNOZXh0RWxlbWVudCh0YXJnZXQsIHRoaXMuI2lzU2hpZnQoZXZlbnQpKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKHdhaXRDb21wb25lbnRJZCkge1xuICAgICAgICAgICAgYnVzeUVsZW1lbnRzW3dhaXRDb21wb25lbnRJZF0gPSB7XG4gICAgICAgICAgICAgIGxpc3RlbmVyOiBlbmRMaXN0ZW5lckZ1bmMsXG4gICAgICAgICAgICAgIGJ1c3lFbCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzRWxlbWVudCxcbiAgICAgICAgICAgICAgcmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShidXN5RWwsICdhcmlhLWJ1c3knKTtcblxuICAgICAgICBpZiAoaXNGdWxsUGFnZSkge1xuICAgICAgICAgIFNreVdhaXRBZGFwdGVyU2VydmljZS5pc1BhZ2VXYWl0QWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2FpdENvbXBvbmVudElkICYmIHdhaXRDb21wb25lbnRJZCBpbiBidXN5RWxlbWVudHMpIHtcbiAgICAgICAgICBjb25zdCBidXN5RWxlbWVudCA9IGJ1c3lFbGVtZW50c1t3YWl0Q29tcG9uZW50SWRdO1xuXG4gICAgICAgICAgYnVzeUVsZW1lbnQubGlzdGVuZXIoKTtcblxuICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcmVzdG9yZSBmb2N1cyBlbGVtZW50IGFuZCB0aGUgZm9jdXMgaGFzIG5vdCBtb3ZlZCwgcmVzdG9yZSBmb2N1cy5cbiAgICAgICAgICBpZiAoYnVzeUVsZW1lbnQucmVzdG9yZUZvY3VzQ2hlY2tFbGVtZW50ID09PSBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBidXN5RWxlbWVudC5yZXN0b3JlRm9jdXNFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlbGV0ZSBidXN5RWxlbWVudHNbd2FpdENvbXBvbmVudElkXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICNmb2N1c05leHRFbGVtZW50KHRhcmdldEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBzaGlmdEtleTogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IGZvY3VzYWJsZSA9IHRoaXMuI2dldEZvY3VzYWJsZUVsZW1lbnRzKCk7XG5cbiAgICAvLyBJZiBzaGlmdCB0YWIsIGdvIGluIHRoZSBvdGhlciBkaXJlY3Rpb25cbiAgICBjb25zdCBtb2RpZmllciA9IHNoaWZ0S2V5ID8gLTEgOiAxO1xuXG4gICAgLy8gRmluZCB0aGUgbmV4dCBuYXZpZ2FibGUgZWxlbWVudCB0aGF0IGlzbid0IHdhaXRpbmdcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gZm9jdXNhYmxlLmluZGV4T2YodGFyZ2V0RWxlbWVudCk7XG4gICAgbGV0IGN1ckluZGV4ID0gc3RhcnRpbmdJbmRleCArIG1vZGlmaWVyO1xuICAgIHdoaWxlIChcbiAgICAgIGZvY3VzYWJsZVtjdXJJbmRleF0gJiZcbiAgICAgIHRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICkge1xuICAgICAgY3VySW5kZXggKz0gbW9kaWZpZXI7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZm9jdXNhYmxlW2N1ckluZGV4XSAmJlxuICAgICAgIXRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICkge1xuICAgICAgZm9jdXNhYmxlW2N1ckluZGV4XS5mb2N1cygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUcnkgd3JhcHBpbmcgdGhlIG5hdmlnYXRpb25cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgIGN1ckluZGV4ID0gbW9kaWZpZXIgPiAwID8gMCA6IGZvY3VzYWJsZS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKFxuICAgICAgICBjdXJJbmRleCAhPT0gc3RhcnRpbmdJbmRleCAmJlxuICAgICAgICBmb2N1c2FibGVbY3VySW5kZXhdICYmXG4gICAgICAgIHRoaXMuI2lzRWxlbWVudEJ1c3lPckhpZGRlbihmb2N1c2FibGVbY3VySW5kZXhdKVxuICAgICAgKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICBjdXJJbmRleCArPSBtb2RpZmllcjtcbiAgICAgIH1cblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgaWYgKFxuICAgICAgICBmb2N1c2FibGVbY3VySW5kZXhdICYmXG4gICAgICAgICF0aGlzLiNpc0VsZW1lbnRCdXN5T3JIaWRkZW4oZm9jdXNhYmxlW2N1ckluZGV4XSlcbiAgICAgICkge1xuICAgICAgICBmb2N1c2FibGVbY3VySW5kZXhdLmZvY3VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBObyB2YWxpZCB0YXJnZXQsIHdpcGUgZm9jdXNcbiAgICAgICAgdGhpcy4jY2xlYXJEb2N1bWVudEZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2xlYXIgZm9jdXNhYmxlRWxlbWVudHMgbGlzdFxuICAgIHRoaXMuI2ZvY3VzYWJsZUVsZW1lbnRzID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgI2lzU2hpZnQoZXZlbnQ6IEV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gRGV0ZXJtaW5lIGlmIHNoaWZ0K3RhYiB3YXMgdXNlZCBiYXNlZCBvbiBlbGVtZW50IG9yZGVyXG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLiNnZXRGb2N1c2FibGVFbGVtZW50cygpLmZpbHRlcihcbiAgICAgIChlbGVtKSA9PiAhdGhpcy4jaXNFbGVtZW50SGlkZGVuKGVsZW0pXG4gICAgKTtcblxuICAgIGNvbnN0IHByZXZpb3VzSW5kID0gZWxlbWVudHMuaW5kZXhPZigoZXZlbnQgYXMgYW55KS5yZWxhdGVkVGFyZ2V0KTtcbiAgICBjb25zdCBjdXJyZW50SW5kID0gZWxlbWVudHMuaW5kZXhPZihldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIHByZXZpb3VzSW5kID09PSBjdXJyZW50SW5kICsgMSB8fFxuICAgICAgKHByZXZpb3VzSW5kID09PSAwICYmIGN1cnJlbnRJbmQgPT09IGVsZW1lbnRzLmxlbmd0aCAtIDEpIHx8XG4gICAgICBwcmV2aW91c0luZCA+IGN1cnJlbnRJbmQgfHxcbiAgICAgICEoZXZlbnQgYXMgYW55KS5yZWxhdGVkVGFyZ2V0XG4gICAgKTtcbiAgfVxuXG4gICNpc0VsZW1lbnRIaWRkZW4oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICAgIHJldHVybiBzdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgfHwgc3R5bGUudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbic7XG4gIH1cblxuICAjaXNFbGVtZW50QnVzeU9ySGlkZGVuKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuI2lzRWxlbWVudEhpZGRlbihlbGVtZW50KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYnVzeUVsZW1lbnRzKSkge1xuICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IGJ1c3lFbGVtZW50c1trZXldLmJ1c3lFbDtcbiAgICAgIGlmIChwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQuY29udGFpbnMoZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gICNjbGVhckRvY3VtZW50Rm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICBhY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG5cbiAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7XG4gIH1cblxuICAjZ2V0Rm9jdXNhYmxlRWxlbWVudHMoKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgLy8gS2VlcCB0aGlzIGNhY2hlZCBzbyB3ZSBjYW4gcmVkdWNlIHF1ZXJpZXNcbiAgICBpZiAodGhpcy4jZm9jdXNhYmxlRWxlbWVudHMpIHtcbiAgICAgIHJldHVybiB0aGlzLiNmb2N1c2FibGVFbGVtZW50cztcbiAgICB9XG5cbiAgICAvLyBTZWxlY3QgYWxsIHBvc3NpYmxlIGZvY3VzYWJsZSBlbGVtZW50c1xuICAgIGNvbnN0IGZvY3VzYWJsZUVsZW1lbnRzID1cbiAgICAgICdhW2hyZWZdLCAnICtcbiAgICAgICdhcmVhW2hyZWZdLCAnICtcbiAgICAgIFwiaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdGFiaW5kZXg9Jy0xJ10pLCBcIiArXG4gICAgICBcImJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0nLTEnXSksIFwiICtcbiAgICAgIFwic2VsZWN0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PSctMSddKSwgXCIgK1xuICAgICAgXCJ0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD0nLTEnXSksIFwiICtcbiAgICAgICdpZnJhbWUsIG9iamVjdCwgZW1iZWQsICcgK1xuICAgICAgXCIqW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSctMSddKSwgXCIgK1xuICAgICAgJypbY29udGVudGVkaXRhYmxlPXRydWVdJztcblxuICAgIHRoaXMuI2ZvY3VzYWJsZUVsZW1lbnRzID0gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKFxuICAgICAgZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKGZvY3VzYWJsZUVsZW1lbnRzKSxcbiAgICAgIChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGVsZW1lbnQub2Zmc2V0V2lkdGggPiAwIHx8XG4gICAgICAgICAgZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwIHx8XG4gICAgICAgICAgZWxlbWVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMuI2ZvY3VzYWJsZUVsZW1lbnRzO1xuICB9XG5cbiAgI2NsZWFyTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIFNreVdhaXRBZGFwdGVyU2VydmljZS5pc1BhZ2VXYWl0QWN0aXZlID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYnVzeUVsZW1lbnRzKSkge1xuICAgICAgYnVzeUVsZW1lbnRzW2tleV0ubGlzdGVuZXIoKTtcbiAgICAgIGRlbGV0ZSBidXN5RWxlbWVudHNba2V5XTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -5,10 +5,10 @@ import * as i1 from "./wait.component";
5
5
  * @internal
6
6
  */
7
7
  export class SkyWaitPageComponent {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyWaitPageComponent, selector: "sky-wait-page", inputs: { hasBlockingWait: "hasBlockingWait", hasNonBlockingWait: "hasNonBlockingWait" }, ngImport: i0, template: "<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n >\n </sky-wait>\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n >\n </sky-wait>\n</div>\n", styles: [".sky-wait-page ::ng-deep .sky-wait-mask-loading-fixed{z-index:2000}\n"], dependencies: [{ kind: "component", type: i1.SkyWaitComponent, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }] }); }
8
10
  }
9
- SkyWaitPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- SkyWaitPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyWaitPageComponent, selector: "sky-wait-page", inputs: { hasBlockingWait: "hasBlockingWait", hasNonBlockingWait: "hasNonBlockingWait" }, ngImport: i0, template: "<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n >\n </sky-wait>\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n >\n </sky-wait>\n</div>\n", styles: [".sky-wait-page ::ng-deep .sky-wait-mask-loading-fixed{z-index:2000}\n"], dependencies: [{ kind: "component", type: i1.SkyWaitComponent, selector: "sky-wait", inputs: ["ariaLabel", "isWaiting", "isFullPage", "isNonBlocking", "screenReaderCompletedText"] }] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitPageComponent, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitPageComponent, decorators: [{
12
12
  type: Component,
13
13
  args: [{ selector: 'sky-wait-page', template: "<div class=\"sky-wait-page\">\n <sky-wait\n data-sky-id=\"page-wait-non-blocking\"\n [isFullPage]=\"true\"\n [isNonBlocking]=\"true\"\n [isWaiting]=\"hasNonBlockingWait\"\n >\n </sky-wait>\n <sky-wait\n data-sky-id=\"page-wait-blocking\"\n [isFullPage]=\"true\"\n [isWaiting]=\"hasBlockingWait\"\n >\n </sky-wait>\n</div>\n", styles: [".sky-wait-page ::ng-deep .sky-wait-mask-loading-fixed{z-index:2000}\n"] }]
14
14
  }], propDecorators: { hasBlockingWait: [{
@@ -16,4 +16,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
16
16
  }], hasNonBlockingWait: [{
17
17
  type: Input
18
18
  }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy93YWl0L3dhaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUVqRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxvQkFBb0I7O2lIQUFwQixvQkFBb0I7cUdBQXBCLG9CQUFvQiwrSUNWakMsZ1dBZUE7MkZETGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7OEJBTWxCLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktd2FpdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhaXQtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhaXQtcGFnZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lXYWl0UGFnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoYXNCbG9ja2luZ1dhaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhhc05vbkJsb2NraW5nV2FpdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktd2FpdC1wYWdlXCI+XG4gIDxza3ktd2FpdFxuICAgIGRhdGEtc2t5LWlkPVwicGFnZS13YWl0LW5vbi1ibG9ja2luZ1wiXG4gICAgW2lzRnVsbFBhZ2VdPVwidHJ1ZVwiXG4gICAgW2lzTm9uQmxvY2tpbmddPVwidHJ1ZVwiXG4gICAgW2lzV2FpdGluZ109XCJoYXNOb25CbG9ja2luZ1dhaXRcIlxuICA+XG4gIDwvc2t5LXdhaXQ+XG4gIDxza3ktd2FpdFxuICAgIGRhdGEtc2t5LWlkPVwicGFnZS13YWl0LWJsb2NraW5nXCJcbiAgICBbaXNGdWxsUGFnZV09XCJ0cnVlXCJcbiAgICBbaXNXYWl0aW5nXT1cImhhc0Jsb2NraW5nV2FpdFwiXG4gID5cbiAgPC9za3ktd2FpdD5cbjwvZGl2PlxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy93YWl0L3dhaXQtcGFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUVqRDs7R0FFRztBQU1ILE1BQU0sT0FBTyxvQkFBb0I7OEdBQXBCLG9CQUFvQjtrR0FBcEIsb0JBQW9CLCtJQ1ZqQyxnV0FlQTs7MkZETGEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGVBQWU7OEJBTWxCLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsa0JBQWtCO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktd2FpdC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhaXQtcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dhaXQtcGFnZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lXYWl0UGFnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoYXNCbG9ja2luZ1dhaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGhhc05vbkJsb2NraW5nV2FpdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cbiIsIjxkaXYgY2xhc3M9XCJza3ktd2FpdC1wYWdlXCI+XG4gIDxza3ktd2FpdFxuICAgIGRhdGEtc2t5LWlkPVwicGFnZS13YWl0LW5vbi1ibG9ja2luZ1wiXG4gICAgW2lzRnVsbFBhZ2VdPVwidHJ1ZVwiXG4gICAgW2lzTm9uQmxvY2tpbmddPVwidHJ1ZVwiXG4gICAgW2lzV2FpdGluZ109XCJoYXNOb25CbG9ja2luZ1dhaXRcIlxuICA+XG4gIDwvc2t5LXdhaXQ+XG4gIDxza3ktd2FpdFxuICAgIGRhdGEtc2t5LWlkPVwicGFnZS13YWl0LWJsb2NraW5nXCJcbiAgICBbaXNGdWxsUGFnZV09XCJ0cnVlXCJcbiAgICBbaXNXYWl0aW5nXT1cImhhc0Jsb2NraW5nV2FpdFwiXG4gID5cbiAgPC9za3ktd2FpdD5cbjwvZGl2PlxuIl19
@@ -0,0 +1,171 @@
1
+ import { Component, ElementRef, Input, inject, } from '@angular/core';
2
+ import { SkyLiveAnnouncerService } from '@skyux/core';
3
+ import { SkyLibResourcesService } from '@skyux/i18n';
4
+ import { BehaviorSubject, Subject } from 'rxjs';
5
+ import { take, takeUntil } from 'rxjs/operators';
6
+ import { SkyWaitAdapterService } from './wait-adapter.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ let nextId = 0;
10
+ export class SkyWaitComponent {
11
+ constructor() {
12
+ this.ariaLabelStream = new BehaviorSubject('');
13
+ this.ariaLiveText = '';
14
+ this.screenReaderCompletedTextStream = new BehaviorSubject('');
15
+ this.#id = `sky-wait-${++nextId}`;
16
+ this.#elRef = inject(ElementRef);
17
+ this.#adapterService = inject(SkyWaitAdapterService);
18
+ this.#liveAnnouncer = inject(SkyLiveAnnouncerService);
19
+ this.#resourceSvc = inject(SkyLibResourcesService);
20
+ this.#ngUnsubscribe = new Subject();
21
+ }
22
+ /**
23
+ * The ARIA label for the wait icon.
24
+ * This sets the icon's `aria-label` attribute to provide a text equivalent for screen readers
25
+ * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when an element or page loads and when users tab to a wait icon.
26
+ * The default value varies based on whether the wait is for an element or a page and whether it is a blocking wait. For example, the default for a page-level blocking wait is "Page loading. Please wait."
27
+ * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.
28
+ * "For more information, see the Design tab and the [WAI-ARIA `aria-label` definition](https://www.w3.org/TR/wai-aria/#aria-label).
29
+ */
30
+ set ariaLabel(value) {
31
+ this.#customAriaLabel = value;
32
+ this.#publishAriaLabel();
33
+ }
34
+ /**
35
+ * When set to `true`, wait indication appears on the parent element of the `sky-wait` component.
36
+ */
37
+ set isWaiting(value) {
38
+ if (!this.isFullPage) {
39
+ if (value) {
40
+ this.#adapterService.setWaitBounds(this.#elRef);
41
+ }
42
+ else {
43
+ this.#adapterService.removeWaitBounds(this.#elRef);
44
+ }
45
+ }
46
+ this.#adapterService.setBusyState(this.#elRef, !!this.isFullPage, !!value, !!this.isNonBlocking, this.#id);
47
+ if (value) {
48
+ this.#liveAnnouncer.announce(this.ariaLabelStream.getValue());
49
+ }
50
+ else if (this.#_isWaiting) {
51
+ // NOTE: This should only happen if the wait was previously waiting and no longer is waiting.
52
+ this.#liveAnnouncer.announce(this.screenReaderCompletedTextStream.getValue());
53
+ }
54
+ this.#_isWaiting = value;
55
+ }
56
+ get isWaiting() {
57
+ return this.#_isWaiting;
58
+ }
59
+ /**
60
+ * When set to `true`, wait indication appears on the page level instead of the
61
+ * parent element level. We recommend that you use the `beginBlockingPageWait` or
62
+ * `beginNonBlockingPageWait` functions of the `SkyWaitService` instead of setting this
63
+ * on the component level.
64
+ * @default false
65
+ */
66
+ set isFullPage(value) {
67
+ /* istanbul ignore else: untestable */
68
+ if (value) {
69
+ this.#adapterService.removeWaitBounds(this.#elRef);
70
+ }
71
+ else if (this.isWaiting) {
72
+ this.#adapterService.setWaitBounds(this.#elRef);
73
+ }
74
+ this.#_isFullPage = value;
75
+ this.#publishAriaLabel();
76
+ this.#publishScreenReaderCompletedText();
77
+ }
78
+ get isFullPage() {
79
+ return this.#_isFullPage;
80
+ }
81
+ /**
82
+ * When set to `true`, wait indication appears in the bottom left corner of the element
83
+ * instead of hiding the entire parent element.
84
+ * @default false
85
+ */
86
+ set isNonBlocking(value) {
87
+ this.#_isNonBlocking = value;
88
+ this.#publishAriaLabel();
89
+ }
90
+ get isNonBlocking() {
91
+ return this.#_isNonBlocking;
92
+ }
93
+ /**
94
+ * Screen reader text [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility) when the wait toggles off.
95
+ * The default varies based on whether the wait is for an element or a page.
96
+ * For example, the default for a page-level wait is "Page loading complete."
97
+ * For element-level waits, we recommend that consumers overwrite the default to describe the specific element.
98
+ * For more information, see the Design tab and the [WCAG documentation on status messages](https://www.w3.org/WAI/WCAG21/Understanding/status-messages.html).
99
+ */
100
+ set screenReaderCompletedText(value) {
101
+ this.#customScreenReaderCompletedText = value;
102
+ this.#publishScreenReaderCompletedText();
103
+ }
104
+ #customAriaLabel;
105
+ #customScreenReaderCompletedText;
106
+ #id;
107
+ #elRef;
108
+ #adapterService;
109
+ #liveAnnouncer;
110
+ #resourceSvc;
111
+ #ngUnsubscribe;
112
+ #_isFullPage;
113
+ #_isNonBlocking;
114
+ #_isWaiting;
115
+ ngOnInit() {
116
+ this.#publishAriaLabel();
117
+ this.#publishScreenReaderCompletedText();
118
+ }
119
+ ngOnDestroy() {
120
+ this.#ngUnsubscribe.next();
121
+ this.#ngUnsubscribe.complete();
122
+ }
123
+ #publishAriaLabel() {
124
+ if (this.#customAriaLabel) {
125
+ this.ariaLabelStream.next(this.#customAriaLabel);
126
+ }
127
+ else {
128
+ const type = this.isFullPage ? '_page' : '';
129
+ const blocking = this.isNonBlocking ? '' : '_blocking';
130
+ const key = `skyux_wait${type}${blocking}_aria_alt_text`;
131
+ this.#resourceSvc
132
+ .getString(key)
133
+ .pipe(take(1), takeUntil(this.#ngUnsubscribe))
134
+ .subscribe((value) => {
135
+ this.ariaLabelStream.next(value);
136
+ });
137
+ }
138
+ }
139
+ #publishScreenReaderCompletedText() {
140
+ if (this.#customScreenReaderCompletedText) {
141
+ this.screenReaderCompletedTextStream.next(this.#customScreenReaderCompletedText);
142
+ }
143
+ else {
144
+ const type = this.isFullPage ? '_page' : '';
145
+ const key = `skyux_wait${type}_screen_reader_completed_text`;
146
+ this.#resourceSvc
147
+ .getString(key)
148
+ .pipe(take(1), takeUntil(this.#ngUnsubscribe))
149
+ .subscribe((value) => {
150
+ this.screenReaderCompletedTextStream.next(value);
151
+ });
152
+ }
153
+ }
154
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
155
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyWaitComponent, selector: "sky-wait", inputs: { ariaLabel: "ariaLabel", isWaiting: "isWaiting", isFullPage: "isFullPage", isNonBlocking: "isNonBlocking", screenReaderCompletedText: "screenReaderCompletedText" }, providers: [SkyWaitAdapterService], ngImport: i0, template: "<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n <div\n *ngIf=\"isWaiting\"\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n</div>\n", styles: [".sky-wait-mask-loading-blocking{margin:auto;position:absolute;inset:0;background-color:#ffffffb3;z-index:1000}.sky-wait-mask-loading-fixed{position:fixed}.sky-wait{width:50px;height:50px;margin-top:-25px;margin-left:-25px;position:absolute;top:50%;left:50%}.sky-wait-mask-loading-non-blocking{bottom:0}.sky-wait-mask-loading-non-blocking .sky-wait{inset:auto auto 0 0;margin-left:auto;margin-right:auto}.sky-wait-double-bounce1,.sky-wait-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#72bf44;opacity:.6;position:absolute;top:0;left:0;animation:sk-bounce 2s infinite ease-in-out}.sky-wait-double-bounce2{animation-delay:-1s}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.sky-wait-container.sky-wait-active{position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
156
+ }
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitComponent, decorators: [{
158
+ type: Component,
159
+ args: [{ selector: 'sky-wait', providers: [SkyWaitAdapterService], template: "<div\n class=\"sky-wait-container\"\n [ngClass]=\"{\n 'sky-wait-full-page': isFullPage,\n 'sky-wait-non-blocking': isNonBlocking\n }\"\n>\n <div\n *ngIf=\"isWaiting\"\n class=\"sky-wait-mask\"\n role=\"progressbar\"\n [attr.aria-label]=\"ariaLabelStream | async\"\n [ngClass]=\"{\n 'sky-wait-mask-loading-fixed': isFullPage,\n 'sky-wait-mask-loading-non-blocking': isNonBlocking,\n 'sky-wait-mask-loading-blocking': !isNonBlocking\n }\"\n >\n <div class=\"sky-wait\">\n <div class=\"sky-wait-double-bounce1\"></div>\n <div class=\"sky-wait-double-bounce2\"></div>\n </div>\n </div>\n</div>\n", styles: [".sky-wait-mask-loading-blocking{margin:auto;position:absolute;inset:0;background-color:#ffffffb3;z-index:1000}.sky-wait-mask-loading-fixed{position:fixed}.sky-wait{width:50px;height:50px;margin-top:-25px;margin-left:-25px;position:absolute;top:50%;left:50%}.sky-wait-mask-loading-non-blocking{bottom:0}.sky-wait-mask-loading-non-blocking .sky-wait{inset:auto auto 0 0;margin-left:auto;margin-right:auto}.sky-wait-double-bounce1,.sky-wait-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#72bf44;opacity:.6;position:absolute;top:0;left:0;animation:sk-bounce 2s infinite ease-in-out}.sky-wait-double-bounce2{animation-delay:-1s}@keyframes sk-bounce{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}.sky-wait-container.sky-wait-active{position:relative}\n"] }]
160
+ }], propDecorators: { ariaLabel: [{
161
+ type: Input
162
+ }], isWaiting: [{
163
+ type: Input
164
+ }], isFullPage: [{
165
+ type: Input
166
+ }], isNonBlocking: [{
167
+ type: Input
168
+ }], screenReaderCompletedText: [{
169
+ type: Input
170
+ }] } });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9pbmRpY2F0b3JzL3NyYy9saWIvbW9kdWxlcy93YWl0L3dhaXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUUvRCxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFRZixNQUFNLE9BQU8sZ0JBQWdCO0lBTjdCO1FBK0dTLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFDbEQsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsb0NBQStCLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7UUFJekUsUUFBRyxHQUFHLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUU3QixXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEQsbUJB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QUN6QyxJQUFJLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUN2QyxJQUFJLENBQUMsZ0NBQWdDLENBQ3RDLENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxHQUFHLEdBQUcsYUFBYSxJQUFJLCtCQUErQixDQUFDO1lBQzdELElBQUksQ0FBQyxZQUFZO2lCQUNkLFNBQVMsQ0FBQyxHQUFHLENBQUM7aUJBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUM3QyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0gsQ0FBQzs4R0FwS1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0IsaU5BRmhCLENBQUMscUJBQXFCLENBQUMsMEJDdEJwQyw4b0JBd0JBOzsyRkRBYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsVUFBVSxhQUdULENBQUMscUJBQXFCLENBQUM7OEJBWXZCLFNBQVM7c0JBRG5CLEtBQUs7Z0JBVUssU0FBUztzQkFEbkIsS0FBSztnQkEwQ0ssVUFBVTtzQkFEcEIsS0FBSztnQkF3QkssYUFBYTtzQkFEdkIsS0FBSztnQkFrQksseUJBQXlCO3NCQURuQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lMaXZlQW5ub3VuY2VyU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreUxpYlJlc291cmNlc1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lXYWl0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3dhaXQtYWRhcHRlci5zZXJ2aWNlJztcblxubGV0IG5leHRJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS13YWl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dhaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93YWl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NreVdhaXRBZGFwdGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVdhaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHdhaXQgaWNvbi5cbiAgICogVGhpcyBzZXRzIHRoZSBpY29uJ3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpIHdoZW4gYW4gZWxlbWVudCBvciBwYWdlIGxvYWRzIGFuZCB3aGVuIHVzZXJzIHRhYiB0byBhIHdhaXQgaWNvbi5cbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgdmFyaWVzIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHdhaXQgaXMgZm9yIGFuIGVsZW1lbnQgb3IgYSBwYWdlIGFuZCB3aGV0aGVyIGl0IGlzIGEgYmxvY2tpbmcgd2FpdC4gRm9yIGV4YW1wbGUsIHRoZSBkZWZhdWx0IGZvciBhIHBhZ2UtbGV2ZWwgYmxvY2tpbmcgd2FpdCBpcyBcIlBhZ2UgbG9hZGluZy4gUGxlYXNlIHdhaXQuXCJcbiAgICogRm9yIGVsZW1lbnQtbGV2ZWwgd2FpdHMsIHdlIHJlY29tbWVuZCB0aGF0IGNvbnN1bWVycyBvdmVyd3JpdGUgdGhlIGRlZmF1bHQgdG8gZGVzY3JpYmUgdGhlIHNwZWNpZmljIGVsZW1lbnQuXG4gICAqIFwiRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgRGVzaWduIHRhYiBhbmQgdGhlIFtXQUktQVJJQSBgYXJpYS1sYWJlbGAgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNjdXN0b21BcmlhTGFiZWwgPSB2YWx1ZTtcbiAgICB0aGlzLiNwdWJsaXNoQXJpYUxhYmVsKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCB3YWl0IGluZGljYXRpb24gYXBwZWFycyBvbiB0aGUgcGFyZW50IGVsZW1lbnQgb2YgdGhlIGBza3ktd2FpdGAgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc1dhaXRpbmcodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXRoaXMuaXNGdWxsUGFnZSkge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLnNldFdhaXRCb3VuZHModGhpcy4jZWxSZWYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlV2FpdEJvdW5kcyh0aGlzLiNlbFJlZik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0QnVzeVN0YXRlKFxuICAgICAgdGhpcy4jZWxSZWYsXG4gICAgICAhIXRoaXMuaXNGdWxsUGFnZSxcbiAgICAgICEhdmFsdWUsXG4gICAgICAhIXRoaXMuaXNOb25CbG9ja2luZyxcbiAgICAgIHRoaXMuI2lkXG4gICAgKTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0aGlzLmFyaWFMYWJlbFN0cmVhbS5nZXRWYWx1ZSgpKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuI19pc1dhaXRpbmcpIHtcbiAgICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIGlmIHRoZSB3YWl0IHdhcyBwcmV2aW91c2x5IHdhaXRpbmcgYW5kIG5vIGxvbmdlciBpcyB3YWl0aW5nLlxuICAgICAgdGhpcy4jbGl2ZUFubm91bmNlci5hbm5vdW5jZShcbiAgICAgICAgdGhpcy5zY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0U3RyZWFtLmdldFZhbHVlKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy4jX2lzV2FpdGluZyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1dhaXRpbmcoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19pc1dhaXRpbmc7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCB3YWl0IGluZGljYXRpb24gYXBwZWFycyBvbiB0aGUgcGFnZSBsZXZlbCBpbnN0ZWFkIG9mIHRoZVxuICAgKiBwYXJlbnQgZWxlbWVudCBsZXZlbC4gV2UgcmVjb21tZW5kIHRoYXQgeW91IHVzZSB0aGUgYGJlZ2luQmxvY2tpbmdQYWdlV2FpdGAgb3JcbiAgICogYGJlZ2luTm9uQmxvY2tpbmdQYWdlV2FpdGAgZnVuY3Rpb25zIG9mIHRoZSBgU2t5V2FpdFNlcnZpY2VgIGluc3RlYWQgb2Ygc2V0dGluZyB0aGlzXG4gICAqIG9uIHRoZSBjb21wb25lbnQgbGV2ZWwuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzRnVsbFBhZ2UodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZTogdW50ZXN0YWJsZSAqL1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2UucmVtb3ZlV2FpdEJvdW5kcyh0aGlzLiNlbFJlZik7XG4gICAgfSBlbHNlIGlmICh0aGlzLmlzV2FpdGluZykge1xuICAgICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0V2FpdEJvdW5kcyh0aGlzLiNlbFJlZik7XG4gICAgfVxuXG4gICAgdGhpcy4jX2lzRnVsbFBhZ2UgPSB2YWx1ZTtcbiAgICB0aGlzLiNwdWJsaXNoQXJpYUxhYmVsKCk7XG4gICAgdGhpcy4jcHVibGlzaFNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGdWxsUGFnZSgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzRnVsbFBhZ2U7XG4gIH1cblxuICAvKipcbiAgICogV2hlbiBzZXQgdG8gYHRydWVgLCB3YWl0IGluZGljYXRpb24gYXBwZWFycyBpbiB0aGUgYm90dG9tIGxlZnQgY29ybmVyIG9mIHRoZSBlbGVtZW50XG4gICAqIGluc3RlYWQgb2YgaGlkaW5nIHRoZSBlbnRpcmUgcGFyZW50IGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzTm9uQmxvY2tpbmcodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfaXNOb25CbG9ja2luZyA9IHZhbHVlO1xuICAgIHRoaXMuI3B1Ymxpc2hBcmlhTGFiZWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNOb25CbG9ja2luZygpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX2lzTm9uQmxvY2tpbmc7XG4gIH1cblxuICAvKipcbiAgICogU2NyZWVuIHJlYWRlciB0ZXh0IFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkgd2hlbiB0aGUgd2FpdCB0b2dnbGVzIG9mZi5cbiAgICogIFRoZSBkZWZhdWx0IHZhcmllcyBiYXNlZCBvbiB3aGV0aGVyIHRoZSB3YWl0IGlzIGZvciBhbiBlbGVtZW50IG9yIGEgcGFnZS5cbiAgICogRm9yIGV4YW1wbGUsIHRoZSBkZWZhdWx0IGZvciBhIHBhZ2UtbGV2ZWwgd2FpdCBpcyBcIlBhZ2UgbG9hZGluZyBjb21wbGV0ZS5cIlxuICAgKiBGb3IgZWxlbWVudC1sZXZlbCB3YWl0cywgd2UgcmVjb21tZW5kIHRoYXQgY29uc3VtZXJzIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdCB0byBkZXNjcmliZSB0aGUgc3BlY2lmaWMgZWxlbWVudC5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgRGVzaWduIHRhYiBhbmQgdGhlIFtXQ0FHIGRvY3VtZW50YXRpb24gb24gc3RhdHVzIG1lc3NhZ2VzXShodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMS9VbmRlcnN0YW5kaW5nL3N0YXR1cy1tZXNzYWdlcy5odG1sKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jY3VzdG9tU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCA9IHZhbHVlO1xuICAgIHRoaXMuI3B1Ymxpc2hTY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgYXJpYUxhYmVsU3RyZWFtID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIGFyaWFMaXZlVGV4dCA9ICcnO1xuICBwdWJsaWMgc2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dFN0cmVhbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgI2N1c3RvbUFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjY3VzdG9tU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjaWQgPSBgc2t5LXdhaXQtJHsrK25leHRJZH1gO1xuXG4gICNlbFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVdhaXRBZGFwdGVyU2VydmljZSk7XG4gICNsaXZlQW5ub3VuY2VyID0gaW5qZWN0KFNreUxpdmVBbm5vdW5jZXJTZXJ2aWNlKTtcbiAgI3Jlc291cmNlU3ZjID0gaW5qZWN0KFNreUxpYlJlc291cmNlc1NlcnZpY2UpO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI19pc0Z1bGxQYWdlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAjX2lzTm9uQmxvY2tpbmc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICNfaXNXYWl0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiNwdWJsaXNoQXJpYUxhYmVsKCk7XG4gICAgdGhpcy4jcHVibGlzaFNjcmVlblJlYWRlckNvbXBsZXRlZFRleHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjcHVibGlzaEFyaWFMYWJlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VzdG9tQXJpYUxhYmVsKSB7XG4gICAgICB0aGlzLmFyaWFMYWJlbFN0cmVhbS5uZXh0KHRoaXMuI2N1c3RvbUFyaWFMYWJlbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmlzRnVsbFBhZ2UgPyAnX3BhZ2UnIDogJyc7XG4gICAgICBjb25zdCBibG9ja2luZyA9IHRoaXMuaXNOb25CbG9ja2luZyA/ICcnIDogJ19ibG9ja2luZyc7XG4gICAgICBjb25zdCBrZXkgPSBgc2t5dXhfd2FpdCR7dHlwZX0ke2Jsb2NraW5nfV9hcmlhX2FsdF90ZXh0YDtcbiAgICAgIHRoaXMuI3Jlc291cmNlU3ZjXG4gICAgICAgIC5nZXRTdHJpbmcoa2V5KVxuICAgICAgICAucGlwZSh0YWtlKDEpLCB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgdGhpcy5hcmlhTGFiZWxTdHJlYW0ubmV4dCh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gICNwdWJsaXNoU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jY3VzdG9tU2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dCkge1xuICAgICAgdGhpcy5zY3JlZW5SZWFkZXJDb21wbGV0ZWRUZXh0U3RyZWFtLm5leHQoXG4gICAgICAgIHRoaXMuI2N1c3RvbVNjcmVlblJlYWRlckNvbXBsZXRlZFRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLmlzRnVsbFBhZ2UgPyAnX3BhZ2UnIDogJyc7XG4gICAgICBjb25zdCBrZXkgPSBgc2t5dXhfd2FpdCR7dHlwZX1fc2NyZWVuX3JlYWRlcl9jb21wbGV0ZWRfdGV4dGA7XG4gICAgICB0aGlzLiNyZXNvdXJjZVN2Y1xuICAgICAgICAuZ2V0U3RyaW5nKGtleSlcbiAgICAgICAgLnBpcGUodGFrZSgxKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2NyZWVuUmVhZGVyQ29tcGxldGVkVGV4dFN0cmVhbS5uZXh0KHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LXdhaXQtY29udGFpbmVyXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdza3ktd2FpdC1mdWxsLXBhZ2UnOiBpc0Z1bGxQYWdlLFxuICAgICdza3ktd2FpdC1ub24tYmxvY2tpbmcnOiBpc05vbkJsb2NraW5nXG4gIH1cIlxuPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJpc1dhaXRpbmdcIlxuICAgIGNsYXNzPVwic2t5LXdhaXQtbWFza1wiXG4gICAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFN0cmVhbSB8IGFzeW5jXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LXdhaXQtbWFzay1sb2FkaW5nLWZpeGVkJzogaXNGdWxsUGFnZSxcbiAgICAgICdza3ktd2FpdC1tYXNrLWxvYWRpbmctbm9uLWJsb2NraW5nJzogaXNOb25CbG9ja2luZyxcbiAgICAgICdza3ktd2FpdC1tYXNrLWxvYWRpbmctYmxvY2tpbmcnOiAhaXNOb25CbG9ja2luZ1xuICAgIH1cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInNreS13YWl0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2t5LXdhaXQtZG91YmxlLWJvdW5jZTFcIj48L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJza3ktd2FpdC1kb3VibGUtYm91bmNlMlwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -6,11 +6,11 @@ import { SkyWaitPageComponent } from './wait-page.component';
6
6
  import { SkyWaitComponent } from './wait.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class SkyWaitModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitModule, declarations: [SkyWaitComponent, SkyWaitPageComponent], imports: [CommonModule, SkyI18nModule, SkyIndicatorsResourcesModule], exports: [SkyWaitComponent] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitModule, imports: [CommonModule, SkyI18nModule, SkyIndicatorsResourcesModule] }); }
9
12
  }
10
- SkyWaitModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- SkyWaitModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitModule, declarations: [SkyWaitComponent, SkyWaitPageComponent], imports: [CommonModule, SkyI18nModule, SkyIndicatorsResourcesModule], exports: [SkyWaitComponent] });
12
- SkyWaitModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitModule, imports: [CommonModule, SkyI18nModule, SkyIndicatorsResourcesModule] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyWaitModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyWaitModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [SkyWaitComponent, SkyWaitPageComponent],
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
18
18
  exports: [SkyWaitComponent],
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU9wRCxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQUpULGdCQUFnQixFQUFFLG9CQUFvQixhQUMzQyxZQUFZLEVBQUUsYUFBYSxFQUFFLDRCQUE0QixhQUN6RCxnQkFBZ0I7MkdBRWYsYUFBYSxZQUhkLFlBQVksRUFBRSxhQUFhLEVBQUUsNEJBQTRCOzJGQUd4RCxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO29CQUN0RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLDRCQUE0QixDQUFDO29CQUNwRSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreUluZGljYXRvcnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWluZGljYXRvcnMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVdhaXRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi93YWl0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVdhaXRDb21wb25lbnQgfSBmcm9tICcuL3dhaXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5V2FpdENvbXBvbmVudCwgU2t5V2FpdFBhZ2VDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lJMThuTW9kdWxlLCBTa3lJbmRpY2F0b3JzUmVzb3VyY2VzTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreVdhaXRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lXYWl0TW9kdWxlIHt9XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvaW5kaWNhdG9ycy9zcmMvbGliL21vZHVsZXMvd2FpdC93YWl0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQU9wRCxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsaUJBSlQsZ0JBQWdCLEVBQUUsb0JBQW9CLGFBQzNDLFlBQVksRUFBRSxhQUFhLEVBQUUsNEJBQTRCLGFBQ3pELGdCQUFnQjsrR0FFZixhQUFhLFlBSGQsWUFBWSxFQUFFLGFBQWEsRUFBRSw0QkFBNEI7OzJGQUd4RCxhQUFhO2tCQUx6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixDQUFDO29CQUN0RCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLDRCQUE0QixDQUFDO29CQUNwRSxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUkxOG5Nb2R1bGUgfSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7IFNreUluZGljYXRvcnNSZXNvdXJjZXNNb2R1bGUgfSBmcm9tICcuLi9zaGFyZWQvc2t5LWluZGljYXRvcnMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVdhaXRQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi93YWl0LXBhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFNreVdhaXRDb21wb25lbnQgfSBmcm9tICcuL3dhaXQuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2t5V2FpdENvbXBvbmVudCwgU2t5V2FpdFBhZ2VDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTa3lJMThuTW9kdWxlLCBTa3lJbmRpY2F0b3JzUmVzb3VyY2VzTW9kdWxlXSxcbiAgZXhwb3J0czogW1NreVdhaXRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lXYWl0TW9kdWxlIHt9XG4iXX0=