import dialogHelper from '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 = '