ng-virtual-list 18.7.13 → 18.7.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 +20 -1
- package/esm2022/lib/components/ng-virtual-list-item.component.mjs +41 -19
- package/esm2022/lib/enums/focus-alignments.mjs +14 -0
- package/esm2022/lib/enums/index.mjs +3 -2
- package/esm2022/lib/models/display-object-config.model.mjs +2 -0
- package/esm2022/lib/models/display-object-measures.model.mjs +2 -0
- package/esm2022/lib/models/index.mjs +1 -1
- package/esm2022/lib/ng-virtual-list.component.mjs +47 -7
- package/esm2022/lib/ng-virtual-list.service.mjs +6 -5
- package/esm2022/lib/types/focus-alignment.mjs +2 -0
- package/esm2022/lib/types/index.mjs +1 -1
- package/fesm2022/ng-virtual-list.mjs +102 -27
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-virtual-list-item.component.d.ts +7 -35
- package/lib/enums/focus-alignments.d.ts +12 -0
- package/lib/enums/index.d.ts +2 -1
- package/lib/models/display-object-config.model.d.ts +35 -0
- package/lib/models/display-object-measures.model.d.ts +13 -0
- package/lib/models/index.d.ts +3 -1
- package/lib/ng-virtual-list.component.d.ts +5 -1
- package/lib/ng-virtual-list.service.d.ts +4 -4
- package/lib/types/focus-alignment.d.ts +8 -0
- package/lib/types/index.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject, tap } from 'rxjs';
|
|
3
|
-
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
|
|
4
2
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
|
|
4
|
+
import { Subject, tap } from 'rxjs';
|
|
5
|
+
import { FocusAlignments } from './enums';
|
|
5
6
|
import { MethodsForSelectingTypes } from './enums/method-for-selecting-types';
|
|
6
7
|
import { DEFAULT_COLLAPSE_BY_CLICK, DEFAULT_SELECT_BY_CLICK } from './const';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
@@ -164,11 +165,11 @@ export class NgVirtualListService {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
itemToFocus;
|
|
167
|
-
focus(element) {
|
|
168
|
+
focus(element, align = FocusAlignments.CENTER) {
|
|
168
169
|
element.focus({ preventScroll: true });
|
|
169
170
|
if (element.parentElement) {
|
|
170
171
|
const pos = parseFloat(element.parentElement?.getAttribute('position') ?? '0');
|
|
171
|
-
this.itemToFocus?.(element, pos);
|
|
172
|
+
this.itemToFocus?.(element, pos, align);
|
|
172
173
|
}
|
|
173
174
|
}
|
|
174
175
|
areaFocus(id) {
|
|
@@ -190,4 +191,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
190
191
|
providedIn: 'root'
|
|
191
192
|
}]
|
|
192
193
|
}], ctorParameters: () => [] });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9uZy12aXJ0dWFsLWxpc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBTTdFLE1BQU0sT0FBTyxvQkFBb0I7SUFDdkIsZ0JBQWdCLEdBQVcsQ0FBQyxDQUFDO0lBRTdCLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBMkMsQ0FBQztJQUM3RSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVyQyxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQTZCLFNBQVMsQ0FBQyxDQUFDO0lBQ25GLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXpDLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBWSxFQUFFLENBQUMsQ0FBQztJQUM1RCxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUzQyxtQkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBMkIsQ0FBQyxDQUFDLENBQUM7SUFDL0Usa0JBQWtCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTdELElB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QW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcmFja0JveCB9IGZyb20gJy4vdXRpbHMvdHJhY2tCb3gnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL0JlaGF2aW9yU3ViamVjdCc7XHJcbmltcG9ydCB7IElkIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcclxuaW1wb3J0IHsgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzIH0gZnJvbSAnLi9lbnVtcy9tZXRob2QtZm9yLXNlbGVjdGluZy10eXBlcyc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ09MTEFQU0VfQllfQ0xJQ0ssIERFRkFVTFRfU0VMRUNUX0JZX0NMSUNLIH0gZnJvbSAnLi9jb25zdCc7XHJcbmltcG9ydCB7IElSZW5kZXJWaXJ0dWFsTGlzdENvbGxlY3Rpb24gfSBmcm9tICcuL21vZGVscy9yZW5kZXItY29sbGVjdGlvbi5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1ZpcnR1YWxMaXN0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfbmV4dENvbXBvbmVudElkOiBudW1iZXIgPSAwO1xyXG5cclxuICBwcml2YXRlIF8kaXRlbUNsaWNrID0gbmV3IFN1YmplY3Q8SVJlbmRlclZpcnR1YWxMaXN0SXRlbTxhbnk+IHwgdW5kZWZpbmVkPigpO1xyXG4gICRpdGVtQ2xpY2sgPSB0aGlzLl8kaXRlbUNsaWNrLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc2VsZWN0ZWRJZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PElkPiB8IElkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gICRzZWxlY3RlZElkcyA9IHRoaXMuXyRzZWxlY3RlZElkcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGNvbGxhcHNlZElkcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8SWQ+PihbXSk7XHJcbiAgJGNvbGxhcHNlZElkcyA9IHRoaXMuXyRjb2xsYXBzZWRJZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRtZXRob2RPZlNlbGVjdGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzPigwKTtcclxuICAkbWV0aG9kT2ZTZWxlY3RpbmcgPSB0aGlzLl8kbWV0aG9kT2ZTZWxlY3RpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHNldCBtZXRob2RPZlNlbGVjdGluZyh2OiBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMpIHtcclxuICAgIHRoaXMuXyRtZXRob2RPZlNlbGVjdGluZy5uZXh0KHYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfJGZvY3VzZWRJZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SWQgfCBudWxsPihudWxsKTtcclxuICAkZm9jdXNlZElkID0gdGhpcy5fJGZvY3VzZWRJZC5hc09ic2VydmFibGUoKTtcclxuICBnZXQgZm9jdXNlZElkKCkgeyByZXR1cm4gdGhpcy5fJGZvY3VzZWRJZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHNlbGVjdEJ5Q2xpY2s6IGJvb2xlYW4gPSBERUZBVUxUX1NFTEVDVF9CWV9DTElDSztcclxuXHJcbiAgY29sbGFwc2VCeUNsaWNrOiBib29sZWFuID0gREVGQVVMVF9DT0xMQVBTRV9CWV9DTElDSztcclxuXHJcbiAgcHJpdmF0ZSBfdHJhY2tCb3g6IFRyYWNrQm94IHwgdW5kZWZpbmVkO1xyXG5cclxuICBsaXN0RWxlbWVudDogSFRNTERpdkVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29sbGVjdGlvbjogSVJlbmRlclZpcnR1YWxMaXN0Q29sbGVjdGlvbiA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuXyRtZXRob2RPZlNlbGVjdGluZy5waXBlKFxyXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAodikge1xyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuU0VMRUNUOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGN1cnIgPSB0aGlzLl8kc2VsZWN0ZWRJZHMuZ2V0VmFsdWUoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyICE9PSAnbnVtYmVyJyAmJiB0eXBlb2YgY3VyciAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTVVMVElfU0VMRUNUOiB7XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLl8kc2VsZWN0ZWRJZHMuZ2V0VmFsdWUoKSkpIHtcclxuICAgICAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dChbXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5OT05FOlxyXG4gICAgICAgICAgZGVmYXVsdDoge1xyXG4gICAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkSWRzKGlkczogQXJyYXk8SWQ+IHwgSWQgfCB1bmRlZmluZWQpIHtcclxuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl8kc2VsZWN0ZWRJZHMuZ2V0VmFsdWUoKSkgIT09IEpTT04uc3RyaW5naWZ5KGlkcykpIHtcclxuICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoaWRzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENvbGxhcHNlZElkcyhpZHM6IEFycmF5PElkPikge1xyXG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuXyRjb2xsYXBzZWRJZHMuZ2V0VmFsdWUoKSkgIT09IEpTT04uc3RyaW5naWZ5KGlkcykpIHtcclxuICAgICAgdGhpcy5fJGNvbGxhcHNlZElkcy5uZXh0KGlkcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpdGVtQ2xpY2soZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fJGl0ZW1DbGljay5uZXh0KGRhdGEpO1xyXG4gICAgaWYgKHRoaXMuY29sbGFwc2VCeUNsaWNrKSB7XHJcbiAgICAgIHRoaXMuY29sbGFwc2UoZGF0YSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RCeUNsaWNrKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0KGRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlKCkge1xyXG4gICAgdGhpcy5fdHJhY2tCb3g/LmNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdHMgYSBsaXN0IGl0ZW1cclxuICAgKiBAcGFyYW0gZGF0YSBcclxuICAgKiBAcGFyYW0gc2VsZWN0ZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBzZWxlY3Rpb24vZGVzZWxlY3Rpb24gaXMgcGVyZm9ybWVkLlxyXG4gICAqL1xyXG4gIHNlbGVjdChkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkLCBzZWxlY3RlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5jb25maWcuc2VsZWN0YWJsZSkge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuXyRtZXRob2RPZlNlbGVjdGluZy5nZXRWYWx1ZSgpKSB7XHJcbiAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuU0VMRUNUOiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyID0gdGhpcy5fJHNlbGVjdGVkSWRzLmdldFZhbHVlKCkgYXMgKElkIHwgdW5kZWZpbmVkKTtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KGN1cnIgIT09IGRhdGE/LmlkID8gZGF0YT8uaWQgOiB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoc2VsZWN0ZWQgPyBkYXRhPy5pZCA6IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTVVMVElfU0VMRUNUOiB7XHJcbiAgICAgICAgICBjb25zdCBjdXJyID0gWy4uLih0aGlzLl8kc2VsZWN0ZWRJZHMuZ2V0VmFsdWUoKSB8fCBbXSkgYXMgQXJyYXk8SWQ+XSwgaW5kZXggPSBjdXJyLmluZGV4T2YoZGF0YS5pZCk7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgIGN1cnIuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dChjdXJyKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dChbLi4uY3VyciwgZGF0YS5pZF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoWy4uLmN1cnIsIGRhdGEuaWRdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICBjdXJyLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlIE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcy5OT05FOlxyXG4gICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICogQ29sbGFwc2UgbGlzdCBpdGVtc1xyXG4gICAgKiBAcGFyYW0gZGF0YSBcclxuICAgICogQHBhcmFtIGNvbGxhcHNlZCAtIElmIHRoZSB2YWx1ZSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIHRvZ2dsZSBtZXRob2QgaXMgZXhlY3V0ZWQsIGlmIGZhbHNlIG9yIHRydWUsIHRoZW4gdGhlIGNvbGxhcHNlL2V4cGFuZCBpcyBwZXJmb3JtZWQuXHJcbiAgICAqL1xyXG4gIGNvbGxhcHNlKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQsIGNvbGxhcHNlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5jb25maWcuc3RpY2t5ID4gMCAmJiBkYXRhLmNvbmZpZy5jb2xsYXBzYWJsZSkge1xyXG4gICAgICBjb25zdCBjdXJyID0gWy4uLih0aGlzLl8kY29sbGFwc2VkSWRzLmdldFZhbHVlKCkgfHwgW10pIGFzIEFycmF5PElkPl0sIGluZGV4ID0gY3Vyci5pbmRleE9mKGRhdGEuaWQpO1xyXG4gICAgICBpZiAoY29sbGFwc2VkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgY3Vyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5fJGNvbGxhcHNlZElkcy5uZXh0KGN1cnIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl8kY29sbGFwc2VkSWRzLm5leHQoWy4uLmN1cnIsIGRhdGEuaWRdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoY29sbGFwc2VkKSB7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgIHRoaXMuXyRjb2xsYXBzZWRJZHMubmV4dChjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fJGNvbGxhcHNlZElkcy5uZXh0KFsuLi5jdXJyLCBkYXRhLmlkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICBjdXJyLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB0aGlzLl8kY29sbGFwc2VkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuXyRjb2xsYXBzZWRJZHMubmV4dChjdXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGl0ZW1Ub0ZvY3VzOiAoKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBwb3NpdGlvbjogbnVtYmVyKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZm9jdXMoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcclxuICAgIGVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xyXG4gICAgaWYgKGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xyXG4gICAgICBjb25zdCBwb3MgPSBwYXJzZUZsb2F0KGVsZW1lbnQucGFyZW50RWxlbWVudD8uZ2V0QXR0cmlidXRlKCdwb3NpdGlvbicpID8/ICcwJyk7XHJcbiAgICAgIHRoaXMuaXRlbVRvRm9jdXM/LihlbGVtZW50LCBwb3MpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXJlYUZvY3VzKGlkOiBJZCB8IG51bGwpIHtcclxuICAgIHRoaXMuXyRmb2N1c2VkSWQubmV4dChpZCk7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplKHRyYWNrQm94OiBUcmFja0JveCkge1xyXG4gICAgdGhpcy5fdHJhY2tCb3ggPSB0cmFja0JveDtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlQ29tcG9uZW50SWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmV4dENvbXBvbmVudElkID0gdGhpcy5fbmV4dENvbXBvbmVudElkID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxyXG4gICAgICA/IDAgOiB0aGlzLl9uZXh0Q29tcG9uZW50SWQgKyAxO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctdmlydHVhbC1saXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9uZy12aXJ0dWFsLWxpc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFNN0UsTUFBTSxPQUFPLG9CQUFvQjtJQUN2QixnQkFBZ0IsR0FBVyxDQUFDLENBQUM7SUFFN0IsV0FBVyxHQUFHLElBQUksT0FBTyxFQUEyQyxDQUFDO0lBQzdFLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXJDLGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBNkIsU0FBUyxDQUFDLENBQUM7SUFDbkYsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFekMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVELGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTNDLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUEyQixDQUFDLENBQUMsQ0FBQztJQUMvRSxrQkFBa0IsR0FBRyxJQUFJ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Q0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQzt3R0E5TFUsb0JBQW9COzRHQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7NEZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzL2ludGVybmFsL0JlaGF2aW9yU3ViamVjdCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcmFja0JveCB9IGZyb20gJy4vdXRpbHMvdHJhY2tCb3gnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RJdGVtIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBJUmVuZGVyVmlydHVhbExpc3RDb2xsZWN0aW9uIH0gZnJvbSAnLi9tb2RlbHMvcmVuZGVyLWNvbGxlY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBGb2N1c0FsaWdubWVudHMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzIH0gZnJvbSAnLi9lbnVtcy9tZXRob2QtZm9yLXNlbGVjdGluZy10eXBlcyc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ09MTEFQU0VfQllfQ0xJQ0ssIERFRkFVTFRfU0VMRUNUX0JZX0NMSUNLIH0gZnJvbSAnLi9jb25zdCc7XHJcbmltcG9ydCB7IEZvY3VzQWxpZ25tZW50LCBJZCB9IGZyb20gJy4vdHlwZXMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdWaXJ0dWFsTGlzdFNlcnZpY2Uge1xyXG4gIHByaXZhdGUgX25leHRDb21wb25lbnRJZDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHJpdmF0ZSBfJGl0ZW1DbGljayA9IG5ldyBTdWJqZWN0PElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW08YW55PiB8IHVuZGVmaW5lZD4oKTtcclxuICAkaXRlbUNsaWNrID0gdGhpcy5fJGl0ZW1DbGljay5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHNlbGVjdGVkSWRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxJZD4gfCBJZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuICAkc2VsZWN0ZWRJZHMgPSB0aGlzLl8kc2VsZWN0ZWRJZHMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRjb2xsYXBzZWRJZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PElkPj4oW10pO1xyXG4gICRjb2xsYXBzZWRJZHMgPSB0aGlzLl8kY29sbGFwc2VkSWRzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kbWV0aG9kT2ZTZWxlY3RpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1ldGhvZHNGb3JTZWxlY3RpbmdUeXBlcz4oMCk7XHJcbiAgJG1ldGhvZE9mU2VsZWN0aW5nID0gdGhpcy5fJG1ldGhvZE9mU2VsZWN0aW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBzZXQgbWV0aG9kT2ZTZWxlY3RpbmcodjogTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzKSB7XHJcbiAgICB0aGlzLl8kbWV0aG9kT2ZTZWxlY3RpbmcubmV4dCh2KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgXyRmb2N1c2VkSWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElkIHwgbnVsbD4obnVsbCk7XHJcbiAgJGZvY3VzZWRJZCA9IHRoaXMuXyRmb2N1c2VkSWQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgZ2V0IGZvY3VzZWRJZCgpIHsgcmV0dXJuIHRoaXMuXyRmb2N1c2VkSWQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBzZWxlY3RCeUNsaWNrOiBib29sZWFuID0gREVGQVVMVF9TRUxFQ1RfQllfQ0xJQ0s7XHJcblxyXG4gIGNvbGxhcHNlQnlDbGljazogYm9vbGVhbiA9IERFRkFVTFRfQ09MTEFQU0VfQllfQ0xJQ0s7XHJcblxyXG4gIHByaXZhdGUgX3RyYWNrQm94OiBUcmFja0JveCB8IHVuZGVmaW5lZDtcclxuXHJcbiAgbGlzdEVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbGxlY3Rpb246IElSZW5kZXJWaXJ0dWFsTGlzdENvbGxlY3Rpb24gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl8kbWV0aG9kT2ZTZWxlY3RpbmcucGlwZShcclxuICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHYpIHtcclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLlNFTEVDVDoge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyID0gdGhpcy5fJHNlbGVjdGVkSWRzLmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3VyciAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGN1cnIgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk1VTFRJX1NFTEVDVDoge1xyXG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5fJHNlbGVjdGVkSWRzLmdldFZhbHVlKCkpKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoW10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTk9ORTpcclxuICAgICAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQodW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZElkcyhpZHM6IEFycmF5PElkPiB8IElkIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAoSlNPTi5zdHJpbmdpZnkodGhpcy5fJHNlbGVjdGVkSWRzLmdldFZhbHVlKCkpICE9PSBKU09OLnN0cmluZ2lmeShpZHMpKSB7XHJcbiAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KGlkcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDb2xsYXBzZWRJZHMoaWRzOiBBcnJheTxJZD4pIHtcclxuICAgIGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl8kY29sbGFwc2VkSWRzLmdldFZhbHVlKCkpICE9PSBKU09OLnN0cmluZ2lmeShpZHMpKSB7XHJcbiAgICAgIHRoaXMuXyRjb2xsYXBzZWRJZHMubmV4dChpZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXRlbUNsaWNrKGRhdGE6IElSZW5kZXJWaXJ0dWFsTGlzdEl0ZW0gfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuXyRpdGVtQ2xpY2submV4dChkYXRhKTtcclxuICAgIGlmICh0aGlzLmNvbGxhcHNlQnlDbGljaykge1xyXG4gICAgICB0aGlzLmNvbGxhcHNlKGRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuc2VsZWN0QnlDbGljaykge1xyXG4gICAgICB0aGlzLnNlbGVjdChkYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMuX3RyYWNrQm94Py5jaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZWxlY3RzIGEgbGlzdCBpdGVtXHJcbiAgICogQHBhcmFtIGRhdGEgXHJcbiAgICogQHBhcmFtIHNlbGVjdGVkIC0gSWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgdG9nZ2xlIG1ldGhvZCBpcyBleGVjdXRlZCwgaWYgZmFsc2Ugb3IgdHJ1ZSwgdGhlbiB0aGUgc2VsZWN0aW9uL2Rlc2VsZWN0aW9uIGlzIHBlcmZvcm1lZC5cclxuICAgKi9cclxuICBzZWxlY3QoZGF0YTogSVJlbmRlclZpcnR1YWxMaXN0SXRlbSB8IHVuZGVmaW5lZCwgc2VsZWN0ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcclxuICAgIGlmIChkYXRhICYmIGRhdGEuY29uZmlnLnNlbGVjdGFibGUpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLl8kbWV0aG9kT2ZTZWxlY3RpbmcuZ2V0VmFsdWUoKSkge1xyXG4gICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLlNFTEVDVDoge1xyXG4gICAgICAgICAgY29uc3QgY3VyciA9IHRoaXMuXyRzZWxlY3RlZElkcy5nZXRWYWx1ZSgpIGFzIChJZCB8IHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dChjdXJyICE9PSBkYXRhPy5pZCA/IGRhdGE/LmlkIDogdW5kZWZpbmVkKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KHNlbGVjdGVkID8gZGF0YT8uaWQgOiB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgTWV0aG9kc0ZvclNlbGVjdGluZ1R5cGVzLk1VTFRJX1NFTEVDVDoge1xyXG4gICAgICAgICAgY29uc3QgY3VyciA9IFsuLi4odGhpcy5fJHNlbGVjdGVkSWRzLmdldFZhbHVlKCkgfHwgW10pIGFzIEFycmF5PElkPl0sIGluZGV4ID0gY3Vyci5pbmRleE9mKGRhdGEuaWQpO1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgICAgICBjdXJyLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5fJHNlbGVjdGVkSWRzLm5leHQoWy4uLmN1cnIsIGRhdGEuaWRdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KGN1cnIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KFsuLi5jdXJyLCBkYXRhLmlkXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgY3Vyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KGN1cnIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuXyRzZWxlY3RlZElkcy5uZXh0KGN1cnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBNZXRob2RzRm9yU2VsZWN0aW5nVHlwZXMuTk9ORTpcclxuICAgICAgICBkZWZhdWx0OiB7XHJcbiAgICAgICAgICB0aGlzLl8kc2VsZWN0ZWRJZHMubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICAqIENvbGxhcHNlIGxpc3QgaXRlbXNcclxuICAgICogQHBhcmFtIGRhdGEgXHJcbiAgICAqIEBwYXJhbSBjb2xsYXBzZWQgLSBJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSB0b2dnbGUgbWV0aG9kIGlzIGV4ZWN1dGVkLCBpZiBmYWxzZSBvciB0cnVlLCB0aGVuIHRoZSBjb2xsYXBzZS9leHBhbmQgaXMgcGVyZm9ybWVkLlxyXG4gICAgKi9cclxuICBjb2xsYXBzZShkYXRhOiBJUmVuZGVyVmlydHVhbExpc3RJdGVtIHwgdW5kZWZpbmVkLCBjb2xsYXBzZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcclxuICAgIGlmIChkYXRhICYmIGRhdGEuY29uZmlnLnN0aWNreSA+IDAgJiYgZGF0YS5jb25maWcuY29sbGFwc2FibGUpIHtcclxuICAgICAgY29uc3QgY3VyciA9IFsuLi4odGhpcy5fJGNvbGxhcHNlZElkcy5nZXRWYWx1ZSgpIHx8IFtdKSBhcyBBcnJheTxJZD5dLCBpbmRleCA9IGN1cnIuaW5kZXhPZihkYXRhLmlkKTtcclxuICAgICAgaWYgKGNvbGxhcHNlZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgIGN1cnIuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuXyRjb2xsYXBzZWRJZHMubmV4dChjdXJyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5fJGNvbGxhcHNlZElkcy5uZXh0KFsuLi5jdXJyLCBkYXRhLmlkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGNvbGxhcHNlZCkge1xyXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICB0aGlzLl8kY29sbGFwc2VkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuXyRjb2xsYXBzZWRJZHMubmV4dChbLi4uY3VyciwgZGF0YS5pZF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgY3Vyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5fJGNvbGxhcHNlZElkcy5uZXh0KGN1cnIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLl8kY29sbGFwc2VkSWRzLm5leHQoY3Vycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpdGVtVG9Gb2N1czogKChlbGVtZW50OiBIVE1MRWxlbWVudCwgcG9zaXRpb246IG51bWJlciwgYWxpZ246IEZvY3VzQWxpZ25tZW50KSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZm9jdXMoZWxlbWVudDogSFRNTEVsZW1lbnQsIGFsaWduOiBGb2N1c0FsaWdubWVudCA9IEZvY3VzQWxpZ25tZW50cy5DRU5URVIpIHtcclxuICAgIGVsZW1lbnQuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xyXG4gICAgaWYgKGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xyXG4gICAgICBjb25zdCBwb3MgPSBwYXJzZUZsb2F0KGVsZW1lbnQucGFyZW50RWxlbWVudD8uZ2V0QXR0cmlidXRlKCdwb3NpdGlvbicpID8/ICcwJyk7XHJcbiAgICAgIHRoaXMuaXRlbVRvRm9jdXM/LihlbGVtZW50LCBwb3MsIGFsaWduKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFyZWFGb2N1cyhpZDogSWQgfCBudWxsKSB7XHJcbiAgICB0aGlzLl8kZm9jdXNlZElkLm5leHQoaWQpO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSh0cmFja0JveDogVHJhY2tCb3gpIHtcclxuICAgIHRoaXMuX3RyYWNrQm94ID0gdHJhY2tCb3g7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUNvbXBvbmVudElkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX25leHRDb21wb25lbnRJZCA9IHRoaXMuX25leHRDb21wb25lbnRJZCA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcclxuICAgICAgPyAwIDogdGhpcy5fbmV4dENvbXBvbmVudElkICsgMTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtYWxpZ25tZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvdHlwZXMvZm9jdXMtYWxpZ25tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c0FsaWdubWVudHMgfSBmcm9tIFwiLi4vZW51bXNcIjtcclxuXHJcbi8qKlxyXG4gKiBGb2N1cyBBbGlnbm1lbnRcclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi90eXBlcy9mb2N1cy1hbGlnbm1lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgRm9jdXNBbGlnbm1lbnQgPSBGb2N1c0FsaWdubWVudHMgfCAnbm9uZScgfCAnc3RhcnQnIHwgJ2NlbnRlcicgfCAnZW5kJztcclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi90eXBlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSWQgfSBmcm9tICcuL2lkJztcclxuaW1wb3J0IHsgSVNpemUgfSBmcm9tICcuL3NpemUnO1xyXG5pbXBvcnQgeyBJUmVjdCB9IGZyb20gJy4vcmVjdCc7XHJcbmltcG9ydCB7IEZvY3VzQWxpZ25tZW50IH0gZnJvbSAnLi9mb2N1cy1hbGlnbm1lbnQnO1xyXG5cclxuZXhwb3J0IHR5cGUge1xyXG4gICAgSWQsXHJcbiAgICBJU2l6ZSxcclxuICAgIElSZWN0LFxyXG4gICAgRm9jdXNBbGlnbm1lbnQsXHJcbn0iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, inject, ChangeDetectorRef, signal, ElementRef, Component, ChangeDetectionStrategy, viewChild, output, input, ViewContainerRef, ViewEncapsulation, ViewChild, NgModule, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
3
|
-
import { Subject, tap, fromEvent, combineLatest, map, filter, distinctUntilChanged, switchMap, of } from 'rxjs';
|
|
4
|
-
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
|
|
5
3
|
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';
|
|
5
|
+
import { Subject, tap, fromEvent, combineLatest, map, filter, distinctUntilChanged, switchMap, of } from 'rxjs';
|
|
6
6
|
import * as i1 from '@angular/common';
|
|
7
7
|
import { CommonModule } from '@angular/common';
|
|
8
8
|
|
|
@@ -82,6 +82,20 @@ var SnappingMethods;
|
|
|
82
82
|
SnappingMethods["ADVANCED"] = "advanced";
|
|
83
83
|
})(SnappingMethods || (SnappingMethods = {}));
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Focus Alignments.
|
|
87
|
+
* @link https://github.com/DjonnyX/ng-virtual-list/blob/18.x/projects/ng-virtual-list/src/lib/enums/focus-alignments.ts
|
|
88
|
+
* @author Evgenii Grebennikov
|
|
89
|
+
* @email djonnyx@gmail.com
|
|
90
|
+
*/
|
|
91
|
+
var FocusAlignments;
|
|
92
|
+
(function (FocusAlignments) {
|
|
93
|
+
FocusAlignments["NONE"] = "none";
|
|
94
|
+
FocusAlignments["START"] = "start";
|
|
95
|
+
FocusAlignments["CENTER"] = "center";
|
|
96
|
+
FocusAlignments["END"] = "end";
|
|
97
|
+
})(FocusAlignments || (FocusAlignments = {}));
|
|
98
|
+
|
|
85
99
|
const DEFAULT_ITEM_SIZE = 24;
|
|
86
100
|
const DEFAULT_BUFFER_SIZE = 2;
|
|
87
101
|
const DEFAULT_MAX_BUFFER_SIZE = 10;
|
|
@@ -327,11 +341,11 @@ class NgVirtualListService {
|
|
|
327
341
|
}
|
|
328
342
|
}
|
|
329
343
|
itemToFocus;
|
|
330
|
-
focus(element) {
|
|
344
|
+
focus(element, align = FocusAlignments.CENTER) {
|
|
331
345
|
element.focus({ preventScroll: true });
|
|
332
346
|
if (element.parentElement) {
|
|
333
347
|
const pos = parseFloat(element.parentElement?.getAttribute('position') ?? '0');
|
|
334
|
-
this.itemToFocus?.(element, pos);
|
|
348
|
+
this.itemToFocus?.(element, pos, align);
|
|
335
349
|
}
|
|
336
350
|
}
|
|
337
351
|
areaFocus(id) {
|
|
@@ -410,7 +424,7 @@ const validateFunction = (value, undefinable = false, nullable = false) => {
|
|
|
410
424
|
return (undefinable && isUndefinable(value)) || (nullable && isNullable(value)) || typeof value === 'function';
|
|
411
425
|
};
|
|
412
426
|
|
|
413
|
-
const ATTR_AREA_SELECTED = 'area-selected', TABINDEX = 'ng-vl-index', KEY_SPACE = " ", KEY_ARR_LEFT = "ArrowLeft", KEY_ARR_UP = "ArrowUp", KEY_ARR_RIGHT = "ArrowRight", KEY_ARR_DOWN = "ArrowDown", EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown';
|
|
427
|
+
const ATTR_AREA_SELECTED = 'area-selected', TABINDEX = 'ng-vl-index', POSITION = 'position', POSITION_ZERO = '0', ID = 'item-id', KEY_SPACE = " ", KEY_ARR_LEFT = "ArrowLeft", KEY_ARR_UP = "ArrowUp", KEY_ARR_RIGHT = "ArrowRight", KEY_ARR_DOWN = "ArrowDown", EVENT_FOCUS_IN = 'focusin', EVENT_FOCUS_OUT = 'focusout', EVENT_KEY_DOWN = 'keydown';
|
|
414
428
|
const getElementByIndex = (index) => {
|
|
415
429
|
return `[${TABINDEX}="${index}"]`;
|
|
416
430
|
};
|
|
@@ -431,7 +445,7 @@ class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
431
445
|
_isCollapsed = false;
|
|
432
446
|
config = signal({});
|
|
433
447
|
measures = signal(undefined);
|
|
434
|
-
|
|
448
|
+
focused = signal(false);
|
|
435
449
|
part = signal(PART_DEFAULT_ITEM);
|
|
436
450
|
regular = false;
|
|
437
451
|
data = signal(undefined);
|
|
@@ -497,21 +511,28 @@ class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
497
511
|
}
|
|
498
512
|
this._service.collapse(data, collapsed);
|
|
499
513
|
};
|
|
514
|
+
_focusHandler = () =>
|
|
515
|
+
/**
|
|
516
|
+
* Focus a list item
|
|
517
|
+
*/
|
|
518
|
+
(align = FocusAlignments.CENTER) => {
|
|
519
|
+
this.focus(align);
|
|
520
|
+
};
|
|
500
521
|
constructor() {
|
|
501
522
|
super();
|
|
502
523
|
this._id = this._service.generateComponentId();
|
|
503
524
|
this._elementRef.nativeElement.setAttribute('id', String(this._id));
|
|
504
|
-
const $data = toObservable(this.data), $
|
|
505
|
-
$
|
|
525
|
+
const $data = toObservable(this.data), $focused = toObservable(this.focused);
|
|
526
|
+
$focused.pipe(takeUntilDestroyed(), tap(v => {
|
|
506
527
|
this._service.areaFocus(v ? this._id : this._service.focusedId === this._id ? null : this._service.focusedId);
|
|
507
528
|
})).subscribe();
|
|
508
529
|
fromEvent(this.element, EVENT_FOCUS_IN).pipe(takeUntilDestroyed(), tap(e => {
|
|
509
|
-
this.
|
|
530
|
+
this.focused.set(true);
|
|
510
531
|
this.updateConfig(this._data);
|
|
511
532
|
this.updatePartStr(this._data, this._isSelected, this._isCollapsed);
|
|
512
533
|
})).subscribe(),
|
|
513
534
|
fromEvent(this.element, EVENT_FOCUS_OUT).pipe(takeUntilDestroyed(), tap(e => {
|
|
514
|
-
this.
|
|
535
|
+
this.focused.set(false);
|
|
515
536
|
this.updateConfig(this._data);
|
|
516
537
|
this.updatePartStr(this._data, this._isSelected, this._isCollapsed);
|
|
517
538
|
})).subscribe(),
|
|
@@ -614,23 +635,34 @@ class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
614
635
|
}
|
|
615
636
|
}
|
|
616
637
|
}
|
|
638
|
+
focus(align = FocusAlignments.CENTER) {
|
|
639
|
+
if (this._service.listElement) {
|
|
640
|
+
const tabIndex = this._data?.config?.tabIndex ?? 0;
|
|
641
|
+
let index = tabIndex;
|
|
642
|
+
const el = this._service.listElement.querySelector(getElementByIndex(index));
|
|
643
|
+
if (el) {
|
|
644
|
+
this._service.focus(el, align);
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
}
|
|
617
648
|
updateMeasures(v) {
|
|
618
649
|
this.measures.set(v?.measures ? { ...v.measures } : undefined);
|
|
619
650
|
}
|
|
620
651
|
updateConfig(v) {
|
|
621
652
|
this.config.set({
|
|
622
|
-
...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed,
|
|
623
|
-
collapse: this._collapseHandler(v), select: this._selectHandler(v)
|
|
653
|
+
...v?.config || {}, selected: this._isSelected, collapsed: this._isCollapsed, focused: this.focused(),
|
|
654
|
+
collapse: this._collapseHandler(v), select: this._selectHandler(v), focus: this._focusHandler(),
|
|
624
655
|
});
|
|
625
656
|
}
|
|
626
657
|
update() {
|
|
627
658
|
const data = this._data, regular = this.regular, length = this._regularLength;
|
|
628
659
|
if (data) {
|
|
660
|
+
this._elementRef.nativeElement.setAttribute(ID, `${data.id}`);
|
|
629
661
|
const styles = this._elementRef.nativeElement.style;
|
|
630
662
|
styles.zIndex = data.config.zIndex;
|
|
631
663
|
if (data.config.snapped) {
|
|
632
|
-
this._elementRef.nativeElement.setAttribute(
|
|
633
|
-
styles.transform = data.config.sticky === 1 ? ZEROS_TRANSLATE_3D : `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX}
|
|
664
|
+
this._elementRef.nativeElement.setAttribute(POSITION, data.config.sticky === 1 ? POSITION_ZERO : `${data.config.isVertical ? data.measures.y : data.measures.x}`);
|
|
665
|
+
styles.transform = data.config.sticky === 1 ? ZEROS_TRANSLATE_3D : `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX}, ${POSITION_ZERO})`;
|
|
634
666
|
;
|
|
635
667
|
if (!data.config.isSnappingMethodAdvanced) {
|
|
636
668
|
styles.position = POSITION_STICKY;
|
|
@@ -639,17 +671,20 @@ class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
639
671
|
else {
|
|
640
672
|
styles.position = POSITION_ABSOLUTE;
|
|
641
673
|
if (regular) {
|
|
642
|
-
this._elementRef.nativeElement.setAttribute(
|
|
643
|
-
styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}
|
|
674
|
+
this._elementRef.nativeElement.setAttribute(POSITION, POSITION_ZERO);
|
|
675
|
+
styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.delta}${PX}, ${data.config.isVertical ? data.measures.delta : 0}${PX}, ${POSITION_ZERO})`;
|
|
644
676
|
}
|
|
645
677
|
else {
|
|
646
|
-
this._elementRef.nativeElement.setAttribute(
|
|
647
|
-
styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX}
|
|
678
|
+
this._elementRef.nativeElement.setAttribute(POSITION, `${data.config.isVertical ? data.measures.y : data.measures.x}`);
|
|
679
|
+
styles.transform = `${TRANSLATE_3D}(${data.config.isVertical ? 0 : data.measures.x}${PX}, ${data.config.isVertical ? data.measures.y : 0}${PX}, ${POSITION_ZERO})`;
|
|
648
680
|
}
|
|
649
681
|
}
|
|
650
682
|
styles.height = data.config.isVertical ? data.config.dynamic ? SIZE_AUTO : `${data.measures.height}${PX}` : regular ? length : SIZE_100_PERSENT;
|
|
651
683
|
styles.width = data.config.isVertical ? regular ? length : SIZE_100_PERSENT : data.config.dynamic ? SIZE_AUTO : `${data.measures.width}${PX}`;
|
|
652
684
|
}
|
|
685
|
+
else {
|
|
686
|
+
this._elementRef.nativeElement.removeAttribute(ID);
|
|
687
|
+
}
|
|
653
688
|
this._cdr.markForCheck();
|
|
654
689
|
}
|
|
655
690
|
updatePartStr(v, isSelected, isCollapsed) {
|
|
@@ -671,7 +706,7 @@ class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
671
706
|
if (v ? v.config.new : false) {
|
|
672
707
|
part += PART_ITEM_NEW;
|
|
673
708
|
}
|
|
674
|
-
if (this.
|
|
709
|
+
if (this.focused()) {
|
|
675
710
|
part += PART_ITEM_FOCUSED;
|
|
676
711
|
}
|
|
677
712
|
this.part.set(part);
|
|
@@ -718,14 +753,14 @@ class NgVirtualListItemComponent extends BaseVirtualListItemComponent {
|
|
|
718
753
|
this._service.itemClick(this._data);
|
|
719
754
|
}
|
|
720
755
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgVirtualListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
721
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NgVirtualListItemComponent, selector: "ng-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "@if (data(); as item) {\r\n <div #listItem [part]=\"part()\" class=\"ngvl-item__container\" [attr.ng-vl-index]=\"item.config.tabIndex || -1\" tabindex=\"0\" [ngClass]=\"{'snapped': item.config.snapped,\r\n 'snapped-out': item.config.snappedOut, 'focus':
|
|
756
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NgVirtualListItemComponent, selector: "ng-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "@if (data(); as item) {\r\n <div #listItem [part]=\"part()\" class=\"ngvl-item__container\" [attr.ng-vl-index]=\"item.config.tabIndex || -1\" tabindex=\"0\" [ngClass]=\"{'snapped': item.config.snapped,\r\n 'snapped-out': item.config.snappedOut, 'focus': focused()}\" (click)=\"onClickHandler()\">\r\n @if (itemRenderer(); as renderer) {\r\n <ng-container [ngTemplateOutlet]=\"renderer\"\r\n [ngTemplateOutletContext]=\"{data: item.data || {}, measures: measures(), config: config()}\" />\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
722
757
|
}
|
|
723
758
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NgVirtualListItemComponent, decorators: [{
|
|
724
759
|
type: Component,
|
|
725
760
|
args: [{ selector: 'ng-virtual-list-item', standalone: false, host: {
|
|
726
761
|
'class': 'ngvl__item',
|
|
727
762
|
'role': 'listitem',
|
|
728
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (data(); as item) {\r\n <div #listItem [part]=\"part()\" class=\"ngvl-item__container\" [attr.ng-vl-index]=\"item.config.tabIndex || -1\" tabindex=\"0\" [ngClass]=\"{'snapped': item.config.snapped,\r\n 'snapped-out': item.config.snappedOut, 'focus':
|
|
763
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (data(); as item) {\r\n <div #listItem [part]=\"part()\" class=\"ngvl-item__container\" [attr.ng-vl-index]=\"item.config.tabIndex || -1\" tabindex=\"0\" [ngClass]=\"{'snapped': item.config.snapped,\r\n 'snapped-out': item.config.snappedOut, 'focus': focused()}\" (click)=\"onClickHandler()\">\r\n @if (itemRenderer(); as renderer) {\r\n <ng-container [ngTemplateOutlet]=\"renderer\"\r\n [ngTemplateOutletContext]=\"{data: item.data || {}, measures: measures(), config: config()}\" />\r\n }\r\n </div>\r\n}\r\n", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden}.ngvl-item__container{margin:0;padding:0;overflow:hidden;background-color:#fff;width:inherit;height:inherit;box-sizing:border-box}\n"] }]
|
|
729
764
|
}], ctorParameters: () => [] });
|
|
730
765
|
|
|
731
766
|
/**
|
|
@@ -2165,7 +2200,7 @@ const isCollectionMode = (src, expected) => {
|
|
|
2165
2200
|
return NORMAL_ALIASES.includes(src);
|
|
2166
2201
|
};
|
|
2167
2202
|
|
|
2168
|
-
const ROLE_LIST = 'list', ROLE_LIST_BOX = 'listbox';
|
|
2203
|
+
const ROLE_LIST = 'list', ROLE_LIST_BOX = 'listbox', ITEM_ID = 'item-id', ITEM_CONTAINER = 'ngvl-item__container';
|
|
2169
2204
|
const validateScrollIteration = (value) => {
|
|
2170
2205
|
return Number.isNaN(value) || (value < 0) ? 0 : value > MAX_SCROLL_TO_ITERATIONS ? MAX_SCROLL_TO_ITERATIONS : value;
|
|
2171
2206
|
}, validateId = (id) => {
|
|
@@ -2183,6 +2218,11 @@ const validateScrollIteration = (value) => {
|
|
|
2183
2218
|
if (!valid) {
|
|
2184
2219
|
throw Error('The "iteration" parameter must be of type `number`.');
|
|
2185
2220
|
}
|
|
2221
|
+
}, validateFocusAlignment = (align) => {
|
|
2222
|
+
const valid = validateString(align) && (align === 'none' || align === 'start' || align === 'center' || align === 'end');
|
|
2223
|
+
if (!valid) {
|
|
2224
|
+
throw Error('The "align" parameter must have the value `none`, `start`, `center` or `end`.');
|
|
2225
|
+
}
|
|
2186
2226
|
};
|
|
2187
2227
|
/**
|
|
2188
2228
|
* Virtual list component.
|
|
@@ -2647,12 +2687,33 @@ class NgVirtualListComponent {
|
|
|
2647
2687
|
this._scrollSize.set(actualScrollSize);
|
|
2648
2688
|
}
|
|
2649
2689
|
};
|
|
2650
|
-
itemToFocus = (element, position) => {
|
|
2690
|
+
itemToFocus = (element, position, align = FocusAlignments.CENTER) => {
|
|
2651
2691
|
const container = this._container()?.nativeElement;
|
|
2652
2692
|
if (container) {
|
|
2653
|
-
const { width, height } = this._bounds(), { width: elementWidth, height: elementHeight } = element.getBoundingClientRect(), isVertical = this._isVertical
|
|
2654
|
-
|
|
2655
|
-
|
|
2693
|
+
const { width, height } = this._bounds(), { width: elementWidth, height: elementHeight } = element.getBoundingClientRect(), isVertical = this._isVertical;
|
|
2694
|
+
let pos = Number.NaN;
|
|
2695
|
+
switch (align) {
|
|
2696
|
+
case FocusAlignments.START: {
|
|
2697
|
+
pos = isVertical ? position : position;
|
|
2698
|
+
break;
|
|
2699
|
+
}
|
|
2700
|
+
case FocusAlignments.CENTER: {
|
|
2701
|
+
pos = isVertical ? position - (height - elementHeight) * .5 : position - (width - elementWidth) * .5;
|
|
2702
|
+
break;
|
|
2703
|
+
}
|
|
2704
|
+
case FocusAlignments.END: {
|
|
2705
|
+
pos = isVertical ? position - (height - elementHeight) : position - (width - elementWidth);
|
|
2706
|
+
break;
|
|
2707
|
+
}
|
|
2708
|
+
case FocusAlignments.NONE:
|
|
2709
|
+
default: {
|
|
2710
|
+
break;
|
|
2711
|
+
}
|
|
2712
|
+
}
|
|
2713
|
+
if (!Number.isNaN(pos)) {
|
|
2714
|
+
const params = { [this._isVertical ? TOP_PROP_NAME : LEFT_PROP_NAME]: pos, behavior: 'instant' };
|
|
2715
|
+
container.scrollTo(params);
|
|
2716
|
+
}
|
|
2656
2717
|
}
|
|
2657
2718
|
};
|
|
2658
2719
|
_elementRef = inject((ElementRef));
|
|
@@ -2978,6 +3039,20 @@ class NgVirtualListComponent {
|
|
|
2978
3039
|
validateId(id);
|
|
2979
3040
|
return this._trackBox.getItemBounds(id);
|
|
2980
3041
|
}
|
|
3042
|
+
/**
|
|
3043
|
+
* Focus an list item by a given id.
|
|
3044
|
+
*/
|
|
3045
|
+
focus(id, align = FocusAlignments.NONE) {
|
|
3046
|
+
validateId(id);
|
|
3047
|
+
validateFocusAlignment(align);
|
|
3048
|
+
const el = this._list()?.nativeElement.querySelector(`[${ITEM_ID}="${id}"]`);
|
|
3049
|
+
if (el) {
|
|
3050
|
+
const focusedEl = el.querySelector(`.${ITEM_CONTAINER}`);
|
|
3051
|
+
if (focusedEl) {
|
|
3052
|
+
this._service.focus(focusedEl, align);
|
|
3053
|
+
}
|
|
3054
|
+
}
|
|
3055
|
+
}
|
|
2981
3056
|
/**
|
|
2982
3057
|
* The method scrolls the list to the element with the given id and returns the value of the scrolled area.
|
|
2983
3058
|
* Behavior accepts the values "auto", "instant" and "smooth".
|
|
@@ -3177,5 +3252,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3177
3252
|
* Generated bundle index. Do not edit.
|
|
3178
3253
|
*/
|
|
3179
3254
|
|
|
3180
|
-
export { CollectionModes, Directions, MethodsForSelecting, NgVirtualListComponent, NgVirtualListItemComponent, NgVirtualListModule, ScrollEvent, SnappingMethods, debounce, toggleClassName };
|
|
3255
|
+
export { CollectionModes, Directions, FocusAlignments, MethodsForSelecting, NgVirtualListComponent, NgVirtualListItemComponent, NgVirtualListModule, ScrollEvent, SnappingMethods, debounce, toggleClassName };
|
|
3181
3256
|
//# sourceMappingURL=ng-virtual-list.mjs.map
|