From 6ec259a0e71174651bae95d4628138bf6fd68742 Mon Sep 17 00:00:00 2001 From: kj_sh604 Date: Sun, 15 Mar 2026 16:19:35 -0400 Subject: refactor: packages/ --- .../excalidraw/renderer/renderNewElementScene.ts | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 packages/excalidraw/renderer/renderNewElementScene.ts (limited to 'packages/excalidraw/renderer/renderNewElementScene.ts') diff --git a/packages/excalidraw/renderer/renderNewElementScene.ts b/packages/excalidraw/renderer/renderNewElementScene.ts new file mode 100644 index 0000000..caa7f58 --- /dev/null +++ b/packages/excalidraw/renderer/renderNewElementScene.ts @@ -0,0 +1,66 @@ +import type { NewElementSceneRenderConfig } from "../scene/types"; +import { throttleRAF } from "../utils"; +import { bootstrapCanvas, getNormalizedCanvasDimensions } from "./helpers"; +import { renderElement } from "./renderElement"; + +const _renderNewElementScene = ({ + canvas, + rc, + newElement, + elementsMap, + allElementsMap, + scale, + appState, + renderConfig, +}: NewElementSceneRenderConfig) => { + if (canvas) { + const [normalizedWidth, normalizedHeight] = getNormalizedCanvasDimensions( + canvas, + scale, + ); + + const context = bootstrapCanvas({ + canvas, + scale, + normalizedWidth, + normalizedHeight, + }); + + // Apply zoom + context.save(); + context.scale(appState.zoom.value, appState.zoom.value); + + if (newElement && newElement.type !== "selection") { + renderElement( + newElement, + elementsMap, + allElementsMap, + rc, + context, + renderConfig, + appState, + ); + } else { + context.clearRect(0, 0, normalizedWidth, normalizedHeight); + } + } +}; + +export const renderNewElementSceneThrottled = throttleRAF( + (config: NewElementSceneRenderConfig) => { + _renderNewElementScene(config); + }, + { trailing: true }, +); + +export const renderNewElementScene = ( + renderConfig: NewElementSceneRenderConfig, + throttle?: boolean, +) => { + if (throttle) { + renderNewElementSceneThrottled(renderConfig); + return; + } + + _renderNewElementScene(renderConfig); +}; -- cgit v1.2.3