fix: 允许键盘移动可独立操作的组合元素成员(#50)

This commit is contained in:
pipipi-pikachu 2021-06-25 22:01:00 +08:00
parent 8628ba1476
commit 9ac7757647
2 changed files with 36 additions and 23 deletions

View File

@ -1,44 +1,57 @@
import { computed } from 'vue'
import { MutationTypes, useStore } from '@/store'
import { Slide } from '@/types/slides'
import { PPTElement, Slide } from '@/types/slides'
import { KEYS } from '@/configs/hotkey'
import useHistorySnapshot from '@/hooks/useHistorySnapshot'
export default () => {
const store = useStore()
const activeElementIdList = computed(() => store.state.activeElementIdList)
const activeGroupElementId = computed(() => store.state.activeGroupElementId)
const currentSlide = computed<Slide>(() => store.getters.currentSlide)
const { addHistorySnapshot } = useHistorySnapshot()
/**
*
*
* @param command
* @param step
*/
const moveElement = (command: string, step = 1) => {
const newElementList = currentSlide.value.elements.map(el => {
if (activeElementIdList.value.includes(el.id)) {
let { left, top } = el
switch (command) {
case KEYS.LEFT:
left = left - step
break
case KEYS.RIGHT:
left = left + step
break
case KEYS.UP:
top = top - step
break
case KEYS.DOWN:
top = top + step
break
default: break
}
return { ...el, left, top }
let newElementList: PPTElement[] = []
const move = (el: PPTElement) => {
let { left, top } = el
switch (command) {
case KEYS.LEFT:
left = left - step
break
case KEYS.RIGHT:
left = left + step
break
case KEYS.UP:
top = top - step
break
case KEYS.DOWN:
top = top + step
break
default: break
}
return el
})
return { ...el, left, top }
}
if (activeGroupElementId.value) {
newElementList = currentSlide.value.elements.map(el => {
return activeGroupElementId.value === el.id ? move(el) : el
})
}
else {
newElementList = currentSlide.value.elements.map(el => {
return activeElementIdList.value.includes(el.id) ? move(el) : el
})
}
store.commit(MutationTypes.UPDATE_SLIDE, { elements: newElementList })
addHistorySnapshot()
}

View File

@ -171,7 +171,7 @@ export default defineComponent({
const throttleMassage = throttle(function(msg) {
message.success(msg)
}, 3000, { leading: true, trailing: false })
}, 1000, { leading: true, trailing: false })
// /
//