UNPKG

@ciri/ngx-carousel

Version:
126 lines 9.52 kB
/** * @fileoverview added by tsickle * Generated from: lib/carousel-item/carousel-item.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, Inject, ViewEncapsulation } from '@angular/core'; import { DomSanitizer } from '@angular/platform-browser'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { LazyRenderDirective } from '../lazy-render.directive'; import { CAROUSEL, inRange } from '../../utils'; export class CarouselItemComponent { /** * @param {?} elRef * @param {?} cdr * @param {?} sanitizer * @param {?} parent */ constructor(elRef, cdr, sanitizer, parent // 之所以不声明具体类型是因为会警告循环引用,虽然它并未发生 ) { this.elRef = elRef; this.cdr = cdr; this.sanitizer = sanitizer; this.parent = parent; this.rendered = false; this.destroy$ = new Subject(); } // 这种方式不兼容 ie11,废弃掉此方案 // @HostBinding('style') // get style() { // return this.sanitizer.bypassSecurityTrustStyle(` // width: ${this.parent.width}px; // `) // } /** * @return {?} */ get isLazyRender() { return !!this.lazyContent; } /** * @return {?} */ get shouldRender() { return !this.isLazyRender || this.rendered; } /** * @return {?} */ ngOnInit() { } /** * @return {?} */ ngAfterViewInit() { const { active$, cache, lazyRenderOffset: offset } = (/** @type {?} */ (this.parent)); active$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} index * @return {?} */ index => { this.rendered = (cache && this.rendered) || inRange(this.index, index - offset, index + offset); this.cdr.markForCheck(); })); } /** * @return {?} */ ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } } CarouselItemComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-carousel-item', template: "<ng-container *ngIf=\"shouldRender\" [ngTemplateOutlet]=\"lazyContent && lazyContent.content\">\n <ng-content></ng-content>\n</ng-container>\n", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.ngx-carousel__item]': `true` }, styles: [".ngx-carousel__item{display:inline-block;vertical-align:top}.ngx-carousel__item.pre-mirror-node{position:absolute;left:0;transform:translateX(-100%)}.ngx-carousel__item.post-mirror-node{position:absolute;right:0;transform:translateX(100%)}"] }] } ]; /** @nocollapse */ CarouselItemComponent.ctorParameters = () => [ { type: ElementRef }, { type: ChangeDetectorRef }, { type: DomSanitizer }, { type: undefined, decorators: [{ type: Inject, args: [CAROUSEL,] }] } ]; CarouselItemComponent.propDecorators = { lazyContent: [{ type: ContentChild, args: [LazyRenderDirective, { static: false },] }] }; if (false) { /** @type {?} */ CarouselItemComponent.prototype.lazyContent; /** @type {?} */ CarouselItemComponent.prototype.index; /** @type {?} */ CarouselItemComponent.prototype.rendered; /** * @type {?} * @private */ CarouselItemComponent.prototype.destroy$; /** @type {?} */ CarouselItemComponent.prototype.elRef; /** * @type {?} * @private */ CarouselItemComponent.prototype.cdr; /** * @type {?} * @private */ CarouselItemComponent.prototype.sanitizer; /** * @type {?} * @private */ CarouselItemComponent.prototype.parent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2lyaS9uZ3gtY2Fyb3VzZWwvIiwic291cmNlcyI6WyJsaWIvY2Fyb3VzZWwtaXRlbS9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLE1BQU0sRUFHTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBYS9DLE1BQU0sT0FBTyxxQkFBcUI7Ozs7Ozs7SUF3QmhDLFlBQ1MsS0FBaUIsRUFDaEIsR0FBc0IsRUFDdEIsU0FBdUIsRUFDTCxNQUFXLENBQUMsK0JBQStCOztRQUg5RCxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2hCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDTCxXQUFNLEdBQU4sTUFBTSxDQUFLO1FBeEJ2QyxhQUFRLEdBQUcsS0FBSyxDQUFBO1FBa0JSLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBTyxDQUFBO0lBT2xDLENBQUM7Ozs7Ozs7Ozs7O0lBZkosSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQTtJQUMzQixDQUFDOzs7O0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUM1QyxDQUFDOzs7O0lBV0QsUUFBUSxLQUFJLENBQUM7Ozs7SUFFYixlQUFlO2NBQ1AsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxHQUFHLG1CQUFBLElBQUksQ0FBQyxNQUFNLEVBQXFCO1FBRXJGLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7Ozs7UUFBQyxLQUFLLENBQUMsRUFBRTtZQUN2RCxJQUFJLENBQUMsUUFBUTtnQkFDWCxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUE7WUFDakYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6QixDQUFDLEVBQUMsQ0FBQTtJQUNKLENBQUM7Ozs7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQzFCLENBQUM7OztZQXhERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtnQkFDN0IsMkpBQTZDO2dCQUU3QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLElBQUksRUFBRTtvQkFDSiw0QkFBNEIsRUFBRSxNQUFNO2lCQUNyQzs7YUFDRjs7OztZQXZCQyxVQUFVO1lBSFYsaUJBQWlCO1lBVVYsWUFBWTs0Q0E2Q2hCLE1BQU0sU0FBQyxRQUFROzs7MEJBM0JqQixZQUFZLFNBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzs7O0lBQXBELDRDQUFzRjs7SUFFdEYsc0NBQWE7O0lBQ2IseUNBQWdCOzs7OztJQWtCaEIseUNBQXFDOztJQUduQyxzQ0FBd0I7Ozs7O0lBQ3hCLG9DQUE4Qjs7Ozs7SUFDOUIsMENBQStCOzs7OztJQUMvQix1Q0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTGF6eVJlbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2xhenktcmVuZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IENBUk9VU0VMLCBpblJhbmdlIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4uL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWNhcm91c2VsLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhcm91c2VsLWl0ZW0uY29tcG9uZW50Lmxlc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm5neC1jYXJvdXNlbF9faXRlbV0nOiBgdHJ1ZWBcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoTGF6eVJlbmRlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIGxhenlDb250ZW50OiBMYXp5UmVuZGVyRGlyZWN0aXZlXG5cbiAgaW5kZXg6IG51bWJlclxuICByZW5kZXJlZCA9IGZhbHNlXG5cbiAgLy8g6L+Z56eN5pa55byP5LiN5YW85a65IGllMTHvvIzlup/lvIPmjonmraTmlrnmoYhcbiAgLy8gQEhvc3RCaW5kaW5nKCdzdHlsZScpXG4gIC8vIGdldCBzdHlsZSgpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBcbiAgLy8gICAgIHdpZHRoOiAke3RoaXMucGFyZW50LndpZHRofXB4O1xuICAvLyAgIGApXG4gIC8vIH1cblxuICBnZXQgaXNMYXp5UmVuZGVyKCkge1xuICAgIHJldHVybiAhIXRoaXMubGF6eUNvbnRlbnRcbiAgfVxuXG4gIGdldCBzaG91bGRSZW5kZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTGF6eVJlbmRlciB8fCB0aGlzLnJlbmRlcmVkXG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8YW55PigpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIEBJbmplY3QoQ0FST1VTRUwpIHByaXZhdGUgcGFyZW50OiBhbnkgLy8g5LmL5omA5Lul5LiN5aOw5piO5YW35L2T57G75Z6L5piv5Zug5Li65Lya6K2m5ZGK5b6q546v5byV55So77yM6Jm954S25a6D5bm25pyq5Y+R55SfXG4gICkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHsgYWN0aXZlJCwgY2FjaGUsIGxhenlSZW5kZXJPZmZzZXQ6IG9mZnNldCB9ID0gdGhpcy5wYXJlbnQgYXMgQ2Fyb3VzZWxDb21wb25lbnRcblxuICAgIGFjdGl2ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVkID1cbiAgICAgICAgKGNhY2hlICYmIHRoaXMucmVuZGVyZWQpIHx8IGluUmFuZ2UodGhpcy5pbmRleCwgaW5kZXggLSBvZmZzZXQsIGluZGV4ICsgb2Zmc2V0KVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KClcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKClcbiAgfVxufVxuIl19