Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/notanexus.git
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();
  }
}