import { errorHandle, query, addClass } from './utils'; export default class Template { constructor(art) { this.art = art; this.art.query = this.query.bind(this); if (art.option.container instanceof Element) { this.$container = art.option.container; } else { this.$container = query(art.option.container); errorHandle(this.$container, `No container element found by ${art.option.container}`); } errorHandle( art.constructor.instances.every((ins) => ins.template.$container !== this.$container), 'Cannot mount multiple instances on the same dom element', ); if (art.whitelist.state) { this.desktop(); } else { this.mobile(); } } static get html() { return `
Player version:
__VERSION__
Video url:
Video volume:
Video time:
Video duration:
Video resolution:
x
[x]
×
`; } query(className) { return query(className, this.$container); } desktop() { const { backdrop, theme, useSSR } = this.art.option; if (!useSSR) { this.$container.innerHTML = Template.html; } this.$player = this.query('.art-video-player'); this.$video = this.query('.art-video'); this.$poster = this.query('.art-poster'); this.$subtitle = this.query('.art-subtitle'); this.$danmuku = this.query('.art-danmuku'); this.$bottom = this.query('.art-bottom'); this.$progress = this.query('.art-progress'); this.$controls = this.query('.art-controls'); this.$controlsLeft = this.query('.art-controls-left'); this.$controlsRight = this.query('.art-controls-right'); this.$layer = this.query('.art-layers'); this.$loading = this.query('.art-loading'); this.$notice = this.query('.art-notice'); this.$noticeInner = this.query('.art-notice-inner'); this.$mask = this.query('.art-mask'); this.$state = this.query('.art-state'); this.$setting = this.query('.art-settings'); this.$settingInner = this.query('.art-setting-inner'); this.$settingBody = this.query('.art-setting-body'); this.$info = this.query('.art-info'); this.$infoPanel = this.query('.art-info-panel'); this.$infoClose = this.query('.art-info-close'); this.$miniHeader = this.query('.art-mini-header'); this.$miniTitle = this.query('.art-mini-title'); this.$miniClose = this.query('.art-mini-close'); this.$contextmenu = this.query('.art-contextmenus'); this.$player.style.setProperty('--theme', theme); if (backdrop) { addClass(this.$settingInner, 'art-backdrop-filter'); addClass(this.$contextmenu, 'art-backdrop-filter'); addClass(this.$info, 'art-backdrop-filter'); } if (this.art.isMobile) { addClass(this.$container, 'art-mobile'); } } mobile() { this.$container.innerHTML = `
`; this.$player = this.query('.art-video-player'); this.$video = this.query('.art-video'); } destroy(removeHtml) { if (removeHtml) { this.$container.innerHTML = ''; } else { addClass(this.$player, 'art-destroy'); } } }