ng-virtual-list 14.4.2 → 14.4.4

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.
Files changed (48) hide show
  1. package/README.md +1 -1
  2. package/esm2020/lib/utils/tracker.mjs +18 -9
  3. package/esm2022/lib/components/ng-virtual-list-item.component.mjs +132 -0
  4. package/esm2022/lib/const/index.mjs +44 -0
  5. package/esm2022/lib/enums/direction.mjs +2 -0
  6. package/esm2022/lib/enums/directions.mjs +18 -0
  7. package/esm2022/lib/enums/index.mjs +4 -0
  8. package/esm2022/lib/enums/snapping-method.mjs +2 -0
  9. package/esm2022/lib/enums/snapping-methods.mjs +18 -0
  10. package/esm2022/lib/models/base-virtual-list-item-component.mjs +9 -0
  11. package/esm2022/lib/models/collection.model.mjs +3 -0
  12. package/esm2022/lib/models/component.model.mjs +2 -0
  13. package/esm2022/lib/models/index.mjs +2 -0
  14. package/esm2022/lib/models/item.model.mjs +2 -0
  15. package/esm2022/lib/models/render-collection.model.mjs +3 -0
  16. package/esm2022/lib/models/render-item-config.model.mjs +2 -0
  17. package/esm2022/lib/models/render-item.model.mjs +3 -0
  18. package/esm2022/lib/models/scroll-direction.model.mjs +2 -0
  19. package/esm2022/lib/models/scroll-event.model.mjs +2 -0
  20. package/esm2022/lib/models/sticky-map.model.mjs +2 -0
  21. package/esm2022/lib/ng-virtual-list.component.mjs +535 -0
  22. package/esm2022/lib/ng-virtual-list.module.mjs +20 -0
  23. package/esm2022/lib/types/id.mjs +2 -0
  24. package/esm2022/lib/types/index.mjs +2 -0
  25. package/esm2022/lib/types/rect.mjs +2 -0
  26. package/esm2022/lib/types/size.mjs +2 -0
  27. package/esm2022/lib/utils/browser.mjs +3 -0
  28. package/esm2022/lib/utils/buffer-interpolation.mjs +27 -0
  29. package/esm2022/lib/utils/cacheMap.mjs +168 -0
  30. package/esm2022/lib/utils/debounce.mjs +31 -0
  31. package/esm2022/lib/utils/eventEmitter.mjs +105 -0
  32. package/esm2022/lib/utils/index.mjs +5 -0
  33. package/esm2022/lib/utils/isDirection.mjs +15 -0
  34. package/esm2022/lib/utils/scrollEvent.mjs +42 -0
  35. package/esm2022/lib/utils/snapping-method.mjs +9 -0
  36. package/esm2022/lib/utils/toggleClassName.mjs +15 -0
  37. package/esm2022/lib/utils/trackBox.mjs +762 -0
  38. package/esm2022/lib/utils/tracker.mjs +135 -0
  39. package/esm2022/ng-virtual-list.mjs +5 -0
  40. package/esm2022/public-api.mjs +11 -0
  41. package/fesm2015/ng-virtual-list.mjs +16 -8
  42. package/fesm2015/ng-virtual-list.mjs.map +1 -1
  43. package/fesm2020/ng-virtual-list.mjs +16 -8
  44. package/fesm2020/ng-virtual-list.mjs.map +1 -1
  45. package/fesm2022/ng-virtual-list.mjs +2055 -0
  46. package/fesm2022/ng-virtual-list.mjs.map +1 -0
  47. package/lib/utils/tracker.d.ts +3 -7
  48. package/package.json +1 -1
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Tracks display items by property
3
+ * @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/tracker.ts
4
+ * @author Evgenii Grebennikov
5
+ * @email djonnyx@gmail.com
6
+ */
7
+ export class Tracker {
8
+ /**
9
+ * display objects dictionary of indexes by id
10
+ */
11
+ _displayObjectIndexMapById = {};
12
+ set displayObjectIndexMapById(v) {
13
+ if (this._displayObjectIndexMapById === v) {
14
+ return;
15
+ }
16
+ this._displayObjectIndexMapById = v;
17
+ }
18
+ get displayObjectIndexMapById() {
19
+ return this._displayObjectIndexMapById;
20
+ }
21
+ /**
22
+ * Dictionary displayItems propertyNameId by items propertyNameId
23
+ */
24
+ _trackMap = {};
25
+ get trackMap() {
26
+ return this._trackMap;
27
+ }
28
+ _trackingPropertyName;
29
+ set trackingPropertyName(v) {
30
+ this._trackingPropertyName = v;
31
+ }
32
+ constructor(trackingPropertyName) {
33
+ this._trackingPropertyName = trackingPropertyName;
34
+ }
35
+ /**
36
+ * tracking by propName
37
+ */
38
+ track(items, components, snapedComponent, direction) {
39
+ if (!items) {
40
+ return;
41
+ }
42
+ const idPropName = this._trackingPropertyName, untrackedItems = [...components], isDown = direction === 0 || direction === 1;
43
+ let isRegularSnapped = false;
44
+ for (let i = isDown ? 0 : items.length - 1, l = isDown ? items.length : 0; isDown ? i < l : i >= l; isDown ? i++ : i--) {
45
+ const item = items[i], itemTrackingProperty = item[idPropName];
46
+ if (this._trackMap) {
47
+ if (this._trackMap.hasOwnProperty(itemTrackingProperty)) {
48
+ const diId = this._trackMap[itemTrackingProperty], compIndex = this._displayObjectIndexMapById[diId], comp = components[compIndex];
49
+ const compId = comp?.instance?.id;
50
+ if (comp !== undefined && compId === diId) {
51
+ const indexByUntrackedItems = untrackedItems.findIndex(v => {
52
+ return v.instance.id === compId;
53
+ });
54
+ if (indexByUntrackedItems > -1) {
55
+ if (snapedComponent) {
56
+ if (item['config']['snapped'] || item['config']['snappedOut']) {
57
+ isRegularSnapped = true;
58
+ snapedComponent.instance.item = item;
59
+ snapedComponent.instance.show();
60
+ }
61
+ }
62
+ comp.instance.item = item;
63
+ if (snapedComponent) {
64
+ if (item['config']['snapped'] || item['config']['snappedOut']) {
65
+ comp.instance.hide();
66
+ }
67
+ else {
68
+ comp.instance.show();
69
+ }
70
+ }
71
+ else {
72
+ comp.instance.show();
73
+ }
74
+ untrackedItems.splice(indexByUntrackedItems, 1);
75
+ continue;
76
+ }
77
+ }
78
+ delete this._trackMap[itemTrackingProperty];
79
+ }
80
+ }
81
+ if (untrackedItems.length > 0) {
82
+ const comp = untrackedItems.shift(), item = items[i];
83
+ if (comp) {
84
+ if (snapedComponent) {
85
+ if (item['config']['snapped'] || item['config']['snappedOut']) {
86
+ isRegularSnapped = true;
87
+ snapedComponent.instance.item = item;
88
+ snapedComponent.instance.show();
89
+ }
90
+ }
91
+ comp.instance.item = item;
92
+ if (snapedComponent) {
93
+ if (item['config']['snapped'] || item['config']['snappedOut']) {
94
+ comp.instance.hide();
95
+ }
96
+ else {
97
+ comp.instance.show();
98
+ }
99
+ }
100
+ else {
101
+ comp.instance.show();
102
+ }
103
+ if (this._trackMap) {
104
+ this._trackMap[itemTrackingProperty] = comp.instance.id;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ if (untrackedItems.length) {
110
+ for (let i = 0, l = untrackedItems.length; i < l; i++) {
111
+ const comp = untrackedItems[i];
112
+ comp.instance.hide();
113
+ }
114
+ }
115
+ if (!isRegularSnapped) {
116
+ if (snapedComponent) {
117
+ snapedComponent.instance.item = null;
118
+ snapedComponent.instance.hide();
119
+ }
120
+ }
121
+ }
122
+ untrackComponentByIdProperty(component) {
123
+ if (!component) {
124
+ return;
125
+ }
126
+ const propertyIdName = this._trackingPropertyName;
127
+ if (this._trackMap && component[propertyIdName] !== undefined) {
128
+ delete this._trackMap[propertyIdName];
129
+ }
130
+ }
131
+ dispose() {
132
+ this._trackMap = null;
133
+ }
134
+ }
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RyYWNrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JBOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFDaEI7O09BRUc7SUFDTywwQkFBMEIsR0FBNkIsRUFBRSxDQUFDO0lBRXBFLElBQUkseUJBQXlCLENBQUMsQ0FBMkI7UUFDckQsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLENBQUMsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLHlCQUF5QjtRQUN6QixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxTQUFTLEdBQWdELEVBQUUsQ0FBQztJQUV0RSxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVTLHFCQUFxQixDQUFVO0lBRXpDLElBQUksb0JBQW9CLENBQUMsQ0FBUztRQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZLG9CQUE0QjtRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEtBQWlCLEVBQUUsVUFBa0MsRUFBRSxlQUFtRCxFQUM1RyxTQUEwQjtRQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPO1FBQ1gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxjQUFjLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLE1BQU0sR0FBRyxTQUFTLEtB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LElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEIsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNyQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELDRCQUE0QixDQUFDLFNBQWE7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFLLFNBQWlCLENBQUMsY0FBYyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFNjcm9sbERpcmVjdGlvbiB9IGZyb20gXCIuLi9tb2RlbHNcIjtcclxuaW1wb3J0IHsgSWQsIElTaXplIH0gZnJvbSBcIi4uL3R5cGVzXCI7XHJcbmltcG9ydCB7IEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vbW9kZWxzL2Jhc2UtdmlydHVhbC1saXN0LWl0ZW0tY29tcG9uZW50XCI7XHJcblxyXG50eXBlIFRyYWNraW5nUHJvcGVydHlJZCA9IHN0cmluZyB8IG51bWJlcjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudDxJID0gYW55PiB7XHJcbiAgICBnZXRCb3VuZHMoKTogSVNpemU7XHJcbiAgICBpdGVtSWQ6IElkO1xyXG4gICAgaWQ6IG51bWJlcjtcclxuICAgIGl0ZW06IEkgfCBudWxsO1xyXG4gICAgc2hvdzogKCkgPT4gdm9pZDtcclxuICAgIGhpZGU6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUcmFja3MgZGlzcGxheSBpdGVtcyBieSBwcm9wZXJ0eVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xOC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RyYWNrZXIudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRyYWNrZXI8QyBleHRlbmRzIEJhc2VWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgPSBhbnk+IHtcclxuICAgIC8qKlxyXG4gICAgICogZGlzcGxheSBvYmplY3RzIGRpY3Rpb25hcnkgb2YgaW5kZXhlcyBieSBpZFxyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2Rpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQ6IHsgW2lkOiBudW1iZXJdOiBudW1iZXIgfSA9IHt9O1xyXG5cclxuICAgIHNldCBkaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkKHY6IHsgW2lkOiBudW1iZXJdOiBudW1iZXIgfSkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkID09PSB2KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlPYmplY3RJbmRleE1hcEJ5SWQgPSB2O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5T2JqZWN0SW5kZXhNYXBCeUlkO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGljdGlvbmFyeSBkaXNwbGF5SXRlbXMgcHJvcGVydHlOYW1lSWQgYnkgaXRlbXMgcHJvcGVydHlOYW1lSWRcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF90cmFja01hcDogeyBbaWQ6IFRyYWNraW5nUHJvcGVydHlJZF06IG51bWJlciB9IHwgbnVsbCA9IHt9O1xyXG5cclxuICAgIGdldCB0cmFja01hcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhY2tNYXA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF90cmFja2luZ1Byb3BlcnR5TmFtZSE6IHN0cmluZztcclxuXHJcbiAgICBzZXQgdHJhY2tpbmdQcm9wZXJ0eU5hbWUodjogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fdHJhY2tpbmdQcm9wZXJ0eU5hbWUgPSB2O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKHRyYWNraW5nUHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFja2luZ1Byb3BlcnR5TmFtZSA9IHRyYWNraW5nUHJvcGVydHlOYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJhY2tpbmcgYnkgcHJvcE5hbWVcclxuICAgICAqL1xyXG4gICAgdHJhY2soaXRlbXM6IEFycmF5PGFueT4sIGNvbXBvbmVudHM6IEFycmF5PENvbXBvbmVudFJlZjxDPj4sIHNuYXBlZENvbXBvbmVudDogQ29tcG9uZW50UmVmPEM+IHwgbnVsbCB8IHVuZGVmaW5lZCxcclxuICAgICAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghaXRlbXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgaWRQcm9wTmFtZSA9IHRoaXMuX3RyYWNraW5nUHJvcGVydHlOYW1lLCB1bnRyYWNrZWRJdGVtcyA9IFsuLi5jb21wb25lbnRzXSwgaXNEb3duID0gZGlyZWN0aW9uID09PSAwIHx8IGRpcmVjdGlvbiA9PT0gMTtcclxuICAgICAgICBsZXQgaXNSZWd1bGFyU25hcHBlZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gaXNEb3duID8gMCA6IGl0ZW1zLmxlbmd0aCAtIDEsIGwgPSBpc0Rvd24gPyBpdGVtcy5sZW5ndGggOiAwOyBpc0Rvd24gPyBpIDwgbCA6IGkgPj0gbDsgaXNEb3duID8gaSsrIDogaS0tKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpXSwgaXRlbVRyYWNraW5nUHJvcGVydHkgPSBpdGVtW2lkUHJvcE5hbWVdO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RyYWNrTWFwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fdHJhY2tNYXAuaGFzT3duUHJvcGVydHkoaXRlbVRyYWNraW5nUHJvcGVydHkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlJZCA9IHRoaXMuX3RyYWNrTWFwW2l0ZW1UcmFja2luZ1Byb3BlcnR5XSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcEluZGV4ID0gdGhpcy5fZGlzcGxheU9iamVjdEluZGV4TWFwQnlJZFtkaUlkXSwgY29tcCA9IGNvbXBvbmVudHNbY29tcEluZGV4XTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcElkID0gY29tcD8uaW5zdGFuY2U/LmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wICE9PSB1bmRlZmluZWQgJiYgY29tcElkID09PSBkaUlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4QnlVbnRyYWNrZWRJdGVtcyA9IHVudHJhY2tlZEl0ZW1zLmZpbmRJbmRleCh2ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2Lmluc3RhbmNlLmlkID09PSBjb21wSWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXhCeVVudHJhY2tlZEl0ZW1zID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbmFwZWRDb21wb25lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWQnXSB8fCBpdGVtWydjb25maWcnXVsnc25hcHBlZE91dCddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVndWxhclNuYXBwZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IGl0ZW07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc25hcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1bJ2NvbmZpZyddWydzbmFwcGVkJ10gfHwgaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWRPdXQnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW50cmFja2VkSXRlbXMuc3BsaWNlKGluZGV4QnlVbnRyYWNrZWRJdGVtcywgMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fdHJhY2tNYXBbaXRlbVRyYWNraW5nUHJvcGVydHldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodW50cmFja2VkSXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcCA9IHVudHJhY2tlZEl0ZW1zLnNoaWZ0KCksIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChjb21wKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNuYXBlZENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbVsnY29uZmlnJ11bJ3NuYXBwZWQnXSB8fCBpdGVtWydjb25maWcnXVsnc25hcHBlZE91dCddKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1JlZ3VsYXJTbmFwcGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuYXBlZENvbXBvbmVudC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5pdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc25hcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtWydjb25maWcnXVsnc25hcHBlZCddIHx8IGl0ZW1bJ2NvbmZpZyddWydzbmFwcGVkT3V0J10pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5zaG93KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wLmluc3RhbmNlLnNob3coKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl90cmFja01hcCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90cmFja01hcFtpdGVtVHJhY2tpbmdQcm9wZXJ0eV0gPSBjb21wLmluc3RhbmNlLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHVudHJhY2tlZEl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHVudHJhY2tlZEl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tcCA9IHVudHJhY2tlZEl0ZW1zW2ldO1xyXG4gICAgICAgICAgICAgICAgY29tcC5pbnN0YW5jZS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghaXNSZWd1bGFyU25hcHBlZCkge1xyXG4gICAgICAgICAgICBpZiAoc25hcGVkQ29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaXRlbSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBzbmFwZWRDb21wb25lbnQuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVudHJhY2tDb21wb25lbnRCeUlkUHJvcGVydHkoY29tcG9uZW50PzogQyk6IHZvaWQge1xyXG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5SWROYW1lID0gdGhpcy5fdHJhY2tpbmdQcm9wZXJ0eU5hbWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl90cmFja01hcCAmJiAoY29tcG9uZW50IGFzIGFueSlbcHJvcGVydHlJZE5hbWVdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3RyYWNrTWFwW3Byb3BlcnR5SWROYW1lXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZGlzcG9zZSgpIHtcclxuICAgICAgICB0aGlzLl90cmFja01hcCA9IG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9uZy12aXJ0dWFsLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,11 @@
1
+ /*
2
+ * Public API Surface of ng-virtual-list
3
+ */
4
+ export * from './lib/components/ng-virtual-list-item.component';
5
+ export * from './lib/ng-virtual-list.module';
6
+ export * from './lib/ng-virtual-list.component';
7
+ export * from './lib/enums';
8
+ export * from './lib/models';
9
+ export * from './lib/types';
10
+ export * from './lib/utils';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG5nLXZpcnR1YWwtbGlzdFxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctdmlydHVhbC1saXN0Lm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLXZpcnR1YWwtbGlzdC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnVtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnO1xyXG4iXX0=
@@ -593,7 +593,7 @@ class Tracker {
593
593
  /**
594
594
  * Dictionary displayItems propertyNameId by items propertyNameId
595
595
  */
596
- this._trackMap = {};
596
+ this._trackMap = new CMap();
597
597
  this._trackingPropertyName = trackingPropertyName;
598
598
  }
599
599
  set displayObjectIndexMapById(v) {
@@ -619,13 +619,13 @@ class Tracker {
619
619
  if (!items) {
620
620
  return;
621
621
  }
622
- const idPropName = this._trackingPropertyName, untrackedItems = [...components], isDown = direction === 0 || direction === 1;
622
+ const idPropName = this._trackingPropertyName, untrackedItems = [...components], newTrackItems = [], isDown = direction === 0 || direction === 1;
623
623
  let isRegularSnapped = false;
624
624
  for (let i = isDown ? 0 : items.length - 1, l = isDown ? items.length : 0; isDown ? i < l : i >= l; isDown ? i++ : i--) {
625
625
  const item = items[i], itemTrackingProperty = item[idPropName];
626
626
  if (this._trackMap) {
627
- if (this._trackMap.hasOwnProperty(itemTrackingProperty)) {
628
- const diId = this._trackMap[itemTrackingProperty], compIndex = this._displayObjectIndexMapById[diId], comp = components[compIndex];
627
+ if (this._trackMap.has(itemTrackingProperty)) {
628
+ const diId = this._trackMap.get(itemTrackingProperty), compIndex = this._displayObjectIndexMapById[diId], comp = components[compIndex];
629
629
  const compId = (_a = comp === null || comp === void 0 ? void 0 : comp.instance) === null || _a === void 0 ? void 0 : _a.id;
630
630
  if (comp !== undefined && compId === diId) {
631
631
  const indexByUntrackedItems = untrackedItems.findIndex(v => {
@@ -655,9 +655,15 @@ class Tracker {
655
655
  continue;
656
656
  }
657
657
  }
658
- delete this._trackMap[itemTrackingProperty];
658
+ this._trackMap.delete(itemTrackingProperty);
659
659
  }
660
660
  }
661
+ if (untrackedItems.length > 0) {
662
+ newTrackItems.push(item);
663
+ }
664
+ }
665
+ for (let i = 0, l = newTrackItems.length; i < l; i++) {
666
+ const item = newTrackItems[i], itemTrackingProperty = item[idPropName];
661
667
  if (untrackedItems.length > 0) {
662
668
  const comp = untrackedItems.shift(), item = items[i];
663
669
  if (comp) {
@@ -681,7 +687,7 @@ class Tracker {
681
687
  comp.instance.show();
682
688
  }
683
689
  if (this._trackMap) {
684
- this._trackMap[itemTrackingProperty] = comp.instance.id;
690
+ this._trackMap.set(itemTrackingProperty, comp.instance.id);
685
691
  }
686
692
  }
687
693
  }
@@ -705,11 +711,13 @@ class Tracker {
705
711
  }
706
712
  const propertyIdName = this._trackingPropertyName;
707
713
  if (this._trackMap && component[propertyIdName] !== undefined) {
708
- delete this._trackMap[propertyIdName];
714
+ this._trackMap.delete(propertyIdName);
709
715
  }
710
716
  }
711
717
  dispose() {
712
- this._trackMap = null;
718
+ if (this._trackMap) {
719
+ this._trackMap.clear();
720
+ }
713
721
  }
714
722
  }
715
723