ngx-sfc-components 0.0.1
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 +685 -0
- package/esm2020/lib/components/avatar/avatar.component.mjs +83 -0
- package/esm2020/lib/components/avatar/avatar.constants.mjs +9 -0
- package/esm2020/lib/components/avatar/models/avatar-data.model.mjs +2 -0
- package/esm2020/lib/components/avatar/models/avatar-image.model.mjs +14 -0
- package/esm2020/lib/components/avatar/models/avatar-progress.model.mjs +2 -0
- package/esm2020/lib/components/avatar/parts/badge/avatar-badge-position.enum.mjs +12 -0
- package/esm2020/lib/components/avatar/parts/badge/avatar-badge.component.mjs +88 -0
- package/esm2020/lib/components/avatar/parts/badge/avatar-badge.constants.mjs +5 -0
- package/esm2020/lib/components/carousel/carousel.component.mjs +230 -0
- package/esm2020/lib/components/carousel/carousel.enum.mjs +33 -0
- package/esm2020/lib/components/carousel/directive/carousel-slide.directive.mjs +31 -0
- package/esm2020/lib/components/carousel/models/dom.model.mjs +2 -0
- package/esm2020/lib/components/carousel/models/navigation.model.mjs +2 -0
- package/esm2020/lib/components/carousel/models/options.model.mjs +2 -0
- package/esm2020/lib/components/carousel/models/slide.model.mjs +3 -0
- package/esm2020/lib/components/carousel/parts/stage/carousel-stage.component.mjs +83 -0
- package/esm2020/lib/components/carousel/parts/stage/carousel-stage.model.mjs +2 -0
- package/esm2020/lib/components/carousel/service/animate/carousel-animate.service.mjs +86 -0
- package/esm2020/lib/components/carousel/service/autoplay/carousel-autoplay.service.mjs +129 -0
- package/esm2020/lib/components/carousel/service/carousel/carousel-service.constants.mjs +44 -0
- package/esm2020/lib/components/carousel/service/carousel/carousel-service.enum.mjs +14 -0
- package/esm2020/lib/components/carousel/service/carousel/carousel-service.model.mjs +2 -0
- package/esm2020/lib/components/carousel/service/carousel/carousel.service.mjs +697 -0
- package/esm2020/lib/components/carousel/service/lazy/carousel-lazy-load.service.mjs +59 -0
- package/esm2020/lib/components/carousel/service/navigation/carousel-navigation.service.mjs +211 -0
- package/esm2020/lib/components/chart/chart-option.model.mjs +2 -0
- package/esm2020/lib/components/chart/chart.component.mjs +124 -0
- package/esm2020/lib/components/chart/chart.constants.mjs +95 -0
- package/esm2020/lib/components/chart/service/settings/chart-settings.service.mjs +87 -0
- package/esm2020/lib/components/chart/service/theme/chart-theme.model.mjs +2 -0
- package/esm2020/lib/components/chart/service/theme/chart-theme.service.mjs +25 -0
- package/esm2020/lib/components/index.mjs +40 -0
- package/esm2020/lib/components/menu/dropdown/dropdown-menu.component.mjs +86 -0
- package/esm2020/lib/components/menu/dropdown/parts/item/dropdown-menu-item.component.mjs +26 -0
- package/esm2020/lib/components/menu/dropdown/parts/item/dropdown-menu-item.model.mjs +2 -0
- package/esm2020/lib/components/menu/navigation/navigation-menu.component.mjs +26 -0
- package/esm2020/lib/components/menu/navigation/parts/item/navigation-menu-item.component.mjs +31 -0
- package/esm2020/lib/components/menu/navigation/parts/item/navigation-menu-item.model.mjs +2 -0
- package/esm2020/lib/components/menu/side/parts/header/side-menu-header.component.mjs +31 -0
- package/esm2020/lib/components/menu/side/parts/item/content/side-menu-item-content.component.mjs +56 -0
- package/esm2020/lib/components/menu/side/parts/item/side-menu-item.component.mjs +81 -0
- package/esm2020/lib/components/menu/side/parts/title/side-menu-title.component.mjs +24 -0
- package/esm2020/lib/components/menu/side/side-menu.component.mjs +47 -0
- package/esm2020/lib/components/menu/side/side-menu.model.mjs +6 -0
- package/esm2020/lib/components/no-export-index.mjs +15 -0
- package/esm2020/lib/components/notification/enums/notification-template.enum.mjs +5 -0
- package/esm2020/lib/components/notification/enums/notification-type.enum.mjs +7 -0
- package/esm2020/lib/components/notification/notification-auto-close.model.mjs +2 -0
- package/esm2020/lib/components/notification/notification.component.mjs +67 -0
- package/esm2020/lib/components/notification/parts/content/notification-content.component.mjs +33 -0
- package/esm2020/lib/components/notification/parts/content/notification-content.model.mjs +2 -0
- package/esm2020/lib/components/progress/circle/progress-circle.component.mjs +23 -0
- package/esm2020/lib/components/progress/line/progress-line.component.mjs +40 -0
- package/esm2020/lib/components/progress/progress-color.enum.mjs +13 -0
- package/esm2020/lib/components/progress/progress.component.mjs +50 -0
- package/esm2020/lib/components/progress/semi-circle/progress-semi-circle.component.mjs +42 -0
- package/esm2020/lib/components/slider/parts/button/slider-button-type.enum.mjs +6 -0
- package/esm2020/lib/components/slider/parts/button/slider-button.component.mjs +34 -0
- package/esm2020/lib/components/slider/parts/item/slider-item.component.mjs +17 -0
- package/esm2020/lib/components/slider/parts/item/slider-item.model.mjs +2 -0
- package/esm2020/lib/components/slider/parts/pagination/slider-pagination.component.mjs +29 -0
- package/esm2020/lib/components/slider/service/automatic/slider-automatic.service.mjs +35 -0
- package/esm2020/lib/components/slider/service/slider/slider-move-type.enum.mjs +7 -0
- package/esm2020/lib/components/slider/service/slider/slider-move.event.mjs +2 -0
- package/esm2020/lib/components/slider/service/slider/slider-move.model.mjs +2 -0
- package/esm2020/lib/components/slider/service/slider/slider.service.mjs +40 -0
- package/esm2020/lib/components/slider/slider-type.enum.mjs +6 -0
- package/esm2020/lib/components/slider/slider.component.mjs +116 -0
- package/esm2020/lib/components/stars/star-type.enum.mjs +9 -0
- package/esm2020/lib/components/stars/stars.component.mjs +42 -0
- package/esm2020/lib/components/table/enums/table-data-type.enum.mjs +6 -0
- package/esm2020/lib/components/table/enums/table-template.enum.mjs +7 -0
- package/esm2020/lib/components/table/models/table-pagination.model.mjs +2 -0
- package/esm2020/lib/components/table/models/table.model.mjs +2 -0
- package/esm2020/lib/components/table/parts/columns/default/default-table-column.component.mjs +24 -0
- package/esm2020/lib/components/table/parts/columns/selectable/selectable-table-column.component.mjs +30 -0
- package/esm2020/lib/components/table/parts/columns/table-column-type.enum.mjs +8 -0
- package/esm2020/lib/components/table/parts/columns/table-column.model.mjs +2 -0
- package/esm2020/lib/components/table/parts/content/base-default-table-content.component.mjs +74 -0
- package/esm2020/lib/components/table/parts/content/cards/default/default-table-card.component.mjs +14 -0
- package/esm2020/lib/components/table/parts/content/rows/default/default-table-row.component.mjs +28 -0
- package/esm2020/lib/components/table/parts/content/rows/expanded/expanded-table-row-template.enum.mjs +6 -0
- package/esm2020/lib/components/table/parts/content/rows/expanded/expanded-table-row.component.mjs +42 -0
- package/esm2020/lib/components/table/parts/content/rows/expanded/expanded-table-row.model.mjs +2 -0
- package/esm2020/lib/components/table/parts/toggle/columns-toggle.component.mjs +33 -0
- package/esm2020/lib/components/table/parts/toggle/columns-toggle.constants.mjs +11 -0
- package/esm2020/lib/components/table/parts/toggle/service/columns-toggle.service.mjs +34 -0
- package/esm2020/lib/components/table/service/select/table-select.event.mjs +2 -0
- package/esm2020/lib/components/table/service/select/table-select.service.mjs +24 -0
- package/esm2020/lib/components/table/table.component.mjs +250 -0
- package/esm2020/lib/components/table/table.constants.mjs +11 -0
- package/esm2020/lib/components/tabs/models/tab.model.mjs +2 -0
- package/esm2020/lib/components/tabs/models/tabs-view.model.mjs +2 -0
- package/esm2020/lib/components/tabs/parts/labels/tab-label-content-base.component.mjs +29 -0
- package/esm2020/lib/components/tabs/parts/labels/tab-label-icon/tab-label-icon.component.mjs +20 -0
- package/esm2020/lib/components/tabs/parts/labels/tab-label-line/tab-label-line.component.mjs +13 -0
- package/esm2020/lib/components/tabs/parts/sliders/tab-label-icon/tab-label-icon-slider.component.mjs +20 -0
- package/esm2020/lib/components/tabs/parts/sliders/tab-label-line/tab-label-line-slider.component.mjs +20 -0
- package/esm2020/lib/components/tabs/parts/sliders/tab-slider-base.component.mjs +18 -0
- package/esm2020/lib/components/tabs/parts/sliders/tab-slider-context.model.mjs +2 -0
- package/esm2020/lib/components/tabs/service/tab.service.mjs +11 -0
- package/esm2020/lib/components/tabs/tabs-template.enum.mjs +7 -0
- package/esm2020/lib/components/tabs/tabs.component.mjs +69 -0
- package/esm2020/lib/components/tags/parts/tag/tag.component.mjs +18 -0
- package/esm2020/lib/components/tags/parts/tag/tag.model.mjs +2 -0
- package/esm2020/lib/components/tags/tags.component.mjs +18 -0
- package/esm2020/lib/components/timeline/parts/item/timeline-item-position.enum.mjs +6 -0
- package/esm2020/lib/components/timeline/parts/item/timeline-item.component.mjs +34 -0
- package/esm2020/lib/components/timeline/parts/item/timeline-item.model.mjs +2 -0
- package/esm2020/lib/components/timeline/timeline.component.mjs +18 -0
- package/esm2020/lib/ngx-sfc-components.module.mjs +208 -0
- package/esm2020/ngx-sfc-components.mjs +5 -0
- package/esm2020/public-api.mjs +6 -0
- package/fesm2015/ngx-sfc-components.mjs +4006 -0
- package/fesm2015/ngx-sfc-components.mjs.map +1 -0
- package/fesm2020/ngx-sfc-components.mjs +3989 -0
- package/fesm2020/ngx-sfc-components.mjs.map +1 -0
- package/lib/components/avatar/avatar.component.d.ts +42 -0
- package/lib/components/avatar/avatar.constants.d.ts +8 -0
- package/lib/components/avatar/models/avatar-data.model.d.ts +6 -0
- package/lib/components/avatar/models/avatar-image.model.d.ts +12 -0
- package/lib/components/avatar/models/avatar-progress.model.d.ts +4 -0
- package/lib/components/avatar/parts/badge/avatar-badge-position.enum.d.ts +10 -0
- package/lib/components/avatar/parts/badge/avatar-badge.component.d.ts +14 -0
- package/lib/components/avatar/parts/badge/avatar-badge.constants.d.ts +4 -0
- package/lib/components/carousel/carousel.component.d.ts +62 -0
- package/lib/components/carousel/carousel.enum.d.ts +26 -0
- package/lib/components/carousel/directive/carousel-slide.directive.d.ts +13 -0
- package/lib/components/carousel/models/dom.model.d.ts +7 -0
- package/lib/components/carousel/models/navigation.model.d.ts +17 -0
- package/lib/components/carousel/models/options.model.d.ts +40 -0
- package/lib/components/carousel/models/slide.model.d.ts +28 -0
- package/lib/components/carousel/parts/stage/carousel-stage.component.d.ts +30 -0
- package/lib/components/carousel/parts/stage/carousel-stage.model.d.ts +7 -0
- package/lib/components/carousel/service/animate/carousel-animate.service.d.ts +17 -0
- package/lib/components/carousel/service/autoplay/carousel-autoplay.service.d.ts +29 -0
- package/lib/components/carousel/service/carousel/carousel-service.constants.d.ts +5 -0
- package/lib/components/carousel/service/carousel/carousel-service.enum.d.ts +9 -0
- package/lib/components/carousel/service/carousel/carousel-service.model.d.ts +21 -0
- package/lib/components/carousel/service/carousel/carousel.service.d.ts +92 -0
- package/lib/components/carousel/service/lazy/carousel-lazy-load.service.d.ts +14 -0
- package/lib/components/carousel/service/navigation/carousel-navigation.service.d.ts +28 -0
- package/lib/components/chart/chart-option.model.d.ts +9 -0
- package/lib/components/chart/chart.component.d.ts +38 -0
- package/lib/components/chart/chart.constants.d.ts +100 -0
- package/lib/components/chart/service/settings/chart-settings.service.d.ts +14 -0
- package/lib/components/chart/service/theme/chart-theme.model.d.ts +15 -0
- package/lib/components/chart/service/theme/chart-theme.service.d.ts +11 -0
- package/lib/components/index.d.ts +56 -0
- package/lib/components/menu/dropdown/dropdown-menu.component.d.ts +28 -0
- package/lib/components/menu/dropdown/parts/item/dropdown-menu-item.component.d.ts +8 -0
- package/lib/components/menu/dropdown/parts/item/dropdown-menu-item.model.d.ts +6 -0
- package/lib/components/menu/navigation/navigation-menu.component.d.ts +10 -0
- package/lib/components/menu/navigation/parts/item/navigation-menu-item.component.d.ts +9 -0
- package/lib/components/menu/navigation/parts/item/navigation-menu-item.model.d.ts +6 -0
- package/lib/components/menu/side/parts/header/side-menu-header.component.d.ts +11 -0
- package/lib/components/menu/side/parts/item/content/side-menu-item-content.component.d.ts +17 -0
- package/lib/components/menu/side/parts/item/side-menu-item.component.d.ts +17 -0
- package/lib/components/menu/side/parts/title/side-menu-title.component.d.ts +7 -0
- package/lib/components/menu/side/side-menu.component.d.ts +13 -0
- package/lib/components/menu/side/side-menu.model.d.ts +15 -0
- package/lib/components/no-export-index.d.ts +14 -0
- package/lib/components/notification/enums/notification-template.enum.d.ts +3 -0
- package/lib/components/notification/enums/notification-type.enum.d.ts +5 -0
- package/lib/components/notification/notification-auto-close.model.d.ts +4 -0
- package/lib/components/notification/notification.component.d.ts +26 -0
- package/lib/components/notification/parts/content/notification-content.component.d.ts +14 -0
- package/lib/components/notification/parts/content/notification-content.model.d.ts +8 -0
- package/lib/components/progress/circle/progress-circle.component.d.ts +8 -0
- package/lib/components/progress/line/progress-line.component.d.ts +17 -0
- package/lib/components/progress/progress-color.enum.d.ts +11 -0
- package/lib/components/progress/progress.component.d.ts +9 -0
- package/lib/components/progress/semi-circle/progress-semi-circle.component.d.ts +16 -0
- package/lib/components/slider/parts/button/slider-button-type.enum.d.ts +4 -0
- package/lib/components/slider/parts/button/slider-button.component.d.ts +11 -0
- package/lib/components/slider/parts/item/slider-item.component.d.ts +7 -0
- package/lib/components/slider/parts/item/slider-item.model.d.ts +5 -0
- package/lib/components/slider/parts/pagination/slider-pagination.component.d.ts +11 -0
- package/lib/components/slider/service/automatic/slider-automatic.service.d.ts +17 -0
- package/lib/components/slider/service/slider/slider-move-type.enum.d.ts +5 -0
- package/lib/components/slider/service/slider/slider-move.event.d.ts +5 -0
- package/lib/components/slider/service/slider/slider-move.model.d.ts +4 -0
- package/lib/components/slider/service/slider/slider.service.d.ts +12 -0
- package/lib/components/slider/slider-type.enum.d.ts +4 -0
- package/lib/components/slider/slider.component.d.ts +45 -0
- package/lib/components/stars/star-type.enum.d.ts +7 -0
- package/lib/components/stars/stars.component.d.ts +11 -0
- package/lib/components/table/enums/table-data-type.enum.d.ts +4 -0
- package/lib/components/table/enums/table-template.enum.d.ts +5 -0
- package/lib/components/table/models/table-pagination.model.d.ts +5 -0
- package/lib/components/table/models/table.model.d.ts +9 -0
- package/lib/components/table/parts/columns/default/default-table-column.component.d.ts +8 -0
- package/lib/components/table/parts/columns/selectable/selectable-table-column.component.d.ts +10 -0
- package/lib/components/table/parts/columns/table-column-type.enum.d.ts +6 -0
- package/lib/components/table/parts/columns/table-column.model.d.ts +11 -0
- package/lib/components/table/parts/content/base-default-table-content.component.d.ts +27 -0
- package/lib/components/table/parts/content/cards/default/default-table-card.component.d.ts +6 -0
- package/lib/components/table/parts/content/rows/default/default-table-row.component.d.ts +10 -0
- package/lib/components/table/parts/content/rows/expanded/expanded-table-row-template.enum.d.ts +4 -0
- package/lib/components/table/parts/content/rows/expanded/expanded-table-row.component.d.ts +16 -0
- package/lib/components/table/parts/content/rows/expanded/expanded-table-row.model.d.ts +11 -0
- package/lib/components/table/parts/toggle/columns-toggle.component.d.ts +13 -0
- package/lib/components/table/parts/toggle/columns-toggle.constants.d.ts +10 -0
- package/lib/components/table/parts/toggle/service/columns-toggle.service.d.ts +15 -0
- package/lib/components/table/service/select/table-select.event.d.ts +4 -0
- package/lib/components/table/service/select/table-select.service.d.ts +11 -0
- package/lib/components/table/table.component.d.ts +74 -0
- package/lib/components/table/table.constants.d.ts +11 -0
- package/lib/components/tabs/models/tab.model.d.ts +7 -0
- package/lib/components/tabs/models/tabs-view.model.d.ts +8 -0
- package/lib/components/tabs/parts/labels/tab-label-content-base.component.d.ts +9 -0
- package/lib/components/tabs/parts/labels/tab-label-icon/tab-label-icon.component.d.ts +9 -0
- package/lib/components/tabs/parts/labels/tab-label-line/tab-label-line.component.d.ts +6 -0
- package/lib/components/tabs/parts/sliders/tab-label-icon/tab-label-icon-slider.component.d.ts +7 -0
- package/lib/components/tabs/parts/sliders/tab-label-line/tab-label-line-slider.component.d.ts +10 -0
- package/lib/components/tabs/parts/sliders/tab-slider-base.component.d.ts +8 -0
- package/lib/components/tabs/parts/sliders/tab-slider-context.model.d.ts +4 -0
- package/lib/components/tabs/service/tab.service.d.ts +6 -0
- package/lib/components/tabs/tabs-template.enum.d.ts +5 -0
- package/lib/components/tabs/tabs.component.d.ts +26 -0
- package/lib/components/tags/parts/tag/tag.component.d.ts +7 -0
- package/lib/components/tags/parts/tag/tag.model.d.ts +4 -0
- package/lib/components/tags/tags.component.d.ts +7 -0
- package/lib/components/timeline/parts/item/timeline-item-position.enum.d.ts +4 -0
- package/lib/components/timeline/parts/item/timeline-item.component.d.ts +11 -0
- package/lib/components/timeline/parts/item/timeline-item.model.d.ts +10 -0
- package/lib/components/timeline/timeline.component.d.ts +7 -0
- package/lib/ngx-sfc-components.module.d.ts +49 -0
- package/ngx-sfc-components.d.ts +5 -0
- package/package.json +50 -0
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { tap, merge } from 'rxjs';
|
|
3
|
+
import { CarouselEventType, CarouselProperty } from '../../carousel.enum';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../carousel/carousel.service";
|
|
6
|
+
export class CarouselLazyLoadService {
|
|
7
|
+
constructor(carouselService) {
|
|
8
|
+
this.carouselService = carouselService;
|
|
9
|
+
this.initDataStreams();
|
|
10
|
+
}
|
|
11
|
+
ngOnDestroy() {
|
|
12
|
+
this.lazyLoadSubscription.unsubscribe();
|
|
13
|
+
}
|
|
14
|
+
initDataStreams() {
|
|
15
|
+
const initializedCarousel$ = this.carouselService.initializedState.pipe(tap(() => {
|
|
16
|
+
const isLazyLoad = this.carouselService.settings && !this.carouselService.settings.lazyLoad;
|
|
17
|
+
this.carouselService.slidesModel.forEach(item => item.load = isLazyLoad ? true : false);
|
|
18
|
+
}));
|
|
19
|
+
const changeSettings$ = this.carouselService.changeState;
|
|
20
|
+
const resizedCarousel$ = this.carouselService.resizedState;
|
|
21
|
+
this.lazyLoadSubscription = merge(initializedCarousel$, changeSettings$, resizedCarousel$).pipe(tap(data => this.defineLazyLoadSlides(data))).subscribe();
|
|
22
|
+
}
|
|
23
|
+
defineLazyLoadSlides(data) {
|
|
24
|
+
if (!this.carouselService.settings || !this.carouselService.settings.lazyLoad)
|
|
25
|
+
return;
|
|
26
|
+
if ((data.property && data.property.name === CarouselProperty.Position) || data === CarouselEventType.Initialized || data === CarouselEventType.Resized) {
|
|
27
|
+
const settings = this.carouselService.settings, clones = this.carouselService.clones().length;
|
|
28
|
+
let n = (settings.center && Math.ceil((settings.items || 0) / 2) || settings.items) || 0, i = ((settings.center && n * -1) || 0), position = (data.property && data.property.value !== undefined ? data.property.value : this.carouselService.current()) + i;
|
|
29
|
+
if ((settings.lazyLoadEager || 0) > 0) {
|
|
30
|
+
n += settings.lazyLoadEager || 0;
|
|
31
|
+
if (settings.loop) {
|
|
32
|
+
position -= settings.lazyLoadEager || 0;
|
|
33
|
+
n++;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
while (i++ < n) {
|
|
37
|
+
this.load(clones / 2 + this.carouselService.relative(position));
|
|
38
|
+
if (clones) {
|
|
39
|
+
this.carouselService.clones(this.carouselService.relative(position)).forEach(value => this.load(value));
|
|
40
|
+
}
|
|
41
|
+
position++;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
load(position) {
|
|
46
|
+
if (this.carouselService.slidesModel[position].load)
|
|
47
|
+
return;
|
|
48
|
+
this.carouselService.slidesModel[position].load = true;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
CarouselLazyLoadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CarouselLazyLoadService, deps: [{ token: i1.CarouselService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
CarouselLazyLoadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CarouselLazyLoadService, providedIn: 'root' });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CarouselLazyLoadService, decorators: [{
|
|
54
|
+
type: Injectable,
|
|
55
|
+
args: [{
|
|
56
|
+
providedIn: 'root'
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i1.CarouselService }]; } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtbGF6eS1sb2FkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL3NlcnZpY2UvbGF6eS9jYXJvdXNlbC1sYXp5LWxvYWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTTFFLE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2xELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLG9CQUFvQixHQUF1QixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDekYsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzVGLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFGLENBQUMsQ0FB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QUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pELENBQUM7O29IQS9EVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENhcm91c2VsRXZlbnRUeXBlLCBDYXJvdXNlbFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vY2Fyb3VzZWwuZW51bSc7XHJcbmltcG9ydCB7IENhcm91c2VsU2VydmljZSB9IGZyb20gJy4uL2Nhcm91c2VsL2Nhcm91c2VsLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxMYXp5TG9hZFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGxhenlMb2FkU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhcm91c2VsU2VydmljZTogQ2Fyb3VzZWxTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmluaXREYXRhU3RyZWFtcygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmxhenlMb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREYXRhU3RyZWFtcygpIHtcclxuICAgIGNvbnN0IGluaXRpYWxpemVkQ2Fyb3VzZWwkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmNhcm91c2VsU2VydmljZS5pbml0aWFsaXplZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXNMYXp5TG9hZCA9IHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnNldHRpbmdzICYmICF0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncy5sYXp5TG9hZDtcclxuICAgICAgICB0aGlzLmNhcm91c2VsU2VydmljZS5zbGlkZXNNb2RlbC5mb3JFYWNoKGl0ZW0gPT4gaXRlbS5sb2FkID0gaXNMYXp5TG9hZCA/IHRydWUgOiBmYWxzZSk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIGNvbnN0IGNoYW5nZVNldHRpbmdzJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5jYXJvdXNlbFNlcnZpY2UuY2hhbmdlU3RhdGU7XHJcblxyXG4gICAgY29uc3QgcmVzaXplZENhcm91c2VsJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5jYXJvdXNlbFNlcnZpY2UucmVzaXplZFN0YXRlO1xyXG5cclxuICAgIHRoaXMubGF6eUxvYWRTdWJzY3JpcHRpb24gPSBtZXJnZShpbml0aWFsaXplZENhcm91c2VsJCwgY2hhbmdlU2V0dGluZ3MkLCByZXNpemVkQ2Fyb3VzZWwkKS5waXBlKFxyXG4gICAgICB0YXAoZGF0YSA9PiB0aGlzLmRlZmluZUxhenlMb2FkU2xpZGVzKGRhdGEpKVxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVmaW5lTGF6eUxvYWRTbGlkZXMoZGF0YTogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnNldHRpbmdzIHx8ICF0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncy5sYXp5TG9hZClcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmICgoZGF0YS5wcm9wZXJ0eSAmJiBkYXRhLnByb3BlcnR5Lm5hbWUgPT09IENhcm91c2VsUHJvcGVydHkuUG9zaXRpb24pIHx8IGRhdGEgPT09IENhcm91c2VsRXZlbnRUeXBlLkluaXRpYWxpemVkIHx8IGRhdGEgPT09IENhcm91c2VsRXZlbnRUeXBlLlJlc2l6ZWQpIHtcclxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncyxcclxuICAgICAgICBjbG9uZXMgPSB0aGlzLmNhcm91c2VsU2VydmljZS5jbG9uZXMoKS5sZW5ndGg7XHJcbiAgICAgIGxldCBuID0gKHNldHRpbmdzLmNlbnRlciAmJiBNYXRoLmNlaWwoKHNldHRpbmdzLml0ZW1zIHx8IDApIC8gMikgfHwgc2V0dGluZ3MuaXRlbXMpIHx8IDAsXHJcbiAgICAgICAgaSA9ICgoc2V0dGluZ3MuY2VudGVyICYmIG4gKiAtMSkgfHwgMCksXHJcbiAgICAgICAgcG9zaXRpb24gPSAoZGF0YS5wcm9wZXJ0eSAmJiBkYXRhLnByb3BlcnR5LnZhbHVlICE9PSB1bmRlZmluZWQgPyBkYXRhLnByb3BlcnR5LnZhbHVlIDogdGhpcy5jYXJvdXNlbFNlcnZpY2UuY3VycmVudCgpKSArIGk7XHJcbiAgICAgIGlmICgoc2V0dGluZ3MubGF6eUxvYWRFYWdlciB8fCAwKSA+IDApIHtcclxuICAgICAgICBuICs9IHNldHRpbmdzLmxhenlMb2FkRWFnZXIgfHwgMDtcclxuICAgICAgICBpZiAoc2V0dGluZ3MubG9vcCkge1xyXG4gICAgICAgICAgcG9zaXRpb24gLT0gc2V0dGluZ3MubGF6eUxvYWRFYWdlciB8fCAwO1xyXG4gICAgICAgICAgbisrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgd2hpbGUgKGkrKyA8IG4pIHtcclxuICAgICAgICB0aGlzLmxvYWQoY2xvbmVzIC8gMiArIHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnJlbGF0aXZlKHBvc2l0aW9uKSk7XHJcbiAgICAgICAgaWYgKGNsb25lcykge1xyXG4gICAgICAgICAgdGhpcy5jYXJvdXNlbFNlcnZpY2UuY2xvbmVzKHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnJlbGF0aXZlKHBvc2l0aW9uKSkuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLmxvYWQodmFsdWUpKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvc2l0aW9uKys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZChwb3NpdGlvbjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2xpZGVzTW9kZWxbcG9zaXRpb25dLmxvYWQpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmNhcm91c2VsU2VydmljZS5zbGlkZXNNb2RlbFtwb3NpdGlvbl0ubG9hZCA9IHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { CommonConstants } from 'ngx-sfc-common';
|
|
3
|
+
import { tap, filter, merge } from 'rxjs';
|
|
4
|
+
import { CarouselProperty } from '../../carousel.enum';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../carousel/carousel.service";
|
|
7
|
+
export class CarouselNavigationService {
|
|
8
|
+
constructor(carouselService) {
|
|
9
|
+
this.carouselService = carouselService;
|
|
10
|
+
this.pages = [];
|
|
11
|
+
this.navigationModel = {
|
|
12
|
+
disabled: false,
|
|
13
|
+
previous: {
|
|
14
|
+
disabled: false,
|
|
15
|
+
label: CommonConstants.EMPTY_STRING
|
|
16
|
+
},
|
|
17
|
+
next: {
|
|
18
|
+
disabled: false,
|
|
19
|
+
label: CommonConstants.EMPTY_STRING
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
this.navigationDotsModel = {
|
|
23
|
+
disabled: false,
|
|
24
|
+
dots: []
|
|
25
|
+
};
|
|
26
|
+
this.initDataStreams();
|
|
27
|
+
}
|
|
28
|
+
ngOnDestroy() {
|
|
29
|
+
this.navSubscription.unsubscribe();
|
|
30
|
+
}
|
|
31
|
+
next(speed) {
|
|
32
|
+
this.carouselService.to(this.getPosition(true), speed);
|
|
33
|
+
}
|
|
34
|
+
;
|
|
35
|
+
previous(speed) {
|
|
36
|
+
this.carouselService.to(this.getPosition(false), speed);
|
|
37
|
+
}
|
|
38
|
+
;
|
|
39
|
+
to(position, speed, standard) {
|
|
40
|
+
let length;
|
|
41
|
+
if (!standard && this.pages.length) {
|
|
42
|
+
length = this.pages.length;
|
|
43
|
+
this.carouselService.to(this.pages[((position % length) + length) % length].start, speed);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.carouselService.to(position, speed);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
;
|
|
50
|
+
moveByDot(dotId) {
|
|
51
|
+
const index = this.navigationDotsModel.dots.findIndex(dot => dotId === dot.id);
|
|
52
|
+
this.to(index, this.carouselService.settings.dotsSpeed || 0);
|
|
53
|
+
}
|
|
54
|
+
toSlideById(id) {
|
|
55
|
+
const position = this.carouselService.slidesModel.findIndex(slide => slide.id === id && slide.isCloned === false);
|
|
56
|
+
if (position === -1 || position === this.carouselService.current())
|
|
57
|
+
return;
|
|
58
|
+
this.carouselService.to(this.carouselService.relative(position), false);
|
|
59
|
+
}
|
|
60
|
+
initDataStreams() {
|
|
61
|
+
const initializedCarousel$ = this.carouselService.initializedState.pipe(tap(() => {
|
|
62
|
+
this.initialize();
|
|
63
|
+
this.updateNavPages();
|
|
64
|
+
this.draw();
|
|
65
|
+
this.update();
|
|
66
|
+
this.carouselService.sendChanges();
|
|
67
|
+
}));
|
|
68
|
+
const changedSettings$ = this.carouselService.changedState.pipe(filter(data => data.property.name === CarouselProperty.Position), tap(() => this.update()));
|
|
69
|
+
const refreshedCarousel$ = this.carouselService.refreshedState.pipe(tap(() => {
|
|
70
|
+
this.updateNavPages();
|
|
71
|
+
this.draw();
|
|
72
|
+
this.update();
|
|
73
|
+
this.carouselService.sendChanges();
|
|
74
|
+
}));
|
|
75
|
+
this.navSubscription = merge(initializedCarousel$, changedSettings$, refreshedCarousel$).subscribe();
|
|
76
|
+
}
|
|
77
|
+
initialize() {
|
|
78
|
+
this.navigationModel.disabled = true;
|
|
79
|
+
if (this.carouselService.settings.navText) {
|
|
80
|
+
this.navigationModel.previous.label = this.carouselService.settings.navText[0];
|
|
81
|
+
this.navigationModel.next.label = this.carouselService.settings.navText[1];
|
|
82
|
+
}
|
|
83
|
+
this.navigationDotsModel.disabled = true;
|
|
84
|
+
this.carouselService.navigationModel = this.navigationModel;
|
|
85
|
+
this.carouselService.navigationDotsModel = this.navigationDotsModel;
|
|
86
|
+
}
|
|
87
|
+
updateNavPages() {
|
|
88
|
+
let i, j, k;
|
|
89
|
+
const lower = this.carouselService.clones().length / 2, upper = lower + this.carouselService.items().length, maximum = this.carouselService.maximum(true), pages = [], settings = this.carouselService.settings;
|
|
90
|
+
let size = settings.center || settings.autoWidth || settings.navigationDotsModel
|
|
91
|
+
? 1 : settings.dotsEach || settings.items;
|
|
92
|
+
size = +size;
|
|
93
|
+
if (settings.slideBy !== 'page') {
|
|
94
|
+
settings.slideBy = Math.min(+settings.slideBy, settings.items || 0);
|
|
95
|
+
}
|
|
96
|
+
if (settings.dots || settings.slideBy === 'page') {
|
|
97
|
+
for (i = lower, j = 0, k = 0; i < upper; i++) {
|
|
98
|
+
if (j >= size || j === 0) {
|
|
99
|
+
pages.push({
|
|
100
|
+
start: Math.min(maximum, i - lower),
|
|
101
|
+
end: i - lower + size - 1
|
|
102
|
+
});
|
|
103
|
+
if (Math.min(maximum, i - lower) === maximum) {
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
j = 0, ++k;
|
|
107
|
+
}
|
|
108
|
+
j += this.carouselService.mergers(this.carouselService.relative(i));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
this.pages = pages;
|
|
112
|
+
}
|
|
113
|
+
draw() {
|
|
114
|
+
let difference;
|
|
115
|
+
const settings = this.carouselService.settings, items = this.carouselService.items(), disabled = items.length <= (settings.items || 0);
|
|
116
|
+
this.navigationModel.disabled = !settings.nav || disabled;
|
|
117
|
+
this.navigationDotsModel.disabled = !settings.dots || disabled;
|
|
118
|
+
if (settings.dots) {
|
|
119
|
+
difference = this.pages.length - this.navigationDotsModel.dots.length;
|
|
120
|
+
if (settings.navigationDotsModel && difference !== 0) {
|
|
121
|
+
this.navigationDotsModel.dots = [];
|
|
122
|
+
items.forEach(item => {
|
|
123
|
+
this.navigationDotsModel.dots.push({
|
|
124
|
+
active: false,
|
|
125
|
+
id: `dot-${item.id}`
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else if (difference > 0) {
|
|
130
|
+
const startI = this.navigationDotsModel.dots.length > 0 ? this.navigationDotsModel.dots.length : 0;
|
|
131
|
+
for (let i = 0; i < difference; i++) {
|
|
132
|
+
this.navigationDotsModel.dots.push({
|
|
133
|
+
active: false,
|
|
134
|
+
id: `dot-${i + startI}`
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (difference < 0) {
|
|
139
|
+
this.navigationDotsModel.dots.splice(difference, Math.abs(difference));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
this.carouselService.navigationModel = this.navigationModel;
|
|
143
|
+
this.carouselService.navigationDotsModel = this.navigationDotsModel;
|
|
144
|
+
}
|
|
145
|
+
;
|
|
146
|
+
update() {
|
|
147
|
+
this.updateNavButtons();
|
|
148
|
+
this.updateDots();
|
|
149
|
+
}
|
|
150
|
+
updateNavButtons() {
|
|
151
|
+
const settings = this.carouselService.settings, loop = settings.loop || settings.rewind || false, index = this.carouselService.relative(this.carouselService.current() || 0);
|
|
152
|
+
if (settings.nav) {
|
|
153
|
+
this.navigationModel.previous.disabled = !loop && index <= this.carouselService.minimum(true);
|
|
154
|
+
this.navigationModel.next.disabled = !loop && index >= this.carouselService.maximum(true);
|
|
155
|
+
}
|
|
156
|
+
this.carouselService.navigationModel = this.navigationModel;
|
|
157
|
+
}
|
|
158
|
+
updateDots() {
|
|
159
|
+
let curActiveDotI;
|
|
160
|
+
if (!this.carouselService.settings.dots)
|
|
161
|
+
return;
|
|
162
|
+
this.navigationDotsModel.dots.forEach(item => {
|
|
163
|
+
if (item.active === true) {
|
|
164
|
+
item.active = false;
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
curActiveDotI = this.getCurrent();
|
|
168
|
+
if (this.navigationDotsModel.dots.length) {
|
|
169
|
+
this.navigationDotsModel.dots[curActiveDotI].active = true;
|
|
170
|
+
}
|
|
171
|
+
this.carouselService.navigationDotsModel = this.navigationDotsModel;
|
|
172
|
+
}
|
|
173
|
+
getCurrent() {
|
|
174
|
+
const current = this.carouselService.relative(this.carouselService.current() || 0);
|
|
175
|
+
let finalCurrent;
|
|
176
|
+
const pages = this.pages.filter((page, index) => {
|
|
177
|
+
return page.start <= current && page.end >= current;
|
|
178
|
+
}).pop();
|
|
179
|
+
finalCurrent = this.pages.findIndex(page => {
|
|
180
|
+
return page.start === pages.start && page.end === pages.end;
|
|
181
|
+
});
|
|
182
|
+
return finalCurrent;
|
|
183
|
+
}
|
|
184
|
+
;
|
|
185
|
+
getPosition(successor) {
|
|
186
|
+
let position, length;
|
|
187
|
+
const settings = this.carouselService.settings;
|
|
188
|
+
if (settings.slideBy === 'page') {
|
|
189
|
+
position = this.getCurrent();
|
|
190
|
+
length = this.pages.length;
|
|
191
|
+
successor ? ++position : --position;
|
|
192
|
+
position = this.pages[((position % length) + length) % length].start;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
position = this.carouselService.relative(this.carouselService.current() || 0);
|
|
196
|
+
length = this.carouselService.items().length;
|
|
197
|
+
successor ? position += +settings.slideBy : position -= +settings.slideBy;
|
|
198
|
+
}
|
|
199
|
+
return position;
|
|
200
|
+
}
|
|
201
|
+
;
|
|
202
|
+
}
|
|
203
|
+
CarouselNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CarouselNavigationService, deps: [{ token: i1.CarouselService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
204
|
+
CarouselNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CarouselNavigationService, providedIn: 'root' });
|
|
205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CarouselNavigationService, decorators: [{
|
|
206
|
+
type: Injectable,
|
|
207
|
+
args: [{
|
|
208
|
+
providedIn: 'root'
|
|
209
|
+
}]
|
|
210
|
+
}], ctorParameters: function () { return [{ type: i1.CarouselService }]; } });
|
|
211
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwtbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNmYy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9zZXJ2aWNlL25hdmlnYXRpb24vY2Fyb3VzZWwtbmF2aWdhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7OztBQVN2RCxNQUFNLE9BQU8seUJBQXlCO0lBdUJwQyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFuQjVDLFVBQUssR0FBVSxFQUFFLENBQUM7UUFFbEIsb0JBQWUsR0FBNEI7WUFDakQsUUFBUSxFQUFFLEtBQUs7WUFDZixRQUFRLEVBQUU7Z0JBQ1IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsS0FBSyxFQUFFLGVBQWUsQ0FBQyxZQUFZO2FBQ3BDO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxLQUFLO2dCQUNmLEtBQUssRUFBRSxlQUFlLENBQUMsWUFBWTthQUNwQztTQUNGLENBQUM7UUFFTSx3QkFBbUIsR0FBZ0M7WUFDekQsUUFBUSxFQUFFLEtBQUs7WUFDZixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7UUFHQSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJ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N0IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDO1lBQ3BDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3RFO2FBQU07WUFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM5RSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDN0MsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBRSxRQUFRLENBQUMsT0FBa0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUUsUUFBUSxDQUFDLE9BQWtCLENBQUM7U0FDbkc7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBQUEsQ0FBQzs7c0hBalBTLHlCQUF5QjswSEFBekIseUJBQXlCLGNBRnhCLE1BQU07MkZBRVAseUJBQXlCO2tCQUhyQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Db25zdGFudHMgfSBmcm9tICduZ3gtc2ZjLWNvbW1vbic7XHJcbmltcG9ydCB7IHRhcCwgZmlsdGVyLCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENhcm91c2VsUHJvcGVydHkgfSBmcm9tICcuLi8uLi9jYXJvdXNlbC5lbnVtJztcclxuaW1wb3J0IHsgQ2Fyb3VzZWxTbGlkZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jYXJvdXNlbC1zbGlkZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBDYXJvdXNlbE5hdmlnYXRpb25Eb3RzTW9kZWwsIENhcm91c2VsTmF2aWdhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL25hdmlnYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBDYXJvdXNlbE9wdGlvbnNNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgQ2Fyb3VzZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2Fyb3VzZWwvY2Fyb3VzZWwuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbE5hdmlnYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSBuYXZTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgcGFnZXM6IGFueVtdID0gW107XHJcblxyXG4gIHByaXZhdGUgbmF2aWdhdGlvbk1vZGVsOiBDYXJvdXNlbE5hdmlnYXRpb25Nb2RlbCA9IHtcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIHByZXZpb3VzOiB7XHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgbGFiZWw6IENvbW1vbkNvbnN0YW50cy5FTVBUWV9TVFJJTkdcclxuICAgIH0sXHJcbiAgICBuZXh0OiB7XHJcbiAgICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgICAgbGFiZWw6IENvbW1vbkNvbnN0YW50cy5FTVBUWV9TVFJJTkdcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIG5hdmlnYXRpb25Eb3RzTW9kZWw6IENhcm91c2VsTmF2aWdhdGlvbkRvdHNNb2RlbCA9IHtcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICAgIGRvdHM6IFtdXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjYXJvdXNlbFNlcnZpY2U6IENhcm91c2VsU2VydmljZSkge1xyXG4gICAgdGhpcy5pbml0RGF0YVN0cmVhbXMoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG5leHQoc3BlZWQ6IG51bWJlciB8IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnRvKHRoaXMuZ2V0UG9zaXRpb24odHJ1ZSksIHNwZWVkKTtcclxuICB9O1xyXG5cclxuICBwcmV2aW91cyhzcGVlZDogbnVtYmVyIHwgYm9vbGVhbikge1xyXG4gICAgdGhpcy5jYXJvdXNlbFNlcnZpY2UudG8odGhpcy5nZXRQb3NpdGlvbihmYWxzZSksIHNwZWVkKTtcclxuICB9O1xyXG5cclxuICB0byhwb3NpdGlvbjogbnVtYmVyLCBzcGVlZDogbnVtYmVyIHwgYm9vbGVhbiwgc3RhbmRhcmQ/OiBib29sZWFuKSB7XHJcbiAgICBsZXQgbGVuZ3RoOiBudW1iZXI7XHJcbiAgICBpZiAoIXN0YW5kYXJkICYmIHRoaXMucGFnZXMubGVuZ3RoKSB7XHJcbiAgICAgIGxlbmd0aCA9IHRoaXMucGFnZXMubGVuZ3RoO1xyXG4gICAgICB0aGlzLmNhcm91c2VsU2VydmljZS50byh0aGlzLnBhZ2VzWygocG9zaXRpb24gJSBsZW5ndGgpICsgbGVuZ3RoKSAlIGxlbmd0aF0uc3RhcnQsIHNwZWVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnRvKHBvc2l0aW9uLCBzcGVlZCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgbW92ZUJ5RG90KGRvdElkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGluZGV4OiBudW1iZXIgPSB0aGlzLm5hdmlnYXRpb25Eb3RzTW9kZWwuZG90cy5maW5kSW5kZXgoZG90ID0+IGRvdElkID09PSBkb3QuaWQpO1xyXG4gICAgdGhpcy50byhpbmRleCwgdGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2V0dGluZ3MuZG90c1NwZWVkIHx8IDApO1xyXG4gIH1cclxuXHJcbiAgdG9TbGlkZUJ5SWQoaWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmNhcm91c2VsU2VydmljZS5zbGlkZXNNb2RlbC5maW5kSW5kZXgoc2xpZGUgPT4gc2xpZGUuaWQgPT09IGlkICYmIHNsaWRlLmlzQ2xvbmVkID09PSBmYWxzZSk7XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uID09PSAtMSB8fCBwb3NpdGlvbiA9PT0gdGhpcy5jYXJvdXNlbFNlcnZpY2UuY3VycmVudCgpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5jYXJvdXNlbFNlcnZpY2UudG8odGhpcy5jYXJvdXNlbFNlcnZpY2UucmVsYXRpdmUocG9zaXRpb24pLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXREYXRhU3RyZWFtcygpIHtcclxuICAgIGNvbnN0IGluaXRpYWxpemVkQ2Fyb3VzZWwkOiBPYnNlcnZhYmxlPHN0cmluZz4gPSB0aGlzLmNhcm91c2VsU2VydmljZS5pbml0aWFsaXplZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVOYXZQYWdlcygpO1xyXG4gICAgICAgIHRoaXMuZHJhdygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgdGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2VuZENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgY2hhbmdlZFNldHRpbmdzJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5jYXJvdXNlbFNlcnZpY2UuY2hhbmdlZFN0YXRlLnBpcGUoXHJcbiAgICAgIGZpbHRlcihkYXRhID0+IGRhdGEucHJvcGVydHkubmFtZSA9PT0gQ2Fyb3VzZWxQcm9wZXJ0eS5Qb3NpdGlvbiksXHJcbiAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZSgpKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCByZWZyZXNoZWRDYXJvdXNlbCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnJlZnJlc2hlZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy51cGRhdGVOYXZQYWdlcygpO1xyXG4gICAgICAgIHRoaXMuZHJhdygpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICAgICAgdGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2VuZENoYW5nZXMoKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5uYXZTdWJzY3JpcHRpb24gPSBtZXJnZShpbml0aWFsaXplZENhcm91c2VsJCwgY2hhbmdlZFNldHRpbmdzJCwgcmVmcmVzaGVkQ2Fyb3VzZWwkKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpIHtcclxuICAgIHRoaXMubmF2aWdhdGlvbk1vZGVsLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncy5uYXZUZXh0KSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbk1vZGVsLnByZXZpb3VzLmxhYmVsID0gdGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2V0dGluZ3MubmF2VGV4dFswXTtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uTW9kZWwubmV4dC5sYWJlbCA9IHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLnNldHRpbmdzLm5hdlRleHRbMV07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRG90c01vZGVsLmRpc2FibGVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLmNhcm91c2VsU2VydmljZS5uYXZpZ2F0aW9uTW9kZWwgPSB0aGlzLm5hdmlnYXRpb25Nb2RlbDtcclxuICAgIHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLm5hdmlnYXRpb25Eb3RzTW9kZWwgPSB0aGlzLm5hdmlnYXRpb25Eb3RzTW9kZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5hdlBhZ2VzKCkge1xyXG4gICAgbGV0IGk6IG51bWJlciwgajogbnVtYmVyLCBrOiBudW1iZXI7XHJcbiAgICBjb25zdCBsb3dlcjogbnVtYmVyID0gdGhpcy5jYXJvdXNlbFNlcnZpY2UuY2xvbmVzKCkubGVuZ3RoIC8gMixcclxuICAgICAgdXBwZXI6IG51bWJlciA9IGxvd2VyICsgdGhpcy5jYXJvdXNlbFNlcnZpY2UuaXRlbXMoKS5sZW5ndGgsXHJcbiAgICAgIG1heGltdW06IG51bWJlciA9IHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLm1heGltdW0odHJ1ZSksXHJcbiAgICAgIHBhZ2VzOiBhbnlbXSA9IFtdLFxyXG4gICAgICBzZXR0aW5nczogQ2Fyb3VzZWxPcHRpb25zTW9kZWwgPSB0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncztcclxuICAgIGxldCBzaXplID0gc2V0dGluZ3MuY2VudGVyIHx8IHNldHRpbmdzLmF1dG9XaWR0aCB8fCBzZXR0aW5ncy5uYXZpZ2F0aW9uRG90c01vZGVsXHJcbiAgICAgID8gMSA6IHNldHRpbmdzLmRvdHNFYWNoIHx8IHNldHRpbmdzLml0ZW1zO1xyXG4gICAgc2l6ZSA9ICsoc2l6ZSBhcyBudW1iZXIpO1xyXG4gICAgaWYgKHNldHRpbmdzLnNsaWRlQnkgIT09ICdwYWdlJykge1xyXG4gICAgICBzZXR0aW5ncy5zbGlkZUJ5ID0gTWF0aC5taW4oKyhzZXR0aW5ncy5zbGlkZUJ5IGFzIG51bWJlciksIHNldHRpbmdzLml0ZW1zIHx8IDApO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZXR0aW5ncy5kb3RzIHx8IHNldHRpbmdzLnNsaWRlQnkgPT09ICdwYWdlJykge1xyXG5cclxuICAgICAgZm9yIChpID0gbG93ZXIsIGogPSAwLCBrID0gMDsgaSA8IHVwcGVyOyBpKyspIHtcclxuICAgICAgICBpZiAoaiA+PSBzaXplIHx8IGogPT09IDApIHtcclxuICAgICAgICAgIHBhZ2VzLnB1c2goe1xyXG4gICAgICAgICAgICBzdGFydDogTWF0aC5taW4obWF4aW11bSwgaSAtIGxvd2VyKSxcclxuICAgICAgICAgICAgZW5kOiBpIC0gbG93ZXIgKyBzaXplIC0gMVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBpZiAoTWF0aC5taW4obWF4aW11bSwgaSAtIGxvd2VyKSA9PT0gbWF4aW11bSkge1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGogPSAwLCArK2s7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGogKz0gdGhpcy5jYXJvdXNlbFNlcnZpY2UubWVyZ2Vycyh0aGlzLmNhcm91c2VsU2VydmljZS5yZWxhdGl2ZShpKSkgYXMgbnVtYmVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnBhZ2VzID0gcGFnZXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXcoKSB7XHJcbiAgICBsZXQgZGlmZmVyZW5jZTogbnVtYmVyO1xyXG4gICAgY29uc3Qgc2V0dGluZ3M6IENhcm91c2VsT3B0aW9uc01vZGVsID0gdGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2V0dGluZ3MsXHJcbiAgICAgIGl0ZW1zOiBDYXJvdXNlbFNsaWRlRGlyZWN0aXZlW10gPSB0aGlzLmNhcm91c2VsU2VydmljZS5pdGVtcygpLFxyXG4gICAgICBkaXNhYmxlZCA9IGl0ZW1zLmxlbmd0aCA8PSAoc2V0dGluZ3MuaXRlbXMgfHwgMCk7XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uTW9kZWwuZGlzYWJsZWQgPSAhc2V0dGluZ3MubmF2IHx8IGRpc2FibGVkO1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRG90c01vZGVsLmRpc2FibGVkID0gIXNldHRpbmdzLmRvdHMgfHwgZGlzYWJsZWQ7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLmRvdHMpIHtcclxuICAgICAgZGlmZmVyZW5jZSA9IHRoaXMucGFnZXMubGVuZ3RoIC0gdGhpcy5uYXZpZ2F0aW9uRG90c01vZGVsLmRvdHMubGVuZ3RoO1xyXG5cclxuICAgICAgaWYgKHNldHRpbmdzLm5hdmlnYXRpb25Eb3RzTW9kZWwgJiYgZGlmZmVyZW5jZSAhPT0gMCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkRvdHNNb2RlbC5kb3RzID0gW107XHJcbiAgICAgICAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkRvdHNNb2RlbC5kb3RzLnB1c2goe1xyXG4gICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgICBpZDogYGRvdC0ke2l0ZW0uaWR9YFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGlmZmVyZW5jZSA+IDApIHtcclxuICAgICAgICBjb25zdCBzdGFydEk6IG51bWJlciA9IHRoaXMubmF2aWdhdGlvbkRvdHNNb2RlbC5kb3RzLmxlbmd0aCA+IDAgPyB0aGlzLm5hdmlnYXRpb25Eb3RzTW9kZWwuZG90cy5sZW5ndGggOiAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZmVyZW5jZTsgaSsrKSB7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb25Eb3RzTW9kZWwuZG90cy5wdXNoKHtcclxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgICAgaWQ6IGBkb3QtJHtpICsgc3RhcnRJfWBcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChkaWZmZXJlbmNlIDwgMCkge1xyXG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkRvdHNNb2RlbC5kb3RzLnNwbGljZShkaWZmZXJlbmNlLCBNYXRoLmFicyhkaWZmZXJlbmNlKSlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLm5hdmlnYXRpb25Nb2RlbCA9IHRoaXMubmF2aWdhdGlvbk1vZGVsO1xyXG4gICAgdGhpcy5jYXJvdXNlbFNlcnZpY2UubmF2aWdhdGlvbkRvdHNNb2RlbCA9IHRoaXMubmF2aWdhdGlvbkRvdHNNb2RlbDtcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHVwZGF0ZSgpIHtcclxuICAgIHRoaXMudXBkYXRlTmF2QnV0dG9ucygpO1xyXG4gICAgdGhpcy51cGRhdGVEb3RzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZU5hdkJ1dHRvbnMoKSB7XHJcbiAgICBjb25zdCBzZXR0aW5nczogQ2Fyb3VzZWxPcHRpb25zTW9kZWwgPSB0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncyxcclxuICAgICAgbG9vcDogYm9vbGVhbiA9IHNldHRpbmdzLmxvb3AgfHwgc2V0dGluZ3MucmV3aW5kIHx8IGZhbHNlLFxyXG4gICAgICBpbmRleDogbnVtYmVyID0gdGhpcy5jYXJvdXNlbFNlcnZpY2UucmVsYXRpdmUodGhpcy5jYXJvdXNlbFNlcnZpY2UuY3VycmVudCgpIHx8IDApO1xyXG5cclxuICAgIGlmIChzZXR0aW5ncy5uYXYpIHtcclxuICAgICAgdGhpcy5uYXZpZ2F0aW9uTW9kZWwucHJldmlvdXMuZGlzYWJsZWQgPSAhbG9vcCAmJiBpbmRleCA8PSB0aGlzLmNhcm91c2VsU2VydmljZS5taW5pbXVtKHRydWUpO1xyXG4gICAgICB0aGlzLm5hdmlnYXRpb25Nb2RlbC5uZXh0LmRpc2FibGVkID0gIWxvb3AgJiYgaW5kZXggPj0gdGhpcy5jYXJvdXNlbFNlcnZpY2UubWF4aW11bSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNhcm91c2VsU2VydmljZS5uYXZpZ2F0aW9uTW9kZWwgPSB0aGlzLm5hdmlnYXRpb25Nb2RlbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRG90cygpIHtcclxuICAgIGxldCBjdXJBY3RpdmVEb3RJOiBudW1iZXI7XHJcblxyXG4gICAgaWYgKCF0aGlzLmNhcm91c2VsU2VydmljZS5zZXR0aW5ncy5kb3RzKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5uYXZpZ2F0aW9uRG90c01vZGVsLmRvdHMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0uYWN0aXZlID09PSB0cnVlKSB7XHJcbiAgICAgICAgaXRlbS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICBjdXJBY3RpdmVEb3RJID0gdGhpcy5nZXRDdXJyZW50KCk7XHJcbiAgICBpZiAodGhpcy5uYXZpZ2F0aW9uRG90c01vZGVsLmRvdHMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMubmF2aWdhdGlvbkRvdHNNb2RlbC5kb3RzW2N1ckFjdGl2ZURvdEldLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNhcm91c2VsU2VydmljZS5uYXZpZ2F0aW9uRG90c01vZGVsID0gdGhpcy5uYXZpZ2F0aW9uRG90c01vZGVsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRDdXJyZW50KCk6IGFueSB7XHJcbiAgICBjb25zdCBjdXJyZW50OiBudW1iZXIgPSB0aGlzLmNhcm91c2VsU2VydmljZS5yZWxhdGl2ZSh0aGlzLmNhcm91c2VsU2VydmljZS5jdXJyZW50KCkgfHwgMCk7XHJcbiAgICBsZXQgZmluYWxDdXJyZW50OiBudW1iZXI7XHJcbiAgICBjb25zdCBwYWdlczogYW55ID0gdGhpcy5wYWdlcy5maWx0ZXIoKHBhZ2UsIGluZGV4KSA9PiB7XHJcbiAgICAgIHJldHVybiBwYWdlLnN0YXJ0IDw9IGN1cnJlbnQgJiYgcGFnZS5lbmQgPj0gY3VycmVudDtcclxuICAgIH0pLnBvcCgpO1xyXG5cclxuICAgIGZpbmFsQ3VycmVudCA9IHRoaXMucGFnZXMuZmluZEluZGV4KHBhZ2UgPT4ge1xyXG4gICAgICByZXR1cm4gcGFnZS5zdGFydCA9PT0gcGFnZXMuc3RhcnQgJiYgcGFnZS5lbmQgPT09IHBhZ2VzLmVuZDtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmaW5hbEN1cnJlbnQ7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXRQb3NpdGlvbihzdWNjZXNzb3I6IG51bWJlciB8IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgbGV0IHBvc2l0aW9uOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyO1xyXG4gICAgY29uc3Qgc2V0dGluZ3M6IENhcm91c2VsT3B0aW9uc01vZGVsID0gdGhpcy5jYXJvdXNlbFNlcnZpY2Uuc2V0dGluZ3M7XHJcblxyXG4gICAgaWYgKHNldHRpbmdzLnNsaWRlQnkgPT09ICdwYWdlJykge1xyXG4gICAgICBwb3NpdGlvbiA9IHRoaXMuZ2V0Q3VycmVudCgpO1xyXG4gICAgICBsZW5ndGggPSB0aGlzLnBhZ2VzLmxlbmd0aDtcclxuICAgICAgc3VjY2Vzc29yID8gKytwb3NpdGlvbiA6IC0tcG9zaXRpb247XHJcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5wYWdlc1soKHBvc2l0aW9uICUgbGVuZ3RoKSArIGxlbmd0aCkgJSBsZW5ndGhdLnN0YXJ0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcG9zaXRpb24gPSB0aGlzLmNhcm91c2VsU2VydmljZS5yZWxhdGl2ZSh0aGlzLmNhcm91c2VsU2VydmljZS5jdXJyZW50KCkgfHwgMCk7XHJcbiAgICAgIGxlbmd0aCA9IHRoaXMuY2Fyb3VzZWxTZXJ2aWNlLml0ZW1zKCkubGVuZ3RoO1xyXG4gICAgICBzdWNjZXNzb3IgPyBwb3NpdGlvbiArPSArKHNldHRpbmdzLnNsaWRlQnkgYXMgbnVtYmVyKSA6IHBvc2l0aW9uIC09ICsoc2V0dGluZ3Muc2xpZGVCeSBhcyBudW1iZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwb3NpdGlvbjtcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtb3B0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNmYy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC1vcHRpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRPcHRpb25Nb2RlbCB7XHJcbiAgICBsZWdlbmQ/OiBib29sZWFuO1xyXG4gICAgZ3JpZExpbmVzPzogYm9vbGVhbjtcclxuICAgIHhBeGU/OmJvb2xlYW47XHJcbiAgICB5QXhlPzpib29sZWFuO1xyXG4gICAgdG9vbHRpcD86IGJvb2xlYW47XHJcbiAgICB0aWNrcz86IGJvb2xlYW47XHJcbiAgICBkZWZhdWx0Q29sb3JzPzogYm9vbGVhbjtcclxufSJdfQ==
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Component, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { Chart } from 'chart.js';
|
|
3
|
+
import { isDefined, mergeDeep, Theme } from 'ngx-sfc-common';
|
|
4
|
+
import { distinctUntilChanged } from 'rxjs';
|
|
5
|
+
import { CHART_DEFAULTS } from './chart.constants';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./service/theme/chart-theme.service";
|
|
8
|
+
import * as i2 from "./service/settings/chart-settings.service";
|
|
9
|
+
export class ChartComponent {
|
|
10
|
+
constructor(zone, themeService, settingsService) {
|
|
11
|
+
this.zone = zone;
|
|
12
|
+
this.themeService = themeService;
|
|
13
|
+
this.settingsService = settingsService;
|
|
14
|
+
// Chart configuration
|
|
15
|
+
this.type = 'line';
|
|
16
|
+
this.plugins = [];
|
|
17
|
+
this._theme = Theme.Default;
|
|
18
|
+
this._themeSubscription = this.themeService.colors$
|
|
19
|
+
.pipe(distinctUntilChanged())
|
|
20
|
+
.subscribe((model) => this.updateColors(model));
|
|
21
|
+
}
|
|
22
|
+
get theme() {
|
|
23
|
+
return this._theme;
|
|
24
|
+
}
|
|
25
|
+
set theme(value) {
|
|
26
|
+
if (this._theme != value) {
|
|
27
|
+
this._theme = value;
|
|
28
|
+
this.themeService.setColors({ options: this.themeOptions });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
get themeOptions() {
|
|
32
|
+
return this.theme === Theme.Dark ? CHART_DEFAULTS.THEME.DARK : CHART_DEFAULTS.THEME.DEFAULT;
|
|
33
|
+
}
|
|
34
|
+
ngOnInit() {
|
|
35
|
+
this.chartOptions = {
|
|
36
|
+
...this.settingsService.getDefaultChartOptions(this.type),
|
|
37
|
+
...this.chartOptions
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
ngAfterViewInit() {
|
|
41
|
+
const ctx = this.canvas.nativeElement.getContext('2d');
|
|
42
|
+
if (this.chart) {
|
|
43
|
+
this.chart.destroy();
|
|
44
|
+
}
|
|
45
|
+
this.zone.runOutsideAngular(() => this.chart = new Chart(ctx, this.getChartConfiguration()));
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
if (this.chart) {
|
|
49
|
+
this.chart.destroy();
|
|
50
|
+
this.chart = void 0;
|
|
51
|
+
}
|
|
52
|
+
this._themeSubscription?.unsubscribe();
|
|
53
|
+
}
|
|
54
|
+
update() {
|
|
55
|
+
this.zone.runOutsideAngular(() => this.chart?.update());
|
|
56
|
+
}
|
|
57
|
+
getChartConfiguration() {
|
|
58
|
+
return {
|
|
59
|
+
type: this.type,
|
|
60
|
+
data: this.getChartData(),
|
|
61
|
+
options: this.getChartOptions(),
|
|
62
|
+
plugins: this.plugins
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
getChartData() {
|
|
66
|
+
const chartData = this.data ? this.data : {
|
|
67
|
+
labels: this.labels || [],
|
|
68
|
+
datasets: this.datasets || []
|
|
69
|
+
};
|
|
70
|
+
if (this.chartOptions.defaultColors)
|
|
71
|
+
this.settingsService.setDatasetStyles(this.type, chartData.datasets);
|
|
72
|
+
return chartData;
|
|
73
|
+
}
|
|
74
|
+
getChartOptions() {
|
|
75
|
+
const chartOptions = this.overrideDefaultOptionsByModel();
|
|
76
|
+
return mergeDeep(chartOptions, this.options);
|
|
77
|
+
}
|
|
78
|
+
overrideDefaultOptionsByModel() {
|
|
79
|
+
const defaultChartOptions = this.settingsService.getDefaultOptions(this.type);
|
|
80
|
+
defaultChartOptions.scales.x.grid.display = this.chartOptions.gridLines;
|
|
81
|
+
defaultChartOptions.scales.x.display = this.chartOptions.xAxe;
|
|
82
|
+
defaultChartOptions.scales.y.grid.display = this.chartOptions.gridLines;
|
|
83
|
+
defaultChartOptions.scales.y.display = this.chartOptions.yAxe;
|
|
84
|
+
defaultChartOptions.scales.x.ticks.display = this.chartOptions.ticks;
|
|
85
|
+
defaultChartOptions.scales.y.ticks.display = this.chartOptions.ticks;
|
|
86
|
+
defaultChartOptions.plugins.tooltip.enabled = this.chartOptions.tooltip;
|
|
87
|
+
defaultChartOptions.plugins.legend.display = this.chartOptions.legend;
|
|
88
|
+
return mergeDeep(defaultChartOptions, this.themeOptions);
|
|
89
|
+
}
|
|
90
|
+
updateColors(model) {
|
|
91
|
+
if (this.chart) {
|
|
92
|
+
mergeDeep(this.chart.config.options, model.options);
|
|
93
|
+
if (isDefined(model.dataSetColors))
|
|
94
|
+
this.settingsService.setDatasetStyles(this.type, this.chart.config.data.datasets, model.dataSetColors);
|
|
95
|
+
this.update();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ChartComponent, deps: [{ token: i0.NgZone }, { token: i1.ChartThemeService }, { token: i2.ChartSettingsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
100
|
+
ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: ChartComponent, selector: "sfc-chart", inputs: { type: "type", data: "data", options: "options", plugins: "plugins", labels: "labels", datasets: "datasets", chartOptions: "chartOptions", theme: "theme" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["chart"], descendants: true }], ngImport: i0, template: "<canvas #chart></canvas>", styles: [":host{height:inherit;width:inherit}\n"] });
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ChartComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: 'sfc-chart', styles: [':host { height: inherit; width: inherit;}'], template: "<canvas #chart></canvas>" }]
|
|
104
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.ChartThemeService }, { type: i2.ChartSettingsService }]; }, propDecorators: { type: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], data: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], options: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}], plugins: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], labels: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], datasets: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], chartOptions: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], theme: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], canvas: [{
|
|
121
|
+
type: ViewChild,
|
|
122
|
+
args: ['chart']
|
|
123
|
+
}] } });
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNmYy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBNkIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xILE9BQU8sRUFBRSxLQUFLLEVBQWlFLE1BQU0sVUFBVSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7O0FBVW5ELE1BQU0sT0FBTyxjQUFjO0lBd0R6QixZQUEyQixJQUFZLEVBQVUsWUFBK0IsRUFBVSxlQUFxQztRQUFwRyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQW1CO1FBQVUsb0JBQWUsR0FBZixlQUFlLENBQXNCO1FBcEQvSCxzQkFBc0I7UUFHdEIsU0FBSSxHQUFxRCxNQUFlLENBQUM7UUFTekUsWUFBTyxHQUF5RCxFQUFFLENBQUM7UUEyQjNELFdBQU0sR0FBVSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBY3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU87YUFDaEQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7YUFDNUIsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVB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Q3pDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUVkLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRXBELElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBZSxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUVoSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZjtJQUNILENBQUM7OzJHQS9JVSxjQUFjOytGQUFkLGNBQWMsd1RDZjNCLDBCQUF3QjsyRkRlWCxjQUFjO2tCQUwxQixTQUFTOytCQUNFLFdBQVcsVUFFYixDQUFDLDJDQUEyQyxDQUFDO2dLQVNyRCxJQUFJO3NCQURILEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBUU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixZQUFZO3NCQURYLEtBQUs7Z0JBSUssS0FBSztzQkFEZixLQUFLO2dCQWFFLE1BQU07c0JBRGIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0LCBDaGFydENvbmZpZ3VyYXRpb24sIENoYXJ0T3B0aW9ucywgQ2hhcnRUeXBlLCBEZWZhdWx0RGF0YVBvaW50IH0gZnJvbSAnY2hhcnQuanMnO1xyXG5pbXBvcnQgeyBpc0RlZmluZWQsIG1lcmdlRGVlcCwgVGhlbWUgfSBmcm9tICduZ3gtc2ZjLWNvbW1vbic7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ2hhcnRPcHRpb25Nb2RlbCB9IGZyb20gJy4vY2hhcnQtb3B0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgQ0hBUlRfREVGQVVMVFMgfSBmcm9tICcuL2NoYXJ0LmNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENoYXJ0U2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3NldHRpbmdzL2NoYXJ0LXNldHRpbmdzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFydFRoZW1lTW9kZWwgfSBmcm9tICcuL3NlcnZpY2UvdGhlbWUvY2hhcnQtdGhlbWUubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGFydFRoZW1lU2VydmljZSB9IGZyb20gJy4vc2VydmljZS90aGVtZS9jaGFydC10aGVtZS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ZjLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlczogWyc6aG9zdCB7IGhlaWdodDogaW5oZXJpdDsgd2lkdGg6IGluaGVyaXQ7fSddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydENvbXBvbmVudDxUVHlwZSBleHRlbmRzIENoYXJ0VHlwZSA9IENoYXJ0VHlwZSxcclxuICBURGF0YSA9IERlZmF1bHREYXRhUG9pbnQ8VFR5cGU+LFxyXG4gIFRMYWJlbCA9IHVua25vd24+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAvLyBDaGFydCBjb25maWd1cmF0aW9uXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgdHlwZTogQ2hhcnRDb25maWd1cmF0aW9uPFRUeXBlLCBURGF0YSwgVExhYmVsPlsndHlwZSddID0gJ2xpbmUnIGFzIFRUeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGRhdGEhOiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydkYXRhJ107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgb3B0aW9ucyE6IENoYXJ0Q29uZmlndXJhdGlvbjxUVHlwZSwgVERhdGEsIFRMYWJlbD5bJ29wdGlvbnMnXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwbHVnaW5zPzogQ2hhcnRDb25maWd1cmF0aW9uPFRUeXBlLCBURGF0YSwgVExhYmVsPlsncGx1Z2lucyddID0gW107XHJcblxyXG4gIC8vIEVuZCBDaGFydCBjb25maWd1cmF0aW9uXHJcblxyXG4gIC8vIENoYXJ0IGRhdGEgY29uZmlndXJhdGlvblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGxhYmVscz86IENoYXJ0Q29uZmlndXJhdGlvbjxUVHlwZSwgVERhdGEsIFRMYWJlbD5bJ2RhdGEnXVsnbGFiZWxzJ107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGF0YXNldHM/OiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydkYXRhJ11bJ2RhdGFzZXRzJ107XHJcblxyXG4gIC8vIEVuZCBDaGFydCBkYXRhIGNvbmZpZ3VyYXRpb25cclxuXHJcbiAgQElucHV0KClcclxuICBjaGFydE9wdGlvbnMhOiBDaGFydE9wdGlvbk1vZGVsO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgdGhlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGhlbWU7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgdGhlbWUodmFsdWUpIHtcclxuICAgIGlmICh0aGlzLl90aGVtZSAhPSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLl90aGVtZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLnRoZW1lU2VydmljZS5zZXRDb2xvcnMoeyBvcHRpb25zOiB0aGlzLnRoZW1lT3B0aW9ucyB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJpdmF0ZSBfdGhlbWU6IFRoZW1lID0gVGhlbWUuRGVmYXVsdDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKVxyXG4gIHByaXZhdGUgY2FudmFzITogRWxlbWVudFJlZjtcclxuXHJcbiAgcHJpdmF0ZSBjaGFydD86IENoYXJ0PFRUeXBlLCBURGF0YSwgVExhYmVsPjtcclxuXHJcbiAgcHJpdmF0ZSBfdGhlbWVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgZ2V0IHRoZW1lT3B0aW9ucygpOiBDaGFydE9wdGlvbnMge1xyXG4gICAgcmV0dXJuIHRoaXMudGhlbWUgPT09IFRoZW1lLkRhcmsgPyBDSEFSVF9ERUZBVUxUUy5USEVNRS5EQVJLIDogQ0hBUlRfREVGQVVMVFMuVEhFTUUuREVGQVVMVDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IENoYXJ0VGhlbWVTZXJ2aWNlLCBwcml2YXRlIHNldHRpbmdzU2VydmljZTogQ2hhcnRTZXR0aW5nc1NlcnZpY2UpIHtcclxuICAgIHRoaXMuX3RoZW1lU3Vic2NyaXB0aW9uID0gdGhpcy50aGVtZVNlcnZpY2UuY29sb3JzJFxyXG4gICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKChtb2RlbCkgPT4gdGhpcy51cGRhdGVDb2xvcnMobW9kZWwpKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFydE9wdGlvbnMgPSB7XHJcbiAgICAgIC4uLnRoaXMuc2V0dGluZ3NTZXJ2aWNlLmdldERlZmF1bHRDaGFydE9wdGlvbnModGhpcy50eXBlKSxcclxuICAgICAgLi4udGhpcy5jaGFydE9wdGlvbnNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdHggPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJyk7XHJcblxyXG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnQoY3R4LCB0aGlzLmdldENoYXJ0Q29uZmlndXJhdGlvbigpKSlcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydC5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuY2hhcnQgPSB2b2lkIDA7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdGhlbWVTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlKCkge1xyXG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuY2hhcnQ/LnVwZGF0ZSgpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2hhcnRDb25maWd1cmF0aW9uKCk6IENoYXJ0Q29uZmlndXJhdGlvbjxUVHlwZSwgVERhdGEsIFRMYWJlbD4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICBkYXRhOiB0aGlzLmdldENoYXJ0RGF0YSgpLFxyXG4gICAgICBvcHRpb25zOiB0aGlzLmdldENoYXJ0T3B0aW9ucygpLFxyXG4gICAgICBwbHVnaW5zOiB0aGlzLnBsdWdpbnNcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoYXJ0RGF0YSgpOiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydkYXRhJ10ge1xyXG4gICAgY29uc3QgY2hhcnREYXRhID0gdGhpcy5kYXRhID8gdGhpcy5kYXRhIDoge1xyXG4gICAgICBsYWJlbHM6IHRoaXMubGFiZWxzIHx8IFtdLFxyXG4gICAgICBkYXRhc2V0czogdGhpcy5kYXRhc2V0cyB8fCBbXVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5jaGFydE9wdGlvbnMuZGVmYXVsdENvbG9ycylcclxuICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0RGF0YXNldFN0eWxlcyh0aGlzLnR5cGUsIGNoYXJ0RGF0YS5kYXRhc2V0cyBhcyBhbnkpO1xyXG5cclxuICAgIHJldHVybiBjaGFydERhdGE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoYXJ0T3B0aW9ucygpOiBDaGFydENvbmZpZ3VyYXRpb248VFR5cGUsIFREYXRhLCBUTGFiZWw+WydvcHRpb25zJ10ge1xyXG4gICAgY29uc3QgY2hhcnRPcHRpb25zID0gdGhpcy5vdmVycmlkZURlZmF1bHRPcHRpb25zQnlNb2RlbCgpO1xyXG4gICAgcmV0dXJuIG1lcmdlRGVlcChjaGFydE9wdGlvbnMsIHRoaXMub3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG92ZXJyaWRlRGVmYXVsdE9wdGlvbnNCeU1vZGVsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGVmYXVsdENoYXJ0T3B0aW9ucyA9IHRoaXMuc2V0dGluZ3NTZXJ2aWNlLmdldERlZmF1bHRPcHRpb25zKHRoaXMudHlwZSk7XHJcblxyXG4gICAgZGVmYXVsdENoYXJ0T3B0aW9ucy5zY2FsZXMueC5ncmlkLmRpc3BsYXkgPSB0aGlzLmNoYXJ0T3B0aW9ucy5ncmlkTGluZXM7XHJcbiAgICBkZWZhdWx0Q2hhcnRPcHRpb25zLnNjYWxlcy54LmRpc3BsYXkgPSB0aGlzLmNoYXJ0T3B0aW9ucy54QXhlO1xyXG4gICAgZGVmYXVsdENoYXJ0T3B0aW9ucy5zY2FsZXMueS5ncmlkLmRpc3BsYXkgPSB0aGlzLmNoYXJ0T3B0aW9ucy5ncmlkTGluZXM7XHJcbiAgICBkZWZhdWx0Q2hhcnRPcHRpb25zLnNjYWxlcy55LmRpc3BsYXkgPSB0aGlzLmNoYXJ0T3B0aW9ucy55QXhlO1xyXG4gICAgZGVmYXVsdENoYXJ0T3B0aW9ucy5zY2FsZXMueC50aWNrcy5kaXNwbGF5ID0gdGhpcy5jaGFydE9wdGlvbnMudGlja3M7XHJcbiAgICBkZWZhdWx0Q2hhcnRPcHRpb25zLnNjYWxlcy55LnRpY2tzLmRpc3BsYXkgPSB0aGlzLmNoYXJ0T3B0aW9ucy50aWNrcztcclxuICAgIGRlZmF1bHRDaGFydE9wdGlvbnMucGx1Z2lucy50b29sdGlwLmVuYWJsZWQgPSB0aGlzLmNoYXJ0T3B0aW9ucy50b29sdGlwO1xyXG4gICAgZGVmYXVsdENoYXJ0T3B0aW9ucy5wbHVnaW5zLmxlZ2VuZC5kaXNwbGF5ID0gdGhpcy5jaGFydE9wdGlvbnMubGVnZW5kO1xyXG5cclxuICAgIHJldHVybiBtZXJnZURlZXAoZGVmYXVsdENoYXJ0T3B0aW9ucywgdGhpcy50aGVtZU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb2xvcnMobW9kZWw6IENoYXJ0VGhlbWVNb2RlbCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2hhcnQpIHtcclxuXHJcbiAgICAgIG1lcmdlRGVlcCh0aGlzLmNoYXJ0LmNvbmZpZy5vcHRpb25zLCBtb2RlbC5vcHRpb25zKTtcclxuXHJcbiAgICAgIGlmIChpc0RlZmluZWQobW9kZWwuZGF0YVNldENvbG9ycykpXHJcbiAgICAgICAgdGhpcy5zZXR0aW5nc1NlcnZpY2Uuc2V0RGF0YXNldFN0eWxlcyh0aGlzLnR5cGUsIHRoaXMuY2hhcnQuY29uZmlnLmRhdGEuZGF0YXNldHMgYXMgYW55LCBtb2RlbC5kYXRhU2V0Q29sb3JzKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxjYW52YXMgI2NoYXJ0PjwvY2FudmFzPiJdfQ==
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { UIConstants, replaceRgbOpacity } from "ngx-sfc-common";
|
|
2
|
+
const DEFAULT_BACKGROUND_COLORS = [
|
|
3
|
+
`rgb(93%, 33%, 40%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
4
|
+
`rgba(99%, 43%, 32%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
5
|
+
`rgb(100%, 81%, 33%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
6
|
+
`rgb(63%, 83%, 41%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
7
|
+
`rgb(28%, 81%, 68%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
8
|
+
`rgb(31%, 76%, 91%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
9
|
+
`rgb(36%, 61%, 93%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
10
|
+
`rgb(67%, 57%, 93%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
11
|
+
`rgb(93%, 53%, 75%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`,
|
|
12
|
+
`rgb(80%, 82%, 85%, ${UIConstants.RGB_OPACITY_PLACEHOLDER})`
|
|
13
|
+
];
|
|
14
|
+
const DEFAULT_BORDER_COLORS = ['#DA4453', '#E9573F', '#FCBB42', '#8CC152', '#37BC9B', '#3BAFDA', '#4A89DC', '#967ADC', '#D770AD', '#AAB2BD'];
|
|
15
|
+
const DEFAULT_MODE_COLORS = { GRID: 'rgba(0,0,0,0.1)', TICKS: '#666' };
|
|
16
|
+
const DARK_MODE_COLORS = { GRID: '#656D78', TICKS: '#E6E9ED' };
|
|
17
|
+
export const CHART_DEFAULTS = {
|
|
18
|
+
OPTIONS: _getOptions(),
|
|
19
|
+
OPTIONS_NOT_LINES: _getOptions(false),
|
|
20
|
+
OPTIONS_RADIAL: _getOptions(false, true),
|
|
21
|
+
COLORS: _getColors(),
|
|
22
|
+
HALF_TRANSPARENT_COLORS: _getColors(0.5),
|
|
23
|
+
THEME: {
|
|
24
|
+
DEFAULT: _getThemeOptions(false),
|
|
25
|
+
DARK: _getThemeOptions(true)
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
function _getOptions(showAxes = true, showRadialAxes = false) {
|
|
29
|
+
return {
|
|
30
|
+
responsive: true,
|
|
31
|
+
maintainAspectRatio: false,
|
|
32
|
+
scales: {
|
|
33
|
+
x: {
|
|
34
|
+
display: showAxes,
|
|
35
|
+
grid: { display: true },
|
|
36
|
+
ticks: { display: true }
|
|
37
|
+
},
|
|
38
|
+
y: {
|
|
39
|
+
display: showAxes,
|
|
40
|
+
grid: { display: true },
|
|
41
|
+
ticks: { display: true }
|
|
42
|
+
},
|
|
43
|
+
r: {
|
|
44
|
+
display: showRadialAxes,
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
plugins: {
|
|
48
|
+
tooltip: { enabled: true },
|
|
49
|
+
legend: { display: true }
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function _getColors(opacity = 1) {
|
|
54
|
+
const backgrounds = DEFAULT_BACKGROUND_COLORS.map(b => replaceRgbOpacity(b, opacity));
|
|
55
|
+
return backgrounds.map((background, index) => {
|
|
56
|
+
const border = DEFAULT_BORDER_COLORS[index];
|
|
57
|
+
return {
|
|
58
|
+
backgroundColor: background,
|
|
59
|
+
hoverBackgroundColor: background,
|
|
60
|
+
borderColor: border,
|
|
61
|
+
pointBackgroundColor: background,
|
|
62
|
+
pointBorderColor: border
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function _getThemeOptions(dark) {
|
|
67
|
+
const grid = dark ? DARK_MODE_COLORS.GRID : DEFAULT_MODE_COLORS.GRID, ticks = dark ? DARK_MODE_COLORS.TICKS : DEFAULT_MODE_COLORS.TICKS;
|
|
68
|
+
return {
|
|
69
|
+
scales: {
|
|
70
|
+
x: {
|
|
71
|
+
grid: { color: grid },
|
|
72
|
+
ticks: { color: ticks }
|
|
73
|
+
},
|
|
74
|
+
y: {
|
|
75
|
+
grid: { color: grid },
|
|
76
|
+
ticks: { color: ticks }
|
|
77
|
+
},
|
|
78
|
+
r: {
|
|
79
|
+
angleLines: { color: grid },
|
|
80
|
+
grid: { color: grid },
|
|
81
|
+
ticks: { color: ticks, backdropColor: 'transparent' },
|
|
82
|
+
pointLabels: { color: ticks }
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
plugins: {
|
|
86
|
+
legend: {
|
|
87
|
+
labels: { color: ticks }
|
|
88
|
+
},
|
|
89
|
+
title: {
|
|
90
|
+
color: ticks
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNmYy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jaGFydC9jaGFydC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2hFLE1BQU0seUJBQXlCLEdBQUc7SUFDOUIsc0JBQXNCLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRztJQUM1RCx1QkFBdUIsV0FBVyxDQUFDLHVCQUF1QixHQUFHO0lBQzdELHVCQUF1QixXQUFXLENBQUMsdUJBQXVCLEdBQUc7SUFDN0Qsc0JBQXNCLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRztJQUM1RCxzQkFBc0IsV0FBVyxDQUFDLHVCQUF1QixHQUFHO0lBQzVELHNCQUFzQixXQUFXLENBQUMsdUJBQXVCLEdBQUc7SUFDNUQsc0JBQXNCLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRztJQUM1RCxzQkFBc0IsV0FBVyxDQUFDLHVCQUF1QixHQUFHO0lBQzVELHNCQUFzQixXQUFXLENBQUMsdUJBQXVCLEdBQUc7SUFDNUQsc0JBQXNCLFdBQVcsQ0FBQyx1QkFBdUIsR0FBRztDQUMvRCxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRTdJLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBRXZFLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQztBQUUvRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRTtJQUN0QixpQkFBaUIsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ3JDLGNBQWMsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztJQUN4QyxNQUFNLEVBQUUsVUFBVSxFQUFFO0lBQ3BCLHVCQUF1QixFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDeEMsS0FBSyxFQUFFO1FBQ0gsT0FBTyxFQUFFLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUNoQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0tBQy9CO0NBQ0osQ0FBQTtBQUVELFNBQVMsV0FBVyxDQUFDLFdBQW9CLElBQUksRUFBRSxpQkFBMEIsS0FBSztJQUMxRSxPQUFPO1FBQ0gsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsS0FBSztRQUMxQixNQUFNLEVBQUU7WUFDSixDQUFDLEVBQUU7Z0JBQ0MsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ3ZCLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7YUFDM0I7WUFDRCxDQUFDLEVBQUU7Z0JBQ0MsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7Z0JBQ3ZCLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7YUFDM0I7WUFDRCxDQUFDLEVBQUU7Z0JBQ0MsT0FBTyxFQUFFLGNBQWM7YUFDMUI7U0FDSjtRQUNELE9BQU8sRUFBRTtZQUNMLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDMUIsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRTtTQUM1QjtLQUNKLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsVUFBa0IsQ0FBQztJQUNuQyxNQUFNLFdBQVcsR0FBRyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUV0RixPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFrQixFQUFFLEtBQWEsRUFBRSxFQUFFO1FBQ3pELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLE9BQU87WUFDSCxlQUFlLEVBQUUsVUFBVTtZQUMzQixvQkFBb0IsRUFBRSxVQUFVO1lBQ2hDLFdBQVcsRUFBRSxNQUFNO1lBQ25CLG9CQUFvQixFQUFFLFVBQVU7WUFDaEMsZ0JBQWdCLEVBQUUsTUFBTTtTQUMzQixDQUFBO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFhO0lBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQ2hFLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO0lBQ3RFLE9BQU87UUFDSCxNQUFNLEVBQUU7WUFDSixDQUFDLEVBQUU7Z0JBQ0MsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDckIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTthQUUxQjtZQUNELENBQUMsRUFBRTtnQkFDQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO2dCQUNyQixLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO2FBQzFCO1lBQ0QsQ0FBQyxFQUFFO2dCQUNDLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQzNCLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3JCLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRTtnQkFDckQsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTthQUNoQztTQUNKO1FBQ0QsT0FBTyxFQUFFO1lBQ0wsTUFBTSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7YUFDM0I7WUFDRCxLQUFLLEVBQUU7Z0JBQ0gsS0FBSyxFQUFFLEtBQUs7YUFDZjtTQUNKO0tBQ0osQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFydENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiY2hhcnQuanNcIjtcclxuaW1wb3J0IHsgVUlDb25zdGFudHMsIHJlcGxhY2VSZ2JPcGFjaXR5IH0gZnJvbSBcIm5neC1zZmMtY29tbW9uXCI7XHJcbmltcG9ydCB7IENoYXJ0VGhlbWVEYXRhU2V0Q29sb3JzIH0gZnJvbSBcIi4vc2VydmljZS90aGVtZS9jaGFydC10aGVtZS5tb2RlbFwiO1xyXG5cclxuY29uc3QgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SUyA9IFtcclxuICAgIGByZ2IoOTMlLCAzMyUsIDQwJSwgJHtVSUNvbnN0YW50cy5SR0JfT1BBQ0lUWV9QTEFDRUhPTERFUn0pYCxcclxuICAgIGByZ2JhKDk5JSwgNDMlLCAzMiUsICR7VUlDb25zdGFudHMuUkdCX09QQUNJVFlfUExBQ0VIT0xERVJ9KWAsXHJcbiAgICBgcmdiKDEwMCUsIDgxJSwgMzMlLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYig2MyUsIDgzJSwgNDElLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYigyOCUsIDgxJSwgNjglLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYigzMSUsIDc2JSwgOTElLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYigzNiUsIDYxJSwgOTMlLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYig2NyUsIDU3JSwgOTMlLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYig5MyUsIDUzJSwgNzUlLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgLFxyXG4gICAgYHJnYig4MCUsIDgyJSwgODUlLCAke1VJQ29uc3RhbnRzLlJHQl9PUEFDSVRZX1BMQUNFSE9MREVSfSlgXHJcbl07XHJcblxyXG5jb25zdCBERUZBVUxUX0JPUkRFUl9DT0xPUlMgPSBbJyNEQTQ0NTMnLCAnI0U5NTczRicsICcjRkNCQjQyJywgJyM4Q0MxNTInLCAnIzM3QkM5QicsICcjM0JBRkRBJywgJyM0QTg5REMnLCAnIzk2N0FEQycsICcjRDc3MEFEJywgJyNBQUIyQkQnXTtcclxuXHJcbmNvbnN0IERFRkFVTFRfTU9ERV9DT0xPUlMgPSB7IEdSSUQ6ICdyZ2JhKDAsMCwwLDAuMSknLCBUSUNLUzogJyM2NjYnIH07XHJcblxyXG5jb25zdCBEQVJLX01PREVfQ09MT1JTID0geyBHUklEOiAnIzY1NkQ3OCcsIFRJQ0tTOiAnI0U2RTlFRCcgfTtcclxuXHJcbmV4cG9ydCBjb25zdCBDSEFSVF9ERUZBVUxUUyA9IHtcclxuICAgIE9QVElPTlM6IF9nZXRPcHRpb25zKCksXHJcbiAgICBPUFRJT05TX05PVF9MSU5FUzogX2dldE9wdGlvbnMoZmFsc2UpLFxyXG4gICAgT1BUSU9OU19SQURJQUw6IF9nZXRPcHRpb25zKGZhbHNlLCB0cnVlKSxcclxuICAgIENPTE9SUzogX2dldENvbG9ycygpLFxyXG4gICAgSEFMRl9UUkFOU1BBUkVOVF9DT0xPUlM6IF9nZXRDb2xvcnMoMC41KSxcclxuICAgIFRIRU1FOiB7XHJcbiAgICAgICAgREVGQVVMVDogX2dldFRoZW1lT3B0aW9ucyhmYWxzZSksXHJcbiAgICAgICAgREFSSzogX2dldFRoZW1lT3B0aW9ucyh0cnVlKVxyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBfZ2V0T3B0aW9ucyhzaG93QXhlczogYm9vbGVhbiA9IHRydWUsIHNob3dSYWRpYWxBeGVzOiBib29sZWFuID0gZmFsc2UpOiBDaGFydENvbmZpZ3VyYXRpb25bJ29wdGlvbnMnXSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHJlc3BvbnNpdmU6IHRydWUsXHJcbiAgICAgICAgbWFpbnRhaW5Bc3BlY3RSYXRpbzogZmFsc2UsXHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICAgIHg6IHtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHNob3dBeGVzLFxyXG4gICAgICAgICAgICAgICAgZ3JpZDogeyBkaXNwbGF5OiB0cnVlIH0sXHJcbiAgICAgICAgICAgICAgICB0aWNrczogeyBkaXNwbGF5OiB0cnVlIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeToge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogc2hvd0F4ZXMsXHJcbiAgICAgICAgICAgICAgICBncmlkOiB7IGRpc3BsYXk6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIHRpY2tzOiB7IGRpc3BsYXk6IHRydWUgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByOiB7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBzaG93UmFkaWFsQXhlcyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgICAgICB0b29sdGlwOiB7IGVuYWJsZWQ6IHRydWUgfSxcclxuICAgICAgICAgICAgbGVnZW5kOiB7IGRpc3BsYXk6IHRydWUgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIF9nZXRDb2xvcnMob3BhY2l0eTogbnVtYmVyID0gMSk6IENoYXJ0VGhlbWVEYXRhU2V0Q29sb3JzW10ge1xyXG4gICAgY29uc3QgYmFja2dyb3VuZHMgPSBERUZBVUxUX0JBQ0tHUk9VTkRfQ09MT1JTLm1hcChiID0+IHJlcGxhY2VSZ2JPcGFjaXR5KGIsIG9wYWNpdHkpKTtcclxuXHJcbiAgICByZXR1cm4gYmFja2dyb3VuZHMubWFwKChiYWNrZ3JvdW5kOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBib3JkZXIgPSBERUZBVUxUX0JPUkRFUl9DT0xPUlNbaW5kZXhdO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogYmFja2dyb3VuZCxcclxuICAgICAgICAgICAgaG92ZXJCYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmQsXHJcbiAgICAgICAgICAgIGJvcmRlckNvbG9yOiBib3JkZXIsXHJcbiAgICAgICAgICAgIHBvaW50QmFja2dyb3VuZENvbG9yOiBiYWNrZ3JvdW5kLFxyXG4gICAgICAgICAgICBwb2ludEJvcmRlckNvbG9yOiBib3JkZXJcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gX2dldFRoZW1lT3B0aW9ucyhkYXJrOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBncmlkID0gZGFyayA/IERBUktfTU9ERV9DT0xPUlMuR1JJRCA6IERFRkFVTFRfTU9ERV9DT0xPUlMuR1JJRCxcclxuICAgICAgICB0aWNrcyA9IGRhcmsgPyBEQVJLX01PREVfQ09MT1JTLlRJQ0tTIDogREVGQVVMVF9NT0RFX0NPTE9SUy5USUNLUztcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgc2NhbGVzOiB7XHJcbiAgICAgICAgICAgIHg6IHtcclxuICAgICAgICAgICAgICAgIGdyaWQ6IHsgY29sb3I6IGdyaWQgfSxcclxuICAgICAgICAgICAgICAgIHRpY2tzOiB7IGNvbG9yOiB0aWNrcyB9XHJcblxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB5OiB7XHJcbiAgICAgICAgICAgICAgICBncmlkOiB7IGNvbG9yOiBncmlkIH0sXHJcbiAgICAgICAgICAgICAgICB0aWNrczogeyBjb2xvcjogdGlja3MgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByOiB7XHJcbiAgICAgICAgICAgICAgICBhbmdsZUxpbmVzOiB7IGNvbG9yOiBncmlkIH0sXHJcbiAgICAgICAgICAgICAgICBncmlkOiB7IGNvbG9yOiBncmlkIH0sXHJcbiAgICAgICAgICAgICAgICB0aWNrczogeyBjb2xvcjogdGlja3MsIGJhY2tkcm9wQ29sb3I6ICd0cmFuc3BhcmVudCcgfSxcclxuICAgICAgICAgICAgICAgIHBvaW50TGFiZWxzOiB7IGNvbG9yOiB0aWNrcyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHBsdWdpbnM6IHtcclxuICAgICAgICAgICAgbGVnZW5kOiB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbHM6IHsgY29sb3I6IHRpY2tzIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGl0bGU6IHtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiB0aWNrc1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
|