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.
- package/README.md +1 -1
- package/esm2020/lib/utils/tracker.mjs +18 -9
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +132 -0
- package/esm2022/lib/const/index.mjs +44 -0
- package/esm2022/lib/enums/direction.mjs +2 -0
- package/esm2022/lib/enums/directions.mjs +18 -0
- package/esm2022/lib/enums/index.mjs +4 -0
- package/esm2022/lib/enums/snapping-method.mjs +2 -0
- package/esm2022/lib/enums/snapping-methods.mjs +18 -0
- package/esm2022/lib/models/base-virtual-list-item-component.mjs +9 -0
- package/esm2022/lib/models/collection.model.mjs +3 -0
- package/esm2022/lib/models/component.model.mjs +2 -0
- package/esm2022/lib/models/index.mjs +2 -0
- package/esm2022/lib/models/item.model.mjs +2 -0
- package/esm2022/lib/models/render-collection.model.mjs +3 -0
- package/esm2022/lib/models/render-item-config.model.mjs +2 -0
- package/esm2022/lib/models/render-item.model.mjs +3 -0
- package/esm2022/lib/models/scroll-direction.model.mjs +2 -0
- package/esm2022/lib/models/scroll-event.model.mjs +2 -0
- package/esm2022/lib/models/sticky-map.model.mjs +2 -0
- package/esm2022/lib/ng-virtual-list.component.mjs +535 -0
- package/esm2022/lib/ng-virtual-list.module.mjs +20 -0
- package/esm2022/lib/types/id.mjs +2 -0
- package/esm2022/lib/types/index.mjs +2 -0
- package/esm2022/lib/types/rect.mjs +2 -0
- package/esm2022/lib/types/size.mjs +2 -0
- package/esm2022/lib/utils/browser.mjs +3 -0
- package/esm2022/lib/utils/buffer-interpolation.mjs +27 -0
- package/esm2022/lib/utils/cacheMap.mjs +168 -0
- package/esm2022/lib/utils/debounce.mjs +31 -0
- package/esm2022/lib/utils/eventEmitter.mjs +105 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/isDirection.mjs +15 -0
- package/esm2022/lib/utils/scrollEvent.mjs +42 -0
- package/esm2022/lib/utils/snapping-method.mjs +9 -0
- package/esm2022/lib/utils/toggleClassName.mjs +15 -0
- package/esm2022/lib/utils/trackBox.mjs +762 -0
- package/esm2022/lib/utils/tracker.mjs +135 -0
- package/esm2022/ng-virtual-list.mjs +5 -0
- package/esm2022/public-api.mjs +11 -0
- package/fesm2015/ng-virtual-list.mjs +16 -8
- package/fesm2015/ng-virtual-list.mjs.map +1 -1
- package/fesm2020/ng-virtual-list.mjs +16 -8
- package/fesm2020/ng-virtual-list.mjs.map +1 -1
- package/fesm2022/ng-virtual-list.mjs +2055 -0
- package/fesm2022/ng-virtual-list.mjs.map +1 -0
- package/lib/utils/tracker.d.ts +3 -7
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgVirtualListComponent } from './ng-virtual-list.component';
|
|
4
|
+
import { NgVirtualListItemComponent } from './components/ng-virtual-list-item.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NgVirtualListModule {
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgVirtualListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NgVirtualListModule, declarations: [NgVirtualListComponent, NgVirtualListItemComponent], imports: [CommonModule], exports: [NgVirtualListComponent] });
|
|
9
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgVirtualListModule, imports: [CommonModule] });
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgVirtualListModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [NgVirtualListComponent, NgVirtualListItemComponent],
|
|
15
|
+
exports: [NgVirtualListComponent],
|
|
16
|
+
imports: [CommonModule],
|
|
17
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
18
|
+
}]
|
|
19
|
+
}] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL25nLXZpcnR1YWwtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7O0FBUXpGLE1BQU0sT0FBTyxtQkFBbUI7d0dBQW5CLG1CQUFtQjt5R0FBbkIsbUJBQW1CLGlCQUxmLHNCQUFzQixFQUFFLDBCQUEwQixhQUV2RCxZQUFZLGFBRFosc0JBQXNCO3lHQUlyQixtQkFBbUIsWUFIcEIsWUFBWTs7NEZBR1gsbUJBQW1CO2tCQU4vQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHNCQUFzQixFQUFFLDBCQUEwQixDQUFDO29CQUNsRSxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztpQkFDNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTk9fRVJST1JTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9uZy12aXJ0dWFsLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbTmdWaXJ0dWFsTGlzdENvbXBvbmVudCwgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnRdLFxyXG4gIGV4cG9ydHM6IFtOZ1ZpcnR1YWxMaXN0Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcclxuICBzY2hlbWFzOiBbTk9fRVJST1JTX1NDSEVNQV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0TW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi90eXBlcy9pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIElkZW50aWZpZXIgdHlwZVxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xOC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3R5cGVzL2lkLnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBHcmViZW5uaWtvdlxyXG4gKiBAZW1haWwgZGpvbm55eEBnbWFpbC5jb21cclxuICovXHJcbmV4cG9ydCB0eXBlIElkID0gc3RyaW5nIHwgbnVtYmVyOyJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWQgfSBmcm9tICcuL2lkJztcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuL3NpemUnO1xyXG5pbXBvcnQgeyBJUmVjdCB9IGZyb20gJy4vcmVjdCc7XHJcblxyXG5leHBvcnQgdHlwZSB7XHJcbiAgICBJZCxcclxuICAgIElTaXplLFxyXG4gICAgSVJlY3QsXHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3R5cGVzL3JlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTaXplIH0gZnJvbSBcIi4vc2l6ZVwiO1xyXG5cclxuLyoqXHJcbiAqIFJlY3Rhbmd1bGFyIGFyZWEgaW50ZXJmYWNlXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdHlwZXMvcmVjdC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElSZWN0IGV4dGVuZHMgSVNpemUge1xyXG4gICAgLyoqXHJcbiAgICAgKiBYIGNvb3JkaW5hdGUuXHJcbiAgICAgKi9cclxuICAgIHg6IG51bWJlcjtcclxuICAgIC8qKlxyXG4gICAgICogWSBjb29yZGluYXRlLlxyXG4gICAgICovXHJcbiAgICB5OiBudW1iZXI7XHJcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3R5cGVzL3NpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBBcmVhIGFyZWEgSW50ZXJmYWNlXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdHlwZXMvc2l6ZS50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElTaXplIHtcclxuICAgIC8qKlxyXG4gICAgICogV2lkdGggdmFsdWUuXHJcbiAgICAgKi9cclxuICAgIHdpZHRoOiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIEhlaWdodCB2YWx1ZS5cclxuICAgICAqL1xyXG4gICAgaGVpZ2h0OiBudW1iZXI7XHJcbn0iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export const IS_FIREFOX = navigator.userAgent.toLowerCase().includes('firefox');
|
|
2
|
+
export const FIREFOX_SCROLLBAR_OVERLAP_SIZE = 12;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL2Jyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBJU19GSVJFRk9YID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdmaXJlZm94Jyk7XHJcblxyXG5leHBvcnQgY29uc3QgRklSRUZPWF9TQ1JPTExCQVJfT1ZFUkxBUF9TSVpFID0gMTI7XHJcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const DEFAULT_EXTRA = {
|
|
2
|
+
extremumThreshold: 2,
|
|
3
|
+
bufferSize: 10,
|
|
4
|
+
};
|
|
5
|
+
export const bufferInterpolation = (currentBufferValue, array, value, extra) => {
|
|
6
|
+
const { extremumThreshold = DEFAULT_EXTRA.extremumThreshold, bufferSize = DEFAULT_EXTRA.bufferSize, } = extra ?? DEFAULT_EXTRA;
|
|
7
|
+
if (currentBufferValue < value) {
|
|
8
|
+
let i = 0;
|
|
9
|
+
while (i < extremumThreshold) {
|
|
10
|
+
array.push(value);
|
|
11
|
+
i++;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
array.push(value);
|
|
16
|
+
}
|
|
17
|
+
while (array.length >= bufferSize) {
|
|
18
|
+
array.shift();
|
|
19
|
+
}
|
|
20
|
+
const l = array.length;
|
|
21
|
+
let buffer = 0;
|
|
22
|
+
for (let i = 0; i < l; i++) {
|
|
23
|
+
buffer += array[i];
|
|
24
|
+
}
|
|
25
|
+
return Math.ceil(buffer / l);
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyLWludGVycG9sYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9idWZmZXItaW50ZXJwb2xhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLGFBQWEsR0FBRztJQUNsQixpQkFBaUIsRUFBRSxDQUFDO0lBQ3BCLFVBQVUsRUFBRSxFQUFFO0NBQ2pCLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLGtCQUEwQixFQUFFLEtBQW9CLEVBQUUsS0FBYSxFQUFFLEtBQXFCLEVBQUUsRUFBRTtJQUMxSCxNQUFNLEVBQ0YsaUJBQWlCLEdBQUcsYUFBYSxDQUFDLGlCQUFpQixFQUNuRCxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsR0FDeEMsR0FBRyxLQUFLLElBQUksYUFBYSxDQUFDO0lBRTNCLElBQUksa0JBQWtCLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsT0FBTyxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLENBQUMsRUFBRSxDQUFDO1FBQ1IsQ0FBQztJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ0osS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN2QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBERUZBVUxUX0VYVFJBID0ge1xyXG4gICAgZXh0cmVtdW1UaHJlc2hvbGQ6IDIsXHJcbiAgICBidWZmZXJTaXplOiAxMCxcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4dHJhT3B0aW9ucyB7XHJcbiAgICBleHRyZW11bVRocmVzaG9sZD86IG51bWJlcjtcclxuICAgIGJ1ZmZlclNpemU/OiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBidWZmZXJJbnRlcnBvbGF0aW9uID0gKGN1cnJlbnRCdWZmZXJWYWx1ZTogbnVtYmVyLCBhcnJheTogQXJyYXk8bnVtYmVyPiwgdmFsdWU6IG51bWJlciwgZXh0cmE/OiBJRXh0cmFPcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgICAgZXh0cmVtdW1UaHJlc2hvbGQgPSBERUZBVUxUX0VYVFJBLmV4dHJlbXVtVGhyZXNob2xkLFxyXG4gICAgICAgIGJ1ZmZlclNpemUgPSBERUZBVUxUX0VYVFJBLmJ1ZmZlclNpemUsXHJcbiAgICB9ID0gZXh0cmEgPz8gREVGQVVMVF9FWFRSQTtcclxuXHJcbiAgICBpZiAoY3VycmVudEJ1ZmZlclZhbHVlIDwgdmFsdWUpIHtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgd2hpbGUgKGkgPCBleHRyZW11bVRocmVzaG9sZCkge1xyXG4gICAgICAgICAgICBhcnJheS5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKGFycmF5Lmxlbmd0aCA+PSBidWZmZXJTaXplKSB7XHJcbiAgICAgICAgYXJyYXkuc2hpZnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsID0gYXJyYXkubGVuZ3RoO1xyXG4gICAgbGV0IGJ1ZmZlciA9IDA7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBidWZmZXIgKz0gYXJyYXlbaV07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIE1hdGguY2VpbChidWZmZXIgLyBsKTtcclxufTtcclxuIl19
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { debounce } from "./debounce";
|
|
2
|
+
import { EventEmitter } from "./eventEmitter";
|
|
3
|
+
export class CMap {
|
|
4
|
+
_dict = {};
|
|
5
|
+
constructor(dict) {
|
|
6
|
+
if (dict) {
|
|
7
|
+
this._dict = { ...dict._dict };
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
get(key) {
|
|
11
|
+
const k = String(key);
|
|
12
|
+
return this._dict[k];
|
|
13
|
+
}
|
|
14
|
+
set(key, value) {
|
|
15
|
+
const k = String(key);
|
|
16
|
+
this._dict[k] = value;
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
has(key) {
|
|
20
|
+
return this._dict.hasOwnProperty(String(key));
|
|
21
|
+
}
|
|
22
|
+
delete(key) {
|
|
23
|
+
const k = String(key);
|
|
24
|
+
delete this._dict[k];
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this._dict = {};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export const CACHE_BOX_CHANGE_EVENT_NAME = 'change';
|
|
31
|
+
const MAX_SCROLL_DIRECTION_POOL = 50, CLEAR_SCROLL_DIRECTION_TO = 10, DIR_BACK = '-1', DIR_NONE = '0', DIR_FORWARD = '1';
|
|
32
|
+
/**
|
|
33
|
+
* Cache map.
|
|
34
|
+
* Emits a change event on each mutation.
|
|
35
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/cacheMap.ts
|
|
36
|
+
* @author Evgenii Grebennikov
|
|
37
|
+
* @email djonnyx@gmail.com
|
|
38
|
+
*/
|
|
39
|
+
export class CacheMap extends EventEmitter {
|
|
40
|
+
_map = new CMap();
|
|
41
|
+
_snapshot = new CMap();
|
|
42
|
+
_version = 0;
|
|
43
|
+
_previousVersion = this._version;
|
|
44
|
+
_lifeCircleTimeout;
|
|
45
|
+
_delta = 0;
|
|
46
|
+
get delta() {
|
|
47
|
+
return this._delta;
|
|
48
|
+
}
|
|
49
|
+
_deltaDirection = 0;
|
|
50
|
+
set deltaDirection(v) {
|
|
51
|
+
this._deltaDirection = v;
|
|
52
|
+
this._scrollDirection = this.calcScrollDirection(v);
|
|
53
|
+
}
|
|
54
|
+
get deltaDirection() {
|
|
55
|
+
return this._deltaDirection;
|
|
56
|
+
}
|
|
57
|
+
_scrollDirectionCache = [];
|
|
58
|
+
_scrollDirection = 0;
|
|
59
|
+
get scrollDirection() {
|
|
60
|
+
return this._scrollDirection;
|
|
61
|
+
}
|
|
62
|
+
get version() {
|
|
63
|
+
return this._version;
|
|
64
|
+
}
|
|
65
|
+
_clearScrollDirectionDebounce = debounce(() => {
|
|
66
|
+
while (this._scrollDirectionCache.length > CLEAR_SCROLL_DIRECTION_TO) {
|
|
67
|
+
this._scrollDirectionCache.shift();
|
|
68
|
+
}
|
|
69
|
+
}, 10);
|
|
70
|
+
constructor() {
|
|
71
|
+
super();
|
|
72
|
+
this.lifeCircle();
|
|
73
|
+
}
|
|
74
|
+
changesDetected() {
|
|
75
|
+
return this._version !== this._previousVersion;
|
|
76
|
+
}
|
|
77
|
+
stopLifeCircle() {
|
|
78
|
+
clearTimeout(this._lifeCircleTimeout);
|
|
79
|
+
}
|
|
80
|
+
nextTick(cb) {
|
|
81
|
+
if (this._disposed) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this._lifeCircleTimeout = setTimeout(() => {
|
|
85
|
+
cb();
|
|
86
|
+
});
|
|
87
|
+
return this._lifeCircleTimeout;
|
|
88
|
+
}
|
|
89
|
+
lifeCircle() {
|
|
90
|
+
this.fireChangeIfNeed();
|
|
91
|
+
this.lifeCircleDo();
|
|
92
|
+
}
|
|
93
|
+
lifeCircleDo() {
|
|
94
|
+
this._previousVersion = this._version;
|
|
95
|
+
this.nextTick(() => {
|
|
96
|
+
this.lifeCircle();
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
clearScrollDirectionCache() {
|
|
100
|
+
this._clearScrollDirectionDebounce.execute();
|
|
101
|
+
}
|
|
102
|
+
calcScrollDirection(v) {
|
|
103
|
+
while (this._scrollDirectionCache.length >= MAX_SCROLL_DIRECTION_POOL) {
|
|
104
|
+
this._scrollDirectionCache.shift();
|
|
105
|
+
}
|
|
106
|
+
this._scrollDirectionCache.push(v);
|
|
107
|
+
const dict = { [DIR_BACK]: 0, [DIR_NONE]: 0, [DIR_FORWARD]: 0 };
|
|
108
|
+
for (let i = 0, l = this._scrollDirectionCache.length, li = l - 1; i < l; i++) {
|
|
109
|
+
const dir = String(this._scrollDirectionCache[i]);
|
|
110
|
+
dict[dir] += 1;
|
|
111
|
+
if (i === li) {
|
|
112
|
+
for (let d in dict) {
|
|
113
|
+
if (d === String(v)) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
dict[d] -= 1;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (dict[DIR_BACK] > dict[DIR_NONE] && dict[DIR_BACK] > dict[DIR_FORWARD]) {
|
|
121
|
+
return -1;
|
|
122
|
+
}
|
|
123
|
+
else if (dict[DIR_FORWARD] > dict[DIR_BACK] && dict[DIR_FORWARD] > dict[DIR_NONE]) {
|
|
124
|
+
return 1;
|
|
125
|
+
}
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
bumpVersion() {
|
|
129
|
+
if (this.changesDetected()) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const v = this._version === Number.MAX_SAFE_INTEGER ? 0 : this._version + 1;
|
|
133
|
+
this._version = v;
|
|
134
|
+
}
|
|
135
|
+
fireChangeIfNeed() {
|
|
136
|
+
if (this.changesDetected()) {
|
|
137
|
+
this.dispatch(CACHE_BOX_CHANGE_EVENT_NAME, this.version);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
set(id, bounds) {
|
|
141
|
+
if (this._map.has(id)) {
|
|
142
|
+
const b = this._map.get(id), bb = bounds;
|
|
143
|
+
if (b.width === bb.width && b.height === bb.height) {
|
|
144
|
+
return this._map;
|
|
145
|
+
}
|
|
146
|
+
return this._map;
|
|
147
|
+
}
|
|
148
|
+
const v = this._map.set(id, bounds);
|
|
149
|
+
this.bumpVersion();
|
|
150
|
+
return v;
|
|
151
|
+
}
|
|
152
|
+
has(id) {
|
|
153
|
+
return this._map.has(id);
|
|
154
|
+
}
|
|
155
|
+
get(id) {
|
|
156
|
+
return this._map.get(id);
|
|
157
|
+
}
|
|
158
|
+
snapshot() {
|
|
159
|
+
this._snapshot = new CMap(this._map);
|
|
160
|
+
}
|
|
161
|
+
dispose() {
|
|
162
|
+
super.dispose();
|
|
163
|
+
this.stopLifeCircle();
|
|
164
|
+
this._snapshot.clear();
|
|
165
|
+
this._map.clear();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9jYWNoZU1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxNQUFNLE9BQU8sSUFBSTtJQUNMLEtBQUssR0FBZ0MsRUFBRSxDQUFDO0lBRWhELFlBQVksSUFBaUI7UUFDekIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUFNO1FBQ04sTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQU0sRUFBRSxLQUFRO1FBQ2hCLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsR0FBRyxDQUFDLEdBQU07UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxNQUFNLENBQUMsR0FBTTtRQUNULE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7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QUFDLElBQUksQ0FBQztZQUNyQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELEdBQUcsQ0FBQyxFQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVRLE9BQU87UUFDWixLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY3JvbGxEaXJlY3Rpb24gfSBmcm9tIFwiLi4vbW9kZWxzXCI7XHJcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcIi4vZGVib3VuY2VcIjtcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSBcIi4vZXZlbnRFbWl0dGVyXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgQ01hcDxLID0gc3RyaW5nLCBWID0gYW55PiB7XHJcbiAgICBwcml2YXRlIF9kaWN0OiB7IFtrOiBzdHJpbmcgfCBudW1iZXJdOiBWIH0gPSB7fTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihkaWN0PzogQ01hcDxLLCBWPikge1xyXG4gICAgICAgIGlmIChkaWN0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2RpY3QgPSB7IC4uLmRpY3QuX2RpY3QgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGtleTogSykge1xyXG4gICAgICAgIGNvbnN0IGsgPSBTdHJpbmcoa2V5KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGljdFtrXTtcclxuICAgIH1cclxuICAgIHNldChrZXk6IEssIHZhbHVlOiBWKSB7XHJcbiAgICAgICAgY29uc3QgayA9IFN0cmluZyhrZXkpO1xyXG4gICAgICAgIHRoaXMuX2RpY3Rba10gPSB2YWx1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuICAgIGhhcyhrZXk6IEspIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGljdC5oYXNPd25Qcm9wZXJ0eShTdHJpbmcoa2V5KSk7XHJcbiAgICB9XHJcbiAgICBkZWxldGUoa2V5OiBLKSB7XHJcbiAgICAgICAgY29uc3QgayA9IFN0cmluZyhrZXkpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLl9kaWN0W2tdO1xyXG4gICAgfVxyXG4gICAgY2xlYXIoKSB7XHJcbiAgICAgICAgdGhpcy5fZGljdCA9IHt9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDYWNoZU1hcDxJID0gYW55LCBCID0gYW55PiB7XHJcbiAgICBzZXQ6IChpZDogSSwgYm91bmRzOiBCKSA9PiBDTWFwPEksIEI+O1xyXG4gICAgaGFzOiAoaWQ6IEkpID0+IGJvb2xlYW47XHJcbiAgICBnZXQ6IChpZDogSSkgPT4gQiB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENBQ0hFX0JPWF9DSEFOR0VfRVZFTlRfTkFNRSA9ICdjaGFuZ2UnO1xyXG5cclxudHlwZSBDYWNoZU1hcEV2ZW50cyA9IHR5cGVvZiBDQUNIRV9CT1hfQ0hBTkdFX0VWRU5UX05BTUU7XHJcblxyXG50eXBlIE9uQ2hhbmdlRXZlbnRMaXN0ZW5lciA9ICh2ZXJzaW9uOiBudW1iZXIpID0+IHZvaWQ7XHJcblxyXG50eXBlIENhY2hlTWFwTGlzdGVuZXJzID0gT25DaGFuZ2VFdmVudExpc3RlbmVyO1xyXG5cclxuY29uc3QgTUFYX1NDUk9MTF9ESVJFQ1RJT05fUE9PTCA9IDUwLCBDTEVBUl9TQ1JPTExfRElSRUNUSU9OX1RPID0gMTAsXHJcbiAgICBESVJfQkFDSyA9ICctMScsIERJUl9OT05FID0gJzAnLCBESVJfRk9SV0FSRCA9ICcxJztcclxuXHJcbi8qKlxyXG4gKiBDYWNoZSBtYXAuXHJcbiAqIEVtaXRzIGEgY2hhbmdlIGV2ZW50IG9uIGVhY2ggbXV0YXRpb24uXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvY2FjaGVNYXAudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENhY2hlTWFwPEkgPSBzdHJpbmcgfCBudW1iZXIsIEIgPSBhbnksIEUgPSBDYWNoZU1hcEV2ZW50cywgTCA9IENhY2hlTWFwTGlzdGVuZXJzPiBleHRlbmRzIEV2ZW50RW1pdHRlcjxFLCBMPiBpbXBsZW1lbnRzIElDYWNoZU1hcCB7XHJcbiAgICBwcm90ZWN0ZWQgX21hcCA9IG5ldyBDTWFwPEksIEI+KCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF9zbmFwc2hvdCA9IG5ldyBDTWFwPEksIEI+KCk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF92ZXJzaW9uOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIHByb3RlY3RlZCBfcHJldmlvdXNWZXJzaW9uID0gdGhpcy5fdmVyc2lvbjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgX2xpZmVDaXJjbGVUaW1lb3V0OiBhbnk7XHJcblxyXG4gICAgcHJvdGVjdGVkIF9kZWx0YTogbnVtYmVyID0gMDtcclxuXHJcbiAgICBnZXQgZGVsdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbHRhO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZGVsdGFEaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbiA9IDA7XHJcbiAgICBzZXQgZGVsdGFEaXJlY3Rpb24odjogU2Nyb2xsRGlyZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5fZGVsdGFEaXJlY3Rpb24gPSB2O1xyXG5cclxuICAgICAgICB0aGlzLl9zY3JvbGxEaXJlY3Rpb24gPSB0aGlzLmNhbGNTY3JvbGxEaXJlY3Rpb24odik7XHJcbiAgICB9XHJcbiAgICBnZXQgZGVsdGFEaXJlY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbHRhRGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3Njcm9sbERpcmVjdGlvbkNhY2hlOiBBcnJheTxTY3JvbGxEaXJlY3Rpb24+ID0gW107XHJcbiAgICBwcml2YXRlIF9zY3JvbGxEaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbiA9IDA7XHJcbiAgICBnZXQgc2Nyb2xsRGlyZWN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxEaXJlY3Rpb247XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZlcnNpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfY2xlYXJTY3JvbGxEaXJlY3Rpb25EZWJvdW5jZSA9IGRlYm91bmNlKCgpID0+IHtcclxuICAgICAgICB3aGlsZSAodGhpcy5fc2Nyb2xsRGlyZWN0aW9uQ2FjaGUubGVuZ3RoID4gQ0xFQVJfU0NST0xMX0RJUkVDVElPTl9UTykge1xyXG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxEaXJlY3Rpb25DYWNoZS5zaGlmdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH0sIDEwKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMubGlmZUNpcmNsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBjaGFuZ2VzRGV0ZWN0ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb24gIT09IHRoaXMuX3ByZXZpb3VzVmVyc2lvbjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgc3RvcExpZmVDaXJjbGUoKSB7XHJcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xpZmVDaXJjbGVUaW1lb3V0KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbmV4dFRpY2soY2I6ICgpID0+IHZvaWQpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbGlmZUNpcmNsZVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2IoKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGlmZUNpcmNsZVRpbWVvdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGxpZmVDaXJjbGUoKSB7XHJcbiAgICAgICAgdGhpcy5maXJlQ2hhbmdlSWZOZWVkKCk7XHJcblxyXG4gICAgICAgIHRoaXMubGlmZUNpcmNsZURvKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGxpZmVDaXJjbGVEbygpIHtcclxuICAgICAgICB0aGlzLl9wcmV2aW91c1ZlcnNpb24gPSB0aGlzLl92ZXJzaW9uO1xyXG5cclxuICAgICAgICB0aGlzLm5leHRUaWNrKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5saWZlQ2lyY2xlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJTY3JvbGxEaXJlY3Rpb25DYWNoZSgpIHtcclxuICAgICAgICB0aGlzLl9jbGVhclNjcm9sbERpcmVjdGlvbkRlYm91bmNlLmV4ZWN1dGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbGNTY3JvbGxEaXJlY3Rpb24odjogU2Nyb2xsRGlyZWN0aW9uKTogU2Nyb2xsRGlyZWN0aW9uIHtcclxuICAgICAgICB3aGlsZSAodGhpcy5fc2Nyb2xsRGlyZWN0aW9uQ2FjaGUubGVuZ3RoID49IE1BWF9TQ1JPTExfRElSRUNUSU9OX1BPT0wpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2Nyb2xsRGlyZWN0aW9uQ2FjaGUuc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsRGlyZWN0aW9uQ2FjaGUucHVzaCh2KTtcclxuICAgICAgICBjb25zdCBkaWN0OiB7IFt4OiBzdHJpbmddOiBudW1iZXIgfSA9IHsgW0RJUl9CQUNLXTogMCwgW0RJUl9OT05FXTogMCwgW0RJUl9GT1JXQVJEXTogMCB9O1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGhpcy5fc2Nyb2xsRGlyZWN0aW9uQ2FjaGUubGVuZ3RoLCBsaSA9IGwgLSAxOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IFN0cmluZyh0aGlzLl9zY3JvbGxEaXJlY3Rpb25DYWNoZVtpXSk7XHJcbiAgICAgICAgICAgIGRpY3RbZGlyXSArPSAxO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gbGkpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgaW4gZGljdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkID09PSBTdHJpbmcodikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRpY3RbZF0gLT0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpY3RbRElSX0JBQ0tdID4gZGljdFtESVJfTk9ORV0gJiYgZGljdFtESVJfQkFDS10gPiBkaWN0W0RJUl9GT1JXQVJEXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfSBlbHNlIGlmIChkaWN0W0RJUl9GT1JXQVJEXSA+IGRpY3RbRElSX0JBQ0tdICYmIGRpY3RbRElSX0ZPUldBUkRdID4gZGljdFtESVJfTk9ORV0pIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYnVtcFZlcnNpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlc0RldGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB2ID0gdGhpcy5fdmVyc2lvbiA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgPyAwIDogdGhpcy5fdmVyc2lvbiArIDE7XHJcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IHY7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGZpcmVDaGFuZ2VJZk5lZWQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlc0RldGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChDQUNIRV9CT1hfQ0hBTkdFX0VWRU5UX05BTUUgYXMgRSwgdGhpcy52ZXJzaW9uKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0KGlkOiBJLCBib3VuZHM6IEIpOiBDTWFwPEksIEI+IHtcclxuICAgICAgICBpZiAodGhpcy5fbWFwLmhhcyhpZCkpIHtcclxuICAgICAgICAgICAgY29uc3QgYjogYW55ID0gdGhpcy5fbWFwLmdldChpZCksIGJiOiBhbnkgPSBib3VuZHM7XHJcbiAgICAgICAgICAgIGlmIChiLndpZHRoID09PSBiYi53aWR0aCAmJiBiLmhlaWdodCA9PT0gYmIuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbWFwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9tYXA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB2ID0gdGhpcy5fbWFwLnNldChpZCwgYm91bmRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5idW1wVmVyc2lvbigpO1xyXG5cclxuICAgICAgICByZXR1cm4gdjtcclxuICAgIH1cclxuXHJcbiAgICBoYXMoaWQ6IEkpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbWFwLmhhcyhpZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KGlkOiBJKTogQiB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hcC5nZXQoaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHNuYXBzaG90KCkge1xyXG4gICAgICAgIHRoaXMuX3NuYXBzaG90ID0gbmV3IENNYXAodGhpcy5fbWFwKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBkaXNwb3NlKCkge1xyXG4gICAgICAgIHN1cGVyLmRpc3Bvc2UoKTtcclxuXHJcbiAgICAgICAgdGhpcy5zdG9wTGlmZUNpcmNsZSgpO1xyXG5cclxuICAgICAgICB0aGlzLl9zbmFwc2hvdC5jbGVhcigpO1xyXG5cclxuICAgICAgICB0aGlzLl9tYXAuY2xlYXIoKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple debounce function.
|
|
3
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/debounce.ts
|
|
4
|
+
* @author Evgenii Grebennikov
|
|
5
|
+
* @email djonnyx@gmail.com
|
|
6
|
+
*/
|
|
7
|
+
export const debounce = (cb, debounceTime = 0) => {
|
|
8
|
+
let timeout;
|
|
9
|
+
const dispose = () => {
|
|
10
|
+
if (timeout !== undefined) {
|
|
11
|
+
clearTimeout(timeout);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const execute = (...args) => {
|
|
15
|
+
dispose();
|
|
16
|
+
timeout = setTimeout(() => {
|
|
17
|
+
cb(...args);
|
|
18
|
+
}, debounceTime);
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
/**
|
|
22
|
+
* Call handling method
|
|
23
|
+
*/
|
|
24
|
+
execute,
|
|
25
|
+
/**
|
|
26
|
+
* Method of destroying handlers
|
|
27
|
+
*/
|
|
28
|
+
dispose,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9kZWJvdW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQWlDLEVBQUUsZUFBdUIsQ0FBQyxFQUFFLEVBQUU7SUFDcEYsSUFBSSxPQUFZLENBQUM7SUFDakIsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQyxDQUFBO0lBQ0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLElBQWdCLEVBQUUsRUFBRTtRQUNwQyxPQUFPLEVBQUUsQ0FBQztRQUVWLE9BQU8sR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFDRixPQUFPO1FBQ0g7O1dBRUc7UUFDSCxPQUFPO1FBQ1A7O1dBRUc7UUFDSCxPQUFPO0tBQ1YsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBTaW1wbGUgZGVib3VuY2UgZnVuY3Rpb24uXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvZGVib3VuY2UudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gKGNiOiAoLi4uYXJnczogQXJyYXk8YW55PikgPT4gdm9pZCwgZGVib3VuY2VUaW1lOiBudW1iZXIgPSAwKSA9PiB7XHJcbiAgICBsZXQgdGltZW91dDogYW55O1xyXG4gICAgY29uc3QgZGlzcG9zZSA9ICgpID0+IHtcclxuICAgICAgICBpZiAodGltZW91dCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBleGVjdXRlID0gKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IHtcclxuICAgICAgICBkaXNwb3NlKCk7XHJcblxyXG4gICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2IoLi4uYXJncyk7XHJcbiAgICAgICAgfSwgZGVib3VuY2VUaW1lKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqICBDYWxsIGhhbmRsaW5nIG1ldGhvZFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGV4ZWN1dGUsXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogTWV0aG9kIG9mIGRlc3Ryb3lpbmcgaGFuZGxlcnNcclxuICAgICAgICAgKi9cclxuICAgICAgICBkaXNwb3NlLFxyXG4gICAgfTtcclxufTtcclxuIl19
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple event emitter
|
|
3
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/eventEmitter.ts
|
|
4
|
+
* @author Evgenii Grebennikov
|
|
5
|
+
* @email djonnyx@gmail.com
|
|
6
|
+
*/
|
|
7
|
+
export class EventEmitter {
|
|
8
|
+
_listeners = {};
|
|
9
|
+
_disposed = false;
|
|
10
|
+
constructor() { }
|
|
11
|
+
/**
|
|
12
|
+
* Emits the event
|
|
13
|
+
*/
|
|
14
|
+
dispatch(event, ...args) {
|
|
15
|
+
const ctx = this;
|
|
16
|
+
const listeners = this._listeners[event];
|
|
17
|
+
if (Array.isArray(listeners)) {
|
|
18
|
+
for (let i = 0, l = listeners.length; i < l; i++) {
|
|
19
|
+
const listener = listeners[i];
|
|
20
|
+
if (listener) {
|
|
21
|
+
listener.apply(ctx, args);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Emits the event async
|
|
28
|
+
*/
|
|
29
|
+
dispatchAsync(event, ...args) {
|
|
30
|
+
queueMicrotask(() => {
|
|
31
|
+
if (this._disposed) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
this.dispatch(event, ...args);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns true if the event listener is already subscribed.
|
|
39
|
+
*/
|
|
40
|
+
hasEventListener(eventName, handler) {
|
|
41
|
+
const event = eventName;
|
|
42
|
+
if (this._listeners.hasOwnProperty(event)) {
|
|
43
|
+
const listeners = this._listeners[event];
|
|
44
|
+
const index = listeners.findIndex(v => v === handler);
|
|
45
|
+
if (index > -1) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Add event listener
|
|
53
|
+
*/
|
|
54
|
+
addEventListener(eventName, handler) {
|
|
55
|
+
const event = eventName;
|
|
56
|
+
if (!this._listeners.hasOwnProperty(event)) {
|
|
57
|
+
this._listeners[event] = [];
|
|
58
|
+
}
|
|
59
|
+
this._listeners[event].push(handler);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Remove event listener
|
|
63
|
+
*/
|
|
64
|
+
removeEventListener(eventName, handler) {
|
|
65
|
+
const event = eventName;
|
|
66
|
+
if (!this._listeners.hasOwnProperty(event)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const listeners = this._listeners[event], index = listeners.findIndex(v => v === handler);
|
|
70
|
+
if (index > -1) {
|
|
71
|
+
listeners.splice(index, 1);
|
|
72
|
+
if (listeners.length === 0) {
|
|
73
|
+
delete this._listeners[event];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Remove all listeners
|
|
79
|
+
*/
|
|
80
|
+
removeAllListeners() {
|
|
81
|
+
const events = Object.keys(this._listeners);
|
|
82
|
+
while (events.length > 0) {
|
|
83
|
+
const event = events.pop();
|
|
84
|
+
if (event) {
|
|
85
|
+
const listeners = this._listeners[event];
|
|
86
|
+
if (Array.isArray(listeners)) {
|
|
87
|
+
while (listeners.length > 0) {
|
|
88
|
+
const listener = listeners.pop();
|
|
89
|
+
if (listener) {
|
|
90
|
+
this.removeEventListener(event, listener);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Method of destroying handlers
|
|
99
|
+
*/
|
|
100
|
+
dispose() {
|
|
101
|
+
this._disposed = true;
|
|
102
|
+
this.removeAllListeners();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRFbWl0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvZXZlbnRFbWl0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFDYixVQUFVLEdBRWQsRUFBRSxDQUFDO0lBRUcsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUVyQyxnQkFBZ0IsQ0FBQztJQUVqQjs7T0FFRztJQUNILFFBQVEsQ0FBQyxLQUFRLEVBQUUsR0FBRyxJQUFnQjtRQUNsQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFlLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQy9DLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDWCxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYSxDQUFDLEtBQVEsRUFBRSxHQUFHLElBQWdCO1FBQ3ZDLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDaEIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLENB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LENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUV0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBURXZlbnRIYW5kbGVyID0gKC4uLmFyZ3M6IEFycmF5PGFueT4pID0+IHZvaWQ7XHJcblxyXG4vKipcclxuICogU2ltcGxlIGV2ZW50IGVtaXR0ZXJcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9ldmVudEVtaXR0ZXIudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEV2ZW50RW1pdHRlcjxFID0gc3RyaW5nLCBIID0gVEV2ZW50SGFuZGxlcj4ge1xyXG4gICAgcHJpdmF0ZSBfbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgW2V2ZW50TmFtZTogc3RyaW5nXTogQXJyYXk8VEV2ZW50SGFuZGxlcj4sXHJcbiAgICB9ID0ge307XHJcblxyXG4gICAgcHJvdGVjdGVkIF9kaXNwb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbWl0cyB0aGUgZXZlbnRcclxuICAgICAqL1xyXG4gICAgZGlzcGF0Y2goZXZlbnQ6IEUsIC4uLmFyZ3M6IEFycmF5PGFueT4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjdHggPSB0aGlzO1xyXG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuX2xpc3RlbmVyc1tldmVudCBhcyBzdHJpbmddO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGxpc3RlbmVycykpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaXN0ZW5lcnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ZW5lciA9IGxpc3RlbmVyc1tpXTtcclxuICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLmFwcGx5KGN0eCwgYXJncyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbWl0cyB0aGUgZXZlbnQgYXN5bmNcclxuICAgICAqL1xyXG4gICAgZGlzcGF0Y2hBc3luYyhldmVudDogRSwgLi4uYXJnczogQXJyYXk8YW55Pik6IHZvaWQge1xyXG4gICAgICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChldmVudCwgLi4uYXJncyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGxpc3RlbmVyIGlzIGFscmVhZHkgc3Vic2NyaWJlZC5cclxuICAgICAqL1xyXG4gICAgaGFzRXZlbnRMaXN0ZW5lcihldmVudE5hbWU6IEUsIGhhbmRsZXI6IEgpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBldmVudCA9IGV2ZW50TmFtZSBhcyBzdHJpbmc7XHJcbiAgICAgICAgaWYgKHRoaXMuX2xpc3RlbmVycy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2ZW50XTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBsaXN0ZW5lcnMuZmluZEluZGV4KHYgPT4gdiA9PT0gaGFuZGxlcik7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCBldmVudCBsaXN0ZW5lclxyXG4gICAgICovXHJcbiAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZTogRSwgaGFuZGxlcjogSCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gZXZlbnROYW1lIGFzIHN0cmluZztcclxuICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzW2V2ZW50XSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9saXN0ZW5lcnNbZXZlbnRdLnB1c2goaGFuZGxlciBhcyBURXZlbnRIYW5kbGVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBldmVudCBsaXN0ZW5lclxyXG4gICAgICovXHJcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZTogRSwgaGFuZGxlcjogSCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gZXZlbnROYW1lIGFzIHN0cmluZztcclxuICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVycy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRdLCBpbmRleCA9IGxpc3RlbmVycy5maW5kSW5kZXgodiA9PiB2ID09PSBoYW5kbGVyKTtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChsaXN0ZW5lcnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2ZW50XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZSBhbGwgbGlzdGVuZXJzXHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUFsbExpc3RlbmVycygpIHtcclxuICAgICAgICBjb25zdCBldmVudHMgPSBPYmplY3Qua2V5cyh0aGlzLl9saXN0ZW5lcnMpO1xyXG4gICAgICAgIHdoaWxlIChldmVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudCA9IGV2ZW50cy5wb3AoKTtcclxuICAgICAgICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobGlzdGVuZXJzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChsaXN0ZW5lcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaXN0ZW5lciA9IGxpc3RlbmVycy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3RlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQgYXMgRSwgbGlzdGVuZXIgYXMgSCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2Qgb2YgZGVzdHJveWluZyBoYW5kbGVyc1xyXG4gICAgICovXHJcbiAgICBkaXNwb3NlKCkge1xyXG4gICAgICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { debounce } from "./debounce";
|
|
2
|
+
import { toggleClassName } from './toggleClassName';
|
|
3
|
+
import { ScrollEvent } from "./scrollEvent";
|
|
4
|
+
export { debounce, toggleClassName, ScrollEvent, };
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUlwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE9BQU8sRUFDSCxRQUFRLEVBQ1IsZUFBZSxFQUNmLFdBQVcsR0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIFwiLi9kZWJvdW5jZVwiO1xyXG5pbXBvcnQgeyB0b2dnbGVDbGFzc05hbWUgfSBmcm9tICcuL3RvZ2dsZUNsYXNzTmFtZSc7XHJcbmltcG9ydCB7XHJcbiAgICBJTWV0cmljcyxcclxufSBmcm9tIFwiLi90cmFja0JveFwiO1xyXG5pbXBvcnQgeyBTY3JvbGxFdmVudCB9IGZyb20gXCIuL3Njcm9sbEV2ZW50XCI7XHJcblxyXG5leHBvcnQge1xyXG4gICAgZGVib3VuY2UsXHJcbiAgICB0b2dnbGVDbGFzc05hbWUsXHJcbiAgICBTY3JvbGxFdmVudCxcclxufTtcclxuXHJcbmV4cG9ydCB0eXBlIHtcclxuICAgIElNZXRyaWNzLFxyXG59O1xyXG5cclxuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Directions } from "../enums";
|
|
2
|
+
const HORIZONTAL_ALIASES = [Directions.HORIZONTAL, 'horizontal'], VERTICAL_ALIASES = [Directions.VERTICAL, 'vertical'];
|
|
3
|
+
/**
|
|
4
|
+
* Determines the axis membership of a virtual list
|
|
5
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/isDirection.ts
|
|
6
|
+
* @author Evgenii Grebennikov
|
|
7
|
+
* @email djonnyx@gmail.com
|
|
8
|
+
*/
|
|
9
|
+
export const isDirection = (src, expected) => {
|
|
10
|
+
if (HORIZONTAL_ALIASES.includes(expected)) {
|
|
11
|
+
return HORIZONTAL_ALIASES.includes(src);
|
|
12
|
+
}
|
|
13
|
+
return VERTICAL_ALIASES.includes(src);
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNEaXJlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9pc0RpcmVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxFQUM1RCxnQkFBZ0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFekQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFjLEVBQUUsUUFBbUIsRUFBVyxFQUFFO0lBQ3hFLElBQUksa0JBQWtCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDeEMsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbiwgRGlyZWN0aW9ucyB9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5cclxuY29uc3QgSE9SSVpPTlRBTF9BTElBU0VTID0gW0RpcmVjdGlvbnMuSE9SSVpPTlRBTCwgJ2hvcml6b250YWwnXSxcclxuICAgIFZFUlRJQ0FMX0FMSUFTRVMgPSBbRGlyZWN0aW9ucy5WRVJUSUNBTCwgJ3ZlcnRpY2FsJ107XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB0aGUgYXhpcyBtZW1iZXJzaGlwIG9mIGEgdmlydHVhbCBsaXN0XHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvaXNEaXJlY3Rpb24udHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGlzRGlyZWN0aW9uID0gKHNyYzogRGlyZWN0aW9uLCBleHBlY3RlZDogRGlyZWN0aW9uKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAoSE9SSVpPTlRBTF9BTElBU0VTLmluY2x1ZGVzKGV4cGVjdGVkKSkge1xyXG4gICAgICAgIHJldHVybiBIT1JJWk9OVEFMX0FMSUFTRVMuaW5jbHVkZXMoc3JjKTtcclxuICAgIH1cclxuICAgIHJldHVybiBWRVJUSUNBTF9BTElBU0VTLmluY2x1ZGVzKHNyYyk7XHJcbn0iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scroll event.
|
|
3
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/scrollEvent.ts
|
|
4
|
+
* @author Evgenii Grebennikov
|
|
5
|
+
* @email djonnyx@gmail.com
|
|
6
|
+
*/
|
|
7
|
+
export class ScrollEvent {
|
|
8
|
+
_direction = 1;
|
|
9
|
+
get direction() { return this._direction; }
|
|
10
|
+
_scrollSize = 0;
|
|
11
|
+
get scrollSize() { return this._scrollSize; }
|
|
12
|
+
_scrollWeight = 0;
|
|
13
|
+
get scrollWeight() { return this._scrollWeight; }
|
|
14
|
+
_isVertical = true;
|
|
15
|
+
get isVertical() { return this._isVertical; }
|
|
16
|
+
_listSize = 0;
|
|
17
|
+
get listSize() { return this._listSize; }
|
|
18
|
+
_size = 0;
|
|
19
|
+
get size() { return this._size; }
|
|
20
|
+
_isStart = true;
|
|
21
|
+
get isStart() { return this._isStart; }
|
|
22
|
+
_isEnd = false;
|
|
23
|
+
get isEnd() { return this._isEnd; }
|
|
24
|
+
_delta = 0;
|
|
25
|
+
get delta() { return this._delta; }
|
|
26
|
+
_scrollDelta = 0;
|
|
27
|
+
get scrollDelta() { return this._scrollDelta; }
|
|
28
|
+
constructor(params) {
|
|
29
|
+
const { direction, isVertical, container, list, delta, scrollDelta } = params;
|
|
30
|
+
this._direction = direction;
|
|
31
|
+
this._isVertical = isVertical;
|
|
32
|
+
this._scrollSize = isVertical ? container.scrollTop : container.scrollLeft;
|
|
33
|
+
this._scrollWeight = isVertical ? container.scrollHeight : container.scrollWidth;
|
|
34
|
+
this._listSize = isVertical ? list.offsetHeight : list.offsetWidth;
|
|
35
|
+
this._size = isVertical ? container.offsetHeight : container.offsetWidth;
|
|
36
|
+
this._isEnd = (this._scrollSize + this._size) === this._scrollWeight;
|
|
37
|
+
this._delta = delta;
|
|
38
|
+
this._scrollDelta = scrollDelta;
|
|
39
|
+
this._isStart = this._scrollSize === 0;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsRXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9zY3JvbGxFdmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQTs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ1osVUFBVSxHQUFvQixDQUFDLENBQUM7SUFDeEMsSUFBSSxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVuQyxXQUFXLEdBQVcsQ0FBQyxDQUFDO0lBQ2hDLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFckMsYUFBYSxHQUFXLENBQUMsQ0FBQztJQUNsQyxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRXpDLFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDcEMsSUFBSSxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUVyQyxTQUFTLEdBQVcsQ0FBQyxDQUFDO0lBQzlCLElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFFakMsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUMxQixJQUFJLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXpCLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFDakMsSUFBSSxPQUFPLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUUvQixNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ2hDLElBQUksS0FBSyxLQUFLLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFM0IsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUMzQixJQUFJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBRTNCLFlBQVksR0FBVyxDQUFDLENBQUM7SUFDakMsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUUvQyxZQUFZLE1BQTBCO1FBQ2xDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUM5RSxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUMzRSxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUNqRixJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUN6RSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNyRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElTY3JvbGxFdmVudCwgU2Nyb2xsRGlyZWN0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xyXG5cclxuaW50ZXJmYWNlIElTY3JvbGxFdmVudFBhcmFtcyB7XHJcbiAgICBkaXJlY3Rpb246IFNjcm9sbERpcmVjdGlvbjtcclxuICAgIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XHJcbiAgICBsaXN0OiBIVE1MRWxlbWVudDtcclxuICAgIGRlbHRhOiBudW1iZXI7XHJcbiAgICBzY3JvbGxEZWx0YTogbnVtYmVyO1xyXG4gICAgaXNWZXJ0aWNhbDogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNjcm9sbCBldmVudC5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi91dGlscy9zY3JvbGxFdmVudC50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU2Nyb2xsRXZlbnQgaW1wbGVtZW50cyBJU2Nyb2xsRXZlbnQge1xyXG4gICAgcHJpdmF0ZSBfZGlyZWN0aW9uOiBTY3JvbGxEaXJlY3Rpb24gPSAxO1xyXG4gICAgZ2V0IGRpcmVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX2RpcmVjdGlvbjsgfVxyXG5cclxuICAgIHByaXZhdGUgX3Njcm9sbFNpemU6IG51bWJlciA9IDA7XHJcbiAgICBnZXQgc2Nyb2xsU2l6ZSgpIHsgcmV0dXJuIHRoaXMuX3Njcm9sbFNpemU7IH1cclxuXHJcbiAgICBwcml2YXRlIF9zY3JvbGxXZWlnaHQ6IG51bWJlciA9IDA7XHJcbiAgICBnZXQgc2Nyb2xsV2VpZ2h0KCkgeyByZXR1cm4gdGhpcy5fc2Nyb2xsV2VpZ2h0OyB9XHJcblxyXG4gICAgcHJpdmF0ZSBfaXNWZXJ0aWNhbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBnZXQgaXNWZXJ0aWNhbCgpIHsgcmV0dXJuIHRoaXMuX2lzVmVydGljYWw7IH1cclxuXHJcbiAgICBwcml2YXRlIF9saXN0U2l6ZTogbnVtYmVyID0gMDtcclxuICAgIGdldCBsaXN0U2l6ZSgpIHsgcmV0dXJuIHRoaXMuX2xpc3RTaXplOyB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc2l6ZTogbnVtYmVyID0gMDtcclxuICAgIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5fc2l6ZTsgfVxyXG5cclxuICAgIHByaXZhdGUgX2lzU3RhcnQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgZ2V0IGlzU3RhcnQoKSB7IHJldHVybiB0aGlzLl9pc1N0YXJ0OyB9XHJcblxyXG4gICAgcHJpdmF0ZSBfaXNFbmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGdldCBpc0VuZCgpIHsgcmV0dXJuIHRoaXMuX2lzRW5kOyB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZGVsdGE6IG51bWJlciA9IDA7XHJcbiAgICBnZXQgZGVsdGEoKSB7IHJldHVybiB0aGlzLl9kZWx0YTsgfVxyXG5cclxuICAgIHByaXZhdGUgX3Njcm9sbERlbHRhOiBudW1iZXIgPSAwO1xyXG4gICAgZ2V0IHNjcm9sbERlbHRhKCkgeyByZXR1cm4gdGhpcy5fc2Nyb2xsRGVsdGE7IH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwYXJhbXM6IElTY3JvbGxFdmVudFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHsgZGlyZWN0aW9uLCBpc1ZlcnRpY2FsLCBjb250YWluZXIsIGxpc3QsIGRlbHRhLCBzY3JvbGxEZWx0YSB9ID0gcGFyYW1zO1xyXG4gICAgICAgIHRoaXMuX2RpcmVjdGlvbiA9IGRpcmVjdGlvbjtcclxuICAgICAgICB0aGlzLl9pc1ZlcnRpY2FsID0gaXNWZXJ0aWNhbDtcclxuICAgICAgICB0aGlzLl9zY3JvbGxTaXplID0gaXNWZXJ0aWNhbCA/IGNvbnRhaW5lci5zY3JvbGxUb3AgOiBjb250YWluZXIuc2Nyb2xsTGVmdDtcclxuICAgICAgICB0aGlzLl9zY3JvbGxXZWlnaHQgPSBpc1ZlcnRpY2FsID8gY29udGFpbmVyLnNjcm9sbEhlaWdodCA6IGNvbnRhaW5lci5zY3JvbGxXaWR0aDtcclxuICAgICAgICB0aGlzLl9saXN0U2l6ZSA9IGlzVmVydGljYWwgPyBsaXN0Lm9mZnNldEhlaWdodCA6IGxpc3Qub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgdGhpcy5fc2l6ZSA9IGlzVmVydGljYWwgPyBjb250YWluZXIub2Zmc2V0SGVpZ2h0IDogY29udGFpbmVyLm9mZnNldFdpZHRoO1xyXG4gICAgICAgIHRoaXMuX2lzRW5kID0gKHRoaXMuX3Njcm9sbFNpemUgKyB0aGlzLl9zaXplKSA9PT0gdGhpcy5fc2Nyb2xsV2VpZ2h0O1xyXG4gICAgICAgIHRoaXMuX2RlbHRhID0gZGVsdGE7XHJcbiAgICAgICAgdGhpcy5fc2Nyb2xsRGVsdGEgPSBzY3JvbGxEZWx0YTtcclxuICAgICAgICB0aGlzLl9pc1N0YXJ0ID0gdGhpcy5fc2Nyb2xsU2l6ZSA9PT0gMDtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SnappingMethods } from "../enums";
|
|
2
|
+
const ADVANCED_PATTERNS = [SnappingMethods.ADVANCED, 'advanced'], DEFAULT_PATTERN = [SnappingMethods.NORMAL, 'normal'];
|
|
3
|
+
export const isSnappingMethodAdvenced = (method) => {
|
|
4
|
+
return ADVANCED_PATTERNS.includes(method);
|
|
5
|
+
};
|
|
6
|
+
export const isSnappingMethodDefault = (method) => {
|
|
7
|
+
return DEFAULT_PATTERN.includes(method);
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHBpbmctbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvc25hcHBpbmctbWV0aG9kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNELE1BQU0saUJBQWlCLEdBQTBCLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsRUFDbkYsZUFBZSxHQUEwQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFaEYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxNQUFzQixFQUFXLEVBQUU7SUFDeEUsT0FBTyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxNQUFzQixFQUFXLEVBQUU7SUFDdkUsT0FBTyxlQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNuYXBwaW5nTWV0aG9kLCBTbmFwcGluZ01ldGhvZHMgfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuXHJcbmNvbnN0IEFEVkFOQ0VEX1BBVFRFUk5TOiBBcnJheTxTbmFwcGluZ01ldGhvZD4gPSBbU25hcHBpbmdNZXRob2RzLkFEVkFOQ0VELCAnYWR2YW5jZWQnXSxcclxuICAgIERFRkFVTFRfUEFUVEVSTjogQXJyYXk8U25hcHBpbmdNZXRob2Q+ID0gW1NuYXBwaW5nTWV0aG9kcy5OT1JNQUwsICdub3JtYWwnXTtcclxuXHJcbmV4cG9ydCBjb25zdCBpc1NuYXBwaW5nTWV0aG9kQWR2ZW5jZWQgPSAobWV0aG9kOiBTbmFwcGluZ01ldGhvZCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgcmV0dXJuIEFEVkFOQ0VEX1BBVFRFUk5TLmluY2x1ZGVzKG1ldGhvZCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBpc1NuYXBwaW5nTWV0aG9kRGVmYXVsdCA9IChtZXRob2Q6IFNuYXBwaW5nTWV0aG9kKTogYm9vbGVhbiA9PiB7XHJcbiAgICByZXR1cm4gREVGQVVMVF9QQVRURVJOLmluY2x1ZGVzKG1ldGhvZCk7XHJcbn0iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Switch css classes
|
|
3
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/utils/toggleClassName.ts
|
|
4
|
+
* @author Evgenii Grebennikov
|
|
5
|
+
* @email djonnyx@gmail.com
|
|
6
|
+
*/
|
|
7
|
+
export const toggleClassName = (el, className, removeClassName) => {
|
|
8
|
+
if (!el.classList.contains(className)) {
|
|
9
|
+
el.classList.add(className);
|
|
10
|
+
}
|
|
11
|
+
if (removeClassName) {
|
|
12
|
+
el.classList.remove(removeClassName);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlQ2xhc3NOYW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdXRpbHMvdG9nZ2xlQ2xhc3NOYW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsRUFBZSxFQUFFLFNBQWlCLEVBQUUsZUFBd0IsRUFBRSxFQUFFO0lBQzVGLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3BDLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ2xCLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLyoqXHJcbiAqIFN3aXRjaCBjc3MgY2xhc3Nlc1xyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xOC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL3V0aWxzL3RvZ2dsZUNsYXNzTmFtZS50c1xyXG4gKiBAYXV0aG9yIEV2Z2VuaWkgR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgdG9nZ2xlQ2xhc3NOYW1lID0gKGVsOiBIVE1MRWxlbWVudCwgY2xhc3NOYW1lOiBzdHJpbmcsIHJlbW92ZUNsYXNzTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgaWYgKCFlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkge1xyXG4gICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTtcclxuICAgIH1cclxuICAgIGlmIChyZW1vdmVDbGFzc05hbWUpIHtcclxuICAgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKHJlbW92ZUNsYXNzTmFtZSk7XHJcbiAgICB9XHJcbn07XHJcbiJdfQ==
|