ng-virtual-list 16.0.13 → 16.0.14
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 +4 -3
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +8 -2
- package/esm2022/lib/ng-virtual-list.component.mjs +45 -13
- 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 +147 -113
- 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 +10 -2
- 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;
|
|
@@ -9,7 +9,7 @@ import * as i0 from "@angular/core";
|
|
|
9
9
|
* Virtual list component.
|
|
10
10
|
* Maximum performance for extremely large lists.
|
|
11
11
|
* It is based on algorithms for virtualization of screen objects.
|
|
12
|
-
* @link https://github.com/DjonnyX/ng-virtual-list/blob/
|
|
12
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/15.x/projects/ng-virtual-list/src/lib/ng-virtual-list.component.ts
|
|
13
13
|
* @author Evgenii Grebennikov
|
|
14
14
|
* @email djonnyx@gmail.com
|
|
15
15
|
*/
|
|
@@ -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>;
|
|
@@ -137,6 +144,7 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
137
144
|
ngOnInit(): void;
|
|
138
145
|
private listenCacheChangesIfNeed;
|
|
139
146
|
private getIsVertical;
|
|
147
|
+
private _componentsResizeObserver;
|
|
140
148
|
private createDisplayComponentsIfNeed;
|
|
141
149
|
private resetRenderers;
|
|
142
150
|
/**
|
|
@@ -162,5 +170,5 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
162
170
|
ngAfterViewInit(): void;
|
|
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 {};
|