mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-10 04:36:15 -08:00
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
import { clamp, sublings } from '../utils';
|
|
|
|
export default function playbackRateMix(art, player) {
|
|
const { refs: { $video, $player }, i18n, notice } = art;
|
|
|
|
Object.defineProperty(player, 'playbackRate', {
|
|
value: rate => {
|
|
const newRate = clamp(rate, 0.1, 10);
|
|
$video.playbackRate = newRate;
|
|
$player.dataset.playbackRate = newRate;
|
|
notice.show(`${i18n.get('Rate')}: ${newRate === 1 ? i18n.get('Normal') : `${newRate}x`}`);
|
|
art.emit('playbackRate', newRate);
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(player, 'playbackRateRemove', {
|
|
value: () => {
|
|
player.playbackRate(1);
|
|
delete $player.dataset.playbackRate;
|
|
if (art.contextmenu.$playbackRate) {
|
|
const $normal = art.contextmenu.$playbackRate.querySelector('.normal');
|
|
sublings($normal).forEach(item => item.classList.remove('current'));
|
|
$normal.classList.add('current');
|
|
}
|
|
}
|
|
});
|
|
|
|
Object.defineProperty(player, 'playbackRateReset', {
|
|
value: () => {
|
|
const { playbackRate } = $player.dataset;
|
|
if (playbackRate) {
|
|
player.playbackRate(Number(playbackRate));
|
|
}
|
|
}
|
|
});
|
|
}
|