@skyux/lists 8.7.0 → 9.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/esm2022/lib/modules/filter/filter-button.component.mjs +73 -0
  2. package/{esm2020 → esm2022}/lib/modules/filter/filter-inline-item.component.mjs +4 -4
  3. package/{esm2020 → esm2022}/lib/modules/filter/filter-inline.component.mjs +4 -4
  4. package/esm2022/lib/modules/filter/filter-summary-item.component.mjs +52 -0
  5. package/{esm2020 → esm2022}/lib/modules/filter/filter-summary.component.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/modules/filter/filter.module.mjs +21 -21
  7. package/esm2022/lib/modules/infinite-scroll/infinite-scroll-dom-adapter.service.mjs +82 -0
  8. package/esm2022/lib/modules/infinite-scroll/infinite-scroll.component.mjs +116 -0
  9. package/{esm2020 → esm2022}/lib/modules/infinite-scroll/infinite-scroll.module.mjs +5 -5
  10. package/esm2022/lib/modules/paging/paging.component.mjs +122 -0
  11. package/{esm2020 → esm2022}/lib/modules/paging/paging.module.mjs +11 -11
  12. package/esm2022/lib/modules/repeater/repeater-adapter.service.mjs +75 -0
  13. package/{esm2020 → esm2022}/lib/modules/repeater/repeater-auto-scroll.service.mjs +4 -4
  14. package/{esm2020 → esm2022}/lib/modules/repeater/repeater-item-content.component.mjs +4 -4
  15. package/{esm2020 → esm2022}/lib/modules/repeater/repeater-item-context-menu.component.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/modules/repeater/repeater-item-title.component.mjs +4 -4
  17. package/esm2022/lib/modules/repeater/repeater-item.component.mjs +504 -0
  18. package/esm2022/lib/modules/repeater/repeater.component.mjs +373 -0
  19. package/{esm2020 → esm2022}/lib/modules/repeater/repeater.module.mjs +27 -27
  20. package/esm2022/lib/modules/repeater/repeater.service.mjs +86 -0
  21. package/{esm2020 → esm2022}/lib/modules/shared/sky-lists-resources.module.mjs +11 -11
  22. package/esm2022/lib/modules/sort/sort-item.component.mjs +66 -0
  23. package/{esm2020 → esm2022}/lib/modules/sort/sort-menu-heading.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/modules/sort/sort.component.mjs +4 -4
  25. package/{esm2020 → esm2022}/lib/modules/sort/sort.module.mjs +17 -17
  26. package/{esm2020 → esm2022}/lib/modules/sort/sort.service.mjs +4 -4
  27. package/esm2022/testing/filter/filter-fixture-button.mjs +53 -0
  28. package/esm2022/testing/filter/filter-fixture-summary.mjs +31 -0
  29. package/{esm2020 → esm2022}/testing/filter/filter-testing.module.mjs +5 -5
  30. package/esm2022/testing/infinite-scroll/infinite-scroll-fixture.mjs +31 -0
  31. package/esm2022/testing/infinite-scroll/infinite-scroll-harness.mjs +49 -0
  32. package/{esm2020 → esm2022}/testing/infinite-scroll/infinite-scroll-testing.module.mjs +5 -5
  33. package/esm2022/testing/paging/paging-fixture.mjs +95 -0
  34. package/{esm2020 → esm2022}/testing/paging/paging-testing.module.mjs +5 -5
  35. package/esm2022/testing/repeater/repeater-harness.mjs +25 -0
  36. package/esm2022/testing/repeater/repeater-item-harness.mjs +167 -0
  37. package/esm2022/testing/sort/sort-fixture.mjs +149 -0
  38. package/{esm2020 → esm2022}/testing/sort/sort-testing.module.mjs +5 -5
  39. package/fesm2022/skyux-lists-testing.mjs +664 -0
  40. package/{fesm2020 → fesm2022}/skyux-lists-testing.mjs.map +1 -1
  41. package/fesm2022/skyux-lists.mjs +1913 -0
  42. package/{fesm2020 → fesm2022}/skyux-lists.mjs.map +1 -1
  43. package/lib/modules/filter/filter-button.component.d.ts +1 -1
  44. package/lib/modules/filter/filter-summary-item.component.d.ts +1 -1
  45. package/lib/modules/infinite-scroll/infinite-scroll.component.d.ts +1 -1
  46. package/lib/modules/paging/paging.component.d.ts +1 -1
  47. package/lib/modules/repeater/repeater-item.component.d.ts +1 -1
  48. package/lib/modules/repeater/repeater.component.d.ts +1 -1
  49. package/lib/modules/sort/sort-item.component.d.ts +1 -1
  50. package/lib/modules/sort/sort.component.d.ts +1 -1
  51. package/package.json +22 -30
  52. package/esm2020/lib/modules/filter/filter-button.component.mjs +0 -75
  53. package/esm2020/lib/modules/filter/filter-summary-item.component.mjs +0 -54
  54. package/esm2020/lib/modules/infinite-scroll/infinite-scroll-dom-adapter.service.mjs +0 -84
  55. package/esm2020/lib/modules/infinite-scroll/infinite-scroll.component.mjs +0 -116
  56. package/esm2020/lib/modules/paging/paging.component.mjs +0 -123
  57. package/esm2020/lib/modules/repeater/repeater-adapter.service.mjs +0 -73
  58. package/esm2020/lib/modules/repeater/repeater-item.component.mjs +0 -492
  59. package/esm2020/lib/modules/repeater/repeater.component.mjs +0 -357
  60. package/esm2020/lib/modules/repeater/repeater.service.mjs +0 -88
  61. package/esm2020/lib/modules/sort/sort-item.component.mjs +0 -69
  62. package/esm2020/testing/filter/filter-fixture-button.mjs +0 -55
  63. package/esm2020/testing/filter/filter-fixture-summary.mjs +0 -34
  64. package/esm2020/testing/infinite-scroll/infinite-scroll-fixture.mjs +0 -34
  65. package/esm2020/testing/infinite-scroll/infinite-scroll-harness.mjs +0 -55
  66. package/esm2020/testing/paging/paging-fixture.mjs +0 -91
  67. package/esm2020/testing/repeater/repeater-harness.mjs +0 -25
  68. package/esm2020/testing/repeater/repeater-item-harness.mjs +0 -173
  69. package/esm2020/testing/sort/sort-fixture.mjs +0 -148
  70. package/fesm2015/skyux-lists-testing.mjs +0 -747
  71. package/fesm2015/skyux-lists-testing.mjs.map +0 -1
  72. package/fesm2015/skyux-lists.mjs +0 -1894
  73. package/fesm2015/skyux-lists.mjs.map +0 -1
  74. package/fesm2020/skyux-lists-testing.mjs +0 -673
  75. package/fesm2020/skyux-lists.mjs +0 -1886
  76. /package/{esm2020 → esm2022}/index.mjs +0 -0
  77. /package/{esm2020 → esm2022}/lib/modules/repeater/repeater-auto-scroll-options.mjs +0 -0
  78. /package/{esm2020 → esm2022}/lib/modules/repeater/repeater-auto-scroller.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/modules/repeater/repeater-expand-mode-type.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/modules/repeater/repeater-item-roles.type.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/modules/repeater/repeater-role.type.mjs +0 -0
  82. /package/{esm2020 → esm2022}/skyux-lists.mjs +0 -0
  83. /package/{esm2020 → esm2022}/testing/filter/lists-filter-fixture-button.mjs +0 -0
  84. /package/{esm2020 → esm2022}/testing/infinite-scroll/infinite-scroll-harness-filters.mjs +0 -0
  85. /package/{esm2020 → esm2022}/testing/paging/paging-fixture-button.mjs +0 -0
  86. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  87. /package/{esm2020 → esm2022}/testing/repeater/repeater-harness-filters.mjs +0 -0
  88. /package/{esm2020 → esm2022}/testing/repeater/repeater-item-harness-filters.mjs +0 -0
  89. /package/{esm2020 → esm2022}/testing/skyux-lists-testing.mjs +0 -0
  90. /package/{esm2020 → esm2022}/testing/sort/sort-fixture-menu-item.mjs +0 -0
  91. /package/{esm2020 → esm2022}/testing/sort/sort-fixture-menu.mjs +0 -0
