resave.ts 1008 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { ExcalidrawElement } from "../element/types";
  2. import { AppState, BinaryFiles } from "../types";
  3. import { exportCanvas } from ".";
  4. import { getNonDeletedElements } from "../element";
  5. import { getFileHandleType, isImageFileHandleType } from "./blob";
  6. export const resaveAsImageWithScene = async (
  7. elements: readonly ExcalidrawElement[],
  8. appState: AppState,
  9. files: BinaryFiles,
  10. ) => {
  11. const { exportBackground, viewBackgroundColor, name, fileHandle } = appState;
  12. const fileHandleType = getFileHandleType(fileHandle);
  13. if (!fileHandle || !isImageFileHandleType(fileHandleType)) {
  14. throw new Error(
  15. "fileHandle should exist and should be of type svg or png when resaving",
  16. );
  17. }
  18. appState = {
  19. ...appState,
  20. exportEmbedScene: true,
  21. };
  22. await exportCanvas(
  23. fileHandleType,
  24. getNonDeletedElements(elements),
  25. appState,
  26. files,
  27. {
  28. exportBackground,
  29. viewBackgroundColor,
  30. name,
  31. fileHandle,
  32. },
  33. );
  34. return { fileHandle };
  35. };