ng-virtual-list 18.0.13 → 18.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 +2 -1
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +8 -2
- package/esm2022/lib/ng-virtual-list.component.mjs +30 -9
- 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 +129 -106
- 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 +6 -1
- 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;
|
|
@@ -95,6 +95,10 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
95
95
|
private _elementRef;
|
|
96
96
|
private _initialized;
|
|
97
97
|
readonly $initialized: Observable<boolean>;
|
|
98
|
+
/**
|
|
99
|
+
* The name of the property by which tracking is performed
|
|
100
|
+
*/
|
|
101
|
+
trackBy: import("@angular/core").InputSignal<string>;
|
|
98
102
|
/**
|
|
99
103
|
* Dictionary of element sizes by their id
|
|
100
104
|
*/
|
|
@@ -106,6 +110,7 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
106
110
|
ngOnInit(): void;
|
|
107
111
|
private listenCacheChangesIfNeed;
|
|
108
112
|
private getIsVertical;
|
|
113
|
+
private _componentsResizeObserver;
|
|
109
114
|
private createDisplayComponentsIfNeed;
|
|
110
115
|
private resetRenderers;
|
|
111
116
|
/**
|
|
@@ -131,5 +136,5 @@ export declare class NgVirtualListComponent implements AfterViewInit, OnDestroy
|
|
|
131
136
|
ngAfterViewInit(): void;
|
|
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 {};
|