summaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/data/resave.ts
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/data/resave.ts
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/data/resave.ts')
-rw-r--r--packages/excalidraw/data/resave.ts41
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 };
+};