| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import Command from './command'
- import history from '../history'
- import { Data } from 'types'
- import { current } from 'immer'
- import { getPage, getSelectedShapes } from 'utils/utils'
- import { getShapeUtils } from 'lib/shape-utils'
- import * as vec from 'utils/vec'
-
- export default function changePage(data: Data, pageId: string) {
- const snapshot = getSnapshot(data, pageId)
-
- history.execute(
- data,
- new Command({
- name: 'change_page',
- category: 'canvas',
- do(data) {
- data.currentPageId = snapshot.nextPageId
- delete data.document.pages[pageId]
- delete data.pageStates[pageId]
- },
- undo(data) {
- data.currentPageId = snapshot.currentPageId
- data.document.pages[pageId] = snapshot.page
- data.pageStates[pageId] = snapshot.pageState
- },
- })
- )
- }
-
- function getSnapshot(data: Data, pageId: string) {
- const cData = current(data)
- const { currentPageId, document } = cData
-
- const page = document.pages[pageId]
- const pageState = cData.pageStates[pageId]
-
- const isCurrent = currentPageId === pageId
-
- const nextIndex = isCurrent
- ? page.childIndex === 0
- ? 1
- : page.childIndex - 1
- : document.pages[currentPageId].childIndex
-
- const nextPageId = isCurrent
- ? Object.values(document.pages).find(
- (page) => page.childIndex === nextIndex
- )!.id
- : cData.currentPageId
-
- return {
- nextPageId,
- isCurrent,
- currentPageId,
- page,
- pageState,
- }
- }
|