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 = `
[x]
×
`; 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'); } } }