OwlCyberSecurity - MANAGER
Edit File: p-100fe3ec.entry.js.map
{"version":3,"names":["prestoActionBarCss","PrestoActionBarStyle0","PrestoActionBar","componentWillLoad","this","player","on","setEnded","e","setCurrentTime","ended","currentTime","_a","detail","plyr","duration","_b","disconnectedCallback","off","render","h","key","config","direction","youtube","prestoActionBarControllerCss","PrestoActionBarControllerStyle0","handleDuration","handleTime","handleEnded","val","percentage_start","show","handlePercentagePassed","percentagePassed","checkTime","window","wp","blocks","timePassed","current","showAfter","handleButtonCountChange","newVal","oldVal","button_count","youtubeRenderKey","enabled","youtubeButton","button_type","channelId","channel","_c","showCount","_d","customButton","type","size","href","button_link","url","target","_e","opensInNewTab","style","Object","assign","_f","button_radius","_g","button_color","_h","_j","button_text_color","_k","_l","button_text","handleCtaStateChange","actionBarStateChange","emit","open","background_color","text","slot","prestoAudioCss","PrestoAudioStyle0","PrestoAudio","renderPosterImage","poster","class","src","hasPosterArea","preset","renderMobilePoster","renderLargePlay","mediaTitle","className","onClick","playing","playVideo","pauseVideo","width","height","viewBox","fill","xmlns","d","x","componentDidLoad","ro","ResizeObserver","entries","forEach","entry","contentRect","observe","el","ref","lightOrDark","part","getRef","autoplay","preload","audioAttributes","tracks","length","map","track","kind","label","srclang","srcLang","PrestoBunny","thumbnail","playsinline","videoAttributes","prestoBusinessSkinCss","PrestoBusinessSkinStyle0","PrestoBusinessSkin","Host","prestoCtaOverlayCss","PrestoCtaOverlayStyle0","PrestoCTAOverlay","cta","i18n","provider","prestoCtaOverlayControllerCss","PrestoCtaOverlayControllerStyle0","PrestoCtaOverlayController","percentage","skipped","handleEnabled","skip","rewatch","restartVideo","ctaStateChange","background_opacity","headline","bottom_text","show_button","buttonLink","allowSkip","_m","show_skip","allowRewatch","_o","show_rewatch","_p","onSkip","onRewatch","prestoDynamicOverlayUiCss","PrestoDynamicOverlayUiStyle0","PrestoDynamicOverlayUi","closestElement","selector","document","closest","getRootNode","host","fitText","maxFontSize","minFontSize","container","Tag","position","prestoDynamicOverlaysCss","PrestoDynamicOverlaysStyle0","PrestoDynamicOverlays","watermarkRef","left","right","refs","checkValidity","overlays","watermark","offsetParent","topLeft","topRight","reloadComponent","keys","overlay","component","checkComponent","shouldShowWatermark","callback","shadowRoot","querySelector","content","assignedNodes","parentElement","innerHTML","getComputedStyle","parseInt","fontSize","color","parseColor","shouldShowOverlay","timeToSeconds","startTime","endTime","renderOverlay","visible","id","link","backgroundColor","opacity","toString","time","Math","floor","prestoEmailOverlayCss","PrestoEmailOverlayStyle0","PrestoEmailOverlay","videoId","presetId","emailCollection","email_collection","prestoEmailOverlayControllerCss","PrestoEmailOverlayControllerStyle0","PrestoEmailOverlayController","setStorage","status","localStorage","setItem","JSON","stringify","getStorage","getItem","handleTimeCheck","handleShowChange","getNonce","fetch","prestoPlayer","ajaxurl","submit","loading","error","response","data","nonce","json","method","body","URLSearchParams","action","preset_id","video_id","success","handleEmailStateChange","emailStateChange","bottomText","allow_skip","buttonText","isLoading","errorMessage","onSubmitForm","prestoModernSkinCss","PrestoModernSkinStyle0","PrestoModernSkin","prestoMutedOverlayCss","PrestoMutedOverlayStyle0","PrestoMutedOverlay","mutedPreview","mutedOverlay","focalPoint","top","y","transform","PrestoSearchBar","onSearch","value","removeOldMarkers","markers","searchResult","searchVtt","points","setMarkers","onPreviousNav","prevLocation","currentMarkerLocation","onFocusChange","focus","hideControls","auto_hide","onNextNav","nextLocation","media","textTracks","presets","placeholder","search","hasNavigation","prestoStackedSkinCss","PrestoStackedSkinStyle0","PrestoStackedSkin","prestoVimeoCss","PrestoVimeoStyle0","PrestoVimeo","getId","regExp","parseUrl","exec","parseHash","regex","found","match","groups","hash","isAndroidWebView","allowFullScreen","allowTransparency","allow","prestoYoutubeCss","PrestoYoutubeStyle0","PrestoYoutube","handlePlayerChange","fixes","setPoster","once","code","blockAttributes","muted","loadPlayer","lazyLoad","reloadPlayer","componentDidRender","reload","setWebView","standalone","navigator","userAgent","toLowerCase","safari","test","ios","isWebView","includes","loadImage","minWidth","Promise","resolve","reject","image","Image","handler","onload","onerror","naturalWidth","posterSrc","s","catch","then","isIOS","allowtransparency"],"sources":["src/components/core/features/presto-action-bar/component/presto-action-bar.scss?tag=presto-action-bar&encapsulation=shadow","src/components/core/features/presto-action-bar/component/presto-action-bar.tsx","src/components/core/features/presto-action-bar/controller/presto-action-bar-controller.scss?tag=presto-action-bar-controller&encapsulation=shadow","src/components/core/features/presto-action-bar/controller/presto-action-bar-controller.tsx","src/components/core/providers/presto-audio/presto-audio.scss?tag=presto-audio","src/components/core/providers/presto-audio/presto-audio.tsx","src/components/core/providers/presto-bunny/presto-bunny.tsx","src/components/ui/skins/presto-business-skin/presto-business-skin.scss?tag=presto-business-skin","src/components/ui/skins/presto-business-skin/presto-business-skin.tsx","src/components/core/features/presto-cta-overlay/component/presto-cta-overlay.css?tag=presto-cta-overlay","src/components/core/features/presto-cta-overlay/component/presto-cta-overlay.tsx","src/components/core/features/presto-cta-overlay/controller/presto-cta-overlay-controller.css?tag=presto-cta-overlay-controller","src/components/core/features/presto-cta-overlay/controller/presto-cta-overlay-controller.tsx","src/components/core/features/presto-dynamic-overlays/ui/presto-dynamic-overlay-ui.scss?tag=presto-dynamic-overlay-ui&encapsulation=shadow","src/components/core/features/presto-dynamic-overlays/ui/presto-dynamic-overlay-ui.tsx","src/components/core/features/presto-dynamic-overlays/component/presto-dynamic-overlays.scss?tag=presto-dynamic-overlays&encapsulation=shadow","src/components/core/features/presto-dynamic-overlays/component/presto-dynamic-overlays.tsx","src/components/core/features/presto-email-overlay/component/presto-email-overlay.css?tag=presto-email-overlay","src/components/core/features/presto-email-overlay/component/presto-email-overlay.tsx","src/components/core/features/presto-email-overlay/controller/presto-email-overlay-controller.css?tag=presto-email-overlay-controller","src/components/core/features/presto-email-overlay/controller/presto-email-overlay-controller.tsx","src/components/ui/skins/presto-modern-skin/presto-modern-skin.scss?tag=presto-modern-skin","src/components/ui/skins/presto-modern-skin/presto-modern-skin.tsx","src/components/core/features/presto-muted-overlay/presto-muted-overlay.css?tag=presto-muted-overlay","src/components/core/features/presto-muted-overlay/presto-muted-overlay.tsx","src/components/core/features/presto-search-bar/component/presto-search-bar.tsx","src/components/ui/skins/presto-stacked-skin/presto-stacked-skin.scss?tag=presto-stacked-skin","src/components/ui/skins/presto-stacked-skin/presto-stacked-skin.tsx","src/components/core/providers/presto-vimeo/presto-vimeo.css?tag=presto-vimeo","src/components/core/providers/presto-vimeo/presto-vimeo.tsx","src/components/core/providers/presto-youtube/presto-youtube.css?tag=presto-youtube","src/components/core/providers/presto-youtube/presto-youtube.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Element, h, Prop, State } from '@stencil/core';\nimport { ActionBarConfig, YoutubeConfig } from '../../../../../interfaces';\n\n@Component({\n tag: 'presto-action-bar',\n styleUrl: 'presto-action-bar.scss',\n shadow: true,\n})\nexport class PrestoActionBar {\n @Element() el: HTMLElement;\n\n @Prop() player: any;\n @Prop() config: ActionBarConfig;\n @Prop() direction?: 'rtl';\n @Prop() youtube?: YoutubeConfig;\n\n @State() currentTime: number;\n @State() duration: number;\n @State() ended: boolean;\n\n componentWillLoad() {\n if (!this.player) return;\n this.player.on('ended', () => this.setEnded());\n this.player.on('timeupdate', e => this.setCurrentTime(e));\n }\n\n setEnded() {\n this.ended = true;\n }\n\n setCurrentTime(e) {\n this.currentTime = e?.detail?.plyr.currentTime;\n this.duration = e?.detail?.plyr.duration;\n }\n\n /**\n * Remove listeners if destroyed\n */\n disconnectedCallback() {\n if (!this.player) return;\n this.player.off('ended', this.setEnded);\n this.player.off('timeupdate', this.setCurrentTime);\n }\n\n render() {\n return (\n <presto-action-bar-controller\n ended={this.ended}\n config={this.config}\n currentTime={this.currentTime}\n duration={this.duration}\n direction={this.direction}\n youtube={this.youtube}\n ></presto-action-bar-controller>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\nimport { ActionBarConfig, YoutubeConfig } from '../../../../../interfaces';\nimport { timePassed } from '../../../../../util';\n\n@Component({\n tag: 'presto-action-bar-controller',\n styleUrl: 'presto-action-bar-controller.scss',\n shadow: true,\n})\nexport class PrestoActionBar {\n @Element() el: HTMLElement;\n\n @Prop() ended: boolean;\n @Prop() config: ActionBarConfig;\n @Prop({ reflect: true }) currentTime: number;\n @Prop({ reflect: true }) duration: number;\n @Prop() direction?: 'rtl';\n @Prop() youtube?: YoutubeConfig;\n\n @State() show: boolean = false;\n @State() youtubeRenderKey: number = 1;\n @State() percentagePassed: number = 0;\n @Event() actionBarStateChange: EventEmitter<boolean>;\n\n componentWillLoad() {\n this.handleDuration();\n }\n\n /**\n * Wait for duration to start before checking time\n * @returns void\n */\n @Watch('duration')\n handleDuration() {\n this.handleTime();\n }\n\n /**\n * Handle with the player is ended\n * @param val\n * @returns\n */\n @Watch('ended')\n handleEnded(val) {\n if (val) {\n if (this?.config?.percentage_start !== 100) return;\n this.show = true;\n }\n }\n\n @Watch('currentTime')\n @Watch('duration')\n handlePercentagePassed() {\n this.percentagePassed = (this.currentTime / this.duration) * 100;\n }\n\n /**\n * When current time changes, check to see if we should\n * enable the overlay\n * @returns void\n */\n @Watch('currentTime')\n handleTime() {\n this.checkTime();\n }\n\n /**\n * Set enabled/disabled based on time that has passed\n */\n checkTime() {\n if (window?.wp?.blocks) {\n this.show = true;\n return;\n }\n // if ( this.config?.percentage_start === 0) {\n // this.show = true;\n // } else {\n\n // console.log(this.currentTime, this.duration, this.config?.percentage_start);\n this.show = timePassed({\n current: this.currentTime,\n duration: this.duration,\n showAfter: this.config?.percentage_start,\n });\n }\n\n @Watch('config')\n handleButtonCountChange(newVal, oldVal) {\n if (newVal?.button_count !== oldVal?.button_count) {\n this.youtubeRenderKey++;\n }\n if (newVal?.enabled) {\n this.handleDuration();\n }\n }\n\n youtubeButton() {\n if (this.config?.button_type !== 'youtube' || !this.youtube?.channelId) {\n return;\n }\n\n return <presto-youtube-subscribe-button key={this.youtubeRenderKey} channel={this.youtube?.channelId} showCount={this.config?.button_count}></presto-youtube-subscribe-button>;\n }\n\n customButton() {\n if (this.config?.button_type !== 'custom') {\n return;\n }\n\n return (\n <presto-player-button\n type=\"primary\"\n size=\"small\"\n href={this.config?.button_link?.url}\n target={this.config?.button_link?.opensInNewTab ? '_blank' : '_self'}\n style={{\n '--presto-player-button-border-radius': `${this.config?.button_radius}px`,\n ...(this.config?.button_color\n ? {\n '--presto-player-button-color': `${this.config?.button_color}`,\n }\n : {}),\n ...(this.config?.button_text_color\n ? {\n '--presto-player-button-text': `${this.config?.button_text_color}`,\n }\n : {}),\n }}\n >\n {this.config?.button_text}\n </presto-player-button>\n );\n }\n @Watch('show')\n handleCtaStateChange(val) {\n this.actionBarStateChange.emit(val);\n }\n render() {\n return (\n <presto-action-bar-ui\n open={this.show}\n style={{\n '--presto-action-bar-background': this.config?.background_color || '#1d1d1d',\n }}\n >\n {this.config?.text}\n\n <div slot=\"button\">\n {this.youtubeButton()}\n {this.customButton()}\n </div>\n </presto-action-bar-ui>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.presto-audio {\n $pre: &;\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Plyr tweaks\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__wrapper {\n border-radius: var(--presto-player-border-radius, 0px);\n .plyr--audio .plyr__controls {\n padding: 0;\n }\n\n .plyr--audio .plyr__control.plyr__tab-focus,\n .plyr--audio .plyr__control:hover,\n .plyr--audio .plyr__control[aria-expanded='true'] {\n background: var(--plyr-audio-controls-background);\n color: var(--plyr-audio-control-color);\n }\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Wrapper\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__wrapper {\n display: flex;\n background: var(--plyr-audio-controls-background, #fff);\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Controls Container\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__controls-wrapper {\n padding: calc(var(--plyr-control-spacing, 10px) * 2);\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n min-width: 0;\n\n // handle style tweaks for poster.\n .has-poster & {\n padding: calc(var(--plyr-control-spacing, 10px) * 3);\n }\n // handle style tweaks for play-large with no poster.\n .has-play-large:not(.has-poster) & {\n padding-left: 0;\n }\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Title\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__title,\n &__mobile-title {\n font-size: 18px;\n font-weight: 500;\n line-height: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n color: var(--plyr-audio-control-color);\n }\n\n &__title {\n margin: calc(var(--plyr-control-spacing, 10px) / 2);\n margin-top: 0;\n text-wrap: wrap;\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Poster\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__poster-wrapper {\n position: relative;\n width: 100px;\n min-height: 100px;\n flex: 0 0 100px;\n\n img {\n border-radius: var(--presto-player-border-radius, 0px) 0 0 var(--presto-player-border-radius, 0px);\n width: 100%;\n height: 100%;\n object-fit: cover;\n aspect-ratio: 1;\n display: block;\n }\n\n // handle style tweaks for poster.\n .has-poster & {\n width: 140px;\n height: 140px;\n flex: 0 0 140px;\n }\n }\n\n &__poster {\n width: 100%;\n height: 100%;\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Play Large Button\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__large-play-button {\n user-select: none;\n cursor: pointer;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 50px;\n height: 50px;\n color: white;\n border-radius: 100%;\n background: var(--plyr-audio-control-color);\n color: var(--plyr-audio-controls-background);\n\n &.is-relative {\n position: relative;\n top: auto;\n left: auto;\n transform: none;\n }\n\n .has-light-background.has-poster & {\n background: var(--plyr-audio-controls-background);\n color: var(--plyr-audio-control-color);\n }\n .has-dark-background.has-poster & {\n background: var(--plyr-audio-control-color);\n color: var(--plyr-audio-controls-background);\n }\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Play Large Icon\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__icon-play,\n &__icon-pause {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n fill: currentColor;\n display: block;\n transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;\n margin: 0 auto;\n text-align: center;\n }\n &__icon-pause {\n opacity: 0;\n visibility: hidden;\n\n #{$pre}__wrapper.is-playing & {\n opacity: 1;\n visibility: visible;\n }\n }\n &__icon-play {\n margin-left: 2px; // optically center\n opacity: 1;\n visibility: visible;\n #{$pre}__wrapper.is-playing & {\n opacity: 0;\n visibility: hidden;\n }\n }\n\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n // Mobile sizing\n ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n &__poster-wrapper-mobile {\n display: none;\n min-width: 0;\n\n .presto-audio__large-play-button {\n flex: 0 0 50px;\n }\n }\n\n &__wrapper.breakpoint-small {\n flex-direction: column;\n\n #{$pre}__controls-wrapper {\n padding: calc(var(--plyr-control-spacing, 10px) * 2);\n }\n\n &.has-poster #{$pre}__title {\n text-align: center;\n margin: calc(var(--plyr-control-spacing, 10px) * 1.5);\n }\n\n &.has-poster #{$pre}__poster-wrapper {\n margin: 30px auto auto auto;\n overflow: hidden;\n border-radius: var(--presto-player-border-radius, 0px);\n width: 225px;\n height: 225px;\n flex: 0 0 225px;\n }\n\n &.has-play-large:not(.has-poster) #{$pre}__poster-wrapper,\n &.has-play-large:not(.has-poster) #{$pre}__title {\n display: none;\n }\n\n &.has-play-large:not(.has-poster) #{$pre}__poster-wrapper-mobile {\n display: flex;\n align-items: center;\n gap: 1em;\n margin-bottom: calc(var(--plyr-control-spacing, 10px) * -1);\n padding: calc(var(--plyr-control-spacing, 10px) * 2) calc(var(--plyr-control-spacing, 10px) * 2) 0 calc(var(--plyr-control-spacing, 10px) * 2);\n }\n }\n}\n\n// Stacked View\n.skin-stacked.presto-sticky-audio {\n .presto-audio__wrapper {\n height: 115px;\n }\n .has-poster {\n .presto-audio__controls-wrapper {\n padding: 20px;\n }\n .presto-audio__poster-wrapper {\n width: 115px;\n height: 115px;\n flex: 0 0 115px;\n }\n }\n}\n\n// skin-default\n.presto-sticky-audio {\n .presto-audio__wrapper {\n height: 100px;\n }\n .has-poster {\n .presto-audio__controls-wrapper {\n padding: 20px;\n }\n .presto-audio__poster-wrapper {\n width: 100px;\n height: 100px;\n flex: 0 0 100px;\n }\n }\n}\n\n// Basic Viwe\n\n.action-bar-active {\n .presto-audio__wrapper {\n border-radius: var(--presto-player-border-radius) var(--presto-player-border-radius) 0px 0px;\n }\n}\n\n@media screen and (max-width: 782px) {\n .presto-sticky-audio {\n .presto-audio__poster-wrapper-mobile {\n display: flex;\n align-items: center;\n gap: 1em;\n margin-bottom: calc(var(--plyr-control-spacing, 10px) * -1);\n padding: calc(var(--plyr-control-spacing, 10px) * 2) calc(var(--plyr-control-spacing, 10px) * 2) 0 calc(var(--plyr-control-spacing, 10px) * 2);\n }\n .presto-audio__poster-wrapper,\n .presto-audio__title {\n display: none;\n }\n .presto-audio__wrapper {\n height: 140px;\n }\n .has-poster .presto-audio__controls-wrapper {\n padding: 0px;\n }\n .presto-audio__poster-wrapper-mobile {\n .presto-audio__large-play-button {\n flex: 0 0 40px;\n height: 40px;\n }\n }\n }\n}\n","import { Component, h, Event, EventEmitter, Prop, State } from '@stencil/core';\nimport { presetAttributes } from '../../../../interfaces';\nimport { lightOrDark } from '../../../../util';\n\n@Component({\n tag: 'presto-audio',\n styleUrl: 'presto-audio.scss',\n shadow: false,\n})\nexport class PrestoAudio {\n private el: HTMLDivElement;\n @Prop({ mutable: true }) getRef?: (elm?: HTMLAudioElement) => void;\n @Prop() autoplay: boolean;\n @Prop() src: string;\n @Prop() preload: string;\n @Prop() poster: string;\n @Prop() player: any;\n @Prop() preset: presetAttributes;\n @Prop() tracks: { label: string; src: string; srcLang: string }[];\n @Prop() provider: string;\n @Prop() mediaTitle: string;\n @Prop() audioAttributes: object;\n\n @Event() playVideo: EventEmitter<void>;\n @Event() pauseVideo: EventEmitter<true>;\n\n @State() width: number;\n\n renderPosterImage() {\n if (this.poster) {\n return (\n <div class=\"presto-audio__poster\">\n <img src={this.poster} />\n </div>\n );\n }\n return;\n }\n\n hasPosterArea() {\n return !!this.poster || !!this.preset?.['play-large'];\n }\n\n renderMobilePoster() {\n return (\n <div class=\"presto-audio__poster-wrapper-mobile\">\n {!!this.preset?.['play-large'] && this.renderLargePlay('presto-audio__large-play-button is-relative')}\n <div class=\"presto-audio__mobile-title\">{this.mediaTitle}</div>\n </div>\n );\n }\n\n renderLargePlay(className = 'presto-audio__large-play-button') {\n return (\n <div\n class={className}\n onClick={() => {\n if (!this.player.playing) {\n this.playVideo.emit();\n } else {\n this.pauseVideo.emit();\n }\n }}\n >\n <svg class=\"presto-audio__icon-play\" width=\"16\" height=\"18\" viewBox=\"0 0 16 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15.5588 9.00005L0.117662 17.915L0.117662 0.0850823L15.5588 9.00005Z\" />\n </svg>\n <svg class=\"presto-audio__icon-pause\" width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"5\" height=\"17\" />\n <rect x=\"12\" width=\"5\" height=\"17\" />\n </svg>\n </div>\n );\n }\n\n componentDidLoad() {\n // Only run if ResizeObserver is supported.\n if ('ResizeObserver' in window) {\n var ro = new ResizeObserver(entries => {\n entries.forEach(entry => (this.width = entry.contentRect.width));\n });\n ro.observe(this.el);\n }\n }\n\n render() {\n return (\n <div\n ref={el => (this.el = el as HTMLDivElement)}\n class={{\n 'presto-audio__wrapper': true,\n 'has-poster': !!this.poster,\n 'has-play-large': !!this.preset?.['play-large'],\n 'is-playing': this.player?.playing,\n 'has-light-background': lightOrDark(this.preset?.background_color) === 'light',\n 'has-dark-background': lightOrDark(this.preset?.background_color) === 'dark',\n 'breakpoint-small': this.width < 520,\n 'skin-stacked': this.width < 520,\n 'breakpoint-large': this.width >= 520,\n }}\n >\n {this.hasPosterArea() && (\n <div class=\"presto-audio__poster-wrapper\">\n {!!this.preset?.['play-large'] && <div class=\"presto-audio__large-play-wrapper\">{this.renderLargePlay()}</div>}\n {this.renderPosterImage()}\n </div>\n )}\n\n {this.hasPosterArea() && this.renderMobilePoster()}\n\n <div class=\"presto-audio__controls-wrapper\">\n <div class=\"presto-audio__title\">{this.mediaTitle}</div>\n <audio part=\"audio-player\" ref={this.getRef} autoplay={this.autoplay} preload={this.preload} data-poster={this.poster} {...this.audioAttributes}>\n <source src={this.src} />\n {!!this.tracks &&\n !!this.tracks.length &&\n this.tracks.map(track => <track kind=\"captions\" label={track?.label ? track.label : 'Captions'} src={track?.src} srclang={track?.srcLang ? track?.srcLang : 'en'} />)}\n </audio>\n </div>\n </div>\n );\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'presto-bunny',\n shadow: false,\n})\nexport class PrestoBunny {\n @Prop({ mutable: true }) getRef?: (elm?: HTMLVideoElement) => void;\n @Prop() autoplay: boolean;\n @Prop() src: string;\n @Prop() preload: string;\n @Prop({ mutable: true }) poster: string;\n @Prop() player: any;\n @Prop() tracks: { label: string; src: string; srcLang: string }[];\n @Prop() playsinline: boolean;\n @Prop() provider: string;\n @Prop() thumbnail: string;\n @Prop() previewUrl: string;\n @Prop() videoAttributes: object;\n\n componentWillLoad() {\n this.poster = this.poster || this.thumbnail; // maybe add bunny thumbnail\n }\n\n render() {\n return (\n <presto-video\n getRef={this.getRef}\n player={this.player}\n autoplay={this.autoplay}\n preload={this.preload}\n poster={this.poster}\n playsinline={this.playsinline}\n src={this.src}\n tracks={this.tracks}\n videoAttributes={this.videoAttributes}\n ></presto-video>\n );\n }\n}\n",".skin-business {\n &.presto-player__wrapper {\n // when small play button is active but rewind is inactive\n &.rewind-inactive {\n .plyr__controls .plyr__controls__item:nth-child(2) {\n &::before {\n border-radius: var(--plyr-control-radius, 3px) 0px 0px var(--plyr-control-radius, 3px);\n }\n }\n }\n\n // full captions\n &.caption-style-full .plyr:not(.plyr--hide-controls):not(.is-muted-overlay) .plyr__controls:not(:empty) ~ .plyr__captions {\n transform: translateY(calc(var(--plyr-control-spacing, 16px) * -4));\n }\n\n .presto-player-progress__marker {\n border-radius: 0;\n width: 15px;\n height: 15px;\n border-width: 1px;\n }\n\n // hover effect for all button\n .plyr__control[data-plyr] {\n &:hover,\n &:focus,\n &:active {\n &:not([role*='menuitem']):not(.plyr__control--back) {\n background-color: transparent;\n color: var(--plyr-color-main);\n\n &[data-plyr='play'] {\n background-color: var(--plyr-color-main);\n color: white;\n }\n }\n }\n }\n\n // for large button\n .plyr__control--overlaid[data-plyr='play'] {\n border-radius: 4px;\n background: #000000;\n opacity: 75%;\n &:hover {\n background-color: var(--plyr-color-main);\n color: white;\n opacity: 100%;\n }\n }\n\n // for soun range cursor\n .plyr__volume input[type='range'] {\n cursor: pointer;\n }\n\n // fast forward\n .plyr__controls .plyr__controls__item[data-plyr='fast-forward'] {\n border-radius: 0px;\n }\n\n // range contol for video progression\n .plyr__progress {\n margin: 0px 20px 0 5px;\n\n input[type='range'] {\n height: 32px;\n border-radius: 0px;\n cursor: pointer;\n }\n }\n\n .plyr__controls .plyr__controls__item:not(.presto-player-progress__marker):first-child {\n &::before {\n border-radius: var(--plyr-control-radius, 3px) 0px 0px var(--plyr-control-radius, 3px);\n }\n }\n .plyr__controls .plyr__controls__item:not(.presto-player-progress__marker):last-child {\n &::before {\n border-radius: 0px var(--plyr-control-radius, 3px) var(--plyr-control-radius, 3px) 0px;\n }\n }\n\n // play button\n .plyr__controls .plyr__controls__item.plyr__control[data-plyr='play'] {\n order: -1;\n margin-right: 5px;\n padding: 11px 20px 11px 20px;\n top: -4px;\n &::before {\n border-radius: 4px;\n }\n }\n\n // rewind control\n .plyr__controls .plyr__controls__item[data-plyr='rewind'] {\n &::before {\n border-radius: var(--plyr-control-radius, 3px) 0px 0px var(--plyr-control-radius, 3px);\n }\n }\n\n .plyr__controls .plyr__controls__item:not([data-plyr='play']) {\n margin: 0;\n }\n\n //make fullscreen svg bigger\n .plyr__controls .plyr__controls__item[data-plyr='fullscreen'] {\n padding: 4px;\n svg {\n height: 24px;\n width: 24px;\n }\n }\n\n .plyr__controls .plyr__controls__item:not(.presto-player-progress__marker) {\n position: relative;\n // time\n &.plyr__time {\n height: 32px;\n padding-top: 4.5px;\n }\n\n &::before {\n content: '';\n background: #000000;\n position: absolute;\n top: 0px;\n left: 0;\n right: 0;\n bottom: 0px;\n opacity: 0.76;\n z-index: -1;\n }\n }\n\n // make video prgression range outline\n .plyr--full-ui input[type='range']::-webkit-slider-runnable-track {\n box-shadow: none;\n color: var(--plyr-color-main);\n height: 9px;\n outline: 1px solid #878787a6;\n outline-offset: 2px;\n border-radius: 0px;\n }\n\n // make the range control invisible\n .plyr--full-ui input[type='range']::-webkit-slider-thumb {\n visibility: hidden;\n }\n\n // make buffer big\n .plyr__progress__buffer::-webkit-progress-value {\n position: relative;\n border-radius: 0px;\n height: 9px;\n top: -2px;\n }\n\n .plyr--full-ui input[type='range']::-webkit-slider-runnable-track {\n background-color: transparent;\n }\n\n @media screen and (max-width: 480px) {\n .plyr__controls .plyr__controls__item {\n &.plyr__time {\n padding: 1.5%;\n }\n }\n .plyr__controls .plyr__controls__item[data-plyr='play'] {\n padding: 8px;\n top: 0px;\n }\n //make fullscreen svg bigger\n .plyr__controls .plyr__controls__item[data-plyr='fullscreen'] {\n svg {\n width: 22px;\n }\n }\n }\n }\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'presto-business-skin',\n styleUrl: 'presto-business-skin.scss',\n shadow: false,\n})\nexport class PrestoBusinessSkin {\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, h, Prop, State } from '@stencil/core';\nimport { i18nConfig, presetAttributes } from '../../../../../interfaces';\n\n/**\n * This component is needed to prevent re-rendering of\n * main component with currentTime changes.\n */\n@Component({\n tag: 'presto-cta-overlay',\n styleUrl: 'presto-cta-overlay.css',\n shadow: false,\n})\nexport class PrestoCTAOverlay {\n @Prop() player: any;\n @Prop() direction?: 'rtl';\n @Prop() preset: presetAttributes;\n @Prop() i18n: i18nConfig;\n @Prop() provider: string;\n\n @State() currentTime: number;\n @State() duration: number;\n @State() ended: boolean;\n\n componentWillLoad() {\n if (!this.player) return;\n this.player.on('ended', () => this.setEnded());\n this.player.on('timeupdate', e => this.setCurrentTime(e));\n }\n\n setEnded() {\n this.ended = true;\n }\n\n setCurrentTime(e) {\n this.currentTime = e?.detail?.plyr.currentTime;\n this.duration = e?.detail?.plyr.duration;\n }\n\n /**\n * Remove listeners if destroyed\n */\n disconnectedCallback() {\n if (!this.player) return;\n this.player.off('ended', this.setEnded);\n this.player.off('timeupdate', this.setCurrentTime);\n }\n\n /**\n * Maybe render\n * @returns JSX\n */\n render() {\n return (\n <presto-cta-overlay-controller\n ended={this.ended}\n currentTime={this.currentTime}\n duration={this.duration}\n direction={this.direction}\n cta={this.preset?.cta}\n i18n={this.i18n}\n provider={this.provider}\n ></presto-cta-overlay-controller>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\nimport { i18nConfig, CTA } from '../../../../../interfaces';\nimport { timePassed } from '../../../../../util';\n\n@Component({\n tag: 'presto-cta-overlay-controller',\n styleUrl: 'presto-cta-overlay-controller.css',\n shadow: false,\n})\nexport class PrestoCtaOverlayController {\n @Prop() ended: boolean;\n @Prop({ reflect: true }) currentTime: number;\n @Prop({ reflect: true }) duration: number;\n @Prop() direction?: 'rtl';\n @Prop() cta?: CTA;\n @Prop() i18n: i18nConfig;\n @Prop() provider: string;\n\n @State() enabled: boolean;\n @State() show: boolean;\n @State() loading: boolean;\n @State() error: string;\n @State() skipped: boolean;\n @State() percentagePassed: number = 0;\n\n @Event() playVideo: EventEmitter<void>;\n @Event() pauseVideo: EventEmitter<boolean>;\n @Event() restartVideo: EventEmitter<void>;\n @Event() ctaStateChange: EventEmitter<boolean>;\n\n componentWillLoad() {\n this.handleDuration();\n }\n\n /**\n * Handle with the player is ended\n * @param val\n * @returns\n */\n @Watch('ended')\n handleEnded(val) {\n if (val) {\n if (this?.cta?.percentage !== 100) return;\n this.show = true;\n }\n }\n\n /**\n * Wait for duration to start before checking time\n * @returns void\n */\n @Watch('duration')\n handleDuration() {\n this.enabled = this.skipped ? false : this?.cta?.enabled;\n this.handleTime();\n }\n\n @Watch('currentTime')\n @Watch('duration')\n handlePercentagePassed() {\n this.percentagePassed = (this.currentTime / this.duration) * 100;\n }\n\n /**\n * Watch current time and check if we should\n * pause the video.\n */\n @Watch('currentTime')\n handleEnabled() {\n if (!this.show) return; // not showing.\n if (this.skipped) return; // already skipped.\n this.pauseVideo.emit(true); // pause if enabled.\n }\n\n /**\n * When current time changes, check to see if we should\n * enable the overlay\n * @returns void\n */\n @Watch('currentTime')\n handleTime() {\n if (!this.enabled) return; // not enabled.\n if (this.skipped) return; // skipped.\n if (this?.cta?.percentage === 100) return; // we'll catch this on ended event.\n this.checkTime();\n }\n\n /**\n * Set enabled/disabled based on time that has passed\n */\n checkTime() {\n this.show = timePassed({\n current: this.currentTime,\n duration: this.duration,\n showAfter: this?.cta?.percentage || 0,\n });\n }\n\n /**\n * Skip email collection\n */\n skip() {\n this.skipped = true;\n this.show = false;\n this.playVideo.emit();\n }\n\n /**\n * Handle rewatch click.\n */\n rewatch() {\n this.ended = false;\n this.show = false;\n this.restartVideo.emit();\n }\n\n /**\n * Maybe render\n * @returns JSX\n */\n\n @Watch('show')\n handleCtaStateChange(val) {\n this.ctaStateChange.emit(val);\n }\n render() {\n if (!this.show) {\n return;\n }\n\n return (\n <presto-cta-overlay-ui\n style={{\n '--presto-player-button-border-radius': `${this?.cta?.button_radius}px`,\n ...(this?.cta?.background_opacity ? { '--presto-player-cta-background-opacity': `${this?.cta?.background_opacity / 100}` } : {}),\n ...(this?.cta?.button_color\n ? {\n '--presto-player-button-color': `${this?.cta?.button_color}`,\n }\n : {}),\n ...(this?.cta?.button_text_color\n ? {\n '--presto-player-button-text': `${this?.cta?.button_text_color}`,\n }\n : {}),\n }}\n direction={this.direction}\n class=\"cta-overlay\"\n i18n={this.i18n}\n headline={this?.cta?.headline}\n bottom-text={this?.cta?.bottom_text}\n show-button={this?.cta?.show_button}\n buttonLink={this?.cta?.button_link}\n allowSkip={!this.ended && this?.cta?.show_skip}\n allowRewatch={this.ended && this?.cta?.show_rewatch}\n button-text={this?.cta?.button_text}\n onSkip={() => this.skip()}\n onRewatch={() => this.rewatch()}\n provider={this.provider}\n ></presto-cta-overlay-ui>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.overlay-text {\n text-decoration: none;\n display: inline-block;\n user-select: none;\n line-height: 1;\n opacity: var(--presto-dynamic-overlay-opacity, 1);\n font-size: var(--presto-dynamic-overlay-font-size, 18px);\n padding: var(--presto-dynamic-overlay-padding, 0.65em 0.85em);\n font-weight: var(--presto-dynamic-overlay-font-weight, 500);\n border-radius: var(--presto-dynamic-overlay-radius, 0.25em);\n background: var(--presto-dynamic-overlay-background, rgba(0, 0, 0, 0.8));\n color: var(--presto-dynamic-overlay-color, #fff);\n opacity: var(--presto-dynamic-overlay-opacity, 1);\n word-break: break-word;\n}\n\na.overlay-text {\n cursor: pointer;\n}\n","import { Component, Element, h, Prop } from '@stencil/core';\nimport fitText from '../../../../../library/fittext.js';\n\n@Component({\n tag: 'presto-dynamic-overlay-ui',\n styleUrl: 'presto-dynamic-overlay-ui.scss',\n shadow: true,\n})\nexport class PrestoDynamicOverlayUi {\n @Element() el: HTMLElement;\n\n private text: HTMLAnchorElement;\n\n /** When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`. */\n @Prop() href: string;\n\n /** Tells the browser where to open the link. Only used when `href` is set. */\n @Prop() target: '_blank' | '_parent' | '_self' | '_top';\n\n @Prop() position: 'top-left' | 'top-right' = 'top-right';\n\n closestElement(selector, el) {\n return (el && el != document && el != window && el.closest(selector)) || (el && this.closestElement(selector, el.getRootNode().host));\n }\n\n componentDidLoad() {\n let player = this.closestElement('presto-player', this.el) as HTMLPrestoPlayerElement;\n fitText(this.text, 3, {\n maxFontSize: 16,\n minFontSize: 10,\n container: player,\n });\n }\n\n render() {\n const Tag = this.href ? 'a' : ('span' as keyof JSX.IntrinsicElements);\n return (\n <Tag\n class={{\n 'overlay-text': true,\n 'overlay--top-left': this.position === 'top-left',\n 'overlay--top-right': this.position === 'top-right',\n }}\n href={this.href}\n target={this.target}\n part=\"overlay-text\"\n ref={el => (this.text = el as HTMLAnchorElement)}\n >\n <slot />\n </Tag>\n );\n }\n}\n",".top-left,\n.top-right {\n position: absolute;\n display: block;\n padding: 20px;\n max-width: 45%;\n z-index: 20;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n}\n\n.top-left {\n top: 0;\n left: 0;\n}\n\n.top-right {\n top: 0;\n right: 0;\n align-items: flex-end;\n}\n\npresto-dynamic-overlay-ui {\n overflow: hidden; /* Hide the element content, while height = 0 */\n height: 0;\n opacity: 0;\n transition: height 0ms 400ms, opacity 400ms 0ms;\n}\n\npresto-dynamic-overlay-ui.visible {\n margin-bottom: 10px;\n height: auto;\n opacity: 1;\n transition: height 0ms 0ms, opacity 500ms 0ms;\n}\n","import { Component, h, Prop, Element, State, Event, EventEmitter } from '@stencil/core';\nimport { DynamicOverlay, presetAttributes } from '../../../../../interfaces';\nimport { timeToSeconds, parseColor } from '../../../../../util';\n\n@Component({\n tag: 'presto-dynamic-overlays',\n styleUrl: 'presto-dynamic-overlays.scss',\n shadow: true,\n})\nexport class PrestoDynamicOverlays {\n private topLeft: HTMLDivElement;\n private topRight: HTMLDivElement;\n private container: HTMLDivElement;\n private watermarkRef: {\n left: HTMLPrestoDynamicOverlayUiElement;\n right: HTMLPrestoDynamicOverlayUiElement;\n } = {\n left: null,\n right: null,\n };\n\n @Element() el: HTMLPrestoDynamicOverlaysElement;\n\n @Prop() overlays: Array<DynamicOverlay>;\n @Prop() player: any;\n @Prop() preset: presetAttributes;\n @Prop() enabled: boolean;\n\n @State() currentTime: number;\n @State() destroy: boolean = false;\n\n @Event() reloadComponent: EventEmitter<void>;\n\n private refs: any = {};\n\n componentDidLoad() {\n if (!this.player) {\n return;\n }\n this.player.on('timeupdate', e => {\n this.currentTime = e.detail.plyr.currentTime;\n this.checkValidity(); // check overlays validity.\n });\n }\n\n /**\n * Check validity of the overlays.\n * Blow up if any funny business.\n */\n checkValidity() {\n // only if we are playing\n if (!this.player.playing) {\n return;\n }\n\n if (!this?.overlays?.length && !this.preset?.watermark?.enabled) {\n return;\n }\n\n // make sure container and other divs are not removed.\n if (!this.container?.offsetParent || !this.topLeft?.offsetParent || !this.topRight?.offsetParent) {\n this.reloadComponent.emit();\n }\n\n // check for funny business on overlays.\n Object.keys(this.refs || {}).forEach(key => {\n const { overlay, component } = this.refs[key];\n this.checkComponent(component, overlay.text, () => this.reloadComponent.emit());\n });\n\n // check for any funny business on watermark\n if (this.shouldShowWatermark('top-left') && this.watermarkRef.left) {\n this.checkComponent(this.watermarkRef.left, this.preset?.watermark?.text, () => this.reloadComponent.emit());\n }\n if (this.shouldShowWatermark('top-right') && this.watermarkRef.right) {\n this.checkComponent(this.watermarkRef.right, this.preset?.watermark?.text, () => this.reloadComponent.emit());\n }\n }\n\n /**\n * Check if the component is valid.\n * If invalid, run a callback.\n *\n * @param component\n * @param text\n * @returns\n */\n checkComponent(component, text, callback) {\n // hidden, it's invalid.\n if (!component?.offsetParent) {\n return callback();\n }\n\n // slot was removed.\n if (!component.shadowRoot.querySelector('slot')) {\n return callback();\n }\n\n // only if we're playing\n if (!!this.player && this.player.playing) {\n const content = component.shadowRoot.querySelector('slot').assignedNodes()[0];\n\n if (content) {\n // slot content changed.\n if (content.parentElement.innerHTML != text) {\n return callback();\n }\n\n // font-size changes.\n const style = getComputedStyle(content.parentElement.shadowRoot.querySelector('.overlay-text'));\n if (parseInt(style.fontSize, 10) < 10) {\n return callback();\n }\n\n // opacity changes\n const color = parseColor(style.color);\n if (color?.[3] !== '1') {\n return callback();\n }\n }\n }\n }\n\n /**\n * Show the overlay\n * @param overlay\n * @returns\n */\n shouldShowOverlay(overlay) {\n // need a time.\n if (typeof this.currentTime === 'undefined') {\n return;\n }\n\n // bail if current time is less than start time\n if (this.currentTime < timeToSeconds(overlay?.startTime)) {\n return false;\n }\n\n // bail if current time is more than end time\n if (this.currentTime > timeToSeconds(overlay?.endTime)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Render the watermark\n */\n renderOverlay(overlay) {\n return (\n <presto-dynamic-overlay-ui\n class={{\n visible: this.shouldShowOverlay(overlay),\n }}\n ref={el =>\n (this.refs[overlay.id] = {\n overlay,\n component: el as HTMLPrestoDynamicOverlayUiElement,\n })\n }\n key={overlay.id}\n position={overlay.position}\n href={overlay?.link?.url}\n target={overlay?.link?.opensInNewTab ? '_blank' : '_self'}\n innerHTML={this.shouldShowOverlay(overlay) ? overlay.text : ''}\n style={{\n '--presto-dynamic-overlay-color': overlay?.color || '#fff',\n '--presto-dynamic-overlay-background': overlay?.backgroundColor || '#333',\n '--presto-dynamic-overlay-opacity': overlay?.opacity ? (overlay.opacity / 100).toString() : '1',\n }}\n ></presto-dynamic-overlay-ui>\n );\n }\n\n /**\n * Should we show the watermark?\n */\n shouldShowWatermark(position) {\n if (!this.preset?.watermark?.enabled) return false;\n\n const watermark = this.preset?.watermark;\n\n // randomize\n if (watermark.position === 'randomize') {\n const time = Math.floor((this.player.currentTime || 0) / 10);\n\n // even or odd\n if (time % 2 == 0) {\n return position === 'top-left';\n } else {\n return position === 'top-right';\n }\n }\n\n // position is set.\n if (watermark.position === position) {\n return true;\n }\n\n // fallback.\n if (!watermark.position && 'top-right' === position) {\n return true;\n }\n\n return false;\n }\n\n render() {\n // bail if disabled.\n if (!this.enabled) {\n return;\n }\n\n // bail if no overlays or watermark\n if (!this?.overlays?.length && !this.preset?.watermark?.enabled) {\n return;\n }\n\n return (\n <div class=\"overlays\" ref={el => (this.container = el as HTMLDivElement)}>\n <div class=\"top-left\" ref={el => (this.topLeft = el as HTMLDivElement)}>\n {!!this.shouldShowWatermark('top-left') && (\n <presto-dynamic-overlay-ui\n ref={el => (this.watermarkRef.left = el as HTMLPrestoDynamicOverlayUiElement)}\n style={{\n '--presto-dynamic-overlay-color': this.preset.watermark?.color || '#fff',\n '--presto-dynamic-overlay-background': this.preset.watermark?.backgroundColor || '#333',\n '--presto-dynamic-overlay-opacity': this.preset.watermark?.opacity ? (this.preset.watermark.opacity / 100).toString() : '1',\n }}\n class=\"visible\"\n position={'top-left'}\n innerHTML={this.preset.watermark.text}\n ></presto-dynamic-overlay-ui>\n )}\n\n {!!this?.overlays?.length &&\n this.overlays.map(overlay => {\n if (overlay.position !== 'top-left') {\n return '';\n }\n return this.renderOverlay(overlay);\n })}\n </div>\n\n <div class=\"top-right\" ref={el => (this.topRight = el as HTMLDivElement)}>\n {!!this.shouldShowWatermark('top-right') && (\n <presto-dynamic-overlay-ui\n ref={el => (this.watermarkRef.right = el as HTMLPrestoDynamicOverlayUiElement)}\n style={{\n '--presto-dynamic-overlay-color': this.preset.watermark?.color || '#fff',\n '--presto-dynamic-overlay-background': this.preset.watermark?.backgroundColor || '#333',\n '--presto-dynamic-overlay-opacity': this.preset.watermark?.opacity ? (this.preset.watermark.opacity / 100).toString() : '1',\n }}\n class=\"visible\"\n position={'top-right'}\n innerHTML={this.preset.watermark.text}\n ></presto-dynamic-overlay-ui>\n )}\n\n {!!this?.overlays?.length &&\n this.overlays.map(overlay => {\n if (overlay.position !== 'top-right') {\n return '';\n }\n return this.renderOverlay(overlay);\n })}\n </div>\n </div>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, h, Prop, State } from '@stencil/core';\nimport { i18nConfig, presetAttributes } from '../../../../../interfaces';\n\n/**\n * This component is needed to prevent re-rendering of\n * main component with currentTime changes.\n */\n@Component({\n tag: 'presto-email-overlay',\n styleUrl: 'presto-email-overlay.css',\n shadow: false,\n})\nexport class PrestoEmailOverlay {\n @Prop() player: any;\n @Prop() direction?: 'rtl';\n @Prop() preset: presetAttributes;\n @Prop() videoId: number;\n @Prop() i18n: i18nConfig;\n @Prop() provider: string;\n\n @State() currentTime: number;\n @State() duration: number;\n @State() ended: boolean;\n\n componentWillLoad() {\n if (!this.player) return;\n this.player.on('ended', () => this.setEnded());\n this.player.on('timeupdate', e => this.setCurrentTime(e));\n }\n\n setEnded() {\n this.ended = true;\n }\n\n setCurrentTime(e) {\n this.currentTime = e?.detail?.plyr.currentTime;\n this.duration = e?.detail?.plyr.duration;\n }\n\n /**\n * Remove listeners if destroyed\n */\n disconnectedCallback() {\n if (!this.player) return;\n this.player.off('ended', this.setEnded);\n this.player.off('timeupdate', this.setCurrentTime);\n }\n\n /**\n * Maybe render\n * @returns JSX\n */\n render() {\n return (\n <presto-email-overlay-controller\n ended={this.ended}\n currentTime={this.currentTime}\n videoId={this.videoId}\n duration={this.duration}\n direction={this.direction}\n presetId={this.preset?.id}\n emailCollection={this.preset?.email_collection}\n i18n={this.i18n}\n provider={this.provider}\n ></presto-email-overlay-controller>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, Event, EventEmitter, h, Prop, State, Watch } from '@stencil/core';\nimport { i18nConfig, EmailCollection } from '../../../../../interfaces';\nimport { timePassed } from '../../../../../util';\n\n@Component({\n tag: 'presto-email-overlay-controller',\n styleUrl: 'presto-email-overlay-controller.css',\n shadow: false,\n})\nexport class PrestoEmailOverlayController {\n @Prop() ended: boolean;\n @Prop({ reflect: true }) currentTime: number;\n @Prop({ reflect: true }) duration: number;\n @Prop() direction?: 'rtl';\n @Prop() emailCollection?: EmailCollection;\n @Prop() i18n: i18nConfig;\n @Prop() videoId: number;\n @Prop() presetId: number;\n @Prop() provider: string;\n\n @State() enabled: boolean;\n @State() show: boolean;\n @State() loading: boolean;\n @State() error: string;\n @State() percentagePassed: number = 0;\n\n @Event() playVideo: EventEmitter<void>;\n @Event() pauseVideo: EventEmitter<true>;\n @Event() restartVideo: EventEmitter<void>;\n @Event() emailStateChange: EventEmitter<boolean>;\n\n /**\n * Set email collection in local storage\n * @param status string\n */\n setStorage(status) {\n window.localStorage.setItem('presto.videos.email_collection', JSON.stringify({ [this.videoId]: status }));\n }\n\n /**\n * Get email collection in local storage\n * @returns status string\n */\n getStorage() {\n return window.localStorage.getItem('presto.videos.email_collection');\n }\n\n componentWillLoad() {\n this.handleDuration();\n }\n\n /**\n * Wait for duration to start before checking time\n * @returns void\n */\n @Watch('duration')\n handleDuration() {\n this.enabled = this.getStorage() ? false : this?.emailCollection?.enabled;\n this.handleTimeCheck();\n }\n\n /**\n * When current time changes, check to see if we should\n * enable the overlay\n * @returns void\n */\n @Watch('currentTime')\n handleTimeCheck() {\n if (!this.enabled) return; // not enabled\n if (this.getStorage()) return; // already skipped\n this.checkTime();\n }\n\n @Watch('currentTime')\n handleShowChange() {\n if (!this.show) return; // bail if not showing.\n this.pauseVideo.emit(true); // pause video if here.\n }\n\n /**\n * Set enabled/disabled based on time that has passed\n */\n checkTime() {\n this.show = timePassed({\n current: this.currentTime,\n duration: this.duration,\n showAfter: this?.emailCollection?.percentage || 0,\n });\n }\n\n /**\n * Fetch updated nonce in case of caching\n * @returns Promise\n */\n async getNonce() {\n return fetch(`${window?.prestoPlayer?.ajaxurl}?action=presto_refresh_progress_nonce`);\n }\n\n /**\n * Submit email collection\n * @param e Event\n */\n async submit(e) {\n this.loading = true;\n this.error = '';\n\n // get nonce refresh\n const response = await this.getNonce();\n const { data: nonce } = await response.json();\n\n // handle submit\n try {\n let response = await fetch(window?.prestoPlayer?.ajaxurl, {\n method: 'post',\n body: new URLSearchParams({\n action: 'presto_player_email_submit',\n nonce,\n preset_id: this.presetId,\n video_id: this.videoId,\n provider: this.provider,\n ...(e?.detail || {}),\n }),\n });\n const { success, data } = await response.json();\n if (success) {\n this.setStorage('collected');\n this.show = false;\n this.playVideo.emit();\n } else {\n throw data;\n }\n } catch (e) {\n const error = e?.[0];\n if (error && typeof error === 'string') {\n this.error = error;\n }\n } finally {\n this.loading = false;\n }\n }\n\n /**\n * Skip email collection\n */\n skip() {\n this.setStorage('skipped');\n this.show = false;\n this.playVideo.emit();\n }\n\n /**\n * Maybe render\n * @returns JSX\n */\n\n @Watch('show')\n handleEmailStateChange(val) {\n this.emailStateChange.emit(val);\n }\n\n render() {\n if (!this.show) {\n return;\n }\n\n return (\n <presto-email-overlay-ui\n style={{\n ...(this?.emailCollection?.button_color\n ? {\n '--presto-player-button-color': `${this?.emailCollection?.button_color}`,\n }\n : {}),\n ...(this?.emailCollection?.button_text_color\n ? {\n '--presto-player-button-text': `${this?.emailCollection?.button_text_color}`,\n }\n : {}),\n }}\n direction={this.direction}\n class=\"email-overlay\"\n headline={this?.emailCollection?.headline}\n bottomText={this?.emailCollection?.bottom_text}\n allowSkip={this?.emailCollection?.allow_skip}\n buttonText={this?.emailCollection?.button_text}\n isLoading={this.loading}\n errorMessage={this.error}\n onSubmitForm={e => this.submit(e)}\n onSkip={() => this.skip()}\n i18n={this.i18n}\n provider={this.provider}\n ></presto-email-overlay-ui>\n );\n }\n}\n",".skin-modern {\n &.presto-player__wrapper {\n button.plyr__control.plyr__control--overlaid {\n border-radius: 2px;\n padding: 3% 5%;\n max-width: 135px;\n max-height: 90px;\n box-sizing: content-box;\n position: absolute !important;\n top: 50% !important;\n opacity: 100%;\n svg {\n height: 31px;\n width: 37px;\n }\n &:hover,\n &:focus {\n opacity: 0.8;\n background: var(--plyr-color-main);\n }\n }\n\n // full captions\n &.caption-style-full .plyr:not(.plyr--hide-controls):not(.is-muted-overlay) .plyr__controls:not(:empty) ~ .plyr__captions {\n transform: translateY(calc(var(--plyr-control-spacing, 9px) * -4));\n }\n\n // color background\n .plyr--video .plyr__controls {\n padding: 0px;\n &::before {\n content: '';\n background: var(--plyr-color-main);\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n opacity: 0.75;\n }\n }\n\n // adding hover state\n .plyr__controls__item {\n z-index: 1;\n &.plyr__control:not(.presto-player-progress__marker):not([role*='menuitem']):not(.plyr__control--back) {\n height: 36px;\n border-radius: 0px;\n &:focus {\n background-color: transparent;\n color: white;\n }\n }\n &.presto-player-progress__marker {\n z-index: 2;\n }\n &.plyr__menu {\n height: 36px;\n }\n }\n\n // completed range\n .plyr--full-ui.plyr--video input[type='range']::-webkit-slider-runnable-track {\n height: 2px;\n color: white;\n }\n\n // will complete range\n .presto-player__wrapper .plyr--full-ui.plyr--video input[type='range']::-webkit-slider-runnable-track {\n height: 2px;\n }\n\n // for buffer\n .plyr--video .plyr__progress__buffer {\n height: 2px;\n top: 11px;\n }\n\n .plyr__progress {\n input[type='range'] {\n cursor: pointer;\n }\n }\n\n // for range button\n .plyr--full-ui input[type='range']::-webkit-slider-thumb {\n top: 1px;\n height: var(--plyr-range-thumb-height, 8px);\n width: var(--plyr-range-thumb-height, 8px);\n box-shadow: 0px 0px 5px white;\n &:hover {\n transform: scale(1.5);\n }\n }\n\n // margin control\n .plyr__controls .plyr__controls__item {\n margin: 0px;\n }\n\n // volume width\n .plyr__volume {\n width: auto;\n input[type='range'] {\n width: 55px;\n }\n }\n\n // for soun range cursor\n .plyr__volume input[type='range'] {\n cursor: pointer;\n }\n\n // muted autoplay button size\n .presto-player__muted-overlay {\n .plyr__control {\n &.plyr__control--overlaid {\n border-radius: 2px;\n svg {\n height: 40px;\n width: 50px;\n }\n }\n }\n }\n\n .plyr__controls .plyr__controls__item[data-plyr='rewind'] svg,\n .plyr__controls .plyr__controls__item[data-plyr='fast-forward'] svg,\n .plyr__controls .plyr__controls__item[data-plyr='fullscreen'] svg {\n width: 22px;\n height: 22px;\n }\n\n @media screen and (max-width: 480px) {\n .plyr__control--overlaid {\n svg {\n height: 18px;\n width: 16px;\n }\n }\n }\n }\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'presto-modern-skin',\n styleUrl: 'presto-modern-skin.scss',\n shadow: false,\n})\nexport class PrestoModernSkin {\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { MutedOverlay, presetAttributes } from '../../../../interfaces';\n\n@Component({\n tag: 'presto-muted-overlay',\n styleUrl: 'presto-muted-overlay.css',\n shadow: false,\n})\nexport class PrestoMutedOverlay {\n @Prop() mutedPreview: boolean;\n @Prop() mutedOverlay: MutedOverlay;\n @Prop() preset: presetAttributes;\n\n @Event() playVideo: EventEmitter<void>;\n\n render() {\n return (\n <div\n class=\"presto-player__muted-overlay\"\n onClick={() => {\n this.mutedPreview = false;\n this.playVideo.emit();\n }}\n >\n {this.preset?.['play-large'] && (\n <div class=\"plyr__control plyr__control--overlaid\" data-plyr=\"play\" aria-label=\"Play\" part=\"muted-overlay-play\">\n <svg id=\"plyr-play\" viewBox=\"0 0 18 18\">\n <path d=\"M15.562 8.1L3.87.225c-.818-.562-1.87 0-1.87.9v15.75c0 .9 1.052 1.462 1.87.9L15.563 9.9c.584-.45.584-1.35 0-1.8z\"></path>\n </svg>\n <span class=\"plyr__sr-only\">Play</span>\n </div>\n )}\n\n {this.mutedOverlay?.enabled && this.mutedOverlay?.src ? (\n <div\n class=\"presto-player__overlay is-image\"\n part=\"muted-overlay-image\"\n style={{\n width: `${this.mutedOverlay?.width || 50}%`,\n left: `${(this.mutedOverlay?.focalPoint?.x || 0.5) * 100}%`,\n top: `${(this.mutedOverlay?.focalPoint?.y || 0.5) * 100}%`,\n }}\n >\n <img src={this.mutedOverlay?.src} style={{ transform: 'translateX(-50%) translateY(-50%)' }} />\n </div>\n ) : (\n ''\n )}\n </div>\n );\n }\n}\n","import { Component, h, Prop, State } from '@stencil/core';\nimport { searchVtt, setMarkers, removeOldMarkers } from '../../../player/functions/search-vtt';\n\n@Component({\n tag: 'presto-search-bar',\n shadow: false,\n})\nexport class PrestoSearchBar {\n /**\n * Props\n */\n @Prop() value: string;\n @Prop() player: any;\n\n /**\n * State\n */\n @State() markers: any;\n @State() currentMarkerLocation: number = -1;\n\n /**\n * Handle search event\n * @param value Event\n */\n onSearch(e) {\n this.value = e.detail;\n\n if ('' === this.value) {\n removeOldMarkers(this.player);\n this.markers = [];\n } else {\n const searchResult = searchVtt(this.player, this.value);\n this.player.config.markers = { enabled: true, points: searchResult };\n this.markers = searchResult;\n setMarkers(this.player, searchResult);\n }\n }\n\n /**\n * Handle previous arrow key click after search\n */\n onPreviousNav() {\n const prevLocation = this.currentMarkerLocation - 1;\n // previous location is -1\n if (prevLocation < 0) {\n this.currentMarkerLocation = this.markers.length - 1;\n } else {\n this.currentMarkerLocation--;\n }\n this.player.currentTime = this.markers[this.currentMarkerLocation]['time'];\n }\n\n /**\n * Handle the event where search is hovered or focused\n */\n onFocusChange(focus) {\n if (focus?.detail === true) {\n this.player.config.hideControls = false;\n } else {\n this.player.config.hideControls = this.player.config?.preset?.auto_hide || false;\n }\n }\n\n /**\n * Handle next arrow key click after search\n */\n onNextNav() {\n const nextLocation = this.currentMarkerLocation + 1;\n if (nextLocation > this.markers.length - 1) {\n this.currentMarkerLocation = 0;\n } else {\n this.currentMarkerLocation++;\n }\n this.player.currentTime = this.markers[this.currentMarkerLocation]['time'];\n }\n\n render() {\n if (!this.player) return '';\n if (!this.player?.media?.textTracks?.length || this.player?.media?.textTracks?.length === 0) return '';\n\n const presets = this.player.config.preset;\n const placeholder = presets.search?.placeholder;\n\n return (\n <presto-search-bar-ui\n value={this.value}\n hasNavigation={this.markers?.length > 1}\n placeholder={placeholder}\n onNextNav={() => this.onNextNav()}\n onPreviousNav={() => this.onPreviousNav()}\n onSearch={e => this.onSearch(e)}\n onFocusChange={focus => this.onFocusChange(focus)}\n ></presto-search-bar-ui>\n );\n }\n}\n",".skin-stacked {\n .plyr__controls {\n flex-wrap: wrap;\n }\n\n .presto-player-progress__marker {\n transform: scale(0.75);\n }\n\n .plyr__controls {\n justify-content: flex-start;\n }\n\n .plyr__controls__item.plyr__progress__container {\n order: -1;\n flex: 1 0 100%;\n }\n\n .plyr__controls__item.plyr__progress__container + :not(.plyr__time),\n .plyr__controls__item.plyr__progress__container + .plyr__time + * {\n margin-left: auto;\n }\n\n .plyr__controls .plyr__controls__item:first-child {\n margin: 0;\n }\n\n .plyr__progress {\n height: 19px;\n display: flex;\n align-items: center;\n // --plyr-range-track-height: 3px;\n .plyr__progress__buffer {\n height: 3px;\n transition: all 0.25s ease;\n position: absolute;\n top: calc(50% + 1px);\n }\n\n input[type='range'] {\n &::-moz-range-track {\n height: 3px;\n transition: all 0.25s ease;\n }\n &::-webkit-slider-runnable-track {\n height: 3px;\n transition: all 0.25s ease;\n }\n &::-ms-track {\n height: 3px;\n transition: all 0.25s ease;\n }\n &::-ms-fill-upper {\n height: 3px;\n transition: all 0.25s ease;\n }\n &::-ms-fill-lower {\n height: 3px;\n transition: height 0.25s ease;\n }\n\n &::-webkit-slider-thumb {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.25s ease;\n }\n &::-moz-range-thumb {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.25s ease;\n }\n &::-ms-thumb {\n visibility: hidden;\n opacity: 0;\n transition: opacity 0.25s ease;\n }\n }\n }\n\n .plyr__progress__container:hover {\n .presto-player-progress__marker {\n transform: scale(1);\n }\n .plyr__progress {\n .plyr__progress__buffer {\n height: 5px;\n top: calc(50%);\n }\n // --plyr-range-track-height: 5px;\n input[type='range'] {\n overflow: visible;\n &::-moz-range-track {\n height: 5px;\n }\n &::-webkit-slider-runnable-track {\n height: 5px;\n }\n &::-ms-track {\n height: 5px;\n }\n &::-ms-fill-upper {\n height: 5px;\n }\n &::-ms-fill-lower {\n height: 5px;\n }\n &::-webkit-slider-thumb {\n visibility: visible;\n opacity: 1;\n }\n &::-moz-range-thumb {\n visibility: visible;\n opacity: 1;\n }\n &::-ms-thumb {\n visibility: visible;\n opacity: 1;\n }\n }\n }\n }\n}\n","import { Component, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'presto-stacked-skin',\n styleUrl: 'presto-stacked-skin.scss',\n shadow: false,\n})\nexport class PrestoStackedSkin {\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n",":host {\n display: block;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport { isAndroidWebView } from '../../../../util';\n\n@Component({\n tag: 'presto-vimeo',\n styleUrl: 'presto-vimeo.css',\n shadow: false,\n})\nexport class PrestoVimeo {\n @Prop() src: string;\n @Prop() poster: string;\n @Prop() player: any;\n @Prop({ mutable: true }) getRef?: (elm?: HTMLIFrameElement) => void;\n\n getId(url) {\n const regExp = /^.*(vimeo\\.com\\/)((channels\\/[A-z]+\\/)|(groups\\/[A-z]+\\/videos\\/))?([0-9]+)/;\n const parseUrl = regExp.exec(url || '');\n return parseUrl?.[5] || '';\n }\n\n // Try to extract a hash for private videos from the URL\n parseHash(url) {\n /* This regex matches a hexadecimal hash if given in any of these forms:\n * - [https://player.]vimeo.com/video/{id}/{hash}[?params]\n * - [https://player.]vimeo.com/video/{id}?h={hash}[¶ms]\n * - [https://player.]vimeo.com/video/{id}?[params]&h={hash}\n * - video/{id}/{hash}\n * If matched, the hash is available in the named group `hash`\n */\n const regex = /^.*(?:vimeo.com\\/|video\\/)(?:\\d+)(?:\\?.*\\&*h=|\\/)+(?<hash>[\\d,a-f]+)/;\n const found = url.match(regex);\n\n if (found) {\n return found.groups.hash;\n }\n\n return null;\n }\n\n render() {\n if (!this.src) {\n return;\n }\n\n /*\n Our player is not working on Android WebView.\n https://github.com/prestomade/presto-player/issues/124\n */\n if (isAndroidWebView()) {\n return (\n <div class=\"presto-iframe-fallback-container\">\n <iframe\n src={`https://player.vimeo.com/video/${this.getId(this.src)}?h=${this.parseHash(\n this.src,\n )}&loop=false&byline=false&portrait=false&title=false&speed=true&transparent=0&gesture=media`}\n allowFullScreen\n allowTransparency\n allow=\"autoplay\"\n style={{ width: '100%' }}\n class=\"presto-fallback-iframe\"\n ></iframe>\n </div>\n );\n }\n\n return (\n <div\n class=\"plyr__video-embed\"\n part=\"embed\"\n ref={this.getRef}\n data-plyr-provider=\"vimeo\"\n data-plyr-embed-id={this.getId(this.src)}\n data-plyr-embed-hash={this.parseHash(this.src)}\n ></div>\n );\n }\n}\n",":host {\n display: block;\n}\n\n.fallback-container {\n position: relative;\n padding-bottom: 56.25%;\n padding-top: 30px;\n height: 0;\n overflow: hidden;\n}\n.fallback-container iframe,\n.fallback-container object,\n.fallback-container embed {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n/** make sure the height applies */\n@supports not (aspect-ratio: 16/9) {\n .plyr__video-embed,\n .plyr__video-wrapper--fixed-ratio {\n height: 0 !important;\n padding-bottom: 56.25%;\n position: relative;\n }\n}\n","import { Component, Prop, h, Event, EventEmitter, Watch, State } from '@stencil/core';\nimport { isIOS } from '../../../../util';\n@Component({\n tag: 'presto-youtube',\n styleUrl: 'presto-youtube.css',\n shadow: false,\n})\nexport class PrestoYoutube {\n @Prop() src: string;\n @Prop({ mutable: true }) poster: string;\n @Prop({ mutable: true }) lazyLoad: boolean;\n @Prop() player: any;\n @Prop({ mutable: true }) getRef?: (elm?: HTMLIFrameElement | HTMLVideoElement | HTMLDivElement) => void;\n\n /**\n * Events\n */\n @Event() reload: EventEmitter<string>;\n\n /**\n * State\n */\n @State() reloadPlayer: boolean;\n @State() isWebView: boolean;\n\n /**\n * When player is set, do ratio and fixes\n * @returns\n */\n @Watch('player')\n handlePlayerChange() {\n if (!this.player) {\n return;\n }\n\n this.fixes();\n this.setPoster();\n }\n\n // fixes issue where youtube can sometimes can be muted if played before load\n fixes() {\n this.player.once('statechange', e => {\n // only playing\n if (e.detail.code !== 1) {\n return;\n }\n // not autoplay\n if (e?.detail?.plyr?.config?.blockAttributes?.mutedPreview?.enabled) {\n return;\n }\n // unmute\n this.player.muted = false;\n });\n }\n\n // get id from youtube url\n getId(url) {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n const match = (url || '').match(regExp);\n return match && match?.[2]?.length === 11 ? match[2] : null;\n }\n\n // load player\n loadPlayer() {\n this.lazyLoad = false;\n this.reloadPlayer = true;\n }\n\n // wait for component to update before reloading\n componentDidRender() {\n if (this.reloadPlayer) {\n this.reloadPlayer = false;\n this.reload.emit('play');\n }\n }\n\n /**\n * detect if we're in a webview browser\n */\n setWebView() {\n // @ts-ignore\n let standalone = window.navigator?.standalone,\n userAgent = window.navigator.userAgent.toLowerCase(),\n safari = /safari/.test(userAgent),\n ios = /iphone|ipod|ipad/.test(userAgent);\n\n if (ios) {\n // ios webview\n this.isWebView = !standalone && !safari;\n } else {\n // android webview\n this.isWebView = userAgent.includes('wv');\n }\n }\n\n // Load image avoiding xhr/fetch CORS issues. \n // Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded/\n loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n \n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(src);\n };\n \n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n }\n\n setPoster() {\n if (!this.player.poster) {\n let posterSrc = (s) => `https://i.ytimg.com/vi/${this.getId(this.src)}/${s}default.jpg`;\n\n this.loadImage(posterSrc('maxres'), 121) // 480p padded 4:3\n .catch(() => this.loadImage(posterSrc('sd'), 121)) // 360p padded 4:3. Always exists\n .catch(() => this.loadImage(posterSrc('hq'), 121)) // 360p padded 4:3. Always exists\n .then((image:string) => this.player.poster = image )\n .catch(() => {});\n }\n }\n\n // don't lazy load on iOS\n componentWillLoad() {\n this.setWebView();\n if (this.lazyLoad && isIOS()) {\n this.lazyLoad = false;\n }\n }\n\n render() {\n if (this.isWebView) {\n return (\n <div class=\"fallback-container\">\n <iframe src={this.src} allowFullScreen allowtransparency allow=\"autoplay\"></iframe>\n </div>\n );\n }\n\n if (this.lazyLoad) {\n return (\n <div>\n <presto-video part=\"video\" getRef={this.getRef} src=\"\" provider=\"youtube\"></presto-video>\n <div class=\"presto-player__play-cover\" onClick={() => this.loadPlayer()}></div>\n </div>\n );\n }\n\n return <div class=\"plyr__video-embed\" part=\"embed\" ref={this.getRef} data-plyr-provider=\"youtube\" data-plyr-embed-id={this.getId(this.src)}></div>;\n }\n}\n"],"mappings":"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"}