mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-26 00:31:20 -08:00
提取共用方法
This commit is contained in:
1 parent
48ade99047
commit
7a84c262da
45 files changed
+242
-257
No files matched your search
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip, setStyle } from '../utils';
|
||||
|
||||
export default function fullscreen(controlOption) {
|
||||
export default function fullscreen(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip, setStyle } from '../utils';
|
||||
|
||||
export default function fullscreenWeb(controlOption) {
|
||||
export default function fullscreenWeb(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
@@ -10,7 +10,7 @@ export default function fullscreenWeb(controlOption) {
|
||||
i18n,
|
||||
player,
|
||||
} = art;
|
||||
|
||||
|
||||
const $fullscreenWeb = append($control, icons.fullscreenWeb);
|
||||
tooltip($fullscreenWeb, i18n.get('Web fullscreen'));
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { errorHandle } from '../utils';
|
||||
import { errorHandle, addClass, removeClass } from '../utils';
|
||||
import component from '../utils/component';
|
||||
import fullscreen from './fullscreen';
|
||||
import fullscreenWeb from './fullscreenWeb';
|
||||
@@ -156,15 +156,15 @@ export default class Controls {
|
||||
break;
|
||||
}
|
||||
|
||||
errorHandle(parent, 'Controls option.position can not be empty');
|
||||
this.id += 1;
|
||||
errorHandle(option.position, 'Controls option.position can not be empty');
|
||||
const control = component(this.art, this, parent, option, callback, 'control');
|
||||
if (
|
||||
!option.disable &&
|
||||
option.position !== 'top' &&
|
||||
!(control.$ref.firstElementChild && control.$ref.firstElementChild.tagName === 'I')
|
||||
) {
|
||||
control.$ref.classList.add('art-control-onlyText');
|
||||
addClass(control.$ref, 'art-control-onlyText');
|
||||
}
|
||||
return control;
|
||||
}
|
||||
@@ -173,11 +173,11 @@ export default class Controls {
|
||||
const { $player } = this.art.template;
|
||||
if (value) {
|
||||
this.state = true;
|
||||
$player.classList.add('artplayer-controls-show');
|
||||
addClass($player, 'artplayer-controls-show');
|
||||
this.art.emit('controls:show');
|
||||
} else {
|
||||
this.state = false;
|
||||
$player.classList.remove('artplayer-controls-show');
|
||||
removeClass($player, 'artplayer-controls-show');
|
||||
this.art.emit('controls:hide');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip } from '../utils';
|
||||
|
||||
export default function pip(controlOption) {
|
||||
export default function pip(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip, setStyle } from '../utils';
|
||||
|
||||
export default function playAndPause(controlOption) {
|
||||
export default function playAndPause(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { append, clamp, secondToTime, setStyle, getStyle } from '../utils';
|
||||
import { append, clamp, secondToTime, setStyle, getStyle, query, addClass, removeClass } from '../utils';
|
||||
|
||||
export function getPosFromEvent(art, event) {
|
||||
const {
|
||||
template: { $progress },
|
||||
player,
|
||||
} = art;
|
||||
|
||||
|
||||
const { left } = $progress.getBoundingClientRect();
|
||||
const width = clamp(event.pageX - left, 0, $progress.clientWidth);
|
||||
const second = (width / $progress.clientWidth) * player.duration;
|
||||
@@ -14,7 +14,7 @@ export function getPosFromEvent(art, event) {
|
||||
return { second, time, width, percentage };
|
||||
}
|
||||
|
||||
export default function progress(controlOption) {
|
||||
export default function progress(option) {
|
||||
return art => {
|
||||
const {
|
||||
option: { highlight, theme },
|
||||
@@ -22,7 +22,7 @@ export default function progress(controlOption) {
|
||||
player,
|
||||
} = art;
|
||||
return {
|
||||
...controlOption,
|
||||
...option,
|
||||
html: `
|
||||
<div class="art-control-progress-inner">
|
||||
<div class="art-progress-loaded"></div>
|
||||
@@ -34,11 +34,11 @@ export default function progress(controlOption) {
|
||||
`,
|
||||
mounted: $control => {
|
||||
let isDroging = false;
|
||||
const $loaded = $control.querySelector('.art-progress-loaded');
|
||||
const $played = $control.querySelector('.art-progress-played');
|
||||
const $highlight = $control.querySelector('.art-progress-highlight');
|
||||
const $indicator = $control.querySelector('.art-progress-indicator');
|
||||
const $tip = $control.querySelector('.art-progress-tip');
|
||||
const $loaded = query('.art-progress-loaded', $control);
|
||||
const $played = query('.art-progress-played', $control);
|
||||
const $highlight = query('.art-progress-highlight', $control);
|
||||
const $indicator = query('.art-progress-indicator', $control);
|
||||
const $tip = query('.art-progress-tip', $control);
|
||||
|
||||
function showHighlight(event) {
|
||||
const { width } = getPosFromEvent(art, event);
|
||||
@@ -132,7 +132,7 @@ export default function progress(controlOption) {
|
||||
proxy(document, 'mousemove', event => {
|
||||
if (isDroging) {
|
||||
const { second, percentage } = getPosFromEvent(art, event);
|
||||
$indicator.classList.add('art-show-indicator');
|
||||
addClass($indicator, 'art-show-indicator');
|
||||
setBar('played', percentage);
|
||||
player.seek = second;
|
||||
}
|
||||
@@ -141,7 +141,7 @@ export default function progress(controlOption) {
|
||||
proxy(document, 'mouseup', () => {
|
||||
if (isDroging) {
|
||||
isDroging = false;
|
||||
$indicator.classList.remove('art-show-indicator');
|
||||
removeClass($indicator, 'art-show-indicator');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
import { append, getStyle } from '../utils';
|
||||
|
||||
export default function quality(controlOption) {
|
||||
export default function quality(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
option,
|
||||
option: { quality },
|
||||
events: { proxy, hover },
|
||||
player,
|
||||
} = art;
|
||||
|
||||
|
||||
let playIndex = -1;
|
||||
const defaultQuality = option.quality.find(item => item.default) || option.quality[0];
|
||||
playIndex = option.quality.indexOf(defaultQuality);
|
||||
const defaultQuality = quality.find(item => item.default) || quality[0];
|
||||
playIndex = quality.indexOf(defaultQuality);
|
||||
const $qualityName = append($control, `<div class="art-quality-name">${defaultQuality.name}</div>`);
|
||||
const qualityList = option.quality
|
||||
const qualityList = quality
|
||||
.map((item, index) => `<div class="art-quality-item" data-index="${index}">${item.name}</div>`)
|
||||
.join('');
|
||||
const $qualitys = append($control, `<div class="art-qualitys">${qualityList}</div>`);
|
||||
@@ -25,7 +25,7 @@ export default function quality(controlOption) {
|
||||
|
||||
proxy($qualitys, 'click', event => {
|
||||
const index = Number(event.target.dataset.index);
|
||||
const { url, name } = option.quality[index];
|
||||
const { url, name } = quality[index];
|
||||
if (url && name && playIndex !== index) {
|
||||
player.switchQuality(url, name);
|
||||
$qualityName.innerHTML = name;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip } from '../utils';
|
||||
|
||||
export default function screenshot(controlOption) {
|
||||
export default function screenshot(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
@@ -10,7 +10,7 @@ export default function screenshot(controlOption) {
|
||||
i18n,
|
||||
player,
|
||||
} = art;
|
||||
|
||||
|
||||
const $screenshot = append($control, icons.screenshot);
|
||||
tooltip($screenshot, i18n.get('Screenshot'));
|
||||
proxy($screenshot, 'click', () => {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip, setStyle } from '../utils';
|
||||
|
||||
export default function setting(controlOption) {
|
||||
export default function setting(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
@@ -10,7 +10,7 @@ export default function setting(controlOption) {
|
||||
i18n,
|
||||
setting,
|
||||
} = art;
|
||||
|
||||
|
||||
const $setting = append($control, icons.setting);
|
||||
tooltip($setting, i18n.get('Show setting'));
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, tooltip, setStyle } from '../utils';
|
||||
|
||||
export default function subtitle(controlOption) {
|
||||
export default function subtitle(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
@@ -10,7 +10,7 @@ export default function subtitle(controlOption) {
|
||||
i18n,
|
||||
subtitle,
|
||||
} = art;
|
||||
|
||||
|
||||
const $subtitle = append($control, icons.subtitle);
|
||||
tooltip($subtitle, i18n.get('Hide subtitle'));
|
||||
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
import { setStyle } from '../utils';
|
||||
import { getPosFromEvent } from './progress';
|
||||
|
||||
export default function thumbnails(controlOption) {
|
||||
export default function thumbnails(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
option: { thumbnails },
|
||||
template: { $progress },
|
||||
events: { proxy, loadImg },
|
||||
} = art;
|
||||
|
||||
|
||||
let loading = false;
|
||||
let isLoad = false;
|
||||
|
||||
function showThumbnails(event) {
|
||||
const { width: posWidth } = getPosFromEvent(art, event);
|
||||
const { url, height, width, number, column } = art.option.thumbnails;
|
||||
const { url, height, width, number, column } = thumbnails;
|
||||
const perWidth = $progress.clientWidth / number;
|
||||
const perIndex = Math.floor(posWidth / perWidth);
|
||||
const yIndex = Math.ceil(perIndex / column) - 1;
|
||||
@@ -36,7 +37,7 @@ export default function thumbnails(controlOption) {
|
||||
proxy($progress, 'mousemove', event => {
|
||||
if (!loading) {
|
||||
loading = true;
|
||||
loadImg(art.option.thumbnails.url).then(() => {
|
||||
loadImg(thumbnails.url).then(() => {
|
||||
isLoad = true;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { secondToTime } from '../utils';
|
||||
|
||||
export default function time(controlOption) {
|
||||
export default function time(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
function getTime() {
|
||||
const newTime = `${secondToTime(art.player.currentTime)} / ${secondToTime(art.player.duration)}`;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { append, clamp, tooltip, setStyle, getStyle } from '../utils';
|
||||
|
||||
export default function volume(controlOption) {
|
||||
export default function volume(option) {
|
||||
return art => ({
|
||||
...controlOption,
|
||||
...option,
|
||||
mounted: $control => {
|
||||
const {
|
||||
events: { proxy },
|
||||
@@ -10,7 +10,7 @@ export default function volume(controlOption) {
|
||||
player,
|
||||
i18n,
|
||||
} = art;
|
||||
|
||||
|
||||
let isDroging = false;
|
||||
const $volume = append($control, icons.volume);
|
||||
const $volumeClose = append($control, icons.volumeClose);
|
||||
|
||||
Reference in new issue
Block a user