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, } }