mirror of https://gitee.com/godoos/godoos.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.5 KiB
44 lines
1.5 KiB
import { storeToRefs } from 'pinia'
|
|
import { useMainStore, useSlidesStore } from '@/store'
|
|
import type { PPTElement } from '@/types/slides'
|
|
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
|
|
|
|
export default () => {
|
|
const mainStore = useMainStore()
|
|
const slidesStore = useSlidesStore()
|
|
const { activeElementIdList, activeGroupElementId } = storeToRefs(mainStore)
|
|
const { currentSlide } = storeToRefs(slidesStore)
|
|
|
|
const { addHistorySnapshot } = useHistorySnapshot()
|
|
|
|
// 删除全部选中元素
|
|
// 组合元素成员中,存在被选中可独立操作的元素时,优先删除该元素。否则默认删除所有被选中的元素
|
|
const deleteElement = () => {
|
|
if (!activeElementIdList.value.length) return
|
|
|
|
let newElementList: PPTElement[] = []
|
|
if (activeGroupElementId.value) {
|
|
newElementList = currentSlide.value.elements.filter(el => el.id !== activeGroupElementId.value)
|
|
}
|
|
else {
|
|
newElementList = currentSlide.value.elements.filter(el => !activeElementIdList.value.includes(el.id))
|
|
}
|
|
|
|
mainStore.setActiveElementIdList([])
|
|
slidesStore.updateSlide({ elements: newElementList })
|
|
addHistorySnapshot()
|
|
}
|
|
|
|
// 删除内面内全部元素(无论是否选中)
|
|
const deleteAllElements = () => {
|
|
if (!currentSlide.value.elements.length) return
|
|
mainStore.setActiveElementIdList([])
|
|
slidesStore.updateSlide({ elements: [] })
|
|
addHistorySnapshot()
|
|
}
|
|
|
|
return {
|
|
deleteElement,
|
|
deleteAllElements,
|
|
}
|
|
}
|