(center, factor)
| 711 | coordinator?.setZoomRange(nextStart, nextStart + nextSpan); |
| 712 | }; |
| 713 | const zoomOut: ZoomState['zoomOut'] = (center, factor) => { |
| 714 | if (!Number.isFinite(center) || !Number.isFinite(factor) || factor <= 1) return; |
| 715 | const r = coordinator?.getZoomRange(); |
| 716 | if (!r) return; |
| 717 | const c = clamp(center, 0, 100); |
| 718 | const ratio = computeZoomInOutAnchorRatio(r, c); |
| 719 | const span = r.end - r.start; |
| 720 | const nextSpan = span * factor; |
| 721 | const nextStart = c - ratio * nextSpan; |
| 722 | coordinator?.setZoomRange(nextStart, nextStart + nextSpan); |
| 723 | }; |
| 724 | const pan: ZoomState['pan'] = (delta) => { |
| 725 | if (!Number.isFinite(delta)) return; |
| 726 | const r = coordinator?.getZoomRange(); |
nothing calls this directly
no test coverage detected