import type { TldrawApp } from '@toeverything/components/board-state';
import { TLDR } from '@toeverything/components/board-state';
import type { TldrawCommand } from '@toeverything/components/board-types';

export function resetBounds(
    app: TldrawApp,
    ids: string[],
    pageId: string
): TldrawCommand {
    const { currentPageId } = app;

    const { before, after } = TLDR.mutate_shapes(
        app.state,
        ids,
        shape => app.getShapeUtil(shape).onDoubleClickBoundsHandle?.(shape),
        pageId
    );

    return {
        id: 'reset_bounds',
        before: {
            document: {
                pages: {
                    [currentPageId]: { shapes: before },
                },
                pageStates: {
                    [currentPageId]: {
                        selectedIds: ids,
                    },
                },
            },
        },
        after: {
            document: {
                pages: {
                    [currentPageId]: { shapes: after },
                },
                pageStates: {
                    [currentPageId]: {
                        selectedIds: ids,
                    },
                },
            },
        },
    };
}
