Skip to content

Commit f7942a6

Browse files
nstepienamanmahajan7
authored andcommitted
Enforce more immutable types (adazzle#1876)
1 parent 855dbae commit f7942a6

File tree

9 files changed

+22
-22
lines changed

9 files changed

+22
-22
lines changed

src/Canvas.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ type SharedDataGridProps<R, K extends keyof R> = Pick<DataGridProps<R, K>,
4040

4141
export interface CanvasProps<R, K extends keyof R> extends SharedDataGridProps<R, K> {
4242
columnMetrics: ColumnMetrics<R>;
43-
viewportColumns: CalculatedColumn<R>[];
43+
viewportColumns: readonly CalculatedColumn<R>[];
4444
height: number;
4545
scrollLeft: number;
4646
onScroll(position: ScrollPosition): void;

src/DataGrid.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export { DataGridHandle };
3333

3434
export interface DataGridProps<R, K extends keyof R> {
3535
/** An array of objects representing each column on the grid */
36-
columns: Column<R>[];
36+
columns: readonly Column<R>[];
3737
/** The minimum width of the grid in pixels */
3838
minWidth?: number;
3939
/** The height of the header row in pixels */
@@ -56,7 +56,7 @@ export interface DataGridProps<R, K extends keyof R> {
5656
/** Function called whenever keyboard key is pressed down */
5757
onGridKeyDown?(event: React.KeyboardEvent<HTMLDivElement>): void;
5858

59-
selectedRows?: Set<R[K]>;
59+
selectedRows?: ReadonlySet<R[K]>;
6060
/** Function called whenever row selection is changed */
6161
onSelectedRowsChange?(selectedRows: Set<R[K]>): void;
6262

@@ -122,7 +122,7 @@ export interface DataGridProps<R, K extends keyof R> {
122122
* Rows to be pinned at the bottom of the rows view for summary, the vertical scroll bar will not scroll these rows.
123123
* Bottom horizontal scroll bar can move the row left / right. Or a customized row renderer can be used to disabled the scrolling support.
124124
*/
125-
summaryRows?: R[];
125+
summaryRows?: readonly R[];
126126
/** Control how big render row batches will be. */
127127
renderBatchSize?: number;
128128
}
@@ -189,7 +189,7 @@ function DataGrid<R, K extends keyof R>({
189189
});
190190
}, [columnMetrics, scrollLeft]);
191191

192-
const viewportColumns: CalculatedColumn<R>[] = useMemo(() => {
192+
const viewportColumns: readonly CalculatedColumn<R>[] = useMemo(() => {
193193
if (!columnMetrics) return [];
194194

195195
return getViewportColumns(

src/EventBus.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ interface EventMap {
1212
type EventName = keyof EventMap;
1313

1414
export default class EventBus {
15-
readonly subscribers = new Map<EventName, Set<EventMap[EventName]>>();
15+
private readonly subscribers = new Map<EventName, Set<EventMap[EventName]>>();
1616

1717
subscribe<T extends EventName>(type: T, handler: EventMap[T]) {
1818
if (!this.subscribers.has(type)) {

src/FilterRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export interface FilterRowProps<R, K extends keyof R> extends SharedDataGridProp
1414
height: number;
1515
width: number;
1616
lastFrozenColumnIndex: number;
17-
columns: CalculatedColumn<R>[];
17+
columns: readonly CalculatedColumn<R>[];
1818
scrollLeft: number | undefined;
1919
}
2020

src/HeaderRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export interface HeaderRowProps<R, K extends keyof R> extends SharedDataGridProp
2121
height: number;
2222
width: number;
2323
lastFrozenColumnIndex: number;
24-
columns: CalculatedColumn<R>[];
24+
columns: readonly CalculatedColumn<R>[];
2525
allRowsSelected: boolean;
2626
scrollLeft: number | undefined;
2727
onColumnResize(column: CalculatedColumn<R>, width: number): void;

src/common/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export type CalculatedColumn<TRow, TField extends keyof TRow = keyof TRow> =
5454
};
5555

5656
export interface ColumnMetrics<TRow> {
57-
columns: CalculatedColumn<TRow>[];
57+
columns: readonly CalculatedColumn<TRow>[];
5858
lastFrozenColumnIndex: number;
5959
viewportWidth: number;
6060
totalColumnWidth: number;
@@ -150,7 +150,7 @@ export interface RowsContainerProps {
150150
export interface IRowRendererProps<TRow> {
151151
height: number;
152152
width: number;
153-
viewportColumns: CalculatedColumn<TRow>[];
153+
viewportColumns: readonly CalculatedColumn<TRow>[];
154154
row: TRow;
155155
cellRenderer?: React.ComponentType<CellRendererProps<TRow>>;
156156
idx: number;

src/utils/columnUtils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import { Column, CalculatedColumn, ColumnMetrics, FormatterProps } from '../comm
22
import { getScrollbarSize } from './domUtils';
33

44
interface Metrics<R> {
5-
columns: Column<R>[];
6-
columnWidths: Map<keyof R, number>;
5+
columns: readonly Column<R>[];
6+
columnWidths: ReadonlyMap<keyof R, number>;
77
minColumnWidth: number;
88
viewportWidth: number;
99
defaultFormatter: React.ComponentType<FormatterProps<R>>;
@@ -66,7 +66,7 @@ export function getColumnMetrics<R>(metrics: Metrics<R>): ColumnMetrics<R> {
6666

6767
function getSpecifiedWidth<R>(
6868
column: Column<R>,
69-
columnWidths: Map<keyof R, number>,
69+
columnWidths: ReadonlyMap<keyof R, number>,
7070
viewportWidth: number,
7171
minColumnWidth: number
7272
): number | void {
@@ -92,7 +92,7 @@ export function canEdit<R>(column: CalculatedColumn<R>, rowData: R, enableCellSe
9292
return enableCellSelect === true && (!!column.editor || !!column.editable);
9393
}
9494

95-
export function getColumnScrollPosition<R>(columns: CalculatedColumn<R>[], idx: number, currentScrollLeft: number, currentClientWidth: number): number {
95+
export function getColumnScrollPosition<R>(columns: readonly CalculatedColumn<R>[], idx: number, currentScrollLeft: number, currentClientWidth: number): number {
9696
let left = 0;
9797
let frozen = 0;
9898

src/utils/selectedCellUtils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const getRowTop = (rowIdx: number, rowHeight: number): number => rowIdx * rowHei
66

77
interface getSelectedDimensionsOpts<R> {
88
selectedPosition: Position;
9-
columns: CalculatedColumn<R>[];
9+
columns: readonly CalculatedColumn<R>[];
1010
rowHeight: number;
1111
scrollLeft: number;
1212
}
@@ -25,7 +25,7 @@ export function getSelectedDimensions<R>({ selectedPosition: { idx, rowIdx }, co
2525

2626
interface getSelectedRangeDimensionsOpts<R> {
2727
selectedRange: Range;
28-
columns: CalculatedColumn<R>[];
28+
columns: readonly CalculatedColumn<R>[];
2929
rowHeight: number;
3030
}
3131

@@ -52,7 +52,7 @@ export function getSelectedRangeDimensions<R>({ selectedRange: { topLeft, bottom
5252

5353
interface getSelectedCellValueOpts<R> {
5454
selectedPosition: Position;
55-
columns: CalculatedColumn<R>[];
55+
columns: readonly CalculatedColumn<R>[];
5656
rowGetter: RowGetter<R>;
5757
}
5858

@@ -66,7 +66,7 @@ export function getSelectedCellValue<R>({ selectedPosition, columns, rowGetter }
6666
interface isSelectedCellEditableOpts<R> {
6767
enableCellSelect: boolean;
6868
selectedPosition: Position;
69-
columns: CalculatedColumn<R>[];
69+
columns: readonly CalculatedColumn<R>[];
7070
rowGetter: RowGetter<R>;
7171
onCheckCellIsEditable?(arg: { row: R; column: CalculatedColumn<R> } & Position): boolean;
7272
}
@@ -80,7 +80,7 @@ export function isSelectedCellEditable<R>({ enableCellSelect, selectedPosition,
8080

8181
interface getNextSelectedCellPositionOpts<R> {
8282
cellNavigationMode: CellNavigationMode;
83-
columns: CalculatedColumn<R>[];
83+
columns: readonly CalculatedColumn<R>[];
8484
rowsCount: number;
8585
nextPosition: Position;
8686
}
@@ -130,7 +130,7 @@ export function getNextSelectedCellPosition<R>({ cellNavigationMode, columns, ro
130130

131131
interface canExitGridOpts<R> {
132132
cellNavigationMode: CellNavigationMode;
133-
columns: CalculatedColumn<R>[];
133+
columns: readonly CalculatedColumn<R>[];
134134
rowsCount: number;
135135
selectedPosition: Position;
136136
}

src/utils/viewportUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CalculatedColumn, ColumnMetrics } from '../common/types';
22

3-
function getTotalFrozenColumnWidth<R>(columns: CalculatedColumn<R>[], lastFrozenColumnIndex: number): number {
3+
function getTotalFrozenColumnWidth<R>(columns: readonly CalculatedColumn<R>[], lastFrozenColumnIndex: number): number {
44
if (lastFrozenColumnIndex === -1) {
55
return 0;
66
}
@@ -77,7 +77,7 @@ export function getHorizontalRangeToRender<R>({
7777
return [colOverscanStartIdx, colOverscanEndIdx];
7878
}
7979

80-
export function getViewportColumns<R>(columns: CalculatedColumn<R>[], colOverscanStartIdx: number, colOverscanEndIdx: number) {
80+
export function getViewportColumns<R>(columns: readonly CalculatedColumn<R>[], colOverscanStartIdx: number, colOverscanEndIdx: number) {
8181
const viewportColumns: CalculatedColumn<R>[] = [];
8282
for (let colIdx = 0; colIdx <= colOverscanEndIdx; colIdx++) {
8383
const column = columns[colIdx];

0 commit comments

Comments
 (0)