{"version":3,"sources":["webpack:///./modules/Stage.ts"],"names":["Stage","element","_this","this","playSlide","nextSlide","querySelector","addEventListener","click","options","getDefaultOptions","init","setup","selector","Array","from","document","querySelectorAll","filter","node","dataset","moduleInitialized","forEach","prototype","initSlider","timer","sliderNode","slideItems","defaultSliderDuraion","getAttribute","observer","MutationObserver","mutationsList","mutation","type","attributeName","target","classList","contains","video_1","preload","load","duration","Math","floor","updateSliderTimer","muted","play","mutationsList_1","__values","mutationsList_1_1","next","done","value","li","observe","attributes","uikit__WEBPACK_IMPORTED_MODULE_0___default","a","util","ready","slider","e","activeItems","remove","add","initLazySlides","center","sets","finite","autoplay","draggable","velocity","autoplayInterval","animation","sliderTimer","loadForActiveSlides","loadForNextSlide","loadForPrevSlide","style","cssText","activeSLide","loadSlideImg","nextElement","nextElementSibling","prevElement","previousElementSibling","targetSlide","images","getImages","Object","rxjs__WEBPACK_IMPORTED_MODULE_4__","pipe","rxjs_operators__WEBPACK_IMPORTED_MODULE_1__","_helpers_DOMHelpers__WEBPACK_IMPORTED_MODULE_3__","rxjs_operators__WEBPACK_IMPORTED_MODULE_2__","subscribe","slide"],"mappings":"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","file":"./modules/Stage.ef860981.js","sourcesContent":["/// <reference path=\"../typings/bdfcw.d.ts\"/>\r\nimport UIkit from 'uikit';\r\nimport {\r\n    filter,\r\n    mergeMap\r\n} from 'rxjs/operators';\r\nimport {\r\n    hasSliderImageToBeLoad,\r\n    loadImageLazy$\r\n} from '../helpers/DOMHelpers';\r\nimport { from } from 'rxjs';\r\n\r\nconst moduleSelector = '[data-module=\"Stage\"]';\r\n\r\nclass Stage {\r\n    private options: any;\r\n\r\n    static setup(selector: string = moduleSelector): void {\r\n        Array.from(document.querySelectorAll(selector)).filter((node: HTMLElement) => !node.dataset.moduleInitialized).forEach((element: HTMLElement) => {\r\n            new Stage(element);\r\n            element.dataset.moduleInitialized = 'true';\r\n        });\r\n    }\r\n\r\n    constructor(private element: HTMLElement) {\r\n        this.options = this.getDefaultOptions();\r\n        this.init();\r\n    }\r\n\r\n    private init(): Stage {\r\n        this.initSlider();\r\n        this.timer(true);\r\n        return this;\r\n    }\r\n\r\n    private initSlider() {\r\n        const sliderNode = this.element.querySelector('.cw-slider'),\r\n            slideItems = this.element.querySelector('.cw-slider__items'),\r\n            defaultSliderDuraion = this.element.getAttribute('data-delay-per-slide');\r\n\r\n        const observer = new MutationObserver(mutationsList => {\r\n            for (let mutation of mutationsList) {\r\n                if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\r\n                    const target = mutation.target as HTMLElement;\r\n                    if (target.classList.contains('uk-active')) {\r\n                        const video = target.querySelector('video');\r\n                        if (video) {\r\n                            video.preload = \"auto\";\r\n                            video.load();\r\n                            video.addEventListener('canplay', () => {\r\n                                var duration = Math.floor(video.duration * 1000);\r\n                                this.updateSliderTimer(duration);\r\n                                video.muted = true;\r\n                                video.play();\r\n                            })\r\n                        } else {\r\n                            this.updateSliderTimer(defaultSliderDuraion);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        slideItems.querySelectorAll('li').forEach(li => {\r\n            observer.observe(li, { attributes: true });\r\n        });\r\n\r\n        UIkit.util.ready(() => {\r\n            UIkit.slider(sliderNode, this.options);\r\n            this.playSlide();\r\n        });\r\n\r\n        slideItems.addEventListener('beforeitemshow', (e) => {\r\n            this.timer(false);\r\n            const activeItems = this.element.querySelectorAll('.slide-active');\r\n            Array.from(activeItems).forEach((element: HTMLSelectElement) => {\r\n                element.classList.remove('slide-active');\r\n            });\r\n        });\r\n\r\n        slideItems.addEventListener('itemshown', (e) => {\r\n            this.timer(true);\r\n            var target = <HTMLElement>e.target;\r\n            target.classList.add('slide-active');\r\n        });\r\n\r\n        slideItems.addEventListener('itemshow', (e) => {\r\n            this.initLazySlides(<HTMLElement>e.target);\r\n        });\r\n\r\n    }\r\n\r\n    private getDefaultOptions() {\r\n        return {\r\n            center: false,\r\n            sets: false,\r\n            finite: false,\r\n            autoplay: false,\r\n            draggable: true,\r\n            velocity: 1000,\r\n            autoplayInterval: this.element.getAttribute('data-delay-per-slide') || 7000,\r\n            animation: \"slide\"\r\n        }\r\n    }\r\n\r\n    private timer(load): Stage {\r\n        const sliderTimer: HTMLElement = <HTMLElement>this.element.querySelector('.cw-time-progres');\r\n        if (load) {\r\n            sliderTimer.classList.add(\"time-loading\");\r\n        } else {\r\n            sliderTimer.classList.remove(\"time-loading\");\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n\r\n    private initLazySlides(target) {\r\n        this.loadForActiveSlides(target);\r\n        this.loadForNextSlide(target);\r\n        this.loadForPrevSlide(target);\r\n    }\r\n\r\n/*    private takeVideoDuration(video) {\r\n        console.log(\"Taking video duration...\", video);\r\n        video.addEventListener('loadedmetadata', () => {\r\n            var duration = video.duration.toFixed() * 1000;\r\n            console.log(\"Video metadata loaded duration:\", duration);\r\n\r\n            video.pause();\r\n            video.currentTime = 0;\r\n            video.play();\r\n            this.updateSliderTimer(duration);\r\n        });\r\n    }*/\r\n\r\n    private playSlide = () => {\r\n        const nextSlide: any = this.element.querySelector('.uk-slidenav-next');\r\n        const timerProgress: any = this.element.querySelector('.cw-time-progres');\r\n\r\n        timerProgress.addEventListener('animationend', () => {\r\n            nextSlide.click();\r\n        });\r\n    };\r\n\r\n    private updateSliderTimer(duration) {\r\n        var timerProgress: any = this.element.querySelector('.cw-time-progres');\r\n        timerProgress.style.cssText = `\r\n        -webkit-animation-duration: ${duration}ms; \r\n        animation-duration: ${duration}ms;\r\n      `;\r\n    }\r\n\r\n    private loadForActiveSlides(activeSLide: HTMLElement) {\r\n        this.loadSlideImg(activeSLide);\r\n    }\r\n\r\n    private loadForNextSlide(target) {\r\n        var nextElement = target.nextElementSibling\r\n        if (!nextElement) return false;\r\n        this.loadSlideImg(nextElement);\r\n    }\r\n\r\n    private loadForPrevSlide(target) {\r\n        var prevElement = target.previousElementSibling;\r\n        if (!prevElement) return false;\r\n        this.loadSlideImg(prevElement);\r\n    }\r\n\r\n    private loadSlideImg(targetSlide) {\r\n        var images = this.getImages(targetSlide);\r\n        from(images).pipe(\r\n            filter(hasSliderImageToBeLoad),\r\n            mergeMap(loadImageLazy$)\r\n        ).subscribe();\r\n    }\r\n\r\n    private getImages(slide) {\r\n        return <HTMLImageElement[]>Array.from(slide.querySelectorAll('source[data-srcset], img[data-src]'));\r\n    }\r\n}\r\n\r\n\r\nnew Stage.setup();\r\n\r\n// Hot Module Replacement\r\nif (module.hot) {\r\n    let nodesCache: HMRNodes[] = Array.from(document.querySelectorAll(moduleSelector)).map((element: Node) => ({ nodeToReplace: element.parentNode, nodeOrigin: element.parentNode.cloneNode(true) }));\r\n\r\n    module.hot.accept(() => {\r\n        new Stage.setup(moduleSelector);\r\n    });\r\n\r\n    module.hot.dispose(() => {\r\n        nodesCache.forEach(({ nodeToReplace, nodeOrigin }) => { nodeToReplace = nodeToReplace.parentElement.replaceChild(nodeOrigin.cloneNode(true), nodeToReplace) });\r\n    });\r\n} else {\r\n    new Stage.setup('[data-module=\"Stage\"]');\r\n}\r\n"],"sourceRoot":""}