getters.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { GetterTree } from 'vuex'
  2. import { State } from './index'
  3. export const getters: GetterTree<State, State> = {
  4. currentSlide(state) {
  5. return state.slides[state.slideIndex] || null
  6. },
  7. currentSlideAnimations(state) {
  8. const currentSlide = state.slides[state.slideIndex]
  9. if(!currentSlide) return null
  10. const animations = currentSlide.animations
  11. if(!animations) return null
  12. const els = currentSlide.elements
  13. const elIds = els.map(el => el.elId)
  14. return animations.filter(animation => elIds.includes(animation.elId))
  15. },
  16. activeElementList(state) {
  17. const currentSlide = state.slides[state.slideIndex]
  18. if(!currentSlide || !currentSlide.elements) return []
  19. return currentSlide.elements.filter(element => state.activeElementIdList.includes(element.elId))
  20. },
  21. handleElement(state) {
  22. const currentSlide = state.slides[state.slideIndex]
  23. if(!currentSlide || !currentSlide.elements) return null
  24. return currentSlide.elements.find(element => state.handleElementId === element.elId) || null
  25. },
  26. canUndo(state) {
  27. return state.snapshotCursor > 0
  28. },
  29. canRedo(state) {
  30. return state.snapshotCursor < state.snapshotLength - 1
  31. },
  32. ctrlOrShiftKeyActive(state) {
  33. return state.ctrlKeyState || state.shiftKeyState
  34. },
  35. }