mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-15 05:37:32 +00:00
44 lines
1.0 KiB
TypeScript
44 lines
1.0 KiB
TypeScript
import type {
|
|
TldrawCommand,
|
|
TDShape,
|
|
} from '@toeverything/components/board-types';
|
|
import { TLDR } from '@toeverything/components/board-state';
|
|
import type { TldrawApp } from '@toeverything/components/board-state';
|
|
|
|
export function updateShapes(
|
|
app: TldrawApp,
|
|
updates: ({ id: string } & Partial<TDShape>)[],
|
|
pageId: string
|
|
): TldrawCommand {
|
|
const ids = updates.map(update => update.id);
|
|
|
|
const change = TLDR.mutate_shapes(
|
|
app.state,
|
|
ids.filter(id => !app.getShape(id, pageId).isLocked),
|
|
(shape, i) => updates[i],
|
|
pageId
|
|
);
|
|
|
|
return {
|
|
id: 'update',
|
|
before: {
|
|
document: {
|
|
pages: {
|
|
[pageId]: {
|
|
shapes: change.before,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
after: {
|
|
document: {
|
|
pages: {
|
|
[pageId]: {
|
|
shapes: change.after,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|