Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

delete-page.ts 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import Command from './command'
  2. import history from '../history'
  3. import { Data } from 'types'
  4. import { current } from 'immer'
  5. import { getPage, getSelectedShapes } from 'utils/utils'
  6. import { getShapeUtils } from 'lib/shape-utils'
  7. import vec from 'utils/vec'
  8. import storage from 'state/storage'
  9. export default function changePage(data: Data, pageId: string) {
  10. const snapshot = getSnapshot(data, pageId)
  11. history.execute(
  12. data,
  13. new Command({
  14. name: 'change_page',
  15. category: 'canvas',
  16. do(data) {
  17. data.currentPageId = snapshot.nextPageId
  18. delete data.document.pages[pageId]
  19. delete data.pageStates[pageId]
  20. storage.loadPage(data, snapshot.nextPageId)
  21. },
  22. undo(data) {
  23. data.currentPageId = snapshot.currentPageId
  24. data.document.pages[pageId] = snapshot.page
  25. data.pageStates[pageId] = snapshot.pageState
  26. storage.loadPage(data, snapshot.currentPageId)
  27. },
  28. })
  29. )
  30. }
  31. function getSnapshot(data: Data, pageId: string) {
  32. const cData = current(data)
  33. const { currentPageId, document } = cData
  34. const page = document.pages[pageId]
  35. const pageState = cData.pageStates[pageId]
  36. const isCurrent = currentPageId === pageId
  37. // const nextIndex = isCurrent
  38. // ? page.childIndex === 0
  39. // ? 1
  40. // : page.childIndex - 1
  41. // : document.pages[currentPageId].childIndex
  42. const nextPageId = isCurrent
  43. ? Object.values(document.pages).filter((page) => page.id !== pageId)[0]?.id // TODO: should be at nextIndex
  44. : cData.currentPageId
  45. return {
  46. nextPageId,
  47. isCurrent,
  48. currentPageId,
  49. page,
  50. pageState,
  51. }
  52. }