ng-virtual-list 18.0.13 → 18.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 +72 -39
- package/esm2022/lib/utils/cacheMap.mjs +6 -2
- package/esm2022/lib/utils/trackBox.mjs +70 -20
- package/esm2022/lib/utils/tracker.mjs +19 -28
- package/fesm2022/ng-virtual-list.mjs +171 -136
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-virtual-list-item.component.d.ts +2 -0
- package/lib/ng-virtual-list.component.d.ts +8 -3
- package/lib/utils/trackBox.d.ts +8 -3
- package/lib/utils/tracker.d.ts +1 -1
- package/package.json +1 -1
- package/esm2022/lib/utils/collection.mjs +0 -50
- package/lib/utils/collection.d.ts +0 -19
|
@@ -15,10 +15,12 @@ export declare class NgVirtualListItemComponent {
|
|
|
15
15
|
data: import("@angular/core").WritableSignal<IRenderVirtualListItem | undefined>;
|
|
16
16
|
private _data;
|
|
17
17
|
set item(v: IRenderVirtualListItem | undefined);
|
|
18
|
+
get item(): IRenderVirtualListItem | undefined;
|
|
18
19
|
get itemId(): import("../types").Id | undefined;
|
|
19
20
|
itemRenderer: import("@angular/core").WritableSignal<TemplateRef<any> | undefined>;
|
|
20
21
|
set renderer(v: TemplateRef<any> | undefined);
|
|
21
22
|
private _elementRef;
|
|
23
|
+
get element(): HTMLElement;
|
|
22
24
|
constructor();
|
|
23
25
|
getBounds(): IRect;
|
|
24
26
|
showIfNeed(): void;
|
|
@@ -87,14 +87,17 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
87
87
|
get isScrolling(): boolean;
|
|
88
88
|
private _resizeObserver;
|
|
89
89
|
private _onResizeHandler;
|
|
90
|
+
private _scrolls;
|
|
90
91
|
private _onScrollHandler;
|
|
91
92
|
private scrollImmediately;
|
|
92
|
-
private _scrollImmediatelyHandler;
|
|
93
|
-
private clearScrollImmediately;
|
|
94
93
|
private _onScrollEndHandler;
|
|
95
94
|
private _elementRef;
|
|
96
95
|
private _initialized;
|
|
97
96
|
readonly $initialized: Observable<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* The name of the property by which tracking is performed
|
|
99
|
+
*/
|
|
100
|
+
trackBy: import("@angular/core").InputSignal<string>;
|
|
98
101
|
/**
|
|
99
102
|
* Dictionary of element sizes by their id
|
|
100
103
|
*/
|
|
@@ -106,6 +109,7 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
106
109
|
ngOnInit(): void;
|
|
107
110
|
private listenCacheChangesIfNeed;
|
|
108
111
|
private getIsVertical;
|
|
112
|
+
private _componentsResizeObserver;
|
|
109
113
|
private createDisplayComponentsIfNeed;
|
|
110
114
|
private resetRenderers;
|
|
111
115
|
/**
|
|
@@ -129,7 +133,8 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
129
133
|
private _onContainerScrollHandler;
|
|
130
134
|
private _onContainerScrollEndHandler;
|
|
131
135
|
ngAfterViewInit(): void;
|
|
136
|
+
private clearScrollImmediately;
|
|
132
137
|
ngOnDestroy(): void;
|
|
133
138
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgVirtualListComponent, never>;
|
|
134
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NgVirtualListComponent, "ng-virtual-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "snapToItem": { "alias": "snapToItem"; "required": false; "isSignal": true; }; "enabledBufferOptimization": { "alias": "enabledBufferOptimization"; "required": false; "isSignal": true; }; "itemRenderer": { "alias": "itemRenderer"; "required": true; "isSignal": true; }; "stickyMap": { "alias": "stickyMap"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "dynamicSize": { "alias": "dynamicSize"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "itemsOffset": { "alias": "itemsOffset"; "required": false; "isSignal": true; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; }, never, never, false, never>;
|
|
139
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgVirtualListComponent, "ng-virtual-list", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "snapToItem": { "alias": "snapToItem"; "required": false; "isSignal": true; }; "enabledBufferOptimization": { "alias": "enabledBufferOptimization"; "required": false; "isSignal": true; }; "itemRenderer": { "alias": "itemRenderer"; "required": true; "isSignal": true; }; "stickyMap": { "alias": "stickyMap"; "required": false; "isSignal": true; }; "itemSize": { "alias": "itemSize"; "required": false; "isSignal": true; }; "dynamicSize": { "alias": "dynamicSize"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "itemsOffset": { "alias": "itemsOffset"; "required": false; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; }, { "onScroll": "onScroll"; "onScrollEnd": "onScrollEnd"; }, never, never, false, never>;
|
|
135
140
|
}
|
package/lib/utils/trackBox.d.ts
CHANGED
|
@@ -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
|
@@ -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/18.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL2NvbGxlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQ0FBa0MsR0FBRyxDQUEyQyxrQkFBd0MsRUFBRSxpQkFBdUMsRUFDbkosRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBMkIsRUFBRSxPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxLQUFLLEVBQVUsRUFBRSxDQUFDO0lBQ25LLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFNLEVBQUUsT0FBTyxFQUFFLEVBQWtCLEVBQUUsS0FBSyxFQUFFLEVBQWtCLEVBQUUsVUFBVSxFQUFFLEVBQWtCLEVBQUUsQ0FBQztJQUN6SyxDQUFDO0lBQ0QsSUFBSSxDQUFDLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQWtCLEVBQUUsT0FBTyxFQUFFLEVBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQU0sRUFBRSxVQUFVLEVBQUUsRUFBa0IsRUFBRSxDQUFDO0lBQ3ZLLENBQUM7SUFDRCxNQUFNLGNBQWMsR0FBb0IsRUFBRSxDQUFDO0lBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksSUFBSSxFQUFFLENBQUM7WUFDUCxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFvQixFQUFFLEVBQUUsVUFBVSxHQUFvQixFQUFFLEVBQUUsVUFBVSxHQUFvQixFQUFFLENBQUM7SUFDOUcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDeEQsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLElBQUksS0FBSyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzdCLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUM5QixTQUFTO2dCQUNiLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDMUIsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzNCLFNBQVM7Z0JBQ2IsQ0FBQztZQUNMLENBQUM7WUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2hELElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEgsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJZCB9IGZyb20gXCIuLi90eXBlc1wiXHJcblxyXG5pbnRlcmZhY2UgSUNvbGxlY3Rpb25EZWx0YTxJIGV4dGVuZHMgeyBpZDogSWQgfSwgQyBleHRlbmRzIEFycmF5PEk+PiB7XHJcbiAgICBkZWxldGVkOiBDO1xyXG4gICAgdXBkYXRlZDogQztcclxuICAgIG5vdENoYW5nZWQ6IEM7XHJcbiAgICBhZGRlZDogQztcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHVybnMgdGhlIHJlbW92ZWQgb3IgdXBkYXRlZCBlbGVtZW50cyBvZiBhIGNvbGxlY3Rpb24uXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvY29sbGVjdGlvbi50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZ2V0Q29sbGVjdGlvblJlbW92ZWRPclVwZGF0ZWRJdGVtcyA9IDxJIGV4dGVuZHMgeyBpZDogSWQgfSwgQyBleHRlbmRzIEFycmF5PEk+PihwcmV2aW91c0NvbGxlY3Rpb246IEMgfCBudWxsIHwgdW5kZWZpbmVkLCBjdXJyZW50Q29sbGVjdGlvbjogQyB8IG51bGwgfCB1bmRlZmluZWQpOlxyXG4gICAgSUNvbGxlY3Rpb25EZWx0YTxJLCBDPiA9PiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IElDb2xsZWN0aW9uRGVsdGE8SSwgQz4gPSB7IGRlbGV0ZWQ6IG5ldyBBcnJheTxJPigpIGFzIEMsIHVwZGF0ZWQ6IG5ldyBBcnJheTxJPigpIGFzIEMsIGFkZGVkOiBuZXcgQXJyYXk8ST4oKSBhcyBDLCBub3RDaGFuZ2VkOiBuZXcgQXJyYXk8ST4oKSBhcyBDIH07XHJcbiAgICBpZiAoIWN1cnJlbnRDb2xsZWN0aW9uIHx8IGN1cnJlbnRDb2xsZWN0aW9uLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiB7IGRlbGV0ZWQ6IChwcmV2aW91c0NvbGxlY3Rpb24gPyBbLi4ucHJldmlvdXNDb2xsZWN0aW9uXSA6IFtdKSBhcyBDLCB1cGRhdGVkOiBbXSBhcyB1bmtub3duIGFzIEMsIGFkZGVkOiBbXSBhcyB1bmtub3duIGFzIEMsIG5vdENoYW5nZWQ6IFtdIGFzIHVua25vd24gYXMgQyB9O1xyXG4gICAgfVxyXG4gICAgaWYgKCFwcmV2aW91c0NvbGxlY3Rpb24gfHwgcHJldmlvdXNDb2xsZWN0aW9uLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiB7IGRlbGV0ZWQ6IFtdIGFzIHVua25vd24gYXMgQywgdXBkYXRlZDogW10gYXMgdW5rbm93biBhcyBDLCBhZGRlZDogKGN1cnJlbnRDb2xsZWN0aW9uID8gWy4uLmN1cnJlbnRDb2xsZWN0aW9uXSA6IFtdKSBhcyBDLCBub3RDaGFuZ2VkOiBbXSBhcyB1bmtub3duIGFzIEMgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbGxlY3Rpb25EaWN0OiB7IFtpZDogSWRdOiBJIH0gPSB7fTtcclxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gY3VycmVudENvbGxlY3Rpb24ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGN1cnJlbnRDb2xsZWN0aW9uW2ldO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb25EaWN0W2l0ZW0uaWRdID0gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBub3RDaGFuZ2VkTWFwOiB7IFtpZDogSWRdOiBJIH0gPSB7fSwgZGVsZXRlZE1hcDogeyBbaWQ6IElkXTogSSB9ID0ge30sIHVwZGF0ZWRNYXA6IHsgW2lkOiBJZF06IEkgfSA9IHt9O1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwcmV2aW91c0NvbGxlY3Rpb24ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHByZXZpb3VzQ29sbGVjdGlvbltpXSwgaWQgPSBpdGVtLmlkO1xyXG4gICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uRGljdC5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtID09PSBjb2xsZWN0aW9uRGljdFtpZF0pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQubm90Q2hhbmdlZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIG5vdENoYW5nZWRNYXBbaXRlbS5pZF0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQudXBkYXRlZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNYXBbaXRlbS5pZF0gPSBpdGVtO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXN1bHQuZGVsZXRlZC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICBkZWxldGVkTWFwW2l0ZW0uaWRdID0gaXRlbTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjdXJyZW50Q29sbGVjdGlvbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBjb25zdCBpdGVtID0gY3VycmVudENvbGxlY3Rpb25baV0sIGlkID0gaXRlbS5pZDtcclxuICAgICAgICBpZiAoaXRlbSAmJiAhZGVsZXRlZE1hcC5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgIXVwZGF0ZWRNYXAuaGFzT3duUHJvcGVydHkoaWQpICYmICFub3RDaGFuZ2VkTWFwLmhhc093blByb3BlcnR5KGlkKSkge1xyXG4gICAgICAgICAgICByZXN1bHQuYWRkZWQucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG4iXX0=
|
|
@@ -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/18.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 Array<I>>(previousCollection: C | null | undefined, currentCollection: C | null | undefined) => ICollectionDelta<I, C>;
|
|
19
|
-
export {};
|