Skip to content

Commit 63e6f63

Browse files
committed
feat: SizeRelatedInfo add discard property
1 parent 94e32b5 commit 63e6f63

File tree

4 files changed

+18
-27
lines changed

4 files changed

+18
-27
lines changed

src/Container/Resizer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { SizeRelatedInfo } from '../types';
2-
import { FilterBarActionScanResult } from './operators';
2+
import { BarActionScanResult } from './operators';
33
import { getNextSizeRelatedInfo } from './utils';
44

5-
type ResizeResult = SizeRelatedInfo | FilterBarActionScanResult;
5+
type ResizeResult = SizeRelatedInfo | BarActionScanResult;
66

77
function getBarID(indexOfBar: number): number {
88
return indexOfBar * 2 + 1;
@@ -83,7 +83,7 @@ export class Resizer {
8383
return this.getSize(getSectionID(indexOfSection));
8484
}
8585

86-
getResult(): SizeRelatedInfo & { discard: boolean } {
86+
getResult(): SizeRelatedInfo {
8787
return { ...this.resizeResult, discard: this.isDiscarded };
8888
}
8989

src/Container/index.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
import { ResizerProvider } from '../context';
1313

1414
import { Resizer } from './Resizer';
15-
import { FilterBarActionScanResult, filterBarActionScanResult, scanBarAction } from './operators';
15+
import { BarActionScanResult, scanBarAction } from './operators';
1616
import {
1717
calculateCoordinateOffset,
1818
collectSizeRelatedInfo,
@@ -34,24 +34,27 @@ class Container extends React.PureComponent<Props> {
3434

3535
private readonly sizeRelatedInfoAction$ = new Subject<SizeRelatedInfo>();
3636

37-
private readonly sizeRelatedInfo$ = merge<SizeRelatedInfo, FilterBarActionScanResult>(
37+
private readonly sizeRelatedInfo$ = merge<
38+
SizeRelatedInfo,
39+
BarActionScanResult
40+
>(
3841
this.sizeRelatedInfoAction$,
3942
this.barActions$.pipe(
4043
scanBarAction({
4144
calculateOffset: (current, original) =>
4245
calculateCoordinateOffset(current, original)[this.axis],
4346
getSizeRelatedInfo: () => this.makeSizeInfos(),
4447
}),
45-
filterBarActionScanResult(),
4648
),
4749
).pipe(
50+
filter(({ discard }) => !discard),
4851
map((resizeResult) => {
4952
if (typeof this.props.onResizing === 'function') {
5053
const resizer = new Resizer(resizeResult);
5154
this.props.onResizing(resizer);
5255
return resizer.getResult();
5356
} else {
54-
return { ...resizeResult, discard: false };
57+
return resizeResult;
5558
}
5659
}),
5760
filter(({ discard }) => !discard),

src/Container/operators.ts

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { filter, scan } from 'rxjs/operators';
1+
import { scan } from 'rxjs/operators';
22

33
import {
44
BarAction,
@@ -9,17 +9,11 @@ import {
99
} from '../types';
1010
import { DEFAULT_COORDINATE_OFFSET, getNextSizeRelatedInfo } from './utils';
1111

12-
export type BarActionScanResult = Pick<SizeRelatedInfo, 'flexGrowRatio'> & {
12+
export interface BarActionScanResult extends SizeRelatedInfo {
1313
barID: number;
1414
offset: number;
1515
type: BarActionType;
1616
originalCoordinate: Coordinate;
17-
defaultSizeInfoArray: SizeInfo[] | null;
18-
sizeInfoArray: SizeInfo[] | null;
19-
};
20-
21-
export interface FilterBarActionScanResult extends BarActionScanResult {
22-
sizeInfoArray: SizeInfo[];
2317
defaultSizeInfoArray: SizeInfo[];
2418
}
2519

@@ -30,11 +24,12 @@ interface ScanBarActionConfig {
3024

3125
const DEFAULT_BAR_ACTION_SCAN_RESULT: BarActionScanResult = {
3226
barID: -1,
27+
offset: 0,
3328
type: BarActionType.DEACTIVATE,
3429
originalCoordinate: DEFAULT_COORDINATE_OFFSET,
35-
defaultSizeInfoArray: null,
36-
sizeInfoArray: null,
37-
offset: 0,
30+
defaultSizeInfoArray: [],
31+
sizeInfoArray: [],
32+
discard: true,
3833
flexGrowRatio: 0,
3934
};
4035

@@ -73,18 +68,10 @@ export function scanBarAction(config: ScanBarActionConfig) {
7368
offset,
7469
originalCoordinate: prevResult.originalCoordinate,
7570
defaultSizeInfoArray: prevResult.defaultSizeInfoArray,
71+
discard: false,
7672
};
7773
case BarActionType.DEACTIVATE:
7874
return DEFAULT_BAR_ACTION_SCAN_RESULT;
7975
}
8076
}, DEFAULT_BAR_ACTION_SCAN_RESULT);
8177
}
82-
83-
export function filterBarActionScanResult() {
84-
return filter<BarActionScanResult, FilterBarActionScanResult>(
85-
(
86-
scanResult: BarActionScanResult,
87-
): scanResult is FilterBarActionScanResult =>
88-
!!(scanResult.flexGrowRatio && scanResult.sizeInfoArray),
89-
);
90-
}

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export interface SizeInfo {
3131
}
3232

3333
export interface SizeRelatedInfo {
34+
discard?: boolean;
3435
sizeInfoArray: SizeInfo[];
3536
flexGrowRatio: number;
3637
}

0 commit comments

Comments
 (0)