UNPKG

@ng-bootstrap/ng-bootstrap

Version:
1 lines 37.6 kB
{"version":3,"file":"ng-bootstrap-ng-bootstrap-carousel.mjs","sources":["../../../src/carousel/carousel-config.ts","../../../src/carousel/carousel-transition.ts","../../../src/carousel/carousel.ts","../../../src/carousel/carousel.module.ts","../../../src/carousel/ng-bootstrap-ng-bootstrap-carousel.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { NgbConfig } from '@ng-bootstrap/ng-bootstrap/config';\n\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\n@Injectable({ providedIn: 'root' })\nexport class NgbCarouselConfig {\n\tprivate _ngbConfig = inject(NgbConfig);\n\tprivate _animation: boolean;\n\n\tinterval = 5000;\n\twrap = true;\n\tkeyboard = true;\n\tpauseOnHover = true;\n\tpauseOnFocus = true;\n\tshowNavigationArrows = true;\n\tshowNavigationIndicators = true;\n\n\tget animation(): boolean {\n\t\treturn this._animation ?? this._ngbConfig.animation;\n\t}\n\tset animation(animation: boolean) {\n\t\tthis._animation = animation;\n\t}\n}\n","import { NgbTransitionStartFn, reflow } from './_ngb-ngbootstrap-utilities.mjs';\n\n/**\n * Defines the carousel slide transition direction.\n */\nexport enum NgbSlideEventDirection {\n\tSTART = 'start',\n\tEND = 'end',\n}\n\nexport interface NgbCarouselCtx {\n\t/**\n\t * <span class=\"badge bg-info text-dark\">since 12.0.0</span> Possible values are `'start' | 'end'`.\n\t *\n\t * <span class=\"badge bg-secondary\">before 12.0.0</span> Possible values were `'left' | 'right'`.\n\t */\n\tdirection: 'start' | 'end';\n}\n\nconst isBeingAnimated = ({ classList }: HTMLElement) => {\n\treturn classList.contains('carousel-item-start') || classList.contains('carousel-item-end');\n};\n\nconst removeDirectionClasses = (classList: DOMTokenList) => {\n\tclassList.remove('carousel-item-start', 'carousel-item-end');\n};\n\nconst removeClasses = (classList: DOMTokenList) => {\n\tremoveDirectionClasses(classList);\n\tclassList.remove('carousel-item-prev', 'carousel-item-next');\n};\n\nexport const ngbCarouselTransitionIn: NgbTransitionStartFn<NgbCarouselCtx> = (\n\telement: HTMLElement,\n\tanimation: boolean,\n\t{ direction }: NgbCarouselCtx,\n) => {\n\tconst { classList } = element;\n\n\tif (!animation) {\n\t\tremoveClasses(classList);\n\t\tclassList.add('active');\n\t\treturn;\n\t}\n\n\tif (isBeingAnimated(element)) {\n\t\t// Revert the transition\n\t\tremoveDirectionClasses(classList);\n\t} else {\n\t\t// For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n\t\tclassList.add('carousel-item-' + (direction === NgbSlideEventDirection.START ? 'next' : 'prev'));\n\t\treflow(element);\n\t\tclassList.add('carousel-item-' + direction);\n\t}\n\n\treturn () => {\n\t\tremoveClasses(classList);\n\t\tclassList.add('active');\n\t};\n};\n\nexport const ngbCarouselTransitionOut: NgbTransitionStartFn<NgbCarouselCtx> = (\n\telement: HTMLElement,\n\tanimation: boolean,\n\t{ direction }: NgbCarouselCtx,\n) => {\n\tconst { classList } = element;\n\n\tif (!animation) {\n\t\tremoveClasses(classList);\n\t\tclassList.remove('active');\n\t\treturn;\n\t}\n\n\t// direction is left or right, depending on the way the slide goes out.\n\tif (isBeingAnimated(element)) {\n\t\t// Revert the transition\n\t\tremoveDirectionClasses(classList);\n\t} else {\n\t\tclassList.add('carousel-item-' + direction);\n\t}\n\n\treturn () => {\n\t\tremoveClasses(classList);\n\t\tclassList.remove('active');\n\t};\n};\n","import {\n\tAfterContentChecked,\n\tAfterContentInit,\n\tafterNextRender,\n\tAfterViewInit,\n\tChangeDetectionStrategy,\n\tChangeDetectorRef,\n\tComponent,\n\tContentChildren,\n\tDestroyRef,\n\tDirective,\n\tElementRef,\n\tEventEmitter,\n\tinject,\n\tInjector,\n\tInput,\n\tNgZone,\n\tOutput,\n\tPLATFORM_ID,\n\tQueryList,\n\tTemplateRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { isPlatformBrowser, NgTemplateOutlet } from '@angular/common';\n\nimport { NgbCarouselConfig } from './carousel-config';\n\nimport { BehaviorSubject, combineLatest, NEVER, Observable, timer, zip } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, take } from 'rxjs/operators';\nimport { ngbCompleteTransition, ngbRunTransition, NgbTransitionOptions } from './_ngb-ngbootstrap-utilities.mjs';\nimport {\n\tNgbCarouselCtx,\n\tngbCarouselTransitionIn,\n\tngbCarouselTransitionOut,\n\tNgbSlideEventDirection,\n} from './carousel-transition';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nlet nextId = 0;\nlet carouselId = 0;\n\n/**\n * A directive that wraps the individual carousel slide.\n */\n@Directive({ selector: 'ng-template[ngbSlide]' })\nexport class NgbSlide {\n\ttemplateRef = inject(TemplateRef);\n\n\t/**\n\t * Slide id that must be unique for the entire document.\n\t *\n\t * If not provided, will be generated in the `ngb-slide-xx` format.\n\t */\n\t@Input() id = `ngb-slide-${nextId++}`;\n\n\t/**\n\t * An event emitted when the slide transition is finished\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() slid = new EventEmitter<NgbSingleSlideEvent>();\n}\n\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\n@Component({\n\tselector: 'ngb-carousel',\n\texportAs: 'ngbCarousel',\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'carousel slide',\n\t\t'[style.display]': '\"block\"',\n\t\ttabIndex: '0',\n\t\t'(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n\t\t'(keydown.arrowRight)': 'keyboard && arrowRight()',\n\t\t'(mouseenter)': 'mouseHover = true',\n\t\t'(mouseleave)': 'mouseHover = false',\n\t\t'(focusin)': 'focused = true',\n\t\t'(focusout)': 'focused = false',\n\t},\n\ttemplate: `\n\t\t<div class=\"carousel-indicators\" [class.visually-hidden]=\"!showNavigationIndicators\" role=\"tablist\">\n\t\t\t@for (slide of slides; track slide) {\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tdata-bs-target\n\t\t\t\t\t[class.active]=\"slide.id === activeId\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t[attr.aria-labelledby]=\"'slide-' + slide.id\"\n\t\t\t\t\t[attr.aria-controls]=\"'slide-' + slide.id\"\n\t\t\t\t\t[attr.aria-selected]=\"slide.id === activeId\"\n\t\t\t\t\t(click)=\"focus(); select(slide.id, NgbSlideEventSource.INDICATOR)\"\n\t\t\t\t></button>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"carousel-inner\">\n\t\t\t@for (slide of slides; track slide; let i = $index; let c = $count) {\n\t\t\t\t<div class=\"carousel-item\" [id]=\"'slide-' + slide.id\" role=\"tabpanel\">\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"visually-hidden\"\n\t\t\t\t\t\ti18n=\"Currently selected slide number read by screen reader@@ngb.carousel.slide-number\"\n\t\t\t\t\t>\n\t\t\t\t\t\tSlide {{ i + 1 }} of {{ c }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"slide.templateRef\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t\t@if (showNavigationArrows) {\n\t\t\t<button\n\t\t\t\tclass=\"carousel-control-prev\"\n\t\t\t\ttype=\"button\"\n\t\t\t\t(click)=\"arrowLeft()\"\n\t\t\t\t[attr.aria-labelledby]=\"id + '-previous'\"\n\t\t\t>\n\t\t\t\t<span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n\t\t\t\t<span class=\"visually-hidden\" i18n=\"@@ngb.carousel.previous\" [id]=\"id + '-previous'\">Previous</span>\n\t\t\t</button>\n\t\t\t<button class=\"carousel-control-next\" type=\"button\" (click)=\"arrowRight()\" [attr.aria-labelledby]=\"id + '-next'\">\n\t\t\t\t<span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\n\t\t\t\t<span class=\"visually-hidden\" i18n=\"@@ngb.carousel.next\" [id]=\"id + '-next'\">Next</span>\n\t\t\t</button>\n\t\t}\n\t`,\n})\nexport class NgbCarousel implements AfterContentChecked, AfterContentInit, AfterViewInit {\n\t@ContentChildren(NgbSlide) slides: QueryList<NgbSlide>;\n\n\tpublic NgbSlideEventSource = NgbSlideEventSource;\n\n\tprivate _config = inject(NgbCarouselConfig);\n\tprivate _platformId = inject(PLATFORM_ID);\n\tprivate _ngZone = inject(NgZone);\n\tprivate _cd = inject(ChangeDetectorRef);\n\tprivate _container = inject(ElementRef);\n\tprivate _destroyRef = inject(DestroyRef);\n\tprivate _injector = inject(Injector);\n\n\tprivate _interval$ = new BehaviorSubject(this._config.interval);\n\tprivate _mouseHover$ = new BehaviorSubject(false);\n\tprivate _focused$ = new BehaviorSubject(false);\n\tprivate _pauseOnHover$ = new BehaviorSubject(this._config.pauseOnHover);\n\tprivate _pauseOnFocus$ = new BehaviorSubject(this._config.pauseOnFocus);\n\tprivate _pause$ = new BehaviorSubject(false);\n\tprivate _wrap$ = new BehaviorSubject(this._config.wrap);\n\n\tid = `ngb-carousel-${carouselId++}`;\n\n\t/**\n\t * A flag to enable/disable the animations.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Input() animation = this._config.animation;\n\n\t/**\n\t * The slide id that should be displayed **initially**.\n\t *\n\t * For subsequent interactions use methods `select()`, `next()`, etc. and the `(slide)` output.\n\t */\n\t@Input() activeId: string;\n\n\t/**\n\t * Time in milliseconds before the next slide is shown.\n\t */\n\t@Input()\n\tset interval(value: number) {\n\t\tthis._interval$.next(value);\n\t}\n\n\tget interval() {\n\t\treturn this._interval$.value;\n\t}\n\n\t/**\n\t * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n\t */\n\t@Input()\n\tset wrap(value: boolean) {\n\t\tthis._wrap$.next(value);\n\t}\n\n\tget wrap() {\n\t\treturn this._wrap$.value;\n\t}\n\n\t/**\n\t * If `true`, allows to interact with carousel using keyboard 'arrow left' and 'arrow right'.\n\t */\n\t@Input() keyboard = this._config.keyboard;\n\n\t/**\n\t * If `true`, will pause slide switching when mouse cursor hovers the slide.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input()\n\tset pauseOnHover(value: boolean) {\n\t\tthis._pauseOnHover$.next(value);\n\t}\n\n\tget pauseOnHover() {\n\t\treturn this._pauseOnHover$.value;\n\t}\n\n\t/**\n\t * If `true`, will pause slide switching when the focus is inside the carousel.\n\t */\n\t@Input()\n\tset pauseOnFocus(value: boolean) {\n\t\tthis._pauseOnFocus$.next(value);\n\t}\n\n\tget pauseOnFocus() {\n\t\treturn this._pauseOnFocus$.value;\n\t}\n\n\t/**\n\t * If `true`, 'previous' and 'next' navigation arrows will be visible on the slide.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input() showNavigationArrows = this._config.showNavigationArrows;\n\n\t/**\n\t * If `true`, navigation indicators at the bottom of the slide will be visible.\n\t *\n\t * @since 2.2.0\n\t */\n\t@Input() showNavigationIndicators = this._config.showNavigationIndicators;\n\n\t/**\n\t * An event emitted just before the slide transition starts.\n\t *\n\t * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n\t */\n\t@Output() slide = new EventEmitter<NgbSlideEvent>();\n\n\t/**\n\t * An event emitted right after the slide transition is completed.\n\t *\n\t * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n\t *\n\t * @since 8.0.0\n\t */\n\t@Output() slid = new EventEmitter<NgbSlideEvent>();\n\n\t/*\n\t * Keep the ids of the panels currently transitionning\n\t * in order to allow only the transition revertion\n\t */\n\tprivate _transitionIds: [string, string] | null = null;\n\n\tset mouseHover(value: boolean) {\n\t\tthis._mouseHover$.next(value);\n\t}\n\n\tget mouseHover() {\n\t\treturn this._mouseHover$.value;\n\t}\n\n\tset focused(value: boolean) {\n\t\tthis._focused$.next(value);\n\t}\n\n\tget focused() {\n\t\treturn this._focused$.value;\n\t}\n\n\tarrowLeft() {\n\t\tthis.focus();\n\t\tthis.prev(NgbSlideEventSource.ARROW_LEFT);\n\t}\n\n\tarrowRight() {\n\t\tthis.focus();\n\t\tthis.next(NgbSlideEventSource.ARROW_RIGHT);\n\t}\n\n\tngAfterContentInit() {\n\t\t// setInterval() doesn't play well with SSR and protractor,\n\t\t// so we should run it in the browser and outside Angular\n\t\tif (isPlatformBrowser(this._platformId)) {\n\t\t\tthis._ngZone.runOutsideAngular(() => {\n\t\t\t\tconst hasNextSlide$ = combineLatest([\n\t\t\t\t\tthis.slide.pipe(\n\t\t\t\t\t\tmap((slideEvent) => slideEvent.current),\n\t\t\t\t\t\tstartWith(this.activeId),\n\t\t\t\t\t),\n\t\t\t\t\tthis._wrap$,\n\t\t\t\t\tthis.slides.changes.pipe(startWith(null)),\n\t\t\t\t]).pipe(\n\t\t\t\t\tmap(([currentSlideId, wrap]) => {\n\t\t\t\t\t\tconst slideArr = this.slides.toArray();\n\t\t\t\t\t\tconst currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\t\t\t\t\t\treturn wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n\t\t\t\t\t}),\n\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t);\n\t\t\t\tcombineLatest([\n\t\t\t\t\tthis._pause$,\n\t\t\t\t\tthis._pauseOnHover$,\n\t\t\t\t\tthis._mouseHover$,\n\t\t\t\t\tthis._pauseOnFocus$,\n\t\t\t\t\tthis._focused$,\n\t\t\t\t\tthis._interval$,\n\t\t\t\t\thasNextSlide$,\n\t\t\t\t])\n\t\t\t\t\t.pipe(\n\t\t\t\t\t\tmap(\n\t\t\t\t\t\t\t([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]: [\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t\tnumber,\n\t\t\t\t\t\t\t\tboolean,\n\t\t\t\t\t\t\t]) =>\n\t\t\t\t\t\t\t\tpause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide ? 0 : interval,\n\t\t\t\t\t\t),\n\n\t\t\t\t\t\tdistinctUntilChanged(),\n\t\t\t\t\t\tswitchMap((interval) => (interval > 0 ? timer(interval, interval) : NEVER)),\n\t\t\t\t\t\ttakeUntilDestroyed(this._destroyRef),\n\t\t\t\t\t)\n\t\t\t\t\t.subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n\t\t\t});\n\t\t}\n\n\t\tthis.slides.changes.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n\t\t\tthis._transitionIds?.forEach((id) => ngbCompleteTransition(this._getSlideElement(id)));\n\t\t\tthis._transitionIds = null;\n\n\t\t\tthis._cd.markForCheck();\n\n\t\t\t// The following code need to be done asynchronously, after the dom becomes stable,\n\t\t\t// otherwise all changes will be undone.\n\t\t\tafterNextRender(\n\t\t\t\t{\n\t\t\t\t\tmixedReadWrite: () => {\n\t\t\t\t\t\tfor (const { id } of this.slides) {\n\t\t\t\t\t\t\tconst element = this._getSlideElement(id);\n\t\t\t\t\t\t\tif (id === this.activeId) {\n\t\t\t\t\t\t\t\telement.classList.add('active');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\telement.classList.remove('active');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tngAfterContentChecked() {\n\t\tlet activeSlide = this._getSlideById(this.activeId);\n\t\tthis.activeId = activeSlide ? activeSlide.id : this.slides.length ? this.slides.first.id : '';\n\t}\n\n\tngAfterViewInit() {\n\t\t// Initialize the 'active' class (not managed by the template)\n\t\tif (this.activeId) {\n\t\t\tconst element = this._getSlideElement(this.activeId);\n\t\t\tif (element) {\n\t\t\t\telement.classList.add('active');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Navigates to a slide with the specified identifier.\n\t */\n\tselect(slideId: string, source?: NgbSlideEventSource) {\n\t\tthis._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n\t}\n\n\t/**\n\t * Navigates to the previous slide.\n\t */\n\tprev(source?: NgbSlideEventSource) {\n\t\tthis._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.END, source);\n\t}\n\n\t/**\n\t * Navigates to the next slide.\n\t */\n\tnext(source?: NgbSlideEventSource) {\n\t\tthis._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.START, source);\n\t}\n\n\t/**\n\t * Pauses cycling through the slides.\n\t */\n\tpause() {\n\t\tthis._pause$.next(true);\n\t}\n\n\t/**\n\t * Restarts cycling through the slides from start to end.\n\t */\n\tcycle() {\n\t\tthis._pause$.next(false);\n\t}\n\n\t/**\n\t * Set the focus on the carousel.\n\t */\n\tfocus() {\n\t\tthis._container.nativeElement.focus();\n\t}\n\n\tprivate _cycleToSelected(slideIdx: string, direction: NgbSlideEventDirection, source?: NgbSlideEventSource) {\n\t\tconst transitionIds = this._transitionIds;\n\t\tif (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n\t\t\t// Revert prevented\n\t\t\treturn;\n\t\t}\n\n\t\tlet selectedSlide = this._getSlideById(slideIdx);\n\t\tif (selectedSlide && selectedSlide.id !== this.activeId) {\n\t\t\tthis._transitionIds = [this.activeId, slideIdx];\n\t\t\tthis.slide.emit({\n\t\t\t\tprev: this.activeId,\n\t\t\t\tcurrent: selectedSlide.id,\n\t\t\t\tdirection: direction,\n\t\t\t\tpaused: this._pause$.value,\n\t\t\t\tsource,\n\t\t\t});\n\n\t\t\tconst options: NgbTransitionOptions<NgbCarouselCtx> = {\n\t\t\t\tanimation: this.animation,\n\t\t\t\trunningTransition: 'stop',\n\t\t\t\tcontext: { direction },\n\t\t\t};\n\n\t\t\tconst transitions: Array<Observable<any>> = [];\n\t\t\tconst activeSlide = this._getSlideById(this.activeId);\n\t\t\tif (activeSlide) {\n\t\t\t\tconst activeSlideTransition = ngbRunTransition(\n\t\t\t\t\tthis._ngZone,\n\t\t\t\t\tthis._getSlideElement(activeSlide.id),\n\t\t\t\t\tngbCarouselTransitionOut,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\t\t\t\tactiveSlideTransition.subscribe(() => {\n\t\t\t\t\tactiveSlide.slid.emit({ isShown: false, direction, source });\n\t\t\t\t});\n\t\t\t\ttransitions.push(activeSlideTransition);\n\t\t\t}\n\n\t\t\tconst previousId = this.activeId;\n\t\t\tthis.activeId = selectedSlide.id;\n\t\t\tconst nextSlide = this._getSlideById(this.activeId);\n\t\t\tconst transition = ngbRunTransition(\n\t\t\t\tthis._ngZone,\n\t\t\t\tthis._getSlideElement(selectedSlide.id),\n\t\t\t\tngbCarouselTransitionIn,\n\t\t\t\toptions,\n\t\t\t);\n\t\t\ttransition.subscribe(() => {\n\t\t\t\tnextSlide?.slid.emit({ isShown: true, direction, source });\n\t\t\t});\n\t\t\ttransitions.push(transition);\n\n\t\t\tzip(...transitions)\n\t\t\t\t.pipe(take(1))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tthis._transitionIds = null;\n\t\t\t\t\tthis.slid.emit({\n\t\t\t\t\t\tprev: previousId,\n\t\t\t\t\t\tcurrent: selectedSlide!.id,\n\t\t\t\t\t\tdirection: direction,\n\t\t\t\t\t\tpaused: this._pause$.value,\n\t\t\t\t\t\tsource,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\n\t\t// we get here after the interval fires or any external API call like next(), prev() or select()\n\t\tthis._cd.markForCheck();\n\t}\n\n\tprivate _getSlideEventDirection(currentActiveSlideId: string, nextActiveSlideId: string): NgbSlideEventDirection {\n\t\tconst currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n\t\tconst nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n\n\t\treturn currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.END : NgbSlideEventDirection.START;\n\t}\n\n\tprivate _getSlideById(slideId: string): NgbSlide | null {\n\t\treturn this.slides.find((slide) => slide.id === slideId) || null;\n\t}\n\n\tprivate _getSlideIdxById(slideId: string): number {\n\t\tconst slide = this._getSlideById(slideId);\n\t\treturn slide != null ? this.slides.toArray().indexOf(slide) : -1;\n\t}\n\n\tprivate _getNextSlide(currentSlideId: string): string {\n\t\tconst slideArr = this.slides.toArray();\n\t\tconst currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\t\tconst isLastSlide = currentSlideIdx === slideArr.length - 1;\n\n\t\treturn isLastSlide\n\t\t\t? this.wrap\n\t\t\t\t? slideArr[0].id\n\t\t\t\t: slideArr[slideArr.length - 1].id\n\t\t\t: slideArr[currentSlideIdx + 1].id;\n\t}\n\n\tprivate _getPrevSlide(currentSlideId: string): string {\n\t\tconst slideArr = this.slides.toArray();\n\t\tconst currentSlideIdx = this._getSlideIdxById(currentSlideId);\n\t\tconst isFirstSlide = currentSlideIdx === 0;\n\n\t\treturn isFirstSlide\n\t\t\t? this.wrap\n\t\t\t\t? slideArr[slideArr.length - 1].id\n\t\t\t\t: slideArr[0].id\n\t\t\t: slideArr[currentSlideIdx - 1].id;\n\t}\n\n\tprivate _getSlideElement(slideId: string): HTMLElement {\n\t\treturn this._container.nativeElement.querySelector(`#slide-${slideId}`);\n\t}\n}\n\n/**\n * A slide change event emitted right after the slide transition is completed.\n */\nexport interface NgbSlideEvent {\n\t/**\n\t * The previous slide id.\n\t */\n\tprev: string;\n\n\t/**\n\t * The current slide id.\n\t */\n\tcurrent: string;\n\n\t/**\n\t * The slide event direction.\n\t *\n\t * <span class=\"badge bg-info text-dark\">since 12.0.0</span> Possible values are `'start' | 'end'`.\n\t *\n\t * <span class=\"badge bg-secondary\">before 12.0.0</span> Possible values were `'left' | 'right'`.\n\t */\n\tdirection: NgbSlideEventDirection;\n\n\t/**\n\t * Whether the pause() method was called (and no cycle() call was done afterwards).\n\t *\n\t * @since 5.1.0\n\t */\n\tpaused: boolean;\n\n\t/**\n\t * Source triggering the slide change event.\n\t *\n\t * Possible values are `'timer' | 'arrowLeft' | 'arrowRight' | 'indicator'`\n\t *\n\t * @since 5.1.0\n\t */\n\tsource?: NgbSlideEventSource;\n}\n\n/**\n * A slide change event emitted right after the slide transition is completed.\n *\n * @since 8.0.0\n */\nexport interface NgbSingleSlideEvent {\n\t/**\n\t * true if the slide is shown, false otherwise\n\t */\n\tisShown: boolean;\n\n\t/**\n\t * The slide event direction.\n\t *\n\t * <span class=\"badge bg-info text-dark\">since 12.0.0</span> Possible values are `'start' | 'end'`.\n\t *\n\t * <span class=\"badge bg-secondary\">before 12.0.0</span> Possible values were `'left' | 'right'`.\n\t */\n\tdirection: NgbSlideEventDirection;\n\n\t/**\n\t * Source triggering the slide change event.\n\t *\n\t * Possible values are `'timer' | 'arrowLeft' | 'arrowRight' | 'indicator'`\n\t *\n\t */\n\tsource?: NgbSlideEventSource;\n}\n\nexport enum NgbSlideEventSource {\n\tTIMER = 'timer',\n\tARROW_LEFT = 'arrowLeft',\n\tARROW_RIGHT = 'arrowRight',\n\tINDICATOR = 'indicator',\n}\n","import { NgModule } from '@angular/core';\nimport { NgbCarousel, NgbSlide } from './carousel';\n\nexport { NgbCarousel, NgbSlide, NgbSlideEvent, NgbSlideEventSource } from './carousel';\nexport { NgbSlideEventDirection } from './carousel-transition';\nexport { NgbCarouselConfig } from './carousel-config';\n\n@NgModule({\n\timports: [NgbCarousel, NgbSlide],\n\texports: [NgbCarousel, NgbSlide],\n})\nexport class NgbCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}