ngx-free-fullpage
Version:
ngx-free-fullpage is a free-for-profit angular library that gives you all the tools you need to implement a fullpage scroll effect. This library hasn't been developed in order to substitute the current ngx-fullpage, this library is an alternative for thos
46 lines • 7.19 kB
JavaScript
import { __decorate } from "tslib";
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
let NgxFullpageService = class NgxFullpageService {
constructor() {
this.section = 0;
this.scrollHeight = 0;
this.goNext = () => (this.scroll(1));
this.goPrev = () => (this.scroll(-1));
this.goTo = (section) => (this.scroll(section - this.section));
this.adjustSection = (section) => this.setNumberInRange(section, 0, this.sectionsNumber - 1);
}
addWrapper(wrapper, section) {
if (this.wrapper)
throw new Error('There is already a wrapper defined');
this.wrapper = wrapper;
if (section > 0)
this.goTo(section);
}
scroll(direction) {
this.sectionsNumber = (this.wrapper.nativeElement.scrollHeight / this.wrapper.nativeElement.offsetHeight);
this.scrollHeight += direction * this.wrapper.nativeElement.offsetHeight;
this.scrollHeight = this.adjustScroll(this.scrollHeight);
this.wrapper.nativeElement.scroll({ top: this.scrollHeight });
this.section = this.adjustSection(Math.round(this.scrollHeight / this.wrapper.nativeElement.offsetHeight));
}
goLast() {
this.sectionsNumber = this.sectionsNumber || (this.wrapper.nativeElement.scrollHeight / this.wrapper.nativeElement.offsetHeight);
this.goTo(this.sectionsNumber - 1);
}
adjustScroll(scroll) {
let maxScroll = (this.sectionsNumber - 1) * this.wrapper.nativeElement.offsetHeight;
return this.setNumberInRange(scroll, 0, maxScroll);
}
setNumberInRange(n, min, max) {
return Math.min(Math.max(n, min), max);
}
};
NgxFullpageService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgxFullpageService_Factory() { return new NgxFullpageService(); }, token: NgxFullpageService, providedIn: "root" });
NgxFullpageService = __decorate([
Injectable({
providedIn: 'root'
})
], NgxFullpageService);
export { NgxFullpageService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZ1bGxwYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtZnJlZS1mdWxscGFnZS8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtZnVsbHBhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLGVBQWUsQ0FBQzs7QUFLdkQsSUFBYSxrQkFBa0IsR0FBL0IsTUFBYSxrQkFBa0I7SUFVN0I7UUFMQSxZQUFPLEdBQVksQ0FBQyxDQUFDO1FBRXJCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBbUJqQixXQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEMsV0FBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakMsU0FBSSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBT2xFLGtCQUFhLEdBQUcsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBM0JqRixDQUFDO0lBRWpCLFVBQVUsQ0FBQyxPQUF3QixFQUFFLE9BQWU7UUFDbEQsSUFBSSxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBRyxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQWlCO1FBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLFlBQVksSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDO1FBQ3pFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBUUQsTUFBTTtRQUNKLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUlELFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUM7UUFDcEYsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBR08sZ0JBQWdCLENBQUMsQ0FBVSxFQUFFLEdBQVksRUFBRSxHQUFZO1FBQzdELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBRUYsQ0FBQTs7QUFqRFksa0JBQWtCO0lBSDlCLFVBQVUsQ0FBQztRQUNWLFVBQVUsRUFBRSxNQUFNO0tBQ25CLENBQUM7R0FDVyxrQkFBa0IsQ0FpRDlCO1NBakRZLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmd4RnVsbHBhZ2VTZXJ2aWNlIHtcblxuICB3cmFwcGVyIDogRWxlbWVudFJlZjtcbiAgc2VjdGlvbnNOdW1iZXIgOiBudW1iZXI7XG5cbiAgc2VjdGlvbiA6IG51bWJlciA9IDA7XG5cbiAgc2Nyb2xsSGVpZ2h0ID0gMDtcblxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgYWRkV3JhcHBlcih3cmFwcGVyOiBFbGVtZW50UmVmPGFueT4sIHNlY3Rpb246IG51bWJlcikge1xuICAgIGlmICh0aGlzLndyYXBwZXIpIHRocm93IG5ldyBFcnJvcignVGhlcmUgaXMgYWxyZWFkeSBhIHdyYXBwZXIgZGVmaW5lZCcpXG4gICAgdGhpcy53cmFwcGVyID0gd3JhcHBlcjtcbiAgICBpZiAoc2VjdGlvbiA+IDApIHRoaXMuZ29UbyhzZWN0aW9uKTtcbiAgfVxuXG4gIHNjcm9sbChkaXJlY3Rpb246IG51bWJlcikge1xuICAgIHRoaXMuc2VjdGlvbnNOdW1iZXIgPSAodGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0IC8gdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcbiAgICB0aGlzLnNjcm9sbEhlaWdodCArPSBkaXJlY3Rpb24gKiB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgdGhpcy5zY3JvbGxIZWlnaHQgPSB0aGlzLmFkanVzdFNjcm9sbCh0aGlzLnNjcm9sbEhlaWdodCk7XG4gICAgdGhpcy53cmFwcGVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsKHt0b3A6IHRoaXMuc2Nyb2xsSGVpZ2h0fSk7XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5hZGp1c3RTZWN0aW9uKE1hdGgucm91bmQodGhpcy5zY3JvbGxIZWlnaHQgLyB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpKTtcbiAgfVxuXG4gIGdvTmV4dCA9ICgpID0+ICh0aGlzLnNjcm9sbCgxKSk7XG5cbiAgZ29QcmV2ID0gKCkgPT4gKHRoaXMuc2Nyb2xsKC0xKSk7XG5cbiAgZ29UbyA9IChzZWN0aW9uOiBudW1iZXIpID0+ICh0aGlzLnNjcm9sbChzZWN0aW9uIC0gdGhpcy5zZWN0aW9uKSk7XG5cbiAgZ29MYXN0KCkge1xuICAgIHRoaXMuc2VjdGlvbnNOdW1iZXIgPSB0aGlzLnNlY3Rpb25zTnVtYmVyIHx8ICh0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLyB0aGlzLndyYXBwZXIubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpO1xuICAgIHRoaXMuZ29Ubyh0aGlzLnNlY3Rpb25zTnVtYmVyIC0gMSk7XG4gIH1cblxuICBhZGp1c3RTZWN0aW9uID0gKHNlY3Rpb24gOiBudW1iZXIpID0+IHRoaXMuc2V0TnVtYmVySW5SYW5nZShzZWN0aW9uLCAwLCB0aGlzLnNlY3Rpb25zTnVtYmVyIC0gMSk7XG4gIFxuICBhZGp1c3RTY3JvbGwoc2Nyb2xsOiBudW1iZXIpIHtcbiAgICBsZXQgbWF4U2Nyb2xsID0gKHRoaXMuc2VjdGlvbnNOdW1iZXIgLSAxKSAqIHRoaXMud3JhcHBlci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICByZXR1cm4gdGhpcy5zZXROdW1iZXJJblJhbmdlKHNjcm9sbCwgMCwgbWF4U2Nyb2xsKTtcbiAgfVxuICBcbiAgXG4gIHByaXZhdGUgc2V0TnVtYmVySW5SYW5nZShuIDogbnVtYmVyLCBtaW4gOiBudW1iZXIsIG1heCA6IG51bWJlcikge1xuICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChuLCBtaW4pLCBtYXgpO1xuICB9XG5cbn1cbiJdfQ==