ng-cw-v12
Version:
Angular UI Component Library
136 lines • 17.7 kB
JavaScript
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
export class VideoEasyComponent {
constructor(eleRef, sanitizer) {
this.eleRef = eleRef;
this.sanitizer = sanitizer;
/** 返回播放状态 */
this.ncPlaying = new EventEmitter();
/** 返回播放器 */
this.ncLoaded = new EventEmitter();
/** 视频地址 */
this.ncUrl = '';
/** 超时 */
this.ncTimeout = 10;
/** 播放失败文案 */
this.ncErrorText = '播放失败';
/** 播放超时文案 */
this.ncTimeoutText = '播放超时,视频源无响应';
/** 静音 */
this._muted = true;
/** 自动播放 */
this._autoplay = false;
this.messageListener = null;
this.errorSubject = new Subject();
this.iframeElement = null;
this.playerController = null;
// 生成唯一ID
this.uniqueId = `video_easy_${Math.random().toString(36).substring(2, 11)}`;
// 监听消息
this.messageListener = (event) => {
if (event.data && event.data.type === 'iframe-message') {
const eventData = event.data;
//只处理当前视频iframe的消息
//防止一次用几个组件,其中一个iframe发消息,所有组件都收到
if (eventData.uniqueId != this.uniqueId) {
return;
}
this.errorSubject.next(eventData);
if (eventData.message == 'play') {
this.ncPlaying.emit(true);
}
else if (eventData.message == 'pause') {
this.ncPlaying.emit(false);
}
else if (eventData.message == 'loaded') {
this.playerController = {
pause: () => {
this.sendCommandToIframe('pause');
},
play: (url) => {
this.sendCommandToIframe('play', url);
},
setMute: (mute) => {
this.sendCommandToIframe('setMute', mute);
},
destroy: () => {
this.sendCommandToIframe('destroy');
}
};
this.ncLoaded.emit(this.playerController);
}
}
};
window.addEventListener('message', this.messageListener);
}
set ncMuted(value) {
this._muted = value !== null && value !== undefined && value !== false && value !== 'false';
}
get ncMuted() {
return this._muted;
}
set ncAutoplay(value) {
this._autoplay = value !== null && value !== undefined && value !== false && value !== 'false';
}
get ncAutoplay() {
return this._autoplay;
}
ngAfterViewInit() {
// 获取 iframe 元素
const iframe = this.eleRef.nativeElement.querySelector('iframe');
if (iframe) {
this.iframeElement = iframe;
}
}
ngOnChanges(changes) {
if (changes['ncUrl']) {
this.updateVideoUrl();
}
}
ngOnDestroy() {
this.sendCommandToIframe('destroy');
}
updateVideoUrl() {
const iframeUrl = `assets/easyplayer-js/viewer.html?url=${encodeURIComponent(this.ncUrl)}&autoplay=${this.ncAutoplay}&muted=${this.ncMuted}&uniqueId=${this.uniqueId}&timeout=${this.ncTimeout}&errorText=${this.ncErrorText}&timeoutText=${this.ncTimeoutText}`;
this.viewerUrl = this.sanitizer.bypassSecurityTrustResourceUrl(iframeUrl);
}
sendCommandToIframe(command, params) {
if (this.iframeElement && this.iframeElement.contentWindow) {
const message = {
type: 'player-command',
command: command,
params: params
};
this.iframeElement.contentWindow.postMessage(message, '*');
}
}
}
VideoEasyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: VideoEasyComponent, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
VideoEasyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: VideoEasyComponent, selector: "nc-video-easy", inputs: { ncUrl: "ncUrl", ncTimeout: "ncTimeout", ncErrorText: "ncErrorText", ncTimeoutText: "ncTimeoutText", ncMuted: "ncMuted", ncAutoplay: "ncAutoplay" }, outputs: { ncPlaying: "ncPlaying", ncLoaded: "ncLoaded" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"nc-video-easy-container\">\r\n <iframe [src]=\"viewerUrl\" width=\"100%\" height=\"100%\" [attr.frameBorder]=\"0\" style=\"border: none;\">\r\n </iframe>\r\n</div>", styles: [".nc-video-easy-container{position:relative;width:100%;height:100%;overflow:hidden}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: VideoEasyComponent, decorators: [{
type: Component,
args: [{
selector: 'nc-video-easy',
templateUrl: './video-easy.component.html',
styleUrls: ['./video-easy.component.less']
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }]; }, propDecorators: { ncPlaying: [{
type: Output
}], ncLoaded: [{
type: Output
}], ncUrl: [{
type: Input
}], ncTimeout: [{
type: Input
}], ncErrorText: [{
type: Input
}], ncTimeoutText: [{
type: Input
}], ncMuted: [{
type: Input
}], ncAutoplay: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8tZWFzeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3ZpZGVvLWVhc3kvdmlkZW8tZWFzeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3ZpZGVvLWVhc3kvdmlkZW8tZWFzeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBMkMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1SCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFPL0IsTUFBTSxPQUFPLGtCQUFrQjtJQXNDN0IsWUFBb0IsTUFBa0IsRUFBVSxTQUF1QjtRQUFuRCxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBQVUsY0FBUyxHQUFULFNBQVMsQ0FBYztRQXJDdkUsYUFBYTtRQUNILGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2xELFlBQVk7UUFDRixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU3QyxXQUFXO1FBQ0YsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUM1QixTQUFTO1FBQ0EsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUNoQyxhQUFhO1FBQ0osZ0JBQVcsR0FBVyxNQUFNLENBQUM7UUFDdEMsYUFBYTtRQUNKLGtCQUFhLEdBQVcsYUFBYSxDQUFDO1FBQy9DLFNBQVM7UUFDRCxXQUFNLEdBQVksSUFBSSxDQUFDO1FBTy9CLFdBQVc7UUFDSCxjQUFTLEdBQVksS0FBSyxDQUFDO1FBUzNCLG9CQUFlLEdBQTJDLElBQUksQ0FBQztRQUMvRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFDbEMsa0JBQWEsR0FBNkIsSUFBSSxDQUFDO1FBQy9DLHFCQUFnQixHQUFRLElBQUksQ0FBQztRQUluQyxTQUFTO1FB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aUJBQzNDOzRIQUdXLFNBQVM7c0JBQWxCLE1BQU07Z0JBRUcsUUFBUTtzQkFBakIsTUFBTTtnQkFHRSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBR08sT0FBTztzQkFBbkIsS0FBSztnQkFRTyxVQUFVO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25jLXZpZGVvLWVhc3knLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWRlby1lYXN5LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92aWRlby1lYXN5LmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZGVvRWFzeUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgLyoqIOi/lOWbnuaSreaUvueKtuaAgSAqL1xyXG4gIEBPdXRwdXQoKSBuY1BsYXlpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgLyoqIOi/lOWbnuaSreaUvuWZqCAqL1xyXG4gIEBPdXRwdXQoKSBuY0xvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAvKiog6KeG6aKR5Zyw5Z2AICovXHJcbiAgQElucHV0KCkgbmNVcmw6IHN0cmluZyA9ICcnO1xyXG4gIC8qKiDotoXml7YgKi9cclxuICBASW5wdXQoKSBuY1RpbWVvdXQ6IG51bWJlciA9IDEwO1xyXG4gIC8qKiDmkq3mlL7lpLHotKXmlofmoYggKi9cclxuICBASW5wdXQoKSBuY0Vycm9yVGV4dDogc3RyaW5nID0gJ+aSreaUvuWksei0pSc7XHJcbiAgLyoqIOaSreaUvui2heaXtuaWh+ahiCAqL1xyXG4gIEBJbnB1dCgpIG5jVGltZW91dFRleHQ6IHN0cmluZyA9ICfmkq3mlL7otoXml7bvvIzop4bpopHmupDml6Dlk43lupQnO1xyXG4gIC8qKiDpnZnpn7MgKi9cclxuICBwcml2YXRlIF9tdXRlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2V0IG5jTXV0ZWQodmFsdWU6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIHRoaXMuX211dGVkID0gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gZmFsc2UgJiYgdmFsdWUgIT09ICdmYWxzZSc7XHJcbiAgfVxyXG4gIGdldCBuY011dGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX211dGVkO1xyXG4gIH1cclxuICAvKiog6Ieq5Yqo5pKt5pS+ICovXHJcbiAgcHJpdmF0ZSBfYXV0b3BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZXQgbmNBdXRvcGxheSh2YWx1ZTogYm9vbGVhbiB8IHN0cmluZykge1xyXG4gICAgdGhpcy5fYXV0b3BsYXkgPSB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBmYWxzZSAmJiB2YWx1ZSAhPT0gJ2ZhbHNlJztcclxuICB9XHJcbiAgZ2V0IG5jQXV0b3BsYXkoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXV0b3BsYXk7XHJcbiAgfVxyXG5cclxuICB2aWV3ZXJVcmwhOiBTYWZlUmVzb3VyY2VVcmw7XHJcbiAgcHJpdmF0ZSBtZXNzYWdlTGlzdGVuZXI6ICgoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGVycm9yU3ViamVjdCA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwcml2YXRlIGlmcmFtZUVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBwbGF5ZXJDb250cm9sbGVyOiBhbnkgPSBudWxsO1xyXG4gIHByaXZhdGUgdW5pcXVlSWQ6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcclxuICAgIC8vIOeUn+aIkOWUr+S4gElEXHJcbiAgICB0aGlzLnVuaXF1ZUlkID0gYHZpZGVvX2Vhc3lfJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTEpfWA7XHJcbiAgICAvLyDnm5HlkKzmtojmga9cclxuICAgIHRoaXMubWVzc2FnZUxpc3RlbmVyID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50eXBlID09PSAnaWZyYW1lLW1lc3NhZ2UnKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnREYXRhOiBhbnkgPSBldmVudC5kYXRhO1xyXG4gICAgICAgIC8v5Y+q5aSE55CG5b2T5YmN6KeG6aKRaWZyYW1l55qE5raI5oGvXHJcbiAgICAgICAgLy/pmLLmraLkuIDmrKHnlKjlh6DkuKrnu4Tku7bvvIzlhbbkuK3kuIDkuKppZnJhbWXlj5Hmtojmga/vvIzmiYDmnInnu4Tku7bpg73mlLbliLBcclxuICAgICAgICBpZiAoZXZlbnREYXRhLnVuaXF1ZUlkICE9IHRoaXMudW5pcXVlSWQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChldmVudERhdGEpO1xyXG4gICAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSA9PSAncGxheScpIHtcclxuICAgICAgICAgIHRoaXMubmNQbGF5aW5nLmVtaXQodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudERhdGEubWVzc2FnZSA9PSAncGF1c2UnKSB7XHJcbiAgICAgICAgICB0aGlzLm5jUGxheWluZy5lbWl0KGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50RGF0YS5tZXNzYWdlID09ICdsb2FkZWQnKSB7XHJcbiAgICAgICAgICB0aGlzLnBsYXllckNvbnRyb2xsZXIgPSB7XHJcbiAgICAgICAgICAgIHBhdXNlOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZW5kQ29tbWFuZFRvSWZyYW1lKCdwYXVzZScpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwbGF5OiAodXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbmRDb21tYW5kVG9JZnJhbWUoJ3BsYXknLCB1cmwpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzZXRNdXRlOiAobXV0ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2VuZENvbW1hbmRUb0lmcmFtZSgnc2V0TXV0ZScsIG11dGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBkZXN0cm95OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZW5kQ29tbWFuZFRvSWZyYW1lKCdkZXN0cm95Jyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubmNMb2FkZWQuZW1pdCh0aGlzLnBsYXllckNvbnRyb2xsZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMubWVzc2FnZUxpc3RlbmVyKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vIOiOt+WPliBpZnJhbWUg5YWD57SgXHJcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmVsZVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpO1xyXG4gICAgaWYgKGlmcmFtZSkge1xyXG4gICAgICB0aGlzLmlmcmFtZUVsZW1lbnQgPSBpZnJhbWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1snbmNVcmwnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpZGVvVXJsKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VuZENvbW1hbmRUb0lmcmFtZSgnZGVzdHJveScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaWRlb1VybCgpIHtcclxuICAgIGNvbnN0IGlmcmFtZVVybCA9IGBhc3NldHMvZWFzeXBsYXllci1qcy92aWV3ZXIuaHRtbD91cmw9JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5uY1VybCl9JmF1dG9wbGF5PSR7dGhpcy5uY0F1dG9wbGF5fSZtdXRlZD0ke3RoaXMubmNNdXRlZH0mdW5pcXVlSWQ9JHt0aGlzLnVuaXF1ZUlkfSZ0aW1lb3V0PSR7dGhpcy5uY1RpbWVvdXR9JmVycm9yVGV4dD0ke3RoaXMubmNFcnJvclRleHR9JnRpbWVvdXRUZXh0PSR7dGhpcy5uY1RpbWVvdXRUZXh0fWA7XHJcbiAgICB0aGlzLnZpZXdlclVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChpZnJhbWVVcmwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZW5kQ29tbWFuZFRvSWZyYW1lKGNvbW1hbmQ6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5pZnJhbWVFbGVtZW50ICYmIHRoaXMuaWZyYW1lRWxlbWVudC5jb250ZW50V2luZG93KSB7XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XHJcbiAgICAgICAgdHlwZTogJ3BsYXllci1jb21tYW5kJyxcclxuICAgICAgICBjb21tYW5kOiBjb21tYW5kLFxyXG4gICAgICAgIHBhcmFtczogcGFyYW1zXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuaWZyYW1lRWxlbWVudC5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKG1lc3NhZ2UsICcqJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuYy12aWRlby1lYXN5LWNvbnRhaW5lclwiPlxyXG4gICAgPGlmcmFtZSBbc3JjXT1cInZpZXdlclVybFwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiBbYXR0ci5mcmFtZUJvcmRlcl09XCIwXCIgc3R5bGU9XCJib3JkZXI6IG5vbmU7XCI+XHJcbiAgICA8L2lmcmFtZT5cclxuPC9kaXY+Il19