| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import Command from './command'
- import history from '../history'
- import { Data } from 'types'
- import storage from 'state/storage'
- import { deepClone } from 'utils'
- import tld from 'utils/tld'
-
- export default function deletePage(data: Data, pageId: string): void {
- const snapshot = getSnapshot(data, pageId)
-
- history.execute(
- data,
- new Command({
- name: 'delete_page',
- category: 'canvas',
- do(data) {
- data.currentPageId = snapshot.nextPageId
- delete data.document.pages[pageId]
- delete data.pageStates[pageId]
- storage.loadPage(data, snapshot.nextPageId)
- },
- undo(data) {
- data.currentPageId = snapshot.currentPageId
- data.document.pages[pageId] = snapshot.page
- data.pageStates[pageId] = snapshot.pageState
- storage.loadPage(data, snapshot.currentPageId)
- },
- })
- )
- }
-
- function getSnapshot(data: Data, pageId: string) {
- const { currentPageId, document } = data
-
- const page = deepClone(tld.getPage(data))
-
- const pageState = deepClone(tld.getPageState(data))
-
- const isCurrent = data.currentPageId === pageId
-
- const nextPageId = isCurrent
- ? Object.values(document.pages).filter((page) => page.id !== pageId)[0]?.id // TODO: should be at nextIndex
- : currentPageId
-
- return {
- nextPageId,
- isCurrent,
- currentPageId,
- page,
- pageState,
- }
- }
|