@nativescript-community/ui-collectionview 4.0.48 → 4.0.51
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/CHANGELOG.md +27 -0
- package/angular/collectionview-comp.d.ts +1 -1
- package/angular/esm2020/collectionview-comp.mjs +263 -0
- package/angular/{esm2015/index.js → esm2020/index.mjs} +2 -2
- package/angular/{esm2015/nativescript-community-ui-collectionview-angular.js → esm2020/nativescript-community-ui-collectionview-angular.mjs} +0 -0
- package/angular/fesm2015/nativescript-community-ui-collectionview-angular.mjs +299 -0
- package/angular/fesm2015/nativescript-community-ui-collectionview-angular.mjs.map +1 -0
- package/angular/{fesm2015/nativescript-community-ui-collectionview-angular.js → fesm2020/nativescript-community-ui-collectionview-angular.mjs} +10 -14
- package/angular/fesm2020/nativescript-community-ui-collectionview-angular.mjs.map +1 -0
- package/angular/package.json +20 -6
- package/index-common.d.ts +2 -1
- package/index-common.js +10 -4
- package/index-common.js.map +1 -1
- package/index.android.d.ts +6 -9
- package/index.android.js +46 -34
- package/index.android.js.map +1 -1
- package/index.ios.js +2 -1
- package/index.ios.js.map +1 -1
- package/package.json +3 -4
- package/platforms/android/java/com/nativescript/collectionview/RecyclerView.java +10 -7
- package/platforms/android/java/com/nativescript/collectionview/SizeChangedListener.java +1 -0
- package/react/index.js +3 -1
- package/react/index.js.map +1 -1
- package/references.d.ts +1 -0
- package/svelte/index.js +8 -5
- package/svelte/index.js.map +1 -1
- package/typings/android.d.ts +66 -0
- package/typings/arv.d.ts +1 -65
- package/vue/component.js +9 -1
- package/vue/component.js.map +1 -1
- package/angular/bundles/nativescript-community-ui-collectionview-angular.umd.js +0 -354
- package/angular/bundles/nativescript-community-ui-collectionview-angular.umd.js.map +0 -1
- package/angular/esm2015/collectionview-comp.js +0 -267
- package/angular/fesm2015/nativescript-community-ui-collectionview-angular.js.map +0 -1
@@ -1,267 +0,0 @@
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild, Directive, ElementRef, EventEmitter, Host, Inject, Input, IterableDiffers, Output, TemplateRef, ViewChild, ViewContainerRef, ɵisListLikeIterable as isListLikeIterable, } from '@angular/core';
|
2
|
-
import { LayoutBase, ObservableArray, Trace } from '@nativescript/core';
|
3
|
-
import { CLog, CLogTypes, CollectionView, ListViewViewTypes } from '@nativescript-community/ui-collectionview';
|
4
|
-
import { getSingleViewRecursive, registerElement } from '@nativescript/angular';
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
const _c0 = ["loader"];
|
7
|
-
registerElement('CollectionView', () => CollectionView);
|
8
|
-
const NG_VIEW = '_ngViewRef';
|
9
|
-
export class ItemContext {
|
10
|
-
constructor($implicit, item, index, even, odd) {
|
11
|
-
this.$implicit = $implicit;
|
12
|
-
this.item = item;
|
13
|
-
this.index = index;
|
14
|
-
this.even = even;
|
15
|
-
this.odd = odd;
|
16
|
-
}
|
17
|
-
}
|
18
|
-
export class CollectionViewComponent {
|
19
|
-
constructor(_elementRef, _iterableDiffers) {
|
20
|
-
this._iterableDiffers = _iterableDiffers;
|
21
|
-
this.setupItemView = new EventEmitter();
|
22
|
-
this.itemViewLoader = (viewType) => {
|
23
|
-
switch (viewType) {
|
24
|
-
case ListViewViewTypes.ItemView:
|
25
|
-
if (this._itemTemplate && this.loader) {
|
26
|
-
const nativeItem = this.loader.createEmbeddedView(this._itemTemplate, new ItemContext(), 0);
|
27
|
-
const typedView = getItemViewRoot(nativeItem);
|
28
|
-
typedView[NG_VIEW] = nativeItem;
|
29
|
-
return typedView;
|
30
|
-
}
|
31
|
-
break;
|
32
|
-
}
|
33
|
-
return null;
|
34
|
-
};
|
35
|
-
this._collectionView = _elementRef.nativeElement;
|
36
|
-
this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);
|
37
|
-
this._collectionView.itemViewLoader = this.itemViewLoader;
|
38
|
-
}
|
39
|
-
get nativeElement() {
|
40
|
-
return this._collectionView;
|
41
|
-
}
|
42
|
-
get listView() {
|
43
|
-
return this._collectionView;
|
44
|
-
}
|
45
|
-
get itemTemplate() {
|
46
|
-
return this._itemTemplate;
|
47
|
-
}
|
48
|
-
set itemTemplate(value) {
|
49
|
-
this._itemTemplate = value;
|
50
|
-
this._collectionView.refresh();
|
51
|
-
}
|
52
|
-
get items() {
|
53
|
-
return this._items;
|
54
|
-
}
|
55
|
-
set items(value) {
|
56
|
-
this._items = value;
|
57
|
-
let needDiffer = true;
|
58
|
-
if (value instanceof ObservableArray) {
|
59
|
-
needDiffer = false;
|
60
|
-
}
|
61
|
-
if (needDiffer && !this._differ && isListLikeIterable(value)) {
|
62
|
-
this._differ = this._iterableDiffers.find(this._items).create((_index, item) => item);
|
63
|
-
}
|
64
|
-
this._collectionView.items = this._items;
|
65
|
-
}
|
66
|
-
ngAfterContentInit() {
|
67
|
-
if (Trace.isEnabled()) {
|
68
|
-
CLog(CLogTypes.info, 'CollectionView.ngAfterContentInit()');
|
69
|
-
}
|
70
|
-
this.setItemTemplates();
|
71
|
-
}
|
72
|
-
ngOnDestroy() {
|
73
|
-
this._collectionView.off(CollectionView.itemLoadingEvent, this.onItemLoading, this);
|
74
|
-
}
|
75
|
-
ngDoCheck() {
|
76
|
-
if (Trace.isEnabled()) {
|
77
|
-
CLog(CLogTypes.info, 'ngDoCheck() - execute differ? ' + this._differ);
|
78
|
-
}
|
79
|
-
if (this._differ) {
|
80
|
-
if (Trace.isEnabled()) {
|
81
|
-
CLog(CLogTypes.info, 'ngDoCheck() - execute differ');
|
82
|
-
}
|
83
|
-
const changes = this._differ.diff(this._items);
|
84
|
-
if (changes) {
|
85
|
-
if (Trace.isEnabled()) {
|
86
|
-
CLog(CLogTypes.info, 'ngDoCheck() - refresh');
|
87
|
-
}
|
88
|
-
this.refresh();
|
89
|
-
}
|
90
|
-
}
|
91
|
-
}
|
92
|
-
registerTemplate(key, template) {
|
93
|
-
if (Trace.isEnabled()) {
|
94
|
-
CLog(CLogTypes.info, 'registerTemplate for key: ' + key);
|
95
|
-
}
|
96
|
-
if (!this._templateMap) {
|
97
|
-
this._templateMap = new Map();
|
98
|
-
}
|
99
|
-
const keyedTemplate = {
|
100
|
-
key,
|
101
|
-
createView: this.getItemTemplateViewFactory(template),
|
102
|
-
};
|
103
|
-
this._templateMap.set(key, keyedTemplate);
|
104
|
-
}
|
105
|
-
onItemLoading(args) {
|
106
|
-
if (!args.view && !this.itemTemplate) {
|
107
|
-
return;
|
108
|
-
}
|
109
|
-
if (!this.items)
|
110
|
-
return;
|
111
|
-
const index = args.index;
|
112
|
-
const items = args.object.items;
|
113
|
-
const currentItem = typeof items.getItem === 'function'
|
114
|
-
? items.getItem(index)
|
115
|
-
: items[index];
|
116
|
-
let viewRef;
|
117
|
-
if (Trace.isEnabled()) {
|
118
|
-
CLog(CLogTypes.info, `onItemLoading: ${index} - Reusing existing view`);
|
119
|
-
}
|
120
|
-
viewRef = args.view[NG_VIEW];
|
121
|
-
if (!viewRef &&
|
122
|
-
args.view instanceof LayoutBase &&
|
123
|
-
args.view.getChildrenCount() > 0) {
|
124
|
-
viewRef = args.view.getChildAt(0)[NG_VIEW];
|
125
|
-
}
|
126
|
-
if (!viewRef && Trace.isEnabled()) {
|
127
|
-
if (Trace.isEnabled()) {
|
128
|
-
CLog(CLogTypes.info, `ViewReference not found for item ${index}. View recycling is not working`);
|
129
|
-
}
|
130
|
-
}
|
131
|
-
if (!viewRef) {
|
132
|
-
if (Trace.isEnabled()) {
|
133
|
-
CLog(CLogTypes.info, `onItemLoading: ${index} - Creating view from template`);
|
134
|
-
}
|
135
|
-
viewRef = this.loader.createEmbeddedView(this.itemTemplate, new ItemContext(), 0);
|
136
|
-
args.view = getItemViewRoot(viewRef);
|
137
|
-
args.view[NG_VIEW] = viewRef;
|
138
|
-
}
|
139
|
-
this.setupViewRef(viewRef, currentItem, index);
|
140
|
-
this.detectChangesOnChild(viewRef, index);
|
141
|
-
}
|
142
|
-
setupViewRef(view, data, index) {
|
143
|
-
const context = view.context;
|
144
|
-
context.$implicit = data;
|
145
|
-
context.item = data;
|
146
|
-
context.index = index;
|
147
|
-
context.even = index % 2 === 0;
|
148
|
-
context.odd = !context.even;
|
149
|
-
this.setupItemView.next({
|
150
|
-
context,
|
151
|
-
data,
|
152
|
-
index,
|
153
|
-
view,
|
154
|
-
});
|
155
|
-
}
|
156
|
-
getItemTemplateViewFactory(template) {
|
157
|
-
return () => {
|
158
|
-
const viewRef = this.loader.createEmbeddedView(template, new ItemContext(), 0);
|
159
|
-
const resultView = getItemViewRoot(viewRef);
|
160
|
-
resultView[NG_VIEW] = viewRef;
|
161
|
-
return resultView;
|
162
|
-
};
|
163
|
-
}
|
164
|
-
setItemTemplates() {
|
165
|
-
this.itemTemplate = this.itemTemplateQuery;
|
166
|
-
if (this._templateMap) {
|
167
|
-
if (Trace.isEnabled()) {
|
168
|
-
CLog(CLogTypes.info, 'Setting templates');
|
169
|
-
}
|
170
|
-
const templates = [];
|
171
|
-
this._templateMap.forEach((value) => {
|
172
|
-
templates.push(value);
|
173
|
-
});
|
174
|
-
this._collectionView.itemTemplates = templates;
|
175
|
-
}
|
176
|
-
else {
|
177
|
-
this._collectionView.itemTemplate = this.getItemTemplateViewFactory(this.itemTemplate);
|
178
|
-
}
|
179
|
-
}
|
180
|
-
detectChangesOnChild(viewRef, index) {
|
181
|
-
if (Trace.isEnabled()) {
|
182
|
-
CLog(CLogTypes.info, 'Manually detect changes in child: ' + index);
|
183
|
-
}
|
184
|
-
viewRef.markForCheck();
|
185
|
-
viewRef.detectChanges();
|
186
|
-
}
|
187
|
-
refresh() {
|
188
|
-
if (this._collectionView) {
|
189
|
-
this._collectionView.refresh();
|
190
|
-
}
|
191
|
-
}
|
192
|
-
}
|
193
|
-
CollectionViewComponent.ɵfac = function CollectionViewComponent_Factory(t) { return new (t || CollectionViewComponent)(i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(IterableDiffers)); };
|
194
|
-
CollectionViewComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CollectionViewComponent, selectors: [["CollectionView"]], contentQueries: function CollectionViewComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
195
|
-
i0.ɵɵcontentQuery(dirIndex, TemplateRef, 7, TemplateRef);
|
196
|
-
} if (rf & 2) {
|
197
|
-
let _t;
|
198
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplateQuery = _t.first);
|
199
|
-
} }, viewQuery: function CollectionViewComponent_Query(rf, ctx) { if (rf & 1) {
|
200
|
-
i0.ɵɵviewQuery(_c0, 7, ViewContainerRef);
|
201
|
-
} if (rf & 2) {
|
202
|
-
let _t;
|
203
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loader = _t.first);
|
204
|
-
} }, inputs: { itemTemplate: "itemTemplate", items: "items" }, outputs: { setupItemView: "setupItemView" }, decls: 3, vars: 0, consts: [["loader", ""]], template: function CollectionViewComponent_Template(rf, ctx) { if (rf & 1) {
|
205
|
-
i0.ɵɵelementStart(0, "DetachedContainer");
|
206
|
-
i0.ɵɵelement(1, "Placeholder", null, 0);
|
207
|
-
i0.ɵɵelementEnd();
|
208
|
-
} }, encapsulation: 2, changeDetection: 0 });
|
209
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionViewComponent, [{
|
210
|
-
type: Component,
|
211
|
-
args: [{
|
212
|
-
selector: 'CollectionView',
|
213
|
-
template: `
|
214
|
-
<DetachedContainer>
|
215
|
-
<Placeholder #loader></Placeholder>
|
216
|
-
</DetachedContainer>
|
217
|
-
`,
|
218
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
219
|
-
}]
|
220
|
-
}], function () { return [{ type: i0.ElementRef, decorators: [{
|
221
|
-
type: Inject,
|
222
|
-
args: [ElementRef]
|
223
|
-
}] }, { type: i0.IterableDiffers, decorators: [{
|
224
|
-
type: Inject,
|
225
|
-
args: [IterableDiffers]
|
226
|
-
}] }]; }, { loader: [{
|
227
|
-
type: ViewChild,
|
228
|
-
args: ['loader', { read: ViewContainerRef, static: true }]
|
229
|
-
}], setupItemView: [{
|
230
|
-
type: Output
|
231
|
-
}], itemTemplateQuery: [{
|
232
|
-
type: ContentChild,
|
233
|
-
args: [TemplateRef, { read: TemplateRef, static: true }]
|
234
|
-
}], itemTemplate: [{
|
235
|
-
type: Input
|
236
|
-
}], items: [{
|
237
|
-
type: Input
|
238
|
-
}] }); })();
|
239
|
-
export function getItemViewRoot(viewRef, rootLocator = getSingleViewRecursive) {
|
240
|
-
const rootView = rootLocator(viewRef.rootNodes, 0);
|
241
|
-
return rootView;
|
242
|
-
}
|
243
|
-
export class TemplateKeyDirective {
|
244
|
-
constructor(templateRef, collectionView) {
|
245
|
-
this.templateRef = templateRef;
|
246
|
-
this.collectionView = collectionView;
|
247
|
-
}
|
248
|
-
set cvTemplateKey(value) {
|
249
|
-
if (Trace.isEnabled()) {
|
250
|
-
CLog(CLogTypes.info, 'cvTemplateKey: ' + value);
|
251
|
-
}
|
252
|
-
if (this.collectionView && this.templateRef) {
|
253
|
-
this.collectionView.registerTemplate(value.toLowerCase(), this.templateRef);
|
254
|
-
}
|
255
|
-
}
|
256
|
-
}
|
257
|
-
TemplateKeyDirective.ɵfac = function TemplateKeyDirective_Factory(t) { return new (t || TemplateKeyDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(CollectionViewComponent, 1)); };
|
258
|
-
TemplateKeyDirective.ɵdir = i0.ɵɵdefineDirective({ type: TemplateKeyDirective, selectors: [["", "cvTemplateKey", ""]], inputs: { cvTemplateKey: "cvTemplateKey" } });
|
259
|
-
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateKeyDirective, [{
|
260
|
-
type: Directive,
|
261
|
-
args: [{ selector: '[cvTemplateKey]' }]
|
262
|
-
}], function () { return [{ type: i0.TemplateRef }, { type: CollectionViewComponent, decorators: [{
|
263
|
-
type: Host
|
264
|
-
}] }]; }, { cvTemplateKey: [{
|
265
|
-
type: Input
|
266
|
-
}] }); })();
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnZpZXctY29tcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xsZWN0aW9udmlldy9hbmd1bGFyL2NvbGxlY3Rpb252aWV3LWNvbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFFVCxVQUFVLEVBRVYsWUFBWSxFQUNaLElBQUksRUFDSixNQUFNLEVBQ04sS0FBSyxFQUVMLGVBQWUsRUFFZixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsbUJBQW1CLElBQUksa0JBQWtCLEdBQzVDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsVUFBVSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQVEsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQStCLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFNUksT0FBTyxFQUFFLHNCQUFzQixFQUFlLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFFN0YsZUFBZSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXhELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQztBQUU3QixNQUFNLE9BQU8sV0FBVztJQUNwQixZQUNXLFNBQWUsRUFDZixJQUFVLEVBQ1YsS0FBYyxFQUNkLElBQWMsRUFDZCxHQUFhO1FBSmIsY0FBUyxHQUFULFNBQVMsQ0FBTTtRQUNmLFNBQUksR0FBSixJQUFJLENBQU07UUFDVixVQUFLLEdBQUwsS0FBSyxDQUFTO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBVTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQVU7SUFDckIsQ0FBQztDQUNQO0FBa0JELE1BQU0sT0FBTyx1QkFBdUI7SUEyQ2hDLFlBQWdD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QUFhLENBQUMsS0FBVTtRQUN4QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUNuRDtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvRTtJQUNMLENBQUM7O3dGQVhRLG9CQUFvQiw2REFDc0QsdUJBQXVCO3lEQURqRyxvQkFBb0I7dUZBQXBCLG9CQUFvQjtjQURoQyxTQUFTO2VBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7Z0VBRTZDLHVCQUF1QjtzQkFBdEQsSUFBSTt3QkFHcEQsYUFBYTtrQkFEaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIERpcmVjdGl2ZSxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW1iZWRkZWRWaWV3UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgT25EZXN0cm95LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NvbnRhaW5lclJlZixcbiAgICDJtWlzTGlzdExpa2VJdGVyYWJsZSBhcyBpc0xpc3RMaWtlSXRlcmFibGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2V5ZWRUZW1wbGF0ZSwgTGF5b3V0QmFzZSwgT2JzZXJ2YWJsZUFycmF5LCBUcmFjZSwgVmlldyB9IGZyb20gJ0BuYXRpdmVzY3JpcHQvY29yZSc7XG5pbXBvcnQgeyBDTG9nLCBDTG9nVHlwZXMsIENvbGxlY3Rpb25WaWV3LCBDb2xsZWN0aW9uVmlld0l0ZW1FdmVudERhdGEsIExpc3RWaWV3Vmlld1R5cGVzIH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC1jb21tdW5pdHkvdWktY29sbGVjdGlvbnZpZXcnO1xuXG5pbXBvcnQgeyBnZXRTaW5nbGVWaWV3UmVjdXJzaXZlLCBpc0tub3duVmlldywgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcblxucmVnaXN0ZXJFbGVtZW50KCdDb2xsZWN0aW9uVmlldycsICgpID0+IENvbGxlY3Rpb25WaWV3KTtcblxuY29uc3QgTkdfVklFVyA9ICdfbmdWaWV3UmVmJztcblxuZXhwb3J0IGNsYXNzIEl0ZW1Db250ZXh0IHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljICRpbXBsaWNpdD86IGFueSxcbiAgICAgICAgcHVibGljIGl0ZW0/OiBhbnksXG4gICAgICAgIHB1YmxpYyBpbmRleD86IG51bWJlcixcbiAgICAgICAgcHVibGljIGV2ZW4/OiBib29sZWFuLFxuICAgICAgICBwdWJsaWMgb2RkPzogYm9vbGVhblxuICAgICkge31cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR1cEl0ZW1WaWV3QXJncyB7XG4gICAgdmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT47XG4gICAgZGF0YTogYW55O1xuICAgIGluZGV4OiBudW1iZXI7XG4gICAgY29udGV4dDogSXRlbUNvbnRleHQ7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnQ29sbGVjdGlvblZpZXcnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxEZXRhY2hlZENvbnRhaW5lcj5cbiAgICAgICAgICAgIDxQbGFjZWhvbGRlciAjbG9hZGVyPjwvUGxhY2Vob2xkZXI+XG4gICAgICAgIDwvRGV0YWNoZWRDb250YWluZXI+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvblZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvblZpZXc7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgbGlzdFZpZXcoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25WaWV3O1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2xvYWRlcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBsb2FkZXI6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZXR1cEl0ZW1WaWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZXR1cEl0ZW1WaWV3QXJncz4oKTtcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGl0ZW1UZW1wbGF0ZVF1ZXJ5OiBUZW1wbGF0ZVJlZjxJdGVtQ29udGV4dD47XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgaXRlbVRlbXBsYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbVRlbXBsYXRlO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGl0ZW1UZW1wbGF0ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMuX2l0ZW1UZW1wbGF0ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5yZWZyZXNoKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGl0ZW1zKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB2YWx1ZTtcbiAgICAgICAgbGV0IG5lZWREaWZmZXIgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlQXJyYXkpIHtcbiAgICAgICAgICAgIG5lZWREaWZmZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVlZERpZmZlciAmJiAhdGhpcy5fZGlmZmVyICYmIGlzTGlzdExpa2VJdGVyYWJsZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpZmZlciA9IHRoaXMuX2l0ZXJhYmxlRGlmZmVycy5maW5kKHRoaXMuX2l0ZW1zKS5jcmVhdGUoKF9pbmRleCwgaXRlbSkgPT4gaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtcyA9IHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NvbGxlY3Rpb25WaWV3OiBDb2xsZWN0aW9uVmlldztcbiAgICBwcml2YXRlIF9pdGVtczogYW55O1xuICAgIHByaXZhdGUgX2RpZmZlcjogSXRlcmFibGVEaWZmZXI8S2V5ZWRUZW1wbGF0ZT47XG4gICAgcHJpdmF0ZSBfaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxJdGVtQ29udGV4dD47XG4gICAgcHJpdmF0ZSBfdGVtcGxhdGVNYXA6IE1hcDxzdHJpbmcsIEtleWVkVGVtcGxhdGU+O1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChFbGVtZW50UmVmKSBfZWxlbWVudFJlZjogRWxlbWVudFJlZiwgQEluamVjdChJdGVyYWJsZURpZmZlcnMpIHByaXZhdGUgX2l0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzKSB7XG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25WaWV3ID0gX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5vbihDb2xsZWN0aW9uVmlldy5pdGVtTG9hZGluZ0V2ZW50LCB0aGlzLm9uSXRlbUxvYWRpbmcsIHRoaXMpO1xuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtVmlld0xvYWRlciA9IHRoaXMuaXRlbVZpZXdMb2FkZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpdGVtVmlld0xvYWRlciA9ICh2aWV3VHlwZSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHZpZXdUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIExpc3RWaWV3Vmlld1R5cGVzLkl0ZW1WaWV3OlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pdGVtVGVtcGxhdGUgJiYgdGhpcy5sb2FkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmF0aXZlSXRlbSA9IHRoaXMubG9hZGVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9pdGVtVGVtcGxhdGUsIG5ldyBJdGVtQ29udGV4dCgpLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZWRWaWV3ID0gZ2V0SXRlbVZpZXdSb290KG5hdGl2ZUl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB0eXBlZFZpZXdbTkdfVklFV10gPSBuYXRpdmVJdGVtO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZWRWaWV3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKFRyYWNlLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBDTG9nKENMb2dUeXBlcy5pbmZvLCAnQ29sbGVjdGlvblZpZXcubmdBZnRlckNvbnRlbnRJbml0KCknKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEl0ZW1UZW1wbGF0ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25WaWV3Lm9mZihDb2xsZWN0aW9uVmlldy5pdGVtTG9hZGluZ0V2ZW50LCB0aGlzLm9uSXRlbUxvYWRpbmcsIHRoaXMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgJ25nRG9DaGVjaygpIC0gZXhlY3V0ZSBkaWZmZXI/ICcgKyB0aGlzLl9kaWZmZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kaWZmZXIpIHtcbiAgICAgICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sICduZ0RvQ2hlY2soKSAtIGV4ZWN1dGUgZGlmZmVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZmVyLmRpZmYodGhpcy5faXRlbXMpO1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgJ25nRG9DaGVjaygpIC0gcmVmcmVzaCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclRlbXBsYXRlKGtleTogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8SXRlbUNvbnRleHQ+KSB7XG4gICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgJ3JlZ2lzdGVyVGVtcGxhdGUgZm9yIGtleTogJyArIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl90ZW1wbGF0ZU1hcCkge1xuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVNYXAgPSBuZXcgTWFwPHN0cmluZywgS2V5ZWRUZW1wbGF0ZT4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleWVkVGVtcGxhdGUgPSB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBjcmVhdGVWaWV3OiB0aGlzLmdldEl0ZW1UZW1wbGF0ZVZpZXdGYWN0b3J5KHRlbXBsYXRlKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl90ZW1wbGF0ZU1hcC5zZXQoa2V5LCBrZXllZFRlbXBsYXRlKTtcbiAgICB9XG5cbiAgICAvLyBASG9zdExpc3RlbmVyKCdpdGVtTG9hZGluZ0ludGVybmFsJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25JdGVtTG9hZGluZyhhcmdzOiBDb2xsZWN0aW9uVmlld0l0ZW1FdmVudERhdGEpIHtcbiAgICAgICAgaWYgKCFhcmdzLnZpZXcgJiYgIXRoaXMuaXRlbVRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGluZGV4ID0gYXJncy5pbmRleDtcbiAgICAgICAgY29uc3QgaXRlbXMgPSAoYXJncy5vYmplY3QgYXMgYW55KS5pdGVtcztcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPVxuICAgICAgICAgICAgdHlwZW9mIGl0ZW1zLmdldEl0ZW0gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICA/IGl0ZW1zLmdldEl0ZW0oaW5kZXgpXG4gICAgICAgICAgICAgICAgOiBpdGVtc1tpbmRleF07XG4gICAgICAgIGxldCB2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8SXRlbUNvbnRleHQ+O1xuXG4gICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgYG9uSXRlbUxvYWRpbmc6ICR7aW5kZXh9IC0gUmV1c2luZyBleGlzdGluZyB2aWV3YCk7XG4gICAgICAgIH1cblxuICAgICAgICB2aWV3UmVmID0gYXJncy52aWV3W05HX1ZJRVddO1xuICAgICAgICAvLyBHZXR0aW5nIGFuZ3VsYXIgdmlldyBmcm9tIG9yaWdpbmFsIGVsZW1lbnQgKGluIGNhc2VzIHdoZW4gUHJveHlWaWV3Q29udGFpbmVyXG4gICAgICAgIC8vIGlzIHVzZWQgTmF0aXZlU2NyaXB0IGludGVybmFsbHkgd3JhcHMgaXQgaW4gYSBTdGFja0xheW91dClcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXZpZXdSZWYgJiZcbiAgICAgICAgICAgIGFyZ3MudmlldyBpbnN0YW5jZW9mIExheW91dEJhc2UgJiZcbiAgICAgICAgICAgIGFyZ3Mudmlldy5nZXRDaGlsZHJlbkNvdW50KCkgPiAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdmlld1JlZiA9IGFyZ3Mudmlldy5nZXRDaGlsZEF0KDApW05HX1ZJRVddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2aWV3UmVmICYmIFRyYWNlLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICBDTG9nKENMb2dUeXBlcy5pbmZvLCBgVmlld1JlZmVyZW5jZSBub3QgZm91bmQgZm9yIGl0ZW0gJHtpbmRleH0uIFZpZXcgcmVjeWNsaW5nIGlzIG5vdCB3b3JraW5nYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZpZXdSZWYpIHtcbiAgICAgICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sIGBvbkl0ZW1Mb2FkaW5nOiAke2luZGV4fSAtIENyZWF0aW5nIHZpZXcgZnJvbSB0ZW1wbGF0ZWApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2aWV3UmVmID0gdGhpcy5sb2FkZXIuY3JlYXRlRW1iZWRkZWRWaWV3KFxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVRlbXBsYXRlLFxuICAgICAgICAgICAgICAgIG5ldyBJdGVtQ29udGV4dCgpLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhcmdzLnZpZXcgPSBnZXRJdGVtVmlld1Jvb3Qodmlld1JlZik7XG4gICAgICAgICAgICBhcmdzLnZpZXdbTkdfVklFV10gPSB2aWV3UmVmO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXR1cFZpZXdSZWYodmlld1JlZiwgY3VycmVudEl0ZW0sIGluZGV4KTtcblxuICAgICAgICB0aGlzLmRldGVjdENoYW5nZXNPbkNoaWxkKHZpZXdSZWYsIGluZGV4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0dXBWaWV3UmVmKHZpZXc6IEVtYmVkZGVkVmlld1JlZjxJdGVtQ29udGV4dD4sIGRhdGE6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdmlldy5jb250ZXh0O1xuICAgICAgICBjb250ZXh0LiRpbXBsaWNpdCA9IGRhdGE7XG4gICAgICAgIGNvbnRleHQuaXRlbSA9IGRhdGE7XG4gICAgICAgIGNvbnRleHQuaW5kZXggPSBpbmRleDtcbiAgICAgICAgY29udGV4dC5ldmVuID0gaW5kZXggJSAyID09PSAwO1xuICAgICAgICBjb250ZXh0Lm9kZCA9ICFjb250ZXh0LmV2ZW47XG5cbiAgICAgICAgdGhpcy5zZXR1cEl0ZW1WaWV3Lm5leHQoe1xuICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBpbmRleCxcbiAgICAgICAgICAgIHZpZXcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJdGVtVGVtcGxhdGVWaWV3RmFjdG9yeShcbiAgICAgICAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPEl0ZW1Db250ZXh0PlxuICAgICk6ICgpID0+IFZpZXcge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgdmlld1JlZiA9IHRoaXMubG9hZGVyLmNyZWF0ZUVtYmVkZGVkVmlldyhcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICBuZXcgSXRlbUNvbnRleHQoKSxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0VmlldyA9IGdldEl0ZW1WaWV3Um9vdCh2aWV3UmVmKTtcbiAgICAgICAgICAgIHJlc3VsdFZpZXdbTkdfVklFV10gPSB2aWV3UmVmO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0VmlldztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEl0ZW1UZW1wbGF0ZXMoKSB7XG4gICAgICAgIC8vIFRoZSBpdGVtVGVtcGxhdGVRdWVyeSBtYXkgYmUgY2hhbmdlZCBhZnRlciBsaXN0IGl0ZW1zIGFyZSBhZGRlZCB0aGF0IGNvbnRhaW4gPHRlbXBsYXRlPiBpbnNpZGUsXG4gICAgICAgIC8vIHNvIGNhY2hlIGFuZCB1c2Ugb25seSB0aGUgb3JpZ2luYWwgdGVtcGxhdGUgdG8gYXZvaWQgZXJyb3JzLlxuICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IHRoaXMuaXRlbVRlbXBsYXRlUXVlcnk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlTWFwKSB7XG4gICAgICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICBDTG9nKENMb2dUeXBlcy5pbmZvLCAnU2V0dGluZyB0ZW1wbGF0ZXMnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVzOiBLZXllZFRlbXBsYXRlW10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlTWFwLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGVtcGxhdGVzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtVGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIG1hcCB3YXMgbm90IGluaXRpYWxpemVkIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBhcmUgbm8gbmFtZWQgdGVtcGxhdGVzLCBzbyB3ZSByZWdpc3RlciB0aGUgZGVmYXVsdCBvbmUuXG4gICAgICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtVGVtcGxhdGUgPSB0aGlzLmdldEl0ZW1UZW1wbGF0ZVZpZXdGYWN0b3J5KHRoaXMuaXRlbVRlbXBsYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0Q2hhbmdlc09uQ2hpbGQodmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPEl0ZW1Db250ZXh0PiwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sICdNYW51YWxseSBkZXRlY3QgY2hhbmdlcyBpbiBjaGlsZDogJyArIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB2aWV3UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2goKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb2xsZWN0aW9uVmlldykge1xuICAgICAgICAgICAgdGhpcy5fY29sbGVjdGlvblZpZXcucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFZpZXcge1xuICAgIHJvb3ROb2RlczogYW55W107XG4gICAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBSb290TG9jYXRvciA9IChub2RlczogYW55W10sIG5lc3RMZXZlbDogbnVtYmVyKSA9PiBWaWV3O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXRlbVZpZXdSb290KHZpZXdSZWY6IENvbXBvbmVudFZpZXcsIHJvb3RMb2NhdG9yOiBSb290TG9jYXRvciA9IGdldFNpbmdsZVZpZXdSZWN1cnNpdmUpOiBWaWV3IHtcbiAgICBjb25zdCByb290VmlldyA9IHJvb3RMb2NhdG9yKHZpZXdSZWYucm9vdE5vZGVzLCAwKTtcbiAgICByZXR1cm4gcm9vdFZpZXc7XG59XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tjdlRlbXBsYXRlS2V5XScgfSlcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUtleURpcmVjdGl2ZSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PiwgQEhvc3QoKSBwcml2YXRlIGNvbGxlY3Rpb25WaWV3OiBDb2xsZWN0aW9uVmlld0NvbXBvbmVudCkge31cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN2VGVtcGxhdGVLZXkodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sICdjdlRlbXBsYXRlS2V5OiAnICsgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmNvbGxlY3Rpb25WaWV3ICYmIHRoaXMudGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGVjdGlvblZpZXcucmVnaXN0ZXJUZW1wbGF0ZSh2YWx1ZS50b0xvd2VyQ2FzZSgpLCB0aGlzLnRlbXBsYXRlUmVmKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"nativescript-community-ui-collectionview-angular.js","sources":["../../../../src/collectionview/angular/collectionview-comp.ts","../../../../src/collectionview/angular/index.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n DoCheck,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Host,\n Inject,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ɵisListLikeIterable as isListLikeIterable,\n} from '@angular/core';\nimport { KeyedTemplate, LayoutBase, ObservableArray, Trace, View } from '@nativescript/core';\nimport { CLog, CLogTypes, CollectionView, CollectionViewItemEventData, ListViewViewTypes } from '@nativescript-community/ui-collectionview';\n\nimport { getSingleViewRecursive, isKnownView, registerElement } from '@nativescript/angular';\n\nregisterElement('CollectionView', () => CollectionView);\n\nconst NG_VIEW = '_ngViewRef';\n\nexport class ItemContext {\n constructor(\n public $implicit?: any,\n public item?: any,\n public index?: number,\n public even?: boolean,\n public odd?: boolean\n ) {}\n}\n\nexport interface SetupItemViewArgs {\n view: EmbeddedViewRef<any>;\n data: any;\n index: number;\n context: ItemContext;\n}\n\n@Component({\n selector: 'CollectionView',\n template: `\n <DetachedContainer>\n <Placeholder #loader></Placeholder>\n </DetachedContainer>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CollectionViewComponent implements DoCheck, OnDestroy, AfterContentInit {\n public get nativeElement(): any {\n return this._collectionView;\n }\n public get listView(): any {\n return this._collectionView;\n }\n\n @ViewChild('loader', { read: ViewContainerRef, static: true }) public loader: ViewContainerRef;\n @Output() public setupItemView = new EventEmitter<SetupItemViewArgs>();\n @ContentChild(TemplateRef, { read: TemplateRef, static: true }) public itemTemplateQuery: TemplateRef<ItemContext>;\n\n @Input()\n public get itemTemplate() {\n return this._itemTemplate;\n }\n public set itemTemplate(value: any) {\n this._itemTemplate = value;\n this._collectionView.refresh();\n }\n @Input()\n public get items() {\n return this._items;\n }\n public set items(value: any) {\n this._items = value;\n let needDiffer = true;\n if (value instanceof ObservableArray) {\n needDiffer = false;\n }\n if (needDiffer && !this._differ && isListLikeIterable(value)) {\n this._differ = this._iterableDiffers.find(this._items).create((_index, item) => item);\n }\n\n this._collectionView.items = this._items;\n }\n\n private _collectionView: CollectionView;\n private _items: any;\n private _differ: IterableDiffer<KeyedTemplate>;\n private _itemTemplate: TemplateRef<ItemContext>;\n private _templateMap: Map<string, KeyedTemplate>;\n\n constructor(@Inject(ElementRef) _elementRef: ElementRef, @Inject(IterableDiffers) private _iterableDiffers: IterableDiffers) {\n this._collectionView = _elementRef.nativeElement;\n\n this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);\n this._collectionView.itemViewLoader = this.itemViewLoader;\n }\n\n private itemViewLoader = (viewType) => {\n switch (viewType) {\n case ListViewViewTypes.ItemView:\n if (this._itemTemplate && this.loader) {\n const nativeItem = this.loader.createEmbeddedView(this._itemTemplate, new ItemContext(), 0);\n const typedView = getItemViewRoot(nativeItem);\n typedView[NG_VIEW] = nativeItem;\n return typedView;\n }\n break;\n }\n return null;\n };\n\n public ngAfterContentInit() {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'CollectionView.ngAfterContentInit()');\n }\n this.setItemTemplates();\n }\n\n public ngOnDestroy() {\n this._collectionView.off(CollectionView.itemLoadingEvent, this.onItemLoading, this);\n }\n\n public ngDoCheck() {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - execute differ? ' + this._differ);\n }\n if (this._differ) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - execute differ');\n }\n const changes = this._differ.diff(this._items);\n if (changes) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'ngDoCheck() - refresh');\n }\n this.refresh();\n }\n }\n }\n\n public registerTemplate(key: string, template: TemplateRef<ItemContext>) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'registerTemplate for key: ' + key);\n }\n if (!this._templateMap) {\n this._templateMap = new Map<string, KeyedTemplate>();\n }\n\n const keyedTemplate = {\n key,\n createView: this.getItemTemplateViewFactory(template),\n };\n\n this._templateMap.set(key, keyedTemplate);\n }\n\n // @HostListener('itemLoadingInternal', ['$event'])\n public onItemLoading(args: CollectionViewItemEventData) {\n if (!args.view && !this.itemTemplate) {\n return;\n }\n if (!this.items) return;\n const index = args.index;\n const items = (args.object as any).items;\n const currentItem =\n typeof items.getItem === 'function'\n ? items.getItem(index)\n : items[index];\n let viewRef: EmbeddedViewRef<ItemContext>;\n\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `onItemLoading: ${index} - Reusing existing view`);\n }\n\n viewRef = args.view[NG_VIEW];\n // Getting angular view from original element (in cases when ProxyViewContainer\n // is used NativeScript internally wraps it in a StackLayout)\n if (\n !viewRef &&\n args.view instanceof LayoutBase &&\n args.view.getChildrenCount() > 0\n ) {\n viewRef = args.view.getChildAt(0)[NG_VIEW];\n }\n\n if (!viewRef && Trace.isEnabled()) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `ViewReference not found for item ${index}. View recycling is not working`);\n }\n }\n\n if (!viewRef) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, `onItemLoading: ${index} - Creating view from template`);\n }\n\n viewRef = this.loader.createEmbeddedView(\n this.itemTemplate,\n new ItemContext(),\n 0\n );\n args.view = getItemViewRoot(viewRef);\n args.view[NG_VIEW] = viewRef;\n }\n\n this.setupViewRef(viewRef, currentItem, index);\n\n this.detectChangesOnChild(viewRef, index);\n }\n\n public setupViewRef(view: EmbeddedViewRef<ItemContext>, data: any, index: number): void {\n const context = view.context;\n context.$implicit = data;\n context.item = data;\n context.index = index;\n context.even = index % 2 === 0;\n context.odd = !context.even;\n\n this.setupItemView.next({\n context,\n data,\n index,\n view,\n });\n }\n\n protected getItemTemplateViewFactory(\n template: TemplateRef<ItemContext>\n ): () => View {\n return () => {\n const viewRef = this.loader.createEmbeddedView(\n template,\n new ItemContext(),\n 0\n );\n const resultView = getItemViewRoot(viewRef);\n resultView[NG_VIEW] = viewRef;\n\n return resultView;\n };\n }\n\n private setItemTemplates() {\n // The itemTemplateQuery may be changed after list items are added that contain <template> inside,\n // so cache and use only the original template to avoid errors.\n this.itemTemplate = this.itemTemplateQuery;\n\n if (this._templateMap) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'Setting templates');\n }\n\n const templates: KeyedTemplate[] = [];\n this._templateMap.forEach((value) => {\n templates.push(value);\n });\n this._collectionView.itemTemplates = templates;\n } else {\n // If the map was not initialized this means that there are no named templates, so we register the default one.\n this._collectionView.itemTemplate = this.getItemTemplateViewFactory(this.itemTemplate);\n }\n }\n\n private detectChangesOnChild(viewRef: EmbeddedViewRef<ItemContext>, index: number) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'Manually detect changes in child: ' + index);\n }\n viewRef.markForCheck();\n viewRef.detectChanges();\n }\n\n private refresh() {\n if (this._collectionView) {\n this._collectionView.refresh();\n }\n }\n}\n\nexport interface ComponentView {\n rootNodes: any[];\n destroy(): void;\n}\n\nexport type RootLocator = (nodes: any[], nestLevel: number) => View;\n\nexport function getItemViewRoot(viewRef: ComponentView, rootLocator: RootLocator = getSingleViewRecursive): View {\n const rootView = rootLocator(viewRef.rootNodes, 0);\n return rootView;\n}\n\n@Directive({ selector: '[cvTemplateKey]' })\nexport class TemplateKeyDirective {\n constructor(private templateRef: TemplateRef<any>, @Host() private collectionView: CollectionViewComponent) {}\n\n @Input()\n set cvTemplateKey(value: any) {\n if (Trace.isEnabled()) {\n CLog(CLogTypes.info, 'cvTemplateKey: ' + value);\n }\n if (this.collectionView && this.templateRef) {\n this.collectionView.registerTemplate(value.toLowerCase(), this.templateRef);\n }\n }\n}\n","// External\nimport { NO_ERRORS_SCHEMA, NgModule } from '@angular/core';\n\nimport { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';\nexport { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';\n\n@NgModule({\n declarations: [CollectionViewComponent, TemplateKeyDirective],\n exports: [CollectionViewComponent, TemplateKeyDirective],\n schemas: [NO_ERRORS_SCHEMA],\n})\nexport class CollectionViewModule {}\n"],"names":["isListLikeIterable"],"mappings":"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"}
|