ngx-bootstrap 9.0.0-RC.2 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/accordion/accordion-group.component.d.ts +0 -1
- package/accordion/esm2020/accordion-group.component.mjs +1 -5
- package/accordion/fesm2015/ngx-bootstrap-accordion.mjs +0 -4
- package/accordion/fesm2015/ngx-bootstrap-accordion.mjs.map +1 -1
- package/accordion/fesm2020/ngx-bootstrap-accordion.mjs +0 -4
- package/accordion/fesm2020/ngx-bootstrap-accordion.mjs.map +1 -1
- package/accordion/package.json +2 -3
- package/alert/package.json +2 -2
- package/buttons/button-radio-group.directive.d.ts +2 -2
- package/buttons/button-radio.directive.d.ts +5 -5
- package/buttons/esm2020/button-radio-group.directive.mjs +1 -1
- package/buttons/esm2020/button-radio.directive.mjs +1 -1
- package/buttons/fesm2015/ngx-bootstrap-buttons.mjs.map +1 -1
- package/buttons/fesm2020/ngx-bootstrap-buttons.mjs.map +1 -1
- package/buttons/package.json +1 -1
- package/carousel/carousel.component.d.ts +0 -1
- package/carousel/esm2020/carousel.component.mjs +4 -7
- package/carousel/fesm2015/ngx-bootstrap-carousel.mjs +3 -6
- package/carousel/fesm2015/ngx-bootstrap-carousel.mjs.map +1 -1
- package/carousel/fesm2020/ngx-bootstrap-carousel.mjs +3 -6
- package/carousel/fesm2020/ngx-bootstrap-carousel.mjs.map +1 -1
- package/carousel/package.json +2 -2
- package/chronos/package.json +1 -1
- package/collapse/package.json +1 -1
- package/component-loader/package.json +2 -2
- package/datepicker/package.json +5 -5
- package/dropdown/bs-dropdown.directive.d.ts +0 -1
- package/dropdown/esm2020/bs-dropdown-container.component.mjs +2 -3
- package/dropdown/esm2020/bs-dropdown.directive.mjs +6 -12
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs +6 -12
- package/dropdown/fesm2015/ngx-bootstrap-dropdown.mjs.map +1 -1
- package/dropdown/fesm2020/ngx-bootstrap-dropdown.mjs +6 -12
- package/dropdown/fesm2020/ngx-bootstrap-dropdown.mjs.map +1 -1
- package/dropdown/package.json +2 -3
- package/focus-trap/package.json +1 -1
- package/locale/package.json +2 -2
- package/mini-ngrx/package.json +1 -1
- package/modal/esm2020/bs-modal.service.mjs +2 -2
- package/modal/esm2020/modal-backdrop.component.mjs +4 -12
- package/modal/esm2020/modal-container.component.mjs +4 -5
- package/modal/esm2020/modal-options.class.mjs +2 -2
- package/modal/esm2020/modal.directive.mjs +4 -12
- package/modal/fesm2015/ngx-bootstrap-modal.mjs +10 -26
- package/modal/fesm2015/ngx-bootstrap-modal.mjs.map +1 -1
- package/modal/fesm2020/ngx-bootstrap-modal.mjs +10 -26
- package/modal/fesm2020/ngx-bootstrap-modal.mjs.map +1 -1
- package/modal/package.json +3 -3
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/popover/package.json +4 -4
- package/positioning/package.json +2 -2
- package/progressbar/bar.component.d.ts +0 -1
- package/progressbar/esm2020/bar.component.mjs +3 -8
- package/progressbar/esm2020/progressbar-type.interface.mjs +1 -1
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs +2 -7
- package/progressbar/fesm2015/ngx-bootstrap-progressbar.mjs.map +1 -1
- package/progressbar/fesm2020/ngx-bootstrap-progressbar.mjs +2 -7
- package/progressbar/fesm2020/ngx-bootstrap-progressbar.mjs.map +1 -1
- package/progressbar/package.json +1 -2
- package/rating/package.json +1 -1
- package/schematics/utils/current_dependency_versions.json +1 -1
- package/schematics/utils/index.js +9 -4
- package/schematics/utils/index.js.map +1 -1
- package/sortable/package.json +1 -1
- package/tabs/package.json +1 -1
- package/timepicker/esm2020/timepicker.component.mjs +3 -3
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs +2 -2
- package/timepicker/fesm2015/ngx-bootstrap-timepicker.mjs.map +1 -1
- package/timepicker/fesm2020/ngx-bootstrap-timepicker.mjs +2 -2
- package/timepicker/fesm2020/ngx-bootstrap-timepicker.mjs.map +1 -1
- package/timepicker/package.json +2 -2
- package/tooltip/esm2020/tooltip-container.component.mjs +3 -5
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs +2 -4
- package/tooltip/fesm2015/ngx-bootstrap-tooltip.mjs.map +1 -1
- package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs +2 -4
- package/tooltip/fesm2020/ngx-bootstrap-tooltip.mjs.map +1 -1
- package/tooltip/package.json +4 -4
- package/typeahead/esm2020/typeahead-container.component.mjs +7 -11
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs +6 -10
- package/typeahead/fesm2015/ngx-bootstrap-typeahead.mjs.map +1 -1
- package/typeahead/fesm2020/ngx-bootstrap-typeahead.mjs +6 -10
- package/typeahead/fesm2020/ngx-bootstrap-typeahead.mjs.map +1 -1
- package/typeahead/package.json +3 -3
- package/typeahead/typeahead-container.component.d.ts +0 -1
- package/utils/esm2020/public_api.mjs +2 -2
- package/utils/esm2020/theme-provider.mjs +1 -29
- package/utils/esm2020/utils.class.mjs +4 -4
- package/utils/fesm2015/ngx-bootstrap-utils.mjs +4 -32
- package/utils/fesm2015/ngx-bootstrap-utils.mjs.map +1 -1
- package/utils/fesm2020/ngx-bootstrap-utils.mjs +4 -32
- package/utils/fesm2020/ngx-bootstrap-utils.mjs.map +1 -1
- package/utils/package.json +1 -1
- package/utils/public_api.d.ts +1 -1
- package/utils/theme-provider.d.ts +1 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ngx-bootstrap-carousel.mjs","sources":["../../../../src/carousel/carousel.config.ts","../../../../src/carousel/utils.ts","../../../../src/carousel/carousel.component.ts","../../../../src/carousel/carousel.component.html","../../../../src/carousel/slide.component.ts","../../../../src/carousel/carousel.module.ts","../../../../src/carousel/ngx-bootstrap-carousel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CarouselConfig {\n /* Default interval of auto changing of slides */\n interval = 5000;\n\n /* Is loop of auto changing of slides can be paused */\n noPause = false;\n\n /* Is slides can wrap from the last to the first slide */\n noWrap = false;\n\n /* Show carousel-indicators */\n showIndicators = true;\n\n /* Slides can be paused on focus */\n pauseOnFocus = false;\n\n /* If `true` - carousel indicators indicate slides chunks works ONLY if singleSlideOffset = FALSE */\n indicatorsByChunk = false;\n\n /* If value more then 1 — carousel works in multilist mode */\n itemsPerSlide = 1;\n\n /* If `true` — carousel shifts by one element. By default carousel shifts by number\n of visible elements (itemsPerSlide field) */\n singleSlideOffset = false;\n}\n","/**\n * Returns the index of the last element in the array where predicate is true, and -1\n * otherwise.\n * @param array The source array to search in\n * @param predicate find calls predicate once for each element of the array, in descending\n * order, until it finds one where predicate returns true. If such an element is found,\n * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n */\nexport function findLastIndex<T>(array: T[], predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n\n while (l--) {\n if (predicate(array[l], l, array)) {\n return l;\n }\n }\n\n return -1;\n}\n\nexport function chunkByNumber<T>(array: T[], size: number): T[][] {\n const out = [];\n const n = Math.ceil((array.length) / size);\n let i = 0;\n\n while (i < n) {\n const chunk = array.splice(\n 0,\n (i === n - 1) && size < array.length ? array.length : size\n );\n\n out.push(chunk);\n i++;\n }\n\n return out;\n}\n\nexport function isNumber(value?: any): value is number {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n","/***\n * pause (not yet supported) (?string='hover') - event group name which pauses\n * the cycling of the carousel, if hover pauses on mouseenter and resumes on\n * mouseleave keyboard (not yet supported) (?boolean=true) - if false\n * carousel will not react to keyboard events\n * note: swiping not yet supported\n */\n/****\n * Problems:\n * 1) if we set an active slide via model changes, .active class remains on a\n * current slide.\n * 2) if we have only one slide, we shouldn't show prev/next nav buttons\n * 3) if first or last slide is active and noWrap is true, there should be\n * \"disabled\" class on the nav buttons.\n * 4) default interval should be equal 5000\n */\n\nimport {\n Component, EventEmitter, Input, NgZone, OnDestroy, Output, AfterViewInit, Inject, PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { isBs3, LinkedList, getBsVer, IBsVersion } from 'ngx-bootstrap/utils';\nimport { SlideComponent } from './slide.component';\nimport { CarouselConfig } from './carousel.config';\nimport { findLastIndex, chunkByNumber, isNumber } from './utils';\nimport { SlideWithIndex, IndexedSlideList } from './models';\n\nexport enum Direction {\n UNKNOWN,\n NEXT,\n PREV\n}\n\nlet _currentId = 1;\n\n/**\n * Base element to create carousel\n */\n@Component({\n selector: 'carousel',\n templateUrl: './carousel.component.html'\n})\nexport class CarouselComponent implements AfterViewInit, OnDestroy {\n /* If `true` — carousel will not cycle continuously and will have hard stops (prevent looping) */\n @Input() noWrap = false;\n /* If `true` — will disable pausing on carousel mouse hover */\n @Input() noPause = false;\n /* If `true` — carousel-indicators are visible */\n @Input() showIndicators = true;\n /* If `true` - autoplay will be stopped on focus */\n @Input() pauseOnFocus = false;\n /* If `true` - carousel indicators indicate slides chunks\n works ONLY if singleSlideOffset = FALSE */\n @Input() indicatorsByChunk = false;\n /* If value more then 1 — carousel works in multilist mode */\n @Input() itemsPerSlide = 1;\n /* If `true` — carousel shifts by one element. By default carousel shifts by number\n of visible elements (itemsPerSlide field) */\n @Input() singleSlideOffset = false;\n /** Turn on/off animation. Animation doesn't work for multilist carousel */\n @Input() isAnimated = false;\n\n /** Will be emitted when active slide has been changed. Part of two-way-bindable [(activeSlide)] property */\n @Output()\n activeSlideChange = new EventEmitter<number>(false);\n\n /** Will be emitted when active slides has been changed in multilist mode */\n @Output()\n slideRangeChange = new EventEmitter<number[]|void>();\n\n /** Index of currently displayed slide(started for 0) */\n @Input()\n set activeSlide(index: number) {\n if (this.multilist) {\n return;\n }\n\n if (isNumber(index)) {\n this.customActiveSlide = index;\n }\n\n if (this._slides.length && index !== this._currentActiveSlide) {\n this._select(index);\n }\n }\n\n get activeSlide(): number {\n return this._currentActiveSlide || 0;\n }\n\n /* Index to start display slides from it */\n @Input()\n startFromIndex = 0;\n\n /**\n * Delay of item cycling in milliseconds. If false, carousel won't cycle\n * automatically.\n */\n @Input()\n get interval(): number {\n return this._interval;\n }\n\n set interval(value: number) {\n this._interval = value;\n this.restartTimer();\n }\n\n get slides(): SlideComponent[] {\n return this._slides.toArray();\n }\n\n get isFirstSlideVisible(): boolean {\n const indexes = this.getVisibleIndexes();\n if (!indexes || (indexes instanceof Array && !indexes.length)) {\n return false;\n }\n\n return indexes.includes(0);\n }\n\n get isLastSlideVisible(): boolean {\n const indexes = this.getVisibleIndexes();\n if (!indexes || (indexes instanceof Array && !indexes.length)) {\n return false;\n }\n\n return indexes.includes(this._slides.length -1);\n }\n\n protected currentInterval?: number;\n protected _currentActiveSlide?: number;\n protected _interval = 5000;\n protected _slides: LinkedList<SlideComponent> = new LinkedList<SlideComponent>();\n protected _chunkedSlides?: SlideWithIndex[][];\n protected _slidesWithIndexes?: SlideWithIndex[];\n protected _currentVisibleSlidesIndex = 0;\n protected isPlaying = false;\n protected destroyed = false;\n private customActiveSlide?: number;\n currentId = 0;\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n get _bsVer(): IBsVersion {\n return getBsVer();\n }\n\n constructor(config: CarouselConfig, private ngZone: NgZone, @Inject(PLATFORM_ID) public platformId: number) {\n Object.assign(this, config);\n this.currentId = _currentId++;\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.singleSlideOffset) {\n this.indicatorsByChunk = false;\n }\n if (this.multilist) {\n this._chunkedSlides = chunkByNumber(\n this.mapSlidesAndIndexes(),\n this.itemsPerSlide\n );\n this.selectInitialSlides();\n }\n\n if (this.customActiveSlide && !this.multilist) {\n this._select(this.customActiveSlide);\n }\n }, 0);\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /**\n * Adds new slide. If this slide is first in collection - set it as active\n * and starts auto changing\n * @param slide\n */\n addSlide(slide: SlideComponent): void {\n this._slides.add(slide);\n\n if (this.multilist && this._slides.length <= this.itemsPerSlide) {\n slide.active = true;\n }\n\n if (!this.multilist && this.isAnimated) {\n slide.isAnimated = true;\n }\n\n if (!this.multilist && this._slides.length === 1) {\n this._currentActiveSlide = undefined;\n if (!this.customActiveSlide) {\n this.activeSlide = 0;\n }\n this.play();\n }\n\n if (this.multilist && this._slides.length > this.itemsPerSlide) {\n this.play();\n }\n }\n\n /**\n * Removes specified slide. If this slide is active - will roll to another\n * slide\n * @param slide\n */\n removeSlide(slide: SlideComponent): void {\n const remIndex = this._slides.indexOf(slide);\n\n if (this._currentActiveSlide === remIndex) {\n // removing of active slide\n let nextSlideIndex: number;\n if (this._slides.length > 1) {\n // if this slide last - will roll to first slide, if noWrap flag is\n // FALSE or to previous, if noWrap is TRUE in case, if this slide in\n // middle of collection, index of next slide is same to removed\n nextSlideIndex = !this.isLast(remIndex)\n ? remIndex\n : this.noWrap ? remIndex - 1 : 0;\n }\n this._slides.remove(remIndex);\n\n // prevents exception with changing some value after checking\n setTimeout(() => {\n this._select(nextSlideIndex);\n }, 0);\n } else {\n this._slides.remove(remIndex);\n const currentSlideIndex = this.getCurrentSlideIndex();\n setTimeout(() => {\n // after removing, need to actualize index of current active slide\n this._currentActiveSlide = currentSlideIndex;\n this.activeSlideChange.emit(this._currentActiveSlide);\n }, 0);\n }\n }\n\n nextSlideFromInterval(force = false): void {\n this.move(Direction.NEXT, force);\n }\n\n /**\n * Rolling to next slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n nextSlide(force = false): void {\n if (this.isPlaying) {\n this.restartTimer();\n }\n this.move(Direction.NEXT, force);\n }\n\n /**\n * Rolling to previous slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n previousSlide(force = false): void {\n if (this.isPlaying) {\n this.restartTimer();\n }\n this.move(Direction.PREV, force);\n }\n\n getFirstVisibleIndex(): number {\n return this.slides.findIndex(this.getActive);\n }\n\n getLastVisibleIndex(): number {\n return findLastIndex(this.slides, this.getActive);\n }\n\n getActive = (slide: SlideComponent) => slide.active;\n\n move(direction: Direction, force = false): void {\n const firstVisibleIndex = this.getFirstVisibleIndex();\n const lastVisibleIndex = this.getLastVisibleIndex();\n\n if (this.noWrap) {\n if (\n direction === Direction.NEXT &&\n this.isLast(lastVisibleIndex) ||\n direction === Direction.PREV &&\n firstVisibleIndex === 0\n ) {\n return;\n }\n }\n\n if (!this.multilist) {\n this.activeSlide = this.findNextSlideIndex(direction, force) || 0;\n } else {\n this.moveMultilist(direction);\n }\n }\n\n /**\n * Swith slides by enter, space and arrows keys\n * @internal\n */\n keydownPress(event: KeyboardEvent) {\n if (event.keyCode === 13 || event.key === 'Enter' || event.keyCode === 32 || event.key === 'Space') {\n this.nextSlide();\n event.preventDefault();\n\n return;\n }\n\n if (event.keyCode === 37 || event.key === 'LeftArrow') {\n this.previousSlide();\n\n return;\n }\n\n if (event.keyCode === 39 || event.key === 'RightArrow') {\n this.nextSlide();\n\n return;\n }\n }\n\n /**\n * Play on mouse leave\n * @internal\n */\n onMouseLeave(): void {\n if (!this.pauseOnFocus) {\n this.play();\n }\n }\n\n /**\n * Play on mouse up\n * @internal\n */\n onMouseUp(): void {\n if (!this.pauseOnFocus) {\n this.play();\n }\n }\n\n /**\n * When slides on focus autoplay is stopped(optional)\n * @internal\n */\n pauseFocusIn(): void {\n if (this.pauseOnFocus) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n\n /**\n * When slides out of focus autoplay is started\n * @internal\n */\n pauseFocusOut(): void {\n this.play();\n }\n\n /**\n * Rolling to specified slide\n * @param index: {number} index of slide, which must be shown\n */\n selectSlide(index: number): void {\n if (this.isPlaying) {\n this.restartTimer();\n }\n\n if (!this.multilist) {\n this.activeSlide = this.indicatorsByChunk ? index * this.itemsPerSlide : index;\n } else {\n this.selectSlideRange(this.indicatorsByChunk ? index * this.itemsPerSlide : index);\n }\n }\n\n /**\n * Starts a auto changing of slides\n */\n play(): void {\n if (!this.isPlaying) {\n this.isPlaying = true;\n this.restartTimer();\n }\n }\n\n /**\n * Stops a auto changing of slides\n */\n pause(): void {\n if (!this.noPause) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n\n /**\n * Finds and returns index of currently displayed slide\n */\n getCurrentSlideIndex(): number {\n return this._slides.findIndex(this.getActive);\n }\n\n /**\n * Defines, whether the specified index is last in collection\n * @param index\n */\n isLast(index: number): boolean {\n return index + 1 >= this._slides.length;\n }\n\n /**\n * Defines, whether the specified index is first in collection\n * @param index\n */\n isFirst(index: number): boolean {\n return index === 0;\n }\n\n indicatorsSlides(): SlideComponent[] {\n return this.slides.filter(\n (slide: SlideComponent, index: number) => !this.indicatorsByChunk || index % this.itemsPerSlide === 0\n );\n }\n\n private selectInitialSlides(): void {\n const startIndex = this.startFromIndex <= this._slides.length\n ? this.startFromIndex\n : 0;\n\n this.hideSlides();\n\n if (this.singleSlideOffset) {\n this._slidesWithIndexes = this.mapSlidesAndIndexes();\n\n if (this._slides.length - startIndex < this.itemsPerSlide) {\n const slidesToAppend = this._slidesWithIndexes.slice(0, startIndex);\n\n this._slidesWithIndexes = [\n ...this._slidesWithIndexes,\n ...slidesToAppend\n ]\n .slice(slidesToAppend.length)\n .slice(0, this.itemsPerSlide);\n } else {\n this._slidesWithIndexes = this._slidesWithIndexes.slice(\n startIndex,\n startIndex + this.itemsPerSlide\n );\n }\n\n this._slidesWithIndexes.forEach((slide: SlideWithIndex) => slide.item.active = true);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n } else {\n this.selectRangeByNestedIndex(startIndex);\n }\n\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n\n /**\n * Defines next slide index, depending of direction\n * @param direction: Direction(UNKNOWN|PREV|NEXT)\n * @param force: {boolean} if TRUE - will ignore noWrap flag, else will\n * return undefined if next slide require wrapping\n */\n private findNextSlideIndex(direction: Direction, force: boolean): number | void {\n let nextSlideIndex = 0;\n\n if (\n !force &&\n (this.isLast(this.activeSlide) &&\n direction !== Direction.PREV &&\n this.noWrap)\n ) {\n return;\n }\n\n switch (direction) {\n case Direction.NEXT:\n // if this is last slide, not force, looping is disabled\n // and need to going forward - select current slide, as a next\n if (typeof this._currentActiveSlide === 'undefined') {\n nextSlideIndex = 0;\n break;\n }\n if (!this.isLast(this._currentActiveSlide)) {\n nextSlideIndex = this._currentActiveSlide + 1;\n break;\n }\n nextSlideIndex = !force && this.noWrap ? this._currentActiveSlide : 0;\n break;\n case Direction.PREV:\n // if this is first slide, not force, looping is disabled\n // and need to going backward - select current slide, as a next\n if (typeof this._currentActiveSlide === 'undefined') {\n nextSlideIndex = 0;\n break;\n }\n if (this._currentActiveSlide > 0) {\n nextSlideIndex = this._currentActiveSlide - 1;\n break;\n }\n if (!force && this.noWrap) {\n nextSlideIndex = this._currentActiveSlide;\n break;\n }\n nextSlideIndex = this._slides.length - 1;\n break;\n default:\n throw new Error('Unknown direction');\n }\n\n return nextSlideIndex;\n }\n\n private mapSlidesAndIndexes(): SlideWithIndex[] {\n return this.slides\n .slice()\n .map((slide: SlideComponent, index: number) => {\n return {\n index,\n item: slide\n };\n });\n }\n\n\n private selectSlideRange(index: number): void {\n if (this.isIndexInRange(index)) {\n return;\n }\n\n this.hideSlides();\n\n if (!this.singleSlideOffset) {\n this.selectRangeByNestedIndex(index);\n } else {\n const startIndex = this.isIndexOnTheEdges(index)\n ? index\n : index - this.itemsPerSlide + 1;\n\n const endIndex = this.isIndexOnTheEdges(index)\n ? index + this.itemsPerSlide\n : index + 1;\n\n this._slidesWithIndexes = this.mapSlidesAndIndexes().slice(startIndex, endIndex);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n\n this._slidesWithIndexes.forEach((slide: SlideWithIndex) => slide.item.active = true);\n }\n\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n\n private selectRangeByNestedIndex(index: number): void {\n if (!this._chunkedSlides) {\n return;\n }\n\n const selectedRange = this._chunkedSlides\n .map((slidesList, i: number) => {\n return {\n index: i,\n list: slidesList\n };\n })\n .find(\n (slidesList: IndexedSlideList) => {\n return slidesList.list.find(slide => slide.index === index) !== undefined;\n }\n );\n\n if (!selectedRange) {\n return;\n }\n\n this._currentVisibleSlidesIndex = selectedRange.index;\n\n this._chunkedSlides[selectedRange.index].forEach((slide: SlideWithIndex) => {\n slide.item.active = true;\n });\n }\n\n private isIndexOnTheEdges(index: number): boolean {\n return (\n index + 1 - this.itemsPerSlide <= 0 ||\n index + this.itemsPerSlide <= this._slides.length\n );\n }\n\n private isIndexInRange(index: number): boolean {\n if (this.singleSlideOffset && this._slidesWithIndexes) {\n const visibleIndexes = this._slidesWithIndexes.map((slide: SlideWithIndex) => slide.index);\n\n return visibleIndexes.indexOf(index) >= 0;\n }\n\n return (\n index <= this.getLastVisibleIndex() &&\n index >= this.getFirstVisibleIndex()\n );\n }\n\n private hideSlides(): void {\n this.slides.forEach((slide: SlideComponent) => slide.active = false);\n }\n\n private isVisibleSlideListLast(): boolean {\n if (!this._chunkedSlides) {\n return false;\n }\n\n return this._currentVisibleSlidesIndex === this._chunkedSlides.length - 1;\n }\n\n private isVisibleSlideListFirst(): boolean {\n return this._currentVisibleSlidesIndex === 0;\n }\n\n private moveSliderByOneItem(direction: Direction): void {\n let firstVisibleIndex: number;\n let lastVisibleIndex: number;\n let indexToHide: number;\n let indexToShow: number;\n\n if (this.noWrap) {\n firstVisibleIndex = this.getFirstVisibleIndex();\n lastVisibleIndex = this.getLastVisibleIndex();\n\n indexToHide = direction === Direction.NEXT\n ? firstVisibleIndex\n : lastVisibleIndex;\n\n indexToShow = direction !== Direction.NEXT\n ? firstVisibleIndex - 1\n : !this.isLast(lastVisibleIndex)\n ? lastVisibleIndex + 1 : 0;\n\n const slideToHide = this._slides.get(indexToHide);\n if (slideToHide) {\n slideToHide.active = false;\n }\n\n const slideToShow = this._slides.get(indexToShow);\n if (slideToShow) {\n slideToShow.active = true;\n }\n\n const slidesToReorder = this.mapSlidesAndIndexes().filter(\n (slide: SlideWithIndex) => slide.item.active\n );\n\n this.makeSlidesConsistent(slidesToReorder);\n if (this.singleSlideOffset) {\n this._slidesWithIndexes = slidesToReorder;\n }\n\n this.slideRangeChange.emit(this.getVisibleIndexes());\n return;\n }\n\n if (!this._slidesWithIndexes || !this._slidesWithIndexes[0]) {\n return;\n }\n\n let index: number;\n\n firstVisibleIndex = this._slidesWithIndexes[0].index;\n lastVisibleIndex = this._slidesWithIndexes[this._slidesWithIndexes.length - 1].index;\n\n if (direction === Direction.NEXT) {\n this._slidesWithIndexes.shift();\n\n index = this.isLast(lastVisibleIndex)\n ? 0\n : lastVisibleIndex + 1;\n\n const item = this._slides.get(index);\n\n if (item) {\n this._slidesWithIndexes.push({ index, item });\n }\n } else {\n this._slidesWithIndexes.pop();\n index = this.isFirst(firstVisibleIndex)\n ? this._slides.length - 1\n : firstVisibleIndex - 1;\n\n const item = this._slides.get(index);\n if (item) {\n this._slidesWithIndexes = [{ index, item }, ...this._slidesWithIndexes];\n }\n }\n\n this.hideSlides();\n\n this._slidesWithIndexes.forEach(slide => slide.item.active = true);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n\n this.slideRangeChange.emit(\n this._slidesWithIndexes.map((slide: SlideWithIndex) => slide.index)\n );\n }\n\n private makeSlidesConsistent = (slides: SlideWithIndex[]): void => {\n slides.forEach((slide: SlideWithIndex, index: number) => slide.item.order = index);\n };\n\n private moveMultilist(direction: Direction): void {\n if (this.singleSlideOffset) {\n this.moveSliderByOneItem(direction);\n } else {\n this.hideSlides();\n\n if (this.noWrap) {\n this._currentVisibleSlidesIndex = direction === Direction.NEXT\n ? this._currentVisibleSlidesIndex + 1\n : this._currentVisibleSlidesIndex - 1;\n } else if (direction === Direction.NEXT) {\n this._currentVisibleSlidesIndex = this.isVisibleSlideListLast()\n ? 0\n : this._currentVisibleSlidesIndex + 1;\n } else {\n if (this.isVisibleSlideListFirst()) {\n this._currentVisibleSlidesIndex = this._chunkedSlides\n ? this._chunkedSlides.length - 1\n : 0;\n } else {\n this._currentVisibleSlidesIndex = this._currentVisibleSlidesIndex - 1;\n }\n }\n\n if (this._chunkedSlides) {\n this._chunkedSlides[this._currentVisibleSlidesIndex].forEach(\n (slide: SlideWithIndex) => slide.item.active = true\n );\n }\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n }\n\n private getVisibleIndexes(): number[] | void {\n if (!this.singleSlideOffset && this._chunkedSlides) {\n return this._chunkedSlides[this._currentVisibleSlidesIndex]\n .map((slide: SlideWithIndex) => slide.index);\n }\n\n if (this._slidesWithIndexes) {\n return this._slidesWithIndexes.map((slide: SlideWithIndex) => slide.index);\n }\n }\n\n /**\n * Sets a slide, which specified through index, as active\n * @param index\n */\n private _select(index: number): void {\n if (isNaN(index)) {\n this.pause();\n\n return;\n }\n\n if (!this.multilist && typeof this._currentActiveSlide !== 'undefined') {\n const currentSlide = this._slides.get(this._currentActiveSlide);\n if (typeof currentSlide !== 'undefined') {\n currentSlide.active = false;\n }\n }\n\n const nextSlide = this._slides.get(index);\n\n if (typeof nextSlide !== 'undefined') {\n this._currentActiveSlide = index;\n nextSlide.active = true;\n this.activeSlide = index;\n this.activeSlideChange.emit(index);\n }\n }\n\n /**\n * Starts loop of auto changing of slides\n */\n private restartTimer() {\n this.resetTimer();\n const interval = +this.interval;\n if (!isNaN(interval) && interval > 0 && isPlatformBrowser(this.platformId)) {\n this.currentInterval = this.ngZone.runOutsideAngular<number>(() => {\n return window.setInterval(() => {\n const nInterval = +this.interval;\n this.ngZone.run(() => {\n if (\n this.isPlaying &&\n !isNaN(this.interval) &&\n nInterval > 0 &&\n this.slides.length\n ) {\n this.nextSlideFromInterval();\n } else {\n this.pause();\n }\n });\n }, interval);\n });\n }\n }\n\n get multilist(): boolean {\n return this.itemsPerSlide > 1;\n }\n\n /**\n * Stops loop of auto changing of slides\n */\n private resetTimer(): void {\n if (this.currentInterval) {\n clearInterval(this.currentInterval);\n this.currentInterval = void 0;\n }\n }\n\n checkDisabledClass(buttonType: 'prev' | 'next'): boolean {\n if (buttonType === 'prev') {\n return (this.activeSlide === 0 && this.noWrap && !this.multilist) || (this.isFirstSlideVisible && this.noWrap && this.multilist);\n }\n\n return (this.isLast(this.activeSlide) && this.noWrap && !this.multilist) || (this.isLastSlideVisible && this.noWrap && this.multilist);\n }\n}\n","<div (mouseenter)=\"pause()\"\n (mouseleave)=\"onMouseLeave()\"\n (mouseup)=\"onMouseUp()\"\n (keydown)=\"keydownPress($event)\"\n (focusin)=\"pauseFocusIn()\"\n (focusout)=\"pauseFocusOut()\"\n [id]=\"currentId\"\n class=\"carousel slide\" tabindex=\"0\">\n <ng-container *ngIf=\"!_bsVer.isBs5 && showIndicators && slides.length > 1\">\n <ol class=\"carousel-indicators\">\n <li *ngFor=\"let slide of indicatorsSlides(); let i = index;\"\n [class.active]=\"slide.active === true\"\n (click)=\"selectSlide(i)\">\n </li>\n </ol>\n </ng-container>\n <ng-container *ngIf=\"_bsVer.isBs5 && showIndicators && slides.length > 1\">\n <div class=\"carousel-indicators\">\n <button\n *ngFor=\"let slide of indicatorsSlides(); let i = index;\"\n [class.active]=\"slide.active === true\"\n (click)=\"selectSlide(i)\"\n type=\"button\"\n [attr.data-bs-target]=\"'#'+currentId\"\n [attr.data-bs-slide-to]=\"i\" aria-current=\"true\"\n >\n </button>\n </div>\n </ng-container>\n <div class=\"carousel-inner\" [ngStyle]=\"{'display': multilist ? 'flex' : 'block'}\">\n <ng-content></ng-content>\n </div>\n <a class=\"left carousel-control carousel-control-prev\"\n *ngIf=\"slides.length > 1\"\n [class.disabled]=\"checkDisabledClass('prev')\"\n [attr.data-bs-target]=\"'#'+currentId\"\n (click)=\"previousSlide()\"\n tabindex=\"0\" role=\"button\">\n <span class=\"icon-prev carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span *ngIf=\"isBs4\" class=\"sr-only visually-hidden\">Previous</span>\n </a>\n <a class=\"right carousel-control carousel-control-next\"\n *ngIf=\"slides.length > 1\"\n [class.disabled]=\"checkDisabledClass('next')\"\n [attr.data-bs-target]=\"'#'+currentId\"\n (click)=\"nextSlide()\"\n tabindex=\"0\" role=\"button\">\n <span class=\"icon-next carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"sr-only visually-hidden\">Next</span>\n </a>\n</div>\n","import {\n Component,\n HostBinding,\n OnDestroy,\n Input,\n OnInit\n} from '@angular/core';\n\nimport { CarouselComponent } from './carousel.component';\n\n@Component({\n selector: 'slide',\n template: `\n <div [class.active]=\"active\" class=\"item\">\n <ng-content></ng-content>\n </div>\n `,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-hidden]': '!active',\n '[class.multilist-margin]': 'multilist'\n },\n styles: [`\n :host.carousel-animation {\n transition: opacity 0.6s ease, visibility 0.6s ease;\n float: left;\n }\n :host.carousel-animation.active {\n opacity: 1;\n visibility: visible;\n }\n :host.carousel-animation:not(.active) {\n display: block;\n position: absolute;\n opacity: 0;\n visibility: hidden;\n }\n :host.multilist-margin {\n margin-right: auto;\n }\n :host.carousel-item {\n perspective: 1000px;\n }\n `]\n})\nexport class SlideComponent implements OnInit, OnDestroy {\n /** Is current slide active */\n @HostBinding('class.active')\n @Input()\n active = false;\n\n @HostBinding('style.width') itemWidth = '100%';\n @HostBinding('style.order') order = 0;\n @HostBinding('class.carousel-animation') isAnimated = false;\n\n /** Wraps element by appropriate CSS classes */\n @HostBinding('class.item')\n @HostBinding('class.carousel-item')\n addClass = true;\n\n /** Link to Parent(container-collection) component */\n protected carousel: CarouselComponent;\n multilist = false;\n constructor(carousel: CarouselComponent) {\n this.carousel = carousel;\n }\n\n /** Fires changes in container collection after adding a new slide instance */\n ngOnInit(): void {\n this.carousel.addSlide(this);\n this.itemWidth = `${100 / this.carousel.itemsPerSlide}%`;\n this.multilist = this.carousel?.itemsPerSlide > 1;\n }\n\n /** Fires changes in container collection after removing of this slide instance */\n ngOnDestroy(): void {\n this.carousel.removeSlide(this);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CarouselComponent } from './carousel.component';\nimport { SlideComponent } from './slide.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SlideComponent, CarouselComponent],\n exports: [SlideComponent, CarouselComponent]\n})\nexport class CarouselModule {\n static forRoot(): ModuleWithProviders<CarouselModule> {\n return { ngModule: CarouselModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CarouselComponent"],"mappings":";;;;;;MAKa,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;;QAKE,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;;QAGhB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QAGhB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAGf,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;;QAGtB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;;QAGrB,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;QAG1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;AAElB;AAC8C;QAC9C,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAC3B,KAAA;;2GAzBY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJD;;;;;;;AAOG;AACa,SAAA,aAAa,CAAI,KAAU,EAAE,SAAyD,EAAA;AACpG,IAAA,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAErB,OAAO,CAAC,EAAE,EAAE;QACV,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE;AACjC,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AACF,KAAA;IAED,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAEe,SAAA,aAAa,CAAI,KAAU,EAAE,IAAY,EAAA;IACvD,MAAM,GAAG,GAAG,EAAE,CAAC;AACf,IAAA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,CAAC,EAAE;AACZ,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CACxB,CAAC,EACD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAC3D,CAAC;AAEF,QAAA,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChB,QAAA,CAAC,EAAE,CAAC;AACL,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAEK,SAAU,QAAQ,CAAC,KAAW,EAAA;AAClC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAC;AAClG;;ACxCA;;;;;;AAMG;AAsBH,IAAY,SAIX,CAAA;AAJD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACN,CAAC,EAJW,SAAS,KAAT,SAAS,GAIpB,EAAA,CAAA,CAAA,CAAA;AAED,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB;;AAEG;MAKU,iBAAiB,CAAA;AA4G5B,IAAA,WAAA,CAAY,MAAsB,EAAU,MAAc,EAA8B,UAAkB,EAAA;QAA9D,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAA8B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAQ;;QA1GjG,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;QAEf,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;QAEhB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;;QAEtB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAC9B;AAC6C;QACpC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;QAE1B,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;AAC3B;AAC+C;QACtC,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;;QAE1B,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;;AAI5B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;;AAIpD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAiB,CAAC;;QAwBrD,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;QAwCT,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAA,CAAA,OAAO,GAA+B,IAAI,UAAU,EAAkB,CAAC;QAGvE,IAA0B,CAAA,0BAAA,GAAG,CAAC,CAAC;QAC/B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAE5B,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QAyId,IAAS,CAAA,SAAA,GAAG,CAAC,KAAqB,KAAK,KAAK,CAAC,MAAM,CAAC;AAib5C,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,MAAwB,KAAU;AAChE,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAqB,EAAE,KAAa,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACrF,SAAC,CAAC;AAjjBA,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,SAAS,GAAG,UAAU,EAAE,CAAC;KAC/B;;IAlFD,IACI,WAAW,CAAC,KAAa,EAAA;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,KAAK,IAAI,CAAC,mBAAmB,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrB,SAAA;KACF;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,mBAAmB,IAAI,CAAC,CAAC;KACtC;AAMD;;;AAGG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAED,IAAI,QAAQ,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KAC/B;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,KAAK,OAAO,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7D,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzC,QAAA,IAAI,CAAC,OAAO,KAAK,OAAO,YAAY,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7D,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAE,CAAC,CAAC,CAAC;KACjD;AAcD,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,CAAC,KAAK,EAAE,CAAC;KACjB;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,QAAQ,EAAE,CAAC;KACnB;IAOD,eAAe,GAAA;QACb,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,aAAA;YACD,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CACjC,IAAI,CAAC,mBAAmB,EAAE,EAC1B,IAAI,CAAC,aAAa,CACnB,CAAC;gBACF,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,aAAA;YAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAC7C,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACtC,aAAA;SACF,EAAE,CAAC,CAAC,CAAC;KACP;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AAED;;;;AAIG;AACH,IAAA,QAAQ,CAAC,KAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAExB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;AAC/D,YAAA,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;AACrB,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;AACtC,YAAA,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,gBAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACtB,aAAA;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE;YAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,KAAqB,EAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE7C,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,QAAQ,EAAE;;AAEzC,YAAA,IAAI,cAAsB,CAAC;AAC3B,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;;;;AAI3B,gBAAA,cAAc,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrC,sBAAE,QAAQ;AACV,sBAAE,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;;YAG9B,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aAC9B,EAAE,CAAC,CAAC,CAAC;AACP,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACtD,UAAU,CAAC,MAAK;;AAEd,gBAAA,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,CAAC;gBAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACvD,EAAE,CAAC,CAAC,CAAC;AACP,SAAA;KACF;IAED,qBAAqB,CAAC,KAAK,GAAG,KAAK,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,SAAS,CAAC,KAAK,GAAG,KAAK,EAAA;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAClC;AAED;;;AAGG;IACH,aAAa,CAAC,KAAK,GAAG,KAAK,EAAA;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAClC;IAED,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC9C;IAED,mBAAmB,GAAA;QACjB,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;KACnD;AAID,IAAA,IAAI,CAAC,SAAoB,EAAE,KAAK,GAAG,KAAK,EAAA;AACtC,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACtD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEpD,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IACE,SAAS,KAAK,SAAS,CAAC,IAAI;AAC5B,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC7B,SAAS,KAAK,SAAS,CAAC,IAAI;oBAC5B,iBAAiB,KAAK,CAAC,EACvB;gBACA,OAAO;AACR,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AAC/B,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAoB,EAAA;QAC/B,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;YAClG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,OAAO;AACR,SAAA;QAED,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YACrD,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,OAAO;AACR,SAAA;QAED,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;YACtD,IAAI,CAAC,SAAS,EAAE,CAAC;YAEjB,OAAO;AACR,SAAA;KACF;AAED;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;KACF;AAED;;;AAGG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;KACF;AAED;;;AAGG;IACH,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;AAED;;;AAGG;IACH,aAAa,GAAA;QACX,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAChF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,GAAG,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AACpF,SAAA;KACF;AAED;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;KACF;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;AAED;;AAEG;IACH,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/C;AAED;;;AAGG;AACH,IAAA,MAAM,CAAC,KAAa,EAAA;QAClB,OAAO,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;KACzC;AAED;;;AAGG;AACH,IAAA,OAAO,CAAC,KAAa,EAAA;QACnB,OAAO,KAAK,KAAK,CAAC,CAAC;KACpB;IAED,gBAAgB,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC,KAAqB,EAAE,KAAa,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,KAAK,CAAC,CACtG,CAAC;KACH;IAEO,mBAAmB,GAAA;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;cACzD,IAAI,CAAC,cAAc;cACnB,CAAC,CAAC;QAEN,IAAI,CAAC,UAAU,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAErD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AACzD,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBAEpE,IAAI,CAAC,kBAAkB,GAAG;oBACxB,GAAG,IAAI,CAAC,kBAAkB;AAC1B,oBAAA,GAAG,cAAc;AAClB,iBAAA;AACE,qBAAA,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;AAC5B,qBAAA,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AACjC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CACrD,UAAU,EACV,UAAU,GAAG,IAAI,CAAC,aAAa,CAChC,CAAC;AACH,aAAA;AAED,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACrF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAC3C,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACtD;AAED;;;;;AAKG;IACK,kBAAkB,CAAC,SAAoB,EAAE,KAAc,EAAA;QAC7D,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,QAAA,IACE,CAAC,KAAK;AACN,aAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC5B,SAAS,KAAK,SAAS,CAAC,IAAI;gBAC5B,IAAI,CAAC,MAAM,CAAC,EACd;YACA,OAAO;AACR,SAAA;AAED,QAAA,QAAQ,SAAS;YACf,KAAK,SAAS,CAAC,IAAI;;;AAGjB,gBAAA,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;oBACnD,cAAc,GAAG,CAAC,CAAC;oBACnB,MAAM;AACP,iBAAA;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAC1C,oBAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;oBAC9C,MAAM;AACP,iBAAA;AACD,gBAAA,cAAc,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;gBACtE,MAAM;YACR,KAAK,SAAS,CAAC,IAAI;;;AAGjB,gBAAA,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;oBACnD,cAAc,GAAG,CAAC,CAAC;oBACnB,MAAM;AACP,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,mBAAmB,GAAG,CAAC,EAAE;AAChC,oBAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;oBAC9C,MAAM;AACP,iBAAA;AACD,gBAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,oBAAA,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC;oBAC1C,MAAM;AACP,iBAAA;gBACD,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACzC,MAAM;AACR,YAAA;AACE,gBAAA,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACxC,SAAA;AAED,QAAA,OAAO,cAAc,CAAC;KACvB;IAEO,mBAAmB,GAAA;QACzB,OAAO,IAAI,CAAC,MAAM;AACf,aAAA,KAAK,EAAE;AACP,aAAA,GAAG,CAAC,CAAC,KAAqB,EAAE,KAAa,KAAI;YAC5C,OAAO;gBACL,KAAK;AACL,gBAAA,IAAI,EAAE,KAAK;aACZ,CAAC;AACJ,SAAC,CAAC,CAAC;KACN;AAGO,IAAA,gBAAgB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAC9B,OAAO;AACR,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC3B,YAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC9C,kBAAE,KAAK;kBACL,KAAK,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AAEnC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC5C,kBAAE,KAAK,GAAG,IAAI,CAAC,aAAa;AAC5B,kBAAE,KAAK,GAAG,CAAC,CAAC;AAEd,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACjF,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAEnD,YAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACtF,SAAA;QAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KACtD;AAEO,IAAA,wBAAwB,CAAC,KAAa,EAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc;AACtC,aAAA,GAAG,CAAC,CAAC,UAAU,EAAE,CAAS,KAAI;YAC7B,OAAO;AACL,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,UAAU;aACjB,CAAC;AACJ,SAAC,CAAC;AACD,aAAA,IAAI,CACH,CAAC,UAA4B,KAAI;AAC/B,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,SAAS,CAAC;AAC5E,SAAC,CACF,CAAC;QAEJ,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,0BAA0B,GAAG,aAAa,CAAC,KAAK,CAAC;AAEtD,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAqB,KAAI;AACzE,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,iBAAiB,CAAC,KAAa,EAAA;QACrC,QACE,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC;YACnC,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EACjD;KACH;AAEO,IAAA,cAAc,CAAC,KAAa,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACrD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;YAE3F,OAAO,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,QACE,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE;AACnC,YAAA,KAAK,IAAI,IAAI,CAAC,oBAAoB,EAAE,EACpC;KACH;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;KACtE;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,OAAO,IAAI,CAAC,0BAA0B,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;KAC3E;IAEO,uBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,0BAA0B,KAAK,CAAC,CAAC;KAC9C;AAEO,IAAA,mBAAmB,CAAC,SAAoB,EAAA;AAC9C,QAAA,IAAI,iBAAyB,CAAC;AAC9B,QAAA,IAAI,gBAAwB,CAAC;AAC7B,QAAA,IAAI,WAAmB,CAAC;AACxB,QAAA,IAAI,WAAmB,CAAC;QAExB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAChD,YAAA,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE9C,YAAA,WAAW,GAAG,SAAS,KAAK,SAAS,CAAC,IAAI;AACxC,kBAAE,iBAAiB;kBACjB,gBAAgB,CAAC;AAErB,YAAA,WAAW,GAAG,SAAS,KAAK,SAAS,CAAC,IAAI;kBACtC,iBAAiB,GAAG,CAAC;AACvB,kBAAE,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;sBAC5B,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;YAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClD,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;AAC5B,aAAA;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAClD,YAAA,IAAI,WAAW,EAAE;AACf,gBAAA,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,aAAA;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,MAAM,CACvD,CAAC,KAAqB,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAC7C,CAAC;AAEF,YAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,kBAAkB,GAAG,eAAe,CAAC;AAC3C,aAAA;YAED,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACrD,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;YAC3D,OAAO;AACR,SAAA;AAED,QAAA,IAAI,KAAa,CAAC;QAElB,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,QAAA,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAErF,QAAA,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;AAChC,YAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAEhC,YAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACnC,kBAAE,CAAC;AACH,kBAAE,gBAAgB,GAAG,CAAC,CAAC;YAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAErC,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC;AAC9B,YAAA,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AACrC,kBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACzB,kBAAE,iBAAiB,GAAG,CAAC,CAAC;YAE1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrC,YAAA,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACzE,aAAA;AACF,SAAA;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;AAElB,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEnD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CACxB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,KAAK,CAAC,CACpE,CAAC;KACH;AAMO,IAAA,aAAa,CAAC,SAAoB,EAAA;QACxC,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AACrC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,0BAA0B,GAAG,SAAS,KAAK,SAAS,CAAC,IAAI;AAC5D,sBAAE,IAAI,CAAC,0BAA0B,GAAG,CAAC;AACrC,sBAAE,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;AACvC,gBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAC7D,sBAAE,CAAC;AACH,sBAAE,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;AAClC,oBAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,cAAc;AACnD,0BAAE,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;0BAC9B,CAAC,CAAC;AACP,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,0BAA0B,GAAG,CAAC,CAAC;AACvE,iBAAA;AACF,aAAA;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAC1D,CAAC,KAAqB,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CACpD,CAAC;AACH,aAAA;YACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACtD,SAAA;KACF;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,cAAc,EAAE;AAClD,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC;iBACxD,GAAG,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AAChD,SAAA;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAqB,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5E,SAAA;KACF;AAED;;;AAGG;AACK,IAAA,OAAO,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YAChB,IAAI,CAAC,KAAK,EAAE,CAAC;YAEb,OAAO;AACR,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;AACtE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAChE,YAAA,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE;AACvC,gBAAA,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;AAC7B,aAAA;AACF,SAAA;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAE1C,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,YAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,YAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,SAAA;KACF;AAED;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC1E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAS,MAAK;AAChE,gBAAA,OAAO,MAAM,CAAC,WAAW,CAAC,MAAK;AAC7B,oBAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjC,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;wBACnB,IACE,IAAI,CAAC,SAAS;AACd,4BAAA,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrB,4BAAA,SAAS,GAAG,CAAC;AACb,4BAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAClB;4BACA,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9B,yBAAA;AAAM,6BAAA;4BACL,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,yBAAA;AACH,qBAAC,CAAC,CAAC;iBACJ,EAAE,QAAQ,CAAC,CAAC;AACf,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;KAC/B;AAED;;AAEG;IACK,UAAU,GAAA;QAChB,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC;AAC/B,SAAA;KACF;AAED,IAAA,kBAAkB,CAAC,UAA2B,EAAA;QAC5C,IAAI,UAAU,KAAK,MAAM,EAAE;AACzB,YAAA,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;AAClI,SAAA;AAED,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;KACxI;;AAvxBU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,mEA4GwC,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA5GpE,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,2dC3C9B,wiEAmDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDRa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,wiEAAA,EAAA,CAAA;;0BA+GyC,MAAM;2BAAC,WAAW,CAAA;4CA1GtE,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAEG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAGG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAGG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAEG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAIN,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAKP,gBAAgB,EAAA,CAAA;sBADf,MAAM;gBAKH,WAAW,EAAA,CAAA;sBADd,KAAK;gBAqBN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAQF,QAAQ,EAAA,CAAA;sBADX,KAAK;;;MEtDK,cAAc,CAAA;AAkBzB,IAAA,WAAA,CAAY,QAA2B,EAAA;;QAdvC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QAEa,IAAS,CAAA,SAAA,GAAG,MAAM,CAAC;QACnB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QACG,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;;QAK5D,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAIhB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAA,EAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAA,CAAA,CAAG,CAAC;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,GAAG,CAAC,CAAC;KACnD;;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACjC;;2GAhCU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAjCf,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uUAAA,CAAA,EAAA,CAAA,CAAA;2FA6BU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnC1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,OAAO,EACP,QAAA,EAAA,CAAA;;;;GAIT,EAEK,IAAA,EAAA;AACJ,wBAAA,oBAAoB,EAAE,SAAS;AAC/B,wBAAA,0BAA0B,EAAE,WAAW;AACxC,qBAAA,EAAA,MAAA,EAAA,CAAA,uUAAA,CAAA,EAAA,CAAA;qGA4BD,MAAM,EAAA,CAAA;sBAFL,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,KAAK;gBAGsB,SAAS,EAAA,CAAA;sBAApC,WAAW;uBAAC,aAAa,CAAA;gBACE,KAAK,EAAA,CAAA;sBAAhC,WAAW;uBAAC,aAAa,CAAA;gBACe,UAAU,EAAA,CAAA;sBAAlD,WAAW;uBAAC,0BAA0B,CAAA;gBAKvC,QAAQ,EAAA,CAAA;sBAFP,WAAW;uBAAC,YAAY,CAAA;;sBACxB,WAAW;uBAAC,qBAAqB,CAAA;;;MC9CvB,cAAc,CAAA;AACzB,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KACpD;;2GAHU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,CAHV,cAAc,EAAE,iBAAiB,aADtC,YAAY,CAAA,EAAA,OAAA,EAAA,CAEZ,cAAc,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEhC,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJf,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,YAAY,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;AAC7C,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}
|
1
|
+
{"version":3,"file":"ngx-bootstrap-carousel.mjs","sources":["../../../../src/carousel/carousel.config.ts","../../../../src/carousel/utils.ts","../../../../src/carousel/carousel.component.ts","../../../../src/carousel/carousel.component.html","../../../../src/carousel/slide.component.ts","../../../../src/carousel/carousel.module.ts","../../../../src/carousel/ngx-bootstrap-carousel.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CarouselConfig {\n /* Default interval of auto changing of slides */\n interval = 5000;\n\n /* Is loop of auto changing of slides can be paused */\n noPause = false;\n\n /* Is slides can wrap from the last to the first slide */\n noWrap = false;\n\n /* Show carousel-indicators */\n showIndicators = true;\n\n /* Slides can be paused on focus */\n pauseOnFocus = false;\n\n /* If `true` - carousel indicators indicate slides chunks works ONLY if singleSlideOffset = FALSE */\n indicatorsByChunk = false;\n\n /* If value more then 1 — carousel works in multilist mode */\n itemsPerSlide = 1;\n\n /* If `true` — carousel shifts by one element. By default carousel shifts by number\n of visible elements (itemsPerSlide field) */\n singleSlideOffset = false;\n}\n","/**\n * Returns the index of the last element in the array where predicate is true, and -1\n * otherwise.\n * @param array The source array to search in\n * @param predicate find calls predicate once for each element of the array, in descending\n * order, until it finds one where predicate returns true. If such an element is found,\n * findLastIndex immediately returns that element index. Otherwise, findLastIndex returns -1.\n */\nexport function findLastIndex<T>(array: T[], predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n\n while (l--) {\n if (predicate(array[l], l, array)) {\n return l;\n }\n }\n\n return -1;\n}\n\nexport function chunkByNumber<T>(array: T[], size: number): T[][] {\n const out = [];\n const n = Math.ceil((array.length) / size);\n let i = 0;\n\n while (i < n) {\n const chunk = array.splice(\n 0,\n (i === n - 1) && size < array.length ? array.length : size\n );\n\n out.push(chunk);\n i++;\n }\n\n return out;\n}\n\nexport function isNumber(value?: any): value is number {\n return typeof value === 'number' || Object.prototype.toString.call(value) === '[object Number]';\n}\n","/***\n * pause (not yet supported) (?string='hover') - event group name which pauses\n * the cycling of the carousel, if hover pauses on mouseenter and resumes on\n * mouseleave keyboard (not yet supported) (?boolean=true) - if false\n * carousel will not react to keyboard events\n * note: swiping not yet supported\n */\n/****\n * Problems:\n * 1) if we set an active slide via model changes, .active class remains on a\n * current slide.\n * 2) if we have only one slide, we shouldn't show prev/next nav buttons\n * 3) if first or last slide is active and noWrap is true, there should be\n * \"disabled\" class on the nav buttons.\n * 4) default interval should be equal 5000\n */\n\nimport {\n Component, EventEmitter, Input, NgZone, OnDestroy, Output, AfterViewInit, Inject, PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\nimport { LinkedList, getBsVer, IBsVersion } from 'ngx-bootstrap/utils';\nimport { SlideComponent } from './slide.component';\nimport { CarouselConfig } from './carousel.config';\nimport { findLastIndex, chunkByNumber, isNumber } from './utils';\nimport { SlideWithIndex, IndexedSlideList } from './models';\n\nexport enum Direction {\n UNKNOWN,\n NEXT,\n PREV\n}\n\nlet _currentId = 1;\n\n/**\n * Base element to create carousel\n */\n@Component({\n selector: 'carousel',\n templateUrl: './carousel.component.html'\n})\nexport class CarouselComponent implements AfterViewInit, OnDestroy {\n /* If `true` — carousel will not cycle continuously and will have hard stops (prevent looping) */\n @Input() noWrap = false;\n /* If `true` — will disable pausing on carousel mouse hover */\n @Input() noPause = false;\n /* If `true` — carousel-indicators are visible */\n @Input() showIndicators = true;\n /* If `true` - autoplay will be stopped on focus */\n @Input() pauseOnFocus = false;\n /* If `true` - carousel indicators indicate slides chunks\n works ONLY if singleSlideOffset = FALSE */\n @Input() indicatorsByChunk = false;\n /* If value more then 1 — carousel works in multilist mode */\n @Input() itemsPerSlide = 1;\n /* If `true` — carousel shifts by one element. By default carousel shifts by number\n of visible elements (itemsPerSlide field) */\n @Input() singleSlideOffset = false;\n /** Turn on/off animation. Animation doesn't work for multilist carousel */\n @Input() isAnimated = false;\n\n /** Will be emitted when active slide has been changed. Part of two-way-bindable [(activeSlide)] property */\n @Output()\n activeSlideChange = new EventEmitter<number>(false);\n\n /** Will be emitted when active slides has been changed in multilist mode */\n @Output()\n slideRangeChange = new EventEmitter<number[]|void>();\n\n /** Index of currently displayed slide(started for 0) */\n @Input()\n set activeSlide(index: number) {\n if (this.multilist) {\n return;\n }\n\n if (isNumber(index)) {\n this.customActiveSlide = index;\n }\n\n if (this._slides.length && index !== this._currentActiveSlide) {\n this._select(index);\n }\n }\n\n get activeSlide(): number {\n return this._currentActiveSlide || 0;\n }\n\n /* Index to start display slides from it */\n @Input()\n startFromIndex = 0;\n\n /**\n * Delay of item cycling in milliseconds. If false, carousel won't cycle\n * automatically.\n */\n @Input()\n get interval(): number {\n return this._interval;\n }\n\n set interval(value: number) {\n this._interval = value;\n this.restartTimer();\n }\n\n get slides(): SlideComponent[] {\n return this._slides.toArray();\n }\n\n get isFirstSlideVisible(): boolean {\n const indexes = this.getVisibleIndexes();\n if (!indexes || (indexes instanceof Array && !indexes.length)) {\n return false;\n }\n\n return indexes.includes(0);\n }\n\n get isLastSlideVisible(): boolean {\n const indexes = this.getVisibleIndexes();\n if (!indexes || (indexes instanceof Array && !indexes.length)) {\n return false;\n }\n\n return indexes.includes(this._slides.length -1);\n }\n\n protected currentInterval?: number;\n protected _currentActiveSlide?: number;\n protected _interval = 5000;\n protected _slides: LinkedList<SlideComponent> = new LinkedList<SlideComponent>();\n protected _chunkedSlides?: SlideWithIndex[][];\n protected _slidesWithIndexes?: SlideWithIndex[];\n protected _currentVisibleSlidesIndex = 0;\n protected isPlaying = false;\n protected destroyed = false;\n private customActiveSlide?: number;\n currentId = 0;\n\n get _bsVer(): IBsVersion {\n return getBsVer();\n }\n\n constructor(config: CarouselConfig, private ngZone: NgZone, @Inject(PLATFORM_ID) public platformId: number) {\n Object.assign(this, config);\n this.currentId = _currentId++;\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this.singleSlideOffset) {\n this.indicatorsByChunk = false;\n }\n if (this.multilist) {\n this._chunkedSlides = chunkByNumber(\n this.mapSlidesAndIndexes(),\n this.itemsPerSlide\n );\n this.selectInitialSlides();\n }\n\n if (this.customActiveSlide && !this.multilist) {\n this._select(this.customActiveSlide);\n }\n }, 0);\n }\n\n ngOnDestroy(): void {\n this.destroyed = true;\n }\n\n /**\n * Adds new slide. If this slide is first in collection - set it as active\n * and starts auto changing\n * @param slide\n */\n addSlide(slide: SlideComponent): void {\n this._slides.add(slide);\n\n if (this.multilist && this._slides.length <= this.itemsPerSlide) {\n slide.active = true;\n }\n\n if (!this.multilist && this.isAnimated) {\n slide.isAnimated = true;\n }\n\n if (!this.multilist && this._slides.length === 1) {\n this._currentActiveSlide = undefined;\n if (!this.customActiveSlide) {\n this.activeSlide = 0;\n }\n this.play();\n }\n\n if (this.multilist && this._slides.length > this.itemsPerSlide) {\n this.play();\n }\n }\n\n /**\n * Removes specified slide. If this slide is active - will roll to another\n * slide\n * @param slide\n */\n removeSlide(slide: SlideComponent): void {\n const remIndex = this._slides.indexOf(slide);\n\n if (this._currentActiveSlide === remIndex) {\n // removing of active slide\n let nextSlideIndex: number;\n if (this._slides.length > 1) {\n // if this slide last - will roll to first slide, if noWrap flag is\n // FALSE or to previous, if noWrap is TRUE in case, if this slide in\n // middle of collection, index of next slide is same to removed\n nextSlideIndex = !this.isLast(remIndex)\n ? remIndex\n : this.noWrap ? remIndex - 1 : 0;\n }\n this._slides.remove(remIndex);\n\n // prevents exception with changing some value after checking\n setTimeout(() => {\n this._select(nextSlideIndex);\n }, 0);\n } else {\n this._slides.remove(remIndex);\n const currentSlideIndex = this.getCurrentSlideIndex();\n setTimeout(() => {\n // after removing, need to actualize index of current active slide\n this._currentActiveSlide = currentSlideIndex;\n this.activeSlideChange.emit(this._currentActiveSlide);\n }, 0);\n }\n }\n\n nextSlideFromInterval(force = false): void {\n this.move(Direction.NEXT, force);\n }\n\n /**\n * Rolling to next slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n nextSlide(force = false): void {\n if (this.isPlaying) {\n this.restartTimer();\n }\n this.move(Direction.NEXT, force);\n }\n\n /**\n * Rolling to previous slide\n * @param force: {boolean} if true - will ignore noWrap flag\n */\n previousSlide(force = false): void {\n if (this.isPlaying) {\n this.restartTimer();\n }\n this.move(Direction.PREV, force);\n }\n\n getFirstVisibleIndex(): number {\n return this.slides.findIndex(this.getActive);\n }\n\n getLastVisibleIndex(): number {\n return findLastIndex(this.slides, this.getActive);\n }\n\n getActive = (slide: SlideComponent) => slide.active;\n\n move(direction: Direction, force = false): void {\n const firstVisibleIndex = this.getFirstVisibleIndex();\n const lastVisibleIndex = this.getLastVisibleIndex();\n\n if (this.noWrap) {\n if (\n direction === Direction.NEXT &&\n this.isLast(lastVisibleIndex) ||\n direction === Direction.PREV &&\n firstVisibleIndex === 0\n ) {\n return;\n }\n }\n\n if (!this.multilist) {\n this.activeSlide = this.findNextSlideIndex(direction, force) || 0;\n } else {\n this.moveMultilist(direction);\n }\n }\n\n /**\n * Swith slides by enter, space and arrows keys\n * @internal\n */\n keydownPress(event: KeyboardEvent) {\n if (event.keyCode === 13 || event.key === 'Enter' || event.keyCode === 32 || event.key === 'Space') {\n this.nextSlide();\n event.preventDefault();\n\n return;\n }\n\n if (event.keyCode === 37 || event.key === 'LeftArrow') {\n this.previousSlide();\n\n return;\n }\n\n if (event.keyCode === 39 || event.key === 'RightArrow') {\n this.nextSlide();\n\n return;\n }\n }\n\n /**\n * Play on mouse leave\n * @internal\n */\n onMouseLeave(): void {\n if (!this.pauseOnFocus) {\n this.play();\n }\n }\n\n /**\n * Play on mouse up\n * @internal\n */\n onMouseUp(): void {\n if (!this.pauseOnFocus) {\n this.play();\n }\n }\n\n /**\n * When slides on focus autoplay is stopped(optional)\n * @internal\n */\n pauseFocusIn(): void {\n if (this.pauseOnFocus) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n\n /**\n * When slides out of focus autoplay is started\n * @internal\n */\n pauseFocusOut(): void {\n this.play();\n }\n\n /**\n * Rolling to specified slide\n * @param index: {number} index of slide, which must be shown\n */\n selectSlide(index: number): void {\n if (this.isPlaying) {\n this.restartTimer();\n }\n\n if (!this.multilist) {\n this.activeSlide = this.indicatorsByChunk ? index * this.itemsPerSlide : index;\n } else {\n this.selectSlideRange(this.indicatorsByChunk ? index * this.itemsPerSlide : index);\n }\n }\n\n /**\n * Starts a auto changing of slides\n */\n play(): void {\n if (!this.isPlaying) {\n this.isPlaying = true;\n this.restartTimer();\n }\n }\n\n /**\n * Stops a auto changing of slides\n */\n pause(): void {\n if (!this.noPause) {\n this.isPlaying = false;\n this.resetTimer();\n }\n }\n\n /**\n * Finds and returns index of currently displayed slide\n */\n getCurrentSlideIndex(): number {\n return this._slides.findIndex(this.getActive);\n }\n\n /**\n * Defines, whether the specified index is last in collection\n * @param index\n */\n isLast(index: number): boolean {\n return index + 1 >= this._slides.length;\n }\n\n /**\n * Defines, whether the specified index is first in collection\n * @param index\n */\n isFirst(index: number): boolean {\n return index === 0;\n }\n\n indicatorsSlides(): SlideComponent[] {\n return this.slides.filter(\n (slide: SlideComponent, index: number) => !this.indicatorsByChunk || index % this.itemsPerSlide === 0\n );\n }\n\n private selectInitialSlides(): void {\n const startIndex = this.startFromIndex <= this._slides.length\n ? this.startFromIndex\n : 0;\n\n this.hideSlides();\n\n if (this.singleSlideOffset) {\n this._slidesWithIndexes = this.mapSlidesAndIndexes();\n\n if (this._slides.length - startIndex < this.itemsPerSlide) {\n const slidesToAppend = this._slidesWithIndexes.slice(0, startIndex);\n\n this._slidesWithIndexes = [\n ...this._slidesWithIndexes,\n ...slidesToAppend\n ]\n .slice(slidesToAppend.length)\n .slice(0, this.itemsPerSlide);\n } else {\n this._slidesWithIndexes = this._slidesWithIndexes.slice(\n startIndex,\n startIndex + this.itemsPerSlide\n );\n }\n\n this._slidesWithIndexes.forEach((slide: SlideWithIndex) => slide.item.active = true);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n } else {\n this.selectRangeByNestedIndex(startIndex);\n }\n\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n\n /**\n * Defines next slide index, depending of direction\n * @param direction: Direction(UNKNOWN|PREV|NEXT)\n * @param force: {boolean} if TRUE - will ignore noWrap flag, else will\n * return undefined if next slide require wrapping\n */\n private findNextSlideIndex(direction: Direction, force: boolean): number | void {\n let nextSlideIndex = 0;\n\n if (\n !force &&\n (this.isLast(this.activeSlide) &&\n direction !== Direction.PREV &&\n this.noWrap)\n ) {\n return;\n }\n\n switch (direction) {\n case Direction.NEXT:\n // if this is last slide, not force, looping is disabled\n // and need to going forward - select current slide, as a next\n if (typeof this._currentActiveSlide === 'undefined') {\n nextSlideIndex = 0;\n break;\n }\n if (!this.isLast(this._currentActiveSlide)) {\n nextSlideIndex = this._currentActiveSlide + 1;\n break;\n }\n nextSlideIndex = !force && this.noWrap ? this._currentActiveSlide : 0;\n break;\n case Direction.PREV:\n // if this is first slide, not force, looping is disabled\n // and need to going backward - select current slide, as a next\n if (typeof this._currentActiveSlide === 'undefined') {\n nextSlideIndex = 0;\n break;\n }\n if (this._currentActiveSlide > 0) {\n nextSlideIndex = this._currentActiveSlide - 1;\n break;\n }\n if (!force && this.noWrap) {\n nextSlideIndex = this._currentActiveSlide;\n break;\n }\n nextSlideIndex = this._slides.length - 1;\n break;\n default:\n throw new Error('Unknown direction');\n }\n\n return nextSlideIndex;\n }\n\n private mapSlidesAndIndexes(): SlideWithIndex[] {\n return this.slides\n .slice()\n .map((slide: SlideComponent, index: number) => {\n return {\n index,\n item: slide\n };\n });\n }\n\n\n private selectSlideRange(index: number): void {\n if (this.isIndexInRange(index)) {\n return;\n }\n\n this.hideSlides();\n\n if (!this.singleSlideOffset) {\n this.selectRangeByNestedIndex(index);\n } else {\n const startIndex = this.isIndexOnTheEdges(index)\n ? index\n : index - this.itemsPerSlide + 1;\n\n const endIndex = this.isIndexOnTheEdges(index)\n ? index + this.itemsPerSlide\n : index + 1;\n\n this._slidesWithIndexes = this.mapSlidesAndIndexes().slice(startIndex, endIndex);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n\n this._slidesWithIndexes.forEach((slide: SlideWithIndex) => slide.item.active = true);\n }\n\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n\n private selectRangeByNestedIndex(index: number): void {\n if (!this._chunkedSlides) {\n return;\n }\n\n const selectedRange = this._chunkedSlides\n .map((slidesList, i: number) => {\n return {\n index: i,\n list: slidesList\n };\n })\n .find(\n (slidesList: IndexedSlideList) => {\n return slidesList.list.find(slide => slide.index === index) !== undefined;\n }\n );\n\n if (!selectedRange) {\n return;\n }\n\n this._currentVisibleSlidesIndex = selectedRange.index;\n\n this._chunkedSlides[selectedRange.index].forEach((slide: SlideWithIndex) => {\n slide.item.active = true;\n });\n }\n\n private isIndexOnTheEdges(index: number): boolean {\n return (\n index + 1 - this.itemsPerSlide <= 0 ||\n index + this.itemsPerSlide <= this._slides.length\n );\n }\n\n private isIndexInRange(index: number): boolean {\n if (this.singleSlideOffset && this._slidesWithIndexes) {\n const visibleIndexes = this._slidesWithIndexes.map((slide: SlideWithIndex) => slide.index);\n\n return visibleIndexes.indexOf(index) >= 0;\n }\n\n return (\n index <= this.getLastVisibleIndex() &&\n index >= this.getFirstVisibleIndex()\n );\n }\n\n private hideSlides(): void {\n this.slides.forEach((slide: SlideComponent) => slide.active = false);\n }\n\n private isVisibleSlideListLast(): boolean {\n if (!this._chunkedSlides) {\n return false;\n }\n\n return this._currentVisibleSlidesIndex === this._chunkedSlides.length - 1;\n }\n\n private isVisibleSlideListFirst(): boolean {\n return this._currentVisibleSlidesIndex === 0;\n }\n\n private moveSliderByOneItem(direction: Direction): void {\n let firstVisibleIndex: number;\n let lastVisibleIndex: number;\n let indexToHide: number;\n let indexToShow: number;\n\n if (this.noWrap) {\n firstVisibleIndex = this.getFirstVisibleIndex();\n lastVisibleIndex = this.getLastVisibleIndex();\n\n indexToHide = direction === Direction.NEXT\n ? firstVisibleIndex\n : lastVisibleIndex;\n\n indexToShow = direction !== Direction.NEXT\n ? firstVisibleIndex - 1\n : !this.isLast(lastVisibleIndex)\n ? lastVisibleIndex + 1 : 0;\n\n const slideToHide = this._slides.get(indexToHide);\n if (slideToHide) {\n slideToHide.active = false;\n }\n\n const slideToShow = this._slides.get(indexToShow);\n if (slideToShow) {\n slideToShow.active = true;\n }\n\n const slidesToReorder = this.mapSlidesAndIndexes().filter(\n (slide: SlideWithIndex) => slide.item.active\n );\n\n this.makeSlidesConsistent(slidesToReorder);\n if (this.singleSlideOffset) {\n this._slidesWithIndexes = slidesToReorder;\n }\n\n this.slideRangeChange.emit(this.getVisibleIndexes());\n return;\n }\n\n if (!this._slidesWithIndexes || !this._slidesWithIndexes[0]) {\n return;\n }\n\n let index: number;\n\n firstVisibleIndex = this._slidesWithIndexes[0].index;\n lastVisibleIndex = this._slidesWithIndexes[this._slidesWithIndexes.length - 1].index;\n\n if (direction === Direction.NEXT) {\n this._slidesWithIndexes.shift();\n\n index = this.isLast(lastVisibleIndex)\n ? 0\n : lastVisibleIndex + 1;\n\n const item = this._slides.get(index);\n\n if (item) {\n this._slidesWithIndexes.push({ index, item });\n }\n } else {\n this._slidesWithIndexes.pop();\n index = this.isFirst(firstVisibleIndex)\n ? this._slides.length - 1\n : firstVisibleIndex - 1;\n\n const item = this._slides.get(index);\n if (item) {\n this._slidesWithIndexes = [{ index, item }, ...this._slidesWithIndexes];\n }\n }\n\n this.hideSlides();\n\n this._slidesWithIndexes.forEach(slide => slide.item.active = true);\n this.makeSlidesConsistent(this._slidesWithIndexes);\n\n this.slideRangeChange.emit(\n this._slidesWithIndexes.map((slide: SlideWithIndex) => slide.index)\n );\n }\n\n private makeSlidesConsistent = (slides: SlideWithIndex[]): void => {\n slides.forEach((slide: SlideWithIndex, index: number) => slide.item.order = index);\n };\n\n private moveMultilist(direction: Direction): void {\n if (this.singleSlideOffset) {\n this.moveSliderByOneItem(direction);\n } else {\n this.hideSlides();\n\n if (this.noWrap) {\n this._currentVisibleSlidesIndex = direction === Direction.NEXT\n ? this._currentVisibleSlidesIndex + 1\n : this._currentVisibleSlidesIndex - 1;\n } else if (direction === Direction.NEXT) {\n this._currentVisibleSlidesIndex = this.isVisibleSlideListLast()\n ? 0\n : this._currentVisibleSlidesIndex + 1;\n } else {\n if (this.isVisibleSlideListFirst()) {\n this._currentVisibleSlidesIndex = this._chunkedSlides\n ? this._chunkedSlides.length - 1\n : 0;\n } else {\n this._currentVisibleSlidesIndex = this._currentVisibleSlidesIndex - 1;\n }\n }\n\n if (this._chunkedSlides) {\n this._chunkedSlides[this._currentVisibleSlidesIndex].forEach(\n (slide: SlideWithIndex) => slide.item.active = true\n );\n }\n this.slideRangeChange.emit(this.getVisibleIndexes());\n }\n }\n\n private getVisibleIndexes(): number[] | void {\n if (!this.singleSlideOffset && this._chunkedSlides) {\n return this._chunkedSlides[this._currentVisibleSlidesIndex]\n .map((slide: SlideWithIndex) => slide.index);\n }\n\n if (this._slidesWithIndexes) {\n return this._slidesWithIndexes.map((slide: SlideWithIndex) => slide.index);\n }\n }\n\n /**\n * Sets a slide, which specified through index, as active\n * @param index\n */\n private _select(index: number): void {\n if (isNaN(index)) {\n this.pause();\n\n return;\n }\n\n if (!this.multilist && typeof this._currentActiveSlide !== 'undefined') {\n const currentSlide = this._slides.get(this._currentActiveSlide);\n if (typeof currentSlide !== 'undefined') {\n currentSlide.active = false;\n }\n }\n\n const nextSlide = this._slides.get(index);\n\n if (typeof nextSlide !== 'undefined') {\n this._currentActiveSlide = index;\n nextSlide.active = true;\n this.activeSlide = index;\n this.activeSlideChange.emit(index);\n }\n }\n\n /**\n * Starts loop of auto changing of slides\n */\n private restartTimer() {\n this.resetTimer();\n const interval = +this.interval;\n if (!isNaN(interval) && interval > 0 && isPlatformBrowser(this.platformId)) {\n this.currentInterval = this.ngZone.runOutsideAngular<number>(() => {\n return window.setInterval(() => {\n const nInterval = +this.interval;\n this.ngZone.run(() => {\n if (\n this.isPlaying &&\n !isNaN(this.interval) &&\n nInterval > 0 &&\n this.slides.length\n ) {\n this.nextSlideFromInterval();\n } else {\n this.pause();\n }\n });\n }, interval);\n });\n }\n }\n\n get multilist(): boolean {\n return this.itemsPerSlide > 1;\n }\n\n /**\n * Stops loop of auto changing of slides\n */\n private resetTimer(): void {\n if (this.currentInterval) {\n clearInterval(this.currentInterval);\n this.currentInterval = void 0;\n }\n }\n\n checkDisabledClass(buttonType: 'prev' | 'next'): boolean {\n if (buttonType === 'prev') {\n return (this.activeSlide === 0 && this.noWrap && !this.multilist) || (this.isFirstSlideVisible && this.noWrap && this.multilist);\n }\n\n return (this.isLast(this.activeSlide) && this.noWrap && !this.multilist) || (this.isLastSlideVisible && this.noWrap && this.multilist);\n }\n}\n","<div (mouseenter)=\"pause()\"\n (mouseleave)=\"onMouseLeave()\"\n (mouseup)=\"onMouseUp()\"\n (keydown)=\"keydownPress($event)\"\n (focusin)=\"pauseFocusIn()\"\n (focusout)=\"pauseFocusOut()\"\n [id]=\"'carousel' + currentId\"\n class=\"carousel slide\" tabindex=\"0\">\n <ng-container *ngIf=\"!_bsVer.isBs5 && showIndicators && slides.length > 1\">\n <ol class=\"carousel-indicators\">\n <li *ngFor=\"let slide of indicatorsSlides(); let i = index;\"\n [class.active]=\"slide.active === true\"\n (click)=\"selectSlide(i)\">\n </li>\n </ol>\n </ng-container>\n <ng-container *ngIf=\"_bsVer.isBs5 && showIndicators && slides.length > 1\">\n <div class=\"carousel-indicators\">\n <button\n *ngFor=\"let slide of indicatorsSlides(); let i = index;\"\n [class.active]=\"slide.active === true\"\n (click)=\"selectSlide(i)\"\n type=\"button\"\n [attr.data-bs-target]=\"'#carousel' + currentId\"\n [attr.data-bs-slide-to]=\"i\" aria-current=\"true\"\n >\n </button>\n </div>\n </ng-container>\n <div class=\"carousel-inner\" [ngStyle]=\"{'display': multilist ? 'flex' : 'block'}\">\n <ng-content></ng-content>\n </div>\n <a class=\"left carousel-control carousel-control-prev\"\n href=\"javascript:void(0);\"\n [class.disabled]=\"checkDisabledClass('prev')\"\n [attr.data-bs-target]=\"'#carousel' + currentId\"\n *ngIf=\"slides.length > 1\"\n (click)=\"previousSlide()\"\n tabindex=\"0\" role=\"button\">\n <span class=\"icon-prev carousel-control-prev-icon\" aria-hidden=\"true\"></span>\n <span class=\"sr-only visually-hidden\">Previous</span>\n </a>\n\n <a class=\"right carousel-control carousel-control-next\"\n href=\"javascript:void(0);\"\n *ngIf=\"slides.length > 1\"\n (click)=\"nextSlide()\"\n [class.disabled]=\"checkDisabledClass('next')\"\n [attr.data-bs-target]=\"'#carousel' + currentId\"\n tabindex=\"0\" role=\"button\">\n <span class=\"icon-next carousel-control-next-icon\" aria-hidden=\"true\"></span>\n <span class=\"sr-only visually-hidden\">Next</span>\n </a>\n</div>\n","import {\n Component,\n HostBinding,\n OnDestroy,\n Input,\n OnInit\n} from '@angular/core';\n\nimport { CarouselComponent } from './carousel.component';\n\n@Component({\n selector: 'slide',\n template: `\n <div [class.active]=\"active\" class=\"item\">\n <ng-content></ng-content>\n </div>\n `,\n // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n host: {\n '[attr.aria-hidden]': '!active',\n '[class.multilist-margin]': 'multilist'\n },\n styles: [`\n :host.carousel-animation {\n transition: opacity 0.6s ease, visibility 0.6s ease;\n float: left;\n }\n :host.carousel-animation.active {\n opacity: 1;\n visibility: visible;\n }\n :host.carousel-animation:not(.active) {\n display: block;\n position: absolute;\n opacity: 0;\n visibility: hidden;\n }\n :host.multilist-margin {\n margin-right: auto;\n }\n :host.carousel-item {\n perspective: 1000px;\n }\n `]\n})\nexport class SlideComponent implements OnInit, OnDestroy {\n /** Is current slide active */\n @HostBinding('class.active')\n @Input()\n active = false;\n\n @HostBinding('style.width') itemWidth = '100%';\n @HostBinding('style.order') order = 0;\n @HostBinding('class.carousel-animation') isAnimated = false;\n\n /** Wraps element by appropriate CSS classes */\n @HostBinding('class.item')\n @HostBinding('class.carousel-item')\n addClass = true;\n\n /** Link to Parent(container-collection) component */\n protected carousel: CarouselComponent;\n multilist = false;\n constructor(carousel: CarouselComponent) {\n this.carousel = carousel;\n }\n\n /** Fires changes in container collection after adding a new slide instance */\n ngOnInit(): void {\n this.carousel.addSlide(this);\n this.itemWidth = `${100 / this.carousel.itemsPerSlide}%`;\n this.multilist = this.carousel?.itemsPerSlide > 1;\n }\n\n /** Fires changes in container collection after removing of this slide instance */\n ngOnDestroy(): void {\n this.carousel.removeSlide(this);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { CarouselComponent } from './carousel.component';\nimport { SlideComponent } from './slide.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [SlideComponent, CarouselComponent],\n exports: [SlideComponent, CarouselComponent]\n})\nexport class CarouselModule {\n static forRoot(): ModuleWithProviders<CarouselModule> {\n return { ngModule: CarouselModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CarouselComponent"],"mappings":"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"}
|
package/carousel/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ngx-bootstrap/carousel",
|
3
|
-
"version": "
|
3
|
+
"version": "10.0.0",
|
4
4
|
"author": "Dmitriy Shekhovtsov <valorkin@gmail.com>",
|
5
5
|
"license": "MIT",
|
6
6
|
"module": "fesm2015/ngx-bootstrap-carousel.mjs",
|
@@ -29,6 +29,6 @@
|
|
29
29
|
"peerDependencies": {
|
30
30
|
"@angular/core": "14.0.6",
|
31
31
|
"@angular/common": "14.0.6",
|
32
|
-
"ngx-bootstrap/utils": "
|
32
|
+
"ngx-bootstrap/utils": "10.0.0"
|
33
33
|
}
|
34
34
|
}
|
package/chronos/package.json
CHANGED
package/collapse/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ngx-bootstrap/component-loader",
|
3
|
-
"version": "
|
3
|
+
"version": "10.0.0",
|
4
4
|
"author": "Dmitriy Shekhovtsov <valorkin@gmail.com>",
|
5
5
|
"license": "MIT",
|
6
6
|
"module": "fesm2015/ngx-bootstrap-component-loader.mjs",
|
@@ -28,6 +28,6 @@
|
|
28
28
|
},
|
29
29
|
"peerDependencies": {
|
30
30
|
"@angular/core": "14.0.6",
|
31
|
-
"ngx-bootstrap/positioning": "
|
31
|
+
"ngx-bootstrap/positioning": "10.0.0"
|
32
32
|
}
|
33
33
|
}
|
package/datepicker/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "ngx-bootstrap/datepicker",
|
3
|
-
"version": "
|
3
|
+
"version": "10.0.0",
|
4
4
|
"author": "Dmitriy Shekhovtsov <valorkin@gmail.com>",
|
5
5
|
"license": "MIT",
|
6
6
|
"module": "fesm2015/ngx-bootstrap-datepicker.mjs",
|
@@ -29,11 +29,11 @@
|
|
29
29
|
"peerDependencies": {
|
30
30
|
"rxjs": "7.5.6",
|
31
31
|
"@angular/core": "14.0.6",
|
32
|
-
"ngx-bootstrap/component-loader": "
|
32
|
+
"ngx-bootstrap/component-loader": "10.0.0",
|
33
33
|
"@angular/forms": "14.0.6",
|
34
|
-
"ngx-bootstrap/chronos": "
|
35
|
-
"ngx-bootstrap/tooltip": "
|
36
|
-
"ngx-bootstrap/timepicker": "
|
34
|
+
"ngx-bootstrap/chronos": "10.0.0",
|
35
|
+
"ngx-bootstrap/tooltip": "10.0.0",
|
36
|
+
"ngx-bootstrap/timepicker": "10.0.0",
|
37
37
|
"@angular/animations": "14.0.6"
|
38
38
|
}
|
39
39
|
}
|
@@ -66,7 +66,6 @@ export declare class BsDropdownDirective implements OnInit, OnDestroy {
|
|
66
66
|
* Emits an event when the popover is hidden
|
67
67
|
*/
|
68
68
|
onHidden: EventEmitter<boolean>;
|
69
|
-
get isBs4(): boolean;
|
70
69
|
private _dropdown;
|
71
70
|
private get _showInline();
|
72
71
|
private _isInlineOpen;
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';
|
2
2
|
import { BsDropdownState } from './bs-dropdown.state';
|
3
|
-
import { isBs3 } from 'ngx-bootstrap/utils';
|
4
3
|
import { dropdownAnimation } from './dropdown-animations';
|
5
4
|
import { AnimationBuilder } from '@angular/animations';
|
6
5
|
import * as i0 from "@angular/core";
|
@@ -21,7 +20,7 @@ export class BsDropdownContainerComponent {
|
|
21
20
|
this.isOpen = value;
|
22
21
|
const dropdown = this._element.nativeElement.querySelector('.dropdown-menu');
|
23
22
|
this._renderer.addClass(this._element.nativeElement.querySelector('div'), 'open');
|
24
|
-
if (dropdown
|
23
|
+
if (dropdown) {
|
25
24
|
this._renderer.addClass(dropdown, 'show');
|
26
25
|
if (dropdown.classList.contains('dropdown-menu-right') || dropdown.classList.contains('dropdown-menu-end')) {
|
27
26
|
this._renderer.setStyle(dropdown, 'left', 'auto');
|
@@ -77,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
77
76
|
`
|
78
77
|
}]
|
79
78
|
}], ctorParameters: function () { return [{ type: i1.BsDropdownState }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.AnimationBuilder }]; } });
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kcm9wZG93bi9icy1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBRVYsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBR3pFLGlGQUFpRjtBQUNqRixzREFBc0Q7QUFnQnRELE1BQU0sT0FBTyw0QkFBNEI7SUFXdkMsWUFDVSxNQUF1QixFQUN2QixFQUFxQixFQUNyQixTQUFvQixFQUNwQixRQUFvQixFQUM1QixRQUEwQjtRQUpsQixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVk7UUFkOUIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQWlCYixJQUFJLENBQUMseUJBQXlCLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRW5FLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUNwRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUU3RSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFbEYsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUUxQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsRUFBRTtvQkFDMUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztpQkFDakQ7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtvQkFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQ3JCLFFBQVEsRUFDUixXQUFXLEVBQ1gsbUJBQW1CLENBQ3BCLENBQUM7aUJBQ0g7YUFDRjtZQUVELElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO2dCQUN0QyxJQUFJLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztxQkFDNUMsSUFBSSxFQUFFLENBQUM7YUFDWDtZQUVELElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUE5Q0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBOENELGdCQUFnQjtJQUNoQixTQUFTLENBQUMsRUFBVztRQUNuQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7eUhBNURVLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLHlJQVI3Qjs7Ozs7O0dBTVQ7MkZBRVUsNEJBQTRCO2tCQWZ4QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxxRUFBcUU7b0JBQ3JFLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsZ0RBQWdEO3FCQUN4RDtvQkFDRCxRQUFRLEVBQUU7Ozs7OztHQU1UO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBCc0Ryb3Bkb3duU3RhdGUgfSBmcm9tICcuL2JzLWRyb3Bkb3duLnN0YXRlJztcblxuaW1wb3J0IHsgZHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2Ryb3Bkb3duLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbi8vIHRvZG86IHJldmVydCBuZ0NsYXNzIHRvIFtjbGFzc10gd2hlbiBmYWxzZSBwb3NpdGl2ZSBhbmd1bGFyLWNsaSBpc3N1ZSBpcyBmaXhlZFxuLy8gICAgICAgICAgW2NsYXNzLmRyb3Bkb3duXT1cImRpcmVjdGlvbiA9PT0gJ2Rvd24nXCItLT5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLWRyb3Bkb3duLWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIHN0eWxlOiAnZGlzcGxheTpibG9jaztwb3NpdGlvbjogYWJzb2x1dGU7ei1pbmRleDogMTA0MCdcbiAgfSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtjbGFzcy5kcm9wdXBdPVwiZGlyZWN0aW9uID09PSAndXAnXCJcbiAgICAgICAgIFtuZ0NsYXNzXT1cIntkcm9wZG93bjogZGlyZWN0aW9uID09PSAnZG93bid9XCJcbiAgICAgICAgIFtjbGFzcy5zaG93XT1cImlzT3BlblwiXG4gICAgICAgICBbY2xhc3Mub3Blbl09XCJpc09wZW5cIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgQnNEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2ZhY3RvcnlEcm9wRG93bkFuaW1hdGlvbjogQW5pbWF0aW9uRmFjdG9yeTtcblxuICBnZXQgZGlyZWN0aW9uKCk6ICdkb3duJyB8ICd1cCcge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5kaXJlY3Rpb247XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdGF0ZTogQnNEcm9wZG93blN0YXRlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZixcbiAgICBfYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlclxuICApIHtcbiAgICB0aGlzLl9mYWN0b3J5RHJvcERvd25BbmltYXRpb24gPSBfYnVpbGRlci5idWlsZChkcm9wZG93bkFuaW1hdGlvbik7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSBfc3RhdGUuaXNPcGVuQ2hhbmdlLnN1YnNjcmliZSgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMuaXNPcGVuID0gdmFsdWU7XG4gICAgICBjb25zdCBkcm9wZG93biA9IHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZHJvcGRvd24tbWVudScpO1xuXG4gICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignZGl2JyksICdvcGVuJyk7XG5cbiAgICAgIGlmIChkcm9wZG93bikge1xuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyhkcm9wZG93biwgJ3Nob3cnKTtcblxuICAgICAgICBpZiAoZHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wZG93bi1tZW51LXJpZ2h0JykgfHwgZHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKCdkcm9wZG93bi1tZW51LWVuZCcpKSB7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoZHJvcGRvd24sICdsZWZ0JywgJ2F1dG8nKTtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShkcm9wZG93biwgJ3JpZ2h0JywgJzAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICd1cCcpIHtcbiAgICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShkcm9wZG93biwgJ3RvcCcsICdhdXRvJyk7XG4gICAgICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBkcm9wZG93bixcbiAgICAgICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICAgICAgJ3RyYW5zbGF0ZVkoLTEwMSUpJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGRyb3Bkb3duICYmIHRoaXMuX3N0YXRlLmlzQW5pbWF0ZWQpIHtcbiAgICAgICAgdGhpcy5fZmFjdG9yeURyb3BEb3duQW5pbWF0aW9uLmNyZWF0ZShkcm9wZG93bilcbiAgICAgICAgICAucGxheSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9jb250YWlucyhlbDogRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZWwpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
@@ -4,7 +4,6 @@ import { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader';
|
|
4
4
|
import { BsDropdownConfig } from './bs-dropdown.config';
|
5
5
|
import { BsDropdownContainerComponent } from './bs-dropdown-container.component';
|
6
6
|
import { BsDropdownState } from './bs-dropdown.state';
|
7
|
-
import { isBs3 } from 'ngx-bootstrap/utils';
|
8
7
|
import { AnimationBuilder } from '@angular/animations';
|
9
8
|
import { dropdownAnimation } from './dropdown-animations';
|
10
9
|
import * as i0 from "@angular/core";
|
@@ -101,9 +100,6 @@ export class BsDropdownDirective {
|
|
101
100
|
this.hide();
|
102
101
|
}
|
103
102
|
}
|
104
|
-
get isBs4() {
|
105
|
-
return !isBs3();
|
106
|
-
}
|
107
103
|
get _showInline() {
|
108
104
|
return !this.container;
|
109
105
|
}
|
@@ -249,11 +245,9 @@ export class BsDropdownDirective {
|
|
249
245
|
this._dropdown.dispose();
|
250
246
|
}
|
251
247
|
addBs4Polyfills() {
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
this.addDropupStyles();
|
256
|
-
}
|
248
|
+
this.addShowClass();
|
249
|
+
this.checkRightAlignment();
|
250
|
+
this.addDropupStyles();
|
257
251
|
}
|
258
252
|
playAnimation() {
|
259
253
|
if (this._state.isAnimated && this._inlinedMenu) {
|
@@ -298,7 +292,7 @@ export class BsDropdownDirective {
|
|
298
292
|
}
|
299
293
|
}
|
300
294
|
BsDropdownDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BsDropdownDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }, { token: i1.ComponentLoaderFactory }, { token: i2.BsDropdownState }, { token: i3.BsDropdownConfig }, { token: i4.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive });
|
301
|
-
BsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: { placement: "placement", triggers: "triggers", container: "container", dropup: "dropup", autoClose: "autoClose", isAnimated: "isAnimated", insideClick: "insideClick", isDisabled: "isDisabled", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange", onShown: "onShown", onHidden: "onHidden" }, host: { listeners: { "keydown.arrowDown": "navigationClick($event)", "keydown.arrowUp": "navigationClick($event)" }, properties: { "class.dropup": "dropup", "class.open": "isOpen", "class.show": "isOpen
|
295
|
+
BsDropdownDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: { placement: "placement", triggers: "triggers", container: "container", dropup: "dropup", autoClose: "autoClose", isAnimated: "isAnimated", insideClick: "insideClick", isDisabled: "isDisabled", isOpen: "isOpen" }, outputs: { isOpenChange: "isOpenChange", onShown: "onShown", onHidden: "onHidden" }, host: { listeners: { "keydown.arrowDown": "navigationClick($event)", "keydown.arrowUp": "navigationClick($event)" }, properties: { "class.dropup": "dropup", "class.open": "isOpen", "class.show": "isOpen" } }, providers: [BsDropdownState], exportAs: ["bs-dropdown"], ngImport: i0 });
|
302
296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BsDropdownDirective, decorators: [{
|
303
297
|
type: Directive,
|
304
298
|
args: [{
|
@@ -309,7 +303,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
309
303
|
host: {
|
310
304
|
'[class.dropup]': 'dropup',
|
311
305
|
'[class.open]': 'isOpen',
|
312
|
-
'[class.show]': 'isOpen
|
306
|
+
'[class.show]': 'isOpen'
|
313
307
|
}
|
314
308
|
}]
|
315
309
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }, { type: i1.ComponentLoaderFactory }, { type: i2.BsDropdownState }, { type: i3.BsDropdownConfig }, { type: i4.AnimationBuilder }]; }, propDecorators: { placement: [{
|
@@ -343,4 +337,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
343
337
|
type: HostListener,
|
344
338
|
args: ['keydown.arrowUp', ['$event']]
|
345
339
|
}] } });
|
346
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Ryb3Bkb3duL2JzLWRyb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFtQixzQkFBc0IsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7O0FBYTFELE1BQU0sT0FBTyxtQkFBbUI7SUErSDlCLFlBQ1UsV0FBdUIsRUFDdkIsU0FBb0IsRUFDcEIsaUJBQW1DLEVBQ25DLElBQTRCLEVBQzVCLE1BQXVCLEVBQ3ZCLE9BQXlCLEVBQ2pDLFFBQTBCO1FBTmxCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxTQUFJLEdBQUosSUFBSSxDQUF3QjtRQUM1QixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixZQUFPLEdBQVAsT0FBTyxD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TTtnQkFnTVAsZUFBZTtzQkFGZCxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDNUMsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NvbnRhaW5lclJlZlxuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbXBvbmVudExvYWRlciwgQ29tcG9uZW50TG9hZGVyRmFjdG9yeSwgQnNDb21wb25lbnRSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL2NvbXBvbmVudC1sb2FkZXInO1xuXG5pbXBvcnQgeyBCc0Ryb3Bkb3duQ29uZmlnIH0gZnJvbSAnLi9icy1kcm9wZG93bi5jb25maWcnO1xuaW1wb3J0IHsgQnNEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vYnMtZHJvcGRvd24tY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duU3RhdGUgfSBmcm9tICcuL2JzLWRyb3Bkb3duLnN0YXRlJztcbmltcG9ydCB7IEJzRHJvcGRvd25NZW51RGlyZWN0aXZlIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBpc0JzMyB9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciwgQW5pbWF0aW9uRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgZHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2Ryb3Bkb3duLWFuaW1hdGlvbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYnNEcm9wZG93bl0sIFtkcm9wZG93bl0nLFxuICBleHBvcnRBczogJ2JzLWRyb3Bkb3duJyxcbiAgcHJvdmlkZXJzOiBbQnNEcm9wZG93blN0YXRlXSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmRyb3B1cF0nOiAnZHJvcHVwJyxcbiAgICAnW2NsYXNzLm9wZW5dJzogJ2lzT3BlbicsXG4gICAgJ1tjbGFzcy5zaG93XSc6ICdpc09wZW4gJiYgaXNCczQnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgQnNEcm9wZG93bkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFBsYWNlbWVudCBvZiBhIHBvcG92ZXIuIEFjY2VwdHM6IFwidG9wXCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLCBcInJpZ2h0XCJcbiAgICovXG4gIEBJbnB1dCgpIHBsYWNlbWVudD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBldmVudHMgdGhhdCBzaG91bGQgdHJpZ2dlci4gU3VwcG9ydHMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgKiBldmVudCBuYW1lcy5cbiAgICovXG4gIEBJbnB1dCgpIHRyaWdnZXJzPzogc3RyaW5nO1xuICAvKipcbiAgICogQSBzZWxlY3RvciBzcGVjaWZ5aW5nIHRoZSBlbGVtZW50IHRoZSBwb3BvdmVyIHNob3VsZCBiZSBhcHBlbmRlZCB0by5cbiAgICovXG4gIEBJbnB1dCgpIGNvbnRhaW5lcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQgdGhlIGRyb3Bkb3duIHNob3VsZCBiZSBvcGVuZWQgdXB3YXJkc1xuICAgKi9cbiAgQElucHV0KCkgZHJvcHVwID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGRyb3Bkb3duIHdpbGwgYmUgY2xvc2VkIG9uIGl0ZW0gb3IgZG9jdW1lbnQgY2xpY2ssXG4gICAqIGFuZCBhZnRlciBwcmVzc2luZyBFU0NcbiAgICovXG4gIEBJbnB1dCgpXG4gIHNldCBhdXRvQ2xvc2UodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGF0ZS5hdXRvQ2xvc2UgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBhdXRvQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmF1dG9DbG9zZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBkcm9wZG93biB3aWxsIGJlIGFuaW1hdGVkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaXNBbmltYXRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3N0YXRlLmlzQW5pbWF0ZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpc0FuaW1hdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5pc0FuaW1hdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBkcm9wZG93biBzaG91bGRuJ3QgY2xvc2Ugb24gaW5zaWRlIGNsaWNrIHdoZW4gYXV0b0Nsb3NlIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaW5zaWRlQ2xpY2sodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGF0ZS5pbnNpZGVDbGljayA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IGluc2lkZUNsaWNrKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5pbnNpZGVDbGljaztcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNhYmxlcyBkcm9wZG93biB0b2dnbGUgYW5kIGhpZGVzIGRyb3Bkb3duIG1lbnUgaWYgb3BlbmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzRGlzYWJsZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl9zdGF0ZS5pc0Rpc2FibGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgcG9wb3ZlciBpcyBjdXJyZW50bHkgYmVpbmcgc2hvd25cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBpc09wZW4oKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3Nob3dJbmxpbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pc0lubGluZU9wZW47XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2Ryb3Bkb3duLmlzU2hvd247XG4gIH1cblxuICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gaXNPcGVuIGNoYW5nZVxuICAgKi9cbiAgQE91dHB1dCgpIGlzT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBwb3BvdmVyIGlzIHNob3duXG4gICAqL1xuICBAT3V0cHV0KCkgb25TaG93bjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSBwb3BvdmVyIGlzIGhpZGRlblxuICAgKi9cbiAgQE91dHB1dCgpIG9uSGlkZGVuOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XG5cbiAgZ2V0IGlzQnM0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhaXNCczMoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Ryb3Bkb3duOiBDb21wb25lbnRMb2FkZXI8QnNEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBnZXQgX3Nob3dJbmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIHRvZG86IG1vdmUgdG8gY29tcG9uZW50IGxvYWRlclxuICBwcml2YXRlIF9pc0lubGluZU9wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9pbmxpbmVkTWVudT86IEVtYmVkZGVkVmlld1JlZjxCc0Ryb3Bkb3duTWVudURpcmVjdGl2ZT47XG4gIHByaXZhdGUgX2lzRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaXNJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFjdG9yeURyb3BEb3duQW5pbWF0aW9uOiBBbmltYXRpb25GYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgX2NpczogQ29tcG9uZW50TG9hZGVyRmFjdG9yeSxcbiAgICBwcml2YXRlIF9zdGF0ZTogQnNEcm9wZG93blN0YXRlLFxuICAgIHByaXZhdGUgX2NvbmZpZzogQnNEcm9wZG93bkNvbmZpZyxcbiAgICBfYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlclxuICApIHtcbiAgICAvLyBzZXQgaW5pdGlhbCBkcm9wZG93biBzdGF0ZSBmcm9tIGNvbmZpZ1xuICAgIHRoaXMuX3N0YXRlLmF1dG9DbG9zZSA9IHRoaXMuX2NvbmZpZy5hdXRvQ2xvc2U7XG4gICAgdGhpcy5fc3RhdGUuaW5zaWRlQ2xpY2sgPSB0aGlzLl9jb25maWcuaW5zaWRlQ2xpY2s7XG4gICAgdGhpcy5fc3RhdGUuaXNBbmltYXRlZCA9IHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkO1xuICAgIHRoaXMuX3N0YXRlLnN0b3BPbkNsaWNrUHJvcGFnYXRpb24gPSB0aGlzLl9jb25maWcuc3RvcE9uQ2xpY2tQcm9wYWdhdGlvbjtcblxuICAgIHRoaXMuX2ZhY3RvcnlEcm9wRG93bkFuaW1hdGlvbiA9IF9idWlsZGVyLmJ1aWxkKGRyb3Bkb3duQW5pbWF0aW9uKTtcblxuICAgIC8vIGNyZWF0ZSBkcm9wZG93biBjb21wb25lbnQgbG9hZGVyXG4gICAgdGhpcy5fZHJvcGRvd24gPSB0aGlzLl9jaXNcbiAgICAgIC5jcmVhdGVMb2FkZXI8QnNEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudD4oXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYsXG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyXG4gICAgICApXG4gICAgICAucHJvdmlkZSh7cHJvdmlkZTogQnNEcm9wZG93blN0YXRlLCB1c2VWYWx1ZTogdGhpcy5fc3RhdGV9KTtcblxuICAgIHRoaXMub25TaG93biA9IHRoaXMuX2Ryb3Bkb3duLm9uU2hvd247XG4gICAgdGhpcy5vbkhpZGRlbiA9IHRoaXMuX2Ryb3Bkb3duLm9uSGlkZGVuO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlID0gdGhpcy5fc3RhdGUuaXNPcGVuQ2hhbmdlO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBmaXg6IHNlZW1zIHRoZXJlIGFyZSBhbiBpc3N1ZSB3aXRoIGByb3V0ZXJMaW5rQWN0aXZlYFxuICAgIC8vIHdoaWNoIHJlc3VsdCBpbiBkdXBsaWNhdGVkIGNhbGwgbmdPbkluaXQgd2l0aG91dCBjYWxsIHRvIG5nT25EZXN0cm95XG4gICAgLy8gcmVhZCBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvMTg4NVxuICAgIGlmICh0aGlzLl9pc0luaXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc0luaXRlZCA9IHRydWU7XG5cbiAgICAvLyBhdHRhY2ggRE9NIGxpc3RlbmVyc1xuICAgIHRoaXMuX2Ryb3Bkb3duLmxpc3Rlbih7XG4gICAgICAvLyBiZWNhdXNlIG9mIGRyb3Bkb3duIGlubGluZSBtb2RlXG4gICAgICBvdXRzaWRlQ2xpY2s6IGZhbHNlLFxuICAgICAgdHJpZ2dlcnM6IHRoaXMudHJpZ2dlcnMsXG4gICAgICBzaG93OiAoKSA9PiB0aGlzLnNob3coKVxuICAgIH0pO1xuXG4gICAgLy8gdG9nZ2xlIHZpc2liaWxpdHkgb24gdG9nZ2xlIGVsZW1lbnQgY2xpY2tcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLl9zdGF0ZS50b2dnbGVDbGljay5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB0aGlzLnRvZ2dsZSh2YWx1ZSkpXG4gICAgKTtcblxuICAgIC8vIGhpZGUgZHJvcGRvd24gaWYgc2V0IGRpc2FibGVkIHdoaWxlIG9wZW5lZFxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuX3N0YXRlLmlzRGlzYWJsZWRDaGFuZ2VcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCh2YWx1ZTogYm9vbGVhbikgPT4gdmFsdWUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoLyp2YWx1ZTogYm9vbGVhbiovKSA9PiB0aGlzLmhpZGUoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIGVsZW1lbnTigJlzIHBvcG92ZXIuIFRoaXMgaXMgY29uc2lkZXJlZCBhIOKAnG1hbnVhbOKAnSB0cmlnZ2VyaW5nIG9mXG4gICAqIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Nob3dJbmxpbmUpIHtcbiAgICAgIGlmICghdGhpcy5faW5saW5lZE1lbnUpIHtcbiAgICAgICAgdGhpcy5fc3RhdGUuZHJvcGRvd25NZW51LnRoZW4oXG4gICAgICAgICAgKGRyb3Bkb3duTWVudTogQnNDb21wb25lbnRSZWY8QnNEcm9wZG93bk1lbnVEaXJlY3RpdmU+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kcm9wZG93bi5hdHRhY2hJbmxpbmUoXG4gICAgICAgICAgICAgIGRyb3Bkb3duTWVudS52aWV3Q29udGFpbmVyLFxuICAgICAgICAgICAgICBkcm9wZG93bk1lbnUudGVtcGxhdGVSZWZcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9pbmxpbmVkTWVudSA9IHRoaXMuX2Ryb3Bkb3duLl9pbmxpbmVWaWV3UmVmO1xuXG4gICAgICAgICAgICB0aGlzLmFkZEJzNFBvbHlmaWxscygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lubGluZWRNZW51KSB7XG4gICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXS5wYXJlbnROb2RlLCAnb3BlbicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBsYXlBbmltYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICAgLy8gc3dhbGxvdyBlcnJvcnNcbiAgICAgICAgICAuY2F0Y2goKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkQnM0UG9seWZpbGxzKCk7XG5cbiAgICAgIHRoaXMuX2lzSW5saW5lT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm9uU2hvd24uZW1pdCh0cnVlKTtcbiAgICAgIHRoaXMuX3N0YXRlLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuXG4gICAgICB0aGlzLnBsYXlBbmltYXRpb24oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZS5kcm9wZG93bk1lbnUudGhlbihkcm9wZG93bk1lbnUgPT4ge1xuICAgICAgLy8gY2hlY2sgZGlyZWN0aW9uIGluIHdoaWNoIGRyb3Bkb3duIHNob3VsZCBiZSBvcGVuZWRcbiAgICAgIGNvbnN0IF9kcm9wdXAgPVxuICAgICAgICB0aGlzLmRyb3B1cCB8fFxuICAgICAgICAodHlwZW9mIHRoaXMuZHJvcHVwICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRyb3B1cCk7XG4gICAgICB0aGlzLl9zdGF0ZS5kaXJlY3Rpb24gPSBfZHJvcHVwID8gJ3VwJyA6ICdkb3duJztcbiAgICAgIGNvbnN0IF9wbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudCB8fCAoX2Ryb3B1cCA/ICd0b3Agc3RhcnQnIDogJ2JvdHRvbSBzdGFydCcpO1xuXG4gICAgICAvLyBzaG93IGRyb3Bkb3duXG4gICAgICB0aGlzLl9kcm9wZG93blxuICAgICAgICAuYXR0YWNoKEJzRHJvcGRvd25Db250YWluZXJDb21wb25lbnQpXG4gICAgICAgIC50byh0aGlzLmNvbnRhaW5lcilcbiAgICAgICAgLnBvc2l0aW9uKHthdHRhY2htZW50OiBfcGxhY2VtZW50fSlcbiAgICAgICAgLnNob3coe1xuICAgICAgICAgIGNvbnRlbnQ6IGRyb3Bkb3duTWVudS50ZW1wbGF0ZVJlZixcbiAgICAgICAgICBwbGFjZW1lbnQ6IF9wbGFjZW1lbnRcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3N0YXRlLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH0pXG4gICAgLy8gc3dhbGxvdyBlcnJvclxuICAgICAgLmNhdGNoKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFuIGVsZW1lbnTigJlzIHBvcG92ZXIuIFRoaXMgaXMgY29uc2lkZXJlZCBhIOKAnG1hbnVhbOKAnSB0cmlnZ2VyaW5nIG9mXG4gICAqIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Nob3dJbmxpbmUpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2hvd0NsYXNzKCk7XG4gICAgICB0aGlzLnJlbW92ZURyb3B1cFN0eWxlcygpO1xuICAgICAgdGhpcy5faXNJbmxpbmVPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLm9uSGlkZGVuLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Ryb3Bkb3duLmhpZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZS5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBhbiBlbGVtZW504oCZcyBwb3BvdmVyLiBUaGlzIGlzIGNvbnNpZGVyZWQgYSDigJxtYW51YWzigJ0gdHJpZ2dlcmluZyBvZlxuICAgKiB0aGUgcG9wb3Zlci4gV2l0aCBwYXJhbWV0ZXIgPGNvZGU+dHJ1ZTwvY29kZT4gYWxsb3dzIHRvZ2dsaW5nLCB3aXRoIHBhcmFtZXRlciA8Y29kZT5mYWxzZTwvY29kZT5cbiAgICogb25seSBoaWRlcyBvcGVuZWQgZHJvcGRvd24uIFBhcmFtZXRlciB1c2FnZSB3aWxsIGJlIHJlbW92ZWQgaW4gbmd4LWJvb3RzdHJhcCB2M1xuICAgKi9cbiAgdG9nZ2xlKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3BlbiB8fCAhdmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zaG93KCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9jb250YWlucyhldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgIC8vIHRvZG86IHZhbG9ya2luIGZpeCB0eXBpbmdzXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpIHx8XG4gICAgICAodGhpcy5fZHJvcGRvd24uaW5zdGFuY2UgJiYgdGhpcy5fZHJvcGRvd24uaW5zdGFuY2UuX2NvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50KSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gIG5hdmlnYXRpb25DbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51Jyk7XG5cbiAgICBpZiAoIXJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0QWN0aXZlID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBjb25zdCBhbGxSZWYgPSByZWYucXVlcnlTZWxlY3RvckFsbCgnLmRyb3Bkb3duLWl0ZW0nKTtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZS5jb3VudHMgPiAwKSB7XG4gICAgICAgICAgYWxsUmVmWy0tdGhpcy5fc3RhdGUuY291bnRzXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0MDpcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlLmNvdW50cyArIDEgPCBhbGxSZWYubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZpcnN0QWN0aXZlLmNsYXNzTGlzdCAhPT0gYWxsUmVmW3RoaXMuX3N0YXRlLmNvdW50c10uY2xhc3NMaXN0KSB7XG4gICAgICAgICAgICBhbGxSZWZbdGhpcy5fc3RhdGUuY291bnRzXS5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbGxSZWZbKyt0aGlzLl9zdGF0ZS5jb3VudHNdLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnMgYW5kIGRlc3Ryb3kgZHJvcGRvd25cbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLl9zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5fZHJvcGRvd24uZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCczRQb2x5ZmlsbHMoKTogdm9pZCB7XG4gICAgaWYgKCFpc0JzMygpKSB7XG4gICAgICB0aGlzLmFkZFNob3dDbGFzcygpO1xuICAgICAgdGhpcy5jaGVja1JpZ2h0QWxpZ25tZW50KCk7XG4gICAgICB0aGlzLmFkZERyb3B1cFN0eWxlcygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGxheUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc3RhdGUuaXNBbmltYXRlZCAmJiB0aGlzLl9pbmxpbmVkTWVudSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9pbmxpbmVkTWVudSkge1xuICAgICAgICAgIHRoaXMuX2ZhY3RvcnlEcm9wRG93bkFuaW1hdGlvbi5jcmVhdGUodGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdKS5wbGF5KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkU2hvd0NsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmxpbmVkTWVudSAmJiB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0pIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSwgJ3Nob3cnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVNob3dDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5saW5lZE1lbnUgJiYgdGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdKSB7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sICdzaG93Jyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1JpZ2h0QWxpZ25tZW50KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmxpbmVkTWVudSAmJiB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0pIHtcbiAgICAgIGNvbnN0IGlzUmlnaHRBbGlnbmVkID0gdGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICAgJ2Ryb3Bkb3duLW1lbnUtcmlnaHQnXG4gICAgICApIHx8IHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXS5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgICdkcm9wZG93bi1tZW51LWVuZCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sXG4gICAgICAgICdsZWZ0JyxcbiAgICAgICAgaXNSaWdodEFsaWduZWQgPyAnYXV0bycgOiAnMCdcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLFxuICAgICAgICAncmlnaHQnLFxuICAgICAgICBpc1JpZ2h0QWxpZ25lZCA/ICcwJyA6ICdhdXRvJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZERyb3B1cFN0eWxlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faW5saW5lZE1lbnUgJiYgdGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdKSB7XG4gICAgICAvLyBhIGxpdHRsZSBoYWNrIHRvIG5vdCBicmVhayBzdXBwb3J0IG9mIGJvb3RzdHJhcCA0IGJldGFcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sXG4gICAgICAgICd0b3AnLFxuICAgICAgICB0aGlzLmRyb3B1cCA/ICdhdXRvJyA6ICcxMDAlJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sXG4gICAgICAgICd0cmFuc2Zvcm0nLFxuICAgICAgICB0aGlzLmRyb3B1cCA/ICd0cmFuc2xhdGVZKC0xMDElKScgOiAndHJhbnNsYXRlWSgwKSdcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgdGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLFxuICAgICAgICAnYm90dG9tJyxcbiAgICAgICAgJ2F1dG8nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRHJvcHVwU3R5bGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmxpbmVkTWVudSAmJiB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0pIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSwgJ3RvcCcpO1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLCAndHJhbnNmb3JtJyk7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sICdib3R0b20nKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
340
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnMtZHJvcGRvd24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Ryb3Bkb3duL2JzLWRyb3Bkb3duLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLGVBQWUsQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFtQixzQkFBc0IsRUFBa0IsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV6RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFvQixNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFhMUQsTUFBTSxPQUFPLG1CQUFtQjtJQTJIOUIsWUFDVSxXQUF1QixFQUN2QixTQUFvQixFQUNwQixpQkFBbUMsRUFDbkMsSUFBNEIsRUFDNUIsTUFBdUIsRUFDdkIsT0FBeUIsRUFDakMsUUFBMEI7UUFObEIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFDdkIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLFNBQUksR0FBSixJQUFJLENBQXdCO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQ3ZCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBbEhuQzs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7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RGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFbWJlZGRlZFZpZXdSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q29udGFpbmVyUmVmXG4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGVyLCBDb21wb25lbnRMb2FkZXJGYWN0b3J5LCBCc0NvbXBvbmVudFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvY29tcG9uZW50LWxvYWRlcic7XG5cbmltcG9ydCB7IEJzRHJvcGRvd25Db25maWcgfSBmcm9tICcuL2JzLWRyb3Bkb3duLmNvbmZpZyc7XG5pbXBvcnQgeyBCc0Ryb3Bkb3duQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9icy1kcm9wZG93bi1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEJzRHJvcGRvd25TdGF0ZSB9IGZyb20gJy4vYnMtZHJvcGRvd24uc3RhdGUnO1xuaW1wb3J0IHsgQnNEcm9wZG93bk1lbnVEaXJlY3RpdmUgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEFuaW1hdGlvbkJ1aWxkZXIsIEFuaW1hdGlvbkZhY3RvcnkgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGRyb3Bkb3duQW5pbWF0aW9uIH0gZnJvbSAnLi9kcm9wZG93bi1hbmltYXRpb25zJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2JzRHJvcGRvd25dLCBbZHJvcGRvd25dJyxcbiAgZXhwb3J0QXM6ICdicy1kcm9wZG93bicsXG4gIHByb3ZpZGVyczogW0JzRHJvcGRvd25TdGF0ZV0sXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5kcm9wdXBdJzogJ2Ryb3B1cCcsXG4gICAgJ1tjbGFzcy5vcGVuXSc6ICdpc09wZW4nLFxuICAgICdbY2xhc3Muc2hvd10nOiAnaXNPcGVuJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIEJzRHJvcGRvd25EaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBQbGFjZW1lbnQgb2YgYSBwb3BvdmVyLiBBY2NlcHRzOiBcInRvcFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIiwgXCJyaWdodFwiXG4gICAqL1xuICBASW5wdXQoKSBwbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgZXZlbnRzIHRoYXQgc2hvdWxkIHRyaWdnZXIuIFN1cHBvcnRzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgICogZXZlbnQgbmFtZXMuXG4gICAqL1xuICBASW5wdXQoKSB0cmlnZ2Vycz86IHN0cmluZztcbiAgLyoqXG4gICAqIEEgc2VsZWN0b3Igc3BlY2lmeWluZyB0aGUgZWxlbWVudCB0aGUgcG9wb3ZlciBzaG91bGQgYmUgYXBwZW5kZWQgdG8uXG4gICAqL1xuICBASW5wdXQoKSBjb250YWluZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBkcm9wZG93biBzaG91bGQgYmUgb3BlbmVkIHVwd2FyZHNcbiAgICovXG4gIEBJbnB1dCgpIGRyb3B1cCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBkcm9wZG93biB3aWxsIGJlIGNsb3NlZCBvbiBpdGVtIG9yIGRvY3VtZW50IGNsaWNrLFxuICAgKiBhbmQgYWZ0ZXIgcHJlc3NpbmcgRVNDXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgYXV0b0Nsb3NlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc3RhdGUuYXV0b0Nsb3NlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgYXV0b0Nsb3NlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZS5hdXRvQ2xvc2U7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgZHJvcGRvd24gd2lsbCBiZSBhbmltYXRlZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlzQW5pbWF0ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zdGF0ZS5pc0FuaW1hdGVkID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaXNBbmltYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuaXNBbmltYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZHJvcGRvd24gc2hvdWxkbid0IGNsb3NlIG9uIGluc2lkZSBjbGljayB3aGVuIGF1dG9DbG9zZSBpcyBzZXQgdG8gdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGluc2lkZUNsaWNrKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc3RhdGUuaW5zaWRlQ2xpY2sgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBpbnNpZGVDbGljaygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUuaW5zaWRlQ2xpY2s7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZXMgZHJvcGRvd24gdG9nZ2xlIGFuZCBoaWRlcyBkcm9wZG93biBtZW51IGlmIG9wZW5lZFxuICAgKi9cbiAgQElucHV0KClcbiAgc2V0IGlzRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5fc3RhdGUuaXNEaXNhYmxlZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHBvcG92ZXIgaXMgY3VycmVudGx5IGJlaW5nIHNob3duXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLl9zaG93SW5saW5lKSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNJbmxpbmVPcGVuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9kcm9wZG93bi5pc1Nob3duO1xuICB9XG5cbiAgc2V0IGlzT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIGlzT3BlbiBjaGFuZ2VcbiAgICovXG4gIEBPdXRwdXQoKSBpc09wZW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgcG9wb3ZlciBpcyBzaG93blxuICAgKi9cbiAgQE91dHB1dCgpIG9uU2hvd246IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbiB0aGUgcG9wb3ZlciBpcyBoaWRkZW5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhpZGRlbjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xuXG4gIHByaXZhdGUgX2Ryb3Bkb3duOiBDb21wb25lbnRMb2FkZXI8QnNEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSBnZXQgX3Nob3dJbmxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmNvbnRhaW5lcjtcbiAgfVxuXG4gIC8vIHRvZG86IG1vdmUgdG8gY29tcG9uZW50IGxvYWRlclxuICBwcml2YXRlIF9pc0lubGluZU9wZW4gPSBmYWxzZTtcblxuICBwcml2YXRlIF9pbmxpbmVkTWVudT86IEVtYmVkZGVkVmlld1JlZjxCc0Ryb3Bkb3duTWVudURpcmVjdGl2ZT47XG4gIHByaXZhdGUgX2lzRGlzYWJsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaXNJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZmFjdG9yeURyb3BEb3duQW5pbWF0aW9uOiBBbmltYXRpb25GYWN0b3J5O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgX2NpczogQ29tcG9uZW50TG9hZGVyRmFjdG9yeSxcbiAgICBwcml2YXRlIF9zdGF0ZTogQnNEcm9wZG93blN0YXRlLFxuICAgIHByaXZhdGUgX2NvbmZpZzogQnNEcm9wZG93bkNvbmZpZyxcbiAgICBfYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlclxuICApIHtcbiAgICAvLyBzZXQgaW5pdGlhbCBkcm9wZG93biBzdGF0ZSBmcm9tIGNvbmZpZ1xuICAgIHRoaXMuX3N0YXRlLmF1dG9DbG9zZSA9IHRoaXMuX2NvbmZpZy5hdXRvQ2xvc2U7XG4gICAgdGhpcy5fc3RhdGUuaW5zaWRlQ2xpY2sgPSB0aGlzLl9jb25maWcuaW5zaWRlQ2xpY2s7XG4gICAgdGhpcy5fc3RhdGUuaXNBbmltYXRlZCA9IHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkO1xuICAgIHRoaXMuX3N0YXRlLnN0b3BPbkNsaWNrUHJvcGFnYXRpb24gPSB0aGlzLl9jb25maWcuc3RvcE9uQ2xpY2tQcm9wYWdhdGlvbjtcblxuICAgIHRoaXMuX2ZhY3RvcnlEcm9wRG93bkFuaW1hdGlvbiA9IF9idWlsZGVyLmJ1aWxkKGRyb3Bkb3duQW5pbWF0aW9uKTtcblxuICAgIC8vIGNyZWF0ZSBkcm9wZG93biBjb21wb25lbnQgbG9hZGVyXG4gICAgdGhpcy5fZHJvcGRvd24gPSB0aGlzLl9jaXNcbiAgICAgIC5jcmVhdGVMb2FkZXI8QnNEcm9wZG93bkNvbnRhaW5lckNvbXBvbmVudD4oXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYsXG4gICAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyXG4gICAgICApXG4gICAgICAucHJvdmlkZSh7cHJvdmlkZTogQnNEcm9wZG93blN0YXRlLCB1c2VWYWx1ZTogdGhpcy5fc3RhdGV9KTtcblxuICAgIHRoaXMub25TaG93biA9IHRoaXMuX2Ryb3Bkb3duLm9uU2hvd247XG4gICAgdGhpcy5vbkhpZGRlbiA9IHRoaXMuX2Ryb3Bkb3duLm9uSGlkZGVuO1xuICAgIHRoaXMuaXNPcGVuQ2hhbmdlID0gdGhpcy5fc3RhdGUuaXNPcGVuQ2hhbmdlO1xuXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBmaXg6IHNlZW1zIHRoZXJlIGFyZSBhbiBpc3N1ZSB3aXRoIGByb3V0ZXJMaW5rQWN0aXZlYFxuICAgIC8vIHdoaWNoIHJlc3VsdCBpbiBkdXBsaWNhdGVkIGNhbGwgbmdPbkluaXQgd2l0aG91dCBjYWxsIHRvIG5nT25EZXN0cm95XG4gICAgLy8gcmVhZCBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vdmFsb3Itc29mdHdhcmUvbmd4LWJvb3RzdHJhcC9pc3N1ZXMvMTg4NVxuICAgIGlmICh0aGlzLl9pc0luaXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc0luaXRlZCA9IHRydWU7XG5cbiAgICAvLyBhdHRhY2ggRE9NIGxpc3RlbmVyc1xuICAgIHRoaXMuX2Ryb3Bkb3duLmxpc3Rlbih7XG4gICAgICAvLyBiZWNhdXNlIG9mIGRyb3Bkb3duIGlubGluZSBtb2RlXG4gICAgICBvdXRzaWRlQ2xpY2s6IGZhbHNlLFxuICAgICAgdHJpZ2dlcnM6IHRoaXMudHJpZ2dlcnMsXG4gICAgICBzaG93OiAoKSA9PiB0aGlzLnNob3coKVxuICAgIH0pO1xuXG4gICAgLy8gdG9nZ2xlIHZpc2liaWxpdHkgb24gdG9nZ2xlIGVsZW1lbnQgY2xpY2tcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLl9zdGF0ZS50b2dnbGVDbGljay5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB0aGlzLnRvZ2dsZSh2YWx1ZSkpXG4gICAgKTtcblxuICAgIC8vIGhpZGUgZHJvcGRvd24gaWYgc2V0IGRpc2FibGVkIHdoaWxlIG9wZW5lZFxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuX3N0YXRlLmlzRGlzYWJsZWRDaGFuZ2VcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKCh2YWx1ZTogYm9vbGVhbikgPT4gdmFsdWUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoLyp2YWx1ZTogYm9vbGVhbiovKSA9PiB0aGlzLmhpZGUoKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGFuIGVsZW1lbnTigJlzIHBvcG92ZXIuIFRoaXMgaXMgY29uc2lkZXJlZCBhIOKAnG1hbnVhbOKAnSB0cmlnZ2VyaW5nIG9mXG4gICAqIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgc2hvdygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc09wZW4gfHwgdGhpcy5pc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Nob3dJbmxpbmUpIHtcbiAgICAgIGlmICghdGhpcy5faW5saW5lZE1lbnUpIHtcbiAgICAgICAgdGhpcy5fc3RhdGUuZHJvcGRvd25NZW51LnRoZW4oXG4gICAgICAgICAgKGRyb3Bkb3duTWVudTogQnNDb21wb25lbnRSZWY8QnNEcm9wZG93bk1lbnVEaXJlY3RpdmU+KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9kcm9wZG93bi5hdHRhY2hJbmxpbmUoXG4gICAgICAgICAgICAgIGRyb3Bkb3duTWVudS52aWV3Q29udGFpbmVyLFxuICAgICAgICAgICAgICBkcm9wZG93bk1lbnUudGVtcGxhdGVSZWZcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9pbmxpbmVkTWVudSA9IHRoaXMuX2Ryb3Bkb3duLl9pbmxpbmVWaWV3UmVmO1xuXG4gICAgICAgICAgICB0aGlzLmFkZEJzNFBvbHlmaWxscygpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lubGluZWRNZW51KSB7XG4gICAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXS5wYXJlbnROb2RlLCAnb3BlbicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnBsYXlBbmltYXRpb24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIClcbiAgICAgICAgLy8gc3dhbGxvdyBlcnJvcnNcbiAgICAgICAgICAuY2F0Y2goKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkQnM0UG9seWZpbGxzKCk7XG5cbiAgICAgIHRoaXMuX2lzSW5saW5lT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm9uU2hvd24uZW1pdCh0cnVlKTtcbiAgICAgIHRoaXMuX3N0YXRlLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuXG4gICAgICB0aGlzLnBsYXlBbmltYXRpb24oKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZS5kcm9wZG93bk1lbnUudGhlbihkcm9wZG93bk1lbnUgPT4ge1xuICAgICAgLy8gY2hlY2sgZGlyZWN0aW9uIGluIHdoaWNoIGRyb3Bkb3duIHNob3VsZCBiZSBvcGVuZWRcbiAgICAgIGNvbnN0IF9kcm9wdXAgPVxuICAgICAgICB0aGlzLmRyb3B1cCB8fFxuICAgICAgICAodHlwZW9mIHRoaXMuZHJvcHVwICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRyb3B1cCk7XG4gICAgICB0aGlzLl9zdGF0ZS5kaXJlY3Rpb24gPSBfZHJvcHVwID8gJ3VwJyA6ICdkb3duJztcbiAgICAgIGNvbnN0IF9wbGFjZW1lbnQgPSB0aGlzLnBsYWNlbWVudCB8fCAoX2Ryb3B1cCA/ICd0b3Agc3RhcnQnIDogJ2JvdHRvbSBzdGFydCcpO1xuXG4gICAgICAvLyBzaG93IGRyb3Bkb3duXG4gICAgICB0aGlzLl9kcm9wZG93blxuICAgICAgICAuYXR0YWNoKEJzRHJvcGRvd25Db250YWluZXJDb21wb25lbnQpXG4gICAgICAgIC50byh0aGlzLmNvbnRhaW5lcilcbiAgICAgICAgLnBvc2l0aW9uKHthdHRhY2htZW50OiBfcGxhY2VtZW50fSlcbiAgICAgICAgLnNob3coe1xuICAgICAgICAgIGNvbnRlbnQ6IGRyb3Bkb3duTWVudS50ZW1wbGF0ZVJlZixcbiAgICAgICAgICBwbGFjZW1lbnQ6IF9wbGFjZW1lbnRcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3N0YXRlLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgIH0pXG4gICAgLy8gc3dhbGxvdyBlcnJvclxuICAgICAgLmNhdGNoKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIGFuIGVsZW1lbnTigJlzIHBvcG92ZXIuIFRoaXMgaXMgY29uc2lkZXJlZCBhIOKAnG1hbnVhbOKAnSB0cmlnZ2VyaW5nIG9mXG4gICAqIHRoZSBwb3BvdmVyLlxuICAgKi9cbiAgaGlkZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Nob3dJbmxpbmUpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2hvd0NsYXNzKCk7XG4gICAgICB0aGlzLnJlbW92ZURyb3B1cFN0eWxlcygpO1xuICAgICAgdGhpcy5faXNJbmxpbmVPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLm9uSGlkZGVuLmVtaXQodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Ryb3Bkb3duLmhpZGUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZS5pc09wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBhbiBlbGVtZW504oCZcyBwb3BvdmVyLiBUaGlzIGlzIGNvbnNpZGVyZWQgYSDigJxtYW51YWzigJ0gdHJpZ2dlcmluZyBvZlxuICAgKiB0aGUgcG9wb3Zlci4gV2l0aCBwYXJhbWV0ZXIgPGNvZGU+dHJ1ZTwvY29kZT4gYWxsb3dzIHRvZ2dsaW5nLCB3aXRoIHBhcmFtZXRlciA8Y29kZT5mYWxzZTwvY29kZT5cbiAgICogb25seSBoaWRlcyBvcGVuZWQgZHJvcGRvd24uIFBhcmFtZXRlciB1c2FnZSB3aWxsIGJlIHJlbW92ZWQgaW4gbmd4LWJvb3RzdHJhcCB2M1xuICAgKi9cbiAgdG9nZ2xlKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzT3BlbiB8fCAhdmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmhpZGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zaG93KCk7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIF9jb250YWlucyhldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuICAgIC8vIHRvZG86IHZhbG9ya2luIGZpeCB0eXBpbmdzXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpIHx8XG4gICAgICAodGhpcy5fZHJvcGRvd24uaW5zdGFuY2UgJiYgdGhpcy5fZHJvcGRvd24uaW5zdGFuY2UuX2NvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50KSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmFycm93RG93bicsIFsnJGV2ZW50J10pXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uYXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gIG5hdmlnYXRpb25DbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcmVmID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kcm9wZG93bi1tZW51Jyk7XG5cbiAgICBpZiAoIXJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0QWN0aXZlID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICBjb25zdCBhbGxSZWYgPSByZWYucXVlcnlTZWxlY3RvckFsbCgnLmRyb3Bkb3duLWl0ZW0nKTtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZS5jb3VudHMgPiAwKSB7XG4gICAgICAgICAgYWxsUmVmWy0tdGhpcy5fc3RhdGUuY291bnRzXS5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0MDpcbiAgICAgICAgaWYgKHRoaXMuX3N0YXRlLmNvdW50cyArIDEgPCBhbGxSZWYubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGZpcnN0QWN0aXZlLmNsYXNzTGlzdCAhPT0gYWxsUmVmW3RoaXMuX3N0YXRlLmNvdW50c10uY2xhc3NMaXN0KSB7XG4gICAgICAgICAgICBhbGxSZWZbdGhpcy5fc3RhdGUuY291bnRzXS5mb2N1cygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbGxSZWZbKyt0aGlzLl9zdGF0ZS5jb3VudHNdLmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICB9XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8vIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnMgYW5kIGRlc3Ryb3kgZHJvcGRvd25cbiAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLl9zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgdGhpcy5fZHJvcGRvd24uZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRCczRQb2x5ZmlsbHMoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRTaG93Q2xhc3MoKTtcbiAgICB0aGlzLmNoZWNrUmlnaHRBbGlnbm1lbnQoKTtcbiAgICB0aGlzLmFkZERyb3B1cFN0eWxlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZS5pc0FuaW1hdGVkICYmIHRoaXMuX2lubGluZWRNZW51KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2lubGluZWRNZW51KSB7XG4gICAgICAgICAgdGhpcy5fZmFjdG9yeURyb3BEb3duQW5pbWF0aW9uLmNyZWF0ZSh0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0pLnBsYXkoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTaG93Q2xhc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lubGluZWRNZW51ICYmIHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLCAnc2hvdycpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2hvd0NsYXNzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmxpbmVkTWVudSAmJiB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0pIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSwgJ3Nob3cnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrUmlnaHRBbGlnbm1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lubGluZWRNZW51ICYmIHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSkge1xuICAgICAgY29uc3QgaXNSaWdodEFsaWduZWQgPSB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0uY2xhc3NMaXN0LmNvbnRhaW5zKFxuICAgICAgICAnZHJvcGRvd24tbWVudS1yaWdodCdcbiAgICAgICkgfHwgdGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICAgJ2Ryb3Bkb3duLW1lbnUtZW5kJ1xuICAgICAgKTtcblxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSxcbiAgICAgICAgJ2xlZnQnLFxuICAgICAgICBpc1JpZ2h0QWxpZ25lZCA/ICdhdXRvJyA6ICcwJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sXG4gICAgICAgICdyaWdodCcsXG4gICAgICAgIGlzUmlnaHRBbGlnbmVkID8gJzAnIDogJ2F1dG8nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRHJvcHVwU3R5bGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbmxpbmVkTWVudSAmJiB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0pIHtcbiAgICAgIC8vIGEgbGl0dGxlIGhhY2sgdG8gbm90IGJyZWFrIHN1cHBvcnQgb2YgYm9vdHN0cmFwIDQgYmV0YVxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSxcbiAgICAgICAgJ3RvcCcsXG4gICAgICAgIHRoaXMuZHJvcHVwID8gJ2F1dG8nIDogJzEwMCUnXG4gICAgICApO1xuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgIHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSxcbiAgICAgICAgJ3RyYW5zZm9ybScsXG4gICAgICAgIHRoaXMuZHJvcHVwID8gJ3RyYW5zbGF0ZVkoLTEwMSUpJyA6ICd0cmFuc2xhdGVZKDApJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICB0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sXG4gICAgICAgICdib3R0b20nLFxuICAgICAgICAnYXV0bydcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVEcm9wdXBTdHlsZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2lubGluZWRNZW51ICYmIHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSkge1xuICAgICAgdGhpcy5fcmVuZGVyZXIucmVtb3ZlU3R5bGUodGhpcy5faW5saW5lZE1lbnUucm9vdE5vZGVzWzBdLCAndG9wJyk7XG4gICAgICB0aGlzLl9yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLl9pbmxpbmVkTWVudS5yb290Tm9kZXNbMF0sICd0cmFuc2Zvcm0nKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMuX2lubGluZWRNZW51LnJvb3ROb2Rlc1swXSwgJ2JvdHRvbScpO1xuICAgIH1cbiAgfVxufVxuIl19
|