@@ -0,0 +1,373 @@
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, Renderer2, inject, } from '@angular/core';
2
+ import { SkyLogService } from '@skyux/core';
3
+ import { SkyScrollableHostService } from '@skyux/core';
4
+ import { DragulaService } from 'ng2-dragula';
5
+ import { Subject } from 'rxjs';
6
+ import { takeUntil } from 'rxjs/operators';
7
+ import { SkyRepeaterAdapterService } from './repeater-adapter.service';
8
+ import { SkyRepeaterAutoScrollService } from './repeater-auto-scroll.service';
9
+ import { SkyRepeaterItemComponent } from './repeater-item.component';
10
+ import { SkyRepeaterService } from './repeater.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "ng2-dragula";
13
+ import * as i2 from "@angular/cdk/observers";
14
+ import * as i3 from "@skyux/i18n";
15
+ /**
16
+ * Creates a container to display repeater items.
17
+ */
18
+ export class SkyRepeaterComponent {
19
+ /**
20
+ * The layout that determines which repeater items are expanded by default and whether
21
+ * repeater items are expandable and collapsible. Collapsed items display titles only.
22
+ * The valid options are `multiple`, `none`, and `single`.
23
+ * - `multiple` loads repeater items in an expanded state unless `isExpanded` is set to
24
+ * `false` for a repeater item. This layout allows users to expand and collapse
25
+ * as many repeater items as necessary. It is best-suited to repeater items where body
26
+ * content is important but users don't always need to see it.
27
+ * - `none` loads all repeater items in an expanded state and does not allow users to
28
+ * collapse them. This default layout provides the quickest access to the details in the
29
+ * repeater items. It is best-suited to repeater items with concise content
30
+ * that users need to view frequently.
31
+ * - `single` loads one repeater item in an expanded state and collapses all others.
32
+ * The expanded repeater item is the first one where `isExpanded` is set to `true`. This layout
33
+ * allows users to expand one item at a time. It provides the most compact view and is
34
+ * best-suited to repeater items where the most important information is in the titles
35
+ * and users only occasionally need to view the body content.
36
+ * @default "none"
37
+ */
38
+ set expandMode(value) {
39
+ this.#repeaterService.expandMode = value;
40
+ this.#updateForExpandMode();
41
+ }
42
+ get expandMode() {
43
+ return this.#repeaterService.expandMode;
44
+ }
45
+ #autoScroller;
46
+ #ngUnsubscribe;
47
+ #itemNameWarned;
48
+ #adapterService;
49
+ #changeDetector;
50
+ #dragulaService;
51
+ #elementRef;
52
+ #renderer;
53
+ #repeaterService;
54
+ #autoScrollSvc;
55
+ #scrollableHostSvc;
56
+ #logSvc;
57
+ constructor() {
58
+ /**
59
+ * Whether users can change the order of items in the repeater list.
60
+ * Each repeater item also has `reorderable` property to indicate whether
61
+ * users can change its order.
62
+ */
63
+ this.reorderable = false;
64
+ /**
65
+ * Fires when the active repeater item changes.
66
+ */
67
+ this.activeIndexChange = new EventEmitter();
68
+ /**
69
+ * Fires when users change the order of repeater items.
70
+ * This event emits an ordered array of the `tag` properties that the consumer provides for each repeater item.
71
+ */
72
+ this.orderChange = new EventEmitter();
73
+ this.#ngUnsubscribe = new Subject();
74
+ this.#itemNameWarned = false;
75
+ this.#adapterService = inject(SkyRepeaterAdapterService);
76
+ this.#changeDetector = inject(ChangeDetectorRef);
77
+ this.#dragulaService = inject(DragulaService);
78
+ this.#elementRef = inject(ElementRef);
79
+ this.#renderer = inject(Renderer2);
80
+ this.#repeaterService = inject(SkyRepeaterService);
81
+ this.#autoScrollSvc = inject(SkyRepeaterAutoScrollService);
82
+ this.#scrollableHostSvc = inject(SkyScrollableHostService);
83
+ this.#logSvc = inject(SkyLogService);
84
+ this.dragulaGroupName = `sky-repeater-dragula-${this.#repeaterService.repeaterGroupId}`;
85
+ this.#repeaterService.itemCollapseStateChange
86
+ .pipe(takeUntil(this.#ngUnsubscribe))
87
+ .subscribe((item) => {
88
+ if (this.expandMode === 'single' && item.isExpanded) {
89
+ this.items?.forEach((otherItem) => {
90
+ if (otherItem !== item &&
91
+ otherItem.isExpanded &&
92
+ otherItem.isCollapsible) {
93
+ otherItem.isExpanded = false;
94
+ }
95
+ });
96
+ }
97
+ });
98
+ this.#repeaterService.activeItemIndexChange
99
+ .pipe(takeUntil(this.#ngUnsubscribe))
100
+ .subscribe((index) => {
101
+ if (index !== this.activeIndex) {
102
+ this.activeIndex = index;
103
+ this.activeIndexChange.emit(index);
104
+ }
105
+ });
106
+ this.#repeaterService.orderChange
107
+ .pipe(takeUntil(this.#ngUnsubscribe))
108
+ .subscribe(() => {
109
+ this.#emitTags();
110
+ });
111
+ this.#updateForExpandMode();
112
+ this.#adapterService.setRepeaterHost(this.#elementRef);
113
+ this.#initializeDragAndDrop();
114
+ }
115
+ ngAfterContentInit() {
116
+ // If activeIndex has been set on init, call service to activate the appropriate item.
117
+ setTimeout(() => {
118
+ if (this.activeIndex || this.activeIndex === 0) {
119
+ this.#repeaterService.activateItemByIndex(this.activeIndex);
120
+ }
121
+ this.#validateTags();
122
+ });
123
+ // HACK: Not updating for expand mode in a timeout causes an error.
124
+ // https://github.com/angular/angular/issues/6005
125
+ this.items?.changes.pipe(takeUntil(this.#ngUnsubscribe)).subscribe(() => {
126
+ setTimeout(() => {
127
+ if (this.items?.length) {
128
+ this.#updateForExpandMode(this.items.last);
129
+ this.#updateReorderability();
130
+ this.#repeaterService.items = this.items.toArray();
131
+ }
132
+ if (this.activeIndex !== undefined) {
133
+ this.#repeaterService.activateItemByIndex(this.activeIndex);
134
+ }
135
+ this.#updateRole();
136
+ this.#validateTags();
137
+ });
138
+ });
139
+ setTimeout(() => {
140
+ this.#updateForExpandMode();
141
+ this.items?.forEach((item) => {
142
+ item.reorderable = this.reorderable;
143
+ });
144
+ this.#updateRole();
145
+ }, 0);
146
+ }
147
+ ngAfterViewChecked() {
148
+ if (!this.#itemNameWarned && this.items?.some((item) => !item.itemName)) {
149
+ this.#logSvc?.deprecated('SkyRepeaterItemComponent without `itemName`', {
150
+ deprecationMajorVersion: 8,
151
+ replacementRecommendation: 'Always specify an `itemName` property.',
152
+ });
153
+ this.#itemNameWarned = true;
154
+ }
155
+ }
156
+ ngOnChanges(changes) {
157
+ if (changes['activeIndex']) {
158
+ this.#repeaterService.enableActiveState = true;
159
+ if (changes['activeIndex'].currentValue !==
160
+ changes['activeIndex'].previousValue) {
161
+ this.#repeaterService.activateItemByIndex(this.activeIndex);
162
+ }
163
+ }
164
+ if (changes['reorderable']) {
165
+ if (this.items) {
166
+ this.#updateReorderability();
167
+ }
168
+ this.#updateRole();
169
+ this.#changeDetector.markForCheck();
170
+ }
171
+ }
172
+ ngOnDestroy() {
173
+ this.#ngUnsubscribe.next();
174
+ this.#ngUnsubscribe.complete();
175
+ this.#destroyDragAndDrop();
176
+ }
177
+ ngOnInit() {
178
+ this.#updateRole();
179
+ }
180
+ onCdkObserveContent() {
181
+ this.#updateRole();
182
+ }
183
+ #updateForExpandMode(itemAdded) {
184
+ if (this.items) {
185
+ let foundExpanded = false;
186
+ const isCollapsible = this.expandMode !== 'none';
187
+ const isSingle = this.expandMode === 'single';
188
+ // Keep any newly-added expanded item expanded and collapse the rest.
189
+ if (itemAdded && itemAdded.isExpanded) {
190
+ foundExpanded = true;
191
+ }
192
+ for (const item of this.items) {
193
+ item.isCollapsible = isCollapsible && !!item.hasItemContent;
194
+ // Collapse any items that aren't the item that was just added.
195
+ if (item !== itemAdded && isSingle && item.isExpanded) {
196
+ if (foundExpanded) {
197
+ // If this item is being collapsed because a new item was
198
+ // added, animate it.
199
+ item.updateForExpanded(false, !!itemAdded);
200
+ }
201
+ foundExpanded = true;
202
+ }
203
+ }
204
+ this.#updateRole();
205
+ }
206
+ }
207
+ #initializeDragAndDrop() {
208
+ /* Sanity check that we haven't already set up dragging abilities */
209
+ /* istanbul ignore else */
210
+ if (!this.#dragulaService.find(this.dragulaGroupName)) {
211
+ this.#dragulaService.createGroup(this.dragulaGroupName, {
212
+ moves: (el, _container, handle) => {
213
+ const target = el?.querySelector('.sky-repeater-item-grab-handle');
214
+ return !!(this.reorderable && target?.contains(handle));
215
+ },
216
+ });
217
+ }
218
+ let draggedItemIndex = -1;
219
+ this.#dragulaService
220
+ .drag(this.dragulaGroupName)
221
+ .pipe(takeUntil(this.#ngUnsubscribe))
222
+ .subscribe((args) => {
223
+ /* istanbul ignore else */
224
+ if (args.name === this.dragulaGroupName) {
225
+ this.#destroyAutoScroll();
226
+ this.#autoScroller = this.#autoScrollSvc.autoScroll([this.#scrollableHostSvc.getScrollableHost(this.#elementRef)], {
227
+ margin: 20,
228
+ maxSpeed: 10,
229
+ scrollWhenOutside: true,
230
+ autoScroll: () => true,
231
+ });
232
+ this.#renderer.addClass(args.el, 'sky-repeater-item-dragging');
233
+ draggedItemIndex = this.#adapterService.getRepeaterItemIndex(args.el);
234
+ }
235
+ });
236
+ this.#dragulaService
237
+ .dragend(this.dragulaGroupName)
238
+ .pipe(takeUntil(this.#ngUnsubscribe))
239
+ .subscribe((args) => {
240
+ /* istanbul ignore else */
241
+ if (args.name === this.dragulaGroupName) {
242
+ this.#destroyAutoScroll();
243
+ this.#renderer.removeClass(args.el, 'sky-repeater-item-dragging');
244
+ const newItemIndex = this.#adapterService.getRepeaterItemIndex(args.el);
245
+ /* sanity check */
246
+ /* istanbul ignore else */
247
+ if (draggedItemIndex >= 0) {
248
+ this.#repeaterService.reorderItem(draggedItemIndex, newItemIndex);
249
+ draggedItemIndex = -1;
250
+ }
251
+ this.#emitTags();
252
+ }
253
+ });
254
+ }
255
+ #destroyDragAndDrop() {
256
+ /* Sanity check that we have set up dragging abilities */
257
+ /* istanbul ignore else */
258
+ if (this.#dragulaService.find(this.dragulaGroupName)) {
259
+ this.#dragulaService.destroy(this.dragulaGroupName);
260
+ }
261
+ this.#destroyAutoScroll();
262
+ }
263
+ #destroyAutoScroll() {
264
+ if (this.#autoScroller) {
265
+ this.#autoScroller.destroy();
266
+ this.#autoScroller = undefined;
267
+ }
268
+ }
269
+ #emitTags() {
270
+ const tags = this.#repeaterService.items.map((item) => item.tag);
271
+ this.orderChange.emit(tags);
272
+ }
273
+ #everyItemHasTag() {
274
+ /* sanity check */
275
+ /* istanbul ignore if */
276
+ if (!this.items || this.items.length === 0) {
277
+ return false;
278
+ }
279
+ return this.items.toArray().every((item) => {
280
+ return item.tag !== undefined;
281
+ });
282
+ }
283
+ #updateRole() {
284
+ // Determine a role using a hierarchy based on https://www.w3.org/TR/wai-aria-practices-1.1/
285
+ // 1. If there are one or more interactions in the repeater item projected content, use grid.
286
+ // 2. If there are selectable repeater items and no other interactions, use listbox.
287
+ // 3. If there are no interactions, use list.
288
+ // Default to list role.
289
+ let autoRole = 'list';
290
+ const roleMap = {
291
+ list: { item: 'listitem', title: undefined, content: undefined },
292
+ listbox: { item: 'option', title: undefined, content: undefined },
293
+ grid: { item: 'row', title: 'rowheader', content: 'gridcell' },
294
+ };
295
+ // Based on https://html.spec.whatwg.org/multipage/dom.html#interactive-content
296
+ const interactionSelector = [
297
+ 'a[href]',
298
+ 'audio[controls]',
299
+ 'button',
300
+ 'details',
301
+ 'embed',
302
+ 'iframe',
303
+ 'img[usemap]',
304
+ 'input:not([type="hidden"])',
305
+ 'label',
306
+ 'select',
307
+ 'textarea',
308
+ 'video[controls]',
309
+ '[contenteditable]',
310
+ '.sky-repeater[role="grid"]',
311
+ ]
312
+ .map((selector) => `sky-repeater-item-title ${selector}:not([hidden]), sky-repeater-item-content ${selector}:not([hidden])`)
313
+ .concat([`skyux-dropdown`])
314
+ .join(', ');
315
+ const hasInteraction = this.reorderable ||
316
+ this.items?.some((item) => item.isCollapsible) ||
317
+ this.items?.some((item) => !!item.selectable) ||
318
+ !!this.#elementRef.nativeElement.querySelector(interactionSelector);
319
+ if (hasInteraction) {
320
+ // If the repeater matches interaction selector https://www.w3.org/TR/wai-aria-practices-1.1/#grid
321
+ autoRole = 'grid';
322
+ }
323
+ if (this.role !== autoRole) {
324
+ this.#repeaterService.itemRole.next({
325
+ ...roleMap[autoRole],
326
+ });
327
+ this.role = `${autoRole}`;
328
+ this.#changeDetector.markForCheck();
329
+ }
330
+ }
331
+ #updateReorderability() {
332
+ if (this.items) {
333
+ for (const item of this.items) {
334
+ item.reorderable = this.reorderable;
335
+ }
336
+ }
337
+ }
338
+ #validateTags() {
339
+ if (this.reorderable && !this.#everyItemHasTag()) {
340
+ console.warn('Please supply tag properties for each repeater item when reordering functionality is enabled.');
341
+ }
342
+ }
343
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
344
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkyRepeaterComponent, selector: "sky-repeater", inputs: { activeIndex: "activeIndex", ariaLabel: "ariaLabel", reorderable: "reorderable", expandMode: "expandMode" }, outputs: { activeIndexChange: "activeIndexChange", orderChange: "orderChange" }, providers: [
345
+ SkyRepeaterService,
346
+ SkyRepeaterAdapterService,
347
+ SkyRepeaterAutoScrollService,
348
+ ], queries: [{ propertyName: "items", predicate: SkyRepeaterItemComponent }], usesOnChanges: true, ngImport: i0, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"], dependencies: [{ kind: "directive", type: i1.DragulaDirective, selector: "[dragula]", inputs: ["dragula", "dragulaModel"], outputs: ["dragulaModelChange"] }, { kind: "directive", type: i2.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
349
+ }
350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterComponent, decorators: [{
351
+ type: Component,
352
+ args: [{ selector: 'sky-repeater', providers: [
353
+ SkyRepeaterService,
354
+ SkyRepeaterAdapterService,
355
+ SkyRepeaterAutoScrollService,
356
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container #repeaterHost>\n <div\n class=\"sky-repeater\"\n [attr.role]=\"role\"\n [attr.aria-label]=\"ariaLabel || ('skyux_repeater_label' | skyLibResources)\"\n [dragula]=\"dragulaGroupName\"\n (cdkObserveContent)=\"onCdkObserveContent()\"\n >\n <ng-content></ng-content>\n </div>\n</ng-container>\n", styles: [".sky-repeater{padding:0}\n"] }]
357
+ }], ctorParameters: function () { return []; }, propDecorators: { activeIndex: [{
358
+ type: Input
359
+ }], ariaLabel: [{
360
+ type: Input
361
+ }], reorderable: [{
362
+ type: Input
363
+ }], expandMode: [{
364
+ type: Input
365
+ }], activeIndexChange: [{
366
+ type: Output
367
+ }], orderChange: [{
368
+ type: Output
369
+ }], items: [{
370
+ type: ContentChildren,
371
+ args: [SkyRepeaterItemComponent]
372
+ }] } });
373
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFFVCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUk5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFeEQ7O0dBRUc7QUFZSCxNQUFNLE9BQU8sb0JBQW9CO0lBOEIvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Ba0JHO0lBQ0gsSUFDVyxVQUFVLENBQUMs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O1lBQ3pCLDRCQUE0QjtTQUM3QixnREE0RWdCLHdCQUF3QixrREMxSDNDLHVVQVdBOzsyRkRzQ2Esb0JBQW9CO2tCQVhoQyxTQUFTOytCQUNFLGNBQWMsYUFHYjt3QkFDVCxrQkFBa0I7d0JBQ2xCLHlCQUF5Qjt3QkFDekIsNEJBQTRCO3FCQUM3QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTTswRUFZeEMsV0FBVztzQkFEakIsS0FBSztnQkFXQyxTQUFTO3NCQURmLEtBQUs7Z0JBU0MsV0FBVztzQkFEakIsS0FBSztnQkF1QkssVUFBVTtzQkFEcEIsS0FBSztnQkFjQyxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBU0EsV0FBVztzQkFGakIsTUFBTTtnQkFLQSxLQUFLO3NCQURYLGVBQWU7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNreUxvZ1NlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2UgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7IERyYWd1bGFTZXJ2aWNlIH0gZnJvbSAnbmcyLWRyYWd1bGEnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci1hZGFwdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsU2VydmljZSB9IGZyb20gJy4vcmVwZWF0ZXItYXV0by1zY3JvbGwuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB9IGZyb20gJy4vcmVwZWF0ZXItYXV0by1zY3JvbGxlcic7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1leHBhbmQtbW9kZS10eXBlJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbVJvbGVzVHlwZSB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS1yb2xlcy50eXBlJztcbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJSb2xlVHlwZSB9IGZyb20gJy4vcmVwZWF0ZXItcm9sZS50eXBlJztcbmltcG9ydCB7IFNreVJlcGVhdGVyU2VydmljZSB9IGZyb20gJy4vcmVwZWF0ZXIuc2VydmljZSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbnRhaW5lciB0byBkaXNwbGF5IHJlcGVhdGVyIGl0ZW1zLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktcmVwZWF0ZXInLFxuICBzdHlsZVVybHM6IFsnLi9yZXBlYXRlci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lSZXBlYXRlclNlcnZpY2UsXG4gICAgU2t5UmVwZWF0ZXJBZGFwdGVyU2VydmljZSxcbiAgICBTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2t5UmVwZWF0ZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0XG57XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggb2YgdGhlIHJlcGVhdGVyIGl0ZW0gdG8gdmlzdWFsbHkgaGlnaGxpZ2h0IGFzIGFjdGl2ZS5cbiAgICogRm9yIGV4YW1wbGUsIHVzZSB0aGlzIHByb3BlcnR5IGluIGNvbmp1bmN0aW9uIHdpdGggdGhlXG4gICAqIFtzcGxpdCB2aWV3IGNvbXBvbmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3NwbGl0LXZpZXcpXG4gICAqIHRvIGhpZ2hsaWdodCBhIHJlcGVhdGVyIGl0ZW0gd2hpbGUgdXNlcnMgZWRpdCBpdC4gT25seSBvbmUgaXRlbSBjYW4gYmUgYWN0aXZlIGF0IGEgdGltZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3RpdmVJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJJQSBsYWJlbCBmb3IgdGhlIHJlcGVhdGVyIGxpc3QuXG4gICAqIFRoaXMgc2V0cyB0aGUgcmVwZWF0ZXIgbGlzdCdzIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgdG8gcHJvdmlkZSBhIHRleHQgZXF1aXZhbGVudCBmb3Igc2NyZWVuIHJlYWRlcnNcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUsIHNlZSB0aGUgW1dBSS1BUklBIGRlZmluaXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS8jYXJpYS1sYWJlbCkuXG4gICAqIEBkZWZhdWx0IFwiTGlzdCBvZiBpdGVtc1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdXNlcnMgY2FuIGNoYW5nZSB0aGUgb3JkZXIgb2YgaXRlbXMgaW4gdGhlIHJlcGVhdGVyIGxpc3QuXG4gICAqIEVhY2ggcmVwZWF0ZXIgaXRlbSBhbHNvIGhhcyBgcmVvcmRlcmFibGVgIHByb3BlcnR5IHRvIGluZGljYXRlIHdoZXRoZXJcbiAgICogdXNlcnMgY2FuIGNoYW5nZSBpdHMgb3JkZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcmVvcmRlcmFibGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogVGhlIGxheW91dCB0aGF0IGRldGVybWluZXMgd2hpY2ggcmVwZWF0ZXIgaXRlbXMgYXJlIGV4cGFuZGVkIGJ5IGRlZmF1bHQgYW5kIHdoZXRoZXJcbiAgICogcmVwZWF0ZXIgaXRlbXMgYXJlIGV4cGFuZGFibGUgYW5kIGNvbGxhcHNpYmxlLiBDb2xsYXBzZWQgaXRlbXMgZGlzcGxheSB0aXRsZXMgb25seS5cbiAgICogVGhlIHZhbGlkIG9wdGlvbnMgYXJlIGBtdWx0aXBsZWAsIGBub25lYCwgYW5kIGBzaW5nbGVgLlxuICAgKiAtIGBtdWx0aXBsZWAgbG9hZHMgcmVwZWF0ZXIgaXRlbXMgaW4gYW4gZXhwYW5kZWQgc3RhdGUgdW5sZXNzIGBpc0V4cGFuZGVkYCBpcyBzZXQgdG9cbiAgICogYGZhbHNlYCBmb3IgYSByZXBlYXRlciBpdGVtLiBUaGlzIGxheW91dCBhbGxvd3MgdXNlcnMgdG8gZXhwYW5kIGFuZCBjb2xsYXBzZVxuICAgKiBhcyBtYW55IHJlcGVhdGVyIGl0ZW1zIGFzIG5lY2Vzc2FyeS4gSXQgaXMgYmVzdC1zdWl0ZWQgdG8gcmVwZWF0ZXIgaXRlbXMgd2hlcmUgYm9keVxuICAgKiBjb250ZW50IGlzIGltcG9ydGFudCBidXQgdXNlcnMgZG9uJ3QgYWx3YXlzIG5lZWQgdG8gc2VlIGl0LlxuICAgKiAtIGBub25lYCBsb2FkcyBhbGwgcmVwZWF0ZXIgaXRlbXMgaW4gYW4gZXhwYW5kZWQgc3RhdGUgYW5kIGRvZXMgbm90IGFsbG93IHVzZXJzIHRvXG4gICAqIGNvbGxhcHNlIHRoZW0uIFRoaXMgZGVmYXVsdCBsYXlvdXQgcHJvdmlkZXMgdGhlIHF1aWNrZXN0IGFjY2VzcyB0byB0aGUgZGV0YWlscyBpbiB0aGVcbiAgICogcmVwZWF0ZXIgaXRlbXMuIEl0IGlzIGJlc3Qtc3VpdGVkIHRvIHJlcGVhdGVyIGl0ZW1zIHdpdGggY29uY2lzZSBjb250ZW50XG4gICAqIHRoYXQgdXNlcnMgbmVlZCB0byB2aWV3IGZyZXF1ZW50bHkuXG4gICAqIC0gYHNpbmdsZWAgbG9hZHMgb25lIHJlcGVhdGVyIGl0ZW0gaW4gYW4gZXhwYW5kZWQgc3RhdGUgYW5kIGNvbGxhcHNlcyBhbGwgb3RoZXJzLlxuICAgKiBUaGUgZXhwYW5kZWQgcmVwZWF0ZXIgaXRlbSBpcyB0aGUgZmlyc3Qgb25lIHdoZXJlIGBpc0V4cGFuZGVkYCBpcyBzZXQgdG8gYHRydWVgLiBUaGlzIGxheW91dFxuICAgKiBhbGxvd3MgdXNlcnMgdG8gZXhwYW5kIG9uZSBpdGVtIGF0IGEgdGltZS4gSXQgcHJvdmlkZXMgdGhlIG1vc3QgY29tcGFjdCB2aWV3IGFuZCBpc1xuICAgKiBiZXN0LXN1aXRlZCB0byByZXBlYXRlciBpdGVtcyB3aGVyZSB0aGUgbW9zdCBpbXBvcnRhbnQgaW5mb3JtYXRpb24gaXMgaW4gdGhlIHRpdGxlc1xuICAgKiBhbmQgdXNlcnMgb25seSBvY2Nhc2lvbmFsbHkgbmVlZCB0byB2aWV3IHRoZSBib2R5IGNvbnRlbnQuXG4gICAqIEBkZWZhdWx0IFwibm9uZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGV4cGFuZE1vZGUodmFsdWU6IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZXhwYW5kTW9kZSA9IHZhbHVlO1xuICAgIHRoaXMuI3VwZGF0ZUZvckV4cGFuZE1vZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXhwYW5kTW9kZSgpOiBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmV4cGFuZE1vZGU7XG4gIH1cblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB0aGUgYWN0aXZlIHJlcGVhdGVyIGl0ZW0gY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWN0aXZlSW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBjaGFuZ2UgdGhlIG9yZGVyIG9mIHJlcGVhdGVyIGl0ZW1zLlxuICAgKiBUaGlzIGV2ZW50IGVtaXRzIGFuIG9yZGVyZWQgYXJyYXkgb2YgdGhlIGB0YWdgIHByb3BlcnRpZXMgdGhhdCB0aGUgY29uc3VtZXIgcHJvdmlkZXMgZm9yIGVhY2ggcmVwZWF0ZXIgaXRlbS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBwdWJsaWMgb3JkZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KVxuICBwdWJsaWMgaXRlbXM6IFF1ZXJ5TGlzdDxTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBkcmFndWxhR3JvdXBOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHJvbGU6IFNreVJlcGVhdGVyUm9sZVR5cGUgfCB1bmRlZmluZWQ7XG5cbiAgI2F1dG9TY3JvbGxlcjogU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsZXIgfCB1bmRlZmluZWQ7XG4gICNuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgI2l0ZW1OYW1lV2FybmVkID0gZmFsc2U7XG5cbiAgI2FkYXB0ZXJTZXJ2aWNlID0gaW5qZWN0KFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UpO1xuICAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAjZHJhZ3VsYVNlcnZpY2UgPSBpbmplY3QoRHJhZ3VsYVNlcnZpY2UpO1xuICAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICNyZXBlYXRlclNlcnZpY2UgPSBpbmplY3QoU2t5UmVwZWF0ZXJTZXJ2aWNlKTtcbiAgI2F1dG9TY3JvbGxTdmMgPSBpbmplY3QoU2t5UmVwZWF0ZXJBdXRvU2Nyb2xsU2VydmljZSk7XG4gICNzY3JvbGxhYmxlSG9zdFN2YyA9IGluamVjdChTa3lTY3JvbGxhYmxlSG9zdFNlcnZpY2UpO1xuICAjbG9nU3ZjID0gaW5qZWN0KFNreUxvZ1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSA9IGBza3ktcmVwZWF0ZXItZHJhZ3VsYS0ke1xuICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLnJlcGVhdGVyR3JvdXBJZFxuICAgIH1gO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtOiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kTW9kZSA9PT0gJ3NpbmdsZScgJiYgaXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaCgob3RoZXJJdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIG90aGVySXRlbSAhPT0gaXRlbSAmJlxuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgICBvdGhlckl0ZW0uaXNDb2xsYXBzaWJsZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0V4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2ZUl0ZW1JbmRleENoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICE9PSB0aGlzLmFjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLm9yZGVyQ2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy4jZW1pdFRhZ3MoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuXG4gICAgdGhpcy4jYWRhcHRlclNlcnZpY2Uuc2V0UmVwZWF0ZXJIb3N0KHRoaXMuI2VsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy4jaW5pdGlhbGl6ZURyYWdBbmREcm9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIC8vIElmIGFjdGl2ZUluZGV4IGhhcyBiZWVuIHNldCBvbiBpbml0LCBjYWxsIHNlcnZpY2UgdG8gYWN0aXZhdGUgdGhlIGFwcHJvcHJpYXRlIGl0ZW0uXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCB8fCB0aGlzLmFjdGl2ZUluZGV4ID09PSAwKSB7XG4gICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiN2YWxpZGF0ZVRhZ3MoKTtcbiAgICB9KTtcblxuICAgIC8vIEhBQ0s6IE5vdCB1cGRhdGluZyBmb3IgZXhwYW5kIG1vZGUgaW4gYSB0aW1lb3V0IGNhdXNlcyBhbiBlcnJvci5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy82MDA1XG4gICAgdGhpcy5pdGVtcz8uY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSh0aGlzLml0ZW1zLmxhc3QpO1xuXG4gICAgICAgICAgdGhpcy4jdXBkYXRlUmVvcmRlcmFiaWxpdHkoKTtcblxuICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtcyA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5hY3RpdmF0ZUl0ZW1CeUluZGV4KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuXG4gICAgICAgIHRoaXMuI3ZhbGlkYXRlVGFncygpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuI3VwZGF0ZUZvckV4cGFuZE1vZGUoKTtcblxuICAgICAgdGhpcy5pdGVtcz8uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpdGVtLnJlb3JkZXJhYmxlID0gdGhpcy5yZW9yZGVyYWJsZTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy4jaXRlbU5hbWVXYXJuZWQgJiYgdGhpcy5pdGVtcz8uc29tZSgoaXRlbSkgPT4gIWl0ZW0uaXRlbU5hbWUpKSB7XG4gICAgICB0aGlzLiNsb2dTdmM/LmRlcHJlY2F0ZWQoJ1NreVJlcGVhdGVySXRlbUNvbXBvbmVudCB3aXRob3V0IGBpdGVtTmFtZWAnLCB7XG4gICAgICAgIGRlcHJlY2F0aW9uTWFqb3JWZXJzaW9uOiA4LFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnQWx3YXlzIHNwZWNpZnkgYW4gYGl0ZW1OYW1lYCBwcm9wZXJ0eS4nLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI2l0ZW1OYW1lV2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydhY3RpdmVJbmRleCddKSB7XG4gICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZW5hYmxlQWN0aXZlU3RhdGUgPSB0cnVlO1xuICAgICAgaWYgKFxuICAgICAgICBjaGFuZ2VzWydhY3RpdmVJbmRleCddLmN1cnJlbnRWYWx1ZSAhPT1cbiAgICAgICAgY2hhbmdlc1snYWN0aXZlSW5kZXgnXS5wcmV2aW91c1ZhbHVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3Jlb3JkZXJhYmxlJ10pIHtcbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIHRoaXMuI3VwZGF0ZVJlb3JkZXJhYmlsaXR5KCk7XG4gICAgICB9XG4gICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG5cbiAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy4jZGVzdHJveURyYWdBbmREcm9wKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2RrT2JzZXJ2ZUNvbnRlbnQoKTogdm9pZCB7XG4gICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICB9XG5cbiAgI3VwZGF0ZUZvckV4cGFuZE1vZGUoaXRlbUFkZGVkPzogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIGxldCBmb3VuZEV4cGFuZGVkID0gZmFsc2U7XG4gICAgICBjb25zdCBpc0NvbGxhcHNpYmxlID0gdGhpcy5leHBhbmRNb2RlICE9PSAnbm9uZSc7XG4gICAgICBjb25zdCBpc1NpbmdsZSA9IHRoaXMuZXhwYW5kTW9kZSA9PT0gJ3NpbmdsZSc7XG5cbiAgICAgIC8vIEtlZXAgYW55IG5ld2x5LWFkZGVkIGV4cGFuZGVkIGl0ZW0gZXhwYW5kZWQgYW5kIGNvbGxhcHNlIHRoZSByZXN0LlxuICAgICAgaWYgKGl0ZW1BZGRlZCAmJiBpdGVtQWRkZWQuaXNFeHBhbmRlZCkge1xuICAgICAgICBmb3VuZEV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgaXRlbS5pc0NvbGxhcHNpYmxlID0gaXNDb2xsYXBzaWJsZSAmJiAhIWl0ZW0uaGFzSXRlbUNvbnRlbnQ7XG5cbiAgICAgICAgLy8gQ29sbGFwc2UgYW55IGl0ZW1zIHRoYXQgYXJlbid0IHRoZSBpdGVtIHRoYXQgd2FzIGp1c3QgYWRkZWQuXG4gICAgICAgIGlmIChpdGVtICE9PSBpdGVtQWRkZWQgJiYgaXNTaW5nbGUgJiYgaXRlbS5pc0V4cGFuZGVkKSB7XG4gICAgICAgICAgaWYgKGZvdW5kRXhwYW5kZWQpIHtcbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXRlbSBpcyBiZWluZyBjb2xsYXBzZWQgYmVjYXVzZSBhIG5ldyBpdGVtIHdhc1xuICAgICAgICAgICAgLy8gYWRkZWQsIGFuaW1hdGUgaXQuXG4gICAgICAgICAgICBpdGVtLnVwZGF0ZUZvckV4cGFuZGVkKGZhbHNlLCAhIWl0ZW1BZGRlZCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm91bmRFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jdXBkYXRlUm9sZSgpO1xuICAgIH1cbiAgfVxuXG4gICNpbml0aWFsaXplRHJhZ0FuZERyb3AoKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIHRoYXQgd2UgaGF2ZW4ndCBhbHJlYWR5IHNldCB1cCBkcmFnZ2luZyBhYmlsaXRpZXMgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy4jZHJhZ3VsYVNlcnZpY2UuZmluZCh0aGlzLmRyYWd1bGFHcm91cE5hbWUpKSB7XG4gICAgICB0aGlzLiNkcmFndWxhU2VydmljZS5jcmVhdGVHcm91cCh0aGlzLmRyYWd1bGFHcm91cE5hbWUsIHtcbiAgICAgICAgbW92ZXM6IChlbCwgX2NvbnRhaW5lciwgaGFuZGxlKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZWw/LnF1ZXJ5U2VsZWN0b3IoJy5za3ktcmVwZWF0ZXItaXRlbS1ncmFiLWhhbmRsZScpO1xuICAgICAgICAgIHJldHVybiAhIShcbiAgICAgICAgICAgIHRoaXMucmVvcmRlcmFibGUgJiYgdGFyZ2V0Py5jb250YWlucyhoYW5kbGUgYXMgRWxlbWVudCB8IG51bGwpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGxldCBkcmFnZ2VkSXRlbUluZGV4ID0gLTE7XG5cbiAgICB0aGlzLiNkcmFndWxhU2VydmljZVxuICAgICAgLmRyYWcodGhpcy5kcmFndWxhR3JvdXBOYW1lKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoYXJncy5uYW1lID09PSB0aGlzLmRyYWd1bGFHcm91cE5hbWUpIHtcbiAgICAgICAgICB0aGlzLiNkZXN0cm95QXV0b1Njcm9sbCgpO1xuXG4gICAgICAgICAgdGhpcy4jYXV0b1Njcm9sbGVyID0gdGhpcy4jYXV0b1Njcm9sbFN2Yy5hdXRvU2Nyb2xsKFxuICAgICAgICAgICAgW3RoaXMuI3Njcm9sbGFibGVIb3N0U3ZjLmdldFNjcm9sbGFibGVIb3N0KHRoaXMuI2VsZW1lbnRSZWYpXSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWFyZ2luOiAyMCxcbiAgICAgICAgICAgICAgbWF4U3BlZWQ6IDEwLFxuICAgICAgICAgICAgICBzY3JvbGxXaGVuT3V0c2lkZTogdHJ1ZSxcbiAgICAgICAgICAgICAgYXV0b1Njcm9sbDogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy4jcmVuZGVyZXIuYWRkQ2xhc3MoYXJncy5lbCwgJ3NreS1yZXBlYXRlci1pdGVtLWRyYWdnaW5nJyk7XG4gICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFJlcGVhdGVySXRlbUluZGV4KFxuICAgICAgICAgICAgYXJncy5lbCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2VcbiAgICAgIC5kcmFnZW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGFyZ3MpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKGFyZ3MubmFtZSA9PT0gdGhpcy5kcmFndWxhR3JvdXBOYW1lKSB7XG4gICAgICAgICAgdGhpcy4jZGVzdHJveUF1dG9TY3JvbGwoKTtcblxuICAgICAgICAgIHRoaXMuI3JlbmRlcmVyLnJlbW92ZUNsYXNzKGFyZ3MuZWwsICdza3ktcmVwZWF0ZXItaXRlbS1kcmFnZ2luZycpO1xuICAgICAgICAgIGNvbnN0IG5ld0l0ZW1JbmRleCA9IHRoaXMuI2FkYXB0ZXJTZXJ2aWNlLmdldFJlcGVhdGVySXRlbUluZGV4KFxuICAgICAgICAgICAgYXJncy5lbCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5yZW9yZGVySXRlbShkcmFnZ2VkSXRlbUluZGV4LCBuZXdJdGVtSW5kZXgpO1xuICAgICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCA9IC0xO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuI2VtaXRUYWdzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgI2Rlc3Ryb3lEcmFnQW5kRHJvcCgpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBoYXZlIHNldCB1cCBkcmFnZ2luZyBhYmlsaXRpZXMgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiNkcmFndWxhU2VydmljZS5maW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkpIHtcbiAgICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmRlc3Ryb3kodGhpcy5kcmFndWxhR3JvdXBOYW1lKTtcbiAgICB9XG5cbiAgICB0aGlzLiNkZXN0cm95QXV0b1Njcm9sbCgpO1xuICB9XG5cbiAgI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLiNhdXRvU2Nyb2xsZXIpIHtcbiAgICAgIHRoaXMuI2F1dG9TY3JvbGxlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLiNhdXRvU2Nyb2xsZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2VtaXRUYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IHRhZ3MgPSB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLnRhZyk7XG4gICAgdGhpcy5vcmRlckNoYW5nZS5lbWl0KHRhZ3MpO1xuICB9XG5cbiAgI2V2ZXJ5SXRlbUhhc1RhZygpOiBib29sZWFuIHtcbiAgICAvKiBzYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuaXRlbXMgfHwgdGhpcy5pdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMudG9BcnJheSgpLmV2ZXJ5KChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gaXRlbS50YWcgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgfVxuXG4gICN1cGRhdGVSb2xlKCk6IHZvaWQge1xuICAgIC8vIERldGVybWluZSBhIHJvbGUgdXNpbmcgYSBoaWVyYXJjaHkgYmFzZWQgb24gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjEvXG4gICAgLy8gICAxLiBJZiB0aGVyZSBhcmUgb25lIG9yIG1vcmUgaW50ZXJhY3Rpb25zIGluIHRoZSByZXBlYXRlciBpdGVtIHByb2plY3RlZCBjb250ZW50LCB1c2UgZ3JpZC5cbiAgICAvLyAgIDIuIElmIHRoZXJlIGFyZSBzZWxlY3RhYmxlIHJlcGVhdGVyIGl0ZW1zIGFuZCBubyBvdGhlciBpbnRlcmFjdGlvbnMsIHVzZSBsaXN0Ym94LlxuICAgIC8vICAgMy4gSWYgdGhlcmUgYXJlIG5vIGludGVyYWN0aW9ucywgdXNlIGxpc3QuXG5cbiAgICAvLyBEZWZhdWx0IHRvIGxpc3Qgcm9sZS5cbiAgICBsZXQgYXV0b1JvbGU6IFNreVJlcGVhdGVyUm9sZVR5cGUgPSAnbGlzdCc7XG5cbiAgICBjb25zdCByb2xlTWFwOiBSZWNvcmQ8U2t5UmVwZWF0ZXJSb2xlVHlwZSwgU2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlPiA9IHtcbiAgICAgIGxpc3Q6IHsgaXRlbTogJ2xpc3RpdGVtJywgdGl0bGU6IHVuZGVmaW5lZCwgY29udGVudDogdW5kZWZpbmVkIH0sXG4gICAgICBsaXN0Ym94OiB7IGl0ZW06ICdvcHRpb24nLCB0aXRsZTogdW5kZWZpbmVkLCBjb250ZW50OiB1bmRlZmluZWQgfSxcbiAgICAgIGdyaWQ6IHsgaXRlbTogJ3JvdycsIHRpdGxlOiAncm93aGVhZGVyJywgY29udGVudDogJ2dyaWRjZWxsJyB9LFxuICAgIH07XG5cbiAgICAvLyBCYXNlZCBvbiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9kb20uaHRtbCNpbnRlcmFjdGl2ZS1jb250ZW50XG4gICAgY29uc3QgaW50ZXJhY3Rpb25TZWxlY3RvciA9IFtcbiAgICAgICdhW2hyZWZdJyxcbiAgICAgICdhdWRpb1tjb250cm9sc10nLFxuICAgICAgJ2J1dHRvbicsXG4gICAgICAnZGV0YWlscycsXG4gICAgICAnZW1iZWQnLFxuICAgICAgJ2lmcmFtZScsXG4gICAgICAnaW1nW3VzZW1hcF0nLFxuICAgICAgJ2lucHV0Om5vdChbdHlwZT1cImhpZGRlblwiXSknLFxuICAgICAgJ2xhYmVsJyxcbiAgICAgICdzZWxlY3QnLFxuICAgICAgJ3RleHRhcmVhJyxcbiAgICAgICd2aWRlb1tjb250cm9sc10nLFxuICAgICAgJ1tjb250ZW50ZWRpdGFibGVdJyxcbiAgICAgICcuc2t5LXJlcGVhdGVyW3JvbGU9XCJncmlkXCJdJyxcbiAgICBdXG4gICAgICAubWFwKFxuICAgICAgICAoc2VsZWN0b3IpID0+XG4gICAgICAgICAgYHNreS1yZXBlYXRlci1pdGVtLXRpdGxlICR7c2VsZWN0b3J9Om5vdChbaGlkZGVuXSksIHNreS1yZXBlYXRlci1pdGVtLWNvbnRlbnQgJHtzZWxlY3Rvcn06bm90KFtoaWRkZW5dKWBcbiAgICAgIClcbiAgICAgIC5jb25jYXQoW2Bza3l1eC1kcm9wZG93bmBdKVxuICAgICAgLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBoYXNJbnRlcmFjdGlvbiA9XG4gICAgICB0aGlzLnJlb3JkZXJhYmxlIHx8XG4gICAgICB0aGlzLml0ZW1zPy5zb21lKChpdGVtKSA9PiBpdGVtLmlzQ29sbGFwc2libGUpIHx8XG4gICAgICB0aGlzLml0ZW1zPy5zb21lKChpdGVtKSA9PiAhIWl0ZW0uc2VsZWN0YWJsZSkgfHxcbiAgICAgICEhKHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkucXVlcnlTZWxlY3RvcihcbiAgICAgICAgaW50ZXJhY3Rpb25TZWxlY3RvclxuICAgICAgKTtcblxuICAgIGlmIChoYXNJbnRlcmFjdGlvbikge1xuICAgICAgLy8gSWYgdGhlIHJlcGVhdGVyIG1hdGNoZXMgaW50ZXJhY3Rpb24gc2VsZWN0b3IgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLXByYWN0aWNlcy0xLjEvI2dyaWRcbiAgICAgIGF1dG9Sb2xlID0gJ2dyaWQnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJvbGUgIT09IGF1dG9Sb2xlKSB7XG4gICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbVJvbGUubmV4dCh7XG4gICAgICAgIC4uLnJvbGVNYXBbYXV0b1JvbGVdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnJvbGUgPSBgJHthdXRvUm9sZX1gO1xuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVJlb3JkZXJhYmlsaXR5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICBpdGVtLnJlb3JkZXJhYmxlID0gdGhpcy5yZW9yZGVyYWJsZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdmFsaWRhdGVUYWdzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlb3JkZXJhYmxlICYmICF0aGlzLiNldmVyeUl0ZW1IYXNUYWcoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnUGxlYXNlIHN1cHBseSB0YWcgcHJvcGVydGllcyBmb3IgZWFjaCByZXBlYXRlciBpdGVtIHdoZW4gcmVvcmRlcmluZyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgI3JlcGVhdGVySG9zdD5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXJlcGVhdGVyXCJcbiAgICBbYXR0ci5yb2xlXT1cInJvbGVcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsIHx8ICgnc2t5dXhfcmVwZWF0ZXJfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVwiXG4gICAgW2RyYWd1bGFdPVwiZHJhZ3VsYUdyb3VwTmFtZVwiXG4gICAgKGNka09ic2VydmVDb250ZW50KT1cIm9uQ2RrT2JzZXJ2ZUNvbnRlbnQoKVwiXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -13,33 +13,33 @@ import { SkyRepeaterItemComponent } from './repeater-item.component';
13
13
  import { SkyRepeaterComponent } from './repeater.component';
14
14
  import * as i0 from "@angular/core";
15
15
  export class SkyRepeaterModule {
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
17
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterModule, declarations: [SkyRepeaterComponent,
18
+ SkyRepeaterItemComponent,
19
+ SkyRepeaterItemContentComponent,
20
+ SkyRepeaterItemContextMenuComponent,
21
+ SkyRepeaterItemTitleComponent], imports: [CommonModule,
22
+ DragulaModule,
23
+ ObserversModule,
24
+ SkyChevronModule,
25
+ SkyCheckboxModule,
26
+ SkyIconModule,
27
+ SkyInlineFormModule,
28
+ SkyListsResourcesModule], exports: [SkyRepeaterComponent,
29
+ SkyRepeaterItemComponent,
30
+ SkyRepeaterItemContentComponent,
31
+ SkyRepeaterItemContextMenuComponent,
32
+ SkyRepeaterItemTitleComponent] }); }
33
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterModule, providers: [DragulaService], imports: [CommonModule,
34
+ DragulaModule,
35
+ ObserversModule,
36
+ SkyChevronModule,
37
+ SkyCheckboxModule,
38
+ SkyIconModule,
39
+ SkyInlineFormModule,
40
+ SkyListsResourcesModule] }); }
16
41
  }
