File size: 4,339 Bytes
41e1749
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18fcb1a
 
 
 
 
 
 
 
 
 
 
41e1749
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18fcb1a
 
 
 
 
41e1749
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
// Document management — UI wiring and initialization

function initDocuments() {
  const importBtn = document.getElementById('doc-import-btn');
  const importInput = document.getElementById('doc-import-input');
  const exportTrigger = document.getElementById('doc-export-trigger');
  const exportMenu = document.getElementById('doc-export-menu');
  const mobileExportTrigger = document.getElementById('doc-mobile-export-trigger');
  const exportSheet = document.getElementById('doc-export-sheet');

  if (importBtn && importInput) {
    importBtn.addEventListener('click', () => importInput.click());
    importInput.addEventListener('change', (e) => {
      const file = e.target.files && e.target.files[0];
      if (file) handleImportFile(file);
      importInput.value = '';
    });
  }

  if (exportTrigger && exportMenu) {
    exportTrigger.addEventListener('click', (e) => {
      e.stopPropagation();
      const open = exportMenu.classList.toggle('is-open');
      exportTrigger.setAttribute('aria-expanded', open ? 'true' : 'false');
    });

    exportMenu.querySelectorAll('[data-export-format]').forEach((item) => {
      item.addEventListener('click', (e) => {
        e.stopPropagation();
        const format = item.dataset.exportFormat;
        closeExportMenu();
        if (format === 'txt') exportTxtFile();
        else if (format === 'docx') exportDocxFile();
        else if (format === 'pdf') exportPdfFile();
      });
    });
  }

  // Summary export dropdown
  const summExportTrigger = document.getElementById('summary-export-trigger');
  const summExportMenu = document.getElementById('summary-export-menu');
  if (summExportTrigger && summExportMenu) {
    summExportTrigger.addEventListener('click', (e) => {
      e.stopPropagation();
      const open = summExportMenu.classList.toggle('is-open');
      summExportTrigger.setAttribute('aria-expanded', open ? 'true' : 'false');
    });
  }

  if (mobileExportTrigger && exportSheet) {
    mobileExportTrigger.addEventListener('click', () => {
      exportSheet.classList.add('open');
      exportSheet.setAttribute('aria-hidden', 'false');
      mobileExportTrigger.setAttribute('aria-expanded', 'true');
    });

    const backdrop = document.getElementById('doc-export-sheet-backdrop');
    const closeBtn = document.getElementById('doc-export-sheet-close');
    const close = () => {
      exportSheet.classList.remove('open');
      exportSheet.setAttribute('aria-hidden', 'true');
      mobileExportTrigger.setAttribute('aria-expanded', 'false');
    };
    if (backdrop) backdrop.addEventListener('click', close);
    if (closeBtn) closeBtn.addEventListener('click', close);

    exportSheet.querySelectorAll('[data-export-format]').forEach((item) => {
      item.addEventListener('click', () => {
        const format = item.dataset.exportFormat;
        close();
        if (format === 'txt') exportTxtFile();
        else if (format === 'docx') exportDocxFile();
        else if (format === 'pdf') exportPdfFile();
      });
    });
  }

  document.addEventListener('click', () => closeExportMenu());

  document.addEventListener('keydown', (e) => {
    if (e.key === 'Escape') {
      closeExportMenu();
      const sheet = document.getElementById('doc-export-sheet');
      if (sheet && sheet.classList.contains('open')) {
        sheet.classList.remove('open');
        sheet.setAttribute('aria-hidden', 'true');
        const mobileTrigger = document.getElementById('doc-mobile-export-trigger');
        if (mobileTrigger) mobileTrigger.setAttribute('aria-expanded', 'false');
      }
    }
  });

  const editor = getEditorElement();
  if (editor) {
    editor.addEventListener('input', () => {
      updateExportButtonStates();
    });
  }

  updateExportButtonStates();
}

function closeExportMenu() {
  const menu = document.getElementById('doc-export-menu');
  const trigger = document.getElementById('doc-export-trigger');
  if (menu) menu.classList.remove('is-open');
  if (trigger) trigger.setAttribute('aria-expanded', 'false');
  // Also close summary export menu
  const summMenu = document.getElementById('summary-export-menu');
  const summTrigger = document.getElementById('summary-export-trigger');
  if (summMenu) summMenu.classList.remove('is-open');
  if (summTrigger) summTrigger.setAttribute('aria-expanded', 'false');
}