File tree Expand file tree Collapse file tree 2 files changed +25
-3
lines changed
apps/frontend/src/features/canvas Expand file tree Collapse file tree 2 files changed +25
-3
lines changed Original file line number Diff line number Diff line change 88 Edge ,
99 EdgeChange ,
1010 Connection ,
11+ useReactFlow ,
1112} from "@xyflow/react" ;
1213import "@xyflow/react/dist/style.css" ;
1314import { SocketIOProvider } from "y-socket.io" ;
@@ -19,7 +20,7 @@ import { calculateBestHandles } from "@/features/canvas/model/calculateHandles";
1920import { createSocketIOProvider } from "@/shared/api/socketProvider" ;
2021import { useCollaborativeCursors } from "./useCollaborativeCursors" ;
2122import { getSortedNodes } from "./sortNodes" ;
22-
23+ import { usePageStore } from "@/features/pageSidebar/model/pageStore" ;
2324export interface YNode extends Node {
2425 isHolding : boolean ;
2526}
@@ -41,6 +42,27 @@ export const useCanvas = () => {
4142 const existingPageIds = useRef ( new Set < string > ( ) ) ;
4243 const holdingNodeRef = useRef < string | null > ( null ) ;
4344
45+ const currentPage = usePageStore ( ( state ) => state . currentPage ) ;
46+ const { fitView } = useReactFlow ( ) ;
47+
48+ useEffect ( ( ) => {
49+ if ( currentPage ) {
50+ setTimeout ( ( ) => {
51+ fitView ( {
52+ nodes : [ { id : currentPage . toString ( ) } ] ,
53+ duration : 500 ,
54+ padding : 0.5 ,
55+ } ) ;
56+ const nodeElement = document . querySelector (
57+ `[data-nodeid="${ currentPage } "]` ,
58+ ) as HTMLInputElement ;
59+ if ( nodeElement ) {
60+ nodeElement . focus ( ) ;
61+ }
62+ } , 100 ) ;
63+ }
64+ } , [ currentPage , fitView ] ) ;
65+
4466 useEffect ( ( ) => {
4567 const yTitleMap = ydoc . getMap ( "title" ) ;
4668 const yEmojiMap = ydoc . getMap ( "emoji" ) ;
Original file line number Diff line number Diff line change @@ -11,7 +11,7 @@ export type NoteNodeData = { title: string; id: number; emoji: string };
1111export type NoteNodeType = Node < NoteNodeData , "note" > ;
1212
1313export function NoteNode ( { data } : NodeProps < NoteNodeType > ) {
14- const { setCurrentPage } = usePageStore ( ) ;
14+ const { currentPage , setCurrentPage } = usePageStore ( ) ;
1515 const { users } = useUserStore ( ) ;
1616
1717 const [ activeUsers , setActiveUsers ] = useState ( users ) ;
@@ -31,7 +31,7 @@ export function NoteNode({ data }: NodeProps<NoteNodeType>) {
3131
3232 return (
3333 < div
34- className = " h-24 w-48 rounded-lg border-[1px] border-[#eaeaea] bg-white p-3 shadow-sm"
34+ className = { ` h-24 w-48 rounded-lg border-[1px] ${ currentPage === data . id ? " border-[#8dbaef]" : "border-[# eaeaea]" } bg-white p-3 shadow-sm` }
3535 onClick = { handleNodeClick }
3636 >
3737 < Handle
You can’t perform that action at this time.
0 commit comments