@@ -86,7 +86,10 @@ export default function Canvas({ className }: CanvasProps) {
8686 return [ ...nds , node ] ;
8787 }
8888 const newNodes = [ ...nds ] ;
89- newNodes [ index ] = node ;
89+ newNodes [ index ] = {
90+ ...newNodes [ index ] ,
91+ position : node . position ,
92+ } ;
9093 return newNodes ;
9194 } ) ;
9295 } else if ( change . action === "delete" ) {
@@ -122,20 +125,22 @@ export default function Canvas({ className }: CanvasProps) {
122125
123126 pages . forEach ( ( page ) => {
124127 const pageId = page . id . toString ( ) ;
125- //if (!existingPageIds.current.has(pageId)) {
128+ const existingNode = nodesMap . get ( pageId ) as Node | undefined ;
129+
126130 const newNode = {
127131 id : pageId ,
128- position : {
132+ position : existingNode ?. position || {
129133 x : Math . random ( ) * 500 ,
130134 y : Math . random ( ) * 500 ,
131135 } ,
132136 data : { title : page . title , id : page . id } ,
133137 type : "note" ,
134138 } ;
135139
136- nodesMap . set ( pageId , newNode ) ;
137- existingPageIds . current . add ( pageId ) ;
138- //}
140+ if ( ! existingNode ) {
141+ nodesMap . set ( pageId , newNode ) ;
142+ existingPageIds . current . add ( pageId ) ;
143+ }
139144 } ) ;
140145 } , [ pages ] ) ;
141146
@@ -144,22 +149,22 @@ export default function Canvas({ className }: CanvasProps) {
144149 if ( ! ydoc ) return ;
145150 const nodesMap = ydoc . getMap ( "nodes" ) ;
146151
147- onNodesChange ( changes ) ;
148-
149152 changes . forEach ( ( change ) => {
150153 if ( change . type === "position" && change . position ) {
151- const node = nodes . find ( ( n ) => n . id === change . id ) ;
152- if ( node ) {
154+ const existingNode = nodesMap . get ( change . id ) as Node | undefined ;
155+ if ( existingNode ) {
153156 const updatedNode = {
154- ...node ,
157+ ...existingNode ,
155158 position : change . position ,
156159 } ;
157160 nodesMap . set ( change . id , updatedNode ) ;
158161 }
159162 }
160163 } ) ;
164+
165+ onNodesChange ( changes ) ;
161166 } ,
162- [ nodes , onNodesChange ] ,
167+ [ onNodesChange ] ,
163168 ) ;
164169
165170 const handleEdgesChange = useCallback (
0 commit comments