2021-07-15 09:54:26 -04:00
|
|
|
import { ExcalidrawElement } from "../element/types";
|
2021-10-21 22:05:48 +02:00
|
|
|
import { AppState, BinaryFiles } from "../types";
|
2021-07-15 09:54:26 -04:00
|
|
|
import { exportCanvas } from ".";
|
|
|
|
import { getNonDeletedElements } from "../element";
|
|
|
|
import { getFileHandleType, isImageFileHandleType } from "./blob";
|
|
|
|
|
|
|
|
export const resaveAsImageWithScene = async (
|
|
|
|
elements: readonly ExcalidrawElement[],
|
|
|
|
appState: AppState,
|
2021-10-21 22:05:48 +02:00
|
|
|
files: BinaryFiles,
|
2021-07-15 09:54:26 -04:00
|
|
|
) => {
|
|
|
|
const { exportBackground, viewBackgroundColor, name, fileHandle } = appState;
|
|
|
|
|
|
|
|
const fileHandleType = getFileHandleType(fileHandle);
|
|
|
|
|
|
|
|
if (!fileHandle || !isImageFileHandleType(fileHandleType)) {
|
|
|
|
throw new Error(
|
|
|
|
"fileHandle should exist and should be of type svg or png when resaving",
|
|
|
|
);
|
|
|
|
}
|
|
|
|
appState = {
|
|
|
|
...appState,
|
|
|
|
exportEmbedScene: true,
|
|
|
|
};
|
|
|
|
|
|
|
|
await exportCanvas(
|
|
|
|
fileHandleType,
|
|
|
|
getNonDeletedElements(elements),
|
|
|
|
appState,
|
2021-10-21 22:05:48 +02:00
|
|
|
files,
|
2021-07-15 09:54:26 -04:00
|
|
|
{
|
|
|
|
exportBackground,
|
|
|
|
viewBackgroundColor,
|
|
|
|
name,
|
|
|
|
fileHandle,
|
|
|
|
},
|
|
|
|
);
|
|
|
|
|
|
|
|
return { fileHandle };
|
|
|
|
};
|