ng-virtual-list 16.0.13 → 16.0.15
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/README.md +2 -1
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +8 -2
- package/esm2022/lib/ng-virtual-list.component.mjs +86 -42
- package/esm2022/lib/utils/cacheMap.mjs +7 -3
- package/esm2022/lib/utils/trackBox.mjs +71 -21
- package/esm2022/lib/utils/tracker.mjs +20 -29
- package/fesm2022/ng-virtual-list.mjs +188 -142
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-virtual-list-item.component.d.ts +3 -1
- package/lib/ng-virtual-list.component.d.ts +11 -3
- package/lib/utils/cacheMap.d.ts +1 -1
- package/lib/utils/trackBox.d.ts +9 -4
- package/lib/utils/tracker.d.ts +2 -2
- package/package.json +1 -1
- package/esm2022/lib/utils/collection.mjs +0 -50
- package/lib/utils/collection.d.ts +0 -19
|
@@ -4,7 +4,7 @@ import { IRect } from '../types';
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
/**
|
|
6
6
|
* Virtual list item component
|
|
7
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
7
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/15.x/projects/ng-virtual-list/src/lib/components/ng-virtual-list-item.component.ts
|
|
8
8
|
* @author Evgenii Grebennikov
|
|
9
9
|
* @email djonnyx@gmail.com
|
|
10
10
|
*/
|
|
@@ -16,9 +16,11 @@ export declare class NgVirtualListItemComponent {
|
|
|
16
16
|
get id(): number;
|
|
17
17
|
data: IRenderVirtualListItem | undefined;
|
|
18
18
|
set item(v: IRenderVirtualListItem | undefined);
|
|
19
|
+
get item(): IRenderVirtualListItem | undefined;
|
|
19
20
|
get itemId(): import("../types").Id | undefined;
|
|
20
21
|
itemRenderer: TemplateRef<any> | undefined;
|
|
21
22
|
set renderer(v: TemplateRef<any> | undefined);
|
|
23
|
+
get element(): HTMLElement;
|
|
22
24
|
constructor(_cdr: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>);
|
|
23
25
|
getBounds(): IRect;
|
|
24
26
|
showIfNeed(): void;
|
|
@@ -110,6 +110,13 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
110
110
|
*/
|
|
111
111
|
set itemsOffset(v: number);
|
|
112
112
|
get itemsOffset(): number;
|
|
113
|
+
private _$trackBy;
|
|
114
|
+
readonly $trackBy: Observable<string>;
|
|
115
|
+
/**
|
|
116
|
+
* The name of the property by which tracking is performed
|
|
117
|
+
*/
|
|
118
|
+
set trackBy(v: string);
|
|
119
|
+
get trackBy(): string;
|
|
113
120
|
private _isVertical;
|
|
114
121
|
protected _displayComponents: Array<ComponentRef<NgVirtualListItemComponent>>;
|
|
115
122
|
protected _$bounds: BehaviorSubject<DOMRect | null>;
|
|
@@ -119,10 +126,9 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
119
126
|
get isScrolling(): boolean;
|
|
120
127
|
private _resizeObserver;
|
|
121
128
|
private _onResizeHandler;
|
|
129
|
+
private _scrolls;
|
|
122
130
|
private _onScrollHandler;
|
|
123
131
|
private scrollImmediately;
|
|
124
|
-
private _scrollImmediatelyHandler;
|
|
125
|
-
private clearScrollImmediately;
|
|
126
132
|
private _onScrollEndHandler;
|
|
127
133
|
private _$initialized;
|
|
128
134
|
readonly $initialized: Observable<boolean>;
|
|
@@ -137,6 +143,7 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
137
143
|
ngOnInit(): void;
|
|
138
144
|
private listenCacheChangesIfNeed;
|
|
139
145
|
private getIsVertical;
|
|
146
|
+
private _componentsResizeObserver;
|
|
140
147
|
private createDisplayComponentsIfNeed;
|
|
141
148
|
private resetRenderers;
|
|
142
149
|
/**
|
|
@@ -160,7 +167,8 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
160
167
|
private _onContainerScrollHandler;
|
|
161
168
|
private _onContainerScrollEndHandler;
|
|
162
169
|
ngAfterViewInit(): void;
|
|
170
|
+
private clearScrollImmediately;
|
|
163
171
|
ngOnDestroy(): void;
|
|
164
172
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgVirtualListComponent, never>;
|
|
165
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgVirtualListComponent, "ng-virtual-list", never, { "items": { "alias": "items"; "required": false; }; "snap": { "alias": "snap"; "required": false; }; "snapToItem": { "alias": "snapToItem"; "required": false; }; "enabledBufferOptimization": { "alias": "enabledBufferOptimization"; "required": false; }; "itemRenderer": { "alias": "itemRenderer"; "required": false; }; "stickyMap": { "alias": "stickyMap"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "dynamicSize": { "alias": "dynamicSize"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "itemsOffset": { "alias": "itemsOffset"; "required": false; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; }, never, never, false, never>;
|
|
173
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgVirtualListComponent, "ng-virtual-list", never, { "items": { "alias": "items"; "required": false; }; "snap": { "alias": "snap"; "required": false; }; "snapToItem": { "alias": "snapToItem"; "required": false; }; "enabledBufferOptimization": { "alias": "enabledBufferOptimization"; "required": false; }; "itemRenderer": { "alias": "itemRenderer"; "required": false; }; "stickyMap": { "alias": "stickyMap"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "dynamicSize": { "alias": "dynamicSize"; "required": false; }; "direction": { "alias": "direction"; "required": false; }; "itemsOffset": { "alias": "itemsOffset"; "required": false; }; "trackBy": { "alias": "trackBy"; "required": false; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; }, never, never, false, never>;
|
|
166
174
|
}
|
package/lib/utils/cacheMap.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ type CacheMapListeners = OnChangeEventListener;
|
|
|
12
12
|
/**
|
|
13
13
|
* Cache map.
|
|
14
14
|
* Emits a change event on each mutation.
|
|
15
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
15
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/15.x/projects/ng-virtual-list/src/lib/utils/cacheMap.ts
|
|
16
16
|
* @author Evgenii Grebennikov
|
|
17
17
|
* @email djonnyx@gmail.com
|
|
18
18
|
*/
|
package/lib/utils/trackBox.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ declare enum ItemDisplayMethods {
|
|
|
67
67
|
}
|
|
68
68
|
/**
|
|
69
69
|
* An object that performs tracking, calculations and caching.
|
|
70
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
70
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/15.x/projects/ng-virtual-list/src/lib/utils/trackBox.ts
|
|
71
71
|
* @author Evgenii Grebennikov
|
|
72
72
|
* @email djonnyx@gmail.com
|
|
73
73
|
*/
|
|
@@ -79,6 +79,10 @@ export declare class TrackBox extends CacheMap<Id, IRect & {
|
|
|
79
79
|
set items(v: IRenderVirtualListCollection | null | undefined);
|
|
80
80
|
protected _displayComponents: Array<ComponentRef<NgVirtualListItemComponent>> | null | undefined;
|
|
81
81
|
set displayComponents(v: Array<ComponentRef<NgVirtualListItemComponent>> | null | undefined);
|
|
82
|
+
/**
|
|
83
|
+
* Set the trackBy property
|
|
84
|
+
*/
|
|
85
|
+
set trackingPropertyName(v: string);
|
|
82
86
|
constructor(trackingPropertyName: string);
|
|
83
87
|
set(id: Id, bounds: IRect): Map<Id, IRect>;
|
|
84
88
|
private _fireChanges;
|
|
@@ -92,11 +96,11 @@ export declare class TrackBox extends CacheMap<Id, IRect & {
|
|
|
92
96
|
id: Id;
|
|
93
97
|
}, C extends Array<I>>(currentCollection: C | null | undefined, itemSize: number): void;
|
|
94
98
|
/**
|
|
95
|
-
*
|
|
99
|
+
* Update the cache of items from the list
|
|
96
100
|
*/
|
|
97
|
-
protected
|
|
101
|
+
protected updateCache<I extends {
|
|
98
102
|
id: Id;
|
|
99
|
-
}, C extends Array<I>>(
|
|
103
|
+
}, C extends Array<I>>(previousCollection: C | null | undefined, currentCollection: C | null | undefined, itemSize: number): void;
|
|
100
104
|
/**
|
|
101
105
|
* Finds the position of a collection element by the given Id
|
|
102
106
|
*/
|
|
@@ -137,6 +141,7 @@ export declare class TrackBox extends CacheMap<Id, IRect & {
|
|
|
137
141
|
get scrollDelta(): number;
|
|
138
142
|
clearDeltaDirection(): void;
|
|
139
143
|
clearDelta(clearDirectionDetector?: boolean): void;
|
|
144
|
+
changes(): void;
|
|
140
145
|
protected generateDisplayCollection<I extends {
|
|
141
146
|
id: Id;
|
|
142
147
|
}, C extends Array<I>>(items: C, stickyMap: IVirtualListStickyMap, metrics: IMetrics): IRenderVirtualListCollection;
|
package/lib/utils/tracker.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ComponentRef } from "@angular/core";
|
|
2
2
|
/**
|
|
3
3
|
* Tracks display items by property
|
|
4
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
4
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/15.x/projects/ng-virtual-list/src/lib/utils/tracker.ts
|
|
5
5
|
* @author Evgenii Grebennikov
|
|
6
6
|
* @email djonnyx@gmail.com
|
|
7
7
|
*/
|
|
@@ -27,12 +27,12 @@ export declare class Tracker<I = any, C = {
|
|
|
27
27
|
[id: number]: number;
|
|
28
28
|
} | null;
|
|
29
29
|
private _trackingPropertyName;
|
|
30
|
+
set trackingPropertyName(v: string);
|
|
30
31
|
constructor(trackingPropertyName: string);
|
|
31
32
|
/**
|
|
32
33
|
* tracking by propName
|
|
33
34
|
*/
|
|
34
35
|
track(items: Array<any>, components: Array<ComponentRef<any>>, afterComponentSetup?: (component: C, item: I) => void): void;
|
|
35
36
|
untrackComponentByIdProperty(component?: C): void;
|
|
36
|
-
private _checkComponentProperty;
|
|
37
37
|
dispose(): void;
|
|
38
38
|
}
|
package/package.json
CHANGED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns the removed or updated elements of a collection.
|
|
3
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/utils/collection.ts
|
|
4
|
-
* @author Evgenii Grebennikov
|
|
5
|
-
* @email djonnyx@gmail.com
|
|
6
|
-
*/
|
|
7
|
-
export const getCollectionRemovedOrUpdatedItems = (previousCollection, currentCollection) => {
|
|
8
|
-
const result = { deleted: new Array(), updated: new Array(), added: new Array(), notChanged: new Array() };
|
|
9
|
-
if (!currentCollection || currentCollection.length === 0) {
|
|
10
|
-
return { deleted: (previousCollection ? [...previousCollection] : []), updated: [], added: [], notChanged: [] };
|
|
11
|
-
}
|
|
12
|
-
if (!previousCollection || previousCollection.length === 0) {
|
|
13
|
-
return { deleted: [], updated: [], added: (currentCollection ? [...currentCollection] : []), notChanged: [] };
|
|
14
|
-
}
|
|
15
|
-
const collectionDict = {};
|
|
16
|
-
for (let i = 0, l = currentCollection.length; i < l; i++) {
|
|
17
|
-
const item = currentCollection[i];
|
|
18
|
-
if (item) {
|
|
19
|
-
collectionDict[item.id] = item;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
const notChangedMap = {}, deletedMap = {}, updatedMap = {};
|
|
23
|
-
for (let i = 0, l = previousCollection.length; i < l; i++) {
|
|
24
|
-
const item = previousCollection[i], id = item.id;
|
|
25
|
-
if (item) {
|
|
26
|
-
if (collectionDict.hasOwnProperty(id)) {
|
|
27
|
-
if (item === collectionDict[id]) {
|
|
28
|
-
result.notChanged.push(item);
|
|
29
|
-
notChangedMap[item.id] = item;
|
|
30
|
-
continue;
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
result.updated.push(item);
|
|
34
|
-
updatedMap[item.id] = item;
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
result.deleted.push(item);
|
|
39
|
-
deletedMap[item.id] = item;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
for (let i = 0, l = currentCollection.length; i < l; i++) {
|
|
43
|
-
const item = currentCollection[i], id = item.id;
|
|
44
|
-
if (item && !deletedMap.hasOwnProperty(id) && !updatedMap.hasOwnProperty(id) && !notChangedMap.hasOwnProperty(id)) {
|
|
45
|
-
result.added.push(item);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUEyQyxrQkFBd0MsRUFBRSxpQkFBdUMsRUFDbkosRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBMkIsRUFBRSxPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxDQUFDO0lBQ25LLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBTSxFQUFFLE9BQU8sRUFBRSxFQUFrQixFQUFFLEtBQUssRUFBRSxFQUFrQixFQUFFLFVBQVUsRUFBRSxFQUFrQixFQUFFLENBQUM7S0FDeEs7SUFDRCxJQUFJLENBQUMsa0JBQWtCLElBQUksa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQU0sRUFBRSxVQUFVLEVBQUUsRUFBa0IsRUFBRSxDQUFDO0tBQ3RLO0lBQ0QsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQztJQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdEQsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLEVBQUU7WUFDTixjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNsQztLQUNKO0lBQ0QsTUFBTSxhQUFhLEdBQW9CLEVBQUUsRUFBRSxVQUFVLEdBQW9CLEVBQUUsRUFBRSxVQUFVLEdBQW9CLEVBQUUsQ0FBQztJQUM5RyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDdkQsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLGNBQWMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25DLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDN0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUM5QixTQUFTO2lCQUNaO3FCQUFNO29CQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDM0IsU0FBUztpQkFDWjthQUNKO1lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDOUI7S0FDSjtJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0RCxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUMvRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQjtLQUNKO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWQgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5cclxuaW50ZXJmYWNlIElDb2xsZWN0aW9uRGVsdGE8SSBleHRlbmRzIHsgaWQ6IElkIH0sIEMgZXh0ZW5kcyBBcnJheTxJPj4ge1xyXG4gICAgZGVsZXRlZDogQztcclxuICAgIHVwZGF0ZWQ6IEM7XHJcbiAgICBub3RDaGFuZ2VkOiBDO1xyXG4gICAgYWRkZWQ6IEM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIHRoZSByZW1vdmVkIG9yIHVwZGF0ZWQgZWxlbWVudHMgb2YgYSBjb2xsZWN0aW9uLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xNi54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL2NvbGxlY3Rpb24udHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGdldENvbGxlY3Rpb25SZW1vdmVkT3JVcGRhdGVkSXRlbXMgPSA8SSBleHRlbmRzIHsgaWQ6IElkIH0sIEMgZXh0ZW5kcyBBcnJheTxJPj4ocHJldmlvdXNDb2xsZWN0aW9uOiBDIHwgbnVsbCB8IHVuZGVmaW5lZCwgY3VycmVudENvbGxlY3Rpb246IEMgfCBudWxsIHwgdW5kZWZpbmVkKTpcclxuICAgIElDb2xsZWN0aW9uRGVsdGE8SSwgQz4gPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBJQ29sbGVjdGlvbkRlbHRhPEksIEM+ID0geyBkZWxldGVkOiBuZXcgQXJyYXk8ST4oKSBhcyBDLCB1cGRhdGVkOiBuZXcgQXJyYXk8ST4oKSBhcyBDLCBhZGRlZDogbmV3IEFycmF5PEk+KCkgYXMgQywgbm90Q2hhbmdlZDogbmV3IEFycmF5PEk+KCkgYXMgQyB9O1xyXG4gICAgaWYgKCFjdXJyZW50Q29sbGVjdGlvbiB8fCBjdXJyZW50Q29sbGVjdGlvbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4geyBkZWxldGVkOiAocHJldmlvdXNDb2xsZWN0aW9uID8gWy4uLnByZXZpb3VzQ29sbGVjdGlvbl0gOiBbXSkgYXMgQywgdXBkYXRlZDogW10gYXMgdW5rbm93biBhcyBDLCBhZGRlZDogW10gYXMgdW5rbm93biBhcyBDLCBub3RDaGFuZ2VkOiBbXSBhcyB1bmtub3duIGFzIEMgfTtcclxuICAgIH1cclxuICAgIGlmICghcHJldmlvdXNDb2xsZWN0aW9uIHx8IHByZXZpb3VzQ29sbGVjdGlvbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4geyBkZWxldGVkOiBbXSBhcyB1bmtub3duIGFzIEMsIHVwZGF0ZWQ6IFtdIGFzIHVua25vd24gYXMgQywgYWRkZWQ6IChjdXJyZW50Q29sbGVjdGlvbiA/IFsuLi5jdXJyZW50Q29sbGVjdGlvbl0gOiBbXSkgYXMgQywgbm90Q2hhbmdlZDogW10gYXMgdW5rbm93biBhcyBDIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb2xsZWN0aW9uRGljdDogeyBbaWQ6IElkXTogSSB9ID0ge307XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGN1cnJlbnRDb2xsZWN0aW9uLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjdXJyZW50Q29sbGVjdGlvbltpXTtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uRGljdFtpdGVtLmlkXSA9IGl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgbm90Q2hhbmdlZE1hcDogeyBbaWQ6IElkXTogSSB9ID0ge30sIGRlbGV0ZWRNYXA6IHsgW2lkOiBJZF06IEkgfSA9IHt9LCB1cGRhdGVkTWFwOiB7IFtpZDogSWRdOiBJIH0gPSB7fTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcHJldmlvdXNDb2xsZWN0aW9uLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBwcmV2aW91c0NvbGxlY3Rpb25baV0sIGlkID0gaXRlbS5pZDtcclxuICAgICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgICAgICBpZiAoY29sbGVjdGlvbkRpY3QuaGFzT3duUHJvcGVydHkoaWQpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PT0gY29sbGVjdGlvbkRpY3RbaWRdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm5vdENoYW5nZWQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICBub3RDaGFuZ2VkTWFwW2l0ZW0uaWRdID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZWQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVkTWFwW2l0ZW0uaWRdID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzdWx0LmRlbGV0ZWQucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgZGVsZXRlZE1hcFtpdGVtLmlkXSA9IGl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gY3VycmVudENvbGxlY3Rpb24ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGN1cnJlbnRDb2xsZWN0aW9uW2ldLCBpZCA9IGl0ZW0uaWQ7XHJcbiAgICAgICAgaWYgKGl0ZW0gJiYgIWRlbGV0ZWRNYXAuaGFzT3duUHJvcGVydHkoaWQpICYmICF1cGRhdGVkTWFwLmhhc093blByb3BlcnR5KGlkKSAmJiAhbm90Q2hhbmdlZE1hcC5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcclxuICAgICAgICAgICAgcmVzdWx0LmFkZGVkLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuIl19
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Id } from "../types";
|
|
2
|
-
interface ICollectionDelta<I extends {
|
|
3
|
-
id: Id;
|
|
4
|
-
}, C extends Array<I>> {
|
|
5
|
-
deleted: C;
|
|
6
|
-
updated: C;
|
|
7
|
-
notChanged: C;
|
|
8
|
-
added: C;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Returns the removed or updated elements of a collection.
|
|
12
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/16.x/projects/ng-virtual-list/src/lib/utils/collection.ts
|
|
13
|
-
* @author Evgenii Grebennikov
|
|
14
|
-
* @email djonnyx@gmail.com
|
|
15
|
-
*/
|
|
16
|
-
export declare const getCollectionRemovedOrUpdatedItems: <I extends {
|
|
17
|
-
id: Id;
|
|
18
|
-
}, C extends I[]>(previousCollection: C | null | undefined, currentCollection: C | null | undefined) => ICollectionDelta<I, C>;
|
|
19
|
-
export {};
|