{"version":3,"file":"sedeh-flexible-showcase.mjs","sources":["../../../projects/flexible-showcase/src/lib/flexible-showcase.component.ts","../../../projects/flexible-showcase/src/lib/flexible-showcase.component.html","../../../projects/flexible-showcase/src/lib/flexible-showcase-module.ts","../../../projects/flexible-showcase/src/public-api.ts","../../../projects/flexible-showcase/src/sedeh-flexible-showcase.ts"],"sourcesContent":["\r\nimport {\r\n    Component,\r\n\tInput,\r\n\tOutput,\r\n\tAfterContentInit,\r\n\tElementRef,\r\n\tEventEmitter,\r\n\tViewChild,\r\n\tOnChanges\r\n} from '@angular/core';\r\n\r\n\r\n@Component({\r\n\tselector: 'showcase',\r\n\ttemplateUrl: './flexible-showcase.component.html',\r\n\tstyleUrls: ['./flexible-showcase.component.scss']\r\n})\r\nexport class FlexibleShowcaseComponent implements AfterContentInit, OnChanges  {\r\n\tprivate translatedPosition = 0;\r\n\tshiftedIndex = 0;\r\n\tselectedIndex = 0;\r\n\tselectedItem: any;\r\n\thoverItem: any;\r\n\tpaginate = false;\r\n\r\n\t@ViewChild(\"largeImage\", {static: false})\r\n\tprivate largeImage!: ElementRef;\r\n\r\n\t@ViewChild(\"slider\", {static: false})\r\n\tprivate slider!: ElementRef;\r\n\r\n    @Input() position!: string; // top, left, bottom, right\r\n\t@Input() width!: number;\r\n\t@Input() hasControls = true;\r\n\t@Input() hoverPlay = false;  \r\n\t@Input() height!: number;\r\n\t@Input() productId!: string;\r\n    @Input() zoomOnHover = false\r\n    @Input() peekOnHover = false\r\n    @Input() enableEventTracking = false\r\n\t@Input() magnificationFactor = 2;\r\n    @Input() thumbnails!: any[];\r\n    @Input() message = \"click to select \";\r\n\r\n\t@Output('onEventTracking')\r\n\tprivate onEventTracking = new EventEmitter();\r\n\r\n    constructor() {}\r\n\r\n\tngAfterContentInit() {\r\n\t\tif (this.thumbnails) {\r\n\t\t\tthis.selectedIndex = 0;\r\n\t\t\tthis.thumbnails[0].selected = true;\r\n\t\t\tthis.selectedItem = this.thumbnails[0];\r\n\t\t}\r\n\t\tthis.paginate = (this.thumbnails.length * 60) > this.width;\r\n\t}\r\n\tngOnChanges(changes: any) {\r\n\t\tif (changes.position && this.slider) {\r\n\t\t\t// should have initial position or remember last user action.\r\n\t\t\tthis.translatedPosition = 0;\r\n\t\t\tthis.shiftedIndex = 0;\r\n\t\t\tthis.slider.nativeElement.style.transform = \"translate(0px,0px)\";\r\n\t\t}\r\n\t}\r\n\thoverOver(event: any) {\r\n\t\tif (this.zoomOnHover && this.largeImage) {\r\n\t\t\tconst img = event.target.children[0];\r\n\t\t\tif (img) {\r\n\t\t\t  const rect = img.getBoundingClientRect();\r\n\t\t\t  this.largeImage.nativeElement.style.width = (this.magnificationFactor * rect.width) + 'px';\r\n\t\t\t  this.largeImage.nativeElement.style.height = (this.magnificationFactor * rect.height) + 'px';\r\n\t\t\t  img.style.visibility = 'hidden';\r\n\t\t\t}\r\n\t\t\tif (this.enableEventTracking) {\r\n\t\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\t\tproductId: this.productId,\r\n\t\t\t\t\tthumbnailId: this.selectedItem.thumbnailId,\r\n\t\t\t\t\taction: \"zoomed\",\r\n\t\t\t\t\ttitle:  this.selectedItem.title,\r\n\t\t\t\t\ttime: new Date()\r\n\t\t\t\t});\r\n\t\t\t}\t\r\n\t\t}\r\n\t}\r\n\thoverOut(event: any) {\r\n\t\tif (this.largeImage) {\r\n\t\t\tconst img = event.target.children[0];\r\n\t\t\timg.style.visibility = 'visible';\r\n\t\t\tthis.largeImage.nativeElement.style.opacity = 0;\r\n\t\t\tthis.largeImage.nativeElement.style.top = \"-10000px\";\r\n\t\t\tthis.largeImage.nativeElement.style.left = \"-10000px\";\r\n\t\t\tif (this.enableEventTracking) {\r\n\t\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\t\tproductId: this.productId,\r\n\t\t\t\t\tthumbnailId: this.selectedItem.thumbnailId,\r\n\t\t\t\t\taction: event.type,\r\n\t\t\t\t\ttitle:  this.selectedItem.title,\r\n\t\t\t\t\ttime: new Date()\r\n\t\t\t\t});\r\n\t\t\t}\t\r\n\t\t}\r\n\t}\r\n\thoverViewPort(event: any) {\r\n\t\tif (this.zoomOnHover && this.largeImage) {\r\n\t\t\tconst img = event.target.children[0];\r\n\t\t\tconst rect = img.getBoundingClientRect();\r\n\t\t\tconst dx = (this.width - rect.width)*(this.magnificationFactor/2);\r\n\t\t\tconst dy = (this.height - rect.height)*(this.magnificationFactor/2);\r\n\t\t\tconst y = event.layerY * (this.magnificationFactor - 1);\r\n\t\t\tconst x = event.layerX * (this.magnificationFactor - 1);\r\n\t\t\tthis.largeImage.nativeElement.style.top = (-y + dy) + \"px\";\r\n\t\t\tthis.largeImage.nativeElement.style.left = (-x + dx) + \"px\";\r\n\t\t\tthis.largeImage.nativeElement.style.opacity = 1;\r\n\t\t\tif (this.enableEventTracking) {\r\n\t\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\t\tproductId: this.productId,\r\n\t\t\t\t\tthumbnailId: this.selectedItem.thumbnailId,\r\n\t\t\t\t\taction: event.type,\r\n\t\t\t\t\ttitle:  this.selectedItem.title,\r\n\t\t\t\t\ttime: new Date(),\r\n\t\t\t\t\titem: {\r\n\t\t\t\t\t\tY: x,\r\n\t\t\t\t\t\tX: y\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\t\r\n\t\t}\r\n\t}\r\n\tshiftDisplay(slider: HTMLElement, position: string, toEnd: boolean) {\r\n\t\tif (this.paginate) {\r\n\t\t\tconst rect = slider.getBoundingClientRect();\r\n\t\t\tconst child: any = slider.children[this.shiftedIndex];\r\n\t\t\tconst rect2 = child.getBoundingClientRect();\r\n\t\t\tconst len = (slider.children.length -1);\r\n\t\t\tconst tp = this.translatedPosition;\r\n\r\n\t\t\tif (position === \"top\" || position === \"bottom\") {\r\n\t\t\t\tthis.translatedPosition += (toEnd ? -rect2.width : rect2.width);\r\n\t\t\t\tthis.translatedPosition = \r\n\t\t\t\t\tthis.translatedPosition > 0 ? 0 : \r\n\t\t\t\t\t\t((this.translatedPosition + rect.width) < 0 ? this.translatedPosition + rect2.width : this.translatedPosition);\r\n\t\t\t\tthis.slider.nativeElement.style.transform = \"translateX(\" + this.translatedPosition + \"px)\";\r\n\t\t\t} else {\r\n\t\t\t\tthis.translatedPosition += (toEnd ? -rect2.height : rect2.height);\r\n\t\t\t\tthis.translatedPosition = \r\n\t\t\t\t\tthis.translatedPosition > 0 ? 0 : \r\n\t\t\t\t\t\t((this.translatedPosition + rect2.height) < 0 ? this.translatedPosition + rect2.height : this.translatedPosition);\r\n\t\t\t\tthis.slider.nativeElement.style.transform = \"translateY(\" + this.translatedPosition + \"px)\";\r\n\t\t\t}\r\n\t\t\tif (tp !== this.translatedPosition) {\r\n\t\t\t\tif (toEnd) {\r\n\t\t\t\t\tthis.shiftedIndex++;\r\n\t\t\t\t\tthis.shiftedIndex = this.shiftedIndex < len ? this.shiftedIndex : len;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.shiftedIndex--;\r\n\t\t\t\t\tthis.shiftedIndex = this.shiftedIndex < 0 ? 0 : this.shiftedIndex;\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t\tif (this.enableEventTracking) {\r\n\t\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\t\tproductId: this.productId,\r\n\t\t\t\t\taction: \"thombnail shift\",\r\n\t\t\t\t\ttime: new Date()\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tupdateControls(event: any) {\r\n\t\tif (this.hasControls) {\r\n\t\t\tevent.target.setAttribute('controls','true');\r\n\t\t}\r\n\t\tif (this.hoverPlay) {\r\n\t\t\tevent.target.play();\r\n\t\t}\r\n\t}\r\n\tresetControls(event: any) {\r\n\t\tif (this.hoverPlay && this.isPlaying(event.target)) {\r\n\t\t\tevent.target.pause();\r\n\t\t}\r\n\t}\r\n\tprivate isPlaying(video: any) {\r\n\t\treturn !!(video.currentTime > 0 && !video.paused && !video.ended && video.readyState > 2);\r\n\t}\r\n\tvideoKeyup(event: any) {\r\n\t\tconst code = event.which;\r\n\t\tif (code === 13) {\r\n\t\t\tif (this.isPlaying(event.target)) {\r\n\t\t\t\tevent.target.pause();\r\n\t\t\t} else {\r\n\t\t\t\tevent.target.play();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tkeyup(event: any) {\r\n        const code = event.which;\r\n\t\t\r\n\t\tif (code === 13) {\r\n\t\t\tevent.target.click();\r\n\t\t}\r\n\t}\r\n\tvideoEvent(event: any) {\r\n\t\tif (this.enableEventTracking) {\r\n\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\tproductId: this.productId,\r\n\t\t\t\tthumbnailId: this.selectedItem.thumbnailId,\r\n\t\t\t\taction: event.type,\r\n\t\t\t\ttitle:  this.selectedItem.title,\r\n\t\t\t\ttime: new Date(),\r\n\t\t\t\titem: {\r\n\t\t\t\t\tautoplay: event.target.autoplay,\r\n\t\t\t\t\tcontrols: event.target.controls,\r\n\t\t\t\t\tduration: event.target.duration,\r\n\t\t\t\t\tended: event.target.ended,\r\n\t\t\t\t\terror: event.target.error,\r\n\t\t\t\t\tpaused: event.target.paused,\r\n\t\t\t\t\tmuted: event.target.muted,\r\n\t\t\t\t\tcurrentTime: event.target.currentTime,\r\n\t\t\t\t\tvolume: event.target.volume\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\thoverTab(i: number, slider: HTMLElement, position: string, onhover: boolean) {\r\n\t\tif (this.peekOnHover) {\r\n\t\t\tthis.hoverItem = this.thumbnails[i];\r\n\t\t}\r\n\t\tif(!onhover && i !== this.shiftedIndex) {\r\n\t\t\tconst toEnd = this.shiftedIndex < i;\r\n\t\t\tthis.shiftedIndex = i;\r\n\t\t\tthis.shiftDisplay(slider, position, toEnd);\r\n\t\t}\r\n\t\tif (this.enableEventTracking) {\r\n\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\tproductId: this.thumbnails[i].productId,\r\n\t\t\t\tthumbnailId: this.thumbnails[i].thumbnailId,\r\n\t\t\t\taction: (onhover ? \"hover\" : \"focus\"),\r\n\t\t\t\ttitle: this.thumbnails[i].title,\r\n\t\t\t\ttime: new Date()\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tselectTab(i: number) {\r\n\t\tthis.thumbnails.map((tab)=> tab.selected = false );\r\n\t\tthis.selectedIndex = i;\r\n\t\tthis.thumbnails[i].selected = true;\r\n\t\tthis.selectedItem = this.thumbnails[i];\r\n\t\tif (this.enableEventTracking) {\r\n\t\t\tthis.onEventTracking.emit({\r\n\t\t\t\tproductId: this.thumbnails[i].productId,\r\n\t\t\t\tthumbnailId: this.thumbnails[i].thumbnailId,\r\n\t\t\t\taction: \"select\",\r\n\t\t\t\ttitle: this.thumbnails[i].title,\r\n\t\t\t\ttime: new Date()\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","\r\n<div class=\"showcase {{position}}\">\r\n    <div class=\"showcase-control {{position}}\" \r\n        role=\"list\" \r\n        [style.width]=\"position === 'top' ? width + 'px' : null\" \r\n        [style.height]=\"position === 'left' ? height + 'px' : null\"\r\n        *ngIf=\"position === 'top' || position === 'left'\">\r\n        <div class=\"slide-control\" \r\n            tabindex=\"0\"\r\n            [class.left]=\"position == 'top'\"\r\n            [class.up]=\"position == 'left'\"\r\n            *ngIf=\"paginate\" \r\n            (keyup)=\"keyup($event)\"\r\n            (click)=\"shiftDisplay(slider, position, false)\">\r\n            <span *ngIf=\"position === 'top'\" class=\"fa fa-angle-left\" aria-hidden=\"true\"></span>\r\n            <span *ngIf=\"position === 'left'\" class=\"fa fa-angle-up\" aria-hidden=\"true\"></span>\r\n        </div>\r\n        <div class=\"sliding-viewport paginate\">\r\n            <ul  #slider>\r\n                <li *ngFor=\"let item of thumbnails; let i = index\">\r\n                    <a  role=\"listitem\" \r\n                        tabindex=\"0\"\r\n                        (keyup)=\"keyup($event)\" \r\n                        (click)=\"selectTab(i)\"\r\n                        (focus)=\"hoverTab(i, slider, position, false)\"\r\n                        (mouseenter)=\"hoverTab(i, slider, position, true)\"\r\n                        (mouseleave)=\"hoverItem = undefined\"\r\n                        [title]=\"item.title\" \r\n                        [class.selected]=\"item.selected\">\r\n                        <span class=\"off-screen\" [textContent]=\"message\"></span>\r\n                        <span class=\"title off-screen\" [textContent]=\"item.title\"></span>\r\n                        <img  class=\"content\" [src]=\"item.src.small\" *ngIf=\"item.type === 'image'\" />\r\n                        <video height=\"100%\" class=\"content\" *ngIf=\"item.type === 'video'\" disabled=\"disabled\" tabindex=\"-1\">\r\n                            <source [src]=\"item.src.mp4\" type=\"video/mp4\">\r\n                            <source [src]=\"item.src.webm\" type=\"video/webm\">\r\n                            <source [src]=\"item.src.egg\" type=\"video/ogg\">\r\n                        </video>\r\n                        <span class=\"hover\">&nbsp;</span>\r\n                    </a>\r\n                </li>\r\n            </ul>\r\n        </div>\r\n        <div class=\"slide-control\" \r\n            tabindex=\"0\"\r\n            [class.right]=\"position == 'top'\"\r\n            [class.down]=\"position == 'left'\"\r\n            *ngIf=\"paginate\" \r\n            (keyup)=\"keyup($event)\"\r\n            (click)=\"shiftDisplay(slider, position, true)\">\r\n            <span *ngIf=\"position === 'top'\" class=\"fa fa-angle-right\" aria-hidden=\"true\"></span>\r\n            <span *ngIf=\"position === 'left'\" class=\"fa fa-angle-down\" aria-hidden=\"true\"></span>\r\n        </div>\r\n    </div>\r\n    <div tabindex=\"0\"\r\n        class=\"showcase-viewport\" \r\n        [style.width]=\"width + 'px'\" \r\n        [style.height]=\"height + 'px'\"\r\n        (keyup)=\"videoKeyup($event)\"\r\n        (mouseout)=\"hoverOut($event)\"\r\n        (mouseover)=\"hoverOver($event)\"\r\n        (mousemove)=\"hoverViewPort($event)\">\r\n        <img  class=\"content\" \r\n                [src]=\"hoverItem ? hoverItem.src.medium : selectedItem.src.medium\" \r\n                *ngIf=\"(hoverItem ? hoverItem.type === 'image' : selectedItem.type === 'image')\" />\r\n        <img  class=\"hover\" #largeImage\r\n                [src]=\"selectedItem.src.large\" \r\n                *ngIf=\"zoomOnHover && selectedItem.type === 'image'\" />\r\n        <video \r\n            class=\"content\" #video\r\n            [style.width]=\"width + 'px'\" \r\n            [style.height]=\"height + 'px'\"\r\n            [attr.poster]=\"(hoverItem && hoverItem.poster) ? hoverItem.poster : ((selectedItem && selectedItem.poster) ? selectedItem.poster : null)\"\r\n            (focus)=\"updateControls($event)\"\r\n            (mouseenter)=\"updateControls($event)\"\r\n            (mouseleave)=\"resetControls($event)\"\r\n            (play)=\"videoEvent($event)\"\r\n            (pause)=\"videoEvent($event)\"\r\n            (ended)=\"videoEvent($event)\"\r\n            (seeked)=\"videoEvent($event)\"\r\n            (error)=\"videoEvent($event)\"\r\n            (fullscreenchange)=\"videoEvent($event)\"\r\n            *ngIf=\"(hoverItem ? hoverItem.type === 'video' : selectedItem.type === 'video')\" controls>\r\n            <source [src]=\"hoverItem ? hoverItem.src.mp4 : selectedItem.src.mp4\" type=\"video/mp4\">\r\n            <source [src]=\"hoverItem ? hoverItem.src.webm : selectedItem.src.webm\" type=\"video/webm\">\r\n            <source [src]=\"hoverItem ? hoverItem.src.egg : selectedItem.src.egg\" type=\"video/ogg\">\r\n        </video>\r\n    </div>\r\n    <div class=\"showcase-control {{position}}\" \r\n        role=\"list\" \r\n        [style.width]=\"position === 'bottom' ? width + 'px' : null\" \r\n        [style.height]=\"position === 'right' ? height + 'px' : null\"\r\n        *ngIf=\"position === 'bottom' || position === 'right'\">\r\n        <div class=\"slide-control\" tabindex=\"0\"\r\n            [class.left]=\"position == 'bottom'\"\r\n            [class.up]=\"position == 'right'\"\r\n            *ngIf=\"paginate\" \r\n            (keyup)=\"keyup($event)\"\r\n            (click)=\"shiftDisplay(slider, position, false)\">\r\n            <span *ngIf=\"position === 'bottom'\" class=\"fa fa-angle-left\" aria-hidden=\"true\"></span>\r\n            <span *ngIf=\"position === 'right'\" class=\"fa fa-angle-up\" aria-hidden=\"true\"></span>\r\n        </div>\r\n        <div class=\"sliding-viewport paginate\">\r\n            <ul #slider>\r\n                <li *ngFor=\"let item of thumbnails; let i = index\">\r\n                    <a  role=\"listitem\" \r\n                        tabindex=\"0\"\r\n                        (keyup)=\"keyup($event)\" \r\n                        (click)=\"selectTab(i)\"\r\n                        (focus)=\"hoverTab(i, slider, position, false)\"\r\n                        (mouseenter)=\"hoverTab(i, slider, position, true)\"\r\n                        [title]=\"item.title\" \r\n                        [class.selected]=\"item.selected\">\r\n                        <span class=\"off-screen\" [textContent]=\"message\"></span>\r\n                        <span class=\"title off-screen\" [textContent]=\"item.title\"></span>\r\n                        <img  class=\"content\" [src]=\"item.src.small\" *ngIf=\"item.type === 'image'\" />\r\n                        <video *ngIf=\"item.type === 'video'\" \r\n                            [attr.poster]=\"item.poster ? item.poster : null\"\r\n                            height=\"100%\" \r\n                            class=\"content\" \r\n                            disabled=\"disabled\"\r\n                            tabindex=\"-1\">\r\n                            <source [src]=\"item.src.mp4\" type=\"video/mp4\">\r\n                            <source [src]=\"item.src.webm\" type=\"video/webm\">\r\n                            <source [src]=\"item.src.egg\" type=\"video/ogg\">\r\n                        </video>\r\n                    </a>\r\n                </li>\r\n            </ul>\r\n        </div>\r\n        <div class=\"slide-control\" tabindex=\"0\"\r\n            [class.right]=\"position == 'bottom'\"\r\n            [class.down]=\"position == 'right'\"\r\n            *ngIf=\"paginate\" \r\n            (keyup)=\"keyup($event)\"\r\n            (click)=\"shiftDisplay(slider, position, true)\">\r\n            <span *ngIf=\"position === 'bottom'\" class=\"fa fa-angle-right\" aria-hidden=\"true\"></span>\r\n            <span *ngIf=\"position === 'right'\" class=\"fa fa-angle-down\" aria-hidden=\"true\"></span>\r\n        </div>\r\n    </div>\r\n</div>\r\n","/*\r\n* Provides rendering of flexible tabs in a lazy load fashion.\r\n*/\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { FlexibleShowcaseComponent } from './flexible-showcase.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    declarations: [\r\n        FlexibleShowcaseComponent\r\n    ],\r\n    exports: [\r\n        FlexibleShowcaseComponent\r\n    ],\r\n    entryComponents: [\r\n    ],\r\n    providers: [\r\n    ],\r\n    schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\n\r\nexport class FlexibleShowcaseModule {}\r\n","/*\n * Public API Surface of flexible-showcase\n */\n\nexport * from './lib/flexible-showcase.component';\nexport * from './lib/flexible-showcase-module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}