import dialogHelper from '../../components/dialogHelper/dialogHelper'; export default class TableOfContents { constructor(bookPlayer) { this.bookPlayer = bookPlayer; this.rendition = bookPlayer.rendition; this.onDialogClosed = this.onDialogClosed.bind(this); this.createMediaElement(); } destroy() { const elem = this.elem; if (elem) { this.unbindEvents(); dialogHelper.close(elem); } this.bookPlayer.tocElement = null; } bindEvents() { const elem = this.elem; elem.addEventListener('close', this.onDialogClosed, { once: true }); elem.querySelector('.btnBookplayerTocClose').addEventListener('click', this.onDialogClosed, { once: true }); } unbindEvents() { const elem = this.elem; elem.removeEventListener('close', this.onDialogClosed); elem.querySelector('.btnBookplayerTocClose').removeEventListener('click', this.onDialogClosed); } onDialogClosed() { this.destroy(); } replaceLinks(contents, f) { const links = contents.querySelectorAll('a[href]'); links.forEach((link) => { const href = link.getAttribute('href'); link.onclick = () => { f(href); return false; }; }); } createMediaElement() { const rendition = this.rendition; const elem = dialogHelper.createDialog({ size: 'small', autoFocus: false, removeOnClose: true }); elem.id = 'dialogToc'; let tocHtml = '