@skyux/tabs 4.6.9 → 5.0.0-beta.4

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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/bundles/skyux-tabs-testing.umd.js +324 -221
  3. package/bundles/skyux-tabs-testing.umd.js.map +1 -1
  4. package/bundles/skyux-tabs.umd.js +657 -782
  5. package/bundles/skyux-tabs.umd.js.map +1 -1
  6. package/documentation.json +5509 -0
  7. package/esm2015/modules/sectioned-form/sectioned-form-section.component.js +29 -32
  8. package/esm2015/modules/sectioned-form/sectioned-form.component.js +52 -41
  9. package/esm2015/modules/sectioned-form/sectioned-form.module.js +30 -19
  10. package/esm2015/modules/sectioned-form/sectioned-form.service.js +9 -8
  11. package/esm2015/modules/shared/sky-tabs-resources.module.js +41 -0
  12. package/esm2015/modules/tabs/tab-button.component.js +41 -47
  13. package/esm2015/modules/tabs/tab-index.js +2 -1
  14. package/esm2015/modules/tabs/tab.component.js +31 -41
  15. package/esm2015/modules/tabs/tabs.module.js +45 -23
  16. package/esm2015/modules/tabs/tabset-active-tab-unregistered-args.js +2 -1
  17. package/esm2015/modules/tabs/tabset-adapter.service.js +9 -8
  18. package/esm2015/modules/tabs/tabset-buttons-display-mode.js +2 -1
  19. package/esm2015/modules/tabs/tabset-nav-button.component.js +21 -26
  20. package/esm2015/modules/tabs/tabset-permalink.service.js +11 -15
  21. package/esm2015/modules/tabs/tabset-style.js +2 -1
  22. package/esm2015/modules/tabs/tabset-tab-indexes-change.js +2 -1
  23. package/esm2015/modules/tabs/tabset.component.js +56 -57
  24. package/esm2015/modules/tabs/tabset.service.js +10 -8
  25. package/esm2015/modules/vertical-tabset/vertical-tab-media-query.service.js +9 -8
  26. package/esm2015/modules/vertical-tabset/vertical-tab.component.js +57 -65
  27. package/esm2015/modules/vertical-tabset/vertical-tabset-adapter.service.js +10 -12
  28. package/esm2015/modules/vertical-tabset/vertical-tabset-group.component.js +75 -54
  29. package/esm2015/modules/vertical-tabset/vertical-tabset.component.js +70 -57
  30. package/esm2015/modules/vertical-tabset/vertical-tabset.module.js +47 -30
  31. package/esm2015/modules/vertical-tabset/vertical-tabset.service.js +19 -16
  32. package/esm2015/public-api.js +23 -0
  33. package/esm2015/skyux-tabs.js +2 -18
  34. package/esm2015/testing/public-api.js +3 -0
  35. package/esm2015/testing/skyux-tabs-testing.js +2 -2
  36. package/esm2015/testing/tabs/tab-fixture-tab.js +2 -1
  37. package/esm2015/testing/tabs/tabset-fixture.js +1 -1
  38. package/fesm2015/skyux-tabs-testing.js.map +1 -1
  39. package/fesm2015/skyux-tabs.js +596 -518
  40. package/fesm2015/skyux-tabs.js.map +1 -1
  41. package/modules/sectioned-form/sectioned-form-section.component.d.ts +3 -0
  42. package/modules/sectioned-form/sectioned-form.component.d.ts +3 -0
  43. package/modules/sectioned-form/sectioned-form.module.d.ts +9 -0
  44. package/modules/sectioned-form/sectioned-form.service.d.ts +3 -0
  45. package/modules/shared/sky-tabs-resources.module.d.ts +14 -0
  46. package/modules/tabs/tab-button.component.d.ts +4 -1
  47. package/modules/tabs/tab.component.d.ts +4 -1
  48. package/modules/tabs/tabs.module.d.ts +15 -0
  49. package/modules/tabs/tabset-adapter.service.d.ts +3 -0
  50. package/modules/tabs/tabset-nav-button.component.d.ts +3 -0
  51. package/modules/tabs/tabset-permalink.service.d.ts +3 -0
  52. package/modules/tabs/tabset.component.d.ts +4 -1
  53. package/modules/tabs/tabset.service.d.ts +3 -0
  54. package/modules/vertical-tabset/vertical-tab-media-query.service.d.ts +3 -0
  55. package/modules/vertical-tabset/vertical-tab.component.d.ts +3 -0
  56. package/modules/vertical-tabset/vertical-tabset-adapter.service.d.ts +3 -0
  57. package/modules/vertical-tabset/vertical-tabset-group.component.d.ts +3 -0
  58. package/modules/vertical-tabset/vertical-tabset.component.d.ts +3 -0
  59. package/modules/vertical-tabset/vertical-tabset.module.d.ts +11 -0
  60. package/modules/vertical-tabset/vertical-tabset.service.d.ts +3 -0
  61. package/package.json +14 -29
  62. package/public-api.d.ts +16 -0
  63. package/skyux-tabs.d.ts +2 -17
  64. package/testing/package.json +2 -5
  65. package/testing/{public_api.d.ts → public-api.d.ts} +0 -0
  66. package/testing/skyux-tabs-testing.d.ts +2 -1
  67. package/CHANGELOG.md +0 -218
  68. package/bundles/skyux-tabs-testing.umd.min.js +0 -16
  69. package/bundles/skyux-tabs-testing.umd.min.js.map +0 -1
  70. package/bundles/skyux-tabs.umd.min.js +0 -16
  71. package/bundles/skyux-tabs.umd.min.js.map +0 -1
  72. package/esm2015/modules/shared/tabs-resources.module.js +0 -17
  73. package/esm2015/plugin-resources/tabs-resources-provider.js +0 -16
  74. package/esm2015/public_api.js +0 -10
  75. package/esm2015/testing/public_api.js +0 -2
  76. package/esm5/modules/sectioned-form/sectioned-form-section.component.js +0 -84
  77. package/esm5/modules/sectioned-form/sectioned-form.component.js +0 -111
  78. package/esm5/modules/sectioned-form/sectioned-form.module.js +0 -31
  79. package/esm5/modules/sectioned-form/sectioned-form.service.js +0 -35
  80. package/esm5/modules/shared/tabs-resources.module.js +0 -20
  81. package/esm5/modules/tabs/tab-button.component.js +0 -72
  82. package/esm5/modules/tabs/tab-index.js +0 -1
  83. package/esm5/modules/tabs/tab.component.js +0 -173
  84. package/esm5/modules/tabs/tabs.module.js +0 -44
  85. package/esm5/modules/tabs/tabset-active-tab-unregistered-args.js +0 -1
  86. package/esm5/modules/tabs/tabset-adapter.service.js +0 -58
  87. package/esm5/modules/tabs/tabset-buttons-display-mode.js +0 -1
  88. package/esm5/modules/tabs/tabset-nav-button.component.js +0 -145
  89. package/esm5/modules/tabs/tabset-permalink.service.js +0 -129
  90. package/esm5/modules/tabs/tabset-style.js +0 -1
  91. package/esm5/modules/tabs/tabset-tab-indexes-change.js +0 -1
  92. package/esm5/modules/tabs/tabset.component.js +0 -434
  93. package/esm5/modules/tabs/tabset.service.js +0 -122
  94. package/esm5/modules/vertical-tabset/vertical-tab-media-query.service.js +0 -76
  95. package/esm5/modules/vertical-tabset/vertical-tab.component.js +0 -214
  96. package/esm5/modules/vertical-tabset/vertical-tabset-adapter.service.js +0 -51
  97. package/esm5/modules/vertical-tabset/vertical-tabset-group.component.js +0 -119
  98. package/esm5/modules/vertical-tabset/vertical-tabset.component.js +0 -145
  99. package/esm5/modules/vertical-tabset/vertical-tabset.module.js +0 -46
  100. package/esm5/modules/vertical-tabset/vertical-tabset.service.js +0 -176
  101. package/esm5/plugin-resources/tabs-resources-provider.js +0 -17
  102. package/esm5/public_api.js +0 -10
  103. package/esm5/skyux-tabs.js +0 -21
  104. package/esm5/testing/public_api.js +0 -2
  105. package/esm5/testing/skyux-tabs-testing.js +0 -5
  106. package/esm5/testing/tabs/tab-fixture-tab.js +0 -1
  107. package/esm5/testing/tabs/tabset-fixture.js +0 -168
  108. package/fesm5/skyux-tabs-testing.js +0 -174
  109. package/fesm5/skyux-tabs-testing.js.map +0 -1
  110. package/fesm5/skyux-tabs.js +0 -2182
  111. package/fesm5/skyux-tabs.js.map +0 -1
  112. package/modules/shared/tabs-resources.module.d.ts +0 -2
  113. package/plugin-resources/tabs-resources-provider.d.ts +0 -5
  114. package/public_api.d.ts +0 -9
  115. package/skyux-tabs.metadata.json +0 -1
  116. package/src/assets/img/guidelines/tabs/tabs-anatomy.png +0 -0
  117. package/src/assets/img/guidelines/tabs/tabs-behavior-1.png +0 -0
  118. package/src/assets/img/guidelines/tabs/tabs-layout-1.png +0 -0
  119. package/src/assets/img/guidelines/tabs/tabs-layout-2.png +0 -0
  120. package/src/assets/img/guidelines/tabs/tabs-layout-3.png +0 -0
  121. package/src/assets/img/guidelines/tabs/tabs-layout-4.png +0 -0
  122. package/src/assets/img/guidelines/tabs/tabs-options-1.png +0 -0
  123. package/src/assets/img/guidelines/tabs/tabs-options-2.png +0 -0
  124. package/src/assets/img/guidelines/tabs/tabs-state-collapsed-closed.png +0 -0
  125. package/src/assets/img/guidelines/tabs/tabs-state-collapsed-open.png +0 -0
  126. package/src/assets/img/guidelines/tabs/tabs-state-hover.png +0 -0
  127. package/src/assets/img/guidelines/tabs/tabs-state-selected.png +0 -0
  128. package/src/assets/img/guidelines/tabs/tabs-state-unselected.png +0 -0
  129. package/src/assets/img/guidelines/tabs/tabs-usage-1.png +0 -0
  130. package/src/assets/img/guidelines/tabs/tabs-usage-2.png +0 -0
  131. package/src/assets/img/guidelines/tabs/tabs-usage-3.png +0 -0
  132. package/src/assets/img/guidelines/tabs/tabs-usage-4.png +0 -0
  133. package/src/assets/img/guidelines/tabs/tabs-usage-5.png +0 -0
  134. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-anatomy-1.png +0 -0
  135. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-anatomy-2.png +0 -0
  136. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-layout-1.png +0 -0
  137. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-hover.png +0 -0
  138. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-selected-group.png +0 -0
  139. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-selected.png +0 -0
  140. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-unselected-group.png +0 -0
  141. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-state-unselected.png +0 -0
  142. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-1.png +0 -0
  143. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-2.png +0 -0
  144. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-3.png +0 -0
  145. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-4.png +0 -0
  146. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-5.png +0 -0
  147. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-6.png +0 -0
  148. package/src/assets/img/guidelines/vertical-tabs/vertical-tabs-usage-7.png +0 -0
  149. package/src/assets/locales/resources_en_US.json +0 -26
  150. package/testing/skyux-tabs-testing.metadata.json +0 -1
