/
var
/
www
/
html
/
wordpress
/
wp-content
/
plugins
/
presto-player
/
dist
/
components
/
components
/
Upload File
HOME
{"file":"presto-youtube2.js","mappings":"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","names":["__stencil_proxyCustomElement"],"sources":["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\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: calc(100% / (var(--presto-player-aspect-ratio, 16/9)));\n position: relative;\n }\n}\n\n.plyr--youtube {\n aspect-ratio: var(--presto-player-aspect-ratio, auto);\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=|shorts\\/)([^#&?]*).*/;\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"],"version":3}