From 5948fe467de727ca06428b28e5fb30c444dbce65 Mon Sep 17 00:00:00 2001 From: Steve Ruiz Date: Sat, 4 Sep 2021 16:12:29 +0100 Subject: [PATCH] Improve names on creating page --- .../create-page/create-page.command.ts | 47 +++++++++++++------ packages/tldraw/src/state/tlstate.ts | 1 + 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/packages/tldraw/src/state/command/create-page/create-page.command.ts b/packages/tldraw/src/state/command/create-page/create-page.command.ts index aaffd17b5..746e6d930 100644 --- a/packages/tldraw/src/state/command/create-page/create-page.command.ts +++ b/packages/tldraw/src/state/command/create-page/create-page.command.ts @@ -1,9 +1,37 @@ -import type { Data, TLDrawCommand } from '~types' -import { Utils } from '@tldraw/core' +import type { Data, TLDrawCommand, TLDrawPage } from '~types' +import { Utils, TLPageState } from '@tldraw/core' export function createPage(data: Data, pageId = Utils.uniqueId()): TLDrawCommand { const { currentPageId } = data.appState + const topPage = Object.values(data.document.pages).sort( + (a, b) => (b.childIndex || 0) - (a.childIndex || 0) + )[0] + + const nextChildIndex = topPage?.childIndex ? topPage?.childIndex + 1 : 1 + + // TODO: Iterate the name better + const nextName = `Page ${nextChildIndex}` + + const page: TLDrawPage = { + id: pageId, + name: nextName, + shapes: {}, + childIndex: nextChildIndex, + bindings: {}, + } + + const pageState: TLPageState = { + id: pageId, + selectedIds: [], + camera: { point: [-window.innerWidth / 2, -window.innerHeight / 2], zoom: 1 }, + currentParentId: pageId, + editingId: undefined, + bindingId: undefined, + hoveredId: undefined, + pointedId: undefined, + } + return { id: 'create_page', before: { @@ -21,23 +49,14 @@ export function createPage(data: Data, pageId = Utils.uniqueId()): TLDrawCommand }, after: { appState: { - currentPageId: pageId, + currentPageId: page.id, }, document: { pages: { - [pageId]: { id: pageId, shapes: {}, bindings: {} }, + [pageId]: page, }, pageStates: { - [pageId]: { - id: pageId, - selectedIds: [], - camera: { point: [-window.innerWidth / 2, -window.innerHeight / 2], zoom: 1 }, - currentParentId: pageId, - editingId: undefined, - bindingId: undefined, - hoveredId: undefined, - pointedId: undefined, - }, + [pageId]: pageState, }, }, }, diff --git a/packages/tldraw/src/state/tlstate.ts b/packages/tldraw/src/state/tlstate.ts index 84f69ad18..4c7b7afb0 100644 --- a/packages/tldraw/src/state/tlstate.ts +++ b/packages/tldraw/src/state/tlstate.ts @@ -47,6 +47,7 @@ const defaultDocument: TLDrawDocument = { pages: { page: { id: 'page', + name: 'Page 1', childIndex: 1, shapes: {}, bindings: {},