@hercilio/ngx-youtube-player
Version:
[](https://travis-ci.org/Hernior/ngx-youtube-player) [](https://badge.fury.io/js/ngx-youtube-player) [![npm d
74 lines • 8.87 kB
JavaScript
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { defaultSizes } from './ngx-youtube-player.service';
import * as i0 from "@angular/core";
import * as i1 from "./ngx-youtube-player.service";
export class YoutubePlayerComponent {
constructor(playerService, elementRef, renderer) {
this.playerService = playerService;
this.elementRef = elementRef;
this.renderer = renderer;
this.videoId = '';
this.height = defaultSizes.height;
this.width = defaultSizes.width;
/**
* @description sets the protocol by the navigator object
* if there is no window, it sets a default http protocol
* unless the protocol is set from outside
*/
this.protocol = this.getProtocol();
this.playerVars = {};
// player created and initialized - sends instance of the player
this.ready = new EventEmitter();
// state change: send the YT event with its state
this.change = new EventEmitter();
}
ngAfterContentInit() {
const htmlId = this.playerService.generateUniqueId();
const playerSize = { height: this.height, width: this.width };
const container = this.renderer.selectRootElement('#yt-player-ngx-component');
this.renderer.setAttribute(container, 'id', htmlId);
this.playerService.loadPlayerApi({
protocol: this.protocol
});
this.playerService.setupPlayer(htmlId, {
change: this.change,
ready: this.ready
}, playerSize, this.videoId, this.playerVars);
}
getProtocol() {
const hasWindow = window && window.location;
const protocol = hasWindow
? window.location.protocol.replace(':', '')
: 'http';
return protocol;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YoutubePlayerComponent, deps: [{ token: i1.YoutubePlayerService }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: YoutubePlayerComponent, selector: "youtube-player", inputs: { videoId: "videoId", height: "height", width: "width", protocol: "protocol", playerVars: "playerVars" }, outputs: { ready: "ready", change: "change" }, ngImport: i0, template: `
<div id="yt-player-ngx-component"></div>
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YoutubePlayerComponent, decorators: [{
type: Component,
args: [{
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'youtube-player',
template: `
<div id="yt-player-ngx-component"></div>
`
}]
}], ctorParameters: () => [{ type: i1.YoutubePlayerService }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { videoId: [{
type: Input
}], height: [{
type: Input
}], width: [{
type: Input
}], protocol: [{
type: Input
}], playerVars: [{
type: Input
}], ready: [{
type: Output
}], change: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXlvdXR1YmUtcGxheWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC15b3V0dWJlLXBsYXllci9zcmMvbGliL25neC15b3V0dWJlLXBsYXllci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFlBQVksRUFDYixNQUFNLDhCQUE4QixDQUFDOzs7QUFTdEMsTUFBTSxPQUFPLHNCQUFzQjtJQWlCakMsWUFDUyxhQUFtQyxFQUNsQyxVQUFzQixFQUN0QixRQUFtQjtRQUZwQixrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbEMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbkJwQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsV0FBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDN0IsVUFBSyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDcEM7Ozs7V0FJRztRQUNNLGFBQVEsR0FBVyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdEMsZUFBVSxHQUFrQixFQUFFLENBQUM7UUFFeEMsZ0VBQWdFO1FBQ3RELFVBQUssR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBQ2hELGlEQUFpRDtRQUN2QyxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFNbkQsQ0FBQztJQUVKLGtCQUFrQjtRQUNoQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDckQsTUFBTSxVQUFVLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQy9DLDBCQUEwQixDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztZQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7U0FDeEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQzVCLE1BQU0sRUFDTjtZQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsRUFDRCxVQUFVLEVBQ1YsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUM1QyxNQUFNLFFBQVEsR0FBRyxTQUFTO1lBQ3hCLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1gsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzsrR0FuRFUsc0JBQXNCO21HQUF0QixzQkFBc0IsdU5BSnZCOztHQUVUOzs0RkFFVSxzQkFBc0I7a0JBUGxDLFNBQVM7bUJBQUM7b0JBQ1QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFFBQVEsRUFBRTs7R0FFVDtpQkFDRjswSUFFVSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0ksS0FBSztzQkFBZCxNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBZb3V0dWJlUGxheWVyU2VydmljZSxcbiAgZGVmYXVsdFNpemVzXG59IGZyb20gJy4vbmd4LXlvdXR1YmUtcGxheWVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHNlbGVjdG9yOiAneW91dHViZS1wbGF5ZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgaWQ9XCJ5dC1wbGF5ZXItbmd4LWNvbXBvbmVudFwiPjwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIFlvdXR1YmVQbGF5ZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0IHtcbiAgQElucHV0KCkgdmlkZW9JZCA9ICcnO1xuICBASW5wdXQoKSBoZWlnaHQgPSBkZWZhdWx0U2l6ZXMuaGVpZ2h0O1xuICBASW5wdXQoKSB3aWR0aCA9IGRlZmF1bHRTaXplcy53aWR0aDtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBzZXRzIHRoZSBwcm90b2NvbCBieSB0aGUgbmF2aWdhdG9yIG9iamVjdFxuICAgKiBpZiB0aGVyZSBpcyBubyB3aW5kb3csIGl0IHNldHMgYSBkZWZhdWx0IGh0dHAgcHJvdG9jb2xcbiAgICogdW5sZXNzIHRoZSBwcm90b2NvbCBpcyBzZXQgZnJvbSBvdXRzaWRlXG4gICAqL1xuICBASW5wdXQoKSBwcm90b2NvbDogc3RyaW5nID0gdGhpcy5nZXRQcm90b2NvbCgpO1xuICBASW5wdXQoKSBwbGF5ZXJWYXJzOiBZVC5QbGF5ZXJWYXJzID0ge307XG5cbiAgLy8gcGxheWVyIGNyZWF0ZWQgYW5kIGluaXRpYWxpemVkIC0gc2VuZHMgaW5zdGFuY2Ugb2YgdGhlIHBsYXllclxuICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPFlULlBsYXllcj4oKTtcbiAgLy8gc3RhdGUgY2hhbmdlOiBzZW5kIHRoZSBZVCBldmVudCB3aXRoIGl0cyBzdGF0ZVxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxZVC5QbGF5ZXJFdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcGxheWVyU2VydmljZTogWW91dHViZVBsYXllclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IGh0bWxJZCA9IHRoaXMucGxheWVyU2VydmljZS5nZW5lcmF0ZVVuaXF1ZUlkKCk7XG4gICAgY29uc3QgcGxheWVyU2l6ZSA9IHsgaGVpZ2h0OiB0aGlzLmhlaWdodCwgd2lkdGg6IHRoaXMud2lkdGggfTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLnJlbmRlcmVyLnNlbGVjdFJvb3RFbGVtZW50KFxuICAgICAgJyN5dC1wbGF5ZXItbmd4LWNvbXBvbmVudCdcbiAgICApO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKGNvbnRhaW5lciwgJ2lkJywgaHRtbElkKTtcbiAgICB0aGlzLnBsYXllclNlcnZpY2UubG9hZFBsYXllckFwaSh7XG4gICAgICBwcm90b2NvbDogdGhpcy5wcm90b2NvbFxuICAgIH0pO1xuICAgIHRoaXMucGxheWVyU2VydmljZS5zZXR1cFBsYXllcihcbiAgICAgIGh0bWxJZCxcbiAgICAgIHtcbiAgICAgICAgY2hhbmdlOiB0aGlzLmNoYW5nZSxcbiAgICAgICAgcmVhZHk6IHRoaXMucmVhZHlcbiAgICAgIH0sXG4gICAgICBwbGF5ZXJTaXplLFxuICAgICAgdGhpcy52aWRlb0lkLFxuICAgICAgdGhpcy5wbGF5ZXJWYXJzXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb3RvY29sKCkge1xuICAgIGNvbnN0IGhhc1dpbmRvdyA9IHdpbmRvdyAmJiB3aW5kb3cubG9jYXRpb247XG4gICAgY29uc3QgcHJvdG9jb2wgPSBoYXNXaW5kb3dcbiAgICAgID8gd2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoJzonLCAnJylcbiAgICAgIDogJ2h0dHAnO1xuICAgIHJldHVybiBwcm90b2NvbDtcbiAgfVxufVxuIl19