{"version":3,"sources":["webpack://[name]/./desktop/static/js/video-apis/youtube/YoutubePlayer.js","webpack://[name]/./desktop/static/js/video-apis/youtube/YoutubeAPI.js","webpack://[name]/./desktop/static/js/video-apis/youtube/youtubeApiPromise.js"],"names":["YoutubePlayer","YT","el","onPlay","player","Player","events","onStateChange","event","handleStateChange","playerState","PlayerState","UNSTARTED","data","isPlayingVideo","videoIsPlayingForState","wasAlreadyPlayingVideo","PLAYING","BUFFERING","YoutubeAPI","resolve","window","onYouTubeIframeAPIReady","youtubeAPI","tag","document","createElement","src","firstScriptTag","getElementsByTagName","parentNode","insertBefore"],"mappings":"uOAIqBA,E,WAMnB,WAAYC,EAAIC,EAAIC,EAAQ,wBAC1B,KAAKF,GAAKA,EACV,KAAKG,OAAS,GAAIH,GAAGI,OAAOH,EAAI,CAC9BI,OAAQ,CACNC,cAAe,SAAAC,EAAK,OAAI,GAAKC,kBAAkBD,OAGnD,KAAKE,YAAcT,EAAGU,YAAYC,UAClC,KAAKT,OAASA,E,wDAOa,IAARU,GAAQ,EAARA,KACbC,EAAiB,KAAKC,uBAAuBF,GAC7CG,EAAyB,KAAKD,uBAAuB,KAAKL,aAC5DI,GAAkB,CAACE,GACrB,KAAKb,SAEP,KAAKO,YAAcG,I,6CASEH,EAAa,OAClC,MAAO,QACL,KAAKT,GAAGU,YAAYM,QACpB,KAAKhB,GAAGU,YAAYO,YAFf,OAGIR,O,KCtCMS,E,WAInB,WAAYlB,EAAI,aACd,KAAKA,GAAKA,E,8CAUFC,E,EAAgB,IAAVC,GAAU,EAAVA,OACd,GAAIH,GAAc,KAAKC,GAAIC,EAAIC,O,KCdnC,EAAe,GAAI,MAAQ,SAAAiB,EAAW,CACpCC,OAAOC,wBAA0B,UAAM,CACrC,GAAMC,GAAa,GAAIJ,GAAWE,OAAOpB,IACzCmB,EAAQG,IAEV,GAAMC,GAAMC,SAASC,cAAc,UACnCF,EAAIG,IAAM,qCACV,GAAMC,GAAiBH,SAASI,qBAAqB,UAAU,GAC/DD,EAAeE,WAAWC,aAAaP,EAAKI","file":"400.js","sourcesContent":["/**\n * Manages the state and interactions for an instance\n * of the Youtube Iframe player.\n */\nexport default class YoutubePlayer {\n /**\n * @param {YT} YT the youtube iframe api\n * @param {HTMLElement} el element to create the player for \n * @param {Function} onPlay runs when the play button is hit\n */\n constructor(YT, el, onPlay) {\n this.YT = YT;\n this.player = new YT.Player(el, {\n events: {\n onStateChange: event => this.handleStateChange(event)\n }\n });\n this.playerState = YT.PlayerState.UNSTARTED;\n this.onPlay = onPlay;\n }\n\n /**\n * @param {Object} param0 \n * @param {PlayerState} param0.data\n */\n handleStateChange({ data }) {\n const isPlayingVideo = this.videoIsPlayingForState(data);\n const wasAlreadyPlayingVideo = this.videoIsPlayingForState(this.playerState);\n if (isPlayingVideo && !wasAlreadyPlayingVideo) {\n this.onPlay();\n }\n this.playerState = data;\n }\n\n /**\n * Whether the given player state has video playing.\n *\n * @param {PlayerState} playerState \n * @returns {boolean}\n */\n videoIsPlayingForState(playerState) {\n return [\n this.YT.PlayerState.PLAYING,\n this.YT.PlayerState.BUFFERING\n ].includes(playerState);\n }\n}\n","import YoutubePlayer from './YoutubePlayer';\n\n/**\n * Interacts with the Youtube Iframe API.\n * See https://developers.google.com/youtube/iframe_api_reference\n */\nexport default class YoutubeAPI {\n /**\n * @param {YT} YT the youtube iframe api\n */\n constructor(YT) {\n this.YT = YT;\n }\n\n /**\n * Adds a new YT iframe player using the given element.\n *\n * @param {HTMLElement} el\n * @param {Object} param1\n * @param {Function} param1.onPlay\n */\n addPlayer(el, { onPlay }) {\n new YoutubePlayer(this.YT, el, onPlay);\n }\n}\n","import YoutubeAPI from './YoutubeAPI';\n\n/**\n * Loads the youtube iframe_api, and when\n * the API is ready wraps it with YoutubeAPI.\n *\n * @type {Promise}\n */\nexport default new Promise(resolve => {\n window.onYouTubeIframeAPIReady = () => {\n const youtubeAPI = new YoutubeAPI(window.YT);\n resolve(youtubeAPI);\n };\n const tag = document.createElement('script');\n tag.src = 'https://www.youtube.com/iframe_api';\n const firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n});\n\n"],"sourceRoot":""}