UNPKG

ng-plyr

Version:

An HTML5 media player for developers, built using Angular, having interface similar to Youtube player.

92 lines 10.4 kB
import { Injectable } from '@angular/core'; import { ErrorCodes } from '../models/error.model'; import { Playlist } from '../models/playlist.model'; import * as i0 from "@angular/core"; export class PlayerService { constructor() { } _checkForErrors(elements) { let check = new Set(elements); if (!this._plyr) throw new Error(ErrorCodes['player/not-initialized']); if (check?.has('video') && !this._plyr.video) throw new Error(ErrorCodes['video/element-not-initialized']); } // Accessing `this` from player component addComponentRef(plyrComponent) { this._plyr = plyrComponent; } removeComponentRef() { this._plyr = undefined; } // Public functions // Actions play() { this._checkForErrors(['video']); this._plyr.video?.nativeElement.play(); } pause() { this._checkForErrors(['video']); this._plyr.video?.nativeElement.pause(); } next() { this._checkForErrors(); this._plyr.playNextMedia(); } prev() { this._checkForErrors(); this._plyr.playPrevMedia(); } enableMediaLooping(loop = true) { this._checkForErrors(); this._plyr.isLoopingEnabled = loop; } enablePlaylistLooping(loop = true) { this._checkForErrors(); this._plyr.loopPlaylist = loop; } changeVolume(level) { this._checkForErrors(['video']); this._plyr.changeVolume(level); } seekTo(atSecond) { this._checkForErrors(['video']); this._plyr.seekTo(atSecond); } setPlaybackSpeed(rate) { this._checkForErrors(); this._plyr.setPlaybackSpeed(rate); } // Getter functions getCurrentlyPlaying() { this._checkForErrors(); return this._plyr.media; } getNextMedia() { this._checkForErrors(); return this._plyr.nextMedia; } getNumOfMediaInPlaylist() { this._checkForErrors(); return this._plyr.playlist.itemCount; } // Modify playlist addToPlaylist(mediaItems, atStart) { this._checkForErrors(); let items = Playlist.mediaArrToPaylistItems(mediaItems); this._plyr.playlist.appendPlaylist(items, atStart); } playNext(media) { this._checkForErrors(); let items = Playlist.mediaArrToPaylistItems([...media]); this._plyr.playlist.addNext(items); } } PlayerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PlayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); PlayerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PlayerService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PlayerService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcGx5ci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctcGx5ci9zcmMvbGliL3NlcnZpY2VzL25nLXBseXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBS3BELE1BQU0sT0FBTyxhQUFhO0lBR3hCLGdCQUFnQixDQUFDO0lBRVQsZUFBZSxDQUFDLFFBQW9CO1FBQzFDLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLEtBQUssRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7SUFDN0csQ0FBQztJQUVELHlDQUF5QztJQUN6QyxlQUFlLENBQUMsYUFBaUI7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUM7SUFDN0IsQ0FBQztJQUNELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztJQUN6QixDQUFDO0lBRUQsbUJBQW1CO0lBQ3BCLFVBQVU7SUFDVixJQUFJO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFD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dGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRXJyb3JDb2RlcyB9IGZyb20gJy4uL21vZGVscy9lcnJvci5tb2RlbCc7XHJcbmltcG9ydCB7IE1lZGlhIH0gZnJvbSAnLi4vbW9kZWxzL21lZGlhLm1vZGVsJztcclxuaW1wb3J0IHsgUGxheWxpc3QgfSBmcm9tICcuLi9tb2RlbHMvcGxheWxpc3QubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUGxheWVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBfcGx5cjphbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrRm9yRXJyb3JzKGVsZW1lbnRzPzpBcnJheTxhbnk+KSB7XHJcbiAgICBsZXQgY2hlY2sgPSBuZXcgU2V0KGVsZW1lbnRzKTtcclxuICAgIFxyXG4gICAgaWYgKCF0aGlzLl9wbHlyKSB0aHJvdyBuZXcgRXJyb3IoRXJyb3JDb2Rlc1sncGxheWVyL25vdC1pbml0aWFsaXplZCddKTtcclxuICAgIGlmIChjaGVjaz8uaGFzKCd2aWRlbycpICYmICF0aGlzLl9wbHlyLnZpZGVvKSB0aHJvdyBuZXcgRXJyb3IoRXJyb3JDb2Rlc1sndmlkZW8vZWxlbWVudC1ub3QtaW5pdGlhbGl6ZWQnXSk7XHJcbiAgfVxyXG5cclxuICAvLyBBY2Nlc3NpbmcgYHRoaXNgIGZyb20gcGxheWVyIGNvbXBvbmVudFxyXG4gIGFkZENvbXBvbmVudFJlZihwbHlyQ29tcG9uZW50OmFueSkge1xyXG4gICAgdGhpcy5fcGx5ciA9IHBseXJDb21wb25lbnQ7XHJcbiAgfVxyXG4gIHJlbW92ZUNvbXBvbmVudFJlZigpIHtcclxuICAgIHRoaXMuX3BseXIgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG4gIFxyXG4gIC8vIFB1YmxpYyBmdW5jdGlvbnNcclxuXHQvLyBBY3Rpb25zXHJcblx0cGxheSgpIHtcclxuICAgIHRoaXMuX2NoZWNrRm9yRXJyb3JzKFsndmlkZW8nXSk7XHJcbiAgICB0aGlzLl9wbHlyLnZpZGVvPy5uYXRpdmVFbGVtZW50LnBsYXkoKTtcclxuXHR9XHJcblx0cGF1c2UoKSB7XHJcbiAgICB0aGlzLl9jaGVja0ZvckVycm9ycyhbJ3ZpZGVvJ10pO1xyXG5cdFx0dGhpcy5fcGx5ci52aWRlbz8ubmF0aXZlRWxlbWVudC5wYXVzZSgpO1xyXG5cdH1cclxuXHJcblx0bmV4dCgpIHtcclxuICAgIHRoaXMuX2NoZWNrRm9yRXJyb3JzKCk7XHJcbiAgICB0aGlzLl9wbHlyLnBsYXlOZXh0TWVkaWEoKTtcclxuICB9XHJcblx0cHJldigpIHtcclxuICAgIHRoaXMuX2NoZWNrRm9yRXJyb3JzKCk7XHJcbiAgICB0aGlzLl9wbHlyLnBsYXlQcmV2TWVkaWEoKTtcclxuICB9XHJcblxyXG5cdGVuYWJsZU1lZGlhTG9vcGluZyhsb29wOmJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLl9jaGVja0ZvckVycm9ycygpO1xyXG4gICAgdGhpcy5fcGx5ci5pc0xvb3BpbmdFbmFibGVkID0gbG9vcDtcclxuICB9XHJcblx0ZW5hYmxlUGxheWxpc3RMb29waW5nKGxvb3A6Ym9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMuX2NoZWNrRm9yRXJyb3JzKCk7XHJcbiAgICB0aGlzLl9wbHlyLmxvb3BQbGF5bGlzdCA9IGxvb3A7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VWb2x1bWUobGV2ZWw6bnVtYmVyKSB7XHJcbiAgICB0aGlzLl9jaGVja0ZvckVycm9ycyhbJ3ZpZGVvJ10pO1xyXG4gICAgdGhpcy5fcGx5ci5jaGFuZ2VWb2x1bWUobGV2ZWwpO1xyXG4gIH1cclxuICBzZWVrVG8oYXRTZWNvbmQ6bnVtYmVyKSB7XHJcbiAgICB0aGlzLl9jaGVja0ZvckVycm9ycyhbJ3ZpZGVvJ10pO1xyXG4gICAgdGhpcy5fcGx5ci5zZWVrVG8oYXRTZWNvbmQpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGxheWJhY2tTcGVlZChyYXRlOm51bWJlcikge1xyXG4gICAgdGhpcy5fY2hlY2tGb3JFcnJvcnMoKTtcclxuICAgIHRoaXMuX3BseXIuc2V0UGxheWJhY2tTcGVlZChyYXRlKTtcclxuICB9XHJcblxyXG5cdC8vIEdldHRlciBmdW5jdGlvbnNcclxuXHRnZXRDdXJyZW50bHlQbGF5aW5nKCkge1xyXG4gICAgdGhpcy5fY2hlY2tGb3JFcnJvcnMoKTtcclxuXHRcdHJldHVybiB0aGlzLl9wbHlyLm1lZGlhO1xyXG5cdH1cclxuXHRnZXROZXh0TWVkaWEoKSB7XHJcbiAgICB0aGlzLl9jaGVja0ZvckVycm9ycygpO1xyXG5cdFx0cmV0dXJuIHRoaXMuX3BseXIubmV4dE1lZGlhO1xyXG5cdH1cclxuXHRnZXROdW1PZk1lZGlhSW5QbGF5bGlzdCgpIHtcclxuICAgIHRoaXMuX2NoZWNrRm9yRXJyb3JzKCk7XHJcblx0XHRyZXR1cm4gdGhpcy5fcGx5ci5wbGF5bGlzdC5pdGVtQ291bnQ7XHJcblx0fVxyXG5cclxuXHQvLyBNb2RpZnkgcGxheWxpc3RcclxuICBhZGRUb1BsYXlsaXN0KG1lZGlhSXRlbXM6TWVkaWFbXSwgYXRTdGFydD86Ym9vbGVhbikge1xyXG4gICAgdGhpcy5fY2hlY2tGb3JFcnJvcnMoKTtcclxuICAgIGxldCBpdGVtcyA9IFBsYXlsaXN0Lm1lZGlhQXJyVG9QYXlsaXN0SXRlbXMobWVkaWFJdGVtcyk7XHJcbiAgICB0aGlzLl9wbHlyLnBsYXlsaXN0LmFwcGVuZFBsYXlsaXN0KGl0ZW1zLCBhdFN0YXJ0KTtcclxuICB9XHJcbiAgcGxheU5leHQobWVkaWE6TWVkaWFbXSkge1xyXG4gICAgdGhpcy5fY2hlY2tGb3JFcnJvcnMoKTtcclxuICAgIGxldCBpdGVtcyA9IFBsYXlsaXN0Lm1lZGlhQXJyVG9QYXlsaXN0SXRlbXMoWy4uLm1lZGlhXSk7XHJcbiAgICB0aGlzLl9wbHlyLnBsYXlsaXN0LmFkZE5leHQoaXRlbXMpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19