@junte/ui
Version:
Quality Angular UI components kit
60 lines • 7.85 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { ViewportScroller } from '@angular/common';
import { Component, HostBinding } from '@angular/core';
import { UI } from '../../../core/enums/ui';
let LpRewindComponent = class LpRewindComponent {
constructor(scrollService) {
this.scrollService = scrollService;
this.host = 'jnt-lp-rewind-host';
this.ui = UI;
}
scroll(target, time = 200) {
const speed = 20;
let current = this.scrollService.getScrollPosition()[1];
let step = (Math.abs(target - current) * speed) / time;
step = step < 1 ? 1 : step;
step = target > current ? step : -step;
this.interval = setInterval(() => {
let next = current + step;
if ((step > 0 && next >= target) || (step < 0 && next <= target)) {
next = target;
clearInterval(this.interval);
this.interval = null;
}
current = next;
this.scrollService.scrollToPosition([0, next]);
}, speed);
}
up() {
const height = document.documentElement.clientHeight;
const current = this.scrollService.getScrollPosition()[1];
const target = (Math.ceil(current / height) - 1) * height;
if (target >= 0 && target !== current && !this.interval) {
this.scroll(target);
}
}
down() {
const height = document.documentElement.clientHeight;
const current = this.scrollService.getScrollPosition()[1];
const target = (Math.floor(current / height) + 1) * height;
if (target < document.documentElement.offsetHeight && target !== current && !this.interval) {
this.scroll(target);
}
}
};
LpRewindComponent.ctorParameters = () => [
{ type: ViewportScroller }
];
__decorate([
HostBinding('attr.host'),
__metadata("design:type", Object)
], LpRewindComponent.prototype, "host", void 0);
LpRewindComponent = __decorate([
Component({
selector: 'jnt-lp-rewind',
template: "<jnt-stack child-of=\"jnt-lp-rewind-host\" >\n <jnt-button child-of=\"jnt-lp-rewind-host\" [icon]=\"ui.icons.arrowUp\" [size]=\"ui.size.tiny\" (click)=\"up()\"></jnt-button>\n <jnt-button child-of=\"jnt-lp-rewind-host\" [icon]=\"ui.icons.arrowDown\" [size]=\"ui.size.tiny\" (click)=\"down()\"></jnt-button>\n</jnt-stack>"
}),
__metadata("design:paramtypes", [ViewportScroller])
], LpRewindComponent);
export { LpRewindComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHAtcmV3aW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BqdW50ZS91aS8iLCJzb3VyY2VzIjpbImxpYi9sYXlvdXQvbHAvcmV3aW5kL2xwLXJld2luZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQU01QyxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQU81QixZQUFvQixhQUErQjtRQUEvQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFMaEIsU0FBSSxHQUFHLG9CQUFvQixDQUFDO1FBRS9ELE9BQUUsR0FBRyxFQUFFLENBQUM7SUFJUixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsR0FBRztRQUV2QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3ZELElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2QyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLElBQUksQ0FBQztZQUUxQixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRTtnQkFDaEUsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDZCxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzthQUN0QjtZQUVELE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELEVBQUU7UUFDQSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDMUQsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO1FBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMzRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztDQUNGLENBQUE7O1lBMUNvQyxnQkFBZ0I7O0FBTHpCO0lBQXpCLFdBQVcsQ0FBQyxXQUFXLENBQUM7OytDQUFzQztBQUZwRCxpQkFBaUI7SUFKN0IsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGVBQWU7UUFDekIsa1ZBQTRDO0tBQzdDLENBQUM7cUNBUW1DLGdCQUFnQjtHQVB4QyxpQkFBaUIsQ0FpRDdCO1NBakRZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpZXdwb3J0U2Nyb2xsZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVUkgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW1zL3VpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnam50LWxwLXJld2luZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9scC1yZXdpbmQuZW5jYXBzdWxhdGVkLmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIExwUmV3aW5kQ29tcG9uZW50IHtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaG9zdCcpIHJlYWRvbmx5IGhvc3QgPSAnam50LWxwLXJld2luZC1ob3N0JztcblxuICB1aSA9IFVJO1xuICBpbnRlcnZhbDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2Nyb2xsU2VydmljZTogVmlld3BvcnRTY3JvbGxlcikge1xuICB9XG5cbiAgc2Nyb2xsKHRhcmdldCwgdGltZSA9IDIwMCkge1xuXG4gICAgY29uc3Qgc3BlZWQgPSAyMDtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuc2Nyb2xsU2VydmljZS5nZXRTY3JvbGxQb3NpdGlvbigpWzFdO1xuICAgIGxldCBzdGVwID0gKE1hdGguYWJzKHRhcmdldCAtIGN1cnJlbnQpICogc3BlZWQpIC8gdGltZTtcbiAgICBzdGVwID0gc3RlcCA8IDEgPyAxIDogc3RlcDtcbiAgICBzdGVwID0gdGFyZ2V0ID4gY3VycmVudCA/IHN0ZXAgOiAtc3RlcDtcblxuICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBsZXQgbmV4dCA9IGN1cnJlbnQgKyBzdGVwO1xuXG4gICAgICBpZiAoKHN0ZXAgPiAwICYmIG5leHQgPj0gdGFyZ2V0KSB8fCAoc3RlcCA8IDAgJiYgbmV4dCA8PSB0YXJnZXQpKSB7XG4gICAgICAgIG5leHQgPSB0YXJnZXQ7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50ID0gbmV4dDtcbiAgICAgIHRoaXMuc2Nyb2xsU2VydmljZS5zY3JvbGxUb1Bvc2l0aW9uKFswLCBuZXh0XSk7XG4gICAgfSwgc3BlZWQpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgY29uc3QgaGVpZ2h0ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zY3JvbGxTZXJ2aWNlLmdldFNjcm9sbFBvc2l0aW9uKClbMV07XG4gICAgY29uc3QgdGFyZ2V0ID0gKE1hdGguY2VpbChjdXJyZW50IC8gaGVpZ2h0KSAtIDEpICogaGVpZ2h0O1xuICAgIGlmICh0YXJnZXQgPj0gMCAmJiB0YXJnZXQgIT09IGN1cnJlbnQgJiYgIXRoaXMuaW50ZXJ2YWwpIHtcbiAgICAgIHRoaXMuc2Nyb2xsKHRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgZG93bigpIHtcbiAgICBjb25zdCBoZWlnaHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnNjcm9sbFNlcnZpY2UuZ2V0U2Nyb2xsUG9zaXRpb24oKVsxXTtcbiAgICBjb25zdCB0YXJnZXQgPSAoTWF0aC5mbG9vcihjdXJyZW50IC8gaGVpZ2h0KSArIDEpICogaGVpZ2h0O1xuICAgIGlmICh0YXJnZXQgPCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0ICYmIHRhcmdldCAhPT0gY3VycmVudCAmJiAhdGhpcy5pbnRlcnZhbCkge1xuICAgICAgdGhpcy5zY3JvbGwodGFyZ2V0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==