mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
feat: dark theme export background
This commit is contained in:
parent
baa133cbb7
commit
787f5d68cf
11 changed files with 172 additions and 75 deletions
|
@ -3,9 +3,10 @@ import { NonDeletedExcalidrawElement } from "../element/types";
|
|||
import { getCommonBounds, getElementAbsoluteCoords } from "../element/bounds";
|
||||
import { renderSceneToSvg, renderStaticScene } from "../renderer/renderScene";
|
||||
import { distance, isOnlyExportingSingleFrame } from "../utils";
|
||||
import { AppState, BinaryFiles, DataURL } from "../types";
|
||||
import { AppState, BinaryFiles } from "../types";
|
||||
import {
|
||||
DEFAULT_EXPORT_PADDING,
|
||||
FANCY_BACKGROUND_IMAGES,
|
||||
FANCY_BG_BORDER_RADIUS,
|
||||
FANCY_BG_PADDING,
|
||||
SVG_NS,
|
||||
|
@ -51,7 +52,8 @@ export const exportToCanvas = async (
|
|||
) => {
|
||||
const exportWithFancyBackground =
|
||||
exportBackground &&
|
||||
!!appState.fancyBackgroundImageUrl &&
|
||||
appState.fancyBackgroundImageKey &&
|
||||
appState.fancyBackgroundImageKey !== "solid" &&
|
||||
elements.length > 0;
|
||||
const padding = !exportWithFancyBackground
|
||||
? exportPadding
|
||||
|
@ -75,7 +77,7 @@ export const exportToCanvas = async (
|
|||
|
||||
const renderConfig = {
|
||||
viewBackgroundColor:
|
||||
exportBackground && !appState.fancyBackgroundImageUrl
|
||||
exportBackground && !exportWithFancyBackground
|
||||
? viewBackgroundColor
|
||||
: null,
|
||||
scrollX: -minX + (onlyExportingSingleFrame ? 0 : padding),
|
||||
|
@ -92,15 +94,19 @@ export const exportToCanvas = async (
|
|||
renderSelection: false,
|
||||
renderGrid: false,
|
||||
isExporting: true,
|
||||
exportBackgroundImage: appState.fancyBackgroundImageUrl,
|
||||
exportBackgroundImage: appState.fancyBackgroundImageKey,
|
||||
};
|
||||
|
||||
if (exportWithFancyBackground) {
|
||||
if (
|
||||
exportWithFancyBackground &&
|
||||
appState.fancyBackgroundImageKey !== "solid"
|
||||
) {
|
||||
await applyFancyBackgroundOnCanvas({
|
||||
canvas,
|
||||
fancyBackgroundImageUrl: appState.fancyBackgroundImageUrl!,
|
||||
fancyBackgroundImageKey: appState.fancyBackgroundImageKey,
|
||||
backgroundColor: viewBackgroundColor,
|
||||
exportScale: appState.exportScale,
|
||||
theme: renderConfig.theme,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -139,7 +145,7 @@ export const exportToSvg = async (
|
|||
exportWithDarkMode?: boolean;
|
||||
exportEmbedScene?: boolean;
|
||||
renderFrame?: boolean;
|
||||
fancyBackgroundImageUrl: DataURL | null;
|
||||
fancyBackgroundImageKey?: keyof typeof FANCY_BACKGROUND_IMAGES;
|
||||
},
|
||||
files: BinaryFiles | null,
|
||||
opts?: {
|
||||
|
@ -157,8 +163,9 @@ export const exportToSvg = async (
|
|||
|
||||
const exportWithFancyBackground =
|
||||
exportBackground &&
|
||||
!!appState.fancyBackgroundImageUrl &&
|
||||
elements.length > 0;
|
||||
elements.length > 0 &&
|
||||
appState.fancyBackgroundImageKey &&
|
||||
appState.fancyBackgroundImageKey !== "solid";
|
||||
|
||||
const padding = !exportWithFancyBackground
|
||||
? exportPadding
|
||||
|
@ -191,7 +198,8 @@ export const exportToSvg = async (
|
|||
svgRoot.setAttribute("filter", THEME_FILTER);
|
||||
}
|
||||
|
||||
let assetPath = "https://excalidraw.com/";
|
||||
// let assetPath = "https://excalidraw.com/";
|
||||
let assetPath = "http://localhost:3000/";
|
||||
// Asset path needs to be determined only when using package
|
||||
if (import.meta.env.VITE_IS_EXCALIDRAW_NPM_PACKAGE) {
|
||||
assetPath =
|
||||
|
@ -258,14 +266,17 @@ export const exportToSvg = async (
|
|||
|
||||
// render background rect
|
||||
if (appState.exportBackground && viewBackgroundColor) {
|
||||
if (appState.fancyBackgroundImageUrl) {
|
||||
if (
|
||||
appState.fancyBackgroundImageKey &&
|
||||
appState.fancyBackgroundImageKey !== "solid"
|
||||
) {
|
||||
await applyFancyBackgroundOnSvg({
|
||||
svgRoot,
|
||||
fancyBackgroundImageUrl:
|
||||
`${appState.fancyBackgroundImageUrl}` as DataURL,
|
||||
fancyBackgroundImageKey: `${appState.fancyBackgroundImageKey}`,
|
||||
backgroundColor: viewBackgroundColor,
|
||||
dimensions: { w: width, h: height },
|
||||
exportScale,
|
||||
theme: appState.exportWithDarkMode ? THEME.DARK : THEME.LIGHT,
|
||||
});
|
||||
} else {
|
||||
const rect = svgRoot.ownerDocument!.createElementNS(SVG_NS, "rect");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue