Skip to content

Commit 8fe33bd

Browse files
committed
fix: always use arrow functions for hooks to prevent scope hoisting
1 parent 8ba689f commit 8fe33bd

23 files changed

+61
-88
lines changed

src/components/Resizer/hooks/useTransition.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@ const transitionComponentMap: {
1111
none: Fade,
1212
};
1313

14-
export function useTransition(collapseOptions?: CollapseOptions) {
15-
return useMemo(() => transitionComponentMap[collapseOptions?.buttonTransition ?? 'fade'], [
14+
export const useTransition = (collapseOptions?: CollapseOptions) =>
15+
useMemo(() => transitionComponentMap[collapseOptions?.buttonTransition ?? 'fade'], [
1616
collapseOptions,
1717
]);
18-
}

src/components/SplitPane/hooks/callbacks/useCollapseSize.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useCallback } from 'react';
22
import { moveCollapsedSiblings, moveSizes } from '../../helpers';
33
import * as ReactDOM from 'react-dom';
44

5-
export function useCollapseSize({
5+
export const useCollapseSize = ({
66
isReversed,
77
movedSizes,
88
minSizes,
@@ -18,8 +18,8 @@ export function useCollapseSize({
1818
setSizes: React.Dispatch<React.SetStateAction<number[]>>;
1919
setMovedSizes: React.Dispatch<React.SetStateAction<number[]>>;
2020
collapsedSize: number;
21-
}) {
22-
return useCallback(
21+
}) =>
22+
useCallback(
2323
({ size, idx }: { idx: number; size: number }) => {
2424
const offset = isReversed ? -(collapsedSize - size) : collapsedSize - size;
2525
const index = isReversed ? idx - 1 : idx;
@@ -41,4 +41,3 @@ export function useCollapseSize({
4141
},
4242
[isReversed, collapsedSize, movedSizes, minSizes, collapsedIndices, setMovedSizes, setSizes]
4343
);
44-
}

src/components/SplitPane/hooks/callbacks/useGetCurrentPaneSizes.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ import { getRefSize } from '../../helpers';
33
import { ChildPane } from '../useSplitPaneResize';
44
import { SplitType } from '../..';
55

6-
export function useGetCurrentPaneSizes({
6+
export const useGetCurrentPaneSizes = ({
77
childPanes,
88
split,
99
}: {
1010
childPanes: Pick<ChildPane, 'ref'>[];
1111
split: SplitType;
12-
}) {
13-
return useCallback(() => childPanes.map(({ ref }): number => getRefSize({ split, ref })), [
12+
}) =>
13+
useCallback(() => childPanes.map(({ ref }): number => getRefSize({ split, ref })), [
1414
childPanes,
1515
split,
1616
]);
17-
}
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { useCallback } from 'react';
22

3-
export function useGetIsPaneCollapsed({ collapsedIndices }: { collapsedIndices: number[] }) {
4-
return useCallback(
3+
export const useGetIsPaneCollapsed = ({ collapsedIndices }: { collapsedIndices: number[] }) =>
4+
useCallback(
55
(paneIndex: number) =>
66
collapsedIndices.length > 0 ? collapsedIndices.includes(paneIndex) : false,
77
[collapsedIndices]
88
);
9-
}

src/components/SplitPane/hooks/callbacks/useGetMovedSizes.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useCallback } from 'react';
22
import { DragState } from '../effects/useDragState';
33
import { moveCollapsedSiblings, moveSizes } from '../../helpers';
44

5-
export function useGetMovedSizes({
5+
export const useGetMovedSizes = ({
66
sizes: originalSizes,
77
isLtr,
88
minSizes,
@@ -16,8 +16,8 @@ export function useGetMovedSizes({
1616
collapsedIndices: number[];
1717
isReversed: boolean;
1818
collapsedSize: number;
19-
}) {
20-
return useCallback(
19+
}) =>
20+
useCallback(
2121
(dragState: DragState): number[] => {
2222
const sizes = [...originalSizes];
2323
const index = dragState.index;
@@ -44,4 +44,3 @@ export function useGetMovedSizes({
4444
},
4545
[collapsedIndices, collapsedSize, isLtr, isReversed, minSizes, originalSizes]
4646
);
47-
}

src/components/SplitPane/hooks/callbacks/useHandleDragFinished.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { SplitPaneHooks } from '../..';
44
/**
55
* called at the end of a drag, sets the final size as well as runs the callback hook
66
*/
7-
export function useHandleDragFinished({
7+
export const useHandleDragFinished = ({
88
setSizes,
99
hooks,
1010
movedSizes,
@@ -13,9 +13,8 @@ export function useHandleDragFinished({
1313
setSizes: React.Dispatch<React.SetStateAction<number[]>>;
1414
movedSizes: number[];
1515
hooks?: SplitPaneHooks;
16-
}) {
17-
return useCallback(() => {
16+
}) =>
17+
useCallback(() => {
1818
setSizes(movedSizes);
1919
hooks?.onSaveSizes?.(movedSizes);
2020
}, [movedSizes, hooks, setSizes]);
21-
}

src/components/SplitPane/hooks/callbacks/useHandleDragStart.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,19 @@ import { SplitPaneHooks } from '../..';
55
/**
66
* Callback that starts the drag process and called at the beginning of the dragging.
77
*/
8-
export function useHandleDragStart({
8+
export const useHandleDragStart = ({
99
isReversed,
1010
hooks,
1111
beginDrag,
1212
}: {
1313
isReversed: boolean;
1414
hooks?: SplitPaneHooks;
1515
beginDrag: BeginDragCallback;
16-
}) {
17-
return useCallback(
16+
}) =>
17+
useCallback(
1818
({ index, position }: { index: number; position: ClientPosition }): void => {
1919
hooks?.onDragStarted?.();
2020
beginDrag({ position, index: isReversed ? index - 1 : index });
2121
},
2222
[beginDrag, hooks, isReversed]
2323
);
24-
}

src/components/SplitPane/hooks/callbacks/useRecalculateSizes.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { addArray } from '../../helpers';
22
import React, { useCallback } from 'react';
33

4-
export function useRecalculateSizes({
4+
export const useRecalculateSizes = ({
55
getCurrentPaneSizes,
66
collapsedSize,
77
collapsedIndices,
@@ -15,8 +15,8 @@ export function useRecalculateSizes({
1515
minSizes: number[];
1616
setMovedSizes: React.Dispatch<React.SetStateAction<number[]>>;
1717
setSizes: React.Dispatch<React.SetStateAction<number[]>>;
18-
}) {
19-
return useCallback(
18+
}) =>
19+
useCallback(
2020
(initialSizes?: number[]) => {
2121
const curSizes = getCurrentPaneSizes();
2222
const ratio =
@@ -41,4 +41,3 @@ export function useRecalculateSizes({
4141
},
4242
[collapsedIndices, collapsedSize, getCurrentPaneSizes, setMovedSizes, setSizes]
4343
);
44-
}
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import React, { useCallback } from 'react';
22

3-
export function useToggleCollapse({
3+
export const useToggleCollapse = ({
44
collapsedIndices,
55
setCollapsed,
66
}: {
77
collapsedIndices: number[];
88
setCollapsed: React.Dispatch<React.SetStateAction<number[]>>;
9-
}) {
10-
return useCallback(
9+
}) =>
10+
useCallback(
1111
(index: number) => {
1212
collapsedIndices.includes(index)
1313
? setCollapsed(collapsedIndices.filter(i => i !== index))
1414
: setCollapsed([...collapsedIndices, index]);
1515
},
1616
[collapsedIndices, setCollapsed]
1717
);
18-
}

src/components/SplitPane/hooks/callbacks/useUncollapseSize.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useCallback } from 'react';
22
import * as ReactDOM from 'react-dom';
33
import { moveSizes } from '../../helpers';
44

5-
export function useUncollapseSize({
5+
export const useUncollapseSize = ({
66
isReversed,
77
movedSizes,
88
minSizes,
@@ -18,8 +18,8 @@ export function useUncollapseSize({
1818
setMovedSizes: React.Dispatch<React.SetStateAction<number[]>>;
1919
collapsedSize: number;
2020
collapsedIndices: number[];
21-
}) {
22-
return useCallback(
21+
}) =>
22+
useCallback(
2323
({ size, idx }: { size: number; idx: number }) => {
2424
const offset = isReversed ? -(size - 50) : size - 50;
2525
const index = isReversed ? idx - 1 : idx;
@@ -32,4 +32,3 @@ export function useUncollapseSize({
3232
},
3333
[collapsedIndices, collapsedSize, isReversed, minSizes, movedSizes, setMovedSizes, setSizes]
3434
);
35-
}

src/components/SplitPane/hooks/callbacks/useUpdateCollapsedSizes.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useUncollapseSize } from './useUncollapseSize';
44
import { SplitPaneHooks } from '../..';
55
import { Nullable } from '../../../../types/utilities';
66

7-
export function useUpdateCollapsedSizes({
7+
export const useUpdateCollapsedSizes = ({
88
movedSizes,
99
setCollapsedSizes,
1010
collapsedSizes,
@@ -20,8 +20,8 @@ export function useUpdateCollapsedSizes({
2020
unCollapseSize: ReturnType<typeof useUncollapseSize>;
2121
setCollapsedSizes: React.Dispatch<React.SetStateAction<Nullable<number>[]>>;
2222
hooks?: SplitPaneHooks;
23-
}) {
24-
return useCallback(
23+
}) =>
24+
useCallback(
2525
(indices: number[]) => {
2626
setCollapsedSizes(
2727
collapsedSizes.map((size, idx) => {
@@ -42,4 +42,3 @@ export function useUpdateCollapsedSizes({
4242
},
4343
[collapseSize, collapsedSizes, hooks, movedSizes, setCollapsedSizes, sizes, unCollapseSize]
4444
);
45-
}

src/components/SplitPane/hooks/effects/useDragState.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ interface DragStateHandlers {
2121
onMouseEnter?: (event: MouseEvent) => void;
2222
}
2323

24-
function useDragStateHandlers(
24+
const useDragStateHandlers = (
2525
isVertical: boolean,
2626
onDragFinished: (dragState: DragState) => void
27-
): DragStateHandlers {
27+
): DragStateHandlers => {
2828
const [isDragging, setIsDragging] = useState(false);
2929
const [dragStartPos, setDragStartPos] = useState<number | null>(null);
3030
const [currentPos, setCurrentPos] = useState<number | null>(null);
@@ -90,16 +90,16 @@ function useDragStateHandlers(
9090
);
9191

9292
return { beginDrag, dragState, onMouseMove, onTouchMove, onMouseUp, onMouseEnter };
93-
}
93+
};
9494

9595
interface UseDragStateReturn {
9696
dragState: DragState | null;
9797
beginDrag: BeginDragCallback;
9898
}
99-
export function useDragState(
99+
export const useDragState = (
100100
isVertical: boolean,
101101
onDragFinished: (dragState: DragState) => void
102-
): UseDragStateReturn {
102+
): UseDragStateReturn => {
103103
const {
104104
beginDrag,
105105
dragState,
@@ -115,4 +115,4 @@ export function useDragState(
115115
useEventListener('mouseenter', onMouseEnter);
116116

117117
return { dragState, beginDrag };
118-
}
118+
};

src/components/SplitPane/hooks/memos/useChildPanes.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ import * as React from 'react';
33
import { ChildPane } from '../useSplitPaneResize';
44

55
// converts all children nodes into 'childPane' objects that has its ref, key, but not the size yet
6-
export function useChildPanes({
6+
export const useChildPanes = ({
77
paneRefs,
88
children,
99
minSizes,
1010
}: {
1111
paneRefs: React.MutableRefObject<Map<string, React.RefObject<HTMLDivElement>>>;
1212
children: React.ReactChild[];
1313
minSizes: number[];
14-
}) {
14+
}) => {
1515
const childPanes: Omit<ChildPane, 'size'>[] = useMemo(() => {
1616
const prevPaneRefs = paneRefs.current;
1717
paneRefs.current = new Map<string, React.RefObject<HTMLDivElement>>();
@@ -23,4 +23,4 @@ export function useChildPanes({
2323
});
2424
}, [children, minSizes, paneRefs]);
2525
return childPanes;
26-
}
26+
};

src/components/SplitPane/hooks/memos/useCollapseOptions.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@ const getDefault = (props: {
2121
/**
2222
* function that returns a set of valid collapseOptions from uncertain input.
2323
*/
24-
export function useCollapseOptions({
24+
export const useCollapseOptions = ({
2525
originalValue,
2626
...orientationDetails
2727
}: {
2828
originalValue: Partial<CollapseOptions> | undefined | boolean;
2929
isVertical: boolean;
3030
isLtr: boolean;
3131
isReversed: boolean;
32-
}): Required<CollapseOptions> | undefined {
32+
}): Required<CollapseOptions> | undefined => {
3333
if (originalValue === undefined || originalValue === false) return undefined;
3434
if (originalValue === true) return getDefault(orientationDetails);
3535
return { ...getDefault(orientationDetails), ...originalValue };
36-
}
36+
};

src/components/SplitPane/hooks/memos/useCollapsedSize.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ import { useMemo } from 'react';
22
import { CollapseOptions } from '../../index';
33
export const DEFAULT_COLLAPSE_SIZE = 50;
44

5-
export function useCollapsedSize({ collapseOptions }: { collapseOptions?: CollapseOptions }) {
6-
return useMemo(() => collapseOptions?.collapsedSize ?? DEFAULT_COLLAPSE_SIZE, [collapseOptions]);
7-
}
5+
export const useCollapsedSize = ({ collapseOptions }: { collapseOptions?: CollapseOptions }) =>
6+
useMemo(() => collapseOptions?.collapsedSize ?? DEFAULT_COLLAPSE_SIZE, [collapseOptions]);
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import { useMemo } from 'react';
22
import { SplitPaneProps } from '../../index';
33

4-
export function useCollapsedSizes({
4+
export const useCollapsedSizes = ({
55
collapsedSizes,
66
children,
77
collapse,
8-
}: Pick<SplitPaneProps, 'collapsedSizes' | 'children' | 'collapse'>) {
9-
return useMemo(
8+
}: Pick<SplitPaneProps, 'collapsedSizes' | 'children' | 'collapse'>) =>
9+
useMemo(
1010
() =>
1111
collapsedSizes?.length === children.length && !!collapse
1212
? collapsedSizes
1313
: new Array(children.length).fill(null),
1414
[children.length, collapse, collapsedSizes]
1515
);
16-
}

src/components/SplitPane/hooks/memos/useIsCollapseReversed.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ export const isCollapseDirectionReversed = (
1010
: false;
1111
};
1212

13-
export function useIsCollapseReversed(collapseOptions?: Partial<CollapseOptions> | boolean) {
14-
return useMemo(() => isCollapseDirectionReversed(collapseOptions), [collapseOptions]);
15-
}
13+
export const useIsCollapseReversed = (collapseOptions?: Partial<CollapseOptions> | boolean) =>
14+
useMemo(() => isCollapseDirectionReversed(collapseOptions), [collapseOptions]);
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { useMemo } from 'react';
22
import { Direction, SplitType } from '../../index';
33

4-
export function useIsLtr({ split, dir }: { dir?: Direction; split: SplitType }) {
5-
return useMemo(() => (split === 'vertical' ? dir !== 'rtl' : true), [split, dir]);
6-
}
4+
export const useIsLtr = ({ split, dir }: { dir?: Direction; split: SplitType }) =>
5+
useMemo(() => (split === 'vertical' ? dir !== 'rtl' : true), [split, dir]);

src/components/SplitPane/hooks/memos/useMinSizes.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { CollapseOptions } from '../../index';
55
/**
66
* Returns the current actual minimum size of the panel. This in some cases means the collapsed size.
77
*/
8-
export function useMinSizes({
8+
export const useMinSizes = ({
99
minSizes,
1010
numSizes,
1111
collapsedIndices,
@@ -15,8 +15,8 @@ export function useMinSizes({
1515
minSizes?: number | number[];
1616
collapsedIndices: number[];
1717
collapseOptions?: CollapseOptions;
18-
}): number[] {
19-
return useMemo(
18+
}): number[] =>
19+
useMemo(
2020
() =>
2121
Array.from({ length: numSizes }).map((_child, idx) =>
2222
collapsedIndices.includes(idx)
@@ -25,4 +25,3 @@ export function useMinSizes({
2525
),
2626
[numSizes, collapseOptions, collapsedIndices, minSizes]
2727
);
28-
}

0 commit comments

Comments
 (0)