File size: 1,452 Bytes
89ce340 |
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 |
import { storeToRefs } from 'pinia'
import { useMainStore } from '@/store'
import { copyText, readClipboard } from '@/utils/clipboard'
import { encrypt } from '@/utils/crypto'
import message from '@/utils/message'
import usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData'
import useDeleteElement from './useDeleteElement'
export default () => {
const mainStore = useMainStore()
const { activeElementIdList, activeElementList } = storeToRefs(mainStore)
const { pasteTextClipboardData } = usePasteTextClipboardData()
const { deleteElement } = useDeleteElement()
// 将选中元素数据加密后复制到剪贴板
const copyElement = () => {
if (!activeElementIdList.value.length) return
const text = encrypt(JSON.stringify({
type: 'elements',
data: activeElementList.value,
}))
copyText(text).then(() => {
mainStore.setEditorareaFocus(true)
})
}
// 将选中元素复制后删除(剪切)
const cutElement = () => {
copyElement()
deleteElement()
}
// 尝试将剪贴板元素数据解密后进行粘贴
const pasteElement = () => {
readClipboard().then(text => {
pasteTextClipboardData(text)
}).catch(err => message.warning(err))
}
// 将选中元素复制后立刻粘贴
const quickCopyElement = () => {
copyElement()
pasteElement()
}
return {
copyElement,
cutElement,
pasteElement,
quickCopyElement,
}
} |