import { errorHandle } from './utils';
export default class Template {
constructor(art) {
this.art = art;
if (art.option.container instanceof Element) {
this.$container = art.option.container;
} else {
this.$container = document.querySelector(art.option.container);
errorHandle(this.$container, `No container element found by ${art.option.container}`);
}
errorHandle(
art.constructor.instances.every(art => art.template.$container !== this.$container),
'Cannot mount multiple instances on the same dom element',
);
errorHandle(
this.$container.clientWidth && this.$container.clientHeight,
'The width and height of the container cannot be 0',
);
if (art.whitelist.state) {
this.initDesktop();
} else {
this.initMobile();
}
}
initDesktop() {
this.$container.innerHTML = `
`;
this.$player = this.$container.querySelector('.artplayer-video-player');
this.$video = this.$container.querySelector('.artplayer-video');
this.$subtitle = this.$container.querySelector('.artplayer-subtitle');
this.$danmuku = this.$container.querySelector('.artplayer-danmuku');
this.$bottom = this.$container.querySelector('.artplayer-bottom');
this.$progress = this.$container.querySelector('.artplayer-progress');
this.$controls = this.$container.querySelector('.artplayer-controls');
this.$controlsLeft = this.$container.querySelector('.artplayer-controls-left');
this.$controlsRight = this.$container.querySelector('.artplayer-controls-right');
this.$layers = this.$container.querySelector('.artplayer-layers');
this.$loading = this.$container.querySelector('.artplayer-loading');
this.$notice = this.$container.querySelector('.artplayer-notice');
this.$noticeInner = this.$container.querySelector('.artplayer-notice-inner');
this.$mask = this.$container.querySelector('.artplayer-mask');
this.$setting = this.$container.querySelector('.artplayer-setting');
this.$settingInner = this.$container.querySelector('.artplayer-setting-inner');
this.$settingBody = this.$container.querySelector('.artplayer-setting-body');
this.$info = this.$container.querySelector('.artplayer-info');
this.$infoPanel = this.$container.querySelector('.artplayer-info-panel');
this.$infoClose = this.$container.querySelector('.artplayer-info-close');
this.$pipHeader = this.$container.querySelector('.artplayer-pip-header');
this.$pipTitle = this.$container.querySelector('.artplayer-pip-title');
this.$pipClose = this.$container.querySelector('.artplayer-pip-close');
this.$contextmenu = this.$container.querySelector('.artplayer-contextmenu');
}
initMobile() {
this.$container.innerHTML = `
`;
this.$player = this.$container.querySelector('.artplayer-video-player');
this.$video = this.$container.querySelector('.artplayer-video');
}
destroy(removeHtml) {
if (removeHtml) {
this.$container.innerHTML = '';
} else {
this.$player.classList.add('artplayer-destroy');
}
}
}