diff options
| author | kj_sh604 | 2026-03-15 16:19:35 -0400 |
|---|---|---|
| committer | kj_sh604 | 2026-03-15 16:19:35 -0400 |
| commit | 6ec259a0e71174651bae95d4628138bf6fd68742 (patch) | |
| tree | 5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/components/canvases/NewElementCanvas.tsx | |
| parent | 16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff) | |
refactor: packages/
Diffstat (limited to 'packages/excalidraw/components/canvases/NewElementCanvas.tsx')
| -rw-r--r-- | packages/excalidraw/components/canvases/NewElementCanvas.tsx | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/excalidraw/components/canvases/NewElementCanvas.tsx b/packages/excalidraw/components/canvases/NewElementCanvas.tsx new file mode 100644 index 0000000..1815671 --- /dev/null +++ b/packages/excalidraw/components/canvases/NewElementCanvas.tsx @@ -0,0 +1,56 @@ +import { useEffect, useRef } from "react"; +import type { NonDeletedSceneElementsMap } from "../../element/types"; +import type { AppState } from "../../types"; +import type { + RenderableElementsMap, + StaticCanvasRenderConfig, +} from "../../scene/types"; +import type { RoughCanvas } from "roughjs/bin/canvas"; +import { renderNewElementScene } from "../../renderer/renderNewElementScene"; +import { isRenderThrottlingEnabled } from "../../reactUtils"; + +interface NewElementCanvasProps { + appState: AppState; + elementsMap: RenderableElementsMap; + allElementsMap: NonDeletedSceneElementsMap; + scale: number; + rc: RoughCanvas; + renderConfig: StaticCanvasRenderConfig; +} + +const NewElementCanvas = (props: NewElementCanvasProps) => { + const canvasRef = useRef<HTMLCanvasElement | null>(null); + useEffect(() => { + if (!canvasRef.current) { + return; + } + renderNewElementScene( + { + canvas: canvasRef.current, + scale: props.scale, + newElement: props.appState.newElement, + elementsMap: props.elementsMap, + allElementsMap: props.allElementsMap, + rc: props.rc, + renderConfig: props.renderConfig, + appState: props.appState, + }, + isRenderThrottlingEnabled(), + ); + }); + + return ( + <canvas + className="excalidraw__canvas" + style={{ + width: props.appState.width, + height: props.appState.height, + }} + width={props.appState.width * props.scale} + height={props.appState.height * props.scale} + ref={canvasRef} + /> + ); +}; + +export default NewElementCanvas; |
