in src/components/graph-view.js [1869:1904]
panToEntity(entity: IEdge | INode, zoom: boolean) {
const { viewTransform } = this.state;
const parent = this.viewWrapper.current;
const entityBBox = entity ? entity.getBBox() : null;
const maxZoom = this.props.maxZoom || 2;
if (!parent || !entityBBox) {
return;
}
const width = parent.clientWidth;
const height = parent.clientHeight;
const next = {
k: viewTransform ? viewTransform.k : 0,
x: 0,
y: 0,
};
const x = entityBBox.x + entityBBox.width / 2;
const y = entityBBox.y + entityBBox.height / 2;
if (zoom) {
next.k =
0.9 / Math.max(entityBBox.width / width, entityBBox.height / height);
if (next.k > maxZoom) {
next.k = maxZoom;
}
}
next.x = width / 2 - next.k * x;
next.y = height / 2 - next.k * y;
this.setZoom(next.k, next.x, next.y, this.props.zoomDur);
}