@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
@@ -1,357 +0,0 @@
1
- var _SkyRepeaterComponent_instances, _SkyRepeaterComponent_autoScroller, _SkyRepeaterComponent_ngUnsubscribe, _SkyRepeaterComponent_itemNameWarned, _SkyRepeaterComponent_adapterService, _SkyRepeaterComponent_changeDetector, _SkyRepeaterComponent_dragulaService, _SkyRepeaterComponent_elementRef, _SkyRepeaterComponent_renderer, _SkyRepeaterComponent_repeaterService, _SkyRepeaterComponent_autoScrollSvc, _SkyRepeaterComponent_scrollableHostSvc, _SkyRepeaterComponent_logSvc, _SkyRepeaterComponent_updateForExpandMode, _SkyRepeaterComponent_initializeDragAndDrop, _SkyRepeaterComponent_destroyDragAndDrop, _SkyRepeaterComponent_destroyAutoScroll, _SkyRepeaterComponent_emitTags, _SkyRepeaterComponent_everyItemHasTag, _SkyRepeaterComponent_updateRole, _SkyRepeaterComponent_updateReorderability, _SkyRepeaterComponent_validateTags;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, Renderer2, inject, } from '@angular/core';
4
- import { SkyLogService } from '@skyux/core';
5
- import { SkyScrollableHostService } from '@skyux/core';
6
- import { DragulaService } from 'ng2-dragula';
7
- import { Subject } from 'rxjs';
8
- import { takeUntil } from 'rxjs/operators';
9
- import { SkyRepeaterAdapterService } from './repeater-adapter.service';
10
- import { SkyRepeaterAutoScrollService } from './repeater-auto-scroll.service';
11
- import { SkyRepeaterItemComponent } from './repeater-item.component';
12
- import { SkyRepeaterService } from './repeater.service';
13
- import * as i0 from "@angular/core";
14
- import * as i1 from "ng2-dragula";
15
- import * as i2 from "@angular/cdk/observers";
16
- import * as i3 from "@skyux/i18n";
17
- /**
18
- * Creates a container to display repeater items.
19
- */
20
- export class SkyRepeaterComponent {
21
- /**
22
- * The layout that determines which repeater items are expanded by default and whether
23
- * repeater items are expandable and collapsible. Collapsed items display titles only.
24
- * The valid options are `multiple`, `none`, and `single`.
25
- * - `multiple` loads repeater items in an expanded state unless `isExpanded` is set to
26
- * `false` for a repeater item. This layout allows users to expand and collapse
27
- * as many repeater items as necessary. It is best-suited to repeater items where body
28
- * content is important but users don't always need to see it.
29
- * - `none` loads all repeater items in an expanded state and does not allow users to
30
- * collapse them. This default layout provides the quickest access to the details in the
31
- * repeater items. It is best-suited to repeater items with concise content
32
- * that users need to view frequently.
33
- * - `single` loads one repeater item in an expanded state and collapses all others.
34
- * The expanded repeater item is the first one where `isExpanded` is set to `true`. This layout
35
- * allows users to expand one item at a time. It provides the most compact view and is
36
- * best-suited to repeater items where the most important information is in the titles
37
- * and users only occasionally need to view the body content.
38
- * @default "none"
39
- */
40
- set expandMode(value) {
41
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").expandMode = value;
42
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateForExpandMode).call(this);
43
- }
44
- get expandMode() {
45
- return __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").expandMode;
46
- }
47
- constructor() {
48
- _SkyRepeaterComponent_instances.add(this);
49
- /**
50
- * Whether users can change the order of items in the repeater list.
51
- * Each repeater item also has `reorderable` property to indicate whether
52
- * users can change its order.
53
- */
54
- this.reorderable = false;
55
- /**
56
- * Fires when the active repeater item changes.
57
- */
58
- this.activeIndexChange = new EventEmitter();
59
- /**
60
- * Fires when users change the order of repeater items.
61
- * This event emits an ordered array of the `tag` properties that the consumer provides for each repeater item.
62
- */
63
- this.orderChange = new EventEmitter();
64
- _SkyRepeaterComponent_autoScroller.set(this, void 0);
65
- _SkyRepeaterComponent_ngUnsubscribe.set(this, new Subject());
66
- _SkyRepeaterComponent_itemNameWarned.set(this, false);
67
- _SkyRepeaterComponent_adapterService.set(this, inject(SkyRepeaterAdapterService));
68
- _SkyRepeaterComponent_changeDetector.set(this, inject(ChangeDetectorRef));
69
- _SkyRepeaterComponent_dragulaService.set(this, inject(DragulaService));
70
- _SkyRepeaterComponent_elementRef.set(this, inject(ElementRef));
71
- _SkyRepeaterComponent_renderer.set(this, inject(Renderer2));
72
- _SkyRepeaterComponent_repeaterService.set(this, inject(SkyRepeaterService));
73
- _SkyRepeaterComponent_autoScrollSvc.set(this, inject(SkyRepeaterAutoScrollService));
74
- _SkyRepeaterComponent_scrollableHostSvc.set(this, inject(SkyScrollableHostService));
75
- _SkyRepeaterComponent_logSvc.set(this, inject(SkyLogService));
76
- this.dragulaGroupName = `sky-repeater-dragula-${__classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").repeaterGroupId}`;
77
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").itemCollapseStateChange
78
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f")))
79
- .subscribe((item) => {
80
- if (this.expandMode === 'single' && item.isExpanded) {
81
- this.items?.forEach((otherItem) => {
82
- if (otherItem !== item &&
83
- otherItem.isExpanded &&
84
- otherItem.isCollapsible) {
85
- otherItem.isExpanded = false;
86
- }
87
- });
88
- }
89
- });
90
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activeItemIndexChange
91
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f")))
92
- .subscribe((index) => {
93
- if (index !== this.activeIndex) {
94
- this.activeIndex = index;
95
- this.activeIndexChange.emit(index);
96
- }
97
- });
98
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").orderChange
99
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f")))
100
- .subscribe(() => {
101
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_emitTags).call(this);
102
- });
103
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateForExpandMode).call(this);
104
- __classPrivateFieldGet(this, _SkyRepeaterComponent_adapterService, "f").setRepeaterHost(__classPrivateFieldGet(this, _SkyRepeaterComponent_elementRef, "f"));
105
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_initializeDragAndDrop).call(this);
106
- }
107
- ngAfterContentInit() {
108
- // If activeIndex has been set on init, call service to activate the appropriate item.
109
- setTimeout(() => {
110
- if (this.activeIndex || this.activeIndex === 0) {
111
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
112
- }
113
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_validateTags).call(this);
114
- });
115
- // HACK: Not updating for expand mode in a timeout causes an error.
116
- // https://github.com/angular/angular/issues/6005
117
- this.items?.changes.pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f"))).subscribe(() => {
118
- setTimeout(() => {
119
- if (this.items?.length) {
120
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateForExpandMode).call(this, this.items.last);
121
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateReorderability).call(this);
122
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").items = this.items.toArray();
123
- }
124
- if (this.activeIndex !== undefined) {
125
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
126
- }
127
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
128
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_validateTags).call(this);
129
- });
130
- });
131
- setTimeout(() => {
132
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateForExpandMode).call(this);
133
- this.items?.forEach((item) => {
134
- item.reorderable = this.reorderable;
135
- });
136
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
137
- }, 0);
138
- }
139
- ngAfterViewChecked() {
140
- if (!__classPrivateFieldGet(this, _SkyRepeaterComponent_itemNameWarned, "f") && this.items?.some((item) => !item.itemName)) {
141
- __classPrivateFieldGet(this, _SkyRepeaterComponent_logSvc, "f")?.deprecated('SkyRepeaterItemComponent without `itemName`', {
142
- deprecationMajorVersion: 8,
143
- replacementRecommendation: 'Always specify an `itemName` property.',
144
- });
145
- __classPrivateFieldSet(this, _SkyRepeaterComponent_itemNameWarned, true, "f");
146
- }
147
- }
148
- ngOnChanges(changes) {
149
- if (changes['activeIndex']) {
150
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").enableActiveState = true;
151
- if (changes['activeIndex'].currentValue !==
152
- changes['activeIndex'].previousValue) {
153
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").activateItemByIndex(this.activeIndex);
154
- }
155
- }
156
- if (changes['reorderable']) {
157
- if (this.items) {
158
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateReorderability).call(this);
159
- }
160
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
161
- __classPrivateFieldGet(this, _SkyRepeaterComponent_changeDetector, "f").markForCheck();
162
- }
163
- }
164
- ngOnDestroy() {
165
- __classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f").next();
166
- __classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f").complete();
167
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyDragAndDrop).call(this);
168
- }
169
- ngOnInit() {
170
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
171
- }
172
- onCdkObserveContent() {
173
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
174
- }
175
- }
176
- _SkyRepeaterComponent_autoScroller = new WeakMap(), _SkyRepeaterComponent_ngUnsubscribe = new WeakMap(), _SkyRepeaterComponent_itemNameWarned = new WeakMap(), _SkyRepeaterComponent_adapterService = new WeakMap(), _SkyRepeaterComponent_changeDetector = new WeakMap(), _SkyRepeaterComponent_dragulaService = new WeakMap(), _SkyRepeaterComponent_elementRef = new WeakMap(), _SkyRepeaterComponent_renderer = new WeakMap(), _SkyRepeaterComponent_repeaterService = new WeakMap(), _SkyRepeaterComponent_autoScrollSvc = new WeakMap(), _SkyRepeaterComponent_scrollableHostSvc = new WeakMap(), _SkyRepeaterComponent_logSvc = new WeakMap(), _SkyRepeaterComponent_instances = new WeakSet(), _SkyRepeaterComponent_updateForExpandMode = function _SkyRepeaterComponent_updateForExpandMode(itemAdded) {
177
- if (this.items) {
178
- let foundExpanded = false;
179
- const isCollapsible = this.expandMode !== 'none';
180
- const isSingle = this.expandMode === 'single';
181
- // Keep any newly-added expanded item expanded and collapse the rest.
182
- if (itemAdded && itemAdded.isExpanded) {
183
- foundExpanded = true;
184
- }
185
- for (const item of this.items) {
186
- item.isCollapsible = isCollapsible && !!item.hasItemContent;
187
- // Collapse any items that aren't the item that was just added.
188
- if (item !== itemAdded && isSingle && item.isExpanded) {
189
- if (foundExpanded) {
190
- // If this item is being collapsed because a new item was
191
- // added, animate it.
192
- item.updateForExpanded(false, !!itemAdded);
193
- }
194
- foundExpanded = true;
195
- }
196
- }
197
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_updateRole).call(this);
198
- }
199
- }, _SkyRepeaterComponent_initializeDragAndDrop = function _SkyRepeaterComponent_initializeDragAndDrop() {
200
- /* Sanity check that we haven't already set up dragging abilities */
201
- /* istanbul ignore else */
202
- if (!__classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").find(this.dragulaGroupName)) {
203
- __classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").createGroup(this.dragulaGroupName, {
204
- moves: (el, _container, handle) => {
205
- const target = el?.querySelector('.sky-repeater-item-grab-handle');
206
- return !!(this.reorderable && target?.contains(handle));
207
- },
208
- });
209
- }
210
- let draggedItemIndex = -1;
211
- __classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f")
212
- .drag(this.dragulaGroupName)
213
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f")))
214
- .subscribe((args) => {
215
- /* istanbul ignore else */
216
- if (args.name === this.dragulaGroupName) {
217
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyAutoScroll).call(this);
218
- __classPrivateFieldSet(this, _SkyRepeaterComponent_autoScroller, __classPrivateFieldGet(this, _SkyRepeaterComponent_autoScrollSvc, "f").autoScroll([__classPrivateFieldGet(this, _SkyRepeaterComponent_scrollableHostSvc, "f").getScrollableHost(__classPrivateFieldGet(this, _SkyRepeaterComponent_elementRef, "f"))], {
219
- margin: 20,
220
- maxSpeed: 10,
221
- scrollWhenOutside: true,
222
- autoScroll: () => true,
223
- }), "f");
224
- __classPrivateFieldGet(this, _SkyRepeaterComponent_renderer, "f").addClass(args.el, 'sky-repeater-item-dragging');
225
- draggedItemIndex = __classPrivateFieldGet(this, _SkyRepeaterComponent_adapterService, "f").getRepeaterItemIndex(args.el);
226
- }
227
- });
228
- __classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f")
229
- .dragend(this.dragulaGroupName)
230
- .pipe(takeUntil(__classPrivateFieldGet(this, _SkyRepeaterComponent_ngUnsubscribe, "f")))
231
- .subscribe((args) => {
232
- /* istanbul ignore else */
233
- if (args.name === this.dragulaGroupName) {
234
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyAutoScroll).call(this);
235
- __classPrivateFieldGet(this, _SkyRepeaterComponent_renderer, "f").removeClass(args.el, 'sky-repeater-item-dragging');
236
- const newItemIndex = __classPrivateFieldGet(this, _SkyRepeaterComponent_adapterService, "f").getRepeaterItemIndex(args.el);
237
- /* sanity check */
238
- /* istanbul ignore else */
239
- if (draggedItemIndex >= 0) {
240
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").reorderItem(draggedItemIndex, newItemIndex);
241
- draggedItemIndex = -1;
242
- }
243
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_emitTags).call(this);
244
- }
245
- });
246
- }, _SkyRepeaterComponent_destroyDragAndDrop = function _SkyRepeaterComponent_destroyDragAndDrop() {
247
- /* Sanity check that we have set up dragging abilities */
248
- /* istanbul ignore else */
249
- if (__classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").find(this.dragulaGroupName)) {
250
- __classPrivateFieldGet(this, _SkyRepeaterComponent_dragulaService, "f").destroy(this.dragulaGroupName);
251
- }
252
- __classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_destroyAutoScroll).call(this);
253
- }, _SkyRepeaterComponent_destroyAutoScroll = function _SkyRepeaterComponent_destroyAutoScroll() {
254
- if (__classPrivateFieldGet(this, _SkyRepeaterComponent_autoScroller, "f")) {
255
- __classPrivateFieldGet(this, _SkyRepeaterComponent_autoScroller, "f").destroy();
256
- __classPrivateFieldSet(this, _SkyRepeaterComponent_autoScroller, undefined, "f");
257
- }
258
- }, _SkyRepeaterComponent_emitTags = function _SkyRepeaterComponent_emitTags() {
259
- const tags = __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").items.map((item) => item.tag);
260
- this.orderChange.emit(tags);
261
- }, _SkyRepeaterComponent_everyItemHasTag = function _SkyRepeaterComponent_everyItemHasTag() {
262
- /* sanity check */
263
- /* istanbul ignore if */
264
- if (!this.items || this.items.length === 0) {
265
- return false;
266
- }
267
- return this.items.toArray().every((item) => {
268
- return item.tag !== undefined;
269
- });
270
- }, _SkyRepeaterComponent_updateRole = function _SkyRepeaterComponent_updateRole() {
271
- // Determine a role using a hierarchy based on https://www.w3.org/TR/wai-aria-practices-1.1/
272
- // 1. If there are one or more interactions in the repeater item projected content, use grid.
273
- // 2. If there are selectable repeater items and no other interactions, use listbox.
274
- // 3. If there are no interactions, use list.
275
- // Default to list role.
276
- let autoRole = 'list';
277
- const roleMap = {
278
- list: { item: 'listitem', title: undefined, content: undefined },
279
- listbox: { item: 'option', title: undefined, content: undefined },
280
- grid: { item: 'row', title: 'rowheader', content: 'gridcell' },
281
- };
282
- // Based on https://html.spec.whatwg.org/multipage/dom.html#interactive-content
283
- const interactionSelector = [
284
- 'a[href]',
285
- 'audio[controls]',
286
- 'button',
287
- 'details',
288
- 'embed',
289
- 'iframe',
290
- 'img[usemap]',
291
- 'input:not([type="hidden"])',
292
- 'label',
293
- 'select',
294
- 'textarea',
295
- 'video[controls]',
296
- '[contenteditable]',
297
- '.sky-repeater[role="grid"]',
298
- ]
299
- .map((selector) => `sky-repeater-item-title ${selector}:not([hidden]), sky-repeater-item-content ${selector}:not([hidden])`)
300
- .concat([`skyux-dropdown`])
301
- .join(', ');
302
- const hasInteraction = this.reorderable ||
303
- this.items?.some((item) => item.isCollapsible) ||
304
- this.items?.some((item) => !!item.selectable) ||
305
- !!__classPrivateFieldGet(this, _SkyRepeaterComponent_elementRef, "f").nativeElement.querySelector(interactionSelector);
306
- if (hasInteraction) {
307
- // If the repeater matches interaction selector https://www.w3.org/TR/wai-aria-practices-1.1/#grid
308
- autoRole = 'grid';
309
- }
310
- if (this.role !== autoRole) {
311
- __classPrivateFieldGet(this, _SkyRepeaterComponent_repeaterService, "f").itemRole.next({
312
- ...roleMap[autoRole],
313
- });
314
- this.role = `${autoRole}`;
315
- __classPrivateFieldGet(this, _SkyRepeaterComponent_changeDetector, "f").markForCheck();
316
- }
317
- }, _SkyRepeaterComponent_updateReorderability = function _SkyRepeaterComponent_updateReorderability() {
318
- if (this.items) {
319
- for (const item of this.items) {
320
- item.reorderable = this.reorderable;
321
- }
322
- }
323
- }, _SkyRepeaterComponent_validateTags = function _SkyRepeaterComponent_validateTags() {
324
- if (this.reorderable && !__classPrivateFieldGet(this, _SkyRepeaterComponent_instances, "m", _SkyRepeaterComponent_everyItemHasTag).call(this)) {
325
- console.warn('Please supply tag properties for each repeater item when reordering functionality is enabled.');
326
- }
327
- };
328
- SkyRepeaterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
329
- SkyRepeaterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SkyRepeaterComponent, selector: "sky-repeater", inputs: { activeIndex: "activeIndex", ariaLabel: "ariaLabel", reorderable: "reorderable", expandMode: "expandMode" }, outputs: { activeIndexChange: "activeIndexChange", orderChange: "orderChange" }, providers: [
330
- SkyRepeaterService,
331
- SkyRepeaterAdapterService,
332
- SkyRepeaterAutoScrollService,
333
- ], 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 });
334
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterComponent, decorators: [{
335
- type: Component,
336
- args: [{ selector: 'sky-repeater', providers: [
337
- SkyRepeaterService,
338
- SkyRepeaterAdapterService,
339
- SkyRepeaterAutoScrollService,
340
- ], 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"] }]
341
- }], ctorParameters: function () { return []; }, propDecorators: { activeIndex: [{
342
- type: Input
343
- }], ariaLabel: [{
344
- type: Input
345
- }], reorderable: [{
346
- type: Input
347
- }], expandMode: [{
348
- type: Input
349
- }], activeIndexChange: [{
350
- type: Output
351
- }], orderChange: [{
352
- type: Output
353
- }], items: [{
354
- type: ContentChildren,
355
- args: [SkyRepeaterItemComponent]
356
- }] } });
357
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xpc3RzL3NyYy9saWIvbW9kdWxlcy9yZXBlYXRlci9yZXBlYXRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbGlzdHMvc3JjL2xpYi9tb2R1bGVzL3JlcGVhdGVyL3JlcGVhdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUVULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUV4RDs7R0FFRztBQVlILE1BQU0sT0FBTyxvQkFBb0I7SUE4Qi9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FrQkc7SUFDSCxJQUNXLFVBQVUsQ0FB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QkFBa0I7UUFDbEIseUJBQXlCO1FBQ3pCLDRCQUE0QjtLQUM3QixnREE0RWdCLHdCQUF3QixrREMxSDNDLHVVQVdBOzJGRHNDYSxvQkFBb0I7a0JBWGhDLFNBQVM7K0JBQ0UsY0FBYyxhQUdiO3dCQUNULGtCQUFrQjt3QkFDbEIseUJBQXlCO3dCQUN6Qiw0QkFBNEI7cUJBQzdCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzBFQVl4QyxXQUFXO3NCQURqQixLQUFLO2dCQVdDLFNBQVM7c0JBRGYsS0FBSztnQkFTQyxXQUFXO3NCQURqQixLQUFLO2dCQXVCSyxVQUFVO3NCQURwQixLQUFLO2dCQWNDLGlCQUFpQjtzQkFEdkIsTUFBTTtnQkFTQSxXQUFXO3NCQUZqQixNQUFNO2dCQUtBLEtBQUs7c0JBRFgsZUFBZTt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdDaGVja2VkLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5TG9nU2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcbmltcG9ydCB7IFNreVNjcm9sbGFibGVIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgRHJhZ3VsYVNlcnZpY2UgfSBmcm9tICduZzItZHJhZ3VsYSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVyQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3JlcGVhdGVyLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci1hdXRvLXNjcm9sbC5zZXJ2aWNlJztcbmltcG9ydCB7IFNreVJlcGVhdGVyQXV0b1Njcm9sbGVyIH0gZnJvbSAnLi9yZXBlYXRlci1hdXRvLXNjcm9sbGVyJztcbmltcG9ydCB7IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWV4cGFuZC1tb2RlLXR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLXJvbGVzLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTa3lSZXBlYXRlclJvbGVUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1yb2xlLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXBlYXRlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgY29udGFpbmVyIHRvIGRpc3BsYXkgcmVwZWF0ZXIgaXRlbXMuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1yZXBlYXRlcicsXG4gIHN0eWxlVXJsczogWycuL3JlcGVhdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBlYXRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIFNreVJlcGVhdGVyU2VydmljZSxcbiAgICBTa3lSZXBlYXRlckFkYXB0ZXJTZXJ2aWNlLFxuICAgIFNreVJlcGVhdGVyQXV0b1Njcm9sbFNlcnZpY2UsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lSZXBlYXRlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXRcbntcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgcmVwZWF0ZXIgaXRlbSB0byB2aXN1YWxseSBoaWdobGlnaHQgYXMgYWN0aXZlLlxuICAgKiBGb3IgZXhhbXBsZSwgdXNlIHRoaXMgcHJvcGVydHkgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbiAgICogW3NwbGl0IHZpZXcgY29tcG9uZW50XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2NvbXBvbmVudHMvc3BsaXQtdmlldylcbiAgICogdG8gaGlnaGxpZ2h0IGEgcmVwZWF0ZXIgaXRlbSB3aGlsZSB1c2VycyBlZGl0IGl0LiBPbmx5IG9uZSBpdGVtIGNhbiBiZSBhY3RpdmUgYXQgYSB0aW1lLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGl2ZUluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBUklBIGxhYmVsIGZvciB0aGUgcmVwZWF0ZXIgbGlzdC5cbiAgICogVGhpcyBzZXRzIHRoZSByZXBlYXRlciBsaXN0J3MgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byBwcm92aWRlIGEgdGV4dCBlcXVpdmFsZW50IGZvciBzY3JlZW4gcmVhZGVyc1xuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSwgc2VlIHRoZSBbV0FJLUFSSUEgZGVmaW5pdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhLyNhcmlhLWxhYmVsKS5cbiAgICogQGRlZmF1bHQgXCJMaXN0IG9mIGl0ZW1zXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB1c2VycyBjYW4gY2hhbmdlIHRoZSBvcmRlciBvZiBpdGVtcyBpbiB0aGUgcmVwZWF0ZXIgbGlzdC5cbiAgICogRWFjaCByZXBlYXRlciBpdGVtIGFsc28gaGFzIGByZW9yZGVyYWJsZWAgcHJvcGVydHkgdG8gaW5kaWNhdGUgd2hldGhlclxuICAgKiB1c2VycyBjYW4gY2hhbmdlIGl0cyBvcmRlci5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZW9yZGVyYWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF5b3V0IHRoYXQgZGV0ZXJtaW5lcyB3aGljaCByZXBlYXRlciBpdGVtcyBhcmUgZXhwYW5kZWQgYnkgZGVmYXVsdCBhbmQgd2hldGhlclxuICAgKiByZXBlYXRlciBpdGVtcyBhcmUgZXhwYW5kYWJsZSBhbmQgY29sbGFwc2libGUuIENvbGxhcHNlZCBpdGVtcyBkaXNwbGF5IHRpdGxlcyBvbmx5LlxuICAgKiBUaGUgdmFsaWQgb3B0aW9ucyBhcmUgYG11bHRpcGxlYCwgYG5vbmVgLCBhbmQgYHNpbmdsZWAuXG4gICAqIC0gYG11bHRpcGxlYCBsb2FkcyByZXBlYXRlciBpdGVtcyBpbiBhbiBleHBhbmRlZCBzdGF0ZSB1bmxlc3MgYGlzRXhwYW5kZWRgIGlzIHNldCB0b1xuICAgKiBgZmFsc2VgIGZvciBhIHJlcGVhdGVyIGl0ZW0uIFRoaXMgbGF5b3V0IGFsbG93cyB1c2VycyB0byBleHBhbmQgYW5kIGNvbGxhcHNlXG4gICAqIGFzIG1hbnkgcmVwZWF0ZXIgaXRlbXMgYXMgbmVjZXNzYXJ5LiBJdCBpcyBiZXN0LXN1aXRlZCB0byByZXBlYXRlciBpdGVtcyB3aGVyZSBib2R5XG4gICAqIGNvbnRlbnQgaXMgaW1wb3J0YW50IGJ1dCB1c2VycyBkb24ndCBhbHdheXMgbmVlZCB0byBzZWUgaXQuXG4gICAqIC0gYG5vbmVgIGxvYWRzIGFsbCByZXBlYXRlciBpdGVtcyBpbiBhbiBleHBhbmRlZCBzdGF0ZSBhbmQgZG9lcyBub3QgYWxsb3cgdXNlcnMgdG9cbiAgICogY29sbGFwc2UgdGhlbS4gVGhpcyBkZWZhdWx0IGxheW91dCBwcm92aWRlcyB0aGUgcXVpY2tlc3QgYWNjZXNzIHRvIHRoZSBkZXRhaWxzIGluIHRoZVxuICAgKiByZXBlYXRlciBpdGVtcy4gSXQgaXMgYmVzdC1zdWl0ZWQgdG8gcmVwZWF0ZXIgaXRlbXMgd2l0aCBjb25jaXNlIGNvbnRlbnRcbiAgICogdGhhdCB1c2VycyBuZWVkIHRvIHZpZXcgZnJlcXVlbnRseS5cbiAgICogLSBgc2luZ2xlYCBsb2FkcyBvbmUgcmVwZWF0ZXIgaXRlbSBpbiBhbiBleHBhbmRlZCBzdGF0ZSBhbmQgY29sbGFwc2VzIGFsbCBvdGhlcnMuXG4gICAqIFRoZSBleHBhbmRlZCByZXBlYXRlciBpdGVtIGlzIHRoZSBmaXJzdCBvbmUgd2hlcmUgYGlzRXhwYW5kZWRgIGlzIHNldCB0byBgdHJ1ZWAuIFRoaXMgbGF5b3V0XG4gICAqIGFsbG93cyB1c2VycyB0byBleHBhbmQgb25lIGl0ZW0gYXQgYSB0aW1lLiBJdCBwcm92aWRlcyB0aGUgbW9zdCBjb21wYWN0IHZpZXcgYW5kIGlzXG4gICAqIGJlc3Qtc3VpdGVkIHRvIHJlcGVhdGVyIGl0ZW1zIHdoZXJlIHRoZSBtb3N0IGltcG9ydGFudCBpbmZvcm1hdGlvbiBpcyBpbiB0aGUgdGl0bGVzXG4gICAqIGFuZCB1c2VycyBvbmx5IG9jY2FzaW9uYWxseSBuZWVkIHRvIHZpZXcgdGhlIGJvZHkgY29udGVudC5cbiAgICogQGRlZmF1bHQgXCJub25lXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZXhwYW5kTW9kZSh2YWx1ZTogU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5leHBhbmRNb2RlID0gdmFsdWU7XG4gICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBleHBhbmRNb2RlKCk6IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUge1xuICAgIHJldHVybiB0aGlzLiNyZXBlYXRlclNlcnZpY2UuZXhwYW5kTW9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBhY3RpdmUgcmVwZWF0ZXIgaXRlbSBjaGFuZ2VzLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhY3RpdmVJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIGNoYW5nZSB0aGUgb3JkZXIgb2YgcmVwZWF0ZXIgaXRlbXMuXG4gICAqIFRoaXMgZXZlbnQgZW1pdHMgYW4gb3JkZXJlZCBhcnJheSBvZiB0aGUgYHRhZ2AgcHJvcGVydGllcyB0aGF0IHRoZSBjb25zdW1lciBwcm92aWRlcyBmb3IgZWFjaCByZXBlYXRlciBpdGVtLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIHB1YmxpYyBvcmRlckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpXG4gIHB1YmxpYyBpdGVtczogUXVlcnlMaXN0PFNreVJlcGVhdGVySXRlbUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGRyYWd1bGFHcm91cE5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcm9sZTogU2t5UmVwZWF0ZXJSb2xlVHlwZSB8IHVuZGVmaW5lZDtcblxuICAjYXV0b1Njcm9sbGVyOiBTa3lSZXBlYXRlckF1dG9TY3JvbGxlciB8IHVuZGVmaW5lZDtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjaXRlbU5hbWVXYXJuZWQgPSBmYWxzZTtcblxuICAjYWRhcHRlclNlcnZpY2UgPSBpbmplY3QoU2t5UmVwZWF0ZXJBZGFwdGVyU2VydmljZSk7XG4gICNjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICNkcmFndWxhU2VydmljZSA9IGluamVjdChEcmFndWxhU2VydmljZSk7XG4gICNlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAjcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgI3JlcGVhdGVyU2VydmljZSA9IGluamVjdChTa3lSZXBlYXRlclNlcnZpY2UpO1xuICAjYXV0b1Njcm9sbFN2YyA9IGluamVjdChTa3lSZXBlYXRlckF1dG9TY3JvbGxTZXJ2aWNlKTtcbiAgI3Njcm9sbGFibGVIb3N0U3ZjID0gaW5qZWN0KFNreVNjcm9sbGFibGVIb3N0U2VydmljZSk7XG4gICNsb2dTdmMgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kcmFndWxhR3JvdXBOYW1lID0gYHNreS1yZXBlYXRlci1kcmFndWxhLSR7XG4gICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UucmVwZWF0ZXJHcm91cElkXG4gICAgfWA7XG5cbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuaXRlbUNvbGxhcHNlU3RhdGVDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRNb2RlID09PSAnc2luZ2xlJyAmJiBpdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKChvdGhlckl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3RoZXJJdGVtICE9PSBpdGVtICYmXG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0V4cGFuZGVkICYmXG4gICAgICAgICAgICAgIG90aGVySXRlbS5pc0NvbGxhcHNpYmxlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgb3RoZXJJdGVtLmlzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZlSXRlbUluZGV4Q2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICBpZiAoaW5kZXggIT09IHRoaXMuYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgdGhpcy5hY3RpdmVJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2Uub3JkZXJDaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLiNlbWl0VGFncygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKCk7XG5cbiAgICB0aGlzLiNhZGFwdGVyU2VydmljZS5zZXRSZXBlYXRlckhvc3QodGhpcy4jZWxlbWVudFJlZik7XG5cbiAgICB0aGlzLiNpbml0aWFsaXplRHJhZ0FuZERyb3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgLy8gSWYgYWN0aXZlSW5kZXggaGFzIGJlZW4gc2V0IG9uIGluaXQsIGNhbGwgc2VydmljZSB0byBhY3RpdmF0ZSB0aGUgYXBwcm9wcmlhdGUgaXRlbS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4IHx8IHRoaXMuYWN0aXZlSW5kZXggPT09IDApIHtcbiAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI3ZhbGlkYXRlVGFncygpO1xuICAgIH0pO1xuXG4gICAgLy8gSEFDSzogTm90IHVwZGF0aW5nIGZvciBleHBhbmQgbW9kZSBpbiBhIHRpbWVvdXQgY2F1c2VzIGFuIGVycm9yLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzYwMDVcbiAgICB0aGlzLml0ZW1zPy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLiN1cGRhdGVGb3JFeHBhbmRNb2RlKHRoaXMuaXRlbXMubGFzdCk7XG5cbiAgICAgICAgICB0aGlzLiN1cGRhdGVSZW9yZGVyYWJpbGl0eSgpO1xuXG4gICAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLml0ZW1zID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLmFjdGl2YXRlSXRlbUJ5SW5kZXgodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG5cbiAgICAgICAgdGhpcy4jdmFsaWRhdGVUYWdzKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy4jdXBkYXRlRm9yRXhwYW5kTW9kZSgpO1xuXG4gICAgICB0aGlzLml0ZW1zPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0ucmVvcmRlcmFibGUgPSB0aGlzLnJlb3JkZXJhYmxlO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLiNpdGVtTmFtZVdhcm5lZCAmJiB0aGlzLml0ZW1zPy5zb21lKChpdGVtKSA9PiAhaXRlbS5pdGVtTmFtZSkpIHtcbiAgICAgIHRoaXMuI2xvZ1N2Yz8uZGVwcmVjYXRlZCgnU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IHdpdGhvdXQgYGl0ZW1OYW1lYCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDgsXG4gICAgICAgIHJlcGxhY2VtZW50UmVjb21tZW5kYXRpb246ICdBbHdheXMgc3BlY2lmeSBhbiBgaXRlbU5hbWVgIHByb3BlcnR5LicsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy4jaXRlbU5hbWVXYXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ2FjdGl2ZUluZGV4J10pIHtcbiAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5lbmFibGVBY3RpdmVTdGF0ZSA9IHRydWU7XG4gICAgICBpZiAoXG4gICAgICAgIGNoYW5nZXNbJ2FjdGl2ZUluZGV4J10uY3VycmVudFZhbHVlICE9PVxuICAgICAgICBjaGFuZ2VzWydhY3RpdmVJbmRleCddLnByZXZpb3VzVmFsdWVcbiAgICAgICkge1xuICAgICAgICB0aGlzLiNyZXBlYXRlclNlcnZpY2UuYWN0aXZhdGVJdGVtQnlJbmRleCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sncmVvcmRlcmFibGUnXSkge1xuICAgICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgICAgdGhpcy4jdXBkYXRlUmVvcmRlcmFiaWxpdHkoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuI3VwZGF0ZVJvbGUoKTtcblxuICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLiNkZXN0cm95RHJhZ0FuZERyb3AoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DZGtPYnNlcnZlQ29udGVudCgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gIH1cblxuICAjdXBkYXRlRm9yRXhwYW5kTW9kZShpdGVtQWRkZWQ/OiBTa3lSZXBlYXRlckl0ZW1Db21wb25lbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pdGVtcykge1xuICAgICAgbGV0IGZvdW5kRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGlzQ29sbGFwc2libGUgPSB0aGlzLmV4cGFuZE1vZGUgIT09ICdub25lJztcbiAgICAgIGNvbnN0IGlzU2luZ2xlID0gdGhpcy5leHBhbmRNb2RlID09PSAnc2luZ2xlJztcblxuICAgICAgLy8gS2VlcCBhbnkgbmV3bHktYWRkZWQgZXhwYW5kZWQgaXRlbSBleHBhbmRlZCBhbmQgY29sbGFwc2UgdGhlIHJlc3QuXG4gICAgICBpZiAoaXRlbUFkZGVkICYmIGl0ZW1BZGRlZC5pc0V4cGFuZGVkKSB7XG4gICAgICAgIGZvdW5kRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgICBpdGVtLmlzQ29sbGFwc2libGUgPSBpc0NvbGxhcHNpYmxlICYmICEhaXRlbS5oYXNJdGVtQ29udGVudDtcblxuICAgICAgICAvLyBDb2xsYXBzZSBhbnkgaXRlbXMgdGhhdCBhcmVuJ3QgdGhlIGl0ZW0gdGhhdCB3YXMganVzdCBhZGRlZC5cbiAgICAgICAgaWYgKGl0ZW0gIT09IGl0ZW1BZGRlZCAmJiBpc1NpbmdsZSAmJiBpdGVtLmlzRXhwYW5kZWQpIHtcbiAgICAgICAgICBpZiAoZm91bmRFeHBhbmRlZCkge1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpdGVtIGlzIGJlaW5nIGNvbGxhcHNlZCBiZWNhdXNlIGEgbmV3IGl0ZW0gd2FzXG4gICAgICAgICAgICAvLyBhZGRlZCwgYW5pbWF0ZSBpdC5cbiAgICAgICAgICAgIGl0ZW0udXBkYXRlRm9yRXhwYW5kZWQoZmFsc2UsICEhaXRlbUFkZGVkKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3VuZEV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLiN1cGRhdGVSb2xlKCk7XG4gICAgfVxuICB9XG5cbiAgI2luaXRpYWxpemVEcmFnQW5kRHJvcCgpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB3ZSBoYXZlbid0IGFscmVhZHkgc2V0IHVwIGRyYWdnaW5nIGFiaWxpdGllcyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLiNkcmFndWxhU2VydmljZS5maW5kKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkpIHtcbiAgICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmNyZWF0ZUdyb3VwKHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSwge1xuICAgICAgICBtb3ZlczogKGVsLCBfY29udGFpbmVyLCBoYW5kbGUpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXJnZXQgPSBlbD8ucXVlcnlTZWxlY3RvcignLnNreS1yZXBlYXRlci1pdGVtLWdyYWItaGFuZGxlJyk7XG4gICAgICAgICAgcmV0dXJuICEhKFxuICAgICAgICAgICAgdGhpcy5yZW9yZGVyYWJsZSAmJiB0YXJnZXQ/LmNvbnRhaW5zKGhhbmRsZSBhcyBFbGVtZW50IHwgbnVsbClcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbGV0IGRyYWdnZWRJdGVtSW5kZXggPSAtMTtcblxuICAgIHRoaXMuI2RyYWd1bGFTZXJ2aWNlXG4gICAgICAuZHJhZyh0aGlzLmRyYWd1bGFHcm91cE5hbWUpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChhcmdzKSA9PiB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChhcmdzLm5hbWUgPT09IHRoaXMuZHJhZ3VsYUdyb3VwTmFtZSkge1xuICAgICAgICAgIHRoaXMuI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk7XG5cbiAgICAgICAgICB0aGlzLiNhdXRvU2Nyb2xsZXIgPSB0aGlzLiNhdXRvU2Nyb2xsU3ZjLmF1dG9TY3JvbGwoXG4gICAgICAgICAgICBbdGhpcy4jc2Nyb2xsYWJsZUhvc3RTdmMuZ2V0U2Nyb2xsYWJsZUhvc3QodGhpcy4jZWxlbWVudFJlZildLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJnaW46IDIwLFxuICAgICAgICAgICAgICBtYXhTcGVlZDogMTAsXG4gICAgICAgICAgICAgIHNjcm9sbFdoZW5PdXRzaWRlOiB0cnVlLFxuICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiAoKSA9PiB0cnVlLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLiNyZW5kZXJlci5hZGRDbGFzcyhhcmdzLmVsLCAnc2t5LXJlcGVhdGVyLWl0ZW0tZHJhZ2dpbmcnKTtcbiAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4ID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0UmVwZWF0ZXJJdGVtSW5kZXgoXG4gICAgICAgICAgICBhcmdzLmVsIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLiNkcmFndWxhU2VydmljZVxuICAgICAgLmRyYWdlbmQodGhpcy5kcmFndWxhR3JvdXBOYW1lKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoYXJncykgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoYXJncy5uYW1lID09PSB0aGlzLmRyYWd1bGFHcm91cE5hbWUpIHtcbiAgICAgICAgICB0aGlzLiNkZXN0cm95QXV0b1Njcm9sbCgpO1xuXG4gICAgICAgICAgdGhpcy4jcmVuZGVyZXIucmVtb3ZlQ2xhc3MoYXJncy5lbCwgJ3NreS1yZXBlYXRlci1pdGVtLWRyYWdnaW5nJyk7XG4gICAgICAgICAgY29uc3QgbmV3SXRlbUluZGV4ID0gdGhpcy4jYWRhcHRlclNlcnZpY2UuZ2V0UmVwZWF0ZXJJdGVtSW5kZXgoXG4gICAgICAgICAgICBhcmdzLmVsIGFzIEhUTUxFbGVtZW50XG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKGRyYWdnZWRJdGVtSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgdGhpcy4jcmVwZWF0ZXJTZXJ2aWNlLnJlb3JkZXJJdGVtKGRyYWdnZWRJdGVtSW5kZXgsIG5ld0l0ZW1JbmRleCk7XG4gICAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4ID0gLTE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy4jZW1pdFRhZ3MoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICAjZGVzdHJveURyYWdBbmREcm9wKCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayB0aGF0IHdlIGhhdmUgc2V0IHVwIGRyYWdnaW5nIGFiaWxpdGllcyAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuI2RyYWd1bGFTZXJ2aWNlLmZpbmQodGhpcy5kcmFndWxhR3JvdXBOYW1lKSkge1xuICAgICAgdGhpcy4jZHJhZ3VsYVNlcnZpY2UuZGVzdHJveSh0aGlzLmRyYWd1bGFHcm91cE5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuI2Rlc3Ryb3lBdXRvU2Nyb2xsKCk7XG4gIH1cblxuICAjZGVzdHJveUF1dG9TY3JvbGwoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuI2F1dG9TY3JvbGxlcikge1xuICAgICAgdGhpcy4jYXV0b1Njcm9sbGVyLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuI2F1dG9TY3JvbGxlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAjZW1pdFRhZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgdGFncyA9IHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udGFnKTtcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLmVtaXQodGFncyk7XG4gIH1cblxuICAjZXZlcnlJdGVtSGFzVGFnKCk6IGJvb2xlYW4ge1xuICAgIC8qIHNhbml0eSBjaGVjayAqL1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy5pdGVtcyB8fCB0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pdGVtcy50b0FycmF5KCkuZXZlcnkoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBpdGVtLnRhZyAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICB9XG5cbiAgI3VwZGF0ZVJvbGUoKTogdm9pZCB7XG4gICAgLy8gRGV0ZXJtaW5lIGEgcm9sZSB1c2luZyBhIGhpZXJhcmNoeSBiYXNlZCBvbiBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS9cbiAgICAvLyAgIDEuIElmIHRoZXJlIGFyZSBvbmUgb3IgbW9yZSBpbnRlcmFjdGlvbnMgaW4gdGhlIHJlcGVhdGVyIGl0ZW0gcHJvamVjdGVkIGNvbnRlbnQsIHVzZSBncmlkLlxuICAgIC8vICAgMi4gSWYgdGhlcmUgYXJlIHNlbGVjdGFibGUgcmVwZWF0ZXIgaXRlbXMgYW5kIG5vIG90aGVyIGludGVyYWN0aW9ucywgdXNlIGxpc3Rib3guXG4gICAgLy8gICAzLiBJZiB0aGVyZSBhcmUgbm8gaW50ZXJhY3Rpb25zLCB1c2UgbGlzdC5cblxuICAgIC8vIERlZmF1bHQgdG8gbGlzdCByb2xlLlxuICAgIGxldCBhdXRvUm9sZTogU2t5UmVwZWF0ZXJSb2xlVHlwZSA9ICdsaXN0JztcblxuICAgIGNvbnN0IHJvbGVNYXA6IFJlY29yZDxTa3lSZXBlYXRlclJvbGVUeXBlLCBTa3lSZXBlYXRlckl0ZW1Sb2xlc1R5cGU+ID0ge1xuICAgICAgbGlzdDogeyBpdGVtOiAnbGlzdGl0ZW0nLCB0aXRsZTogdW5kZWZpbmVkLCBjb250ZW50OiB1bmRlZmluZWQgfSxcbiAgICAgIGxpc3Rib3g6IHsgaXRlbTogJ29wdGlvbicsIHRpdGxlOiB1bmRlZmluZWQsIGNvbnRlbnQ6IHVuZGVmaW5lZCB9LFxuICAgICAgZ3JpZDogeyBpdGVtOiAncm93JywgdGl0bGU6ICdyb3doZWFkZXInLCBjb250ZW50OiAnZ3JpZGNlbGwnIH0sXG4gICAgfTtcblxuICAgIC8vIEJhc2VkIG9uIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2RvbS5odG1sI2ludGVyYWN0aXZlLWNvbnRlbnRcbiAgICBjb25zdCBpbnRlcmFjdGlvblNlbGVjdG9yID0gW1xuICAgICAgJ2FbaHJlZl0nLFxuICAgICAgJ2F1ZGlvW2NvbnRyb2xzXScsXG4gICAgICAnYnV0dG9uJyxcbiAgICAgICdkZXRhaWxzJyxcbiAgICAgICdlbWJlZCcsXG4gICAgICAnaWZyYW1lJyxcbiAgICAgICdpbWdbdXNlbWFwXScsXG4gICAgICAnaW5wdXQ6bm90KFt0eXBlPVwiaGlkZGVuXCJdKScsXG4gICAgICAnbGFiZWwnLFxuICAgICAgJ3NlbGVjdCcsXG4gICAgICAndGV4dGFyZWEnLFxuICAgICAgJ3ZpZGVvW2NvbnRyb2xzXScsXG4gICAgICAnW2NvbnRlbnRlZGl0YWJsZV0nLFxuICAgICAgJy5za3ktcmVwZWF0ZXJbcm9sZT1cImdyaWRcIl0nLFxuICAgIF1cbiAgICAgIC5tYXAoXG4gICAgICAgIChzZWxlY3RvcikgPT5cbiAgICAgICAgICBgc2t5LXJlcGVhdGVyLWl0ZW0tdGl0bGUgJHtzZWxlY3Rvcn06bm90KFtoaWRkZW5dKSwgc2t5LXJlcGVhdGVyLWl0ZW0tY29udGVudCAke3NlbGVjdG9yfTpub3QoW2hpZGRlbl0pYFxuICAgICAgKVxuICAgICAgLmNvbmNhdChbYHNreXV4LWRyb3Bkb3duYF0pXG4gICAgICAuam9pbignLCAnKTtcblxuICAgIGNvbnN0IGhhc0ludGVyYWN0aW9uID1cbiAgICAgIHRoaXMucmVvcmRlcmFibGUgfHxcbiAgICAgIHRoaXMuaXRlbXM/LnNvbWUoKGl0ZW0pID0+IGl0ZW0uaXNDb2xsYXBzaWJsZSkgfHxcbiAgICAgIHRoaXMuaXRlbXM/LnNvbWUoKGl0ZW0pID0+ICEhaXRlbS5zZWxlY3RhYmxlKSB8fFxuICAgICAgISEodGhpcy4jZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBpbnRlcmFjdGlvblNlbGVjdG9yXG4gICAgICApO1xuXG4gICAgaWYgKGhhc0ludGVyYWN0aW9uKSB7XG4gICAgICAvLyBJZiB0aGUgcmVwZWF0ZXIgbWF0Y2hlcyBpbnRlcmFjdGlvbiBzZWxlY3RvciBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jZ3JpZFxuICAgICAgYXV0b1JvbGUgPSAnZ3JpZCc7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucm9sZSAhPT0gYXV0b1JvbGUpIHtcbiAgICAgIHRoaXMuI3JlcGVhdGVyU2VydmljZS5pdGVtUm9sZS5uZXh0KHtcbiAgICAgICAgLi4ucm9sZU1hcFthdXRvUm9sZV0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZSA9IGAke2F1dG9Sb2xlfWA7XG4gICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAjdXBkYXRlUmVvcmRlcmFiaWxpdHkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXRlbXMpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgIGl0ZW0ucmVvcmRlcmFibGUgPSB0aGlzLnJlb3JkZXJhYmxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICN2YWxpZGF0ZVRhZ3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVvcmRlcmFibGUgJiYgIXRoaXMuI2V2ZXJ5SXRlbUhhc1RhZygpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdQbGVhc2Ugc3VwcGx5IHRhZyBwcm9wZXJ0aWVzIGZvciBlYWNoIHJlcGVhdGVyIGl0ZW0gd2hlbiByZW9yZGVyaW5nIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZC4nXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAjcmVwZWF0ZXJIb3N0PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktcmVwZWF0ZXJcIlxuICAgIFthdHRyLnJvbGVdPVwicm9sZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgKCdza3l1eF9yZXBlYXRlcl9sYWJlbCcgfCBza3lMaWJSZXNvdXJjZXMpXCJcbiAgICBbZHJhZ3VsYV09XCJkcmFndWxhR3JvdXBOYW1lXCJcbiAgICAoY2RrT2JzZXJ2ZUNvbnRlbnQpPVwib25DZGtPYnNlcnZlQ29udGVudCgpXCJcbiAgPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -1,88 +0,0 @@
1
- var _SkyRepeaterService__expandMode;
2
- import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { EventEmitter, Injectable } from '@angular/core';
4
- import { BehaviorSubject } from 'rxjs';
5
- import * as i0 from "@angular/core";
6
- let uniqueId = 0;
7
- const DEFAULT_EXPAND_MODE = 'none';
8
- /**
9
- * @internal
10
- */
11
- export class SkyRepeaterService {
12
- constructor() {
13
- this.activeItemChange = new BehaviorSubject(undefined);
14
- this.activeItemIndexChange = new BehaviorSubject(undefined);
15
- this.enableActiveState = false;
16
- this.itemCollapseStateChange = new EventEmitter();
17
- this.items = [];
18
- this.itemRole = new BehaviorSubject({
19
- content: undefined,
20
- item: undefined,
21
- title: undefined,
22
- });
23
- this.orderChange = new BehaviorSubject(undefined);
24
- this.repeaterGroupId = ++uniqueId;
25
- _SkyRepeaterService__expandMode.set(this, DEFAULT_EXPAND_MODE);
26
- }
27
- // TODO: Remove 'string' as a valid type in a breaking change.
28
- get expandMode() {
29
- return __classPrivateFieldGet(this, _SkyRepeaterService__expandMode, "f");
30
- }
31
- set expandMode(value) {
32
- __classPrivateFieldSet(this, _SkyRepeaterService__expandMode, value ?? DEFAULT_EXPAND_MODE, "f");
33
- }
34
- ngOnDestroy() {
35
- this.activeItemChange.complete();
36
- this.itemCollapseStateChange.complete();
37
- this.orderChange.complete();
38
- }
39
- activateItem(item) {
40
- if (this.enableActiveState) {
41
- /* istanbul ignore else */
42
- if (item && !item.disabled) {
43
- const index = this.items.findIndex((i) => i === item);
44
- this.activeItemIndexChange.next(index);
45
- this.activeItemChange.next(item);
46
- }
47
- }
48
- }
49
- activateItemByIndex(index) {
50
- /* istanbul ignore else */
51
- if (this.enableActiveState) {
52
- if (index === undefined) {
53
- this.activeItemChange.next(undefined);
54
- }
55
- else {
56
- const activeItem = this.items[index];
57
- if (activeItem && !activeItem.disabled) {
58
- this.activeItemChange.next(activeItem);
59
- }
60
- }
61
- }
62
- }
63
- registerItem(item) {
64
- this.items.push(item);
65
- }
66
- unregisterItem(item) {
67
- const indexOfDestroyedItem = this.items.indexOf(item);
68
- if (indexOfDestroyedItem > -1) {
69
- this.items.splice(indexOfDestroyedItem, 1);
70
- }
71
- }
72
- onItemCollapseStateChange(item) {
73
- this.itemCollapseStateChange.emit(item);
74
- }
75
- registerOrderChange() {
76
- this.orderChange.next();
77
- }
78
- reorderItem(oldIndex, newIndex) {
79
- this.items.splice(newIndex, 0, this.items.splice(oldIndex, 1)[0]);
80
- }
81
- }
82
- _SkyRepeaterService__expandMode = new WeakMap();
83
- SkyRepeaterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
84
- SkyRepeaterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterService });
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyRepeaterService, decorators: [{
86
- type: Injectable
87
- }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9saXN0cy9zcmMvbGliL21vZHVsZXMvcmVwZWF0ZXIvcmVwZWF0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBTXZDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNqQixNQUFNLG1CQUFtQixHQUE4QixNQUFNLENBQUM7QUFFOUQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVMscUJBQWdCLEdBQUcsSUFBSSxlQUFlLENBRTNDLFNBQVMsQ0FBQyxDQUFDO1FBRU4sMEJBQXFCLEdBQUcsSUFBSSxlQUFlLENBQ2hELFNBQVMsQ0FDVixDQUFDO1FBRUssc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBVTFCLDRCQUF1QixHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRXZFLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBRTlCLGFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBMkI7WUFDdkUsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDLENBQUM7UUFFSSxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFPLFNBQVMsQ0FBQyxDQUFDO1FBRW5ELG9CQUFlLEdBQUcsRUFBRSxRQUFRLENBQUM7UUFFcEMsMENBQWUsbUJBQW1CLEVBQUM7S0F1RHBDO0lBN0VDLDhEQUE4RDtJQUM5RCxJQUFXLFVBQVU7UUFDbkIsT0FBTyx1QkFBQSxJQUFJLHVDQUFhLENBQUM7SUFDM0IsQ0FBQztJQUNELElBQVcsVUFBVSxDQUFDLEtBQTRDO1FBQ2hFLHVCQUFBLElBQUksbUNBQWdCLEtBQUssSUFBSSxtQkFBbUIsTUFBQSxDQUFDO0lBQ25ELENBQUM7SUFrQk0sV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFlBQVksQ0FBQyxJQUE4QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMxQiwwQkFBMEI7WUFDMUIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO2dCQUN0RCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsS0FBeUI7UUFDbEQsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLFVBQVUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7b0JBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ3hDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFTSxZQUFZLENBQUMsSUFBOEI7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxJQUE4QjtRQUNsRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRU0seUJBQXlCLENBQUMsSUFBOEI7UUFDN0QsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFnQixFQUFFLFFBQWdCO1FBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7OytHQXZGVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreVJlcGVhdGVyRXhwYW5kTW9kZVR5cGUgfSBmcm9tICcuL3JlcGVhdGVyLWV4cGFuZC1tb2RlLXR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtUm9sZXNUeXBlIH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLXJvbGVzLnR5cGUnO1xuaW1wb3J0IHsgU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9yZXBlYXRlci1pdGVtLmNvbXBvbmVudCc7XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5jb25zdCBERUZBVUxUX0VYUEFORF9NT0RFOiBTa3lSZXBlYXRlckV4cGFuZE1vZGVUeXBlID0gJ25vbmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5UmVwZWF0ZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIGFjdGl2ZUl0ZW1DaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIGFjdGl2ZUl0ZW1JbmRleENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcblxuICBwdWJsaWMgZW5hYmxlQWN0aXZlU3RhdGUgPSBmYWxzZTtcblxuICAvLyBUT0RPOiBSZW1vdmUgJ3N0cmluZycgYXMgYSB2YWxpZCB0eXBlIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICBwdWJsaWMgZ2V0IGV4cGFuZE1vZGUoKTogU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuI19leHBhbmRNb2RlO1xuICB9XG4gIHB1YmxpYyBzZXQgZXhwYW5kTW9kZSh2YWx1ZTogU2t5UmVwZWF0ZXJFeHBhbmRNb2RlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19leHBhbmRNb2RlID0gdmFsdWUgPz8gREVGQVVMVF9FWFBBTkRfTU9ERTtcbiAgfVxuXG4gIHB1YmxpYyBpdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50PigpO1xuXG4gIHB1YmxpYyBpdGVtczogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50W10gPSBbXTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXRlbVJvbGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNreVJlcGVhdGVySXRlbVJvbGVzVHlwZT4oe1xuICAgIGNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICBpdGVtOiB1bmRlZmluZWQsXG4gICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgfSk7XG5cbiAgcHVibGljIG9yZGVyQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDx2b2lkPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyByZXBlYXRlckdyb3VwSWQgPSArK3VuaXF1ZUlkO1xuXG4gICNfZXhwYW5kTW9kZSA9IERFRkFVTFRfRVhQQU5EX01PREU7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlSXRlbUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuaXRlbUNvbGxhcHNlU3RhdGVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLm9yZGVyQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGVJdGVtKGl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmVuYWJsZUFjdGl2ZVN0YXRlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGl0ZW0gJiYgIWl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLml0ZW1zLmZpbmRJbmRleCgoaSkgPT4gaSA9PT0gaXRlbSk7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUluZGV4Q2hhbmdlLm5leHQoaW5kZXgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UubmV4dChpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWN0aXZhdGVJdGVtQnlJbmRleChpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5lbmFibGVBY3RpdmVTdGF0ZSkge1xuICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ2hhbmdlLm5leHQodW5kZWZpbmVkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLml0ZW1zW2luZGV4XTtcbiAgICAgICAgaWYgKGFjdGl2ZUl0ZW0gJiYgIWFjdGl2ZUl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUl0ZW1DaGFuZ2UubmV4dChhY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlckl0ZW0oaXRlbTogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcy5wdXNoKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIHVucmVnaXN0ZXJJdGVtKGl0ZW06IFNreVJlcGVhdGVySXRlbUNvbXBvbmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4T2ZEZXN0cm95ZWRJdGVtID0gdGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleE9mRGVzdHJveWVkSXRlbSA+IC0xKSB7XG4gICAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleE9mRGVzdHJveWVkSXRlbSwgMSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSXRlbUNvbGxhcHNlU3RhdGVDaGFuZ2UoaXRlbTogU2t5UmVwZWF0ZXJJdGVtQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtQ29sbGFwc2VTdGF0ZUNoYW5nZS5lbWl0KGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT3JkZXJDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5vcmRlckNoYW5nZS5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgcmVvcmRlckl0ZW0ob2xkSW5kZXg6IG51bWJlciwgbmV3SW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuaXRlbXMuc3BsaWNlKG5ld0luZGV4LCAwLCB0aGlzLml0ZW1zLnNwbGljZShvbGRJbmRleCwgMSlbMF0pO1xuICB9XG59XG4iXX0=