// eslint-disable-next-line import/named, import/namespace import { Archive } from 'libarchive.js'; import loading from '../../components/loading/loading'; import dialogHelper from '../../components/dialogHelper/dialogHelper'; import keyboardnavigation from '../../scripts/keyboardNavigation'; import { appRouter } from '../../components/appRouter'; import ServerConnections from '../../components/ServerConnections'; // eslint-disable-next-line import/named, import/namespace import { Swiper } from 'swiper/swiper-bundle.esm'; import 'swiper/swiper-bundle.css'; import './style.scss'; export class ComicsPlayer { constructor() { this.name = 'Comics Player'; this.type = 'mediaplayer'; this.id = 'comicsplayer'; this.priority = 1; this.imageMap = new Map(); this.onDialogClosed = this.onDialogClosed.bind(this); this.onWindowKeyUp = this.onWindowKeyUp.bind(this); } play(options) { this.progress = 0; const elem = this.createMediaElement(); return this.setCurrentSrc(elem, options); } stop() { this.unbindEvents(); this.archiveSource?.release(); const elem = this.mediaElement; if (elem) { dialogHelper.close(elem); this.mediaElement = null; } loading.hide(); } onDialogClosed() { this.stop(); } onWindowKeyUp(e) { const key = keyboardnavigation.getKeyName(e); switch (key) { case 'Escape': this.stop(); break; } } bindMediaElementEvents() { const elem = this.mediaElement; elem?.addEventListener('close', this.onDialogClosed, {once: true}); elem?.querySelector('.btnExit').addEventListener('click', this.onDialogClosed, {once: true}); } bindEvents() { this.bindMediaElementEvents(); document.addEventListener('keyup', this.onWindowKeyUp); } unbindMediaElementEvents() { const elem = this.mediaElement; elem?.removeEventListener('close', this.onDialogClosed); elem?.querySelector('.btnExit').removeEventListener('click', this.onDialogClosed); } unbindEvents() { this.unbindMediaElementEvents(); document.removeEventListener('keyup', this.onWindowKeyUp); } createMediaElement() { let elem = this.mediaElement; if (elem) { return elem; } elem = document.getElementById('comicsPlayer'); if (!elem) { elem = dialogHelper.createDialog({ exitAnimationDuration: 400, size: 'fullscreen', autoFocus: false, scrollY: false, exitAnimation: 'fadeout', removeOnClose: true }); elem.id = 'comicsPlayer'; elem.classList.add('slideshowDialog'); elem.innerHTML = `