UNPKG

@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
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=