회의록: 마크다운 편집 툴바에 회의록 클립보드 복사 버튼 추가
Made-with: Cursor
This commit is contained in:
@@ -2808,6 +2808,7 @@ body.ai-explore-dev-guest .search-input:disabled {
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.mm-minutes-edit,
|
.mm-minutes-edit,
|
||||||
|
.mm-minutes-copy,
|
||||||
.mm-minutes-cancel {
|
.mm-minutes-cancel {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|||||||
@@ -189,6 +189,7 @@
|
|||||||
<button type="button" class="btn-ghost mm-minutes-edit" id="mmMinutesEdit">마크다운 편집</button>
|
<button type="button" class="btn-ghost mm-minutes-edit" id="mmMinutesEdit">마크다운 편집</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="mm-minutes-actions" id="mmMinutesActionsEdit" role="toolbar" aria-label="회의록 편집" hidden>
|
<div class="mm-minutes-actions" id="mmMinutesActionsEdit" role="toolbar" aria-label="회의록 편집" hidden>
|
||||||
|
<button type="button" class="btn-ghost mm-minutes-copy" id="mmMinutesCopy">복사</button>
|
||||||
<button type="button" class="top-action mm-minutes-apply" id="mmMinutesApply">저장</button>
|
<button type="button" class="top-action mm-minutes-apply" id="mmMinutesApply">저장</button>
|
||||||
<button type="button" class="btn-ghost mm-minutes-cancel" id="mmMinutesCancel">취소</button>
|
<button type="button" class="btn-ghost mm-minutes-cancel" id="mmMinutesCancel">취소</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -235,6 +236,7 @@
|
|||||||
var minutesActionsView = document.getElementById('mmMinutesActionsView');
|
var minutesActionsView = document.getElementById('mmMinutesActionsView');
|
||||||
var minutesActionsEdit = document.getElementById('mmMinutesActionsEdit');
|
var minutesActionsEdit = document.getElementById('mmMinutesActionsEdit');
|
||||||
var minutesEditBtn = document.getElementById('mmMinutesEdit');
|
var minutesEditBtn = document.getElementById('mmMinutesEdit');
|
||||||
|
var minutesCopyBtn = document.getElementById('mmMinutesCopy');
|
||||||
var minutesApplyBtn = document.getElementById('mmMinutesApply');
|
var minutesApplyBtn = document.getElementById('mmMinutesApply');
|
||||||
var minutesCancelBtn = document.getElementById('mmMinutesCancel');
|
var minutesCancelBtn = document.getElementById('mmMinutesCancel');
|
||||||
/** 편집 모드 진입 시점의 회의록 원문(취소 시 복원) */
|
/** 편집 모드 진입 시점의 회의록 원문(취소 시 복원) */
|
||||||
@@ -343,6 +345,48 @@
|
|||||||
} catch (e) {}
|
} 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) {
|
if (minutesEditBtn) {
|
||||||
minutesEditBtn.addEventListener('click', function () {
|
minutesEditBtn.addEventListener('click', function () {
|
||||||
if (!resultBody) return;
|
if (!resultBody) return;
|
||||||
@@ -392,6 +436,7 @@
|
|||||||
if (resultBody) resultBody.disabled = !!on;
|
if (resultBody) resultBody.disabled = !!on;
|
||||||
if (transcriptBody) transcriptBody.disabled = !!on;
|
if (transcriptBody) transcriptBody.disabled = !!on;
|
||||||
if (minutesEditBtn) minutesEditBtn.disabled = !!on;
|
if (minutesEditBtn) minutesEditBtn.disabled = !!on;
|
||||||
|
if (minutesCopyBtn) minutesCopyBtn.disabled = !!on;
|
||||||
if (minutesApplyBtn) minutesApplyBtn.disabled = !!on;
|
if (minutesApplyBtn) minutesApplyBtn.disabled = !!on;
|
||||||
if (minutesCancelBtn) minutesCancelBtn.disabled = !!on;
|
if (minutesCancelBtn) minutesCancelBtn.disabled = !!on;
|
||||||
if (on && resultBody && minutesRenderedEl) {
|
if (on && resultBody && minutesRenderedEl) {
|
||||||
|
|||||||
Reference in New Issue
Block a user