export default class Summary { constructor(highlighter, toolbar) { this.highlighter = highlighter; this.summaryDialog = null; this._createButton(toolbar); } _createButton(toolbar) { this.summaryButton = document.createElement('button'); this.summaryButton.textContent = '📋'; this.summaryButton.className = 'navButton summaryButton'; this.summaryButton.addEventListener('click', () => this.showSummary()); if (toolbar) { toolbar.appendChild(this.summaryButton); } } showSummary() { if (this.summaryDialog) { this.summaryDialog.remove(); } const dialog = document.createElement('div'); dialog.className = 'summaryDialog'; const closeButton = document.createElement('button'); closeButton.textContent = '×'; closeButton.className = 'summaryCloseButton'; closeButton.addEventListener('click', () => this.closeSummary()); const content = document.createElement('textarea'); content.className = 'summaryContent'; content.readOnly = true; content.value = this._generateSummary(); dialog.appendChild(closeButton); dialog.appendChild(content); document.body.appendChild(dialog); this.summaryDialog = dialog; } closeSummary() { if (this.summaryDialog) { this.summaryDialog.remove(); this.summaryDialog = null; } } _generateSummary() { let summary = ""; this.highlighter.forEachAnnotation(annotation => { summary += annotation.toString(); }); return summary.trim(); } }