File size: 1,110 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 |
import { useSlidesStore } from '@/store'
import type { PPTElement, PPTElementLink } from '@/types/slides'
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
import message from '@/utils/message'
export default () => {
const slidesStore = useSlidesStore()
const { addHistorySnapshot } = useHistorySnapshot()
const setLink = (handleElement: PPTElement, link: PPTElementLink) => {
const linkRegExp = /^(https?):\/\/[\w\-]+(\.[\w\-]+)+([\w\-.,@?^=%&:\/~+#]*[\w\-@?^=%&\/~+#])?$/
if (link.type === 'web' && !linkRegExp.test(link.target)) {
message.error('不是正确的网页链接地址')
return false
}
if (link.type === 'slide' && !link.target) {
message.error('请先选择链接目标')
return false
}
const props = { link }
slidesStore.updateElement({ id: handleElement.id, props })
addHistorySnapshot()
return true
}
const removeLink = (handleElement: PPTElement) => {
slidesStore.removeElementProps({ id: handleElement.id, propName: 'link' })
addHistorySnapshot()
}
return {
setLink,
removeLink,
}
} |