OwlCyberSecurity - MANAGER
Edit File: presto-youtube2.js.map
{"file":"presto-youtube2.js","mappings":"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","names":[],"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: 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"],"version":3}