|
import { onMounted, onUpdated } from 'vue' |
|
import { copyText } from '@/utils/format' |
|
|
|
export function useCopyCode() { |
|
function copyCodeBlock() { |
|
const codeBlockWrapper = document.querySelectorAll('.code-block-wrapper') |
|
codeBlockWrapper.forEach((wrapper) => { |
|
const copyBtn = wrapper.querySelector('.code-block-header__copy') |
|
const codeBlock = wrapper.querySelector('.code-block-body') |
|
if (copyBtn && codeBlock) { |
|
copyBtn.addEventListener('click', () => { |
|
if (navigator.clipboard?.writeText) |
|
navigator.clipboard.writeText(codeBlock.textContent ?? '') |
|
else |
|
copyText({ text: codeBlock.textContent ?? '', origin: true }) |
|
}) |
|
} |
|
}) |
|
} |
|
|
|
onMounted(() => copyCodeBlock()) |
|
|
|
onUpdated(() => copyCodeBlock()) |
|
} |
|
|