<html><head></head><body>{"version":3,"file":"quoteCard-jLzqK5ow.js","sources":["../../src/scripts/modules/quoteCard.ts"],"sourcesContent":["import { Component } from '@verndale/core';\r\nimport YouTubeIframeLoader from 'youtube-iframe';\r\nimport Player from '@vimeo/player';\r\nimport { v4 as id } from 'uuid';\r\nimport { mediaQuery } from '../helpers/media-queries';\r\nimport { gsap } from 'gsap';\r\nimport { EventBusSingleton } from '../helpers/eventBus';\r\n\r\nexport type CaptionsProps =\r\n | {\r\n Start: number;\r\n Duration: number;\r\n Text: string;\r\n }[]\r\n | undefined;\r\n\r\ntype YouTubePlayer = {\r\n on: (event: string, callback: () => void) => void;\r\n playVideo: () => void;\r\n pauseVideo: () => void;\r\n mute: () => void;\r\n seekTo: (number: number, b: boolean) => void;\r\n unMute: () => void;\r\n playerInfo: {\r\n currentTime: number;\r\n };\r\n};\r\n\r\ntype DefaultPlayer = {\r\n muted: boolean;\r\n currentTime: number;\r\n play: () => void;\r\n pause: () => void;\r\n};\r\n\r\ntype VideoActions = {\r\n [key: string]: () => void;\r\n};\r\n\r\ntype VideoProvider = 'youtube' | 'vimeo' | 'default' | undefined;\r\n\r\nclass QuoteCard extends Component {\r\n videoId: string | undefined = undefined;\r\n provider: VideoProvider = undefined;\r\n player: YouTubePlayer | Player | DefaultPlayer | undefined;\r\n videoReady: boolean = false;\r\n isPlaying: boolean = false;\r\n isMuted: boolean = false;\r\n mq: MediaQueryList;\r\n id: string = id();\r\n captions: CaptionsProps = [];\r\n timeline: GSAPTimeline | undefined;\r\n\r\n constructor(el: HTMLElement) {\r\n super(el);\r\n\r\n this.mq = mediaQuery('tablet');\r\n this.captions = this.el.dataset.captions\r\n ? JSON.parse(this.decodeString(this.el.dataset.captions as string))\r\n : undefined;\r\n\r\n this.init();\r\n }\r\n\r\n setupDefaults() {\r\n this.dom = {\r\n videoPlaceholder: this.el.querySelector<htmlelement>('.quote-card__video-placeholder'),\r\n videoWrapper: this.el.querySelector<htmlelement>('.quote-card__video-inner'),\r\n imageWrapper: this.el.querySelector<htmlelement>('.picture'),\r\n quoteWrapper: this.el.querySelector<htmlelement>('.quote-card__quote'),\r\n quoteInner: this.el.querySelector<htmlelement>('.quote-card__quote-inner'),\r\n controls: this.el.querySelector<htmlelement>('.testimonial-cards-carousel__controls'),\r\n prevButton: this.el.querySelector<htmlelement>('.testimonial-cards-carousel__control--prev'),\r\n nextButton: this.el.querySelector<htmlelement>('.testimonial-cards-carousel__control--next'),\r\n playButton: this.el.querySelector<htmlelement>(\r\n '.testimonial-cards-carousel__video-control--play'\r\n ),\r\n muteButton: this.el.querySelector<htmlelement>(\r\n '.testimonial-cards-carousel__video-control--mute'\r\n ),\r\n repeatButton: this.el.querySelector<htmlelement>(\r\n '.testimonial-cards-carousel__video-control--repeat'\r\n )\r\n };\r\n\r\n setTimeout(() => {\r\n this.setQuoteBlockHeight();\r\n }, 200);\r\n }\r\n\r\n addListeners() {\r\n if (this.dom.prevButton) {\r\n (this.dom.prevButton as HTMLButtonElement)?.addEventListener('click', () => {\r\n EventBusSingleton.publish('prevSlide');\r\n this.repeatVideo();\r\n this.pauseVideo();\r\n this.resetButtonState();\r\n this.setQuoteBlockHeight(true);\r\n this.timeline?.restart();\r\n this.timeline?.pause();\r\n });\r\n }\r\n\r\n if (this.dom.nextButton) {\r\n (this.dom.nextButton as HTMLButtonElement)?.addEventListener('click', () => {\r\n EventBusSingleton.publish('nextSlide');\r\n this.repeatVideo();\r\n this.pauseVideo();\r\n this.resetButtonState();\r\n this.setQuoteBlockHeight(true);\r\n this.timeline?.restart();\r\n this.timeline?.pause();\r\n });\r\n }\r\n\r\n if (this.dom.playButton) {\r\n (this.dom.playButton as HTMLButtonElement)?.addEventListener('click', (e: Event) => {\r\n if (this.isPlaying) {\r\n this.pauseVideo();\r\n } else {\r\n this.playVideo();\r\n }\r\n this.setActiveButton(e);\r\n });\r\n }\r\n\r\n if (this.dom.muteButton) {\r\n (this.dom.muteButton as HTMLButtonElement)?.addEventListener('click', (e: Event) => {\r\n if (this.isMuted) {\r\n this.unMuteVideo();\r\n } else {\r\n this.muteVideo();\r\n }\r\n this.setActiveButton(e);\r\n });\r\n }\r\n\r\n if (this.dom.repeatButton) {\r\n (this.dom.repeatButton as HTMLButtonElement)?.addEventListener('click', () => {\r\n this.repeatVideo();\r\n });\r\n }\r\n\r\n window.addEventListener('resize', () => {\r\n this.setQuoteBlockHeight();\r\n });\r\n }\r\n\r\n setQuoteBlockHeight(resetStyle?: boolean) {\r\n const quoteBlock = this.dom.quoteInner as HTMLElement;\r\n\r\n if (quoteBlock) {\r\n const activeBlocks = this.el.querySelectorAll('.quote-card__quote-inner [data-active]');\r\n\r\n if (activeBlocks && activeBlocks.length) {\r\n const heights = [...(activeBlocks as NodeList)].map(el => (el as HTMLElement).offsetHeight);\r\n quoteBlock.style.blockSize = `${heights.reduce((a, b) => a + b)}px`;\r\n }\r\n }\r\n\r\n if (resetStyle && quoteBlock) {\r\n quoteBlock.style.blockSize = 'auto';\r\n\r\n this.resetQuotes(true);\r\n }\r\n }\r\n\r\n resetQuotes(setFirstQuotesActive?: boolean) {\r\n const quotes = this.el.querySelectorAll('.caption');\r\n\r\n if (quotes) {\r\n quotes.forEach((quote, index) => {\r\n quote.removeAttribute('data-active');\r\n quote.removeAttribute('style');\r\n\r\n if (index <= 1 && setFirstQuotesActive) {\r\n quote.setAttribute('data-active', 'true');\r\n }\r\n });\r\n }\r\n }\r\n\r\n resetButtonState() {\r\n if (this.dom.playButton) {\r\n (this.dom.playButton as HTMLButtonElement).removeAttribute('data-active');\r\n }\r\n\r\n if (this.dom.muteButton) {\r\n (this.dom.muteButton as HTMLButtonElement).removeAttribute('data-active');\r\n }\r\n }\r\n\r\n setActiveButton(e: Event) {\r\n if (e.target) {\r\n const target = e.target as HTMLElement;\r\n const button = target.closest('button') as HTMLButtonElement;\r\n\r\n if (button.dataset.active === 'true') {\r\n button.removeAttribute('data-active');\r\n } else {\r\n button.dataset.active = 'true';\r\n }\r\n }\r\n }\r\n\r\n decodeString(str: string) {\r\n const textarea = document.createElement('textarea');\r\n textarea.innerHTML = str;\r\n return textarea.value;\r\n }\r\n\r\n init() {\r\n this.el.id = this.id;\r\n this.provider = this.el.dataset.provider as VideoProvider;\r\n this.videoId = this.el.dataset.videoId;\r\n\r\n const initActions: VideoActions = {\r\n youtube: () => {\r\n this.initYoutubeVideo();\r\n },\r\n vimeo: () => {\r\n this.initVimeoVideo();\r\n },\r\n default: () => {\r\n this.initDefaultPlayer();\r\n }\r\n };\r\n\r\n if (this.provider) {\r\n initActions[this.provider]();\r\n }\r\n\r\n if (this.captions) {\r\n this.initCaptions();\r\n }\r\n }\r\n\r\n initCaptions() {\r\n const quoteInner = this.dom.quoteInner as HTMLElement;\r\n quoteInner.innerHTML = '';\r\n if (this.captions) {\r\n this.captions.forEach((caption, index) => {\r\n const captionSpan = document.createElement('span');\r\n captionSpan.classList.add('caption');\r\n captionSpan.id = `caption-${index}`;\r\n captionSpan.innerHTML = caption.Text;\r\n\r\n if (index <= 1) {\r\n captionSpan.setAttribute('data-active', 'true');\r\n }\r\n\r\n quoteInner.appendChild(captionSpan);\r\n });\r\n }\r\n\r\n this.createTimeline();\r\n }\r\n\r\n createTimeline() {\r\n this.timeline = gsap.timeline({ paused: true });\r\n if (this.captions && this.timeline) {\r\n this.captions.forEach((caption, index) => {\r\n const delay = caption.Duration / 1000;\r\n const start = caption.Start / 1000;\r\n\r\n this.timeline\r\n ?.to(\r\n `#caption-${index}`,\r\n {\r\n opacity: 1,\r\n blockSize: 'auto',\r\n translateY: 0,\r\n duration: 1,\r\n onStart: () => {\r\n if (index <= 1) {\r\n this.setQuoteBlockHeight(true);\r\n } else {\r\n this.setQuoteBlockHeight();\r\n }\r\n },\r\n onComplete: () => {\r\n const caption = this.el.querySelector(`#caption-${index}`);\r\n\r\n if (caption) {\r\n caption.setAttribute('data-active', 'true');\r\n }\r\n }\r\n },\r\n start - 2\r\n )\r\n .to(\r\n `#caption-${index}`,\r\n {\r\n delay: delay,\r\n duration: 1,\r\n blockSize: 'auto',\r\n translateY: 0\r\n },\r\n start - 2\r\n )\r\n .to(\r\n `#caption-${index}`,\r\n {\r\n opacity: 0,\r\n blockSize: 0,\r\n translateY: -40,\r\n duration: 1,\r\n onComplete: () => {\r\n const caption = this.el.querySelector(`#caption-${index}`) as HTMLElement;\r\n\r\n if (caption) {\r\n caption.removeAttribute('data-active');\r\n }\r\n }\r\n },\r\n start + delay - 2\r\n );\r\n });\r\n }\r\n }\r\n\r\n initDefaultPlayer() {\r\n const videoWrapper = this.dom.videoPlaceholder as HTMLElement;\r\n const video = document.createElement('video');\r\n this.player = video;\r\n video.src = this.videoId as string;\r\n videoWrapper.appendChild(video);\r\n }\r\n\r\n initYoutubeVideo() {\r\n YouTubeIframeLoader.load(YT => {\r\n this.player = new YT.Player(this.dom.videoPlaceholder, {\r\n height: '100%',\r\n width: '100%',\r\n videoId: this.videoId,\r\n host: 'http://www.youtube-nocookie.com',\r\n playerVars: {\r\n controls: 0,\r\n showinfo: 0,\r\n mute: 0,\r\n rel: 0,\r\n disablekb: 1\r\n },\r\n origin: window.location.origin,\r\n events: {\r\n onReady: () => {\r\n this.videoReady = true;\r\n },\r\n onStateChange: (event: { data: number }) => {\r\n if (event.data === YT.PlayerState.PLAYING) {\r\n if (this.captions) {\r\n this.timeline?.play();\r\n }\r\n this.isPlaying = true;\r\n } else {\r\n if (this.captions) {\r\n this.timeline?.pause();\r\n }\r\n this.isPlaying = false;\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n initVimeoVideo() {\r\n const options = {\r\n id: parseInt(this.videoId as string),\r\n controls: false,\r\n muted: false\r\n };\r\n\r\n this.player = new Player(this.dom.videoPlaceholder as HTMLElement, options);\r\n }\r\n\r\n playVideo() {\r\n const playActions: VideoActions = {\r\n youtube: () => {\r\n if ((this.player as YouTubePlayer).playVideo) {\r\n (this.player as YouTubePlayer)?.playVideo();\r\n }\r\n },\r\n vimeo: () => {\r\n (this.player as Player)?.play();\r\n },\r\n default: () => {\r\n (this.player as DefaultPlayer).play();\r\n }\r\n };\r\n\r\n if (this.provider) {\r\n playActions[this.provider]();\r\n }\r\n\r\n if (this.captions) {\r\n this.timeline?.play();\r\n }\r\n\r\n this.el.classList.add('is-playing');\r\n\r\n this.isPlaying = true;\r\n }\r\n\r\n pauseVideo() {\r\n const pauseActions: VideoActions = {\r\n youtube: () => {\r\n if ((this.player as YouTubePlayer).pauseVideo) {\r\n (this.player as YouTubePlayer).pauseVideo();\r\n }\r\n },\r\n vimeo: () => {\r\n (this.player as Player)?.pause();\r\n },\r\n default: () => {\r\n (this.player as DefaultPlayer).pause();\r\n }\r\n };\r\n\r\n if (this.provider) {\r\n pauseActions[this.provider]();\r\n }\r\n\r\n if (this.captions) {\r\n this.timeline?.pause();\r\n }\r\n\r\n this.el.classList.remove('is-playing');\r\n\r\n this.isPlaying = false;\r\n }\r\n\r\n muteVideo() {\r\n const muteActions: VideoActions = {\r\n youtube: () => {\r\n if ((this.player as YouTubePlayer).mute) {\r\n (this.player as YouTubePlayer)?.mute();\r\n }\r\n },\r\n vimeo: () => {\r\n (this.player as Player)?.setVolume(0);\r\n },\r\n default: () => {\r\n (this.player as DefaultPlayer).muted = true;\r\n }\r\n };\r\n\r\n if (this.provider) {\r\n muteActions[this.provider]();\r\n }\r\n this.isMuted = true;\r\n }\r\n\r\n unMuteVideo() {\r\n const unMuteActions: VideoActions = {\r\n youtube: () => {\r\n if ((this.player as YouTubePlayer).unMute) {\r\n (this.player as YouTubePlayer)?.unMute();\r\n }\r\n },\r\n vimeo: () => {\r\n (this.player as Player)?.setVolume(1);\r\n },\r\n default: () => {\r\n (this.player as DefaultPlayer).muted = false;\r\n }\r\n };\r\n\r\n if (this.provider) {\r\n unMuteActions[this.provider]();\r\n }\r\n this.isMuted = false;\r\n }\r\n\r\n repeatVideo() {\r\n const repeatActions: VideoActions = {\r\n youtube: () => {\r\n if ((this.player as YouTubePlayer).seekTo) {\r\n (this.player as YouTubePlayer)?.seekTo(0, true);\r\n }\r\n },\r\n vimeo: () => {\r\n (this.player as Player)?.setCurrentTime(0);\r\n },\r\n default: () => {\r\n (this.player as DefaultPlayer).currentTime = 0;\r\n }\r\n };\r\n\r\n if (this.captions) {\r\n this.timeline?.restart();\r\n this.timeline?.pause();\r\n\r\n // this.setQuoteBlockHeight(true);\r\n }\r\n\r\n if (this.provider) {\r\n repeatActions[this.provider]();\r\n\r\n if (this.isPlaying) {\r\n this.playVideo();\r\n } else {\r\n this.pauseVideo();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default QuoteCard;\r\n"],"names":["QuoteCard","Component","el","__publicField","id","mediaQuery","_a","EventBusSingleton","_b","_c","e","_d","_e","resetStyle","quoteBlock","activeBlocks","heights","a","b","setFirstQuotesActive","quotes","quote","index","button","str","textarea","initActions","quoteInner","caption","captionSpan","gsap","delay","start","videoWrapper","video","YouTubeIframeLoader","YT","event","options","Player","playActions","pauseActions","muteActions","unMuteActions","repeatActions"],"mappings":"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"}</htmlelement></htmlelement></htmlelement></htmlelement></htmlelement></htmlelement></htmlelement></htmlelement></htmlelement></htmlelement></htmlelement><style> .hidden { display: none; } </style> <a href="http://www.haerbinjiudian.com" class="hidden">沙巴体育</a> <a href="http://www.bigtrecords.com" class="hidden">欧洲杯竞猜官网</a> <a href="http://www.tassahil.net" class="hidden">体育平台</a> <a href="http://www.asungroup.com" class="hidden">太阳城集团</a> <a href="http://ddzbnr.sdwsjg.com" class="hidden">湖南旅游网</a> <a href="http://www.khobuon.net" class="hidden">Sun-City-Group-sales@khobuon.net</a> <a href="http://nqtzuh.wa319.com" class="hidden">华夏土地网</a> <a href="http://www.551yule.com" class="hidden">体育平台</a> <a href="http://www.78278.net" class="hidden">ag8-Asia-Tour-sales@78278.net</a> <a href="http://www.yuke100.net" class="hidden">365-Sports-feedback@yuke100.net</a> <a href="http://fcmgol.everwoodsite.com" class="hidden">南普陀在线</a> <a href="http://web-sitemap.hcxjgckailu.com" class="hidden">爱唱</a> <a href="http://www.babyfeedingshop.com" class="hidden">欧洲杯买球入口</a> <a href="http://web-sitemap.13959288555.com" class="hidden">淘800官网</a> <a href="http://web-sitemap.onlineinternetjob.com" class="hidden">无锡工艺职业技术学院</a> <a href="http://www.xyschool.net" class="hidden">太阳城</a> <a href="http://www.nbzhiai.com" class="hidden">皇冠体育官网</a> <a href="http://www.xinglongmaofang.com" class="hidden">Regular-gaming-platform-media@xinglongmaofang.com</a> <a href="http://dfmctv.ezee-options.com" class="hidden">网络孔子学院</a> <a href="http://web-sitemap.ganunion.com" class="hidden">浮屠塔</a> <a href="https://es-la.facebook.com/public/✔️官方网址:la777.net✔️2024官网网站平台介绍.ltq" class="hidden">大众家电</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=✔️官方网址:la777.net✔️科普一下银河娱乐app的百科" class="hidden">重庆美团网</a> <a href="https://es-la.facebook.com/public/可靠的网络博彩十大博彩网站-维基百科✔️网址:ad11.net✔️可靠的网络博彩十大博彩网站-维基百科✔️网址:ad11.net✔️" class="hidden">蒹葭汉化组游迅网分站点</a> <a href="https://acrmc.com/search/最靠谱的网赌软件-维基百科✔️网址:la66.net✔️" class="hidden">火车票网旅游资讯中心</a> <a href="https://m.facebook.com/public/✔️网址:la66.net✔️365体育投注-365体育投注官方网站" class="hidden">PingWest</a> <a href="https://m.facebook.com/public/赌博平台马来西亚-赌博平台马来西亚官方网站✔️官方网址:la777.net✔️" class="hidden">齐鲁晚报网教育频道</a> <a href="https://m.facebook.com/public/十大博彩app推荐>>✔️网址:la66.net✔️手输<<十大博彩app推荐>>✔️网址:la66.net✔️手输<<" class="hidden">WPYOU</a> <a href="https://es-la.facebook.com/public/体育博彩app✔️最新网址:ad22.net✔️" class="hidden">精英乒乓器材网</a> <a href="https://tw.dictionary.yahoo.com/dictionary?p=靠谱的网赌网站(中国)有限公司✔️最新网址:ad22.net✔️" class="hidden">衡阳本地宝</a> <a href="https://es-la.facebook.com/public/✔️最新网址:ad22.net✔️(关于加拿大28网址的简介)加拿大28网址" class="hidden">T9社区</a> <a href="/sitemap.xml" class="hidden">站点地图</a> <a href="/sttcs/hot-news/apneumatosis.html" class="hidden">四川中医药高等专科学校</a> <a href="/html/pslyag-154466" class="hidden">魅族社区</a> <a href="/CN/dkuuan-900368.html" class="hidden">焦作大学</a> <a href="/CN/jhhgmz-205989.html" class="hidden">丁香社区</a> </body></html>