Skip to content

Commit

Permalink
fix: Simplified and fixed panel resize calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
b-zurg committed Jul 7, 2020
1 parent b15ac88 commit 5a83d6f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 28 deletions.
28 changes: 2 additions & 26 deletions src/components/SplitPane/hooks/callbacks/useRecalculateSizes.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
import { addArray, getMinSize, moveSizes } from '../../helpers';
import { addArray } from '../../helpers';
import React, { useCallback } from 'react';

export function useRecalculateSizes({
getCurrentPaneSizes,
collapsedSize,
collapsedIndices,
originalMinSizes,
minSizes,
setMovedSizes,
setSizes,
}: {
Expand Down Expand Up @@ -38,31 +36,9 @@ export function useRecalculateSizes({
}
return size;
});
curSizes.forEach((_size, idx) => {
const offset = curSizes[idx] - getMinSize(idx, originalMinSizes);
// if offset is negative this means the min size is greater and we need to move this guy
if (offset < 0) {
moveSizes({
collapsedIndices,
collapsedSize,
sizes: adjustedSizes,
index: idx,
offset: -offset,
minSizes,
});
}
});
setMovedSizes(adjustedSizes);
setSizes(adjustedSizes);
},
[
collapsedIndices,
collapsedSize,
getCurrentPaneSizes,
minSizes,
originalMinSizes,
setMovedSizes,
setSizes,
]
[collapsedIndices, collapsedSize, getCurrentPaneSizes, setMovedSizes, setSizes]
);
}
7 changes: 5 additions & 2 deletions src/components/SplitPane/hooks/useSplitPaneResize.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as React from 'react';
import { useEffect, useMemo, useRef, useState } from 'react';
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { SplitPaneProps } from '..';
import { ClientPosition, useDragState } from './effects/useDragState';
import { useMinSizes } from './memos/useMinSizes';
Expand Down Expand Up @@ -158,7 +158,10 @@ export function useSplitPaneResize(options: SplitPaneResizeOptions): SplitPaneRe
}, [collapsedIndices]);
// recalculate initial sizes on window size change to maintain min sizes

const resetSizes = useMemo(() => debounce(() => recalculateSizes(), 50), [recalculateSizes]);
const resetSizes = useCallback(
debounce(() => recalculateSizes(), 100),
[recalculateSizes]
);
useEventListener('resize', resetSizes);
useEffect(
() => recalculateSizes(initialSizes),
Expand Down

0 comments on commit 5a83d6f

Please sign in to comment.