From 1a44d00dd2076e1cb48dbe3fed7f34030a4b9670 Mon Sep 17 00:00:00 2001 From: Garrett Stevens Date: Mon, 20 May 2024 14:02:18 -0600 Subject: [PATCH] Improve return type of `intersection2` (#4389) --- packages/core/util/calculateDynamicBlocks.ts | 17 +++++++---------- packages/core/util/range.ts | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/packages/core/util/calculateDynamicBlocks.ts b/packages/core/util/calculateDynamicBlocks.ts index bec1d1c75e..1b5e34223b 100644 --- a/packages/core/util/calculateDynamicBlocks.ts +++ b/packages/core/util/calculateDynamicBlocks.ts @@ -68,17 +68,14 @@ export default function calculateDynamicBlocks( const regionWidthPx = (regionEnd - regionStart) / bpPerPx const parentRegion = isStateTreeNode(region) ? getSnapshot(region) : region - if ( - displayedRegionLeftPx < windowRightPx && - displayedRegionRightPx > windowLeftPx - ) { + const [leftPx, rightPx] = intersection2( + windowLeftPx, + windowRightPx, + displayedRegionLeftPx, + displayedRegionRightPx, + ) + if (leftPx !== undefined && rightPx !== undefined) { // this displayed region overlaps the view, so make a record for it - const [leftPx, rightPx] = intersection2( - windowLeftPx, - windowRightPx, - displayedRegionLeftPx, - displayedRegionRightPx, - ) let start: number let end: number let isLeftEndOfDisplayedRegion: boolean diff --git a/packages/core/util/range.ts b/packages/core/util/range.ts index 373542da4d..f86349c3e2 100644 --- a/packages/core/util/range.ts +++ b/packages/core/util/range.ts @@ -10,7 +10,7 @@ export function intersection2( right1: number, left2: number, right2: number, -) { +): [number, number] | [] { // this code is verbose because "if" statements are faster than Math.min and Math.max if (right1 > left2 && left1 < right2 && right2 - left2 && right1 - left1) { if (left1 > left2) {