diff --git a/public/styles.css b/public/styles.css
index b362ac5..2b07807 100644
--- a/public/styles.css
+++ b/public/styles.css
@@ -2808,6 +2808,7 @@ body.ai-explore-dev-guest .search-input:disabled {
flex-shrink: 0;
}
.mm-minutes-edit,
+.mm-minutes-copy,
.mm-minutes-cancel {
font-size: 13px;
font-weight: 600;
diff --git a/views/meeting-minutes.ejs b/views/meeting-minutes.ejs
index 74493bf..48f9e0b 100644
--- a/views/meeting-minutes.ejs
+++ b/views/meeting-minutes.ejs
@@ -189,6 +189,7 @@
+
@@ -235,6 +236,7 @@
var minutesActionsView = document.getElementById('mmMinutesActionsView');
var minutesActionsEdit = document.getElementById('mmMinutesActionsEdit');
var minutesEditBtn = document.getElementById('mmMinutesEdit');
+ var minutesCopyBtn = document.getElementById('mmMinutesCopy');
var minutesApplyBtn = document.getElementById('mmMinutesApply');
var minutesCancelBtn = document.getElementById('mmMinutesCancel');
/** 편집 모드 진입 시점의 회의록 원문(취소 시 복원) */
@@ -343,6 +345,48 @@
} catch (e) {}
}
}
+ function copyTextToClipboard(text, done) {
+ var t = String(text || '');
+ if (navigator.clipboard && navigator.clipboard.writeText) {
+ navigator.clipboard.writeText(t).then(done).catch(function () {
+ legacyCopyTextToClipboard(t, done);
+ });
+ return;
+ }
+ legacyCopyTextToClipboard(t, done);
+ }
+ function legacyCopyTextToClipboard(text, done) {
+ var ta = document.createElement('textarea');
+ ta.value = text;
+ ta.setAttribute('readonly', '');
+ ta.style.position = 'fixed';
+ ta.style.left = '-9999px';
+ document.body.appendChild(ta);
+ ta.select();
+ try {
+ document.execCommand('copy');
+ } catch (e) {}
+ document.body.removeChild(ta);
+ if (typeof done === 'function') done();
+ }
+ if (minutesCopyBtn) {
+ minutesCopyBtn.addEventListener('click', function () {
+ if (!resultBody) return;
+ var md = String(resultBody.value || '');
+ if (!md.trim()) {
+ alert('복사할 회의록 내용이 없습니다.');
+ return;
+ }
+ var btn = minutesCopyBtn;
+ var prev = btn.textContent;
+ copyTextToClipboard(md, function () {
+ btn.textContent = '복사됨';
+ window.setTimeout(function () {
+ btn.textContent = prev;
+ }, 1600);
+ });
+ });
+ }
if (minutesEditBtn) {
minutesEditBtn.addEventListener('click', function () {
if (!resultBody) return;
@@ -392,6 +436,7 @@
if (resultBody) resultBody.disabled = !!on;
if (transcriptBody) transcriptBody.disabled = !!on;
if (minutesEditBtn) minutesEditBtn.disabled = !!on;
+ if (minutesCopyBtn) minutesCopyBtn.disabled = !!on;
if (minutesApplyBtn) minutesApplyBtn.disabled = !!on;
if (minutesCancelBtn) minutesCancelBtn.disabled = !!on;
if (on && resultBody && minutesRenderedEl) {