{"version":3,"file":"657.f674aadbf4378cbc.bundle.js","mappings":"mIAKIA,EAAU,GACd,MAAMC,UAAuB,IACzBC,YAAYC,GAKR,GAJAC,MAAMD,GACNE,KAAKC,MAAQH,EAAKI,KAAKC,GACvBH,KAAKI,UAAYC,EAAE,IAAIL,KAAKC,SAC5BD,KAAKM,QAAU,UACiC,MAA5CC,SAASC,eAAe,iBAA0B,CAClD,IAAIC,EAASF,SAASG,cAAc,UACpCD,EAAON,GAAK,gBACZM,EAAOE,IAAM,qCACbJ,SAASK,KAAKC,YAAYJ,GAE9BT,KAAKc,aAAed,KAAKI,UAAU,GAAGW,cACtCf,KAAKgB,WAAW,aAChBhB,KAAKiB,4BAIbC,OAAOC,oBAAsB,SAAUC,GACnC,IAAIC,EAAK,IAAI,IACTC,EAAYF,EAAMG,OAAOC,iBACzBC,EAAO,CACPL,MAAO,QACPM,OAAQN,EAAMG,OAAOI,YAAYxB,IAEjCiB,EAAMK,MAAQG,GAAGC,YAAYC,SAC7BC,QAAQC,IAAI,WAAaZ,EAAMG,OAAOI,YAAYxB,IAClDsB,EAAKQ,IAAM,QAAUX,GACdF,EAAMK,MAAQG,GAAGC,YAAYK,OACpCH,QAAQC,IAAI,SAAWZ,EAAMG,OAAOI,YAAYxB,IAChDsB,EAAKQ,IAAM,YACJb,EAAMK,MAAQG,GAAGC,YAAYM,QACpCJ,QAAQC,IAAI,aAAeV,GAC3BG,EAAKQ,IAAM,SAAWX,IAEtBS,QAAQC,IAAI,oBAAoBJ,GAAGC,eACnCJ,EAAKQ,IAAM,SAEfZ,EAAGe,aAAaX,IAIpBP,OAAOmB,wBAA0B,WACbhC,EAAE,kBACRiC,MAAK,SAAUC,EAAGC,GACxB,IAAIC,EAAa,GACjBA,EAAkB,MAAIpC,EAAEmC,GAAOf,KAAK,gBACD,GAA/BpB,EAAEmC,GAAOf,KAAK,eACdgB,EAAgB,IAAIpC,EAAEmC,GAAOf,KAAK,cACzB,IAAIG,GAAGc,OAAOrC,EAAEmC,GAAOf,KAAK,eAAgB,CACrDkB,OAAQtC,EAAEmC,GAAOf,KAAK,gBACtBmB,MAAOvC,EAAEmC,GAAOf,KAAK,eACrBoB,QAASxC,EAAEmC,GAAOf,KAAK,iBACvBqB,MAAO,SACPL,WAAYA,EACZM,OAAQ,CACJC,cAAe9B,OAAOC,2BAQtCd,GAAE,WACE,IAAII,EAASF,SAASG,cAAc,UACpCD,EAAOE,IAAM,qCACbJ,SAASK,KAAKC,YAAYJ,MAG9BJ,EAAEE,UAAU0C,GAAG,4BAA4B,WACvC5C,EAAE,4BAA4BiC,MAAK,SAAUY,GAEzC,IAAIpD,EAAO,CACPI,KAAMF,KACNmD,qBAAsBC,YAAYD,sBAEtCxD,EAAQK,KAAKG,IAAM,IAAIP,EAAeE,cAIN,IAA7BoB,OAAOmC,oBACdnC,OAAOmC,kBAAoB,IAE/BnC,OAAOmC,kBAAkBC,QAAU,SAAUxD,GACzC,OAAO,IAAIF,EAAeE,IAG9BoB,OAAOmC,kBAAkBE,MAAQ,SAAUzD,GACvC,OAAO,IAAIF,EAAeE","sources":["webpack://WebComponents/./runestone/video/js/runestonevideo.js"],"sourcesContent":["\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase\";\nimport \"../css/video.css\";\n\nvar vidList = [];\nclass RunestoneVideo extends RunestoneBase {\n constructor(opts) {\n super(opts);\n this.divid = opts.orig.id;\n this.container = $(`#${this.divid}`);\n this.caption = \"YouTube\";\n if (document.getElementById(\"youtubescript\") == null) {\n let script = document.createElement(\"script\");\n script.id = \"youtubescript\";\n script.src = \"https://www.youtube.com/player_api\";\n document.body.appendChild(script);\n }\n this.containerDiv = this.container[0].parentElement;\n this.addCaption(\"runestone\");\n this.indicate_component_ready();\n }\n}\n\nwindow.onPlayerStateChange = function (event) {\n let rb = new RunestoneBase();\n let videoTime = event.target.getCurrentTime();\n let data = {\n event: \"video\",\n div_id: event.target.getIframe().id,\n };\n if (event.data == YT.PlayerState.PLAYING) {\n console.log(\"playing \" + event.target.getIframe().id);\n data.act = \"play:\" + videoTime;\n } else if (event.data == YT.PlayerState.ENDED) {\n console.log(\"ended \" + event.target.getIframe().id);\n data.act = \"complete\";\n } else if (event.data == YT.PlayerState.PAUSED) {\n console.log(\"paused at \" + videoTime);\n data.act = \"pause:\" + videoTime;\n } else {\n console.log(`YT Player State: ${YT.PlayerState}`);\n data.act = \"ready\";\n }\n rb.logBookEvent(data);\n};\n\n//Callback function to load youtube videos once IFrame Player loads\nwindow.onYouTubeIframeAPIReady = function () {\n let videolist = $(\".youtube-video\");\n videolist.each(function (i, video) {\n let playerVars = {};\n playerVars[\"start\"] = $(video).data(\"video-start\");\n if ($(video).data(\"video-end\") != -1)\n playerVars[\"end\"] = $(video).data(\"video-end\");\n let player = new YT.Player($(video).data(\"video-divid\"), {\n height: $(video).data(\"video-height\"),\n width: $(video).data(\"video-width\"),\n videoId: $(video).data(\"video-videoid\"),\n align: \"center\",\n playerVars: playerVars,\n events: {\n onStateChange: window.onPlayerStateChange,\n },\n });\n });\n};\n\n//Need to make sure the YouTube IFrame Player API is not loaded until after\n// all YouTube videos are in the DOM. Add a script tag with it after document is loaded\n$(function () {\n let script = document.createElement(\"script\");\n script.src = \"https://www.youtube.com/player_api\";\n document.body.appendChild(script);\n});\n\n$(document).on(\"runestone:login-complete\", function () {\n $(\"[data-component=youtube]\").each(function (index) {\n // MC\n var opts = {\n orig: this,\n useRunestoneServices: eBookConfig.useRunestoneServices,\n };\n vidList[this.id] = new RunestoneVideo(opts);\n });\n});\n\nif (typeof window.component_factory === \"undefined\") {\n window.component_factory = {};\n}\nwindow.component_factory.youtube = function (opts) {\n return new RunestoneVideo(opts);\n};\n\nwindow.component_factory.vimeo = function (opts) {\n return new RunestoneVideo(opts);\n};\n"],"names":["vidList","RunestoneVideo","constructor","opts","super","this","divid","orig","id","container","$","caption","document","getElementById","script","createElement","src","body","appendChild","containerDiv","parentElement","addCaption","indicate_component_ready","window","onPlayerStateChange","event","rb","videoTime","target","getCurrentTime","data","div_id","getIframe","YT","PlayerState","PLAYING","console","log","act","ENDED","PAUSED","logBookEvent","onYouTubeIframeAPIReady","each","i","video","playerVars","Player","height","width","videoId","align","events","onStateChange","on","index","useRunestoneServices","eBookConfig","component_factory","youtube","vimeo"],"sourceRoot":""}