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