From 984edbec909d8e672ddd1b6e23521bdbf72c3056 Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Mon, 14 Oct 2024 19:31:08 +0200 Subject: [PATCH] move resize step search function to math.ts --- .../behavior/columnResizer/ContextualResizer.ts | 17 ++--------------- src/lib/utils/math.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/behavior/columnResizer/ContextualResizer.ts b/src/lib/behavior/columnResizer/ContextualResizer.ts index c8efc43..07a18fa 100644 --- a/src/lib/behavior/columnResizer/ContextualResizer.ts +++ b/src/lib/behavior/columnResizer/ContextualResizer.ts @@ -23,7 +23,7 @@ class ContextualResizer { const leftSpace = leftVisibleColumn.getLeft() - visibleRange.getLeft(); const rightSpace = visibleRange.getRight() - rightVisibleColumn.getRight(); - const newWidth = ContextualResizer.findNextStep( + const newWidth = findMinPositive( [ visibleRange.getWidth(), column.getWidth() + step, @@ -73,7 +73,7 @@ class ContextualResizer { const leftOffScreen = leftOffScreenColumn === null ? 0 : leftOffScreenColumn.getWidth() + grid.config.gapsInnerHorizontal - unusedWidth; const rightOffScreen = rightOffScreenColumn === null ? 0 : rightOffScreenColumn.getWidth() + grid.config.gapsInnerHorizontal - unusedWidth; - const newWidth = ContextualResizer.findNextStep( + const newWidth = findMinPositive( [ visibleRange.getWidth(), column.getWidth() - step, @@ -90,17 +90,4 @@ class ContextualResizer { column.setWidth(newWidth, true); desktop.scrollCenterVisible(column); } - - private static findNextStep(steps: number[], evaluate: (step: number) => number) { - let bestScore = Infinity; - let bestStep = undefined; - for (const step of steps) { - const score = evaluate(step); - if (score > 0 && score < bestScore) { - bestScore = score; - bestStep = step; - } - } - return bestStep; - } } diff --git a/src/lib/utils/math.ts b/src/lib/utils/math.ts index 9c1bd4f..7a202aa 100644 --- a/src/lib/utils/math.ts +++ b/src/lib/utils/math.ts @@ -29,6 +29,19 @@ function uniq(sortedArray: T[]) { return filtered; } +function findMinPositive(items: T[], evaluate: (item: T) => number) { + let bestScore = Infinity; + let bestItem = undefined; + for (const item of items) { + const score = evaluate(item); + if (score > 0 && score < bestScore) { + bestScore = score; + bestItem = item; + } + } + return bestItem; +} + function rectEquals(a: QmlRect, b: QmlRect) { return a.x === b.x && a.y === b.y &&