17
- SkyRepeaterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18
- SkyRepeaterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterModule, declarations: [SkyRepeaterComponent,
19
- SkyRepeaterItemComponent,
20
- SkyRepeaterItemContentComponent,
21
- SkyRepeaterItemContextMenuComponent,
22
- SkyRepeaterItemTitleComponent], imports: [CommonModule,
23
- DragulaModule,
24
- ObserversModule,
25
- SkyChevronModule,
26
- SkyCheckboxModule,
27
- SkyIconModule,
28
- SkyInlineFormModule,
29
- SkyListsResourcesModule], exports: [SkyRepeaterComponent,
30
- SkyRepeaterItemComponent,
31
- SkyRepeaterItemContentComponent,
32
- SkyRepeaterItemContextMenuComponent,
33
- SkyRepeaterItemTitleComponent] });
34
- SkyRepeaterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterModule, providers: [DragulaService], imports: [CommonModule,
35
- DragulaModule,
36
- ObserversModule,
37
- SkyChevronModule,
38
- SkyCheckboxModule,
39
- SkyIconModule,
40
- SkyInlineFormModule,
41
- SkyListsResourcesModule] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterModule, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterModule, decorators: [{
43
43
  type: NgModule,
44
44
  args: [{
45
45
  declarations: [
@@ -69,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
69
69
  providers: [DragulaService],
70
70
  }]
71
71
  }] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBNkI1RCxNQUFNLE9BQU8saUJBQWlCOzs4R0FBakIsaUJBQWlCOytHQUFqQixpQkFBaUIsaUJBekIxQixvQkFBb0I7UUFDcEIsd0JBQXdCO1FBQ3hCLCtCQUErQjtRQUMvQixtQ0FBbUM7UUFDbkMsNkJBQTZCLGFBRzdCLFlBQVk7UUFDWixhQUFhO1FBQ2IsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixpQkFBaUI7UUFDakIsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQix1QkFBdUIsYUFHdkIsb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0IsbUNBQW1DO1FBQ25DLDZCQUE2QjsrR0FJcEIsaUJBQWlCLGFBRmpCLENBQUMsY0FBYyxDQUFDLFlBaEJ6QixZQUFZO1FBQ1osYUFBYTtRQUNiLGVBQWU7UUFDZixnQkFBZ0I7UUFDaEIsaUJBQWlCO1FBQ2pCLGFBQWE7UUFDYixtQkFBbUI7UUFDbkIsdUJBQXVCOzJGQVdkLGlCQUFpQjtrQkEzQjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLG1DQUFtQzt3QkFDbkMsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsK0JBQStCO3dCQUMvQixtQ0FBbUM7d0JBQ25DLDZCQUE2QjtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmVyc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vYnNlcnZlcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDaGV2cm9uTW9kdWxlLCBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5SW5saW5lRm9ybU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pbmxpbmUtZm9ybSc7XG5cbmltcG9ydCB7IERyYWd1bGFNb2R1bGUsIERyYWd1bGFTZXJ2aWNlIH0gZnJvbSAnbmcyLWRyYWd1bGEnO1xuXG5pbXBvcnQgeyBTa3lMaXN0c1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbGlzdHMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29udGV4dE1lbnVDb21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tY29udGV4dC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1UaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS10aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckNvbXBvbmVudCB9IGZyb20gJy4vcmVwZWF0ZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2t5UmVwZWF0ZXJDb21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50LFxuICAgIFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJhZ3VsYU1vZHVsZSxcbiAgICBPYnNlcnZlcnNNb2R1bGUsXG4gICAgU2t5Q2hldnJvbk1vZHVsZSxcbiAgICBTa3lDaGVja2JveE1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUlubGluZUZvcm1Nb2R1bGUsXG4gICAgU2t5TGlzdHNSZXNvdXJjZXNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTa3lSZXBlYXRlckNvbXBvbmVudCxcbiAgICBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudCxcbiAgICBTa3lSZXBlYXRlckl0ZW1Db250ZXh0TWVudUNvbXBvbmVudCxcbiAgICBTa3lSZXBlYXRlckl0ZW1UaXRsZUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRHJhZ3VsYVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlck1vZHVsZSB7fVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFL0UsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEYsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDN0YsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBNkI1RCxNQUFNLE9BQU8saUJBQWlCOzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkF6QjFCLG9CQUFvQjtZQUNwQix3QkFBd0I7WUFDeEIsK0JBQStCO1lBQy9CLG1DQUFtQztZQUNuQyw2QkFBNkIsYUFHN0IsWUFBWTtZQUNaLGFBQWE7WUFDYixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLHVCQUF1QixhQUd2QixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLCtCQUErQjtZQUMvQixtQ0FBbUM7WUFDbkMsNkJBQTZCOytHQUlwQixpQkFBaUIsYUFGakIsQ0FBQyxjQUFjLENBQUMsWUFoQnpCLFlBQVk7WUFDWixhQUFhO1lBQ2IsZUFBZTtZQUNmLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLG1CQUFtQjtZQUNuQix1QkFBdUI7OzJGQVdkLGlCQUFpQjtrQkEzQjdCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLG1DQUFtQzt3QkFDbkMsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQix1QkFBdUI7cUJBQ3hCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsK0JBQStCO3dCQUMvQixtQ0FBbUM7d0JBQ25DLDZCQUE2QjtxQkFDOUI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsY0FBYyxDQUFDO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmVyc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vYnNlcnZlcnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTa3lDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lDaGV2cm9uTW9kdWxlLCBTa3lJY29uTW9kdWxlIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuaW1wb3J0IHsgU2t5SW5saW5lRm9ybU1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pbmxpbmUtZm9ybSc7XG5cbmltcG9ydCB7IERyYWd1bGFNb2R1bGUsIERyYWd1bGFTZXJ2aWNlIH0gZnJvbSAnbmcyLWRyYWd1bGEnO1xuXG5pbXBvcnQgeyBTa3lMaXN0c1Jlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktbGlzdHMtcmVzb3VyY2VzLm1vZHVsZSc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29udGV4dE1lbnVDb21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tY29udGV4dC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1UaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vcmVwZWF0ZXItaXRlbS10aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckNvbXBvbmVudCB9IGZyb20gJy4vcmVwZWF0ZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgU2t5UmVwZWF0ZXJDb21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50LFxuICAgIFNreVJlcGVhdGVySXRlbUNvbnRlbnRDb21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29udGV4dE1lbnVDb21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRHJhZ3VsYU1vZHVsZSxcbiAgICBPYnNlcnZlcnNNb2R1bGUsXG4gICAgU2t5Q2hldnJvbk1vZHVsZSxcbiAgICBTa3lDaGVja2JveE1vZHVsZSxcbiAgICBTa3lJY29uTW9kdWxlLFxuICAgIFNreUlubGluZUZvcm1Nb2R1bGUsXG4gICAgU2t5TGlzdHNSZXNvdXJjZXNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBTa3lSZXBlYXRlckNvbXBvbmVudCxcbiAgICBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQsXG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29udGVudENvbXBvbmVudCxcbiAgICBTa3lSZXBlYXRlckl0ZW1Db250ZXh0TWVudUNvbXBvbmVudCxcbiAgICBTa3lSZXBlYXRlckl0ZW1UaXRsZUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbRHJhZ3VsYVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,86 @@
1
+ import { EventEmitter, Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ let uniqueId = 0;
5
+ const DEFAULT_EXPAND_MODE = 'none';
6
+ /**
7
+ * @internal
8
+ */
9
+ export class SkyRepeaterService {
10
+ constructor() {
11
+ this.activeItemChange = new BehaviorSubject(undefined);
12
+ this.activeItemIndexChange = new BehaviorSubject(undefined);
13
+ this.enableActiveState = false;
14
+ this.itemCollapseStateChange = new EventEmitter();
15
+ this.items = [];
16
+ this.itemRole = new BehaviorSubject({
17
+ content: undefined,
18
+ item: undefined,
19
+ title: undefined,
20
+ });
21
+ this.orderChange = new BehaviorSubject(undefined);
22
+ this.repeaterGroupId = ++uniqueId;
23
+ this.#_expandMode = DEFAULT_EXPAND_MODE;
24
+ }
25
+ // TODO: Remove 'string' as a valid type in a breaking change.
26
+ get expandMode() {
27
+ return this.#_expandMode;
28
+ }
29
+ set expandMode(value) {
30
+ this.#_expandMode = value ?? DEFAULT_EXPAND_MODE;
31
+ }
32
+ #_expandMode;
33
+ ngOnDestroy() {
34
+ this.activeItemChange.complete();
35
+ this.itemCollapseStateChange.complete();
36
+ this.orderChange.complete();
37
+ }
38
+ activateItem(item) {
39
+ if (this.enableActiveState) {
40
+ /* istanbul ignore else */
41
+ if (item && !item.disabled) {
42
+ const index = this.items.findIndex((i) => i === item);
43
+ this.activeItemIndexChange.next(index);
44
+ this.activeItemChange.next(item);
45
+ }
46
+ }
47
+ }
48
+ activateItemByIndex(index) {
49
+ /* istanbul ignore else */
50
+ if (this.enableActiveState) {
51
+ if (index === undefined) {
52
+ this.activeItemChange.next(undefined);
53
+ }
54
+ else {
55
+ const activeItem = this.items[index];
56
+ if (activeItem && !activeItem.disabled) {
57
+ this.activeItemChange.next(activeItem);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ registerItem(item) {
63
+ this.items.push(item);
64
+ }
65
+ unregisterItem(item) {
66
+ const indexOfDestroyedItem = this.items.indexOf(item);
67
+ if (indexOfDestroyedItem > -1) {
68
+ this.items.splice(indexOfDestroyedItem, 1);
69
+ }
70
+ }
71
+ onItemCollapseStateChange(item) {
72
+ this.itemCollapseStateChange.emit(item);
73
+ }
74
+ registerOrderChange() {
75
+ this.orderChange.next();
76
+ }
77
+ reorderItem(oldIndex, newIndex) {
78
+ this.items.splice(newIndex, 0, this.items.splice(oldIndex, 1)[0]);
79
+ }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
81
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterService }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyRepeaterService, decorators: [{
84
+ type: Injectable
85
+ }] });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy9zcmMvbGliL21vZHVsZXMvcmVwZWF0ZXIvcmVwZWF0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUVwRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU12QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakIsTUFBTSxtQkFBbUIsR0FBOEIsTUFBTSxDQUFDO0FBRTlEOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVTLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUUzQyxTQUFTLENBQUMsQ0FBQztRQUVOLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUNoRCxTQUFTLENBQ1YsQ0FBQztRQUVLLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQVUxQiw0QkFBdUIsR0FBRyxJQUFJLFlBQVksRUFBNEIsQ0FBQztRQUV2RSxVQUFLLEdBQStCLEVBQUUsQ0FBQztRQUU5QixhQUFRLEdBQUcsSUFBSSxlQUFlLENBQTJCO1lBQ3ZFLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsS0FBSyxFQUFFLFNBQVM7U0FDakIsQ0FBQyxDQUFDO1FBRUksZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBTyxTQUFTLENBQUMsQ0FBQztRQUVuRCxvQkFBZSxHQUFHLEVBQUUsUUFBUSxDQUFDO1FBRXBDLGlCQUFZLEdBQUcsbUJBQW1CLENBQUM7S0F1RHBDO0lBN0VDLDhEQUE4RDtJQUM5RCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFVBQVUsQ0FBQyxLQUE0QztRQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssSUFBSSxtQkFBbUIsQ0FBQztJQUNuRCxDQUFDO0lBZ0JELFlBQVksQ0FBdUI7SUFFNUIsV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUE4QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQiwwQkFBMEI7WUFDMUIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBeUI7UUFDbEQsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3hDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTSxZQUFZLENBQUMsSUFBOEI7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUE4QjtRQUNsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRU0seUJBQXlCLENBQUMsSUFBOEI7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs4R0F2RlUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB9IGZyb20gJy4vcmVwZWF0ZXItZXhwYW5kLW1vZGUtdHlwZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1Sb2xlc1R5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0tcm9sZXMudHlwZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3JlcGVhdGVyLWl0ZW0uY29tcG9uZW50JztcblxubGV0IHVuaXF1ZUlkID0gMDtcbmNvbnN0IERFRkFVTFRfRVhQQU5EX01PREU6IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgPSAnbm9uZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgYWN0aXZlSXRlbUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgYWN0aXZlSXRlbUluZGV4Q2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZFxuICApO1xuXG4gIHB1YmxpYyBlbmFibGVBY3RpdmVTdGF0ZSA9IGZhbHNlO1xuXG4gIC8vIFRPRE86IFJlbW92ZSAnc3RyaW5nJyBhcyBhIHZhbGlkIHR5cGUgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gIHB1YmxpYyBnZXQgZXhwYW5kTW9kZSgpOiBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIHtcbiAgICByZXR1cm4gdGhpcy4jX2V4cGFuZE1vZGU7XG4gIH1cbiAgcHVibGljIHNldCBleHBhbmRNb2RlKHZhbHVlOiBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jX2V4cGFuZE1vZGUgPSB2YWx1ZSA/PyBERUZBVUxUX0VYUEFORF9NT0RFO1xuICB9XG5cbiAgcHVibGljIGl0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQ+KCk7XG5cbiAgcHVibGljIGl0ZW1zOiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnRbXSA9IFtdO1xuXG4gIHB1YmxpYyByZWFkb25seSBpdGVtUm9sZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlPih7XG4gICAgY29udGVudDogdW5kZWZpbmVkLFxuICAgIGl0ZW06IHVuZGVmaW5lZCxcbiAgICB0aXRsZTogdW5kZWZpbmVkLFxuICB9KTtcblxuICBwdWJsaWMgb3JkZXJDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIHJlcGVhdGVyR3JvdXBJZCA9ICsrdW5pcXVlSWQ7XG5cbiAgI19leHBhbmRNb2RlID0gREVGQVVMVF9FWFBBTkRfTU9ERTtcblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVJdGVtQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5pdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3JkZXJDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZUl0ZW0oaXRlbTogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlQWN0aXZlU3RhdGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAoaXRlbSAmJiAhaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuaXRlbXMuZmluZEluZGV4KChpKSA9PiBpID09PSBpdGVtKTtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtSW5kZXhDaGFuZ2UubmV4dChpbmRleCk7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUNoYW5nZS5uZXh0KGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhY3RpdmF0ZUl0ZW1CeUluZGV4KGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmVuYWJsZUFjdGl2ZVN0YXRlKSB7XG4gICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UubmV4dCh1bmRlZmluZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgICAgICBpZiAoYWN0aXZlSXRlbSAmJiAhYWN0aXZlSXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbUNoYW5nZS5uZXh0KGFjdGl2ZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVySXRlbShpdGVtOiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgdW5yZWdpc3Rlckl0ZW0oaXRlbTogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXhPZkRlc3Ryb3llZEl0ZW0gPSB0aGlzLml0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4T2ZEZXN0cm95ZWRJdGVtID4gLTEpIHtcbiAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4T2ZEZXN0cm95ZWRJdGVtLCAxKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25JdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZShpdGVtOiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1Db2xsYXBzZVN0YXRlQ2hhbmdlLmVtaXQoaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPcmRlckNoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW9yZGVySXRlbShvbGRJbmRleDogbnVtYmVyLCBuZXdJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcy5zcGxpY2UobmV3SW5kZXgsIDAsIHRoaXMuaXRlbXMuc3BsaWNlKG9sZEluZGV4LCAxKVswXSk7XG4gIH1cbn1cbiJdfQ==