rm-image-slider 0.0.0-watch

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.
@@ -0,0 +1,69 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const DESC = 'DESC', ASC = 'ASC';
4
+ export class RmImageSliderService {
5
+ constructor() { }
6
+ isBase64(str) {
7
+ var base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
8
+ return base64regex.test(str);
9
+ }
10
+ base64FileExtension(str) {
11
+ return str.substring('data:image/'.length, str.indexOf(';base64'));
12
+ }
13
+ // orderArray(arr = [], orderType = ASC) {
14
+ // if (arr?.length && orderType) {
15
+ // return arr.sort((ob1: any, ob2: any) => {
16
+ // if (ob1['order'] === null || !ob1['order']) {
17
+ // return 1;
18
+ // } else if (ob2['order'] === null || !ob2['order']) {
19
+ // return -1;
20
+ // } else if (ob1['order'] > ob2['order']) {
21
+ // if (orderType === DESC) {
22
+ // return -1;
23
+ // } else {
24
+ // return 1;
25
+ // }
26
+ // } else if (ob1['order'] < ob2['order']) {
27
+ // if (orderType === DESC) {
28
+ // return 1;
29
+ // } else {
30
+ // return -1;
31
+ // }
32
+ // }
33
+ // });
34
+ // }
35
+ // return arr;
36
+ // }
37
+ orderArray(arr = [], orderType = ASC) {
38
+ if (arr?.length && orderType) {
39
+ return arr.sort((ob1, ob2) => {
40
+ // Handle potential undefined 'order' properties
41
+ const order1 = ob1['order'];
42
+ const order2 = ob2['order'];
43
+ // Ensure consistent sorting for undefined/null 'order' values
44
+ if (order1 === null || order1 === undefined) {
45
+ return 1; // Place elements with undefined or null 'order' at the end
46
+ }
47
+ else if (order2 === null || order2 === undefined) {
48
+ return -1; // Place elements with undefined or null 'order' at the beginning
49
+ }
50
+ else {
51
+ // Apply ascending or descending order based on 'orderType'
52
+ return orderType === DESC
53
+ ? order2 - order1 // Reverse for descending order
54
+ : order1 - order2; // Maintain for ascending order
55
+ }
56
+ });
57
+ }
58
+ return arr; // Return the original array if conditions are not met
59
+ }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RmImageSliderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
61
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RmImageSliderService, providedIn: 'root' }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: RmImageSliderService, decorators: [{
64
+ type: Injectable,
65
+ args: [{
66
+ providedIn: 'root',
67
+ }]
68
+ }], ctorParameters: () => [] });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm0taW1hZ2Utc2xpZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ybS1pbWFnZS1zbGlkZXIvc3JjL2xpYi9ybS1pbWFnZS1zbGlkZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyxNQUFNLElBQUksR0FBRyxNQUFNLEVBQ2pCLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFLZCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLGdCQUFlLENBQUM7SUFFaEIsUUFBUSxDQUFDLEdBQVc7UUFDbEIsSUFBSSxXQUFXLEdBQ2Isa0VBQWtFLENBQUM7UUFDckUsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFXO1FBQzdCLE9BQU8sR0FBRyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsMENBQTBDO0lBQzFDLG9DQUFvQztJQUNwQyxnREFBZ0Q7SUFDaEQsc0RBQXNEO0lBQ3RELG9CQUFvQjtJQUNwQiw2REFBNkQ7SUFDN0QscUJBQXFCO0lBQ3JCLGtEQUFrRDtJQUNsRCxvQ0FBb0M7SUFDcEMsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixzQkFBc0I7SUFDdEIsWUFBWTtJQUNaLGtEQUFrRDtJQUNsRCxvQ0FBb0M7SUFDcEMsc0JBQXNCO0lBQ3RCLG1CQUFtQjtJQUNuQix1QkFBdUI7SUFDdkIsWUFBWTtJQUNaLFVBQVU7SUFDVixVQUFVO0lBQ1YsTUFBTTtJQUNOLGdCQUFnQjtJQUNoQixJQUFJO0lBRUosVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsU0FBUyxHQUFHLEdBQUc7UUFDbEMsSUFBSSxHQUFHLEVBQUUsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxHQUFRLEVBQUUsRUFBRTtnQkFDckMsZ0RBQWdEO2dCQUNoRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFNUIsOERBQThEO2dCQUM5RCxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUM1QyxPQUFPLENBQUMsQ0FBQyxDQUFDLDJEQUEyRDtnQkFDdkUsQ0FBQztxQkFBTSxJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNuRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsaUVBQWlFO2dCQUM5RSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sMkRBQTJEO29CQUMzRCxPQUFPLFNBQVMsS0FBSyxJQUFJO3dCQUN2QixDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQywrQkFBK0I7d0JBQ2pELENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsK0JBQStCO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsQ0FBQyxzREFBc0Q7SUFDcEUsQ0FBQzs4R0E1RFUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmNvbnN0IERFU0MgPSAnREVTQycsXHJcbiAgQVNDID0gJ0FTQyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUm1JbWFnZVNsaWRlclNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgaXNCYXNlNjQoc3RyOiBzdHJpbmcpIHtcclxuICAgIHZhciBiYXNlNjRyZWdleCA9XHJcbiAgICAgIC9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLztcclxuICAgIHJldHVybiBiYXNlNjRyZWdleC50ZXN0KHN0cik7XHJcbiAgfVxyXG5cclxuICBiYXNlNjRGaWxlRXh0ZW5zaW9uKHN0cjogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gc3RyLnN1YnN0cmluZygnZGF0YTppbWFnZS8nLmxlbmd0aCwgc3RyLmluZGV4T2YoJztiYXNlNjQnKSk7XHJcbiAgfVxyXG5cclxuICAvLyBvcmRlckFycmF5KGFyciA9IFtdLCBvcmRlclR5cGUgPSBBU0MpIHtcclxuICAvLyAgIGlmIChhcnI/Lmxlbmd0aCAmJiBvcmRlclR5cGUpIHtcclxuICAvLyAgICAgcmV0dXJuIGFyci5zb3J0KChvYjE6IGFueSwgb2IyOiBhbnkpID0+IHtcclxuICAvLyAgICAgICBpZiAob2IxWydvcmRlciddID09PSBudWxsIHx8ICFvYjFbJ29yZGVyJ10pIHtcclxuICAvLyAgICAgICAgIHJldHVybiAxO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAob2IyWydvcmRlciddID09PSBudWxsIHx8ICFvYjJbJ29yZGVyJ10pIHtcclxuICAvLyAgICAgICAgIHJldHVybiAtMTtcclxuICAvLyAgICAgICB9IGVsc2UgaWYgKG9iMVsnb3JkZXInXSA+IG9iMlsnb3JkZXInXSkge1xyXG4gIC8vICAgICAgICAgaWYgKG9yZGVyVHlwZSA9PT0gREVTQykge1xyXG4gIC8vICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgLy8gICAgICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgICAgICByZXR1cm4gMTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9IGVsc2UgaWYgKG9iMVsnb3JkZXInXSA8IG9iMlsnb3JkZXInXSkge1xyXG4gIC8vICAgICAgICAgaWYgKG9yZGVyVHlwZSA9PT0gREVTQykge1xyXG4gIC8vICAgICAgICAgICByZXR1cm4gMTtcclxuICAvLyAgICAgICAgIH0gZWxzZSB7XHJcbiAgLy8gICAgICAgICAgIHJldHVybiAtMTtcclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIGFycjtcclxuICAvLyB9XHJcblxyXG4gIG9yZGVyQXJyYXkoYXJyID0gW10sIG9yZGVyVHlwZSA9IEFTQykge1xyXG4gICAgaWYgKGFycj8ubGVuZ3RoICYmIG9yZGVyVHlwZSkge1xyXG4gICAgICByZXR1cm4gYXJyLnNvcnQoKG9iMTogYW55LCBvYjI6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vIEhhbmRsZSBwb3RlbnRpYWwgdW5kZWZpbmVkICdvcmRlcicgcHJvcGVydGllc1xyXG4gICAgICAgIGNvbnN0IG9yZGVyMSA9IG9iMVsnb3JkZXInXTtcclxuICAgICAgICBjb25zdCBvcmRlcjIgPSBvYjJbJ29yZGVyJ107XHJcblxyXG4gICAgICAgIC8vIEVuc3VyZSBjb25zaXN0ZW50IHNvcnRpbmcgZm9yIHVuZGVmaW5lZC9udWxsICdvcmRlcicgdmFsdWVzXHJcbiAgICAgICAgaWYgKG9yZGVyMSA9PT0gbnVsbCB8fCBvcmRlcjEgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcmV0dXJuIDE7IC8vIFBsYWNlIGVsZW1lbnRzIHdpdGggdW5kZWZpbmVkIG9yIG51bGwgJ29yZGVyJyBhdCB0aGUgZW5kXHJcbiAgICAgICAgfSBlbHNlIGlmIChvcmRlcjIgPT09IG51bGwgfHwgb3JkZXIyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHJldHVybiAtMTsgLy8gUGxhY2UgZWxlbWVudHMgd2l0aCB1bmRlZmluZWQgb3IgbnVsbCAnb3JkZXInIGF0IHRoZSBiZWdpbm5pbmdcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gQXBwbHkgYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIgYmFzZWQgb24gJ29yZGVyVHlwZSdcclxuICAgICAgICAgIHJldHVybiBvcmRlclR5cGUgPT09IERFU0NcclxuICAgICAgICAgICAgPyBvcmRlcjIgLSBvcmRlcjEgLy8gUmV2ZXJzZSBmb3IgZGVzY2VuZGluZyBvcmRlclxyXG4gICAgICAgICAgICA6IG9yZGVyMSAtIG9yZGVyMjsgLy8gTWFpbnRhaW4gZm9yIGFzY2VuZGluZyBvcmRlclxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFycjsgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBhcnJheSBpZiBjb25kaXRpb25zIGFyZSBub3QgbWV0XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,125 @@
1
+ import { Component, Input, Inject, } from '@angular/core';
2
+ import { CommonModule, DOCUMENT } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./../rm-image-slider.service";
5
+ import * as i2 from "@angular/platform-browser";
6
+ import * as i3 from "@angular/common";
7
+ const youtubeRegExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/, validFileExtensions = ['jpeg', 'jpg', 'gif', 'png'], validVideoExtensions = ['mp4'];
8
+ export class SliderCustomImageComponent {
9
+ constructor(imageSliderService, sanitizer, document) {
10
+ this.imageSliderService = imageSliderService;
11
+ this.sanitizer = sanitizer;
12
+ this.YOUTUBE = 'youtube';
13
+ this.IMAGE = 'image';
14
+ this.VIDEO = 'video';
15
+ this.fileUrl = '';
16
+ this.fileExtension = '';
17
+ this.type = this.IMAGE;
18
+ this.imageLoading = true;
19
+ // @inputs
20
+ this.showVideo = false;
21
+ this.videoAutoPlay = false;
22
+ this.showVideoControls = 1;
23
+ this.speed = 1;
24
+ this.isVideo = false;
25
+ this.alt = '';
26
+ this.title = '';
27
+ this.direction = 'ltr';
28
+ this.ratio = false;
29
+ this.lazy = false;
30
+ }
31
+ ngOnChanges(changes) {
32
+ if (this['imageUrl'] &&
33
+ typeof this['imageUrl'] === 'string' &&
34
+ ((changes['imageUrl'] && changes['imageUrl'].firstChange) ||
35
+ this.videoAutoPlay)) {
36
+ this.setUrl();
37
+ }
38
+ }
39
+ setUrl() {
40
+ const url = this.imageUrl;
41
+ this.imageLoading = true;
42
+ this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);
43
+ this.fileExtension = url.split('.').pop().split(/\#|\?/)[0];
44
+ if (this.imageSliderService.base64FileExtension(url) &&
45
+ (validFileExtensions.indexOf(this.imageSliderService.base64FileExtension(url).toLowerCase()) > -1 ||
46
+ validVideoExtensions.indexOf(this.imageSliderService.base64FileExtension(url).toLowerCase()) > -1)) {
47
+ this.fileExtension = this.imageSliderService.base64FileExtension(url);
48
+ }
49
+ // verify for youtube url
50
+ const match = url.match(youtubeRegExp);
51
+ if (match && match[2].length === 11) {
52
+ if (this.showVideo) {
53
+ this.type = this.YOUTUBE;
54
+ this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${'https://www.youtube.com/embed/'}${match[2]}${this.videoAutoPlay
55
+ ? '?autoplay=1&enablejsapi=1'
56
+ : '?autoplay=0&enablejsapi=1'}${'&controls='}${this.showVideoControls}`);
57
+ }
58
+ else {
59
+ this.type = this.IMAGE;
60
+ this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`https://img.youtube.com/vi/${match[2]}/0.jpg`);
61
+ }
62
+ }
63
+ else if (this.fileExtension &&
64
+ validFileExtensions.indexOf(this.fileExtension.toLowerCase()) > -1) {
65
+ this.type = this.IMAGE;
66
+ }
67
+ else if (this.fileExtension &&
68
+ validVideoExtensions.indexOf(this.fileExtension.toLowerCase()) > -1) {
69
+ this.type = this.VIDEO;
70
+ if (this.videoAutoPlay &&
71
+ document.getElementById(`video_${this.imageIndex}`)) {
72
+ const videoObj = document.getElementById(`video_${this.imageIndex}`);
73
+ setTimeout(() => {
74
+ videoObj.play();
75
+ }, this.speed * 1000);
76
+ }
77
+ }
78
+ }
79
+ videoClickHandler(event) {
80
+ if (event && event.srcElement && !this.showVideoControls) {
81
+ if (event.srcElement.paused) {
82
+ event.srcElement.play();
83
+ }
84
+ else {
85
+ event.srcElement.pause();
86
+ }
87
+ }
88
+ }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SliderCustomImageComponent, deps: [{ token: i1.RmImageSliderService }, { token: i2.DomSanitizer }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: SliderCustomImageComponent, isStandalone: true, selector: "custom-img", inputs: { showVideo: "showVideo", videoAutoPlay: "videoAutoPlay", showVideoControls: "showVideoControls", currentImageIndex: "currentImageIndex", imageIndex: "imageIndex", speed: "speed", imageUrl: "imageUrl", isVideo: "isVideo", alt: "alt", title: "title", direction: "direction", ratio: "ratio", lazy: "lazy" }, usesOnChanges: true, ngImport: i0, template: "@if (fileUrl) {\r\n <div class=\"custom-image-main\" [ngClass]=\"{'ng-fullimage-loading': imageLoading}\">\r\n @if (type === IMAGE && fileUrl) {\r\n <img class=\"image\" (load)=\"imageLoading = false\" [ngClass]=\"{'ratio': ratio}\"\r\n [src]=\"fileUrl\" [alt]=\"alt\" [title]=\"title\" [attr.loading]=\"lazy == true ? 'lazy' : null\">\r\n }\r\n @if (type === YOUTUBE && fileUrl) {\r\n <iframe class=\"youtube\" [src]=\"fileUrl\"\r\n [attr.loading]=\"lazy == true ? 'lazy' : null\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen></iframe>\r\n }\r\n @if (type === VIDEO) {\r\n <video class=\"video\" [id]=\"'video_' + imageIndex\" [ngClass]=\"{'ratio': ratio}\" (click)=\"videoClickHandler($event)\"\r\n [autoplay]=\"videoAutoPlay\" type=\"video/mp4\"\r\n [attr.controls]=\"showVideoControls ? showVideoControls : null\" controlsList=\"nodownload\">\r\n <source [src]=\"fileUrl\" type=\"video/mp4\">\r\n Your browser does not support the video tag.\r\n </video>\r\n }\r\n @if (!fileUrl) {\r\n <div [dir]=\"direction\" class=\"invalid-msg\">Invalid file format</div>\r\n }\r\n @if (type === YOUTUBE || type === VIDEO || isVideo) {\r\n <span class=\"youtube-icon\"></span>\r\n }\r\n </div>\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: SliderCustomImageComponent, decorators: [{
93
+ type: Component,
94
+ args: [{ selector: 'custom-img', standalone: true, imports: [CommonModule], template: "@if (fileUrl) {\r\n <div class=\"custom-image-main\" [ngClass]=\"{'ng-fullimage-loading': imageLoading}\">\r\n @if (type === IMAGE && fileUrl) {\r\n <img class=\"image\" (load)=\"imageLoading = false\" [ngClass]=\"{'ratio': ratio}\"\r\n [src]=\"fileUrl\" [alt]=\"alt\" [title]=\"title\" [attr.loading]=\"lazy == true ? 'lazy' : null\">\r\n }\r\n @if (type === YOUTUBE && fileUrl) {\r\n <iframe class=\"youtube\" [src]=\"fileUrl\"\r\n [attr.loading]=\"lazy == true ? 'lazy' : null\" frameborder=\"0\" allow=\"autoplay\" allowfullscreen></iframe>\r\n }\r\n @if (type === VIDEO) {\r\n <video class=\"video\" [id]=\"'video_' + imageIndex\" [ngClass]=\"{'ratio': ratio}\" (click)=\"videoClickHandler($event)\"\r\n [autoplay]=\"videoAutoPlay\" type=\"video/mp4\"\r\n [attr.controls]=\"showVideoControls ? showVideoControls : null\" controlsList=\"nodownload\">\r\n <source [src]=\"fileUrl\" type=\"video/mp4\">\r\n Your browser does not support the video tag.\r\n </video>\r\n }\r\n @if (!fileUrl) {\r\n <div [dir]=\"direction\" class=\"invalid-msg\">Invalid file format</div>\r\n }\r\n @if (type === YOUTUBE || type === VIDEO || isVideo) {\r\n <span class=\"youtube-icon\"></span>\r\n }\r\n </div>\r\n}" }]
95
+ }], ctorParameters: () => [{ type: i1.RmImageSliderService }, { type: i2.DomSanitizer }, { type: Document, decorators: [{
96
+ type: Inject,
97
+ args: [DOCUMENT]
98
+ }] }], propDecorators: { showVideo: [{
99
+ type: Input
100
+ }], videoAutoPlay: [{
101
+ type: Input
102
+ }], showVideoControls: [{
103
+ type: Input
104
+ }], currentImageIndex: [{
105
+ type: Input
106
+ }], imageIndex: [{
107
+ type: Input
108
+ }], speed: [{
109
+ type: Input
110
+ }], imageUrl: [{
111
+ type: Input
112
+ }], isVideo: [{
113
+ type: Input
114
+ }], alt: [{
115
+ type: Input
116
+ }], title: [{
117
+ type: Input
118
+ }], direction: [{
119
+ type: Input
120
+ }], ratio: [{
121
+ type: Input
122
+ }], lazy: [{
123
+ type: Input
124
+ }] } });
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWN1c3RvbS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ybS1pbWFnZS1zbGlkZXIvc3JjL2xpYi9zbGlkZXItY3VzdG9tLWltYWdlL3NsaWRlci1jdXN0b20taW1hZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcm0taW1hZ2Utc2xpZGVyL3NyYy9saWIvc2xpZGVyLWN1c3RvbS1pbWFnZS9zbGlkZXItY3VzdG9tLWltYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUl6RCxNQUFNLGFBQWEsR0FDZixzRUFBc0UsRUFDeEUsbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFDbkQsb0JBQW9CLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQVNqQyxNQUFNLE9BQU8sMEJBQTBCO0lBd0JyQyxZQUNTLGtCQUF3QyxFQUN2QyxTQUF1QixFQUNiLFFBQWtCO1FBRjdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFDdkMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQXpCakMsWUFBTyxHQUFHLFNBQVMsQ0FBQztRQUNwQixVQUFLLEdBQUcsT0FBTyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsWUFBTyxHQUFvQixFQUFFLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsU0FBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDbEIsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFN0IsVUFBVTtRQUNELGNBQVMs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SCxDQUFDO0lBQ0gsQ0FBQzs4R0EzR1UsMEJBQTBCLGtGQTJCM0IsUUFBUTtrR0EzQlAsMEJBQTBCLHFaQ3ZCdkMscXhDQXlCQyx5REROVyxZQUFZOzsyRkFJWCwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UsWUFBWSxjQUNWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs7MEJBK0JwQixNQUFNOzJCQUFDLFFBQVE7eUNBakJULFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgSW5qZWN0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgUm1JbWFnZVNsaWRlclNlcnZpY2UgfSBmcm9tICcuLy4uL3JtLWltYWdlLXNsaWRlci5zZXJ2aWNlJztcclxuXHJcbmNvbnN0IHlvdXR1YmVSZWdFeHAgPVxyXG4gICAgL14uKih5b3V0dS5iZVxcL3x2XFwvfHVcXC9cXHdcXC98ZW1iZWRcXC98d2F0Y2hcXD92PXxcXCZ2PXxcXD92PSkoW14jXFwmXFw/XSopLiovLFxyXG4gIHZhbGlkRmlsZUV4dGVuc2lvbnMgPSBbJ2pwZWcnLCAnanBnJywgJ2dpZicsICdwbmcnXSxcclxuICB2YWxpZFZpZGVvRXh0ZW5zaW9ucyA9IFsnbXA0J107XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2N1c3RvbS1pbWcnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci1jdXN0b20taW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9zbGlkZXItY3VzdG9tLWltYWdlLmNvbXBvbmVudC5jc3MnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2xpZGVyQ3VzdG9tSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gIFlPVVRVQkUgPSAneW91dHViZSc7XHJcbiAgSU1BR0UgPSAnaW1hZ2UnO1xyXG4gIFZJREVPID0gJ3ZpZGVvJztcclxuICBmaWxlVXJsOiBTYWZlUmVzb3VyY2VVcmwgPSAnJztcclxuICBmaWxlRXh0ZW5zaW9uID0gJyc7XHJcbiAgdHlwZSA9IHRoaXMuSU1BR0U7XHJcbiAgaW1hZ2VMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLy8gQGlucHV0c1xyXG4gIEBJbnB1dCgpIHNob3dWaWRlbzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHZpZGVvQXV0b1BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93VmlkZW9Db250cm9sczogbnVtYmVyID0gMTtcclxuICBASW5wdXQoKSBjdXJyZW50SW1hZ2VJbmRleCE6IG51bWJlcjtcclxuICBASW5wdXQoKSBpbWFnZUluZGV4ITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNwZWVkOiBudW1iZXIgPSAxO1xyXG4gIEBJbnB1dCgpIGltYWdlVXJsOiBhbnk7XHJcbiAgQElucHV0KCkgaXNWaWRlbyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGFsdDogU3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdGl0bGU6IFN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIGRpcmVjdGlvbjogc3RyaW5nID0gJ2x0cic7XHJcbiAgQElucHV0KCkgcmF0aW86IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBsYXp5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGltYWdlU2xpZGVyU2VydmljZTogUm1JbWFnZVNsaWRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgQEluamVjdChET0NVTUVOVCkgZG9jdW1lbnQ6IERvY3VtZW50XHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXNbJ2ltYWdlVXJsJ10gJiZcclxuICAgICAgdHlwZW9mIHRoaXNbJ2ltYWdlVXJsJ10gPT09ICdzdHJpbmcnICYmXHJcbiAgICAgICgoY2hhbmdlc1snaW1hZ2VVcmwnXSAmJiBjaGFuZ2VzWydpbWFnZVVybCddLmZpcnN0Q2hhbmdlKSB8fFxyXG4gICAgICAgIHRoaXMudmlkZW9BdXRvUGxheSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNldFVybCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VXJsKCkge1xyXG4gICAgY29uc3QgdXJsID0gdGhpcy5pbWFnZVVybDtcclxuICAgIHRoaXMuaW1hZ2VMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xyXG4gICAgdGhpcy5maWxlRXh0ZW5zaW9uID0gdXJsLnNwbGl0KCcuJykucG9wKCkuc3BsaXQoL1xcI3xcXD8vKVswXTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5pbWFnZVNsaWRlclNlcnZpY2UuYmFzZTY0RmlsZUV4dGVuc2lvbih1cmwpICYmXHJcbiAgICAgICh2YWxpZEZpbGVFeHRlbnNpb25zLmluZGV4T2YoXHJcbiAgICAgICAgdGhpcy5pbWFnZVNsaWRlclNlcnZpY2UuYmFzZTY0RmlsZUV4dGVuc2lvbih1cmwpLnRvTG93ZXJDYXNlKClcclxuICAgICAgKSA+IC0xIHx8XHJcbiAgICAgICAgdmFsaWRWaWRlb0V4dGVuc2lvbnMuaW5kZXhPZihcclxuICAgICAgICAgIHRoaXMuaW1hZ2VTbGlkZXJTZXJ2aWNlLmJhc2U2NEZpbGVFeHRlbnNpb24odXJsKS50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgKSA+IC0xKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmlsZUV4dGVuc2lvbiA9IHRoaXMuaW1hZ2VTbGlkZXJTZXJ2aWNlLmJhc2U2NEZpbGVFeHRlbnNpb24odXJsKTtcclxuICAgIH1cclxuICAgIC8vIHZlcmlmeSBmb3IgeW91dHViZSB1cmxcclxuICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKHlvdXR1YmVSZWdFeHApO1xyXG4gICAgaWYgKG1hdGNoICYmIG1hdGNoWzJdLmxlbmd0aCA9PT0gMTEpIHtcclxuICAgICAgaWYgKHRoaXMuc2hvd1ZpZGVvKSB7XHJcbiAgICAgICAgdGhpcy50eXBlID0gdGhpcy5ZT1VUVUJFO1xyXG4gICAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcclxuICAgICAgICAgIGAkeydodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8nfSR7bWF0Y2hbMl19JHtcclxuICAgICAgICAgICAgdGhpcy52aWRlb0F1dG9QbGF5XHJcbiAgICAgICAgICAgICAgPyAnP2F1dG9wbGF5PTEmZW5hYmxlanNhcGk9MSdcclxuICAgICAgICAgICAgICA6ICc/YXV0b3BsYXk9MCZlbmFibGVqc2FwaT0xJ1xyXG4gICAgICAgICAgfSR7JyZjb250cm9scz0nfSR7dGhpcy5zaG93VmlkZW9Db250cm9sc31gXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSB0aGlzLklNQUdFO1xyXG4gICAgICAgIHRoaXMuZmlsZVVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChcclxuICAgICAgICAgIGBodHRwczovL2ltZy55b3V0dWJlLmNvbS92aS8ke21hdGNoWzJdfS8wLmpwZ2BcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmZpbGVFeHRlbnNpb24gJiZcclxuICAgICAgdmFsaWRGaWxlRXh0ZW5zaW9ucy5pbmRleE9mKHRoaXMuZmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSA+IC0xXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50eXBlID0gdGhpcy5JTUFHRTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuZmlsZUV4dGVuc2lvbiAmJlxyXG4gICAgICB2YWxpZFZpZGVvRXh0ZW5zaW9ucy5pbmRleE9mKHRoaXMuZmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSA+IC0xXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50eXBlID0gdGhpcy5WSURFTztcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMudmlkZW9BdXRvUGxheSAmJlxyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGB2aWRlb18ke3RoaXMuaW1hZ2VJbmRleH1gKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCB2aWRlb09iajogYW55ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXHJcbiAgICAgICAgICBgdmlkZW9fJHt0aGlzLmltYWdlSW5kZXh9YFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB2aWRlb09iai5wbGF5KCk7XHJcbiAgICAgICAgfSwgdGhpcy5zcGVlZCAqIDEwMDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2aWRlb0NsaWNrSGFuZGxlcihldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc3JjRWxlbWVudCAmJiAhdGhpcy5zaG93VmlkZW9Db250cm9scykge1xyXG4gICAgICBpZiAoZXZlbnQuc3JjRWxlbWVudC5wYXVzZWQpIHtcclxuICAgICAgICBldmVudC5zcmNFbGVtZW50LnBsYXkoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBldmVudC5zcmNFbGVtZW50LnBhdXNlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQGlmIChmaWxlVXJsKSB7XHJcbiAgPGRpdiBjbGFzcz1cImN1c3RvbS1pbWFnZS1tYWluXCIgW25nQ2xhc3NdPVwieyduZy1mdWxsaW1hZ2UtbG9hZGluZyc6IGltYWdlTG9hZGluZ31cIj5cclxuICAgIEBpZiAodHlwZSA9PT0gSU1BR0UgJiYgZmlsZVVybCkge1xyXG4gICAgICA8aW1nIGNsYXNzPVwiaW1hZ2VcIiAobG9hZCk9XCJpbWFnZUxvYWRpbmcgPSBmYWxzZVwiIFtuZ0NsYXNzXT1cInsncmF0aW8nOiByYXRpb31cIlxyXG4gICAgICAgIFtzcmNdPVwiZmlsZVVybFwiIFthbHRdPVwiYWx0XCIgW3RpdGxlXT1cInRpdGxlXCIgW2F0dHIubG9hZGluZ109XCJsYXp5ID09IHRydWUgPyAnbGF6eScgOiBudWxsXCI+XHJcbiAgICB9XHJcbiAgICBAaWYgKHR5cGUgPT09IFlPVVRVQkUgJiYgZmlsZVVybCkge1xyXG4gICAgICA8aWZyYW1lIGNsYXNzPVwieW91dHViZVwiIFtzcmNdPVwiZmlsZVVybFwiXHJcbiAgICAgIFthdHRyLmxvYWRpbmddPVwibGF6eSA9PSB0cnVlID8gJ2xhenknIDogbnVsbFwiIGZyYW1lYm9yZGVyPVwiMFwiIGFsbG93PVwiYXV0b3BsYXlcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XHJcbiAgICB9XHJcbiAgICBAaWYgKHR5cGUgPT09IFZJREVPKSB7XHJcbiAgICAgIDx2aWRlbyBjbGFzcz1cInZpZGVvXCIgW2lkXT1cIid2aWRlb18nICsgaW1hZ2VJbmRleFwiIFtuZ0NsYXNzXT1cInsncmF0aW8nOiByYXRpb31cIiAoY2xpY2spPVwidmlkZW9DbGlja0hhbmRsZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgW2F1dG9wbGF5XT1cInZpZGVvQXV0b1BsYXlcIiB0eXBlPVwidmlkZW8vbXA0XCJcclxuICAgICAgICBbYXR0ci5jb250cm9sc109XCJzaG93VmlkZW9Db250cm9scyA/IHNob3dWaWRlb0NvbnRyb2xzIDogbnVsbFwiIGNvbnRyb2xzTGlzdD1cIm5vZG93bmxvYWRcIj5cclxuICAgICAgICA8c291cmNlIFtzcmNdPVwiZmlsZVVybFwiIHR5cGU9XCJ2aWRlby9tcDRcIj5cclxuICAgICAgICBZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgdmlkZW8gdGFnLlxyXG4gICAgICA8L3ZpZGVvPlxyXG4gICAgfVxyXG4gICAgQGlmICghZmlsZVVybCkge1xyXG4gICAgICA8ZGl2IFtkaXJdPVwiZGlyZWN0aW9uXCIgY2xhc3M9XCJpbnZhbGlkLW1zZ1wiPkludmFsaWQgZmlsZSBmb3JtYXQ8L2Rpdj5cclxuICAgIH1cclxuICAgIEBpZiAodHlwZSA9PT0gWU9VVFVCRSB8fCB0eXBlID09PSBWSURFTyB8fCBpc1ZpZGVvKSB7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwieW91dHViZS1pY29uXCI+PC9zcGFuPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG59Il19