UNPKG

ornamentum

Version:
117 lines 8.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, ElementRef, NgZone, Input } from '@angular/core'; import { fromEvent, Subject } from 'rxjs'; import { map, pairwise } from 'rxjs/operators'; /** * Scroll position directive. * Track current scroll position of target element. */ var ScrollPositionDirective = /** @class */ (function () { function ScrollPositionDirective(el, zone) { this.el = el; this.zone = zone; } /** * After component initialize lifecycle event handler. */ /** * After component initialize lifecycle event handler. * @return {?} */ ScrollPositionDirective.prototype.ngAfterViewInit = /** * After component initialize lifecycle event handler. * @return {?} */ function () { var _this = this; this.zone.runOutsideAngular((/** * @return {?} */ function () { _this.scrollEventSubscription = fromEvent(_this.el.nativeElement, 'scroll') .pipe(map((/** * @return {?} */ function () { return { scrollLeft: _this.el.nativeElement.scrollLeft, scrollTop: _this.el.nativeElement.scrollTop, scrollHeight: _this.el.nativeElement.scrollHeight, scrollWidth: _this.el.nativeElement.scrollWidth, clientHeight: _this.el.nativeElement.clientHeight, clientWidth: _this.el.nativeElement.clientWidth, }; })), pairwise(), map((/** * @param {?} pair * @return {?} */ function (pair) { var _a = tslib_1.__read(pair, 2), previous = _a[0], current = _a[1]; return tslib_1.__assign({}, current, { isHorizontal: previous.scrollLeft !== current.scrollLeft, isVertical: previous.scrollTop !== current.scrollTop }); }))) .subscribe((/** * @param {?} pos * @return {?} */ function (pos) { _this.ngScrollPosition.next(pos); })); })); }; /** * Component destroy lifecycle event handler. */ /** * Component destroy lifecycle event handler. * @return {?} */ ScrollPositionDirective.prototype.ngOnDestroy = /** * Component destroy lifecycle event handler. * @return {?} */ function () { if (this.scrollEventSubscription) { this.scrollEventSubscription.unsubscribe(); } this.ngScrollPosition.complete(); }; ScrollPositionDirective.decorators = [ { type: Directive, args: [{ selector: '[ngScrollPosition]' },] } ]; /** @nocollapse */ ScrollPositionDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: NgZone } ]; }; ScrollPositionDirective.propDecorators = { ngScrollPosition: [{ type: Input }] }; return ScrollPositionDirective; }()); export { ScrollPositionDirective }; if (false) { /** * @type {?} * @private */ ScrollPositionDirective.prototype.scrollEventSubscription; /** @type {?} */ ScrollPositionDirective.prototype.ngScrollPosition; /** * @type {?} * @private */ ScrollPositionDirective.prototype.el; /** * @type {?} * @private */ ScrollPositionDirective.prototype.zone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXBvc2l0aW9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL29ybmFtZW50dW0vIiwic291cmNlcyI6WyJkYXRhLXRhYmxlL2RpcmVjdGl2ZXMvc2Nyb2xsLXBvc2l0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFpQixNQUFNLEVBQWEsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQVEvQztJQVNFLGlDQUFvQixFQUFjLEVBQVUsSUFBWTtRQUFwQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBUTtJQUFHLENBQUM7SUFFNUQ7O09BRUc7Ozs7O0lBQ0ksaURBQWU7Ozs7SUFBdEI7UUFBQSxpQkE2QkM7UUE1QkMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUI7OztRQUFDO1lBQzFCLEtBQUksQ0FBQyx1QkFBdUIsR0FBRyxTQUFTLENBQUMsS0FBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO2lCQUN0RSxJQUFJLENBQ0gsR0FBRzs7O1lBQUM7Z0JBQ0YsT0FBTztvQkFDTCxVQUFVLEVBQUUsS0FBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVTtvQkFDNUMsU0FBUyxFQUFFLEtBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFNBQVM7b0JBQzFDLFlBQVksRUFBRSxLQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxZQUFZO29CQUNoRCxXQUFXLEVBQUUsS0FBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVztvQkFDOUMsWUFBWSxFQUFFLEtBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVk7b0JBQ2hELFdBQVcsRUFBRSxLQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXO2lCQUMvQyxDQUFDO1lBQ0osQ0FBQyxFQUFDLEVBQ0YsUUFBUSxFQUFFLEVBQ1YsR0FBRzs7OztZQUFDLFVBQUMsSUFBNEI7Z0JBQ3pCLElBQUEsNEJBQTRCLEVBQTFCLGdCQUFRLEVBQUUsZUFBZ0I7Z0JBRWxDLDRCQUNLLE9BQU8sSUFDVixZQUFZLEVBQUUsUUFBUSxDQUFDLFVBQVUsS0FBSyxPQUFPLENBQUMsVUFBVSxFQUN4RCxVQUFVLEVBQUUsUUFBUSxDQUFDLFNBQVMsS0FBSyxPQUFPLENBQUMsU0FBUyxJQUNwRDtZQUNKLENBQUMsRUFBQyxDQUNIO2lCQUNBLFNBQVM7Ozs7WUFBQyxVQUFDLEdBQXlCO2dCQUNuQyxLQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xDLENBQUMsRUFBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ0ksNkNBQVc7Ozs7SUFBbEI7UUFDRSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUNoQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7Z0JBdERGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO2lCQUMvQjs7OztnQkFibUIsVUFBVTtnQkFBaUIsTUFBTTs7O21DQWlCbEQsS0FBSzs7SUFpRFIsOEJBQUM7Q0FBQSxBQXZERCxJQXVEQztTQXBEWSx1QkFBdUI7Ozs7OztJQUNsQywwREFBOEM7O0lBRTlDLG1EQUN1RDs7Ozs7SUFFM0MscUNBQXNCOzs7OztJQUFFLHVDQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgTmdab25lLCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHBhaXJ3aXNlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBEYXRhVGFibGVTY3JvbGxQb2ludCB9IGZyb20gJy4uL21vZGVscy9kYXRhLXRhYmxlLXNjcm9sbC1wb2ludC5tb2RlbCc7XG5cbi8qKlxuICogU2Nyb2xsIHBvc2l0aW9uIGRpcmVjdGl2ZS5cbiAqIFRyYWNrIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRhcmdldCBlbGVtZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmdTY3JvbGxQb3NpdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbFBvc2l0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzY3JvbGxFdmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBuZ1Njcm9sbFBvc2l0aW9uOiBTdWJqZWN0PERhdGFUYWJsZVNjcm9sbFBvaW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge31cblxuICAvKipcbiAgICogQWZ0ZXIgY29tcG9uZW50IGluaXRpYWxpemUgbGlmZWN5Y2xlIGV2ZW50IGhhbmRsZXIuXG4gICAqL1xuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50KHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3Njcm9sbCcpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgICAgc2Nyb2xsVG9wOiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgICAgICAgICBzY3JvbGxIZWlnaHQ6IHRoaXMuZWwubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgICAgIHNjcm9sbFdpZHRoOiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGgsXG4gICAgICAgICAgICAgIGNsaWVudEhlaWdodDogdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsaWVudEhlaWdodCxcbiAgICAgICAgICAgICAgY2xpZW50V2lkdGg6IHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcGFpcndpc2UoKSxcbiAgICAgICAgICBtYXAoKHBhaXI6IERhdGFUYWJsZVNjcm9sbFBvaW50W10pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IFsgcHJldmlvdXMsIGN1cnJlbnQgXSA9IHBhaXI7XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgICAgICAgIGlzSG9yaXpvbnRhbDogcHJldmlvdXMuc2Nyb2xsTGVmdCAhPT0gY3VycmVudC5zY3JvbGxMZWZ0LFxuICAgICAgICAgICAgICBpc1ZlcnRpY2FsOiBwcmV2aW91cy5zY3JvbGxUb3AgIT09IGN1cnJlbnQuc2Nyb2xsVG9wXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgocG9zOiBEYXRhVGFibGVTY3JvbGxQb2ludCkgPT4ge1xuICAgICAgICAgIHRoaXMubmdTY3JvbGxQb3NpdGlvbi5uZXh0KHBvcyk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBkZXN0cm95IGxpZmVjeWNsZSBldmVudCBoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNjcm9sbEV2ZW50U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5uZ1Njcm9sbFBvc2l0aW9uLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==