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

View File

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