@nativescript-community/ui-collectionview 6.0.10 → 6.0.11
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 +6 -0
- package/angular/fesm2022/nativescript-community-ui-collectionview-angular.mjs +10 -9
- package/angular/fesm2022/nativescript-community-ui-collectionview-angular.mjs.map +1 -1
- package/angular/index.d.ts +82 -5
- package/angular/package.json +1 -3
- package/index-common.d.ts +3 -1
- package/index.ios.js.map +1 -1
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -0
- package/tsconfig.vue3.json +12 -0
- package/tsconfig.vue3.tsbuildinfo +1 -0
- package/vue3/component.d.ts +36 -0
- package/vue3/component.js +98 -0
- package/vue3/component.js.map +1 -0
- package/vue3/index.d.ts +11 -0
- package/vue3/index.js +14 -0
- package/vue3/index.js.map +1 -0
- package/angular/collectionview-comp.d.ts +0 -82
- package/angular/esm2022/collectionview-comp.mjs +0 -417
- package/angular/esm2022/index.mjs +0 -20
- package/angular/esm2022/nativescript-community-ui-collectionview-angular.mjs +0 -5
- package/index.android.d.ts +0 -139
- package/index.ios.d.ts +0 -177
- package/svelte/index.d.ts +0 -20
- package/vue/component.d.ts +0 -38
- package/vue/index.d.ts +0 -4
|
@@ -1,417 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild, Directive, ElementRef, EventEmitter, Host, HostListener, Inject, Input, IterableDiffers, NgZone, Output, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
|
-
import { CLog, CLogTypes, CollectionView, ListViewViewTypes } from '@nativescript-community/ui-collectionview';
|
|
3
|
-
import { DetachedLoader, NativeScriptRendererFactory, extractSingleViewRecursive, isListLikeIterable, registerElement } from '@nativescript/angular';
|
|
4
|
-
import { LayoutBase, ObservableArray, Trace } from '@nativescript/core';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@nativescript/angular";
|
|
7
|
-
const _c0 = ["loader"];
|
|
8
|
-
registerElement('CollectionView', () => CollectionView);
|
|
9
|
-
const NG_VIEW = '_ngViewRef';
|
|
10
|
-
export class ItemContext {
|
|
11
|
-
$implicit;
|
|
12
|
-
item;
|
|
13
|
-
index;
|
|
14
|
-
even;
|
|
15
|
-
odd;
|
|
16
|
-
constructor($implicit, item, index, even, odd) {
|
|
17
|
-
this.$implicit = $implicit;
|
|
18
|
-
this.item = item;
|
|
19
|
-
this.index = index;
|
|
20
|
-
this.even = even;
|
|
21
|
-
this.odd = odd;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
export class CollectionViewComponent {
|
|
25
|
-
_elementRef;
|
|
26
|
-
_iterableDiffers;
|
|
27
|
-
_renderer;
|
|
28
|
-
_ngZone;
|
|
29
|
-
get nativeElement() {
|
|
30
|
-
return this._collectionView;
|
|
31
|
-
}
|
|
32
|
-
get listView() {
|
|
33
|
-
return this._collectionView;
|
|
34
|
-
}
|
|
35
|
-
loader;
|
|
36
|
-
setupItemView = new EventEmitter();
|
|
37
|
-
itemTemplateQuery;
|
|
38
|
-
autoReuseViews = false;
|
|
39
|
-
detachedLoaderFactory() {
|
|
40
|
-
const ref = this.loader.createComponent(DetachedLoader, {
|
|
41
|
-
index: 0
|
|
42
|
-
});
|
|
43
|
-
this.loader.detach(0);
|
|
44
|
-
this._loaders.push(ref);
|
|
45
|
-
return ref;
|
|
46
|
-
}
|
|
47
|
-
get itemTemplate() {
|
|
48
|
-
return this._itemTemplate;
|
|
49
|
-
}
|
|
50
|
-
set itemTemplate(value) {
|
|
51
|
-
this._itemTemplate = value;
|
|
52
|
-
this._collectionView.refresh();
|
|
53
|
-
}
|
|
54
|
-
get items() {
|
|
55
|
-
return this._items;
|
|
56
|
-
}
|
|
57
|
-
set items(value) {
|
|
58
|
-
this._items = value;
|
|
59
|
-
let needDiffer = true;
|
|
60
|
-
if (value instanceof ObservableArray) {
|
|
61
|
-
needDiffer = false;
|
|
62
|
-
}
|
|
63
|
-
if (needDiffer && !this._differ && isListLikeIterable(value)) {
|
|
64
|
-
this._differ = this._iterableDiffers.find(this._items).create((_index, item) => item);
|
|
65
|
-
}
|
|
66
|
-
this._collectionView.items = this._items;
|
|
67
|
-
}
|
|
68
|
-
_collectionView;
|
|
69
|
-
_items;
|
|
70
|
-
_differ;
|
|
71
|
-
_itemTemplate;
|
|
72
|
-
_templateMap;
|
|
73
|
-
_loaders;
|
|
74
|
-
constructor(_elementRef, _iterableDiffers, _renderer, _ngZone) {
|
|
75
|
-
this._elementRef = _elementRef;
|
|
76
|
-
this._iterableDiffers = _iterableDiffers;
|
|
77
|
-
this._renderer = _renderer;
|
|
78
|
-
this._ngZone = _ngZone;
|
|
79
|
-
this._collectionView = _elementRef.nativeElement;
|
|
80
|
-
this._collectionView.on(CollectionView.itemLoadingEvent, this.onItemLoading, this);
|
|
81
|
-
this._collectionView.itemViewLoader = this.itemViewLoader;
|
|
82
|
-
this._loaders = [];
|
|
83
|
-
}
|
|
84
|
-
itemViewLoader = (viewType) => this._ngZone.run(() => {
|
|
85
|
-
switch (viewType) {
|
|
86
|
-
case ListViewViewTypes.ItemView:
|
|
87
|
-
if (this._itemTemplate && this.loader) {
|
|
88
|
-
const typedView = this.getOrCreate(this._itemTemplate);
|
|
89
|
-
return typedView;
|
|
90
|
-
}
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
return null;
|
|
94
|
-
});
|
|
95
|
-
ngAfterContentInit() {
|
|
96
|
-
if (Trace.isEnabled()) {
|
|
97
|
-
CLog(CLogTypes.info, 'CollectionView.ngAfterContentInit()');
|
|
98
|
-
}
|
|
99
|
-
this.setItemTemplates();
|
|
100
|
-
}
|
|
101
|
-
ngOnDestroy() {
|
|
102
|
-
this._collectionView.off(CollectionView.itemLoadingEvent, this.onItemLoading, this);
|
|
103
|
-
this._collectionView = null;
|
|
104
|
-
this._loaders.forEach((l) => l.destroy());
|
|
105
|
-
this._loaders = null;
|
|
106
|
-
this.viewToLoader = null;
|
|
107
|
-
this.viewToTemplate = null;
|
|
108
|
-
this.viewPool = null;
|
|
109
|
-
this._items = null;
|
|
110
|
-
this._differ = null;
|
|
111
|
-
this._itemTemplate = null;
|
|
112
|
-
if (this._templateMap) {
|
|
113
|
-
this._templateMap.clear();
|
|
114
|
-
}
|
|
115
|
-
this._templateMap = null;
|
|
116
|
-
}
|
|
117
|
-
ngDoCheck() {
|
|
118
|
-
if (Trace.isEnabled()) {
|
|
119
|
-
CLog(CLogTypes.info, 'ngDoCheck() - execute differ? ' + this._differ);
|
|
120
|
-
}
|
|
121
|
-
if (this._differ) {
|
|
122
|
-
if (Trace.isEnabled()) {
|
|
123
|
-
CLog(CLogTypes.info, 'ngDoCheck() - execute differ');
|
|
124
|
-
}
|
|
125
|
-
const changes = this._differ.diff(this._items);
|
|
126
|
-
if (changes) {
|
|
127
|
-
if (Trace.isEnabled()) {
|
|
128
|
-
CLog(CLogTypes.info, 'ngDoCheck() - refresh');
|
|
129
|
-
}
|
|
130
|
-
this.refresh();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
registerTemplate(key, template) {
|
|
135
|
-
if (Trace.isEnabled()) {
|
|
136
|
-
CLog(CLogTypes.info, 'registerTemplate for key: ' + key);
|
|
137
|
-
}
|
|
138
|
-
if (!this._templateMap) {
|
|
139
|
-
this._templateMap = new Map();
|
|
140
|
-
}
|
|
141
|
-
const keyedTemplate = {
|
|
142
|
-
key,
|
|
143
|
-
createView: this.getItemTemplateViewFactory(template)
|
|
144
|
-
};
|
|
145
|
-
this._templateMap.set(key, keyedTemplate);
|
|
146
|
-
}
|
|
147
|
-
onItemLoading(args) {
|
|
148
|
-
if (!args.view && !this.itemTemplate) {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
if (!this.items)
|
|
152
|
-
return;
|
|
153
|
-
const index = args.index;
|
|
154
|
-
const items = args.object.items;
|
|
155
|
-
const currentItem = typeof items.getItem === 'function' ? items.getItem(index) : items[index];
|
|
156
|
-
let viewRef;
|
|
157
|
-
if (Trace.isEnabled()) {
|
|
158
|
-
CLog(CLogTypes.info, `onItemLoading: ${index} - Reusing existing view`);
|
|
159
|
-
}
|
|
160
|
-
viewRef = args.view[NG_VIEW];
|
|
161
|
-
// Getting angular view from original element (in cases when ProxyViewContainer
|
|
162
|
-
// is used NativeScript internally wraps it in a StackLayout)
|
|
163
|
-
if (!viewRef && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {
|
|
164
|
-
viewRef = args.view.getChildAt(0)[NG_VIEW];
|
|
165
|
-
}
|
|
166
|
-
if (!viewRef && Trace.isEnabled()) {
|
|
167
|
-
if (Trace.isEnabled()) {
|
|
168
|
-
CLog(CLogTypes.info, `ViewReference not found for item ${index}. View recycling is not working`);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
if (!viewRef) {
|
|
172
|
-
if (Trace.isEnabled()) {
|
|
173
|
-
CLog(CLogTypes.info, `onItemLoading: ${index} - Creating view from template`);
|
|
174
|
-
}
|
|
175
|
-
viewRef = this.loader.createEmbeddedView(this.itemTemplate, new ItemContext(), 0);
|
|
176
|
-
args.view = getItemViewRoot(viewRef);
|
|
177
|
-
args.view[NG_VIEW] = viewRef;
|
|
178
|
-
}
|
|
179
|
-
this.setupViewRef(viewRef, currentItem, index);
|
|
180
|
-
this.detectChangesOnChild(viewRef, index);
|
|
181
|
-
}
|
|
182
|
-
onItemRecyclingInternal(args) {
|
|
183
|
-
if (!args.view) {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
let ngView = args.view[NG_VIEW];
|
|
187
|
-
// Getting angular view from original element (in cases when ProxyViewContainer
|
|
188
|
-
// is used NativeScript internally wraps it in a StackLayout)
|
|
189
|
-
if (!ngView && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {
|
|
190
|
-
ngView = args.view.getChildAt(0)[NG_VIEW];
|
|
191
|
-
}
|
|
192
|
-
// console.log('recycling', args.view);
|
|
193
|
-
if (ngView) {
|
|
194
|
-
ngView.detach();
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
onItemDisposingInternal(args) {
|
|
198
|
-
if (!args.view) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
let ngView = args.view[NG_VIEW];
|
|
202
|
-
// Getting angular view from original element (in cases when ProxyViewContainer
|
|
203
|
-
// is used NativeScript internally wraps it in a StackLayout)
|
|
204
|
-
if (!ngView && args.view instanceof LayoutBase && args.view.getChildrenCount() > 0) {
|
|
205
|
-
ngView = args.view.getChildAt(0)[NG_VIEW];
|
|
206
|
-
}
|
|
207
|
-
if (ngView) {
|
|
208
|
-
ngView.detach();
|
|
209
|
-
this.storeViewRef(ngView);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
setupViewRef(view, data, index) {
|
|
213
|
-
const context = view.context;
|
|
214
|
-
context.$implicit = data;
|
|
215
|
-
context.item = data;
|
|
216
|
-
context.index = index;
|
|
217
|
-
context.even = index % 2 === 0;
|
|
218
|
-
context.odd = !context.even;
|
|
219
|
-
this.setupItemView.next({
|
|
220
|
-
context,
|
|
221
|
-
data,
|
|
222
|
-
index,
|
|
223
|
-
view
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
getItemTemplateViewFactory(template) {
|
|
227
|
-
return () => {
|
|
228
|
-
const viewRef = this.loader.createEmbeddedView(template, new ItemContext(), 0);
|
|
229
|
-
const resultView = getItemViewRoot(viewRef);
|
|
230
|
-
resultView[NG_VIEW] = viewRef;
|
|
231
|
-
return resultView;
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
viewPool = new Map();
|
|
235
|
-
storeViewRef(viewRef) {
|
|
236
|
-
const templateRef = this.viewToTemplate.get(viewRef);
|
|
237
|
-
if (templateRef) {
|
|
238
|
-
const scrap = this.viewPool.get(templateRef);
|
|
239
|
-
if (scrap) {
|
|
240
|
-
if (scrap.scrapHead.size >= scrap.scrapSize) {
|
|
241
|
-
viewRef.destroy();
|
|
242
|
-
this.viewToLoader.get(viewRef)?.destroy();
|
|
243
|
-
}
|
|
244
|
-
else {
|
|
245
|
-
scrap.scrapHead.add(viewRef);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
viewToTemplate = new WeakMap();
|
|
251
|
-
viewToLoader = new WeakMap();
|
|
252
|
-
getOrCreate(templateRef) {
|
|
253
|
-
return this._ngZone.run(() => {
|
|
254
|
-
let viewRef = this.getView(templateRef);
|
|
255
|
-
if (!viewRef) {
|
|
256
|
-
const loader = this.detachedLoaderFactory();
|
|
257
|
-
// viewRef = this.loader.createEmbeddedView(templateRef, new ItemContext(), 0);
|
|
258
|
-
viewRef = loader.instance.vc.createEmbeddedView(templateRef, new ItemContext(), 0);
|
|
259
|
-
this.viewToLoader.set(viewRef, loader);
|
|
260
|
-
this.viewToTemplate.set(viewRef, templateRef);
|
|
261
|
-
}
|
|
262
|
-
viewRef.detach();
|
|
263
|
-
const resultView = getItemViewRoot(viewRef);
|
|
264
|
-
resultView[NG_VIEW] = viewRef;
|
|
265
|
-
resultView.reusable = this.autoReuseViews;
|
|
266
|
-
return resultView;
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
getView(templateRef) {
|
|
270
|
-
const pool = this.getViewPool(templateRef);
|
|
271
|
-
while (pool.scrapHead.size > 0) {
|
|
272
|
-
const viewRef = pool.scrapHead.values().next().value;
|
|
273
|
-
pool.scrapHead.delete(viewRef);
|
|
274
|
-
if (!viewRef.destroyed) {
|
|
275
|
-
return viewRef;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return null;
|
|
279
|
-
}
|
|
280
|
-
getViewPool(templateRef) {
|
|
281
|
-
if (!this.viewPool.has(templateRef)) {
|
|
282
|
-
this.viewPool.set(templateRef, {
|
|
283
|
-
scrapSize: this.autoReuseViews ? Infinity : 0,
|
|
284
|
-
scrapHead: new Set()
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
return this.viewPool.get(templateRef);
|
|
288
|
-
}
|
|
289
|
-
setItemTemplates() {
|
|
290
|
-
// The itemTemplateQuery may be changed after list items are added that contain <template> inside,
|
|
291
|
-
// so cache and use only the original template to avoid errors.
|
|
292
|
-
this.itemTemplate = this.itemTemplateQuery;
|
|
293
|
-
if (this._templateMap) {
|
|
294
|
-
if (Trace.isEnabled()) {
|
|
295
|
-
CLog(CLogTypes.info, 'Setting templates');
|
|
296
|
-
}
|
|
297
|
-
const templates = [];
|
|
298
|
-
this._templateMap.forEach((value) => {
|
|
299
|
-
templates.push(value);
|
|
300
|
-
});
|
|
301
|
-
this._collectionView.itemTemplates = templates;
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
// If the map was not initialized this means that there are no named templates, so we register the default one.
|
|
305
|
-
this._collectionView.itemTemplate = this.getItemTemplateViewFactory(this.itemTemplate);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
detectChangesOnChild(viewRef, index) {
|
|
309
|
-
if (Trace.isEnabled()) {
|
|
310
|
-
CLog(CLogTypes.info, 'Manually detect changes in child: ' + index);
|
|
311
|
-
}
|
|
312
|
-
viewRef.markForCheck();
|
|
313
|
-
viewRef.detectChanges();
|
|
314
|
-
}
|
|
315
|
-
refresh() {
|
|
316
|
-
if (this._collectionView) {
|
|
317
|
-
this._collectionView.refresh();
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
static ɵfac = function CollectionViewComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionViewComponent)(i0.ɵɵdirectiveInject(ElementRef), i0.ɵɵdirectiveInject(IterableDiffers), i0.ɵɵdirectiveInject(NativeScriptRendererFactory), i0.ɵɵdirectiveInject(NgZone)); };
|
|
321
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionViewComponent, selectors: [["CollectionView"]], contentQueries: function CollectionViewComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
322
|
-
i0.ɵɵcontentQuery(dirIndex, TemplateRef, 7, TemplateRef);
|
|
323
|
-
} if (rf & 2) {
|
|
324
|
-
let _t;
|
|
325
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.itemTemplateQuery = _t.first);
|
|
326
|
-
} }, viewQuery: function CollectionViewComponent_Query(rf, ctx) { if (rf & 1) {
|
|
327
|
-
i0.ɵɵviewQuery(_c0, 7, ViewContainerRef);
|
|
328
|
-
} if (rf & 2) {
|
|
329
|
-
let _t;
|
|
330
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loader = _t.first);
|
|
331
|
-
} }, hostBindings: function CollectionViewComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
332
|
-
i0.ɵɵlistener("itemLoading", function CollectionViewComponent_itemLoading_HostBindingHandler($event) { return ctx.onItemLoading($event); })("itemRecycling", function CollectionViewComponent_itemRecycling_HostBindingHandler($event) { return ctx.onItemRecyclingInternal($event); })("itemDisposing", function CollectionViewComponent_itemDisposing_HostBindingHandler($event) { return ctx.onItemDisposingInternal($event); });
|
|
333
|
-
} }, inputs: { autoReuseViews: "autoReuseViews", itemTemplate: "itemTemplate", items: "items" }, outputs: { setupItemView: "setupItemView" }, decls: 3, vars: 0, consts: [["loader", ""]], template: function CollectionViewComponent_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
-
i0.ɵɵelementStart(0, "DetachedContainer");
|
|
335
|
-
i0.ɵɵelement(1, "Placeholder", null, 0);
|
|
336
|
-
i0.ɵɵelementEnd();
|
|
337
|
-
} }, encapsulation: 2, changeDetection: 0 });
|
|
338
|
-
}
|
|
339
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionViewComponent, [{
|
|
340
|
-
type: Component,
|
|
341
|
-
args: [{
|
|
342
|
-
selector: 'CollectionView',
|
|
343
|
-
template: `
|
|
344
|
-
<DetachedContainer>
|
|
345
|
-
<Placeholder #loader></Placeholder>
|
|
346
|
-
</DetachedContainer>
|
|
347
|
-
`,
|
|
348
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
349
|
-
}]
|
|
350
|
-
}], () => [{ type: i0.ElementRef, decorators: [{
|
|
351
|
-
type: Inject,
|
|
352
|
-
args: [ElementRef]
|
|
353
|
-
}] }, { type: i0.IterableDiffers, decorators: [{
|
|
354
|
-
type: Inject,
|
|
355
|
-
args: [IterableDiffers]
|
|
356
|
-
}] }, { type: i1.NativeScriptRendererFactory, decorators: [{
|
|
357
|
-
type: Inject,
|
|
358
|
-
args: [NativeScriptRendererFactory]
|
|
359
|
-
}] }, { type: i0.NgZone, decorators: [{
|
|
360
|
-
type: Inject,
|
|
361
|
-
args: [NgZone]
|
|
362
|
-
}] }], { loader: [{
|
|
363
|
-
type: ViewChild,
|
|
364
|
-
args: ['loader', { read: ViewContainerRef, static: true }]
|
|
365
|
-
}], setupItemView: [{
|
|
366
|
-
type: Output
|
|
367
|
-
}], itemTemplateQuery: [{
|
|
368
|
-
type: ContentChild,
|
|
369
|
-
args: [TemplateRef, { read: TemplateRef, static: true }]
|
|
370
|
-
}], autoReuseViews: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], itemTemplate: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], items: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], onItemLoading: [{
|
|
377
|
-
type: HostListener,
|
|
378
|
-
args: ['itemLoading', ['$event']]
|
|
379
|
-
}], onItemRecyclingInternal: [{
|
|
380
|
-
type: HostListener,
|
|
381
|
-
args: ['itemRecycling', ['$event']]
|
|
382
|
-
}], onItemDisposingInternal: [{
|
|
383
|
-
type: HostListener,
|
|
384
|
-
args: ['itemDisposing', ['$event']]
|
|
385
|
-
}] }); })();
|
|
386
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionViewComponent, { className: "CollectionViewComponent", filePath: "collectionview-comp.ts", lineNumber: 53 }); })();
|
|
387
|
-
export function getItemViewRoot(viewRef, rootLocator = extractSingleViewRecursive) {
|
|
388
|
-
const rootView = rootLocator(viewRef.rootNodes, 0);
|
|
389
|
-
return rootView;
|
|
390
|
-
}
|
|
391
|
-
export class TemplateKeyDirective {
|
|
392
|
-
templateRef;
|
|
393
|
-
collectionView;
|
|
394
|
-
constructor(templateRef, collectionView) {
|
|
395
|
-
this.templateRef = templateRef;
|
|
396
|
-
this.collectionView = collectionView;
|
|
397
|
-
}
|
|
398
|
-
set cvTemplateKey(value) {
|
|
399
|
-
if (Trace.isEnabled()) {
|
|
400
|
-
CLog(CLogTypes.info, 'cvTemplateKey: ' + value);
|
|
401
|
-
}
|
|
402
|
-
if (this.collectionView && this.templateRef) {
|
|
403
|
-
this.collectionView.registerTemplate(value.toLowerCase(), this.templateRef);
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
static ɵfac = function TemplateKeyDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TemplateKeyDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef), i0.ɵɵdirectiveInject(CollectionViewComponent, 1)); };
|
|
407
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: TemplateKeyDirective, selectors: [["", "cvTemplateKey", ""]], inputs: { cvTemplateKey: "cvTemplateKey" } });
|
|
408
|
-
}
|
|
409
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateKeyDirective, [{
|
|
410
|
-
type: Directive,
|
|
411
|
-
args: [{ selector: '[cvTemplateKey]' }]
|
|
412
|
-
}], () => [{ type: i0.TemplateRef }, { type: CollectionViewComponent, decorators: [{
|
|
413
|
-
type: Host
|
|
414
|
-
}] }], { cvTemplateKey: [{
|
|
415
|
-
type: Input
|
|
416
|
-
}] }); })();
|
|
417
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnZpZXctY29tcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xsZWN0aW9udmlldy9hbmd1bGFyL2NvbGxlY3Rpb252aWV3LWNvbXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFNBQVMsRUFFVCxVQUFVLEVBRVYsWUFBWSxFQUNaLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxlQUFlLEVBQ2YsTUFBTSxFQUVOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQStCLGlCQUFpQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDNUksT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSwwQkFBMEIsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNySixPQUFPLEVBQWlCLFVBQVUsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFRLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFFN0YsZUFBZSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXhELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQztBQUU3QixNQUFNLE9BQU8sV0FBVztJQUNEO0lBQXdCO0lBQW1CO0lBQXVCO0lBQXVCO0lBQTVHLFlBQW1CLFNBQWUsRUFBUyxJQUFVLEVBQVMsS0FBYyxFQUFTLElBQWMsRUFBUyxHQUFhO1FBQXRHLGNBQVMsR0FBVCxTQUFTLENBQU07UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUFTLFNBQUksR0FBSixJQUFJLENBQVU7UUFBUyxRQUFHLEdBQUgs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V0FBNkIsRUFBa0IsY0FBdUM7UUFBdEYsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQWtCLG1CQUFjLEdBQWQsY0FBYyxDQUF5QjtJQUFHLENBQUM7SUFFOUcsSUFDSSxhQUFhLENBQUMsS0FBVTtRQUN4QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0wsQ0FBQzs4R0FYUSxvQkFBb0I7NkRBQXBCLG9CQUFvQjs7aUZBQXBCLG9CQUFvQjtjQURoQyxTQUFTO2VBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7O3NCQUVjLElBQUk7cUJBR3BELGFBQWE7a0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRGlyZWN0aXZlLFxuICAgIERvQ2hlY2ssXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3QsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDTG9nLCBDTG9nVHlwZXMsIENvbGxlY3Rpb25WaWV3LCBDb2xsZWN0aW9uVmlld0l0ZW1FdmVudERhdGEsIExpc3RWaWV3Vmlld1R5cGVzIH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC1jb21tdW5pdHkvdWktY29sbGVjdGlvbnZpZXcnO1xuaW1wb3J0IHsgRGV0YWNoZWRMb2FkZXIsIE5hdGl2ZVNjcmlwdFJlbmRlcmVyRmFjdG9yeSwgZXh0cmFjdFNpbmdsZVZpZXdSZWN1cnNpdmUsIGlzTGlzdExpa2VJdGVyYWJsZSwgcmVnaXN0ZXJFbGVtZW50IH0gZnJvbSAnQG5hdGl2ZXNjcmlwdC9hbmd1bGFyJztcbmltcG9ydCB7IEtleWVkVGVtcGxhdGUsIExheW91dEJhc2UsIE9ic2VydmFibGVBcnJheSwgVHJhY2UsIFZpZXcgfSBmcm9tICdAbmF0aXZlc2NyaXB0L2NvcmUnO1xuXG5yZWdpc3RlckVsZW1lbnQoJ0NvbGxlY3Rpb25WaWV3JywgKCkgPT4gQ29sbGVjdGlvblZpZXcpO1xuXG5jb25zdCBOR19WSUVXID0gJ19uZ1ZpZXdSZWYnO1xuXG5leHBvcnQgY2xhc3MgSXRlbUNvbnRleHQge1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyAkaW1wbGljaXQ/OiBhbnksIHB1YmxpYyBpdGVtPzogYW55LCBwdWJsaWMgaW5kZXg/OiBudW1iZXIsIHB1YmxpYyBldmVuPzogYm9vbGVhbiwgcHVibGljIG9kZD86IGJvb2xlYW4pIHt9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2V0dXBJdGVtVmlld0FyZ3Mge1xuICAgIHZpZXc6IEVtYmVkZGVkVmlld1JlZjxhbnk+O1xuICAgIGRhdGE6IGFueTtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIGNvbnRleHQ6IEl0ZW1Db250ZXh0O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ0NvbGxlY3Rpb25WaWV3JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8RGV0YWNoZWRDb250YWluZXI+XG4gICAgICAgICAgICA8UGxhY2Vob2xkZXIgI2xvYWRlcj48L1BsYWNlaG9sZGVyPlxuICAgICAgICA8L0RldGFjaGVkQ29udGFpbmVyPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ29sbGVjdGlvblZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sbGVjdGlvblZpZXc7XG4gICAgfVxuICAgIHB1YmxpYyBnZXQgbGlzdFZpZXcoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbGxlY3Rpb25WaWV3O1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2xvYWRlcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBsb2FkZXI6IFZpZXdDb250YWluZXJSZWY7XG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZXR1cEl0ZW1WaWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZXR1cEl0ZW1WaWV3QXJncz4oKTtcbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSkgcHVibGljIGl0ZW1UZW1wbGF0ZVF1ZXJ5OiBUZW1wbGF0ZVJlZjxJdGVtQ29udGV4dD47XG5cbiAgICBASW5wdXQoKSBhdXRvUmV1c2VWaWV3cyA9IGZhbHNlO1xuXG4gICAgZGV0YWNoZWRMb2FkZXJGYWN0b3J5KCkge1xuICAgICAgICBjb25zdCByZWYgPSB0aGlzLmxvYWRlci5jcmVhdGVDb21wb25lbnQoRGV0YWNoZWRMb2FkZXIsIHtcbiAgICAgICAgICAgIGluZGV4OiAwXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmxvYWRlci5kZXRhY2goMCk7XG4gICAgICAgIHRoaXMuX2xvYWRlcnMucHVzaChyZWYpO1xuICAgICAgICByZXR1cm4gcmVmO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpdGVtVGVtcGxhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtVGVtcGxhdGU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXRlbVRlbXBsYXRlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgdGhpcy5faXRlbVRlbXBsYXRlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25WaWV3LnJlZnJlc2goKTtcbiAgICB9XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgaXRlbXModmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xuICAgICAgICBsZXQgbmVlZERpZmZlciA9IHRydWU7XG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9ic2VydmFibGVBcnJheSkge1xuICAgICAgICAgICAgbmVlZERpZmZlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZWVkRGlmZmVyICYmICF0aGlzLl9kaWZmZXIgJiYgaXNMaXN0TGlrZUl0ZXJhYmxlKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5fZGlmZmVyID0gdGhpcy5faXRlcmFibGVEaWZmZXJzLmZpbmQodGhpcy5faXRlbXMpLmNyZWF0ZSgoX2luZGV4LCBpdGVtKSA9PiBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25WaWV3Lml0ZW1zID0gdGhpcy5faXRlbXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfY29sbGVjdGlvblZpZXc6IENvbGxlY3Rpb25WaWV3O1xuICAgIHByaXZhdGUgX2l0ZW1zOiBhbnk7XG4gICAgcHJpdmF0ZSBfZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxLZXllZFRlbXBsYXRlPjtcbiAgICBwcml2YXRlIF9pdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPEl0ZW1Db250ZXh0PjtcbiAgICBwcml2YXRlIF90ZW1wbGF0ZU1hcDogTWFwPHN0cmluZywgS2V5ZWRUZW1wbGF0ZT47XG4gICAgcHJpdmF0ZSBfbG9hZGVyczogQ29tcG9uZW50UmVmPERldGFjaGVkTG9hZGVyPltdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChJdGVyYWJsZURpZmZlcnMpIHByaXZhdGUgX2l0ZXJhYmxlRGlmZmVyczogSXRlcmFibGVEaWZmZXJzLFxuICAgICAgICBASW5qZWN0KE5hdGl2ZVNjcmlwdFJlbmRlcmVyRmFjdG9yeSkgcHJpdmF0ZSBfcmVuZGVyZXI6IE5hdGl2ZVNjcmlwdFJlbmRlcmVyRmFjdG9yeSxcbiAgICAgICAgQEluamVjdChOZ1pvbmUpIHByaXZhdGUgX25nWm9uZTogTmdab25lXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25WaWV3ID0gX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5vbihDb2xsZWN0aW9uVmlldy5pdGVtTG9hZGluZ0V2ZW50LCB0aGlzLm9uSXRlbUxvYWRpbmcsIHRoaXMpO1xuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtVmlld0xvYWRlciA9IHRoaXMuaXRlbVZpZXdMb2FkZXI7XG4gICAgICAgIHRoaXMuX2xvYWRlcnMgPSBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGl0ZW1WaWV3TG9hZGVyID0gKHZpZXdUeXBlKSA9PlxuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAodmlld1R5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExpc3RWaWV3Vmlld1R5cGVzLkl0ZW1WaWV3OlxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5faXRlbVRlbXBsYXRlICYmIHRoaXMubG9hZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlZFZpZXcgPSB0aGlzLmdldE9yQ3JlYXRlKHRoaXMuX2l0ZW1UZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZWRWaWV3O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuXG4gICAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgaWYgKFRyYWNlLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBDTG9nKENMb2dUeXBlcy5pbmZvLCAnQ29sbGVjdGlvblZpZXcubmdBZnRlckNvbnRlbnRJbml0KCknKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEl0ZW1UZW1wbGF0ZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb25WaWV3Lm9mZihDb2xsZWN0aW9uVmlldy5pdGVtTG9hZGluZ0V2ZW50LCB0aGlzLm9uSXRlbUxvYWRpbmcsIHRoaXMpO1xuICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldyA9IG51bGw7XG4gICAgICAgIHRoaXMuX2xvYWRlcnMuZm9yRWFjaCgobCkgPT4gbC5kZXN0cm95KCkpO1xuICAgICAgICB0aGlzLl9sb2FkZXJzID0gbnVsbDtcbiAgICAgICAgdGhpcy52aWV3VG9Mb2FkZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnZpZXdUb1RlbXBsYXRlID0gbnVsbDtcbiAgICAgICAgdGhpcy52aWV3UG9vbCA9IG51bGw7XG5cbiAgICAgICAgdGhpcy5faXRlbXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9kaWZmZXIgPSBudWxsO1xuICAgICAgICB0aGlzLl9pdGVtVGVtcGxhdGUgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGVNYXApIHtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlTWFwLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fdGVtcGxhdGVNYXAgPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgJ25nRG9DaGVjaygpIC0gZXhlY3V0ZSBkaWZmZXI/ICcgKyB0aGlzLl9kaWZmZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kaWZmZXIpIHtcbiAgICAgICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sICduZ0RvQ2hlY2soKSAtIGV4ZWN1dGUgZGlmZmVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VzID0gdGhpcy5fZGlmZmVyLmRpZmYodGhpcy5faXRlbXMpO1xuICAgICAgICAgICAgaWYgKGNoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgJ25nRG9DaGVjaygpIC0gcmVmcmVzaCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3RlclRlbXBsYXRlKGtleTogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8SXRlbUNvbnRleHQ+KSB7XG4gICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgJ3JlZ2lzdGVyVGVtcGxhdGUgZm9yIGtleTogJyArIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl90ZW1wbGF0ZU1hcCkge1xuICAgICAgICAgICAgdGhpcy5fdGVtcGxhdGVNYXAgPSBuZXcgTWFwPHN0cmluZywgS2V5ZWRUZW1wbGF0ZT4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleWVkVGVtcGxhdGUgPSB7XG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBjcmVhdGVWaWV3OiB0aGlzLmdldEl0ZW1UZW1wbGF0ZVZpZXdGYWN0b3J5KHRlbXBsYXRlKVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX3RlbXBsYXRlTWFwLnNldChrZXksIGtleWVkVGVtcGxhdGUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2l0ZW1Mb2FkaW5nJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25JdGVtTG9hZGluZyhhcmdzOiBDb2xsZWN0aW9uVmlld0l0ZW1FdmVudERhdGEpIHtcbiAgICAgICAgaWYgKCFhcmdzLnZpZXcgJiYgIXRoaXMuaXRlbVRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLml0ZW1zKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGluZGV4ID0gYXJncy5pbmRleDtcbiAgICAgICAgY29uc3QgaXRlbXMgPSAoYXJncy5vYmplY3QgYXMgYW55KS5pdGVtcztcbiAgICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSB0eXBlb2YgaXRlbXMuZ2V0SXRlbSA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW1zLmdldEl0ZW0oaW5kZXgpIDogaXRlbXNbaW5kZXhdO1xuICAgICAgICBsZXQgdmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPEl0ZW1Db250ZXh0PjtcblxuICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sIGBvbkl0ZW1Mb2FkaW5nOiAke2luZGV4fSAtIFJldXNpbmcgZXhpc3Rpbmcgdmlld2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmlld1JlZiA9IGFyZ3Mudmlld1tOR19WSUVXXTtcbiAgICAgICAgLy8gR2V0dGluZyBhbmd1bGFyIHZpZXcgZnJvbSBvcmlnaW5hbCBlbGVtZW50IChpbiBjYXNlcyB3aGVuIFByb3h5Vmlld0NvbnRhaW5lclxuICAgICAgICAvLyBpcyB1c2VkIE5hdGl2ZVNjcmlwdCBpbnRlcm5hbGx5IHdyYXBzIGl0IGluIGEgU3RhY2tMYXlvdXQpXG4gICAgICAgIGlmICghdmlld1JlZiAmJiBhcmdzLnZpZXcgaW5zdGFuY2VvZiBMYXlvdXRCYXNlICYmIGFyZ3Mudmlldy5nZXRDaGlsZHJlbkNvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICB2aWV3UmVmID0gYXJncy52aWV3LmdldENoaWxkQXQoMClbTkdfVklFV107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZpZXdSZWYgJiYgVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIGlmIChUcmFjZS5pc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sIGBWaWV3UmVmZXJlbmNlIG5vdCBmb3VuZCBmb3IgaXRlbSAke2luZGV4fS4gVmlldyByZWN5Y2xpbmcgaXMgbm90IHdvcmtpbmdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmlld1JlZikge1xuICAgICAgICAgICAgaWYgKFRyYWNlLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgQ0xvZyhDTG9nVHlwZXMuaW5mbywgYG9uSXRlbUxvYWRpbmc6ICR7aW5kZXh9IC0gQ3JlYXRpbmcgdmlldyBmcm9tIHRlbXBsYXRlYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZpZXdSZWYgPSB0aGlzLmxvYWRlci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5pdGVtVGVtcGxhdGUsIG5ldyBJdGVtQ29udGV4dCgpLCAwKTtcbiAgICAgICAgICAgIGFyZ3MudmlldyA9IGdldEl0ZW1WaWV3Um9vdCh2aWV3UmVmKTtcbiAgICAgICAgICAgIGFyZ3Mudmlld1tOR19WSUVXXSA9IHZpZXdSZWY7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldHVwVmlld1JlZih2aWV3UmVmLCBjdXJyZW50SXRlbSwgaW5kZXgpO1xuXG4gICAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlc09uQ2hpbGQodmlld1JlZiwgaW5kZXgpO1xuICAgIH1cbiAgICBASG9zdExpc3RlbmVyKCdpdGVtUmVjeWNsaW5nJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25JdGVtUmVjeWNsaW5nSW50ZXJuYWwoYXJnczogYW55KSB7XG4gICAgICAgIGlmICghYXJncy52aWV3KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5nVmlldzogRW1iZWRkZWRWaWV3UmVmPGFueT4gPSBhcmdzLnZpZXdbTkdfVklFV107XG5cbiAgICAgICAgLy8gR2V0dGluZyBhbmd1bGFyIHZpZXcgZnJvbSBvcmlnaW5hbCBlbGVtZW50IChpbiBjYXNlcyB3aGVuIFByb3h5Vmlld0NvbnRhaW5lclxuICAgICAgICAvLyBpcyB1c2VkIE5hdGl2ZVNjcmlwdCBpbnRlcm5hbGx5IHdyYXBzIGl0IGluIGEgU3RhY2tMYXlvdXQpXG4gICAgICAgIGlmICghbmdWaWV3ICYmIGFyZ3MudmlldyBpbnN0YW5jZW9mIExheW91dEJhc2UgJiYgYXJncy52aWV3LmdldENoaWxkcmVuQ291bnQoKSA+IDApIHtcbiAgICAgICAgICAgIG5nVmlldyA9IGFyZ3Mudmlldy5nZXRDaGlsZEF0KDApW05HX1ZJRVddO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdyZWN5Y2xpbmcnLCBhcmdzLnZpZXcpO1xuXG4gICAgICAgIGlmIChuZ1ZpZXcpIHtcbiAgICAgICAgICAgIG5nVmlldy5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2l0ZW1EaXNwb3NpbmcnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkl0ZW1EaXNwb3NpbmdJbnRlcm5hbChhcmdzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFhcmdzLnZpZXcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmdWaWV3OiBFbWJlZGRlZFZpZXdSZWY8YW55PiA9IGFyZ3Mudmlld1tOR19WSUVXXTtcblxuICAgICAgICAvLyBHZXR0aW5nIGFuZ3VsYXIgdmlldyBmcm9tIG9yaWdpbmFsIGVsZW1lbnQgKGluIGNhc2VzIHdoZW4gUHJveHlWaWV3Q29udGFpbmVyXG4gICAgICAgIC8vIGlzIHVzZWQgTmF0aXZlU2NyaXB0IGludGVybmFsbHkgd3JhcHMgaXQgaW4gYSBTdGFja0xheW91dClcbiAgICAgICAgaWYgKCFuZ1ZpZXcgJiYgYXJncy52aWV3IGluc3RhbmNlb2YgTGF5b3V0QmFzZSAmJiBhcmdzLnZpZXcuZ2V0Q2hpbGRyZW5Db3VudCgpID4gMCkge1xuICAgICAgICAgICAgbmdWaWV3ID0gYXJncy52aWV3LmdldENoaWxkQXQoMClbTkdfVklFV107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmdWaWV3KSB7XG4gICAgICAgICAgICBuZ1ZpZXcuZGV0YWNoKCk7XG4gICAgICAgICAgICB0aGlzLnN0b3JlVmlld1JlZihuZ1ZpZXcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldHVwVmlld1JlZih2aWV3OiBFbWJlZGRlZFZpZXdSZWY8SXRlbUNvbnRleHQ+LCBkYXRhOiBhbnksIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHZpZXcuY29udGV4dDtcbiAgICAgICAgY29udGV4dC4kaW1wbGljaXQgPSBkYXRhO1xuICAgICAgICBjb250ZXh0Lml0ZW0gPSBkYXRhO1xuICAgICAgICBjb250ZXh0LmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGNvbnRleHQuZXZlbiA9IGluZGV4ICUgMiA9PT0gMDtcbiAgICAgICAgY29udGV4dC5vZGQgPSAhY29udGV4dC5ldmVuO1xuXG4gICAgICAgIHRoaXMuc2V0dXBJdGVtVmlldy5uZXh0KHtcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaW5kZXgsXG4gICAgICAgICAgICB2aWV3XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRJdGVtVGVtcGxhdGVWaWV3RmFjdG9yeSh0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8SXRlbUNvbnRleHQ+KTogKCkgPT4gVmlldyB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2aWV3UmVmID0gdGhpcy5sb2FkZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRlbXBsYXRlLCBuZXcgSXRlbUNvbnRleHQoKSwgMCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRWaWV3ID0gZ2V0SXRlbVZpZXdSb290KHZpZXdSZWYpO1xuICAgICAgICAgICAgcmVzdWx0Vmlld1tOR19WSUVXXSA9IHZpZXdSZWY7XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHRWaWV3O1xuICAgICAgICB9O1xuICAgIH1cbiAgICB2aWV3UG9vbCA9IG5ldyBNYXA8XG4gICAgICAgIFRlbXBsYXRlUmVmPEl0ZW1Db250ZXh0PixcbiAgICAgICAge1xuICAgICAgICAgICAgc2NyYXBTaXplOiBudW1iZXI7XG4gICAgICAgICAgICBzY3JhcEhlYWQ6IFNldDxFbWJlZGRlZFZpZXdSZWY8SXRlbUNvbnRleHQ+PjtcbiAgICAgICAgfVxuICAgID4oKTtcbiAgICBwcml2YXRlIHN0b3JlVmlld1JlZih2aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8YW55Pikge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZVJlZiA9IHRoaXMudmlld1RvVGVtcGxhdGUuZ2V0KHZpZXdSZWYpO1xuICAgICAgICBpZiAodGVtcGxhdGVSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcmFwID0gdGhpcy52aWV3UG9vbC5nZXQodGVtcGxhdGVSZWYpO1xuICAgICAgICAgICAgaWYgKHNjcmFwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNjcmFwLnNjcmFwSGVhZC5zaXplID49IHNjcmFwLnNjcmFwU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB2aWV3UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3VG9Mb2FkZXIuZ2V0KHZpZXdSZWYpPy5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2NyYXAuc2NyYXBIZWFkLmFkZCh2aWV3UmVmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmlld1RvVGVtcGxhdGUgPSBuZXcgV2Vha01hcDxFbWJlZGRlZFZpZXdSZWY8YW55PiwgVGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgICB2aWV3VG9Mb2FkZXIgPSBuZXcgV2Vha01hcDxFbWJlZGRlZFZpZXdSZWY8YW55PiwgQ29tcG9uZW50UmVmPERldGFjaGVkTG9hZGVyPj4oKTtcblxuICAgIHByaXZhdGUgZ2V0T3JDcmVhdGUodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPEl0ZW1Db250ZXh0Pikge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmlld1JlZiA9IHRoaXMuZ2V0Vmlldyh0ZW1wbGF0ZVJlZik7XG4gICAgICAgICAgICBpZiAoIXZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmRldGFjaGVkTG9hZGVyRmFjdG9yeSgpO1xuICAgICAgICAgICAgICAgIC8vIHZpZXdSZWYgPSB0aGlzLmxvYWRlci5jcmVhdGVFbWJlZGRlZFZpZXcodGVtcGxhdGVSZWYsIG5ldyBJdGVtQ29udGV4dCgpLCAwKTtcbiAgICAgICAgICAgICAgICB2aWV3UmVmID0gbG9hZGVyLmluc3RhbmNlLnZjLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZiwgbmV3IEl0ZW1Db250ZXh0KCksIDApO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld1RvTG9hZGVyLnNldCh2aWV3UmVmLCBsb2FkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudmlld1RvVGVtcGxhdGUuc2V0KHZpZXdSZWYsIHRlbXBsYXRlUmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZpZXdSZWYuZGV0YWNoKCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRWaWV3ID0gZ2V0SXRlbVZpZXdSb290KHZpZXdSZWYpO1xuICAgICAgICAgICAgcmVzdWx0Vmlld1tOR19WSUVXXSA9IHZpZXdSZWY7XG4gICAgICAgICAgICByZXN1bHRWaWV3LnJldXNhYmxlID0gdGhpcy5hdXRvUmV1c2VWaWV3cztcbiAgICAgICAgICAgIHJldHVybiByZXN1bHRWaWV3O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRWaWV3KHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxJdGVtQ29udGV4dD4pIHtcbiAgICAgICAgY29uc3QgcG9vbCA9IHRoaXMuZ2V0Vmlld1Bvb2wodGVtcGxhdGVSZWYpO1xuICAgICAgICB3aGlsZSAocG9vbC5zY3JhcEhlYWQuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxJdGVtQ29udGV4dD4gPSBwb29sLnNjcmFwSGVhZC52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgICAgICBwb29sLnNjcmFwSGVhZC5kZWxldGUodmlld1JlZik7XG4gICAgICAgICAgICBpZiAoIXZpZXdSZWYuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZpZXdSZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRWaWV3UG9vbCh0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8SXRlbUNvbnRleHQ+KSB7XG4gICAgICAgIGlmICghdGhpcy52aWV3UG9vbC5oYXModGVtcGxhdGVSZWYpKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdQb29sLnNldCh0ZW1wbGF0ZVJlZiwge1xuICAgICAgICAgICAgICAgIHNjcmFwU2l6ZTogdGhpcy5hdXRvUmV1c2VWaWV3cyA/IEluZmluaXR5IDogMCxcbiAgICAgICAgICAgICAgICBzY3JhcEhlYWQ6IG5ldyBTZXQ8RW1iZWRkZWRWaWV3UmVmPEl0ZW1Db250ZXh0Pj4oKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudmlld1Bvb2wuZ2V0KHRlbXBsYXRlUmVmKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEl0ZW1UZW1wbGF0ZXMoKSB7XG4gICAgICAgIC8vIFRoZSBpdGVtVGVtcGxhdGVRdWVyeSBtYXkgYmUgY2hhbmdlZCBhZnRlciBsaXN0IGl0ZW1zIGFyZSBhZGRlZCB0aGF0IGNvbnRhaW4gPHRlbXBsYXRlPiBpbnNpZGUsXG4gICAgICAgIC8vIHNvIGNhY2hlIGFuZCB1c2Ugb25seSB0aGUgb3JpZ2luYWwgdGVtcGxhdGUgdG8gYXZvaWQgZXJyb3JzLlxuICAgICAgICB0aGlzLml0ZW1UZW1wbGF0ZSA9IHRoaXMuaXRlbVRlbXBsYXRlUXVlcnk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlTWFwKSB7XG4gICAgICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgICAgICBDTG9nKENMb2dUeXBlcy5pbmZvLCAnU2V0dGluZyB0ZW1wbGF0ZXMnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVzOiBLZXllZFRlbXBsYXRlW10gPSBbXTtcbiAgICAgICAgICAgIHRoaXMuX3RlbXBsYXRlTWFwLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGVtcGxhdGVzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtVGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gSWYgdGhlIG1hcCB3YXMgbm90IGluaXRpYWxpemVkIHRoaXMgbWVhbnMgdGhhdCB0aGVyZSBhcmUgbm8gbmFtZWQgdGVtcGxhdGVzLCBzbyB3ZSByZWdpc3RlciB0aGUgZGVmYXVsdCBvbmUuXG4gICAgICAgICAgICB0aGlzLl9jb2xsZWN0aW9uVmlldy5pdGVtVGVtcGxhdGUgPSB0aGlzLmdldEl0ZW1UZW1wbGF0ZVZpZXdGYWN0b3J5KHRoaXMuaXRlbVRlbXBsYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZGV0ZWN0Q2hhbmdlc09uQ2hpbGQodmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPEl0ZW1Db250ZXh0PiwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoVHJhY2UuaXNFbmFibGVkKCkpIHtcbiAgICAgICAgICAgIENMb2coQ0xvZ1R5cGVzLmluZm8sICdNYW51YWxseSBkZXRlY3QgY2hhbmdlcyBpbiBjaGlsZDogJyArIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICB2aWV3UmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB2aWV3UmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2goKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb2xsZWN0aW9uVmlldykge1xuICAgICAgICAgICAgdGhpcy5fY29sbGVjdGlvblZpZXcucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFZpZXcge1xuICAgIHJvb3ROb2RlczogYW55W107XG4gICAgZGVzdHJveSgpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBSb290TG9jYXRvciA9IChub2RlczogYW55W10sIG5lc3RMZXZlbDogbnVtYmVyKSA9PiBWaWV3O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SXRlbVZpZXdSb290KHZpZXdSZWY6IENvbXBvbmVudFZpZXcsIHJvb3RMb2NhdG9yOiBSb290TG9jYXRvciA9IGV4dHJhY3RTaW5nbGVWaWV3UmVjdXJzaXZlKTogVmlldyB7XG4gICAgY29uc3Qgcm9vdFZpZXcgPSByb290TG9jYXRvcih2aWV3UmVmLnJvb3ROb2RlcywgMCk7XG4gICAgcmV0dXJuIHJvb3RWaWV3O1xufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbY3ZUZW1wbGF0ZUtleV0nIH0pXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVLZXlEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIEBIb3N0KCkgcHJpdmF0ZSBjb2xsZWN0aW9uVmlldzogQ29sbGVjdGlvblZpZXdDb21wb25lbnQpIHt9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBjdlRlbXBsYXRlS2V5KHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKFRyYWNlLmlzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICBDTG9nKENMb2dUeXBlcy5pbmZvLCAnY3ZUZW1wbGF0ZUtleTogJyArIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb2xsZWN0aW9uVmlldyAmJiB0aGlzLnRlbXBsYXRlUmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb25WaWV3LnJlZ2lzdGVyVGVtcGxhdGUodmFsdWUudG9Mb3dlckNhc2UoKSwgdGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// External
|
|
2
|
-
import { NO_ERRORS_SCHEMA, NgModule } from '@angular/core';
|
|
3
|
-
import { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export { CollectionViewComponent, TemplateKeyDirective } from './collectionview-comp';
|
|
6
|
-
export class CollectionViewModule {
|
|
7
|
-
static ɵfac = function CollectionViewModule_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionViewModule)(); };
|
|
8
|
-
static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: CollectionViewModule });
|
|
9
|
-
static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({});
|
|
10
|
-
}
|
|
11
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionViewModule, [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
declarations: [CollectionViewComponent, TemplateKeyDirective],
|
|
15
|
-
exports: [CollectionViewComponent, TemplateKeyDirective],
|
|
16
|
-
schemas: [NO_ERRORS_SCHEMA]
|
|
17
|
-
}]
|
|
18
|
-
}], null, null); })();
|
|
19
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CollectionViewModule, { declarations: [CollectionViewComponent, TemplateKeyDirective], exports: [CollectionViewComponent, TemplateKeyDirective] }); })();
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29sbGVjdGlvbnZpZXcvYW5ndWxhci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXO0FBQ1gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFDdEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFPdEYsTUFBTSxPQUFPLG9CQUFvQjs4R0FBcEIsb0JBQW9COzREQUFwQixvQkFBb0I7OztpRkFBcEIsb0JBQW9CO2NBTGhDLFFBQVE7ZUFBQztnQkFDTixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxvQkFBb0IsQ0FBQztnQkFDN0QsT0FBTyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsb0JBQW9CLENBQUM7Z0JBQ3hELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO2FBQzlCOzt3RkFDWSxvQkFBb0IsbUJBSmQsdUJBQXVCLEVBQUUsb0JBQW9CLGFBQ2xELHVCQUF1QixFQUFFLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEV4dGVybmFsXG5pbXBvcnQgeyBOT19FUlJPUlNfU0NIRU1BLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb2xsZWN0aW9uVmlld0NvbXBvbmVudCwgVGVtcGxhdGVLZXlEaXJlY3RpdmUgfSBmcm9tICcuL2NvbGxlY3Rpb252aWV3LWNvbXAnO1xuZXhwb3J0IHsgQ29sbGVjdGlvblZpZXdDb21wb25lbnQsIFRlbXBsYXRlS2V5RGlyZWN0aXZlIH0gZnJvbSAnLi9jb2xsZWN0aW9udmlldy1jb21wJztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtDb2xsZWN0aW9uVmlld0NvbXBvbmVudCwgVGVtcGxhdGVLZXlEaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtDb2xsZWN0aW9uVmlld0NvbXBvbmVudCwgVGVtcGxhdGVLZXlEaXJlY3RpdmVdLFxuICAgIHNjaGVtYXM6IFtOT19FUlJPUlNfU0NIRU1BXVxufSlcbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uVmlld01vZHVsZSB7fVxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1jb2xsZWN0aW9udmlldy1hbmd1bGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbGxlY3Rpb252aWV3L2FuZ3VsYXIvbmF0aXZlc2NyaXB0LWNvbW11bml0eS11aS1jb2xsZWN0aW9udmlldy1hbmd1bGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/index.android.d.ts
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { ChangedData, CoreTypes, View, ViewBase } from '@nativescript/core';
|
|
2
|
-
import { CollectionViewBase } from './index-common';
|
|
3
|
-
import { TypedArray } from '@nativescript-community/arraybuffers';
|
|
4
|
-
export * from './index-common';
|
|
5
|
-
declare module '@nativescript/core/ui/core/view' {
|
|
6
|
-
interface ViewCommon {
|
|
7
|
-
layoutChangeListenerIsSet: boolean;
|
|
8
|
-
layoutChangeListener: android.view.View.OnLayoutChangeListener;
|
|
9
|
-
_raiseLayoutChangedEvent(): any;
|
|
10
|
-
handleGestureTouch(event: android.view.MotionEvent): any;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
export declare enum SnapPosition {
|
|
14
|
-
START = 0,
|
|
15
|
-
END = 1
|
|
16
|
-
}
|
|
17
|
-
export declare class CollectionView extends CollectionViewBase {
|
|
18
|
-
static layoutCompletedEvent: string;
|
|
19
|
-
static DEFAULT_TEMPLATE_VIEW_TYPE: number;
|
|
20
|
-
static CUSTOM_TEMPLATE_ITEM_TYPE: number;
|
|
21
|
-
nativeViewProtected: CollectionViewRecyclerView & {
|
|
22
|
-
scrollListener: com.nativescript.collectionview.OnScrollListener;
|
|
23
|
-
layoutManager: androidx.recyclerview.widget.RecyclerView.LayoutManager;
|
|
24
|
-
owner?: WeakRef<CollectionView>;
|
|
25
|
-
};
|
|
26
|
-
private recyclerListener;
|
|
27
|
-
private templateTypeNumberString;
|
|
28
|
-
private templateStringTypeNumber;
|
|
29
|
-
private _currentNativeItemType;
|
|
30
|
-
private currentSpanCount;
|
|
31
|
-
private _viewHolders;
|
|
32
|
-
private _scrollOrLoadMoreChangeCount;
|
|
33
|
-
private _nScrollListener;
|
|
34
|
-
scrolling: boolean;
|
|
35
|
-
needsScrollStartEvent: boolean;
|
|
36
|
-
private _hlayoutParams;
|
|
37
|
-
private _vlayoutParams;
|
|
38
|
-
private _lastLayoutKey;
|
|
39
|
-
private _listViewAdapter;
|
|
40
|
-
private _simpleItemTouchCallback;
|
|
41
|
-
private _itemTouchHelper;
|
|
42
|
-
animateItemUpdate: boolean;
|
|
43
|
-
nestedScrollingEnabled: boolean;
|
|
44
|
-
itemViewCacheSize: number;
|
|
45
|
-
extraLayoutSpace: number;
|
|
46
|
-
recycledViewPool: com.nativescript.collectionview.RecycledViewPool;
|
|
47
|
-
recycledViewPoolDisposeListener: com.nativescript.collectionview.RecycledViewPool.ViewPoolListener;
|
|
48
|
-
mInPropertiesSet: boolean;
|
|
49
|
-
mShouldUpdateInnerSize: boolean;
|
|
50
|
-
mShouldUpdateSpanCount: boolean;
|
|
51
|
-
mShouldRefresh: boolean;
|
|
52
|
-
onResumeNativeUpdates(): void;
|
|
53
|
-
createNativeView(): com.nativescript.collectionview.RecyclerView;
|
|
54
|
-
initNativeView(): void;
|
|
55
|
-
disposeNativeView(): void;
|
|
56
|
-
onLoaded(): void;
|
|
57
|
-
getViewForItemAtIndex(index: number): View;
|
|
58
|
-
_getSpanSize: (item: any, index: any) => number;
|
|
59
|
-
set spanSize(inter: (item: any, index: any) => number);
|
|
60
|
-
get spanSize(): (item: any, index: any) => number;
|
|
61
|
-
decorator: com.nativescript.collectionview.OverlapDecoration;
|
|
62
|
-
decoratorBuffer: TypedArray;
|
|
63
|
-
decoratorListener: com.nativescript.collectionview.OverlapDecoration.OverlapDecorationListener;
|
|
64
|
-
nativeGetItemOverlap(position: number): TypedArray;
|
|
65
|
-
private attachScrollListenerIfNecessary;
|
|
66
|
-
private detachScrollListenerIfNecessary;
|
|
67
|
-
private computeScrollEventData;
|
|
68
|
-
onScrolled(view: androidx.recyclerview.widget.RecyclerView, dx: number, dy: number): void;
|
|
69
|
-
onScrollStateChanged(view: androidx.recyclerview.widget.RecyclerView, newState: number): void;
|
|
70
|
-
addEventListener(arg: string, callback: any, thisArg?: any): void;
|
|
71
|
-
removeEventListener(arg: string, callback: any, thisArg?: any): void;
|
|
72
|
-
get android(): androidx.recyclerview.widget.RecyclerView;
|
|
73
|
-
get layoutManager(): androidsupportv7widgetRecyclerView.LayoutManager;
|
|
74
|
-
_getViewLayoutParams(): androidviewViewGroup.LayoutParams;
|
|
75
|
-
defaultPoolSize: number;
|
|
76
|
-
desiredPoolSize: Map<string, number>;
|
|
77
|
-
private setNativePoolSize;
|
|
78
|
-
private setPoolSizes;
|
|
79
|
-
setPoolSize(key: string, size: number): void;
|
|
80
|
-
protected updateScrollBarVisibility(value: any): void;
|
|
81
|
-
private enumerateViewHolders;
|
|
82
|
-
private enumerateViewHoldersAsync;
|
|
83
|
-
startDragging(index: number): void;
|
|
84
|
-
isDragging: boolean;
|
|
85
|
-
startViewHolderDragging(index: any, viewHolder: CollectionViewCellHolder): void;
|
|
86
|
-
onReorderLongPress(motionEvent: android.view.MotionEvent): void;
|
|
87
|
-
_reorderItemInSource(oldPosition: number, newPosition: number): void;
|
|
88
|
-
_longPressGesture: androidx.core.view.GestureDetectorCompat;
|
|
89
|
-
_itemTouchListerner: androidx.recyclerview.widget.RecyclerView.OnItemTouchListener;
|
|
90
|
-
onItemViewLoaderChanged(): void;
|
|
91
|
-
onItemTemplateSelectorChanged(oldValue: any, newValue: any): void;
|
|
92
|
-
onItemTemplateChanged(oldValue: any, newValue: any): void;
|
|
93
|
-
onItemTemplatesChanged(oldValue: any, newValue: any): void;
|
|
94
|
-
updateSpanCount(requestLayout?: boolean): boolean;
|
|
95
|
-
updateInnerSize(): boolean;
|
|
96
|
-
_onColWidthPropertyChanged(oldValue: CoreTypes.PercentLengthType, newValue: CoreTypes.PercentLengthType): void;
|
|
97
|
-
_onRowHeightPropertyChanged(oldValue: CoreTypes.PercentLengthType, newValue: CoreTypes.PercentLengthType): void;
|
|
98
|
-
onLayout(left: number, top: number, right: number, bottom: number): void;
|
|
99
|
-
onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void;
|
|
100
|
-
onSourceCollectionChanged(event: ChangedData<any>): void;
|
|
101
|
-
eachChild(callback: (child: ViewBase) => boolean): void;
|
|
102
|
-
eachChildAsync(callback: any): Promise<void>;
|
|
103
|
-
refreshVisibleItems(): void;
|
|
104
|
-
isItemAtIndexVisible(index: number): boolean;
|
|
105
|
-
findFirstVisibleItemIndex(): number;
|
|
106
|
-
findLastVisibleItemIndex(): number;
|
|
107
|
-
_layedOut: boolean;
|
|
108
|
-
refresh(forceRefresh?: boolean, updateSpanCountRequestsLayout?: boolean): void;
|
|
109
|
-
get scrollOffset(): number;
|
|
110
|
-
get verticalOffsetX(): number;
|
|
111
|
-
get verticalOffsetY(): number;
|
|
112
|
-
scrollToIndex(index: number, animated?: boolean, snap?: SnapPosition): void;
|
|
113
|
-
scrollToOffset(offSetValue: any): void;
|
|
114
|
-
private _setPadding;
|
|
115
|
-
private createComposedAdapter;
|
|
116
|
-
getItemCount(): number;
|
|
117
|
-
getItem(i: number): any;
|
|
118
|
-
getItemId(i: number): any;
|
|
119
|
-
onItemIdGeneratorChanged(oldValue: any, newValue: any): void;
|
|
120
|
-
clearTemplateTypes(): void;
|
|
121
|
-
getItemViewType(position: number): number;
|
|
122
|
-
templateKeyToNativeItem(key: string): number;
|
|
123
|
-
disposeViewHolderViews(): void;
|
|
124
|
-
getKeyByValue(viewType: number): string;
|
|
125
|
-
onCreateViewHolder(parent: android.view.ViewGroup, viewType: number): CollectionViewCellHolder;
|
|
126
|
-
notifyForItemAtIndex(eventName: string, view: View, index: number, bindingContext?: any, native?: any): any;
|
|
127
|
-
bindedViewHolders: Set<number>;
|
|
128
|
-
onBindViewHolder(holder: CollectionViewCellHolder, position: number): void;
|
|
129
|
-
onViewRecycled(holder: any): void;
|
|
130
|
-
}
|
|
131
|
-
interface CollectionViewCellHolder extends com.nativescript.collectionview.CollectionViewCellHolder {
|
|
132
|
-
new (androidView: android.view.View): CollectionViewCellHolder;
|
|
133
|
-
view: View;
|
|
134
|
-
clickListener: android.view.View.OnClickListener;
|
|
135
|
-
}
|
|
136
|
-
declare let CollectionViewCellHolder: CollectionViewCellHolder;
|
|
137
|
-
export interface CollectionViewRecyclerView extends com.nativescript.collectionview.RecyclerView {
|
|
138
|
-
new (context: any): CollectionViewRecyclerView;
|
|
139
|
-
}
|