diff options
Diffstat (limited to 'packages/excalidraw/data/resave.ts')
| -rw-r--r-- | packages/excalidraw/data/resave.ts | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/packages/excalidraw/data/resave.ts b/packages/excalidraw/data/resave.ts new file mode 100644 index 0000000..6249184 --- /dev/null +++ b/packages/excalidraw/data/resave.ts @@ -0,0 +1,41 @@ +import type { ExcalidrawElement } from "../element/types"; +import type { AppState, BinaryFiles } from "../types"; +import { exportCanvas, prepareElementsForExport } from "."; +import { getFileHandleType, isImageFileHandleType } from "./blob"; + +export const resaveAsImageWithScene = async ( + elements: readonly ExcalidrawElement[], + appState: AppState, + files: BinaryFiles, + name: string, +) => { + const { exportBackground, viewBackgroundColor, 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, + }; + + const { exportedElements, exportingFrame } = prepareElementsForExport( + elements, + appState, + false, + ); + + await exportCanvas(fileHandleType, exportedElements, appState, files, { + exportBackground, + viewBackgroundColor, + name, + fileHandle, + exportingFrame, + }); + + return { fileHandle }; +}; |
