1- import React , {
2- useEffect ,
3- useLayoutEffect ,
4- useRef ,
5- useState ,
6- useMemo ,
7- } from "react" ;
1+ import React , { useEffect , useRef , useState , useMemo } from "react" ;
82import { ReflectSceneNode } from "@design-sdk/figma-node" ;
93import styled from "@emotion/styled" ;
104import {
@@ -14,7 +8,7 @@ import {
148 OnPointerMoveHandler ,
159 OnPointerDownHandler ,
1610} from "../canvas-event-target" ;
17- import { get_hovering_target , centerOf } from "../math" ;
11+ import { get_hovering_target } from "../math" ;
1812import { utils } from "@design-sdk/core" ;
1913import { LazyFrame } from "@code-editor/canvas/lazy-frame" ;
2014import { HudCustomRenderers , HudSurface } from "./hud-surface" ;
@@ -37,6 +31,7 @@ interface CanvasState {
3731 highlightedLayer ?: string ;
3832 selectedNodes : string [ ] ;
3933 readonly ?: boolean ;
34+ initialTransform ?: CanvasTransform ;
4035}
4136
4237type CanvasCustomRenderers = HudCustomRenderers & {
@@ -61,6 +56,10 @@ export function Canvas({
6156 onSelectNode,
6257 onClearSelection,
6358 nodes,
59+ initialTransform = {
60+ xy : INITIAL_XY ,
61+ scale : INITIAL_SCALE ,
62+ } ,
6463 highlightedLayer,
6564 selectedNodes,
6665 readonly = true ,
@@ -73,14 +72,9 @@ export function Canvas({
7372 CanvasState & {
7473 config ?: CanvsPreferences ;
7574 } ) {
76- const { center : _inicial_xy , scale : _initial_scale } = useMemo (
77- ( ) => centerOf ( null , ...nodes ) ,
78- [ nodes ]
79- ) ;
80-
81- const [ zoom , setZoom ] = useState ( _initial_scale ) ;
75+ const [ zoom , setZoom ] = useState ( initialTransform . scale ) ;
8276 const [ isZooming , setIsZooming ] = useState ( false ) ;
83- const [ offset , setOffset ] = useState < [ number , number ] > ( _inicial_xy ) ;
77+ const [ offset , setOffset ] = useState < [ number , number ] > ( initialTransform . xy ) ;
8478 const nonscaled_offset : XY = [ offset [ 0 ] / zoom , offset [ 1 ] / zoom ] ; // offset;
8579 const [ isPanning , setIsPanning ] = useState ( false ) ;
8680
0 commit comments