Files
ArtPlayer/packages/artplayer/src/plugins/lock.js
T

66 lines
1.5 KiB
JavaScript

import { append, setStyle, hasClass, addClass, removeClass } from '../utils';
export default function lock(art) {
const {
layers,
icons,
template: { $player },
} = art;
function getState() {
return hasClass($player, 'art-lock');
}
function setLock() {
addClass($player, 'art-lock');
art.isLock = true;
art.emit('lock', true);
}
function setUnlock() {
removeClass($player, 'art-lock');
art.isLock = false;
art.emit('lock', false);
}
layers.add({
name: 'lock',
mounted($el) {
const $lock = append($el, icons.lock);
const $unlock = append($el, icons.unlock);
setStyle($lock, 'display', 'none');
art.on('lock', (state) => {
if (state) {
setStyle($lock, 'display', 'inline-flex');
setStyle($unlock, 'display', 'none');
} else {
setStyle($lock, 'display', 'none');
setStyle($unlock, 'display', 'inline-flex');
}
});
},
click() {
if (getState()) {
setUnlock();
} else {
setLock();
}
},
});
return {
name: 'lock',
get state() {
return getState();
},
set state(value) {
if (value) {
setLock();
} else {
setUnlock();
}
},
};
}