@@ -1,434 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, OnDestroy, Output, QueryList, ViewEncapsulation } from '@angular/core';
3
- import { combineLatest, race, Subject } from 'rxjs';
4
- import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
5
- import { SkyTabComponent } from './tab.component';
6
- import { SkyTabsetAdapterService } from './tabset-adapter.service';
7
- import { SkyTabsetPermalinkService } from './tabset-permalink.service';
8
- import { SkyTabsetService } from './tabset.service';
9
- var SkyTabsetComponent = /** @class */ (function () {
10
- function SkyTabsetComponent(changeDetector, elementRef, adapterService, permalinkService, tabsetService) {
11
- this.changeDetector = changeDetector;
12
- this.elementRef = elementRef;
13
- this.adapterService = adapterService;
14
- this.permalinkService = permalinkService;
15
- this.tabsetService = tabsetService;
16
- /**
17
- * Fires when the active tab changes. This event emits the index of the active tab.
18
- */
19
- this.activeChange = new EventEmitter();
20
- /**
21
- * Fires when users click the button to add a new tab.
22
- * The new tab button is added to the tab area when you specify a listener for this event.
23
- */
24
- this.newTab = new EventEmitter();
25
- /**
26
- * Fires when users click the button to open a tab.
27
- * The open tab button is added to the tab area when you specify a listener for this event.
28
- */
29
- this.openTab = new EventEmitter();
30
- /**
31
- * Fires when any tab's `tabIndex` value changes.
32
- */
33
- this.tabIndexesChange = new EventEmitter();
34
- this.tabButtons = [];
35
- this.ngUnsubscribe = new Subject();
36
- this.tabComponentsStateChangeUnsubscribe = new Subject();
37
- }
38
- Object.defineProperty(SkyTabsetComponent.prototype, "active", {
39
- get: function () {
40
- return this._active;
41
- },
42
- /**
43
- * Activates a tab by its `tabIndex` property.
44
- */
45
- set: function (value) {
46
- var _this = this;
47
- if (value === undefined ||
48
- this.tabsetService.tabIndexesEqual(value, this._active)) {
49
- return;
50
- }
51
- this._active = value;
52
- if (this.tabs) {
53
- this.tabsetService.setActiveTabIndex(value);
54
- }
55
- else {
56
- // On init, wait for children tabs to render before broadcasting the active tab index.
57
- setTimeout(function () {
58
- if (_this.tabsetService.isValidTabIndex(value)) {
59
- // On init, yield to the permalink ID, if it exists.
60
- if (_this.getActiveTabIndexByPermalinkId() === undefined) {
61
- _this.tabsetService.setActiveTabIndex(value);
62
- }
63
- }
64
- else {
65
- // Activate the first tab if the new tab index is invalid.
66
- _this._active = _this.tabsetService.activateFirstTab();
67
- }
68
- });
69
- }
70
- },
71
- enumerable: true,
72
- configurable: true
73
- });
74
- Object.defineProperty(SkyTabsetComponent.prototype, "permalinkId", {
75
- get: function () {
76
- return this._permalinkId || '';
77
- },
78
- /**
79
- * Distinguishes a tabset's unique state in the URL by generating a query parameter
80
- * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.
81
- * The query parameter's value is parsed automatically from the selected tab's heading text,
82
- * but you can supply a custom query parameter value for each tab with its `permalinkValue`.
83
- */
84
- set: function (value) {
85
- if (!value) {
86
- return;
87
- }
88
- var sanitized = this.permalinkService.urlify(value);
89
- this._permalinkId = sanitized + "-active-tab";
90
- },
91
- enumerable: true,
92
- configurable: true
93
- });
94
- Object.defineProperty(SkyTabsetComponent.prototype, "tabStyle", {
95
- get: function () {
96
- return this._tabStyle || 'tabs';
97
- },
98
- /**
99
- * Specifies the behavior for a series of tabs.
100
- * @deprecated The property was designed to create wizards by setting tabStyle="wizard" on tabsets in modals,
101
- * but this wizard implementation was replaced by the
102
- * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).
103
- * @default 'tabs'
104
- */
105
- set: function (value) {
106
- /*istanbul ignore else*/
107
- if (value && value.toLowerCase() === 'wizard') {
108
- console.warn('The tabset wizard is deprecated. Please implement the new approach using ' +
109
- 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.');
110
- }
111
- this._tabStyle = value;
112
- },
113
- enumerable: true,
114
- configurable: true
115
- });
116
- Object.defineProperty(SkyTabsetComponent.prototype, "tabDisplayMode", {
117
- get: function () {
118
- return this._tabDisplayMode || 'tabs';
119
- },
120
- set: function (value) {
121
- this._tabDisplayMode = value;
122
- this.changeDetector.markForCheck();
123
- },
124
- enumerable: true,
125
- configurable: true
126
- });
127
- SkyTabsetComponent.prototype.ngAfterViewInit = function () {
128
- var _this = this;
129
- this.initTabComponents();
130
- this.listenTabComponentsStructuralChange();
131
- var initialTabIndex = this.getInitialTabIndex();
132
- this.tabsetService.setActiveTabIndex(initialTabIndex);
133
- this.listenTabButtonsOverflowChange();
134
- this.listenLocationPopStateChange();
135
- // If the currently active tab is getting unregistered, activate the next one.
136
- this.tabsetService.activeTabUnregistered
137
- .pipe(takeUntil(this.ngUnsubscribe))
138
- .subscribe(function (tab) {
139
- // Wait for the new tabs to render before activating.
140
- setTimeout(function () {
141
- _this.tabsetService.activateNearestTab(tab.arrayIndex);
142
- });
143
- });
144
- // Let the tabset render the initial active index before listening for changes.
145
- setTimeout(function () {
146
- _this.listenTabComponentsStateChange();
147
- _this.listenActiveIndexChange();
148
- _this.permalinkService.init();
149
- });
150
- };
151
- SkyTabsetComponent.prototype.ngOnDestroy = function () {
152
- this.ngUnsubscribe.next();
153
- this.ngUnsubscribe.complete();
154
- this.unsubscribeTabComponentsStateChange();
155
- this.permalinkService.clearParam(this.permalinkId);
156
- };
157
- SkyTabsetComponent.prototype.onWindowResize = function () {
158
- this.adapterService.detectOverflow();
159
- };
160
- SkyTabsetComponent.prototype.onTabCloseClick = function (tabButton) {
161
- var _this = this;
162
- var tabComponent = this.tabs.find(function (tab) {
163
- return _this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex);
164
- });
165
- tabComponent.close.emit();
166
- };
167
- SkyTabsetComponent.prototype.onTabButtonClick = function (tabButton) {
168
- this.tabsetService.setActiveTabIndex(tabButton.tabIndex);
169
- };
170
- SkyTabsetComponent.prototype.onNewTabClick = function () {
171
- this.newTab.emit();
172
- };
173
- SkyTabsetComponent.prototype.onOpenTabClick = function () {
174
- this.openTab.emit();
175
- };
176
- /**
177
- * Sets the initial active tab index based on the following criteria.
178
- * 1. Does the URL include a query param that reflects this tabset's active tab?
179
- * 2. Does one of the tab components have their `active` property set to `true`?
180
- * 3. Is the tabset component's `active` property set to a specific tab index?
181
- */
182
- SkyTabsetComponent.prototype.getInitialTabIndex = function () {
183
- var _a;
184
- var activeIndex = this.getActiveTabIndexByPermalinkId();
185
- if (activeIndex === undefined) {
186
- activeIndex = (_a = this.getActiveTabComponent()) === null || _a === void 0 ? void 0 : _a.tabIndex;
187
- if (activeIndex === undefined) {
188
- activeIndex = this.active;
189
- }
190
- }
191
- return activeIndex;
192
- };
193
- SkyTabsetComponent.prototype.listenActiveIndexChange = function () {
194
- var _this = this;
195
- this.tabsetService.activeTabIndex
196
- .pipe(distinctUntilChanged(), takeUntil(this.ngUnsubscribe))
197
- .subscribe(function (activeIndex) {
198
- _this.updateTabsetComponent(activeIndex);
199
- });
200
- };
201
- SkyTabsetComponent.prototype.listenTabComponentsStructuralChange = function () {
202
- var _this = this;
203
- this.tabs.changes
204
- .pipe(takeUntil(this.ngUnsubscribe))
205
- .subscribe(function () {
206
- _this.resetTabComponents();
207
- });
208
- };
209
- SkyTabsetComponent.prototype.listenTabComponentsStateChange = function () {
210
- var _this = this;
211
- combineLatest(this.tabs.map(function (tab) { return tab.activeChange; }))
212
- .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))
213
- .subscribe(function () {
214
- // Wait for the tab components to render changes before finding the active one.
215
- setTimeout(function () {
216
- var _a;
217
- var tabIndex = (_a = _this.getActiveTabComponent()) === null || _a === void 0 ? void 0 : _a.tabIndex;
218
- _this.tabsetService.setActiveTabIndex(tabIndex);
219
- });
220
- });
221
- combineLatest(this.tabs.map(function (tab) { return tab.tabIndexChange; }))
222
- .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))
223
- .subscribe(function () {
224
- // Don't emit the first change.
225
- if (_this.lastActiveTabIndex !== undefined) {
226
- // Wait for the tab components to render changes before updating the view.
227
- setTimeout(function () {
228
- _this.updateTabsetComponent(_this.tabsetService.currentActiveTabIndex, true);
229
- _this.emitTabIndexChange();
230
- });
231
- }
232
- });
233
- combineLatest(this.tabs.map(function (tab) { return tab.stateChange; }))
234
- .pipe(takeUntil(race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)))
235
- .subscribe(function () {
236
- // Wait for the tab components to render changes before finding the active one.
237
- setTimeout(function () {
238
- _this.updateTabsetComponent(_this.tabsetService.currentActiveTabIndex, true);
239
- });
240
- });
241
- };
242
- SkyTabsetComponent.prototype.initTabComponents = function () {
243
- this.tabs.forEach(function (tab) { return tab.init(); });
244
- };
245
- SkyTabsetComponent.prototype.resetTabComponents = function () {
246
- var _a;
247
- this.unsubscribeTabComponentsStateChange();
248
- this.tabsetService.unregisterAll();
249
- // If there are no tab components, do a hard reset of the view.
250
- if (this.tabs.length === 0) {
251
- this.updateTabsetComponent(0, true);
252
- return;
253
- }
254
- this.initTabComponents();
255
- var activeIndex = (_a = this.getActiveTabComponent()) === null || _a === void 0 ? void 0 : _a.tabIndex;
256
- this.tabsetService.setActiveTabIndex(activeIndex, {
257
- emitChange: false
258
- });
259
- this.listenTabComponentsStateChange();
260
- };
261
- SkyTabsetComponent.prototype.emitTabIndexChange = function () {
262
- this.tabIndexesChange.emit({
263
- tabs: this.tabs.map(function (tab) { return ({
264
- tabHeading: tab.tabHeading,
265
- tabIndex: tab.tabIndex
266
- }); })
267
- });
268
- };
269
- SkyTabsetComponent.prototype.unsubscribeTabComponentsStateChange = function () {
270
- this.tabComponentsStateChangeUnsubscribe.next();
271
- this.tabComponentsStateChangeUnsubscribe.complete();
272
- this.tabComponentsStateChangeUnsubscribe = new Subject();
273
- };
274
- SkyTabsetComponent.prototype.listenTabButtonsOverflowChange = function () {
275
- var _this = this;
276
- this.adapterService.registerTabset(this.elementRef);
277
- this.adapterService.overflowChange
278
- .pipe(takeUntil(this.ngUnsubscribe))
279
- .subscribe(function (isOverflowing) {
280
- _this.tabDisplayMode = (isOverflowing) ? 'dropdown' : 'tabs';
281
- _this.changeDetector.markForCheck();
282
- });
283
- };
284
- /**
285
- * Listen for back/forward history button presses to detect query param changes in the URL.
286
- */
287
- SkyTabsetComponent.prototype.listenLocationPopStateChange = function () {
288
- var _this = this;
289
- this.permalinkService.popStateChange
290
- .pipe(takeUntil(this.ngUnsubscribe))
291
- .subscribe(function () {
292
- _this.setActiveTabIndexByPermalinkId();
293
- });
294
- };
295
- SkyTabsetComponent.prototype.setActiveTabIndexByPermalinkId = function () {
296
- var activeIndex = this.getActiveTabIndexByPermalinkId();
297
- this.tabsetService.setActiveTabIndex(activeIndex);
298
- };
299
- SkyTabsetComponent.prototype.getActiveTabIndexByPermalinkId = function () {
300
- var _a;
301
- if (this.permalinkId) {
302
- var paramValue_1 = this.permalinkService.getParam(this.permalinkId);
303
- if (paramValue_1) {
304
- return (_a = this.tabs.find(function (tab) { return tab.permalinkValue === paramValue_1; })) === null || _a === void 0 ? void 0 : _a.tabIndex;
305
- }
306
- }
307
- };
308
- SkyTabsetComponent.prototype.getActiveTabComponent = function () {
309
- return this.tabs.toArray().reverse().find(function (tab) { return tab.active === true; });
310
- };
311
- SkyTabsetComponent.prototype.createTabButtons = function (activeIndex) {
312
- var _this = this;
313
- return this.tabs.map(function (tab) { return ({
314
- active: _this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),
315
- closeable: tab.closeable,
316
- ariaControls: tab.tabPanelId,
317
- disabled: tab.disabled,
318
- /*tslint:disable-next-line:no-null-keyword*/
319
- buttonHref: (tab.disabled) ? null : _this.permalinkService.getParamHref(_this.permalinkId, tab.permalinkValue),
320
- buttonId: tab.tabButtonId,
321
- buttonTextCount: tab.tabHeaderCount,
322
- buttonText: tab.tabHeading,
323
- tabIndex: tab.tabIndex
324
- }); });
325
- };
326
- SkyTabsetComponent.prototype.updateTabButtons = function (activeIndex) {
327
- var _this = this;
328
- this.tabButtons.forEach(function (button) {
329
- button.active = _this.tabsetService.tabIndexesEqual(button.tabIndex, activeIndex);
330
- });
331
- };
332
- /**
333
- * Updates the UI and state of the tabset component after the tab index or
334
- * tab components have changed.
335
- * @param activeIndex The currently active tab index.
336
- * @param regenerateTabButtons Indicates if tab button view models should be regenerated.
337
- * Setting this value to `false` will simply update the existing tab buttons. Setting this value
338
- * to `true` is only necessary when the underlying tab components have changed and the tab
339
- * buttons must reflect those changes.
340
- */
341
- SkyTabsetComponent.prototype.updateTabsetComponent = function (activeIndex, regenerateTabButtons) {
342
- var _this = this;
343
- if (regenerateTabButtons === void 0) { regenerateTabButtons = false; }
344
- var _a;
345
- // Activate/deactivate tab components.
346
- this.tabs.forEach(function (tab) {
347
- _this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)
348
- ? tab.activate()
349
- : tab.deactivate();
350
- });
351
- // Update the tab button models.
352
- if (regenerateTabButtons || !this.tabButtons.length) {
353
- this.tabButtons = this.createTabButtons(activeIndex);
354
- }
355
- else {
356
- this.updateTabButtons(activeIndex);
357
- }
358
- // Update the dropdown trigger button text.
359
- this.dropdownTriggerButtonText = (_a = this.tabButtons.find(function (b) {
360
- return _this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);
361
- })) === null || _a === void 0 ? void 0 : _a.buttonText;
362
- // Set the query params based on active tab.
363
- if (this.permalinkId) {
364
- var activeTabComponent = this.tabs.find(function (tab) {
365
- return _this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);
366
- });
367
- this.permalinkService.setParam(this.permalinkId, activeTabComponent.permalinkValue);
368
- }
369
- // Wait for tab button view models to render before gauging dimensions.
370
- setTimeout(function () {
371
- _this.adapterService.detectOverflow();
372
- });
373
- this.changeDetector.markForCheck();
374
- // Emit the new active index value to consumers.
375
- if (this.lastActiveTabIndex !== activeIndex) {
376
- this.lastActiveTabIndex = activeIndex;
377
- this.activeChange.emit(activeIndex);
378
- }
379
- };
380
- SkyTabsetComponent.ctorParameters = function () { return [
381
- { type: ChangeDetectorRef },
382
- { type: ElementRef },
383
- { type: SkyTabsetAdapterService },
384
- { type: SkyTabsetPermalinkService },
385
- { type: SkyTabsetService }
386
- ]; };
387
- __decorate([
388
- Input()
389
- ], SkyTabsetComponent.prototype, "active", null);
390
- __decorate([
391
- Input()
392
- ], SkyTabsetComponent.prototype, "ariaLabel", void 0);
393
- __decorate([
394
- Input()
395
- ], SkyTabsetComponent.prototype, "ariaLabelledBy", void 0);
396
- __decorate([
397
- Input()
398
- ], SkyTabsetComponent.prototype, "permalinkId", null);
399
- __decorate([
400
- Input()
401
- ], SkyTabsetComponent.prototype, "tabStyle", null);
402
- __decorate([
403
- Output()
404
- ], SkyTabsetComponent.prototype, "activeChange", void 0);
405
- __decorate([
406
- Output()
407
- ], SkyTabsetComponent.prototype, "newTab", void 0);
408
- __decorate([
409
- Output()
410
- ], SkyTabsetComponent.prototype, "openTab", void 0);
411
- __decorate([
412
- Output()
413
- ], SkyTabsetComponent.prototype, "tabIndexesChange", void 0);
414
- __decorate([
415
- ContentChildren(SkyTabComponent)
416
- ], SkyTabsetComponent.prototype, "tabs", void 0);
417
- SkyTabsetComponent = __decorate([
418
- Component({
419
- selector: 'sky-tabset',
420
- template: "<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\"\n buttonType=\"tab\"\n >\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span\n class=\"sky-tabset-tabs\"\n >\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container *ngTemplateOutlet=\"tabButtonTemplate; context: {\n $implicit: tabButton\n }\"></ng-container>\n </ng-container>\n </span>\n <span\n class=\"sky-tabset-btns\"\n >\n <button *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon\n icon=\"plus-circle\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon\n icon=\"folder-open-o\"\n size=\"lg\"\n >\n </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template\n let-tabButton\n #tabButtonTemplate\n>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n",
421
- providers: [
422
- SkyTabsetAdapterService,
423
- SkyTabsetPermalinkService,
424
- SkyTabsetService
425
- ],
426
- changeDetection: ChangeDetectionStrategy.OnPush,
427
- encapsulation: ViewEncapsulation.None,
428
- styles: [".sky-tabset{align-items:center;border-bottom:2px solid #0974a1;display:flex;list-style-type:none;margin:0;overflow:hidden;padding:0 0 0 15px;white-space:nowrap}.sky-tabset.sky-tabset-style-wizard{border-bottom:none;padding-bottom:10px;padding-left:0}.sky-tabset-btns{order:1;padding-left:10px}.sky-tabset-dropdown{order:0;max-width:100%}.sky-tabset-mode-dropdown{line-height:0}.sky-tabset-mode-dropdown .sky-tabset-tabs{visibility:hidden;order:2}.sky-tab-dropdown-menu-item sky-tab-button{display:flex;min-width:300px}.sky-tab-dropdown-menu-item .sky-dropdown-item{margin:0}.sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{width:100%;margin-right:0}.sky-tab-dropdown-menu-item .sky-btn-tab{margin:0;border-radius:0;width:100%;display:flex}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-tab-heading{flex:1 1 auto}.sky-tab-dropdown-menu-item .sky-btn-tab>.sky-btn-tab-close{flex:0 1 auto}.sky-tabset-tabs{order:0;white-space:nowrap}.sky-tabset-btn-new,.sky-tabset-btn-open{color:#0974a1}.sky-theme-modern .sky-tabset{border-bottom:1px solid #d2d2d2;overflow:visible}.sky-theme-modern .sky-tab-dropdown-menu-item .sky-btn-tab-wrapper{margin-right:0}"]
429
- })
430
- ], SkyTabsetComponent);
431
- return SkyTabsetComponent;
432
- }());
433
- export { SkyTabsetComponent };
434
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC90YWJzLyIsInNvdXJjZXMiOlsibW9kdWxlcy90YWJzL3RhYnNldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsYUFBYSxFQUNiLElBQUksRUFDSixPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBVXhCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUNMLHVCQUF1QixFQUN4QixNQUFNLDBCQUEwQixDQUFDO0FBTWxDLE9BQU8sRUFDTCx5QkFBeUIsRUFDMUIsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sa0JBQWtCLENBQUM7QUFpQzFCO0lBK0pFLDRCQUNVLGNBQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLGNBQXVDLEVBQ3ZDLGdCQUEyQyxFQUMzQyxhQUErQjtRQUovQixtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFDdkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEyQjtRQUMzQyxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFqRXpDOztXQUVHO1FBRUksaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRXREOzs7V0FHRztRQUVJLFdBQU0sR0FBRyxJQUFJ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ZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICByYWNlLFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgU2t5VGFiSW5kZXhcbn0gZnJvbSAnLi90YWItaW5kZXgnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRTdHlsZVxufSBmcm9tICcuL3RhYnNldC1zdHlsZSc7XG5cbmltcG9ydCB7XG4gIFNreVRhYkNvbXBvbmVudFxufSBmcm9tICcuL3RhYi5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRBZGFwdGVyU2VydmljZVxufSBmcm9tICcuL3RhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGVcbn0gZnJvbSAnLi90YWJzZXQtYnV0dG9ucy1kaXNwbGF5LW1vZGUnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlXG59IGZyb20gJy4vdGFic2V0LXBlcm1hbGluay5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0U2VydmljZVxufSBmcm9tICcuL3RhYnNldC5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5VGFic2V0VGFiSW5kZXhlc0NoYW5nZVxufSBmcm9tICcuL3RhYnNldC10YWItaW5kZXhlcy1jaGFuZ2UnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgVGFiQnV0dG9uVmlld01vZGVsIHtcbiAgYWN0aXZlOiBib29sZWFuO1xuICBhcmlhQ29udHJvbHM6IHN0cmluZztcbiAgYnV0dG9uSHJlZjogc3RyaW5nO1xuICBidXR0b25JZDogc3RyaW5nO1xuICBidXR0b25UZXh0OiBzdHJpbmc7XG4gIGJ1dHRvblRleHRDb3VudDogc3RyaW5nO1xuICBjbG9zZWFibGU6IGJvb2xlYW47XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB0YWJJbmRleDogU2t5VGFiSW5kZXg7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS10YWJzZXQnLFxuICBzdHlsZVVybHM6IFsnLi90YWJzZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYnNldC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVRhYnNldEFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVRhYnNldFBlcm1hbGlua1NlcnZpY2UsXG4gICAgU2t5VGFic2V0U2VydmljZVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTa3lUYWJzZXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgYSB0YWIgYnkgaXRzIGB0YWJJbmRleGAgcHJvcGVydHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFjdGl2ZSh2YWx1ZTogU2t5VGFiSW5kZXgpIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHZhbHVlLCB0aGlzLl9hY3RpdmUpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fYWN0aXZlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy50YWJzKSB7XG4gICAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgodmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPbiBpbml0LCB3YWl0IGZvciBjaGlsZHJlbiB0YWJzIHRvIHJlbmRlciBiZWZvcmUgYnJvYWRjYXN0aW5nIHRoZSBhY3RpdmUgdGFiIGluZGV4LlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRhYnNldFNlcnZpY2UuaXNWYWxpZFRhYkluZGV4KHZhbHVlKSkge1xuICAgICAgICAgIC8vIE9uIGluaXQsIHlpZWxkIHRvIHRoZSBwZXJtYWxpbmsgSUQsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICBpZiAodGhpcy5nZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBY3RpdmF0ZSB0aGUgZmlyc3QgdGFiIGlmIHRoZSBuZXcgdGFiIGluZGV4IGlzIGludmFsaWQuXG4gICAgICAgICAgdGhpcy5fYWN0aXZlID0gdGhpcy50YWJzZXRTZXJ2aWNlLmFjdGl2YXRlRmlyc3RUYWIoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmUoKTogU2t5VGFiSW5kZXgge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSB0YWJzZXQuIFRoaXMgc2V0cyB0aGUgdGFic2V0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGluY2x1ZGVzIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxsZWRCeWAgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGxhYmVsc1xuICAgKiB0aGUgdGFic2V0LiBUaGlzIHNldHMgdGhlIHRhYnNldCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgdGFic2V0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXN0aW5ndWlzaGVzIGEgdGFic2V0J3MgdW5pcXVlIHN0YXRlIGluIHRoZSBVUkwgYnkgZ2VuZXJhdGluZyBhIHF1ZXJ5IHBhcmFtZXRlclxuICAgKiB0aGF0IGlzIHdyaXR0ZW4gYXMgYD88cXVlcnlQYXJhbT4tYWN0aXZlLXRhYj08c2FuaXRpemVkLXRhYi1oZWFkaW5nPmAuXG4gICAqIFRoZSBxdWVyeSBwYXJhbWV0ZXIncyB2YWx1ZSBpcyBwYXJzZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBzZWxlY3RlZCB0YWIncyBoZWFkaW5nIHRleHQsXG4gICAqIGJ1dCB5b3UgY2FuIHN1cHBseSBhIGN1c3RvbSBxdWVyeSBwYXJhbWV0ZXIgdmFsdWUgZm9yIGVhY2ggdGFiIHdpdGggaXRzIGBwZXJtYWxpbmtWYWx1ZWAuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBlcm1hbGlua0lkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2FuaXRpemVkID0gdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLnVybGlmeSh2YWx1ZSk7XG4gICAgdGhpcy5fcGVybWFsaW5rSWQgPSBgJHtzYW5pdGl6ZWR9LWFjdGl2ZS10YWJgO1xuICB9XG5cbiAgcHVibGljIGdldCBwZXJtYWxpbmtJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wZXJtYWxpbmtJZCB8fCAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGJlaGF2aW9yIGZvciBhIHNlcmllcyBvZiB0YWJzLlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgcHJvcGVydHkgd2FzIGRlc2lnbmVkIHRvIGNyZWF0ZSB3aXphcmRzIGJ5IHNldHRpbmcgdGFiU3R5bGU9XCJ3aXphcmRcIiBvbiB0YWJzZXRzIGluIG1vZGFscyxcbiAgICogYnV0IHRoaXMgd2l6YXJkIGltcGxlbWVudGF0aW9uIHdhcyByZXBsYWNlZCBieSB0aGVcbiAgICogW3Byb2dyZXNzIGluZGljYXRvciBjb21wb25lbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvY29tcG9uZW50cy9wcm9ncmVzcy1pbmRpY2F0b3IpLlxuICAgKiBAZGVmYXVsdCAndGFicydcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiU3R5bGUodmFsdWU6IFNreVRhYnNldFN0eWxlKSB7XG4gICAgLyppc3RhbmJ1bCBpZ25vcmUgZWxzZSovXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd3aXphcmQnKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdUaGUgdGFic2V0IHdpemFyZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgaW1wbGVtZW50IHRoZSBuZXcgYXBwcm9hY2ggdXNpbmcgJyArXG4gICAgICAgICdwcm9ncmVzcyBpbmRpY2F0b3IgYXMgZG9jdW1lbnRlZCBoZXJlOiBodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvd2l6YXJkLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFiU3R5bGUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFiU3R5bGUoKTogU2t5VGFic2V0U3R5bGUge1xuICAgIHJldHVybiB0aGlzLl90YWJTdHlsZSB8fCAndGFicyc7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWN0aXZlIHRhYiBjaGFuZ2VzLiBUaGlzIGV2ZW50IGVtaXRzIHRoZSBpbmRleCBvZiB0aGUgYWN0aXZlIHRhYi5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aXZlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lUYWJJbmRleD4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjbGljayB0aGUgYnV0dG9uIHRvIGFkZCBhIG5ldyB0YWIuXG4gICAqIFRoZSBuZXcgdGFiIGJ1dHRvbiBpcyBhZGRlZCB0byB0aGUgdGFiIGFyZWEgd2hlbiB5b3Ugc3BlY2lmeSBhIGxpc3RlbmVyIGZvciB0aGlzIGV2ZW50LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBuZXdUYWIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgY2xpY2sgdGhlIGJ1dHRvbiB0byBvcGVuIGEgdGFiLlxuICAgKiBUaGUgb3BlbiB0YWIgYnV0dG9uIGlzIGFkZGVkIHRvIHRoZSB0YWIgYXJlYSB3aGVuIHlvdSBzcGVjaWZ5IGEgbGlzdGVuZXIgZm9yIHRoaXMgZXZlbnQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9wZW5UYWIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYW55IHRhYidzIGB0YWJJbmRleGAgdmFsdWUgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgdGFiSW5kZXhlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5VGFic2V0VGFiSW5kZXhlc0NoYW5nZT4oKTtcblxuICBwdWJsaWMgc2V0IHRhYkRpc3BsYXlNb2RlKHZhbHVlOiBTa3lUYWJzZXRCdXR0b25zRGlzcGxheU1vZGUpIHtcbiAgICB0aGlzLl90YWJEaXNwbGF5TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRhYkRpc3BsYXlNb2RlKCk6IFNreVRhYnNldEJ1dHRvbnNEaXNwbGF5TW9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkRpc3BsYXlNb2RlIHx8ICd0YWJzJztcbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5VGFiQ29tcG9uZW50KVxuICBwdWJsaWMgdGFiczogUXVlcnlMaXN0PFNreVRhYkNvbXBvbmVudD47XG5cbiAgcHVibGljIGRyb3Bkb3duVHJpZ2dlckJ1dHRvblRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IHRoZSBkZXByZWNhdGVkIHRhYnNldC1uYXYtYnV0dG9uIGNvbXBvbmVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbGFzdEFjdGl2ZVRhYkluZGV4OiBTa3lUYWJJbmRleDtcblxuICBwdWJsaWMgdGFiQnV0dG9uczogVGFiQnV0dG9uVmlld01vZGVsW10gPSBbXTtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgdGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2FjdGl2ZTogU2t5VGFiSW5kZXg7XG5cbiAgcHJpdmF0ZSBfcGVybWFsaW5rSWQ6IHN0cmluZztcblxuICBwcml2YXRlIF90YWJEaXNwbGF5TW9kZTogU2t5VGFic2V0QnV0dG9uc0Rpc3BsYXlNb2RlO1xuXG4gIHByaXZhdGUgX3RhYlN0eWxlOiBTa3lUYWJzZXRTdHlsZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBhZGFwdGVyU2VydmljZTogU2t5VGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtYWxpbmtTZXJ2aWNlOiBTa3lUYWJzZXRQZXJtYWxpbmtTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGFic2V0U2VydmljZTogU2t5VGFic2V0U2VydmljZVxuICApIHsgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG5cbiAgICB0aGlzLmluaXRUYWJDb21wb25lbnRzKCk7XG4gICAgdGhpcy5saXN0ZW5UYWJDb21wb25lbnRzU3RydWN0dXJhbENoYW5nZSgpO1xuXG4gICAgY29uc3QgaW5pdGlhbFRhYkluZGV4ID0gdGhpcy5nZXRJbml0aWFsVGFiSW5kZXgoKTtcbiAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgoaW5pdGlhbFRhYkluZGV4KTtcblxuICAgIHRoaXMubGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk7XG4gICAgdGhpcy5saXN0ZW5Mb2NhdGlvblBvcFN0YXRlQ2hhbmdlKCk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0YWIgaXMgZ2V0dGluZyB1bnJlZ2lzdGVyZWQsIGFjdGl2YXRlIHRoZSBuZXh0IG9uZS5cbiAgICB0aGlzLnRhYnNldFNlcnZpY2UuYWN0aXZlVGFiVW5yZWdpc3RlcmVkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUodGFiID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIG5ldyB0YWJzIHRvIHJlbmRlciBiZWZvcmUgYWN0aXZhdGluZy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFjdGl2YXRlTmVhcmVzdFRhYih0YWIuYXJyYXlJbmRleCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAvLyBMZXQgdGhlIHRhYnNldCByZW5kZXIgdGhlIGluaXRpYWwgYWN0aXZlIGluZGV4IGJlZm9yZSBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmxpc3RlblRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgICAgdGhpcy5saXN0ZW5BY3RpdmVJbmRleENoYW5nZSgpO1xuICAgICAgdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLmluaXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmVUYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTtcbiAgICB0aGlzLnBlcm1hbGlua1NlcnZpY2UuY2xlYXJQYXJhbSh0aGlzLnBlcm1hbGlua0lkKTtcbiAgfVxuXG4gIHB1YmxpYyBvbldpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmRldGVjdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJDbG9zZUNsaWNrKHRhYkJ1dHRvbjogVGFiQnV0dG9uVmlld01vZGVsKTogdm9pZCB7XG4gICAgY29uc3QgdGFiQ29tcG9uZW50ID0gdGhpcy50YWJzLmZpbmQodGFiID0+XG4gICAgICB0aGlzLnRhYnNldFNlcnZpY2UudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgdGFiQnV0dG9uLnRhYkluZGV4KVxuICAgICk7XG5cbiAgICB0YWJDb21wb25lbnQuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHVibGljIG9uVGFiQnV0dG9uQ2xpY2sodGFiQnV0dG9uOiBUYWJCdXR0b25WaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgodGFiQnV0dG9uLnRhYkluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBvbk5ld1RhYkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubmV3VGFiLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9wZW5UYWJDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5UYWIuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluaXRpYWwgYWN0aXZlIHRhYiBpbmRleCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGNyaXRlcmlhLlxuICAgKiAxLiBEb2VzIHRoZSBVUkwgaW5jbHVkZSBhIHF1ZXJ5IHBhcmFtIHRoYXQgcmVmbGVjdHMgdGhpcyB0YWJzZXQncyBhY3RpdmUgdGFiP1xuICAgKiAyLiBEb2VzIG9uZSBvZiB0aGUgdGFiIGNvbXBvbmVudHMgaGF2ZSB0aGVpciBgYWN0aXZlYCBwcm9wZXJ0eSBzZXQgdG8gYHRydWVgP1xuICAgKiAzLiBJcyB0aGUgdGFic2V0IGNvbXBvbmVudCdzIGBhY3RpdmVgIHByb3BlcnR5IHNldCB0byBhIHNwZWNpZmljIHRhYiBpbmRleD9cbiAgICovXG4gIHByaXZhdGUgZ2V0SW5pdGlhbFRhYkluZGV4KCk6IFNreVRhYkluZGV4IHtcbiAgICBsZXQgYWN0aXZlSW5kZXg6IFNreVRhYkluZGV4ID0gdGhpcy5nZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICBpZiAoYWN0aXZlSW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgYWN0aXZlSW5kZXggPSB0aGlzLmdldEFjdGl2ZVRhYkNvbXBvbmVudCgpPy50YWJJbmRleDtcbiAgICAgIGlmIChhY3RpdmVJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGl2ZUluZGV4ID0gdGhpcy5hY3RpdmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGl2ZUluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5BY3RpdmVJbmRleENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnNldFNlcnZpY2UuYWN0aXZlVGFiSW5kZXhcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShhY3RpdmVJbmRleCA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVGFic2V0Q29tcG9uZW50KGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5UYWJDb21wb25lbnRzU3RydWN0dXJhbENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnMuY2hhbmdlc1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXNldFRhYkNvbXBvbmVudHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5UYWJDb21wb25lbnRzU3RhdGVDaGFuZ2UoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdCh0aGlzLnRhYnMubWFwKHRhYiA9PiB0YWIuYWN0aXZlQ2hhbmdlKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbChyYWNlKHRoaXMudGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUsIHRoaXMubmdVbnN1YnNjcmliZSkpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgZmluZGluZyB0aGUgYWN0aXZlIG9uZS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFiSW5kZXggPSB0aGlzLmdldEFjdGl2ZVRhYkNvbXBvbmVudCgpPy50YWJJbmRleDtcbiAgICAgICAgICB0aGlzLnRhYnNldFNlcnZpY2Uuc2V0QWN0aXZlVGFiSW5kZXgodGFiSW5kZXgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdCh0aGlzLnRhYnMubWFwKHRhYiA9PiB0YWIudGFiSW5kZXhDaGFuZ2UpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHJhY2UodGhpcy50YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSwgdGhpcy5uZ1Vuc3Vic2NyaWJlKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gRG9uJ3QgZW1pdCB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICBpZiAodGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIFdhaXQgZm9yIHRoZSB0YWIgY29tcG9uZW50cyB0byByZW5kZXIgY2hhbmdlcyBiZWZvcmUgdXBkYXRpbmcgdGhlIHZpZXcuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVRhYnNldENvbXBvbmVudCh0aGlzLnRhYnNldFNlcnZpY2UuY3VycmVudEFjdGl2ZVRhYkluZGV4LCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdFRhYkluZGV4Q2hhbmdlKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgY29tYmluZUxhdGVzdCh0aGlzLnRhYnMubWFwKHRhYiA9PiB0YWIuc3RhdGVDaGFuZ2UpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHJhY2UodGhpcy50YWJDb21wb25lbnRzU3RhdGVDaGFuZ2VVbnN1YnNjcmliZSwgdGhpcy5uZ1Vuc3Vic2NyaWJlKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHRhYiBjb21wb25lbnRzIHRvIHJlbmRlciBjaGFuZ2VzIGJlZm9yZSBmaW5kaW5nIHRoZSBhY3RpdmUgb25lLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRhYnNldENvbXBvbmVudCh0aGlzLnRhYnNldFNlcnZpY2UuY3VycmVudEFjdGl2ZVRhYkluZGV4LCB0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFRhYkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy50YWJzLmZvckVhY2godGFiID0+IHRhYi5pbml0KCkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFRhYkNvbXBvbmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZVRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZSgpO1xuICAgIHRoaXMudGFic2V0U2VydmljZS51bnJlZ2lzdGVyQWxsKCk7XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdGFiIGNvbXBvbmVudHMsIGRvIGEgaGFyZCByZXNldCBvZiB0aGUgdmlldy5cbiAgICBpZiAodGhpcy50YWJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy51cGRhdGVUYWJzZXRDb21wb25lbnQoMCwgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbml0VGFiQ29tcG9uZW50cygpO1xuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5nZXRBY3RpdmVUYWJDb21wb25lbnQoKT8udGFiSW5kZXg7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLnNldEFjdGl2ZVRhYkluZGV4KGFjdGl2ZUluZGV4LCB7XG4gICAgICBlbWl0Q2hhbmdlOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMubGlzdGVuVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIGVtaXRUYWJJbmRleENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkluZGV4ZXNDaGFuZ2UuZW1pdCh7XG4gICAgICB0YWJzOiB0aGlzLnRhYnMubWFwKHRhYiA9PiAoe1xuICAgICAgICB0YWJIZWFkaW5nOiB0YWIudGFiSGVhZGluZyxcbiAgICAgICAgdGFiSW5kZXg6IHRhYi50YWJJbmRleFxuICAgICAgfSkpXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlVGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMudGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMudGFiQ29tcG9uZW50c1N0YXRlQ2hhbmdlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLnRhYkNvbXBvbmVudHNTdGF0ZUNoYW5nZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuVGFiQnV0dG9uc092ZXJmbG93Q2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMuYWRhcHRlclNlcnZpY2UucmVnaXN0ZXJUYWJzZXQodGhpcy5lbGVtZW50UmVmKTtcbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLm92ZXJmbG93Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoaXNPdmVyZmxvd2luZyA9PiB7XG4gICAgICAgIHRoaXMudGFiRGlzcGxheU1vZGUgPSAoaXNPdmVyZmxvd2luZykgPyAnZHJvcGRvd24nIDogJ3RhYnMnO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIGZvciBiYWNrL2ZvcndhcmQgaGlzdG9yeSBidXR0b24gcHJlc3NlcyB0byBkZXRlY3QgcXVlcnkgcGFyYW0gY2hhbmdlcyBpbiB0aGUgVVJMLlxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Mb2NhdGlvblBvcFN0YXRlQ2hhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMucGVybWFsaW5rU2VydmljZS5wb3BTdGF0ZUNoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3RpdmVUYWJJbmRleEJ5UGVybWFsaW5rSWQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmdldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpO1xuICAgIHRoaXMudGFic2V0U2VydmljZS5zZXRBY3RpdmVUYWJJbmRleChhY3RpdmVJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZVRhYkluZGV4QnlQZXJtYWxpbmtJZCgpOiBTa3lUYWJJbmRleCB7XG4gICAgaWYgKHRoaXMucGVybWFsaW5rSWQpIHtcbiAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLnBlcm1hbGlua1NlcnZpY2UuZ2V0UGFyYW0odGhpcy5wZXJtYWxpbmtJZCk7XG4gICAgICBpZiAocGFyYW1WYWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzLmZpbmQodGFiID0+IHRhYi5wZXJtYWxpbmtWYWx1ZSA9PT0gcGFyYW1WYWx1ZSk/LnRhYkluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWN0aXZlVGFiQ29tcG9uZW50KCk6IFNreVRhYkNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMudGFicy50b0FycmF5KCkucmV2ZXJzZSgpLmZpbmQodGFiID0+IHRhYi5hY3RpdmUgPT09IHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVUYWJCdXR0b25zKGFjdGl2ZUluZGV4OiBTa3lUYWJJbmRleCk6IFRhYkJ1dHRvblZpZXdNb2RlbFtdIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLm1hcCh0YWIgPT4gKHtcbiAgICAgIGFjdGl2ZTogdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KSxcbiAgICAgIGNsb3NlYWJsZTogdGFiLmNsb3NlYWJsZSxcbiAgICAgIGFyaWFDb250cm9sczogdGFiLnRhYlBhbmVsSWQsXG4gICAgICBkaXNhYmxlZDogdGFiLmRpc2FibGVkLFxuICAgICAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbnVsbC1rZXl3b3JkKi9cbiAgICAgIGJ1dHRvbkhyZWY6ICh0YWIuZGlzYWJsZWQpID8gbnVsbCA6IHRoaXMucGVybWFsaW5rU2VydmljZS5nZXRQYXJhbUhyZWYoXG4gICAgICAgIHRoaXMucGVybWFsaW5rSWQsXG4gICAgICAgIHRhYi5wZXJtYWxpbmtWYWx1ZVxuICAgICAgKSxcbiAgICAgIGJ1dHRvbklkOiB0YWIudGFiQnV0dG9uSWQsXG4gICAgICBidXR0b25UZXh0Q291bnQ6IHRhYi50YWJIZWFkZXJDb3VudCxcbiAgICAgIGJ1dHRvblRleHQ6IHRhYi50YWJIZWFkaW5nLFxuICAgICAgdGFiSW5kZXg6IHRhYi50YWJJbmRleFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVGFiQnV0dG9ucyhhY3RpdmVJbmRleDogU2t5VGFiSW5kZXgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYkJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgYnV0dG9uLmFjdGl2ZSA9IHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwoYnV0dG9uLnRhYkluZGV4LCBhY3RpdmVJbmRleCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgVUkgYW5kIHN0YXRlIG9mIHRoZSB0YWJzZXQgY29tcG9uZW50IGFmdGVyIHRoZSB0YWIgaW5kZXggb3JcbiAgICogdGFiIGNvbXBvbmVudHMgaGF2ZSBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gYWN0aXZlSW5kZXggVGhlIGN1cnJlbnRseSBhY3RpdmUgdGFiIGluZGV4LlxuICAgKiBAcGFyYW0gcmVnZW5lcmF0ZVRhYkJ1dHRvbnMgSW5kaWNhdGVzIGlmIHRhYiBidXR0b24gdmlldyBtb2RlbHMgc2hvdWxkIGJlIHJlZ2VuZXJhdGVkLlxuICAgKiBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gYGZhbHNlYCB3aWxsIHNpbXBseSB1cGRhdGUgdGhlIGV4aXN0aW5nIHRhYiBidXR0b25zLiBTZXR0aW5nIHRoaXMgdmFsdWVcbiAgICogdG8gYHRydWVgIGlzIG9ubHkgbmVjZXNzYXJ5IHdoZW4gdGhlIHVuZGVybHlpbmcgdGFiIGNvbXBvbmVudHMgaGF2ZSBjaGFuZ2VkIGFuZCB0aGUgdGFiXG4gICAqIGJ1dHRvbnMgbXVzdCByZWZsZWN0IHRob3NlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVRhYnNldENvbXBvbmVudChcbiAgICBhY3RpdmVJbmRleDogU2t5VGFiSW5kZXgsXG4gICAgcmVnZW5lcmF0ZVRhYkJ1dHRvbnMgPSBmYWxzZVxuICApOiB2b2lkIHtcblxuICAgIC8vIEFjdGl2YXRlL2RlYWN0aXZhdGUgdGFiIGNvbXBvbmVudHMuXG4gICAgdGhpcy50YWJzLmZvckVhY2godGFiID0+IHtcbiAgICAgIHRoaXMudGFic2V0U2VydmljZS50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBhY3RpdmVJbmRleClcbiAgICAgICAgPyB0YWIuYWN0aXZhdGUoKVxuICAgICAgICA6IHRhYi5kZWFjdGl2YXRlKCk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHRhYiBidXR0b24gbW9kZWxzLlxuICAgIGlmIChyZWdlbmVyYXRlVGFiQnV0dG9ucyB8fCAhdGhpcy50YWJCdXR0b25zLmxlbmd0aCkge1xuICAgICAgdGhpcy50YWJCdXR0b25zID0gdGhpcy5jcmVhdGVUYWJCdXR0b25zKGFjdGl2ZUluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVUYWJCdXR0b25zKGFjdGl2ZUluZGV4KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIGRyb3Bkb3duIHRyaWdnZXIgYnV0dG9uIHRleHQuXG4gICAgdGhpcy5kcm9wZG93blRyaWdnZXJCdXR0b25UZXh0ID0gdGhpcy50YWJCdXR0b25zLmZpbmQoYiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbChiLnRhYkluZGV4LCBhY3RpdmVJbmRleCk7XG4gICAgfSk/LmJ1dHRvblRleHQ7XG5cbiAgICAvLyBTZXQgdGhlIHF1ZXJ5IHBhcmFtcyBiYXNlZCBvbiBhY3RpdmUgdGFiLlxuICAgIGlmICh0aGlzLnBlcm1hbGlua0lkKSB7XG4gICAgICBjb25zdCBhY3RpdmVUYWJDb21wb25lbnQgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJzZXRTZXJ2aWNlLnRhYkluZGV4ZXNFcXVhbCh0YWIudGFiSW5kZXgsIGFjdGl2ZUluZGV4KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wZXJtYWxpbmtTZXJ2aWNlLnNldFBhcmFtKHRoaXMucGVybWFsaW5rSWQsIGFjdGl2ZVRhYkNvbXBvbmVudC5wZXJtYWxpbmtWYWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gV2FpdCBmb3IgdGFiIGJ1dHRvbiB2aWV3IG1vZGVscyB0byByZW5kZXIgYmVmb3JlIGdhdWdpbmcgZGltZW5zaW9ucy5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZGV0ZWN0T3ZlcmZsb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyBFbWl0IHRoZSBuZXcgYWN0aXZlIGluZGV4IHZhbHVlIHRvIGNvbnN1bWVycy5cbiAgICBpZiAodGhpcy5sYXN0QWN0aXZlVGFiSW5kZXggIT09IGFjdGl2ZUluZGV4KSB7XG4gICAgICB0aGlzLmxhc3RBY3RpdmVUYWJJbmRleCA9IGFjdGl2ZUluZGV4O1xuICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UuZW1pdChhY3RpdmVJbmRleCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,122 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { Injectable } from '@angular/core';
3
- import { BehaviorSubject, Subject } from 'rxjs';
4
- /**
5
- * @internal
6
- */
7
- var SkyTabsetService = /** @class */ (function () {
8
- function SkyTabsetService() {
9
- this.currentActiveTabIndex = 0;
10
- this._activeTabIndex = new BehaviorSubject(0);
11
- this._activeTabUnregistered = new Subject();
12
- this.tabs = [];
13
- this.tabCounter = 0;
14
- }
15
- Object.defineProperty(SkyTabsetService.prototype, "activeTabUnregistered", {
16
- get: function () {
17
- return this._activeTabUnregistered.asObservable();
18
- },
19
- enumerable: true,
20
- configurable: true
21
- });
22
- Object.defineProperty(SkyTabsetService.prototype, "activeTabIndex", {
23
- get: function () {
24
- return this._activeTabIndex.asObservable();
25
- },
26
- enumerable: true,
27
- configurable: true
28
- });
29
- /**
30
- * Sets the active tab by its unique `tabIndex` property.
31
- */
32
- SkyTabsetService.prototype.setActiveTabIndex = function (value, config) {
33
- if (config === void 0) { config = {
34
- emitChange: true
35
- }; }
36
- if (value !== undefined &&
37
- !this.tabIndexesEqual(value, this.currentActiveTabIndex)) {
38
- this.currentActiveTabIndex = value;
39
- if (config.emitChange) {
40
- this._activeTabIndex.next(value);
41
- }
42
- }
43
- };
44
- /**
45
- * Registers a tab component.
46
- */
47
- SkyTabsetService.prototype.registerTab = function (tabIndex) {
48
- if (tabIndex === undefined) {
49
- tabIndex = this.tabCounter;
50
- this.tabCounter++;
51
- }
52
- this.tabs.push({ tabIndex: tabIndex });
53
- return tabIndex;
54
- };
55
- SkyTabsetService.prototype.updateTabIndex = function (currentTabIndex, newTabIndex) {
56
- var _this = this;
57
- var found = this.tabs.find(function (tab) { return _this.tabIndexesEqual(tab.tabIndex, currentTabIndex); });
58
- found.tabIndex = newTabIndex;
59
- };
60
- /**
61
- * Unregisters a tab component.
62
- */
63
- SkyTabsetService.prototype.unregisterTab = function (tabIndex) {
64
- var _this = this;
65
- var index = this.tabs.findIndex(function (tab) { return _this.tabIndexesEqual(tab.tabIndex, tabIndex); });
66
- // Notify the tabset component when an active tab is unregistered.
67
- if (this.isTabIndexActive(this.tabs[index].tabIndex)) {
68
- this._activeTabUnregistered.next({
69
- arrayIndex: index
70
- });
71
- }
72
- this.tabs.splice(index, 1);
73
- };
74
- /**
75
- * Unregisters all tab components at once.
76
- */
77
- SkyTabsetService.prototype.unregisterAll = function () {
78
- this.tabs = [];
79
- };
80
- /**
81
- * Compares two tab indexes and returns `true` if they are equal.
82
- */
83
- SkyTabsetService.prototype.tabIndexesEqual = function (tabIndex1, tabIndex2) {
84
- return (tabIndex1 === tabIndex2 ||
85
- +tabIndex1 === +tabIndex2);
86
- };
87
- /**
88
- * Verifies if a provided tab index is registered.
89
- */
90
- SkyTabsetService.prototype.isValidTabIndex = function (tabIndex) {
91
- var _this = this;
92
- return this.tabs.some(function (tab) { return _this.tabIndexesEqual(tab.tabIndex, tabIndex); });
93
- };
94
- /**
95
- * Activates the first registered tab.
96
- */
97
- SkyTabsetService.prototype.activateFirstTab = function () {
98
- var firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;
99
- if (firstTabIndex !== undefined) {
100
- this.setActiveTabIndex(firstTabIndex);
101
- return firstTabIndex;
102
- }
103
- };
104
- /**
105
- * Activates the next registered tab, or the previous one based on a provided array index.
106
- */
107
- SkyTabsetService.prototype.activateNearestTab = function (arrayIndex) {
108
- var newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];
109
- if (newActiveTab) {
110
- this.currentActiveTabIndex = newActiveTab.tabIndex;
111
- }
112
- };
113
- SkyTabsetService.prototype.isTabIndexActive = function (tabIndex) {
114
- return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);
115
- };
116
- SkyTabsetService = __decorate([
117
- Injectable()
118
- ], SkyTabsetService);
119
- return SkyTabsetService;
120
- }());
121
- export { SkyTabsetService };
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFic2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2t5dXgvdGFicy8iLCJzb3VyY2VzIjpbIm1vZHVsZXMvdGFicy90YWJzZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUVmLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQVVkOztHQUVHO0FBRUg7SUFBQTtRQVVTLDBCQUFxQixHQUFnQixDQUFDLENBQUM7UUFFdEMsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBYyxDQUFDLENBQUMsQ0FBQztRQUV0RCwyQkFBc0IsR0FBRyxJQUFJLE9BQU8sRUFBc0MsQ0FBQztRQUUzRSxTQUFJLEdBRU4sRUFBRSxDQUFDO1FBRUQsZUFBVSxHQUFHLENBQUMsQ0FBQztJQXNHekIsQ0FBQztJQXhIQyxzQkFBVyxtREFBcUI7YUFBaEM7WUFDRSxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwRCxDQUFDOzs7T0FBQTtJQUVELHNCQUFXLDRDQUFjO2FBQXpCO1lBQ0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdDLENBQUM7OztPQUFBO0lBY0Q7O09BRUc7SUFDSSw0Q0FBaUIsR0FBeEIsVUFBeUIsS0FBa0IsRUFBRSxNQUU1QztRQUY0Qyx1QkFBQSxFQUFBO1lBQzNDLFVBQVUsRUFBRSxJQUFJO1NBQ2pCO1FBQ0MsSUFDRSxLQUFLLEtBQUssU0FBUztZQUNuQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUN4RDtZQUNBLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FB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LENBQUMsUUFBUSxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVPLDJDQUFnQixHQUF4QixVQUF5QixRQUFxQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUF6SFUsZ0JBQWdCO1FBRDVCLFVBQVUsRUFBRTtPQUNBLGdCQUFnQixDQTBINUI7SUFBRCx1QkFBQztDQUFBLEFBMUhELElBMEhDO1NBMUhZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGFibGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgU2t5VGFiSW5kZXhcbn0gZnJvbSAnLi90YWItaW5kZXgnO1xuXG5pbXBvcnQge1xuICBTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzXG59IGZyb20gJy4vdGFic2V0LWFjdGl2ZS10YWItdW5yZWdpc3RlcmVkLWFyZ3MnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VGFic2V0U2VydmljZSB7XG5cbiAgcHVibGljIGdldCBhY3RpdmVUYWJVbnJlZ2lzdGVyZWQoKTogT2JzZXJ2YWJsZTxTa3lUYWJzZXRBY3RpdmVUYWJVbnJlZ2lzdGVyZWRBcmdzPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVRhYlVucmVnaXN0ZXJlZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWN0aXZlVGFiSW5kZXgoKTogT2JzZXJ2YWJsZTxTa3lUYWJJbmRleD4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVUYWJJbmRleC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50QWN0aXZlVGFiSW5kZXg6IFNreVRhYkluZGV4ID0gMDtcblxuICBwcml2YXRlIF9hY3RpdmVUYWJJbmRleCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5VGFiSW5kZXg+KDApO1xuXG4gIHByaXZhdGUgX2FjdGl2ZVRhYlVucmVnaXN0ZXJlZCA9IG5ldyBTdWJqZWN0PFNreVRhYnNldEFjdGl2ZVRhYlVucmVnaXN0ZXJlZEFyZ3M+KCk7XG5cbiAgcHJpdmF0ZSB0YWJzOiB7XG4gICAgdGFiSW5kZXg6IFNreVRhYkluZGV4O1xuICB9W10gPSBbXTtcblxuICBwcml2YXRlIHRhYkNvdW50ZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY3RpdmUgdGFiIGJ5IGl0cyB1bmlxdWUgYHRhYkluZGV4YCBwcm9wZXJ0eS5cbiAgICovXG4gIHB1YmxpYyBzZXRBY3RpdmVUYWJJbmRleCh2YWx1ZTogU2t5VGFiSW5kZXgsIGNvbmZpZyA9IHtcbiAgICBlbWl0Q2hhbmdlOiB0cnVlXG4gIH0pOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhdGhpcy50YWJJbmRleGVzRXF1YWwodmFsdWUsIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4KVxuICAgICkge1xuICAgICAgdGhpcy5jdXJyZW50QWN0aXZlVGFiSW5kZXggPSB2YWx1ZTtcbiAgICAgIGlmIChjb25maWcuZW1pdENoYW5nZSkge1xuICAgICAgICB0aGlzLl9hY3RpdmVUYWJJbmRleC5uZXh0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgdGFiIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclRhYih0YWJJbmRleD86IFNreVRhYkluZGV4KTogU2t5VGFiSW5kZXgge1xuICAgIGlmICh0YWJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YWJJbmRleCA9IHRoaXMudGFiQ291bnRlcjtcbiAgICAgIHRoaXMudGFiQ291bnRlcisrO1xuICAgIH1cblxuICAgIHRoaXMudGFicy5wdXNoKHsgdGFiSW5kZXggfSk7XG5cbiAgICByZXR1cm4gdGFiSW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVGFiSW5kZXgoY3VycmVudFRhYkluZGV4OiBTa3lUYWJJbmRleCwgbmV3VGFiSW5kZXg6IFNreVRhYkluZGV4KTogdm9pZCB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCBjdXJyZW50VGFiSW5kZXgpKTtcbiAgICBmb3VuZC50YWJJbmRleCA9IG5ld1RhYkluZGV4O1xuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGEgdGFiIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyB1bnJlZ2lzdGVyVGFiKHRhYkluZGV4OiBTa3lUYWJJbmRleCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCh0YWIgPT4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiLnRhYkluZGV4LCB0YWJJbmRleCkpO1xuXG4gICAgLy8gTm90aWZ5IHRoZSB0YWJzZXQgY29tcG9uZW50IHdoZW4gYW4gYWN0aXZlIHRhYiBpcyB1bnJlZ2lzdGVyZWQuXG4gICAgaWYgKHRoaXMuaXNUYWJJbmRleEFjdGl2ZSh0aGlzLnRhYnNbaW5kZXhdLnRhYkluZGV4KSkge1xuICAgICAgdGhpcy5fYWN0aXZlVGFiVW5yZWdpc3RlcmVkLm5leHQoe1xuICAgICAgICBhcnJheUluZGV4OiBpbmRleFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy50YWJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYWxsIHRhYiBjb21wb25lbnRzIGF0IG9uY2UuXG4gICAqL1xuICBwdWJsaWMgdW5yZWdpc3RlckFsbCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlcyB0d28gdGFiIGluZGV4ZXMgYW5kIHJldHVybnMgYHRydWVgIGlmIHRoZXkgYXJlIGVxdWFsLlxuICAgKi9cbiAgcHVibGljIHRhYkluZGV4ZXNFcXVhbCh0YWJJbmRleDE6IFNreVRhYkluZGV4LCB0YWJJbmRleDI6IFNreVRhYkluZGV4KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRhYkluZGV4MSA9PT0gdGFiSW5kZXgyIHx8XG4gICAgICArdGFiSW5kZXgxID09PSArdGFiSW5kZXgyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyBpZiBhIHByb3ZpZGVkIHRhYiBpbmRleCBpcyByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHVibGljIGlzVmFsaWRUYWJJbmRleCh0YWJJbmRleDogU2t5VGFiSW5kZXgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJzLnNvbWUodGFiID0+IHRoaXMudGFiSW5kZXhlc0VxdWFsKHRhYi50YWJJbmRleCwgdGFiSW5kZXgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmF0ZXMgdGhlIGZpcnN0IHJlZ2lzdGVyZWQgdGFiLlxuICAgKi9cbiAgcHVibGljIGFjdGl2YXRlRmlyc3RUYWIoKTogU2t5VGFiSW5kZXggfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpcnN0VGFiSW5kZXggPSB0aGlzLnRhYnNbMF0gJiYgdGhpcy50YWJzWzBdLnRhYkluZGV4O1xuICAgIGlmIChmaXJzdFRhYkluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2V0QWN0aXZlVGFiSW5kZXgoZmlyc3RUYWJJbmRleCk7XG4gICAgICByZXR1cm4gZmlyc3RUYWJJbmRleDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZhdGVzIHRoZSBuZXh0IHJlZ2lzdGVyZWQgdGFiLCBvciB0aGUgcHJldmlvdXMgb25lIGJhc2VkIG9uIGEgcHJvdmlkZWQgYXJyYXkgaW5kZXguXG4gICAqL1xuICBwdWJsaWMgYWN0aXZhdGVOZWFyZXN0VGFiKGFycmF5SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5ld0FjdGl2ZVRhYiA9IHRoaXMudGFic1thcnJheUluZGV4XSB8fCB0aGlzLnRhYnNbYXJyYXlJbmRleCAtIDFdO1xuICAgIGlmIChuZXdBY3RpdmVUYWIpIHtcbiAgICAgIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4ID0gbmV3QWN0aXZlVGFiLnRhYkluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNUYWJJbmRleEFjdGl2ZSh0YWJJbmRleDogU2t5VGFiSW5kZXgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50YWJJbmRleGVzRXF1YWwodGFiSW5kZXgsIHRoaXMuY3VycmVudEFjdGl2ZVRhYkluZGV4KTtcbiAgfVxufVxuIl19