ng5-yt-player
Version:
* [Description](#Description) * [Usage](#usage) * [Events](#Events) * [Download](#download)
152 lines (147 loc) • 5.36 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core')) :
typeof define === 'function' && define.amd ? define(['exports', '@angular/core'], factory) :
(factory((global['ng5-yt-player'] = {}),global.ng.core));
}(this, (function (exports,core) { 'use strict';
var $window = window;
var iFrameSrc = 'http://www.youtube.com/iframe_api';
var YoutubePlayerService = (function () {
/**
* @param {?} zone
*/
function YoutubePlayerService(zone) {
this.zone = zone;
}
/**
* @param {?} domElementId
* @param {?} playerOptions
* @param {?} readyEvent
* @param {?} stateChangeEvent
* @return {?}
*/
YoutubePlayerService.prototype.createPlayer = function (domElementId, playerOptions, readyEvent, stateChangeEvent) {
var _this = this;
return setInterval(function () {
if ((typeof $window.YT !== 'undefined') && $window.YT && $window.YT.Player) {
var /** @type {?} */ player = new $window.YT.Player(domElementId, Object.assign({}, playerOptions, { events: {
onReady: function (ev) {
_this.zone.run(function () { return readyEvent.emit(ev.target); });
},
onStateChange: function (ev) {
/**
* player state is 1 (playing), 2 for Pause. Reference https://developers.google.com/youtube/iframe_api_reference
*/
_this.zone.run(function () { return stateChangeEvent.emit(ev.data); });
}
} }));
}
}, 100);
};
/**
* @return {?}
*/
YoutubePlayerService.prototype.loadPlayerApi = function () {
var /** @type {?} */ doc = $window.document;
var /** @type {?} */ playerApi = doc.createElement('script');
playerApi.type = 'text/javascript';
playerApi.src = iFrameSrc;
doc.body.appendChild(playerApi);
};
return YoutubePlayerService;
}());
YoutubePlayerService.decorators = [
{ type: core.Injectable },
];
/**
* @nocollapse
*/
YoutubePlayerService.ctorParameters = function () { return [
{ type: core.NgZone, },
]; };
var YoutubePlayerComponent = (function () {
/**
* @param {?} playerService
*/
function YoutubePlayerComponent(playerService) {
this.playerService = playerService;
this.playerReadyEvent = new core.EventEmitter();
this.playerStateChangeEvent = new core.EventEmitter();
this.domId = 'player-' + this.guid();
}
/**
* @return {?}
*/
YoutubePlayerComponent.prototype.ngAfterContentInit = function () {
var /** @type {?} */ playerOptions = {
videoId: this.videoId || '',
height: this.height || 300,
width: this.width || 300,
playerVars: Object.assign({}, this.playerParams, { enablejsapi: 1 })
};
this.playerService.loadPlayerApi();
this.playerService.createPlayer(this.domId, playerOptions, this.playerReadyEvent, this.playerStateChangeEvent);
};
/**
* @return {?}
*/
YoutubePlayerComponent.prototype.guid = function () {
/**
* @return {?}
*/
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
};
return YoutubePlayerComponent;
}());
YoutubePlayerComponent.decorators = [
{ type: core.Component, args: [{
selector: 'ng5-youtube-player',
template: "\n <div [id]=\"domId\"></div>\n ",
styles: ["\n\n "]
},] },
];
/**
* @nocollapse
*/
YoutubePlayerComponent.ctorParameters = function () { return [
{ type: YoutubePlayerService, },
]; };
YoutubePlayerComponent.propDecorators = {
'videoId': [{ type: core.Input },],
'height': [{ type: core.Input },],
'width': [{ type: core.Input },],
'playerParams': [{ type: core.Input },],
'playerReadyEvent': [{ type: core.Output },],
'playerStateChangeEvent': [{ type: core.Output },],
};
var YouTubePlayerModule = (function () {
function YouTubePlayerModule() {
}
return YouTubePlayerModule;
}());
YouTubePlayerModule.decorators = [
{ type: core.NgModule, args: [{
declarations: [
YoutubePlayerComponent
],
schemas: [core.NO_ERRORS_SCHEMA, core.CUSTOM_ELEMENTS_SCHEMA],
providers: [YoutubePlayerService],
exports: [
YoutubePlayerComponent
]
},] },
];
/**
* @nocollapse
*/
YouTubePlayerModule.ctorParameters = function () { return []; };
exports.YouTubePlayerModule = YouTubePlayerModule;
exports.ɵb = YoutubePlayerService;
exports.ɵa = YoutubePlayerComponent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=ng5-yt-player.umd.js.map