@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
89 lines • 10.1 kB
JavaScript
import { Directive, EventEmitter, Input, Output } from '@angular/core';
import { tuiInjectElement } from '@taiga-ui/cdk/utils';
import * as i0 from "@angular/core";
class TuiMedia {
constructor() {
this.el = tuiInjectElement();
this.playbackRate = 1;
this.volume = 1;
this.currentTimeChange = new EventEmitter();
this.pausedChange = new EventEmitter();
this.volumeChange = new EventEmitter();
}
set playbackRateSetter(playbackRate) {
this.updatePlaybackRate(playbackRate);
}
set currentTime(currentTime) {
if (Math.abs(currentTime - this.currentTime) > 0.05) {
this.el.currentTime = currentTime;
}
}
set paused(paused) {
if (paused) {
this.el.pause?.();
}
else {
void this.el.play?.();
this.updatePlaybackRate(this.playbackRate);
}
}
get currentTime() {
return this.el.currentTime ?? 0;
}
get paused() {
return this.el.paused;
}
onPausedChange(paused) {
this.pausedChange.emit(paused);
this.updatePlaybackRate(this.playbackRate);
}
onVolumeChange() {
this.volume = this.el.volume;
this.volumeChange.emit(this.volume);
}
onCurrentTimeChange() {
this.currentTimeChange.emit(this.currentTime);
}
updatePlaybackRate(playbackRate) {
this.playbackRate = playbackRate;
this.el.playbackRate = this.playbackRate;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMedia, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiMedia, isStandalone: true, selector: "video[tuiMedia], audio[tuiMedia]", inputs: { volume: "volume", playbackRateSetter: ["playbackRate", "playbackRateSetter"], currentTime: "currentTime", paused: "paused" }, outputs: { currentTimeChange: "currentTimeChange", pausedChange: "pausedChange", volumeChange: "volumeChange" }, host: { listeners: { "durationchange": "0", "ended": "onPausedChange(true)", "pause": "onPausedChange(true)", "play": "onPausedChange(false)", "volumechange": "onVolumeChange()", "timeupdate": "onCurrentTimeChange()", "seeking": "onCurrentTimeChange()", "seeked": "onCurrentTimeChange()" }, properties: { "volume": "volume" } }, exportAs: ["tuiMedia"], ngImport: i0 }); }
}
export { TuiMedia };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiMedia, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: 'video[tuiMedia], audio[tuiMedia]',
exportAs: 'tuiMedia',
host: {
'[volume]': 'volume',
'(durationchange)': '0',
'(ended)': 'onPausedChange(true)',
'(pause)': 'onPausedChange(true)',
'(play)': 'onPausedChange(false)',
'(volumechange)': 'onVolumeChange()',
'(timeupdate)': 'onCurrentTimeChange()',
'(seeking)': 'onCurrentTimeChange()',
'(seeked)': 'onCurrentTimeChange()',
},
}]
}], propDecorators: { volume: [{
type: Input
}], currentTimeChange: [{
type: Output
}], pausedChange: [{
type: Output
}], volumeChange: [{
type: Output
}], playbackRateSetter: [{
type: Input,
args: ['playbackRate']
}], currentTime: [{
type: Input
}], paused: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RpcmVjdGl2ZXMvbWVkaWEvbWVkaWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7O0FBRXJELE1BZ0JhLFFBQVE7SUFoQnJCO1FBaUJxQixPQUFFLEdBQUcsZ0JBQWdCLEVBQW9CLENBQUM7UUFFbkQsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFHbEIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQUdGLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHL0MsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRzNDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQWtEN0Q7SUFoREcsSUFDVyxrQkFBa0IsQ0FBQyxZQUFvQjtRQUM5QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQ1csV0FBVyxDQUFDLFdBQW1CO1FBQ3RDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksRUFBRTtZQUNqRCxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7U0FDckM7SUFDTCxDQUFDO0lBRUQsSUFDVyxNQUFNLENBQUMsTUFBZTtRQUM3QixJQUFJLE1BQU0sRUFBRTtZQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztTQUNyQjthQUFNO1lBQ0gsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM5QztJQUNMLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDMUIsQ0FBQztJQUVTLGNBQWMsQ0FBQyxNQUFlO1FBQ3BDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVTLGNBQWM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsWUFBb0I7UUFDM0MsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QyxDQUFDOytHQWhFUSxRQUFRO21HQUFSLFFBQVE7O1NBQVIsUUFBUTs0RkFBUixRQUFRO2tCQWhCcEIsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLElBQUksRUFBRTt3QkFDRixVQUFVLEVBQUUsUUFBUTt3QkFDcEIsa0JBQWtCLEVBQUUsR0FBRzt3QkFDdkIsU0FBUyxFQUFFLHNCQUFzQjt3QkFDakMsU0FBUyxFQUFFLHNCQUFzQjt3QkFDakMsUUFBUSxFQUFFLHVCQUF1Qjt3QkFDakMsZ0JBQWdCLEVBQUUsa0JBQWtCO3dCQUNwQyxjQUFjLEVBQUUsdUJBQXVCO3dCQUN2QyxXQUFXLEVBQUUsdUJBQXVCO3dCQUNwQyxVQUFVLEVBQUUsdUJBQXVCO3FCQUN0QztpQkFDSjs4QkFPVSxNQUFNO3NCQURaLEtBQUs7Z0JBSVUsaUJBQWlCO3NCQURoQyxNQUFNO2dCQUlTLFlBQVk7c0JBRDNCLE1BQU07Z0JBSVMsWUFBWTtzQkFEM0IsTUFBTTtnQkFJSSxrQkFBa0I7c0JBRDVCLEtBQUs7dUJBQUMsY0FBYztnQkFNVixXQUFXO3NCQURyQixLQUFLO2dCQVFLLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICd2aWRlb1t0dWlNZWRpYV0sIGF1ZGlvW3R1aU1lZGlhXScsXG4gICAgZXhwb3J0QXM6ICd0dWlNZWRpYScsXG4gICAgaG9zdDoge1xuICAgICAgICAnW3ZvbHVtZV0nOiAndm9sdW1lJyxcbiAgICAgICAgJyhkdXJhdGlvbmNoYW5nZSknOiAnMCcsXG4gICAgICAgICcoZW5kZWQpJzogJ29uUGF1c2VkQ2hhbmdlKHRydWUpJyxcbiAgICAgICAgJyhwYXVzZSknOiAnb25QYXVzZWRDaGFuZ2UodHJ1ZSknLFxuICAgICAgICAnKHBsYXkpJzogJ29uUGF1c2VkQ2hhbmdlKGZhbHNlKScsXG4gICAgICAgICcodm9sdW1lY2hhbmdlKSc6ICdvblZvbHVtZUNoYW5nZSgpJyxcbiAgICAgICAgJyh0aW1ldXBkYXRlKSc6ICdvbkN1cnJlbnRUaW1lQ2hhbmdlKCknLFxuICAgICAgICAnKHNlZWtpbmcpJzogJ29uQ3VycmVudFRpbWVDaGFuZ2UoKScsXG4gICAgICAgICcoc2Vla2VkKSc6ICdvbkN1cnJlbnRUaW1lQ2hhbmdlKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aU1lZGlhIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudDxIVE1MTWVkaWFFbGVtZW50PigpO1xuXG4gICAgcHJpdmF0ZSBwbGF5YmFja1JhdGUgPSAxO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdm9sdW1lID0gMTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjdXJyZW50VGltZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IHBhdXNlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB2b2x1bWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBJbnB1dCgncGxheWJhY2tSYXRlJylcbiAgICBwdWJsaWMgc2V0IHBsYXliYWNrUmF0ZVNldHRlcihwbGF5YmFja1JhdGU6IG51bWJlcikge1xuICAgICAgICB0aGlzLnVwZGF0ZVBsYXliYWNrUmF0ZShwbGF5YmFja1JhdGUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBjdXJyZW50VGltZShjdXJyZW50VGltZTogbnVtYmVyKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhjdXJyZW50VGltZSAtIHRoaXMuY3VycmVudFRpbWUpID4gMC4wNSkge1xuICAgICAgICAgICAgdGhpcy5lbC5jdXJyZW50VGltZSA9IGN1cnJlbnRUaW1lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHBhdXNlZChwYXVzZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHBhdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5lbC5wYXVzZT8uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2b2lkIHRoaXMuZWwucGxheT8uKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBsYXliYWNrUmF0ZSh0aGlzLnBsYXliYWNrUmF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbnRUaW1lKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLmN1cnJlbnRUaW1lID8/IDA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXVzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLnBhdXNlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25QYXVzZWRDaGFuZ2UocGF1c2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGF1c2VkQ2hhbmdlLmVtaXQocGF1c2VkKTtcbiAgICAgICAgdGhpcy51cGRhdGVQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblZvbHVtZUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52b2x1bWUgPSB0aGlzLmVsLnZvbHVtZTtcbiAgICAgICAgdGhpcy52b2x1bWVDaGFuZ2UuZW1pdCh0aGlzLnZvbHVtZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQ3VycmVudFRpbWVDaGFuZ2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFRpbWVDaGFuZ2UuZW1pdCh0aGlzLmN1cnJlbnRUaW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVBsYXliYWNrUmF0ZShwbGF5YmFja1JhdGU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnBsYXliYWNrUmF0ZSA9IHBsYXliYWNrUmF0ZTtcbiAgICAgICAgdGhpcy5lbC5wbGF5YmFja1JhdGUgPSB0aGlzLnBsYXliYWNrUmF0ZTtcbiAgICB9XG59XG4iXX0=