@ciri/ngx-carousel
Version:
A simple angular carousel component.
148 lines • 10.7 kB
JavaScript
/**
* @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';
var CarouselItemComponent = /** @class */ (function () {
function CarouselItemComponent(elRef, cdr, sanitizer, parent // 之所以不声明具体类型是因为会警告循环引用,虽然它并未发生
) {
this.elRef = elRef;
this.cdr = cdr;
this.sanitizer = sanitizer;
this.parent = parent;
this.rendered = false;
this.destroy$ = new Subject();
}
Object.defineProperty(CarouselItemComponent.prototype, "isLazyRender", {
// 这种方式不兼容 ie11,废弃掉此方案
// @HostBinding('style')
// get style() {
// return this.sanitizer.bypassSecurityTrustStyle(`
// width: ${this.parent.width}px;
// `)
// }
get:
// 这种方式不兼容 ie11,废弃掉此方案
// @HostBinding('style')
// get style() {
// return this.sanitizer.bypassSecurityTrustStyle(`
// width: ${this.parent.width}px;
// `)
// }
/**
* @return {?}
*/
function () {
return !!this.lazyContent;
},
enumerable: true,
configurable: true
});
Object.defineProperty(CarouselItemComponent.prototype, "shouldRender", {
get: /**
* @return {?}
*/
function () {
return !this.isLazyRender || this.rendered;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
CarouselItemComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () { };
/**
* @return {?}
*/
CarouselItemComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
var _this = this;
var _a = (/** @type {?} */ (this.parent)), active$ = _a.active$, cache = _a.cache, offset = _a.lazyRenderOffset;
active$.pipe(takeUntil(this.destroy$)).subscribe((/**
* @param {?} index
* @return {?}
*/
function (index) {
_this.rendered =
(cache && _this.rendered) || inRange(_this.index, index - offset, index + offset);
_this.cdr.markForCheck();
}));
};
/**
* @return {?}
*/
CarouselItemComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
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 = function () { return [
{ type: ElementRef },
{ type: ChangeDetectorRef },
{ type: DomSanitizer },
{ type: undefined, decorators: [{ type: Inject, args: [CAROUSEL,] }] }
]; };
CarouselItemComponent.propDecorators = {
lazyContent: [{ type: ContentChild, args: [LazyRenderDirective, { static: false },] }]
};
return CarouselItemComponent;
}());
export { CarouselItemComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY2lyaS9uZ3gtY2Fyb3VzZWwvIiwic291cmNlcyI6WyJsaWIvY2Fyb3VzZWwtaXRlbS9jYXJvdXNlbC1pdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUVWLE1BQU0sRUFHTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRy9DO0lBa0NFLCtCQUNTLEtBQWlCLEVBQ2hCLEdBQXNCLEVBQ3RCLFNBQXVCLEVBQ0wsTUFBVyxDQUFDLCtCQUErQjs7UUFIOUQsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ0wsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQXhCdkMsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQWtCUixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQTtJQU9sQyxDQUFDO0lBZkosc0JBQUksK0NBQVk7UUFSaEIsc0JBQXNCO1FBQ3RCLHdCQUF3QjtRQUN4QixnQkFBZ0I7UUFDaEIscURBQXFEO1FBQ3JELHFDQUFxQztRQUNyQyxPQUFPO1FBQ1AsSUFBSTs7Ozs7Ozs7Ozs7O1FBRUo7WUFDRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFBO1FBQzNCLENBQUM7OztPQUFBO0lBRUQsc0JBQUksK0NBQVk7Ozs7UUFBaEI7WUFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQzVDLENBQUM7OztPQUFBOzs7O0lBV0Qsd0NBQVE7OztJQUFSLGNBQVksQ0FBQzs7OztJQUViLCtDQUFlOzs7SUFBZjtRQUFBLGlCQVFDO1FBUE8sSUFBQSxxQ0FBK0UsRUFBN0Usb0JBQU8sRUFBRSxnQkFBSyxFQUFFLDRCQUE2RDtRQUVyRixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTOzs7O1FBQUMsVUFBQSxLQUFLO1lBQ3BELEtBQUksQ0FBQyxRQUFRO2dCQUNYLENBQUMsS0FBSyxJQUFJLEtBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQTtZQUNqRixLQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3pCLENBQUMsRUFBQyxDQUFBO0lBQ0osQ0FBQzs7OztJQUVELDJDQUFXOzs7SUFBWDtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtJQUMxQixDQUFDOztnQkF4REYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLDJKQUE2QztvQkFFN0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0osNEJBQTRCLEVBQUUsTUFBTTtxQkFDckM7O2lCQUNGOzs7O2dCQXZCQyxVQUFVO2dCQUhWLGlCQUFpQjtnQkFVVixZQUFZO2dEQTZDaEIsTUFBTSxTQUFDLFFBQVE7Ozs4QkEzQmpCLFlBQVksU0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0lBOEN0RCw0QkFBQztDQUFBLEFBekRELElBeURDO1NBL0NZLHFCQUFxQjs7O0lBQ2hDLDRDQUFzRjs7SUFFdEYsc0NBQWE7O0lBQ2IseUNBQWdCOzs7OztJQWtCaEIseUNBQXFDOztJQUduQyxzQ0FBd0I7Ozs7O0lBQ3hCLG9DQUE4Qjs7Ozs7SUFDOUIsMENBQStCOzs7OztJQUMvQix1Q0FBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgTGF6eVJlbmRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL2xhenktcmVuZGVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IENBUk9VU0VMLCBpblJhbmdlIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBDYXJvdXNlbENvbXBvbmVudCB9IGZyb20gJy4uL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudCdcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWNhcm91c2VsLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nhcm91c2VsLWl0ZW0uY29tcG9uZW50Lmxlc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm5neC1jYXJvdXNlbF9faXRlbV0nOiBgdHJ1ZWBcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbEl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBDb250ZW50Q2hpbGQoTGF6eVJlbmRlckRpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIGxhenlDb250ZW50OiBMYXp5UmVuZGVyRGlyZWN0aXZlXG5cbiAgaW5kZXg6IG51bWJlclxuICByZW5kZXJlZCA9IGZhbHNlXG5cbiAgLy8g6L+Z56eN5pa55byP5LiN5YW85a65IGllMTHvvIzlup/lvIPmjonmraTmlrnmoYhcbiAgLy8gQEhvc3RCaW5kaW5nKCdzdHlsZScpXG4gIC8vIGdldCBzdHlsZSgpIHtcbiAgLy8gICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKGBcbiAgLy8gICAgIHdpZHRoOiAke3RoaXMucGFyZW50LndpZHRofXB4O1xuICAvLyAgIGApXG4gIC8vIH1cblxuICBnZXQgaXNMYXp5UmVuZGVyKCkge1xuICAgIHJldHVybiAhIXRoaXMubGF6eUNvbnRlbnRcbiAgfVxuXG4gIGdldCBzaG91bGRSZW5kZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTGF6eVJlbmRlciB8fCB0aGlzLnJlbmRlcmVkXG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8YW55PigpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIEBJbmplY3QoQ0FST1VTRUwpIHByaXZhdGUgcGFyZW50OiBhbnkgLy8g5LmL5omA5Lul5LiN5aOw5piO5YW35L2T57G75Z6L5piv5Zug5Li65Lya6K2m5ZGK5b6q546v5byV55So77yM6Jm954S25a6D5bm25pyq5Y+R55SfXG4gICkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IHsgYWN0aXZlJCwgY2FjaGUsIGxhenlSZW5kZXJPZmZzZXQ6IG9mZnNldCB9ID0gdGhpcy5wYXJlbnQgYXMgQ2Fyb3VzZWxDb21wb25lbnRcblxuICAgIGFjdGl2ZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVkID1cbiAgICAgICAgKGNhY2hlICYmIHRoaXMucmVuZGVyZWQpIHx8IGluUmFuZ2UodGhpcy5pbmRleCwgaW5kZXggLSBvZmZzZXQsIGluZGV4ICsgb2Zmc2V0KVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKClcbiAgICB9KVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KClcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKClcbiAgfVxufVxuIl19