{"version":3,"file":"915.js","mappings":"oIAKA,MAAMA,UAAuB,IACzB,WAAAC,CAAYC,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,EAC9B,CACAT,KAAKc,aAAed,KAAKI,UAAU,GAAGW,cACtCf,KAAKgB,WAAW,aAChBhB,KAAKiB,0BACT,EAGJC,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,EACpB,EAGAP,OAAOmB,wBAA0B,WACbhC,EAAE,kBACRiC,MAAK,SAAUC,EAAGC,GACxB,IAAIC,EAAa,CAAC,EAClBA,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,sBAGlC,GACJ,EAIAd,GAAE,WACE,IAAII,EAASF,SAASG,cAAc,UACpCD,EAAOE,IAAM,qCACbJ,SAASK,KAAKC,YAAYJ,EAC9B,IAEAJ,EAAEE,UAAU0C,GAAG,4BAA4B,WACvC5C,EAAE,4BAA4BiC,MAAK,SAAUY,GAEzC,IAAIpD,EAAO,CACPI,KAAMF,KACNmD,qBAAsBC,YAAYD,sBAEtCjC,OAAOmC,aAAarD,KAAKG,IAAM,IAAIP,EAAeE,EACtD,GACJ,SAEwC,IAA7BoB,OAAOoC,oBACdpC,OAAOoC,kBAAoB,CAAC,GAEhCpC,OAAOoC,kBAAkBC,QAAU,SAAUzD,GACzC,OAAO,IAAIF,EAAeE,EAC9B,EAEAoB,OAAOoC,kBAAkBE,MAAQ,SAAU1D,GACvC,OAAO,IAAIF,EAAeE,EAC9B,C","sources":["webpack://WebComponents/./runestone/video/js/runestonevideo.js"],"sourcesContent":["\"use strict\";\n\nimport RunestoneBase from \"../../common/js/runestonebase\";\nimport \"../css/video.css\";\n\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        window.componentMap[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":["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","componentMap","component_factory","youtube","vimeo"],"sourceRoot":""}