aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/canvases/NewElementCanvas.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/excalidraw/components/canvases/NewElementCanvas.tsx')
-rw-r--r--packages/excalidraw/components/canvases/NewElementCanvas.tsx56
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;