ngx-sfc-components 0.0.8 → 0.0.9

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.
@@ -18,10 +18,10 @@ export class SliderButtonComponent {
18
18
  }
19
19
  }
20
20
  SliderButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21
- SliderButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderButtonComponent, selector: "sfc-slider-button", inputs: { type: "type", active: "active" }, host: { properties: { "class": "this.type", "class.active": "this.active" } }, ngImport: i0, template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0;border-radius:.43em 0 0 .43em}:host.previous{left:0;border-radius:0 .43em .43em 0}:host.active.next{right:0}:host.active.previous{left:0}\n"], dependencies: [{ kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
21
+ SliderButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderButtonComponent, selector: "sfc-slider-button", inputs: { type: "type", active: "active" }, host: { properties: { "class": "this.type", "class.active": "this.active" } }, ngImport: i0, template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999;border-radius:.43em}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0}:host.previous{left:0}:host.active.next{right:0}:host.active.previous{left:0}\n"], dependencies: [{ kind: "component", type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
22
22
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderButtonComponent, decorators: [{
23
23
  type: Component,
24
- args: [{ selector: 'sfc-slider-button', template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0;border-radius:.43em 0 0 .43em}:host.previous{left:0;border-radius:0 .43em .43em 0}:host.active.next{right:0}:host.active.previous{left:0}\n"] }]
24
+ args: [{ selector: 'sfc-slider-button', template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999;border-radius:.43em}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0}:host.previous{left:0}:host.active.next{right:0}:host.active.previous{left:0}\n"] }]
25
25
  }], propDecorators: { type: [{
26
26
  type: Input
27
27
  }, {
@@ -12,7 +12,7 @@ export class SliderItemComponent {
12
12
  ;
13
13
  }
14
14
  SliderItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- SliderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderItemComponent, selector: "sfc-slider-item", inputs: { model: "model" }, host: { properties: { "style.height.px": "this._height" } }, viewQueries: [{ propertyName: "imageEl", first: true, predicate: ["image"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"title\">\r\n <h2>{{model.title}}</h2>\r\n <span>{{model.subTitle}}</span>\r\n </div>\r\n <div class=\"image\">\r\n <img #image [src]=\"model.imageSrc\" sfcImageLoad>\r\n </div> \r\n</div>", styles: [":host{display:inline-block}:host .container{position:absolute;left:0;top:0;width:100%}:host .container .title{position:absolute;top:10%;left:6%;-webkit-user-select:none;user-select:none;font-size:1.5em;z-index:2}:host .container .title h2{margin:0;text-transform:uppercase}:host .container .image{position:relative;z-index:1}:host .container .image img{max-width:100%;height:auto}\n"], dependencies: [{ kind: "directive", type: i1.ImageLoadDirective, selector: "[sfcImageLoad]" }] });
15
+ SliderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderItemComponent, selector: "sfc-slider-item", inputs: { model: "model" }, host: { properties: { "style.height.px": "this._height" } }, viewQueries: [{ propertyName: "imageEl", first: true, predicate: ["image"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"title\">\r\n <h2>{{model.title}}</h2>\r\n <span>{{model.subTitle}}</span>\r\n </div>\r\n <div class=\"image\">\r\n <img #image [src]=\"model.imageSrc\" sfcImageLoad>\r\n </div> \r\n</div>", styles: [":host{display:inline-block}:host .container{position:absolute;left:0;top:0;width:100%}:host .container .title{position:absolute;top:10%;left:6%;-webkit-user-select:none;user-select:none;font-size:1.5em;z-index:2}:host .container .title h2{margin:0;text-transform:uppercase}:host .container .image{position:relative;z-index:1}:host .container .image img{max-width:100%;height:auto}\n"], dependencies: [{ kind: "directive", type: i1.ImageLoadDirective, selector: "[sfcImageLoad]", outputs: ["sfcImageLoad"] }] });
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderItemComponent, decorators: [{
17
17
  type: Component,
18
18
  args: [{ selector: 'sfc-slider-item', template: "<div class=\"container\">\r\n <div class=\"title\">\r\n <h2>{{model.title}}</h2>\r\n <span>{{model.subTitle}}</span>\r\n </div>\r\n <div class=\"image\">\r\n <img #image [src]=\"model.imageSrc\" sfcImageLoad>\r\n </div> \r\n</div>", styles: [":host{display:inline-block}:host .container{position:absolute;left:0;top:0;width:100%}:host .container .title{position:absolute;top:10%;left:6%;-webkit-user-select:none;user-select:none;font-size:1.5em;z-index:2}:host .container .title h2{margin:0;text-transform:uppercase}:host .container .image{position:relative;z-index:1}:host .container .image img{max-width:100%;height:auto}\n"] }]
@@ -23,6 +23,7 @@ export class SliderComponent {
23
23
  this.resizeService = resizeService;
24
24
  this.imageLoadService = imageLoadService;
25
25
  this.changeDetector = changeDetector;
26
+ this.SIZE_FACTOR = 0.00225;
26
27
  this.PAUSE_ICON = faPauseCircle;
27
28
  this.PLAY_ICON = faPlayCircle;
28
29
  this.SliderButtonType = SliderButtonType;
@@ -69,11 +70,12 @@ export class SliderComponent {
69
70
  }));
70
71
  if (this.isAutomatic)
71
72
  this.automaticService.start();
72
- this.imageLoadService.load$.subscribe(sizeEvent => {
73
- this._sizeFactor = this.getSizeFactor(sizeEvent.height);
74
- this._maxWidth = sizeEvent.width;
73
+ this.imageLoadService.load$.subscribe((sizeEvent) => {
74
+ this._sizeFactor = this.getSizeFactor(sizeEvent.offset.height);
75
+ this._maxWidth = sizeEvent.natural.width;
75
76
  });
76
77
  this.resizeService.onResize$.subscribe(() => this._sizeFactor = this.getSizeFactor(this.itemsEl.nativeElement.offsetHeight));
78
+ this.changeDetector.detectChanges();
77
79
  }
78
80
  ngAfterViewChecked() {
79
81
  this.changeDetector.detectChanges();
@@ -88,11 +90,11 @@ export class SliderComponent {
88
90
  this.automaticService.toggle();
89
91
  }
90
92
  getSizeFactor(value) {
91
- return value * 0.00225;
93
+ return value * this.SIZE_FACTOR;
92
94
  }
93
95
  }
94
96
  SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderComponent, deps: [{ token: i1.SliderService }, { token: i2.SliderAutomaticService }, { token: i3.ResizeService }, { token: i3.ImageLoadService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
95
- SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderComponent, selector: "sfc-slider", inputs: { items: "items", type: "type", showCount: "showCount", pagination: "pagination", handlers: "handlers", showAutomaticToggle: "showAutomaticToggle" }, host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()" }, properties: { "style.fontSize.em": "this._sizeFactor", "style.max-width.px": "this._maxWidth" } }, providers: [SliderService, SliderAutomaticService], viewQueries: [{ propertyName: "itemsEl", first: true, predicate: ["itemsContainer"], descendants: true }, { propertyName: "sliderItems", predicate: SliderItemComponent, descendants: true }], ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div #itemsContainer class=\"items\">\r\n <sfc-slider-item *ngFor=\"let item of items; let itemIndex = index;\" [model]=\"item\"\r\n [sfcShowHideElement]=\"itemIndex === vm.index\"></sfc-slider-item>\r\n </div>\r\n\r\n <div *ngIf=\"handlers\" class=\"buttons\">\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Next\" (click)=\"move(SliderMoveType.Next)\">\r\n </sfc-slider-button>\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Previous\" (click)=\"move(SliderMoveType.Previous)\">\r\n </sfc-slider-button>\r\n </div>\r\n\r\n <div class=\"counter\" *ngIf=\"showCount\">{{vm.label}}</div>\r\n\r\n <div class=\"actions\">\r\n <sfc-slider-pagination *ngIf=\"pagination\" [count]=\"vm.count\" [index]=\"vm.index\" (selected)=\"select($event)\">\r\n </sfc-slider-pagination>\r\n\r\n <div *ngIf=\"isAutomatic && showAutomaticToggle\" class=\"automatic\" (click)=\"toggleAutomatic()\">\r\n <fa-icon [icon]=\"automaticIcon\"></fa-icon>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:inline-block;width:100%}:host .container{position:relative;color:#fff}:host .container .counter{top:10%;right:6%;position:absolute;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .actions{cursor:pointer;display:flex;flex-direction:column;justify-content:center;position:absolute;top:85%;align-items:center;width:100%}:host .container .actions .automatic{margin-top:.3em}:host .container .buttons,:host .container .counter,:host .container .actions{z-index:2}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i3.ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: i6.SliderItemComponent, selector: "sfc-slider-item", inputs: ["model"] }, { kind: "component", type: i7.SliderButtonComponent, selector: "sfc-slider-button", inputs: ["type", "active"] }, { kind: "component", type: i8.SliderPaginationComponent, selector: "sfc-slider-pagination", inputs: ["count", "index"], outputs: ["selected"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
97
+ SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderComponent, selector: "sfc-slider", inputs: { items: "items", type: "type", showCount: "showCount", pagination: "pagination", handlers: "handlers", showAutomaticToggle: "showAutomaticToggle" }, host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()" }, properties: { "style.font-size.em": "this._sizeFactor", "style.max-width.px": "this._maxWidth" } }, providers: [SliderService, SliderAutomaticService], viewQueries: [{ propertyName: "itemsEl", first: true, predicate: ["itemsContainer"], descendants: true }, { propertyName: "sliderItems", predicate: SliderItemComponent, descendants: true }], ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div #itemsContainer class=\"items\">\r\n <sfc-slider-item *ngFor=\"let item of items; let itemIndex = index;\" [model]=\"item\"\r\n [sfcShowHideElement]=\"itemIndex === vm.index\"></sfc-slider-item>\r\n </div>\r\n\r\n <div *ngIf=\"handlers\" class=\"buttons\">\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Next\" (click)=\"move(SliderMoveType.Next)\">\r\n </sfc-slider-button>\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Previous\" (click)=\"move(SliderMoveType.Previous)\">\r\n </sfc-slider-button>\r\n </div>\r\n\r\n <div class=\"counter\" *ngIf=\"showCount\">{{vm.label}}</div>\r\n\r\n <div class=\"actions\">\r\n <sfc-slider-pagination *ngIf=\"pagination\" [count]=\"vm.count\" [index]=\"vm.index\" (selected)=\"select($event)\">\r\n </sfc-slider-pagination>\r\n\r\n <div *ngIf=\"isAutomatic && showAutomaticToggle\" class=\"automatic\" (click)=\"toggleAutomatic()\">\r\n <fa-icon [icon]=\"automaticIcon\"></fa-icon>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:inline-block;width:100%}:host .container{position:relative;color:#fff}:host .container .counter{top:10%;right:6%;position:absolute;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .actions{cursor:pointer;display:flex;flex-direction:column;justify-content:center;position:absolute;top:85%;align-items:center;width:100%}:host .container .actions .automatic{margin-top:.3em}:host .container .buttons,:host .container .counter,:host .container .actions{z-index:2}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i3.ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: i6.SliderItemComponent, selector: "sfc-slider-item", inputs: ["model"] }, { kind: "component", type: i7.SliderButtonComponent, selector: "sfc-slider-button", inputs: ["type", "active"] }, { kind: "component", type: i8.SliderPaginationComponent, selector: "sfc-slider-pagination", inputs: ["count", "index"], outputs: ["selected"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }] });
96
98
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderComponent, decorators: [{
97
99
  type: Component,
98
100
  args: [{ selector: 'sfc-slider', providers: [SliderService, SliderAutomaticService], template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div #itemsContainer class=\"items\">\r\n <sfc-slider-item *ngFor=\"let item of items; let itemIndex = index;\" [model]=\"item\"\r\n [sfcShowHideElement]=\"itemIndex === vm.index\"></sfc-slider-item>\r\n </div>\r\n\r\n <div *ngIf=\"handlers\" class=\"buttons\">\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Next\" (click)=\"move(SliderMoveType.Next)\">\r\n </sfc-slider-button>\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Previous\" (click)=\"move(SliderMoveType.Previous)\">\r\n </sfc-slider-button>\r\n </div>\r\n\r\n <div class=\"counter\" *ngIf=\"showCount\">{{vm.label}}</div>\r\n\r\n <div class=\"actions\">\r\n <sfc-slider-pagination *ngIf=\"pagination\" [count]=\"vm.count\" [index]=\"vm.index\" (selected)=\"select($event)\">\r\n </sfc-slider-pagination>\r\n\r\n <div *ngIf=\"isAutomatic && showAutomaticToggle\" class=\"automatic\" (click)=\"toggleAutomatic()\">\r\n <fa-icon [icon]=\"automaticIcon\"></fa-icon>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:inline-block;width:100%}:host .container{position:relative;color:#fff}:host .container .counter{top:10%;right:6%;position:absolute;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .actions{cursor:pointer;display:flex;flex-direction:column;justify-content:center;position:absolute;top:85%;align-items:center;width:100%}:host .container .actions .automatic{margin-top:.3em}:host .container .buttons,:host .container .counter,:host .container .actions{z-index:2}\n"] }]
@@ -122,9 +124,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
122
124
  args: ['itemsContainer']
123
125
  }], _sizeFactor: [{
124
126
  type: HostBinding,
125
- args: ['style.fontSize.em']
127
+ args: ['style.font-size.em']
126
128
  }], _maxWidth: [{
127
129
  type: HostBinding,
128
130
  args: ['style.max-width.px']
129
131
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZmMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUMrQyxTQUFTLEVBQWMsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQ2hHLFNBQVMsRUFBRSxZQUFZLEVBQ25DLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQWtCLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7QUFTaEcsTUFBTSxPQUFPLGVBQWU7SUF5RTFCLFlBQW1CLGFBQTRCLEVBQ3JDLGdCQUF3QyxFQUN4QyxhQUE0QixFQUM3QixnQkFBa0MsRUFDakMsY0FBaUM7UUFKeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDckMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4Qyxr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LFdBQVc7dUJBQUMsbUJBQW1CO2dCQUl4QixTQUFTO3NCQURoQixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsXHJcbiAgUXVlcnlMaXN0LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlblxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2xpZGVyQnV0dG9uVHlwZSB9IGZyb20gJy4vcGFydHMvYnV0dG9uL3NsaWRlci1idXR0b24tdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU2xpZGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vcGFydHMvaXRlbS9zbGlkZXItaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJU2xpZGVySXRlbU1vZGVsIH0gZnJvbSAnLi9wYXJ0cy9pdGVtL3NsaWRlci1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHsgU2xpZGVyQXV0b21hdGljU2VydmljZSB9IGZyb20gJy4vc2VydmljZS9hdXRvbWF0aWMvc2xpZGVyLWF1dG9tYXRpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2xpZGVyTW92ZVR5cGUgfSBmcm9tICcuL3NlcnZpY2Uvc2xpZGVyL3NsaWRlci1tb3ZlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFNsaWRlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2Uvc2xpZGVyL3NsaWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2xpZGVyVHlwZSB9IGZyb20gJy4vc2xpZGVyLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IGZhUGF1c2VDaXJjbGUsIGZhUGxheUNpcmNsZSwgSWNvbkRlZmluaXRpb24gfSBmcm9tICdAZm9ydGF3ZXNvbWUvZnJlZS1zb2xpZC1zdmctaWNvbnMnO1xyXG5pbXBvcnQgeyBSZXNpemVTZXJ2aWNlLCBJbWFnZUxvYWRTZXJ2aWNlIH0gZnJvbSAnbmd4LXNmYy1jb21tb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZmMtc2xpZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtTbGlkZXJTZXJ2aWNlLCBTbGlkZXJBdXRvbWF0aWNTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcblxyXG4gIHJlYWRvbmx5IFBBVVNFX0lDT04gPSBmYVBhdXNlQ2lyY2xlO1xyXG5cclxuICByZWFkb25seSBQTEFZX0lDT04gPSBmYVBsYXlDaXJjbGU7XHJcblxyXG4gIFNsaWRlckJ1dHRvblR5cGUgPSBTbGlkZXJCdXR0b25UeXBlO1xyXG5cclxuICBTbGlkZXJNb3ZlVHlwZSA9IFNsaWRlck1vdmVUeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1zOiBJU2xpZGVySXRlbU1vZGVsW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlOiBTbGlkZXJUeXBlID0gU2xpZGVyVHlwZS5EZWZhdWx0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dDb3VudDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGFuZGxlcnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dBdXRvbWF0aWNUb2dnbGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFNsaWRlckl0ZW1Db21wb25lbnQpXHJcbiAgcHJpdmF0ZSBzbGlkZXJJdGVtcyE6IFF1ZXJ5TGlzdDxTbGlkZXJJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgYWN0aXZlIHNob3cgYnV0dG9uc1xyXG4gICAqL1xyXG4gIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgdm0kITogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcclxuICBvbkVudGVyKCkge1xyXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgIC8vIHN0b3AgYXV0b21hdGljIG1vdmUgb24gaG92ZXJcclxuICAgIGlmICh0aGlzLmlzQXV0b21hdGljKVxyXG4gICAgICB0aGlzLmF1dG9tYXRpY1NlcnZpY2Uuc3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXHJcbiAgb25MZWF2ZSgpIHtcclxuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgLy8gc3RhcnQgYXV0b21hdGljIG1vdmUgb24gaG92ZXIgZW5kXHJcbiAgICBpZiAodGhpcy5pc0F1dG9tYXRpYyAmJiAhdGhpcy5hdXRvbWF0aWNTZXJ2aWNlLnBhdXNlKVxyXG4gICAgICB0aGlzLmF1dG9tYXRpY1NlcnZpY2Uuc3RhcnQoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1zQ29udGFpbmVyJylcclxuICBwcml2YXRlIGl0ZW1zRWwhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZvbnRTaXplLmVtJylcclxuICBwcml2YXRlIF9zaXplRmFjdG9yOiBudW1iZXIgPSAxO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1heC13aWR0aC5weCcpXHJcbiAgcHJpdmF0ZSBfbWF4V2lkdGghOiBudW1iZXI7XHJcblxyXG4gIGdldCBpc0F1dG9tYXRpYygpIHtcclxuICAgIHJldHVybiB0aGlzLnR5cGUgPT0gU2xpZGVyVHlwZS5BdXRvbWF0aWM7XHJcbiAgfVxyXG5cclxuICBnZXQgYXV0b21hdGljSWNvbigpOiBJY29uRGVmaW5pdGlvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5hdXRvbWF0aWNTZXJ2aWNlLnBhdXNlID8gdGhpcy5QTEFZX0lDT04gOiB0aGlzLlBBVVNFX0lDT047XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgc2xpZGVyU2VydmljZTogU2xpZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0b21hdGljU2VydmljZTogU2xpZGVyQXV0b21hdGljU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzaXplU2VydmljZTogUmVzaXplU2VydmljZSxcclxuICAgIHB1YmxpYyBpbWFnZUxvYWRTZXJ2aWNlOiBJbWFnZUxvYWRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb3VudCQgPSB0aGlzLnNsaWRlckl0ZW1zLmNoYW5nZXMucGlwZShtYXAoYyA9PiBjLmxlbmd0aCkpO1xyXG4gICAgdGhpcy5zbGlkZXJTZXJ2aWNlLmluaXQoY291bnQkKTtcclxuXHJcbiAgICB0aGlzLnZtJCA9IHRoaXMuc2xpZGVyU2VydmljZS5tb2RlbCQucGlwZShcclxuICAgICAgbWFwKG1vZGVsID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaW5kZXg6IG1vZGVsLmluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IGAke21vZGVsLmNvdW50ID4gMCA/IG1vZGVsLmluZGV4ICsgMSA6IDB9IC8gJHttb2RlbC5jb3VudH1gLFxyXG4gICAgICAgICAgY291bnQ6IG1vZGVsLmNvdW50XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc0F1dG9tYXRpYylcclxuICAgICAgdGhpcy5hdXRvbWF0aWNTZXJ2aWNlLnN0YXJ0KCk7XHJcblxyXG4gICAgdGhpcy5pbWFnZUxvYWRTZXJ2aWNlLmxvYWQkLnN1YnNjcmliZShzaXplRXZlbnQgPT4ge1xyXG4gICAgICB0aGlzLl9zaXplRmFjdG9yID0gdGhpcy5nZXRTaXplRmFjdG9yKHNpemVFdmVudC5oZWlnaHQpO1xyXG4gICAgICB0aGlzLl9tYXhXaWR0aCA9IHNpemVFdmVudC53aWR0aDtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVzaXplU2VydmljZS5vblJlc2l6ZSQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3NpemVGYWN0b3IgPSB0aGlzLmdldFNpemVGYWN0b3IodGhpcy5pdGVtc0VsLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG1vdmUodHlwZTogU2xpZGVyTW92ZVR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMuc2xpZGVyU2VydmljZS5tb3ZlKHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuc2xpZGVyU2VydmljZS5zZWxlY3QoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXV0b21hdGljKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hdXRvbWF0aWNTZXJ2aWNlLnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTaXplRmFjdG9yKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB2YWx1ZSAqIDAuMDAyMjVcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJ2bSQgfCBhc3luYyBhcyB2bVwiPlxyXG4gICAgPGRpdiAjaXRlbXNDb250YWluZXIgY2xhc3M9XCJpdGVtc1wiPlxyXG4gICAgICAgIDxzZmMtc2xpZGVyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpdGVtSW5kZXggPSBpbmRleDtcIiBbbW9kZWxdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgIFtzZmNTaG93SGlkZUVsZW1lbnRdPVwiaXRlbUluZGV4ID09PSB2bS5pbmRleFwiPjwvc2ZjLXNsaWRlci1pdGVtPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImhhbmRsZXJzXCIgY2xhc3M9XCJidXR0b25zXCI+XHJcbiAgICAgICAgPHNmYy1zbGlkZXItYnV0dG9uIFthY3RpdmVdPVwiYWN0aXZlXCIgW3R5cGVdPVwiU2xpZGVyQnV0dG9uVHlwZS5OZXh0XCIgKGNsaWNrKT1cIm1vdmUoU2xpZGVyTW92ZVR5cGUuTmV4dClcIj5cclxuICAgICAgICA8L3NmYy1zbGlkZXItYnV0dG9uPlxyXG4gICAgICAgIDxzZmMtc2xpZGVyLWJ1dHRvbiBbYWN0aXZlXT1cImFjdGl2ZVwiIFt0eXBlXT1cIlNsaWRlckJ1dHRvblR5cGUuUHJldmlvdXNcIiAoY2xpY2spPVwibW92ZShTbGlkZXJNb3ZlVHlwZS5QcmV2aW91cylcIj5cclxuICAgICAgICA8L3NmYy1zbGlkZXItYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNob3dDb3VudFwiPnt7dm0ubGFiZWx9fTwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgPHNmYy1zbGlkZXItcGFnaW5hdGlvbiAqbmdJZj1cInBhZ2luYXRpb25cIiBbY291bnRdPVwidm0uY291bnRcIiBbaW5kZXhdPVwidm0uaW5kZXhcIiAoc2VsZWN0ZWQpPVwic2VsZWN0KCRldmVudClcIj5cclxuICAgICAgICA8L3NmYy1zbGlkZXItcGFnaW5hdGlvbj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImlzQXV0b21hdGljICYmIHNob3dBdXRvbWF0aWNUb2dnbGVcIiBjbGFzcz1cImF1dG9tYXRpY1wiIChjbGljayk9XCJ0b2dnbGVBdXRvbWF0aWMoKVwiPlxyXG4gICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJhdXRvbWF0aWNJY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZmMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2ZjLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUMrQyxTQUFTLEVBQWMsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQ2hHLFNBQVMsRUFBRSxZQUFZLEVBQ25DLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFekUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQWtCLE1BQU0sbUNBQW1DLENBQUM7Ozs7Ozs7Ozs7QUFTaEcsTUFBTSxPQUFPLGVBQWU7SUEyRTFCLFlBQW1CLGFBQTRCLEVBQ3JDLGdCQUF3QyxFQUN4QyxhQUE0QixFQUM3QixnQkFBa0MsRUFDakMsY0FBaUM7UUFKeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDckMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4Qyxr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QUFZO3VCQUFDLFlBQVk7Z0JBVTFCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxZQUFZO2dCQVVsQixPQUFPO3NCQURkLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUluQixXQUFXO3NCQURsQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFJekIsU0FBUztzQkFEaEIsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0NoZWNrZWQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LFxyXG4gIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNsaWRlckJ1dHRvblR5cGUgfSBmcm9tICcuL3BhcnRzL2J1dHRvbi9zbGlkZXItYnV0dG9uLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7IFNsaWRlckl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3BhcnRzL2l0ZW0vc2xpZGVyLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSVNsaWRlckl0ZW1Nb2RlbCB9IGZyb20gJy4vcGFydHMvaXRlbS9zbGlkZXItaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7IFNsaWRlckF1dG9tYXRpY1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UvYXV0b21hdGljL3NsaWRlci1hdXRvbWF0aWMuc2VydmljZSc7XHJcbmltcG9ydCB7IFNsaWRlck1vdmVUeXBlIH0gZnJvbSAnLi9zZXJ2aWNlL3NsaWRlci9zbGlkZXItbW92ZS10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBTbGlkZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlL3NsaWRlci9zbGlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNsaWRlclR5cGUgfSBmcm9tICcuL3NsaWRlci10eXBlLmVudW0nO1xyXG5pbXBvcnQgeyBmYVBhdXNlQ2lyY2xlLCBmYVBsYXlDaXJjbGUsIEljb25EZWZpbml0aW9uIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2ZyZWUtc29saWQtc3ZnLWljb25zJztcclxuaW1wb3J0IHsgUmVzaXplU2VydmljZSwgSW1hZ2VMb2FkU2VydmljZSB9IGZyb20gJ25neC1zZmMtY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ZjLXNsaWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbU2xpZGVyU2VydmljZSwgU2xpZGVyQXV0b21hdGljU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFNsaWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IFNJWkVfRkFDVE9SID0gMC4wMDIyNTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBQQVVTRV9JQ09OID0gZmFQYXVzZUNpcmNsZTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBQTEFZX0lDT04gPSBmYVBsYXlDaXJjbGU7XHJcblxyXG4gIFNsaWRlckJ1dHRvblR5cGUgPSBTbGlkZXJCdXR0b25UeXBlO1xyXG5cclxuICBTbGlkZXJNb3ZlVHlwZSA9IFNsaWRlck1vdmVUeXBlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW1zOiBJU2xpZGVySXRlbU1vZGVsW10gPSBbXTtcclxuXHJcbiAgQElucHV0KClcclxuICB0eXBlOiBTbGlkZXJUeXBlID0gU2xpZGVyVHlwZS5EZWZhdWx0O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dDb3VudDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgaGFuZGxlcnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dBdXRvbWF0aWNUb2dnbGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBAVmlld0NoaWxkcmVuKFNsaWRlckl0ZW1Db21wb25lbnQpXHJcbiAgcHJpdmF0ZSBzbGlkZXJJdGVtcyE6IFF1ZXJ5TGlzdDxTbGlkZXJJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgYWN0aXZlIHNob3cgYnV0dG9uc1xyXG4gICAqL1xyXG4gIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgdm0kITogT2JzZXJ2YWJsZTxhbnk+O1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcclxuICBvbkVudGVyKCkge1xyXG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xyXG5cclxuICAgIC8vIHN0b3AgYXV0b21hdGljIG1vdmUgb24gaG92ZXJcclxuICAgIGlmICh0aGlzLmlzQXV0b21hdGljKVxyXG4gICAgICB0aGlzLmF1dG9tYXRpY1NlcnZpY2Uuc3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXHJcbiAgb25MZWF2ZSgpIHtcclxuICAgIHRoaXMuYWN0aXZlID0gZmFsc2U7XHJcblxyXG4gICAgLy8gc3RhcnQgYXV0b21hdGljIG1vdmUgb24gaG92ZXIgZW5kXHJcbiAgICBpZiAodGhpcy5pc0F1dG9tYXRpYyAmJiAhdGhpcy5hdXRvbWF0aWNTZXJ2aWNlLnBhdXNlKVxyXG4gICAgICB0aGlzLmF1dG9tYXRpY1NlcnZpY2Uuc3RhcnQoKTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2l0ZW1zQ29udGFpbmVyJylcclxuICBwcml2YXRlIGl0ZW1zRWwhOiBFbGVtZW50UmVmO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmZvbnQtc2l6ZS5lbScpXHJcbiAgcHJpdmF0ZSBfc2l6ZUZhY3RvcjogbnVtYmVyID0gMTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgucHgnKVxyXG4gIHByaXZhdGUgX21heFdpZHRoITogbnVtYmVyO1xyXG5cclxuICBnZXQgaXNBdXRvbWF0aWMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50eXBlID09IFNsaWRlclR5cGUuQXV0b21hdGljO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGF1dG9tYXRpY0ljb24oKTogSWNvbkRlZmluaXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXV0b21hdGljU2VydmljZS5wYXVzZSA/IHRoaXMuUExBWV9JQ09OIDogdGhpcy5QQVVTRV9JQ09OO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIHNsaWRlclNlcnZpY2U6IFNsaWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dG9tYXRpY1NlcnZpY2U6IFNsaWRlckF1dG9tYXRpY1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlc2l6ZVNlcnZpY2U6IFJlc2l6ZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaW1hZ2VMb2FkU2VydmljZTogSW1hZ2VMb2FkU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgY291bnQkID0gdGhpcy5zbGlkZXJJdGVtcy5jaGFuZ2VzLnBpcGUobWFwKGMgPT4gYy5sZW5ndGgpKTtcclxuICAgIHRoaXMuc2xpZGVyU2VydmljZS5pbml0KGNvdW50JCk7XHJcblxyXG4gICAgdGhpcy52bSQgPSB0aGlzLnNsaWRlclNlcnZpY2UubW9kZWwkLnBpcGUoXHJcbiAgICAgIG1hcChtb2RlbCA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGluZGV4OiBtb2RlbC5pbmRleCxcclxuICAgICAgICAgIGxhYmVsOiBgJHttb2RlbC5jb3VudCA+IDAgPyBtb2RlbC5pbmRleCArIDEgOiAwfSAvICR7bW9kZWwuY291bnR9YCxcclxuICAgICAgICAgIGNvdW50OiBtb2RlbC5jb3VudFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNBdXRvbWF0aWMpXHJcbiAgICAgIHRoaXMuYXV0b21hdGljU2VydmljZS5zdGFydCgpO1xyXG5cclxuICAgIHRoaXMuaW1hZ2VMb2FkU2VydmljZS5sb2FkJC5zdWJzY3JpYmUoKHNpemVFdmVudDogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuX3NpemVGYWN0b3IgPSB0aGlzLmdldFNpemVGYWN0b3Ioc2l6ZUV2ZW50Lm9mZnNldC5oZWlnaHQpO1xyXG4gICAgICB0aGlzLl9tYXhXaWR0aCA9IHNpemVFdmVudC5uYXR1cmFsLndpZHRoO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yZXNpemVTZXJ2aWNlLm9uUmVzaXplJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fc2l6ZUZhY3RvciA9IHRoaXMuZ2V0U2l6ZUZhY3Rvcih0aGlzLml0ZW1zRWwubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpKTtcclxuXHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbW92ZSh0eXBlOiBTbGlkZXJNb3ZlVHlwZSk6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZXJTZXJ2aWNlLm1vdmUodHlwZSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3QoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZXJTZXJ2aWNlLnNlbGVjdChpbmRleCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVBdXRvbWF0aWMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dG9tYXRpY1NlcnZpY2UudG9nZ2xlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpemVGYWN0b3IodmFsdWU6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHZhbHVlICogdGhpcy5TSVpFX0ZBQ1RPUjtcclxuICB9XHJcbn0iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCIgKm5nSWY9XCJ2bSQgfCBhc3luYyBhcyB2bVwiPlxyXG4gICAgPGRpdiAjaXRlbXNDb250YWluZXIgY2xhc3M9XCJpdGVtc1wiPlxyXG4gICAgICAgIDxzZmMtc2xpZGVyLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXM7IGxldCBpdGVtSW5kZXggPSBpbmRleDtcIiBbbW9kZWxdPVwiaXRlbVwiXHJcbiAgICAgICAgICAgIFtzZmNTaG93SGlkZUVsZW1lbnRdPVwiaXRlbUluZGV4ID09PSB2bS5pbmRleFwiPjwvc2ZjLXNsaWRlci1pdGVtPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImhhbmRsZXJzXCIgY2xhc3M9XCJidXR0b25zXCI+XHJcbiAgICAgICAgPHNmYy1zbGlkZXItYnV0dG9uIFthY3RpdmVdPVwiYWN0aXZlXCIgW3R5cGVdPVwiU2xpZGVyQnV0dG9uVHlwZS5OZXh0XCIgKGNsaWNrKT1cIm1vdmUoU2xpZGVyTW92ZVR5cGUuTmV4dClcIj5cclxuICAgICAgICA8L3NmYy1zbGlkZXItYnV0dG9uPlxyXG4gICAgICAgIDxzZmMtc2xpZGVyLWJ1dHRvbiBbYWN0aXZlXT1cImFjdGl2ZVwiIFt0eXBlXT1cIlNsaWRlckJ1dHRvblR5cGUuUHJldmlvdXNcIiAoY2xpY2spPVwibW92ZShTbGlkZXJNb3ZlVHlwZS5QcmV2aW91cylcIj5cclxuICAgICAgICA8L3NmYy1zbGlkZXItYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNob3dDb3VudFwiPnt7dm0ubGFiZWx9fTwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XHJcbiAgICAgICAgPHNmYy1zbGlkZXItcGFnaW5hdGlvbiAqbmdJZj1cInBhZ2luYXRpb25cIiBbY291bnRdPVwidm0uY291bnRcIiBbaW5kZXhdPVwidm0uaW5kZXhcIiAoc2VsZWN0ZWQpPVwic2VsZWN0KCRldmVudClcIj5cclxuICAgICAgICA8L3NmYy1zbGlkZXItcGFnaW5hdGlvbj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImlzQXV0b21hdGljICYmIHNob3dBdXRvbWF0aWNUb2dnbGVcIiBjbGFzcz1cImF1dG9tYXRpY1wiIChjbGljayk9XCJ0b2dnbGVBdXRvbWF0aWMoKVwiPlxyXG4gICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJhdXRvbWF0aWNJY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
@@ -997,7 +997,7 @@ class SliderItemComponent {
997
997
  ;
998
998
  }
999
999
  SliderItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1000
- SliderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderItemComponent, selector: "sfc-slider-item", inputs: { model: "model" }, host: { properties: { "style.height.px": "this._height" } }, viewQueries: [{ propertyName: "imageEl", first: true, predicate: ["image"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"title\">\r\n <h2>{{model.title}}</h2>\r\n <span>{{model.subTitle}}</span>\r\n </div>\r\n <div class=\"image\">\r\n <img #image [src]=\"model.imageSrc\" sfcImageLoad>\r\n </div> \r\n</div>", styles: [":host{display:inline-block}:host .container{position:absolute;left:0;top:0;width:100%}:host .container .title{position:absolute;top:10%;left:6%;-webkit-user-select:none;user-select:none;font-size:1.5em;z-index:2}:host .container .title h2{margin:0;text-transform:uppercase}:host .container .image{position:relative;z-index:1}:host .container .image img{max-width:100%;height:auto}\n"], dependencies: [{ kind: "directive", type: i1$1.ImageLoadDirective, selector: "[sfcImageLoad]" }] });
1000
+ SliderItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderItemComponent, selector: "sfc-slider-item", inputs: { model: "model" }, host: { properties: { "style.height.px": "this._height" } }, viewQueries: [{ propertyName: "imageEl", first: true, predicate: ["image"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"title\">\r\n <h2>{{model.title}}</h2>\r\n <span>{{model.subTitle}}</span>\r\n </div>\r\n <div class=\"image\">\r\n <img #image [src]=\"model.imageSrc\" sfcImageLoad>\r\n </div> \r\n</div>", styles: [":host{display:inline-block}:host .container{position:absolute;left:0;top:0;width:100%}:host .container .title{position:absolute;top:10%;left:6%;-webkit-user-select:none;user-select:none;font-size:1.5em;z-index:2}:host .container .title h2{margin:0;text-transform:uppercase}:host .container .image{position:relative;z-index:1}:host .container .image img{max-width:100%;height:auto}\n"], dependencies: [{ kind: "directive", type: i1$1.ImageLoadDirective, selector: "[sfcImageLoad]", outputs: ["sfcImageLoad"] }] });
1001
1001
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderItemComponent, decorators: [{
1002
1002
  type: Component,
1003
1003
  args: [{ selector: 'sfc-slider-item', template: "<div class=\"container\">\r\n <div class=\"title\">\r\n <h2>{{model.title}}</h2>\r\n <span>{{model.subTitle}}</span>\r\n </div>\r\n <div class=\"image\">\r\n <img #image [src]=\"model.imageSrc\" sfcImageLoad>\r\n </div> \r\n</div>", styles: [":host{display:inline-block}:host .container{position:absolute;left:0;top:0;width:100%}:host .container .title{position:absolute;top:10%;left:6%;-webkit-user-select:none;user-select:none;font-size:1.5em;z-index:2}:host .container .title h2{margin:0;text-transform:uppercase}:host .container .image{position:relative;z-index:1}:host .container .image img{max-width:100%;height:auto}\n"] }]
@@ -1107,10 +1107,10 @@ class SliderButtonComponent {
1107
1107
  }
1108
1108
  }
1109
1109
  SliderButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1110
- SliderButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderButtonComponent, selector: "sfc-slider-button", inputs: { type: "type", active: "active" }, host: { properties: { "class": "this.type", "class.active": "this.active" } }, ngImport: i0, template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0;border-radius:.43em 0 0 .43em}:host.previous{left:0;border-radius:0 .43em .43em 0}:host.active.next{right:0}:host.active.previous{left:0}\n"], dependencies: [{ kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
1110
+ SliderButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderButtonComponent, selector: "sfc-slider-button", inputs: { type: "type", active: "active" }, host: { properties: { "class": "this.type", "class.active": "this.active" } }, ngImport: i0, template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999;border-radius:.43em}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0}:host.previous{left:0}:host.active.next{right:0}:host.active.previous{left:0}\n"], dependencies: [{ kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
1111
1111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderButtonComponent, decorators: [{
1112
1112
  type: Component,
1113
- args: [{ selector: 'sfc-slider-button', template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0;border-radius:.43em 0 0 .43em}:host.previous{left:0;border-radius:0 .43em .43em 0}:host.active.next{right:0}:host.active.previous{left:0}\n"] }]
1113
+ args: [{ selector: 'sfc-slider-button', template: "<div>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{position:absolute;width:3em;top:45%;line-height:3.7em;text-align:center;cursor:pointer;background:rgba(0,0,0,.1019607843);transition:all .1s ease;z-index:9999;border-radius:.43em}:host:hover{background:rgba(0,0,0,.3019607843)}:host.next{right:0}:host.previous{left:0}:host.active.next{right:0}:host.active.previous{left:0}\n"] }]
1114
1114
  }], propDecorators: { type: [{
1115
1115
  type: Input
1116
1116
  }, {
@@ -1156,6 +1156,7 @@ class SliderComponent {
1156
1156
  this.resizeService = resizeService;
1157
1157
  this.imageLoadService = imageLoadService;
1158
1158
  this.changeDetector = changeDetector;
1159
+ this.SIZE_FACTOR = 0.00225;
1159
1160
  this.PAUSE_ICON = faPauseCircle;
1160
1161
  this.PLAY_ICON = faPlayCircle;
1161
1162
  this.SliderButtonType = SliderButtonType;
@@ -1202,11 +1203,12 @@ class SliderComponent {
1202
1203
  }));
1203
1204
  if (this.isAutomatic)
1204
1205
  this.automaticService.start();
1205
- this.imageLoadService.load$.subscribe(sizeEvent => {
1206
- this._sizeFactor = this.getSizeFactor(sizeEvent.height);
1207
- this._maxWidth = sizeEvent.width;
1206
+ this.imageLoadService.load$.subscribe((sizeEvent) => {
1207
+ this._sizeFactor = this.getSizeFactor(sizeEvent.offset.height);
1208
+ this._maxWidth = sizeEvent.natural.width;
1208
1209
  });
1209
1210
  this.resizeService.onResize$.subscribe(() => this._sizeFactor = this.getSizeFactor(this.itemsEl.nativeElement.offsetHeight));
1211
+ this.changeDetector.detectChanges();
1210
1212
  }
1211
1213
  ngAfterViewChecked() {
1212
1214
  this.changeDetector.detectChanges();
@@ -1221,11 +1223,11 @@ class SliderComponent {
1221
1223
  this.automaticService.toggle();
1222
1224
  }
1223
1225
  getSizeFactor(value) {
1224
- return value * 0.00225;
1226
+ return value * this.SIZE_FACTOR;
1225
1227
  }
1226
1228
  }
1227
1229
  SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderComponent, deps: [{ token: SliderService }, { token: SliderAutomaticService }, { token: i1$1.ResizeService }, { token: i1$1.ImageLoadService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1228
- SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderComponent, selector: "sfc-slider", inputs: { items: "items", type: "type", showCount: "showCount", pagination: "pagination", handlers: "handlers", showAutomaticToggle: "showAutomaticToggle" }, host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()" }, properties: { "style.fontSize.em": "this._sizeFactor", "style.max-width.px": "this._maxWidth" } }, providers: [SliderService, SliderAutomaticService], viewQueries: [{ propertyName: "itemsEl", first: true, predicate: ["itemsContainer"], descendants: true }, { propertyName: "sliderItems", predicate: SliderItemComponent, descendants: true }], ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div #itemsContainer class=\"items\">\r\n <sfc-slider-item *ngFor=\"let item of items; let itemIndex = index;\" [model]=\"item\"\r\n [sfcShowHideElement]=\"itemIndex === vm.index\"></sfc-slider-item>\r\n </div>\r\n\r\n <div *ngIf=\"handlers\" class=\"buttons\">\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Next\" (click)=\"move(SliderMoveType.Next)\">\r\n </sfc-slider-button>\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Previous\" (click)=\"move(SliderMoveType.Previous)\">\r\n </sfc-slider-button>\r\n </div>\r\n\r\n <div class=\"counter\" *ngIf=\"showCount\">{{vm.label}}</div>\r\n\r\n <div class=\"actions\">\r\n <sfc-slider-pagination *ngIf=\"pagination\" [count]=\"vm.count\" [index]=\"vm.index\" (selected)=\"select($event)\">\r\n </sfc-slider-pagination>\r\n\r\n <div *ngIf=\"isAutomatic && showAutomaticToggle\" class=\"automatic\" (click)=\"toggleAutomatic()\">\r\n <fa-icon [icon]=\"automaticIcon\"></fa-icon>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:inline-block;width:100%}:host .container{position:relative;color:#fff}:host .container .counter{top:10%;right:6%;position:absolute;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .actions{cursor:pointer;display:flex;flex-direction:column;justify-content:center;position:absolute;top:85%;align-items:center;width:100%}:host .container .actions .automatic{margin-top:.3em}:host .container .buttons,:host .container .counter,:host .container .actions{z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i1$1.ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: SliderItemComponent, selector: "sfc-slider-item", inputs: ["model"] }, { kind: "component", type: SliderButtonComponent, selector: "sfc-slider-button", inputs: ["type", "active"] }, { kind: "component", type: SliderPaginationComponent, selector: "sfc-slider-pagination", inputs: ["count", "index"], outputs: ["selected"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
1230
+ SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SliderComponent, selector: "sfc-slider", inputs: { items: "items", type: "type", showCount: "showCount", pagination: "pagination", handlers: "handlers", showAutomaticToggle: "showAutomaticToggle" }, host: { listeners: { "mouseenter": "onEnter()", "mouseleave": "onLeave()" }, properties: { "style.font-size.em": "this._sizeFactor", "style.max-width.px": "this._maxWidth" } }, providers: [SliderService, SliderAutomaticService], viewQueries: [{ propertyName: "itemsEl", first: true, predicate: ["itemsContainer"], descendants: true }, { propertyName: "sliderItems", predicate: SliderItemComponent, descendants: true }], ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div #itemsContainer class=\"items\">\r\n <sfc-slider-item *ngFor=\"let item of items; let itemIndex = index;\" [model]=\"item\"\r\n [sfcShowHideElement]=\"itemIndex === vm.index\"></sfc-slider-item>\r\n </div>\r\n\r\n <div *ngIf=\"handlers\" class=\"buttons\">\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Next\" (click)=\"move(SliderMoveType.Next)\">\r\n </sfc-slider-button>\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Previous\" (click)=\"move(SliderMoveType.Previous)\">\r\n </sfc-slider-button>\r\n </div>\r\n\r\n <div class=\"counter\" *ngIf=\"showCount\">{{vm.label}}</div>\r\n\r\n <div class=\"actions\">\r\n <sfc-slider-pagination *ngIf=\"pagination\" [count]=\"vm.count\" [index]=\"vm.index\" (selected)=\"select($event)\">\r\n </sfc-slider-pagination>\r\n\r\n <div *ngIf=\"isAutomatic && showAutomaticToggle\" class=\"automatic\" (click)=\"toggleAutomatic()\">\r\n <fa-icon [icon]=\"automaticIcon\"></fa-icon>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:inline-block;width:100%}:host .container{position:relative;color:#fff}:host .container .counter{top:10%;right:6%;position:absolute;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .actions{cursor:pointer;display:flex;flex-direction:column;justify-content:center;position:absolute;top:85%;align-items:center;width:100%}:host .container .actions .automatic{margin-top:.3em}:host .container .buttons,:host .container .counter,:host .container .actions{z-index:2}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: i1$1.ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: SliderItemComponent, selector: "sfc-slider-item", inputs: ["model"] }, { kind: "component", type: SliderButtonComponent, selector: "sfc-slider-button", inputs: ["type", "active"] }, { kind: "component", type: SliderPaginationComponent, selector: "sfc-slider-pagination", inputs: ["count", "index"], outputs: ["selected"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
1229
1231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SliderComponent, decorators: [{
1230
1232
  type: Component,
1231
1233
  args: [{ selector: 'sfc-slider', providers: [SliderService, SliderAutomaticService], template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div #itemsContainer class=\"items\">\r\n <sfc-slider-item *ngFor=\"let item of items; let itemIndex = index;\" [model]=\"item\"\r\n [sfcShowHideElement]=\"itemIndex === vm.index\"></sfc-slider-item>\r\n </div>\r\n\r\n <div *ngIf=\"handlers\" class=\"buttons\">\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Next\" (click)=\"move(SliderMoveType.Next)\">\r\n </sfc-slider-button>\r\n <sfc-slider-button [active]=\"active\" [type]=\"SliderButtonType.Previous\" (click)=\"move(SliderMoveType.Previous)\">\r\n </sfc-slider-button>\r\n </div>\r\n\r\n <div class=\"counter\" *ngIf=\"showCount\">{{vm.label}}</div>\r\n\r\n <div class=\"actions\">\r\n <sfc-slider-pagination *ngIf=\"pagination\" [count]=\"vm.count\" [index]=\"vm.index\" (selected)=\"select($event)\">\r\n </sfc-slider-pagination>\r\n\r\n <div *ngIf=\"isAutomatic && showAutomaticToggle\" class=\"automatic\" (click)=\"toggleAutomatic()\">\r\n <fa-icon [icon]=\"automaticIcon\"></fa-icon>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:inline-block;width:100%}:host .container{position:relative;color:#fff}:host .container .counter{top:10%;right:6%;position:absolute;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .actions{cursor:pointer;display:flex;flex-direction:column;justify-content:center;position:absolute;top:85%;align-items:center;width:100%}:host .container .actions .automatic{margin-top:.3em}:host .container .buttons,:host .container .counter,:host .container .actions{z-index:2}\n"] }]
@@ -1255,7 +1257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1255
1257
  args: ['itemsContainer']
1256
1258
  }], _sizeFactor: [{
1257
1259
  type: HostBinding,
1258
- args: ['style.fontSize.em']
1260
+ args: ['style.font-size.em']
1259
1261
  }], _maxWidth: [{
1260
1262
  type: HostBinding,
1261
1263
  args: ['style.max-width.px']
@@ -4033,3 +4035,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4033
4035
 
4034
4036
  export { AvatarBadgeComponent, AvatarBadgePosition, AvatarComponent, CarouselComponent, CarouselSlideDirective, ChartComponent, ChartThemeService, ColumnsToggleComponent, DefaultTableCardComponent, DefaultTableColumnComponent, DefaultTableRowComponent, DropdownMenuComponent, ExpandedTableRowComponent, ExpandedTableRowTemplate, NavigationMenuComponent, NgxSfcComponentsModule, NotificationComponent, NotificationTemplate, NotificationType, ProgressCircleComponent, ProgressLineComponent, ProgressSemiCircleComponent, SelectableTableColumnComponent, SideMenuComponent, SideMenuItemType, SliderComponent, SliderType, StarsComponent, TabLabelIconComponent, TabLabelIconSliderComponent, TabLabelLineComponent, TabLabelLineSliderComponent, TableComponent, TableDataType, TableTemplate, TabsComponent, TabsTemplate, TagsComponent, TimelineComponent, TimelineItemPosition };
4035
4037
  //# sourceMappingURL=ngx-sfc-components.mjs.map
4038
+ //# sourceMappingURL=ngx-sfc-components.mjs.map