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