UNPKG

ng-youtube-embed-iframe

Version:
9 lines 2.92 kB
/*! * @module ng-youtube-embed-iframe * @description AngularJS directive for youtube-iframe-player-api * @version v1.2.15 * @link https://github.com/sibiraj-s/ng-youtube-embed-iframe#readme * @licence MIT License, https://opensource.org/licenses/MIT */ "use strict";(function(){var e={width:"100%",height:"100%",playerVars:{}},t=function(p,h,f,b){return{restrict:"E",template:"<div id={{ngYoutubeId}}></div>",scope:{height:"@?",width:"@?",videoId:"@?",playerOptions:"=?"},link:function(a,e,n){var t,i,o,r,d,u,y,l,c,s,P,g;if(!n.id)throw new Error("Provide id for element: ".concat(e[0].outerHTML));if(i=!!p.document.getElementById("ng_yt_iframe_api"),void 0!==p.YT&&void 0!==p.YT.Player||i||((e=p.document.createElement("script")).src="https://www.youtube.com/iframe_api",e.id="ng_yt_iframe_api",(i=p.document.getElementsByTagName("script")[0]).parentNode.insertBefore(e,i)),a.ngYoutubeId=n.id,a.playerOptions=a.playerOptions||{},P=a.videoId||a.playerOptions.videoId,c=a.height||a.playerOptions.height||b.height,g=a.width||a.playerOptions.width||b.width,s=a.playerOptions.playerVars||b.playerVars,!P)throw new Error("Video id is required. Received `".concat(P,"`"));h.onReady(function(){f[n.id]=t()}),t=function(){return new YT.Player(n.id,{videoId:P,height:c,width:g,playerVars:s,events:{onReady:y,onPlaybackQualityChange:u,onStateChange:l,onError:d,onPlaybackRateChange:r,onApiChange:o}})},y=function(e){a.$emit("ngYoutubePlayer:onPlayerReady",e,n.id)},u=function(e){a.$emit("ngYoutubePlayer:onPlayerPlaybackQualityChange",e,n.id)},l=function(e){switch(a.$emit("ngYoutubePlayer:onPlayerStateChange",e,n.id),e.data){case YT.PlayerState.PLAYING:a.$emit("ngYoutubePlayer:PLAYING",e);break;case YT.PlayerState.ENDED:a.$emit("ngYoutubePlayer:ENDED",e);break;case YT.PlayerState.UNSTARTED:a.$emit("ngYoutubePlayer:UNSTARTED",e);break;case YT.PlayerState.PAUSED:a.$emit("ngYoutubePlayer:PAUSED",e);break;case YT.PlayerState.BUFFERING:a.$emit("ngYoutubePlayer:BUFFERING",e);break;case YT.PlayerState.CUED:a.$emit("ngYoutubePlayer:CUED",e)}},d=function(e){a.$emit("ngYoutubePlayer:onPlayerError",e,n.id)},r=function(e){a.$emit("ngYoutubePlayer:onPlaybackRateChange",e,n.id)},o=function(){a.$emit("ngYoutubePlayer:onApiChange",event,n.id)},a.$watch("videoId",function(e,t){e!==t&&f[n.id].cueVideoById(a.videoId)}),a.$watch("playerOptions.videoId",function(e,t){a.videoId||e!==t&&f[n.id].cueVideoById(a.playerOptions.videoId)}),a.$on("$destroy",function(){for(var e in f)e&&f[e].a&&f[e].destroy()})}}},a=function(e,t){var a=e.defer(),n=a.promise;return t.onYouTubeIframeAPIReady=function(){a.resolve()},{onReady:function(e){n.then(e)}}},n={};t.$inject=["$window","ytFactory","ytPlayer","youtubePlayerConfig"],a.$inject=["$q","$window"],angular.module("ngYoutube",[]).directive("youtube",t).factory("ytFactory",a).constant("youtubePlayerConfig",e).constant("ytPlayer",n)}).call(void 0); //# sourceMappingURL=ng-youtube.min.js.map