Sometimes, we try to set the viewport, but the nodes' dimensions have been reset. Trying to set the viewport when the nodes' dimensions are incorrect leads to an incorrect viewport. This PR ensures we only try to set the viewport if the nodes' dimensions are valid. Otherwise, we wait for them to be computed to set the viewport automatically. The `handleNodesChanges` function is called every time the nodes change, including when the dimensions have been computed. Internally, Reactflow has a similar behavior to implement the `fitView` feature: https://github.com/xyflow/xyflow/blob/f9971a8fad54e9c2f33b71b4056b6d1ec6c33bd1/packages/react/src/store/index.ts#L111. ## Example This is more notable since I added optimistic rendering to workflow runs. https://github.com/user-attachments/assets/07232050-b808-4345-b82b-95acad72ab15