<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: () =&gt; void) =&gt; void;\r\n  playVideo: () =&gt; void;\r\n  pauseVideo: () =&gt; void;\r\n  mute: () =&gt; void;\r\n  seekTo: (number: number, b: boolean) =&gt; void;\r\n  unMute: () =&gt; 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: () =&gt; void;\r\n  pause: () =&gt; void;\r\n};\r\n\r\ntype VideoActions = {\r\n  [key: string]: () =&gt; 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(() =&gt; {\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', () =&gt; {\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', () =&gt; {\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) =&gt; {\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) =&gt; {\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', () =&gt; {\r\n        this.repeatVideo();\r\n      });\r\n    }\r\n\r\n    window.addEventListener('resize', () =&gt; {\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 &amp;&amp; activeBlocks.length) {\r\n        const heights = [...(activeBlocks as NodeList)].map(el =&gt; (el as HTMLElement).offsetHeight);\r\n        quoteBlock.style.blockSize = `${heights.reduce((a, b) =&gt; a + b)}px`;\r\n      }\r\n    }\r\n\r\n    if (resetStyle &amp;&amp; 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) =&gt; {\r\n        quote.removeAttribute('data-active');\r\n        quote.removeAttribute('style');\r\n\r\n        if (index &lt;= 1 &amp;&amp; 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: () =&gt; {\r\n        this.initYoutubeVideo();\r\n      },\r\n      vimeo: () =&gt; {\r\n        this.initVimeoVideo();\r\n      },\r\n      default: () =&gt; {\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) =&gt; {\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 &lt;= 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 &amp;&amp; this.timeline) {\r\n      this.captions.forEach((caption, index) =&gt; {\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: () =&gt; {\r\n                if (index &lt;= 1) {\r\n                  this.setQuoteBlockHeight(true);\r\n                } else {\r\n                  this.setQuoteBlockHeight();\r\n                }\r\n              },\r\n              onComplete: () =&gt; {\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: () =&gt; {\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 =&gt; {\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: () =&gt; {\r\n            this.videoReady = true;\r\n          },\r\n          onStateChange: (event: { data: number }) =&gt; {\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: () =&gt; {\r\n        if ((this.player as YouTubePlayer).playVideo) {\r\n          (this.player as YouTubePlayer)?.playVideo();\r\n        }\r\n      },\r\n      vimeo: () =&gt; {\r\n        (this.player as Player)?.play();\r\n      },\r\n      default: () =&gt; {\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: () =&gt; {\r\n        if ((this.player as YouTubePlayer).pauseVideo) {\r\n          (this.player as YouTubePlayer).pauseVideo();\r\n        }\r\n      },\r\n      vimeo: () =&gt; {\r\n        (this.player as Player)?.pause();\r\n      },\r\n      default: () =&gt; {\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: () =&gt; {\r\n        if ((this.player as YouTubePlayer).mute) {\r\n          (this.player as YouTubePlayer)?.mute();\r\n        }\r\n      },\r\n      vimeo: () =&gt; {\r\n        (this.player as Player)?.setVolume(0);\r\n      },\r\n      default: () =&gt; {\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: () =&gt; {\r\n        if ((this.player as YouTubePlayer).unMute) {\r\n          (this.player as YouTubePlayer)?.unMute();\r\n        }\r\n      },\r\n      vimeo: () =&gt; {\r\n        (this.player as Player)?.setVolume(1);\r\n      },\r\n      default: () =&gt; {\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: () =&gt; {\r\n        if ((this.player as YouTubePlayer).seekTo) {\r\n          (this.player as YouTubePlayer)?.seekTo(0, true);\r\n        }\r\n      },\r\n      vimeo: () =&gt; {\r\n        (this.player as Player)?.setCurrentTime(0);\r\n      },\r\n      default: () =&gt; {\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.asungroup.com"  class="hidden">Sun-City-website-hr@asungroup.com</a>
<a href="http://www.madeintlh.com"  class="hidden">新葡新京</a>
<a href="http://www.sydotnet.net"  class="hidden">Football-platform-info@sydotnet.net</a>
<a href="http://uvunkk.hrbdiankong.com" class="hidden">青岛特锐德电气股份有限公司</a>
<a href="http://www.juxiangart.com"  class="hidden">澳门威尼斯</a>
<a href="http://www.khobuon.net"  class="hidden">太阳城集团</a>
<a href="http://onspaz.szyaosheng.net" class="hidden">喝小酒的网摘</a>
<a href="http://www.mblayst.com"  class="hidden">买球平台</a>
<a href="http://www.thithithainguyen.net"  class="hidden">bbin-careers@thithithainguyen.net</a>
<a href="http://pjfmfo.hljrhmy.com" class="hidden">怀化天气预报</a>
<a href="http://kacwwv.davidegalliani.com" class="hidden">360奇胜效果联盟</a>
<a href="http://www.pf168shop.com"  class="hidden">沙巴在线平台</a>
<a href="http://www.berxwedan.net"  class="hidden">The-Crown-Casino-website-help@berxwedan.net</a>
<a href="http://www.ndkllx.com"  class="hidden">皇冠足球</a>
<a href="http://www.vko29.com"  class="hidden">365体育投注</a>
<a href="http://web-sitemap.vitosdelinh.com" class="hidden">易搜软件园</a>
<a href="http://www.futuretac.net"  class="hidden">Wynn-Sports-service@futuretac.net</a>
<a href="http://ufrmvx.zhuzhoubtb.com" class="hidden">阿里巴巴校园招聘</a>
<a href="http://web-sitemap.e-keicho.com" class="hidden">南方网茂名新闻</a>
<a href="http://www.at-funeral.com"  class="hidden">欧洲杯买球</a>

<a href="https://es-la.facebook.com/public/十大在线博彩正规赌博网站(中国)有限公司✔️网址:la66.net✔️十大在线博彩正规赌博网站(中国)有限公司✔️网址:la66.net✔️.qdx" class="hidden">中国兰州网兰州频道</a>
<a href="https://tw.dictionary.yahoo.com/dictionary?p=网上赌博推荐十大赌博软件(中国)有限公司✔️网址:la666.net✔️" class="hidden">ee99养生网</a>
<a href="https://tw.dictionary.yahoo.com/dictionary?p=✔️官方网址:la777.net✔️kok娱乐平台注册入口平台介绍✔️官方网址:la777.net✔️kok娱乐平台注册入口平台介绍.eez" class="hidden">南阳违章查询网</a>
<a href="https://stock.adobe.com/search?k=✔️官方网址:la777.net✔️皇冠hg6686(中国)有限公司" class="hidden">乔氏台球桌</a>
<a href="https://es-la.facebook.com/public/科普一下美高梅线上官网的百科✔️网址:ad11.net✔️" class="hidden">丰泽股份</a>
<a href="https://acrmc.com/search/澳门老百汇app平台介绍✔️网址:la666.net✔️.nts" class="hidden">广联达软件股份有限公司</a>
<a href="https://stock.adobe.com/search/images?k=靠谱博彩app✔️最新网址:la55.net✔️.eut" class="hidden">钛度科技</a>
<a href="https://stock.adobe.com/search?k=亚洲体育博彩推荐网赌网站(中国)有限公司✔️网址:la66.net✔️.bmi" class="hidden">闪修侠</a>
<a href="https://tw.dictionary.yahoo.com/dictionary?p=188bet中文-维基百科✔️网址:ad11.net✔️" class="hidden">安游在线魔兽世界官网合作专区</a>
<a href="https://stock.adobe.com/search/images?k=✔️最新网址:ad22.net✔️(关于靠谱网赌信誉网址大全的简介)靠谱网赌信誉网址大全.akr" class="hidden">58同城唐山分类信息网</a>

<a href="/cn/pztcsf-515650.html" class="hidden">奥华</a>
<a href="/sitemap.xml" class="hidden">站点地图</a>
<a href="/sttcs/hot-news/tendence.html" class="hidden">4399神将三国官网</a>


</body></html>