ngx-flip-flip
Version:
Angular Flip Flip - Angular full page scrolling components with no dependencies
40 lines • 7.74 kB
JavaScript
import { Injectable } from '@angular/core';
import { fromEvent, merge } from 'rxjs';
import { filter, throttleTime, map, share, pairwise } from 'rxjs/operators';
import { NgxFlipFlipSlidesService } from './slides.service';
import { Direction } from '../models/direction.enum';
import { KeyboardEnum } from '../models/keyboard.enum';
import * as i0 from "@angular/core";
import * as i1 from "./slides.service";
export class NgxFlipFlipEventsService {
constructor(slidesService) {
this.slidesService = slidesService;
}
onResize$() {
return fromEvent(window, 'resize');
}
onSlideChange$() {
return merge(this.onWheel$(), this.onKeyPress$(), this.onScroll$())
.pipe(throttleTime(this.fitToSectionDelay), filter(direction => this.filterOnScroll(direction)), share());
}
onWheel$() {
return fromEvent(window, 'wheel', { passive: true }).pipe(map((e) => e.deltaY < 0 ? Direction.Up : Direction.Down));
}
onKeyPress$() {
return fromEvent(window, 'keydown').pipe(filter(() => this.isArrowNavigationActive), filter((e) => e.key === KeyboardEnum.ArrowUp || e.key === KeyboardEnum.ArrowDown), map((e) => e.key === KeyboardEnum.ArrowUp ? Direction.Up : Direction.Down));
}
onScroll$() {
return fromEvent(window, 'scroll').pipe(map((e) => window.pageYOffset), pairwise(), map(([y1, y2]) => y2 < y1 ? Direction.Up : Direction.Down));
}
filterOnScroll(direction) {
return direction === Direction.Up
? !this.slidesService.isTheFirstSlide()
: !this.slidesService.isTheLastSlide();
}
}
/** @nocollapse */ /** @nocollapse */ NgxFlipFlipEventsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxFlipFlipEventsService, deps: [{ token: i1.NgxFlipFlipSlidesService }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ /** @nocollapse */ NgxFlipFlipEventsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxFlipFlipEventsService });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: NgxFlipFlipEventsService, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.NgxFlipFlipSlidesService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZmxpcC1mbGlwL3NyYy9saWIvc2VydmljZXMvZXZlbnRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQUd2RCxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DLFlBQ1UsYUFBdUM7UUFBdkMsa0JBQWEsR0FBYixhQUFhLENBQTBCO0lBQzlDLENBQUM7SUFFSixTQUFTO1FBQ1AsT0FBTyxTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDaEUsSUFBSSxDQUNILFlBQVksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFDcEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUNuRCxLQUFLLEVBQUUsQ0FDUixDQUFDO0lBQ04sQ0FBQztJQUVPLFFBQVE7UUFDZCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN2RCxHQUFHLENBQUMsQ0FBQyxDQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ3JFLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN0QyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFDaEcsR0FBRyxDQUFDLENBQUMsQ0FBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQzFGLENBQUM7SUFDSixDQUFDO0lBRU8sU0FBUztRQUNmLE9BQU8sU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ3JDLEdBQUcsQ0FBQyxDQUFDLENBQWEsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUMxQyxRQUFRLEVBQUUsRUFDVixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBYSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFvQjtRQUN6QyxPQUFPLFNBQVMsS0FBSyxTQUFTLENBQUMsRUFBRTtZQUMvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsRUFBRTtZQUN2QyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzNDLENBQUM7OzJKQS9DVSx3QkFBd0I7K0pBQXhCLHdCQUF3QjsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbUV2ZW50LCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0aHJvdHRsZVRpbWUsIG1hcCwgc2hhcmUsIHBhaXJ3aXNlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTmd4RmxpcEZsaXBTbGlkZXNTZXJ2aWNlIH0gZnJvbSAnLi9zbGlkZXMuc2VydmljZSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvZGlyZWN0aW9uLmVudW0nO1xuaW1wb3J0IHsgS2V5Ym9hcmRFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL2tleWJvYXJkLmVudW0nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmd4RmxpcEZsaXBFdmVudHNTZXJ2aWNlIHtcbiAgZml0VG9TZWN0aW9uRGVsYXk6IG51bWJlcjtcbiAgaXNBcnJvd05hdmlnYXRpb25BY3RpdmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzbGlkZXNTZXJ2aWNlOiBOZ3hGbGlwRmxpcFNsaWRlc1NlcnZpY2VcbiAgKSB7fVxuXG4gIG9uUmVzaXplJCgpOiBPYnNlcnZhYmxlPEV2ZW50PiB7XG4gICAgcmV0dXJuIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKTtcbiAgfVxuXG4gIG9uU2xpZGVDaGFuZ2UkKCk6IE9ic2VydmFibGU8RGlyZWN0aW9uPiB7XG4gICAgcmV0dXJuIG1lcmdlKHRoaXMub25XaGVlbCQoKSwgdGhpcy5vbktleVByZXNzJCgpLCB0aGlzLm9uU2Nyb2xsJCgpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRocm90dGxlVGltZSh0aGlzLmZpdFRvU2VjdGlvbkRlbGF5KSxcbiAgICAgICAgZmlsdGVyKGRpcmVjdGlvbiA9PiB0aGlzLmZpbHRlck9uU2Nyb2xsKGRpcmVjdGlvbikpLFxuICAgICAgICBzaGFyZSgpXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbldoZWVsJCgpOiBPYnNlcnZhYmxlPERpcmVjdGlvbj4ge1xuICAgIHJldHVybiBmcm9tRXZlbnQod2luZG93LCAnd2hlZWwnLCB7IHBhc3NpdmU6IHRydWUgfSkucGlwZShcbiAgICAgIG1hcCgoZTogV2hlZWxFdmVudCkgPT4gZS5kZWx0YVkgPCAwID8gRGlyZWN0aW9uLlVwIDogRGlyZWN0aW9uLkRvd24pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25LZXlQcmVzcyQoKTogT2JzZXJ2YWJsZTxEaXJlY3Rpb24+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHdpbmRvdywgJ2tleWRvd24nKS5waXBlKFxuICAgICAgZmlsdGVyKCgpID0+IHRoaXMuaXNBcnJvd05hdmlnYXRpb25BY3RpdmUpLFxuICAgICAgZmlsdGVyKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleSA9PT0gS2V5Ym9hcmRFbnVtLkFycm93VXAgfHwgZS5rZXkgPT09IEtleWJvYXJkRW51bS5BcnJvd0Rvd24pLFxuICAgICAgbWFwKChlOiBLZXlib2FyZEV2ZW50KSA9PiBlLmtleSA9PT0gS2V5Ym9hcmRFbnVtLkFycm93VXAgPyBEaXJlY3Rpb24uVXAgOiBEaXJlY3Rpb24uRG93bilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNjcm9sbCQoKTogT2JzZXJ2YWJsZTxEaXJlY3Rpb24+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50KHdpbmRvdywgJ3Njcm9sbCcpLnBpcGUoXG4gICAgICBtYXAoKGU6IFRvdWNoRXZlbnQpID0+IHdpbmRvdy5wYWdlWU9mZnNldCksXG4gICAgICBwYWlyd2lzZSgpLFxuICAgICAgbWFwKChbeTEsIHkyXSk6IERpcmVjdGlvbiA9PiB5MiA8IHkxID8gRGlyZWN0aW9uLlVwIDogRGlyZWN0aW9uLkRvd24pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyT25TY3JvbGwoZGlyZWN0aW9uOiBEaXJlY3Rpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gZGlyZWN0aW9uID09PSBEaXJlY3Rpb24uVXBcbiAgICAgID8gIXRoaXMuc2xpZGVzU2VydmljZS5pc1RoZUZpcnN0U2xpZGUoKVxuICAgICAgOiAhdGhpcy5zbGlkZXNTZXJ2aWNlLmlzVGhlTGFzdFNsaWRlKCk7XG4gIH1cbn1cbiJdfQ==