mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-05-03 10:00:07 -04:00
fix: No more debounced refresh()
for subtypes.
This commit is contained in:
parent
91fe07d9c5
commit
ab3467973f
6 changed files with 31 additions and 71 deletions
|
@ -11,7 +11,6 @@ import {
|
|||
getInitializedImageElements,
|
||||
updateImageCache,
|
||||
} from "../element/image";
|
||||
import { ensureSubtypesLoadedForElements } from "../subtypes";
|
||||
|
||||
export const SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;
|
||||
|
||||
|
@ -52,48 +51,30 @@ export const exportToCanvas = async (
|
|||
files,
|
||||
});
|
||||
|
||||
let refreshTimer = 0;
|
||||
|
||||
const renderConfig = {
|
||||
viewBackgroundColor: exportBackground ? viewBackgroundColor : null,
|
||||
scrollX: -minX + exportPadding,
|
||||
scrollY: -minY + exportPadding,
|
||||
zoom: defaultAppState.zoom,
|
||||
remotePointerViewportCoords: {},
|
||||
remoteSelectedElementIds: {},
|
||||
shouldCacheIgnoreZoom: false,
|
||||
remotePointerUsernames: {},
|
||||
remotePointerUserStates: {},
|
||||
theme: appState.exportWithDarkMode ? "dark" : "light",
|
||||
imageCache,
|
||||
renderScrollbars: false,
|
||||
renderSelection: false,
|
||||
renderGrid: false,
|
||||
isExporting: true,
|
||||
renderCb: () => {
|
||||
if (refreshTimer !== 0) {
|
||||
window.clearTimeout(refreshTimer);
|
||||
}
|
||||
refreshTimer = window.setTimeout(() => {
|
||||
renderConfig.renderCb = () => {};
|
||||
window.clearTimeout(refreshTimer);
|
||||
// Here instead of setState({}), call renderScene() again
|
||||
render();
|
||||
}, 50);
|
||||
renderScene({
|
||||
elements,
|
||||
appState,
|
||||
scale,
|
||||
rc: rough.canvas(canvas),
|
||||
canvas,
|
||||
renderConfig: {
|
||||
viewBackgroundColor: exportBackground ? viewBackgroundColor : null,
|
||||
scrollX: -minX + exportPadding,
|
||||
scrollY: -minY + exportPadding,
|
||||
zoom: defaultAppState.zoom,
|
||||
remotePointerViewportCoords: {},
|
||||
remoteSelectedElementIds: {},
|
||||
shouldCacheIgnoreZoom: false,
|
||||
remotePointerUsernames: {},
|
||||
remotePointerUserStates: {},
|
||||
theme: appState.exportWithDarkMode ? "dark" : "light",
|
||||
imageCache,
|
||||
renderScrollbars: false,
|
||||
renderSelection: false,
|
||||
renderGrid: false,
|
||||
isExporting: true,
|
||||
},
|
||||
};
|
||||
|
||||
const render = () => {
|
||||
renderScene({
|
||||
elements,
|
||||
appState,
|
||||
scale,
|
||||
rc: rough.canvas(canvas),
|
||||
canvas,
|
||||
renderConfig,
|
||||
});
|
||||
};
|
||||
render();
|
||||
});
|
||||
|
||||
return canvas;
|
||||
};
|
||||
|
@ -187,12 +168,10 @@ export const exportToSvg = async (
|
|||
}
|
||||
|
||||
const rsvg = rough.svg(svgRoot);
|
||||
await ensureSubtypesLoadedForElements(elements, () => {
|
||||
renderSceneToSvg(elements, rsvg, svgRoot, files || {}, {
|
||||
offsetX: -minX + exportPadding,
|
||||
offsetY: -minY + exportPadding,
|
||||
exportWithDarkMode: appState.exportWithDarkMode,
|
||||
});
|
||||
renderSceneToSvg(elements, rsvg, svgRoot, files || {}, {
|
||||
offsetX: -minX + exportPadding,
|
||||
offsetY: -minY + exportPadding,
|
||||
exportWithDarkMode: appState.exportWithDarkMode,
|
||||
});
|
||||
|
||||
return svgRoot;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue