Skip to content

Commit 9b4f613

Browse files
Stricter layer prop types (#10024)
1 parent 224e1b6 commit 9b4f613

File tree

36 files changed

+111
-93
lines changed

36 files changed

+111
-93
lines changed

modules/aggregation-layers/src/contour-layer/contour-layer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ type _ContourLayerProps<DataT> = {
6464
* The grid origin
6565
* @default [0, 0]
6666
*/
67-
gridOrigin?: [number, number];
67+
gridOrigin?: Readonly<[number, number]>;
6868

6969
/**
7070
* When set to true, aggregation is performed on GPU, provided other conditions are met.

modules/aggregation-layers/src/grid-layer/grid-cell-layer.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@ import type {ScaleType} from '../common/types';
1313

1414
/** Proprties added by GridCellLayer. */
1515
type GridCellLayerProps = {
16-
cellSizeCommon: [number, number];
17-
cellOriginCommon: [number, number];
18-
colorDomain: [number, number];
19-
colorCutoff: [number, number] | null;
16+
cellSizeCommon: Readonly<[number, number]>;
17+
cellOriginCommon: Readonly<[number, number]>;
18+
colorDomain: Readonly<[number, number]>;
19+
colorCutoff: Readonly<[number, number]> | null;
2020
colorRange: Color[];
2121
colorScaleType: ScaleType;
22-
elevationDomain: [number, number];
23-
elevationCutoff: [number, number] | null;
24-
elevationRange: [number, number];
22+
elevationDomain: Readonly<[number, number]>;
23+
elevationCutoff: Readonly<[number, number]> | null;
24+
elevationRange: Readonly<[number, number]>;
2525
};
2626

2727
export class GridCellLayer<ExtraPropsT extends {} = {}> extends ColumnLayer<

modules/aggregation-layers/src/grid-layer/grid-layer-uniforms.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ uniform gridUniforms {
1616
`;
1717

1818
export type GridProps = {
19-
colorDomain: [number, number, number, number];
19+
colorDomain: Readonly<[number, number, number, number]>;
2020
colorRange: Texture;
21-
elevationDomain: [number, number, number, number];
22-
elevationRange: [number, number];
23-
originCommon: [number, number];
24-
sizeCommon: [number, number];
21+
elevationDomain: Readonly<[number, number, number, number]>;
22+
elevationRange: Readonly<[number, number]>;
23+
originCommon: Readonly<[number, number]>;
24+
sizeCommon: Readonly<[number, number]>;
2525
};
2626

2727
export const gridUniforms = {

modules/aggregation-layers/src/grid-layer/grid-layer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ type _GridLayerProps<DataT> = {
9090
* Color scale domain, default is set to the extent of aggregated weights in each cell.
9191
* @default [min(colorWeight), max(colorWeight)]
9292
*/
93-
colorDomain?: [number, number] | null;
93+
colorDomain?: Readonly<[number, number]> | null;
9494

9595
/**
9696
* Default: [colorbrewer](http://colorbrewer2.org/#type=sequential&scheme=YlOrRd&n=6) `6-class YlOrRd`
@@ -107,13 +107,13 @@ type _GridLayerProps<DataT> = {
107107
* Elevation scale input domain, default is set to between 0 and the max of aggregated weights in each cell.
108108
* @default [0, max(elevationWeight)]
109109
*/
110-
elevationDomain?: [number, number] | null;
110+
elevationDomain?: Readonly<[number, number]> | null;
111111

112112
/**
113113
* Elevation scale output range.
114114
* @default [0, 1000]
115115
*/
116-
elevationRange?: [number, number];
116+
elevationRange?: Readonly<[number, number]>;
117117

118118
/**
119119
* Cell elevation multiplier.

modules/aggregation-layers/src/heatmap-layer/heatmap-layer.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ const TEXTURE_PROPS: TextureProps = {
5555
addressModeV: 'clamp-to-edge'
5656
}
5757
};
58-
const DEFAULT_COLOR_DOMAIN = [0, 0];
58+
const DEFAULT_COLOR_DOMAIN = [0, 0] as const;
5959
const AGGREGATION_MODE = {
6060
SUM: 0,
6161
MEAN: 1
@@ -126,7 +126,7 @@ type _HeatmapLayerProps<DataT> = {
126126
*
127127
* @default null
128128
*/
129-
colorDomain?: [number, number] | null;
129+
colorDomain?: Readonly<[number, number]> | null;
130130

131131
/**
132132
* Defines the type of aggregation operation
@@ -174,7 +174,7 @@ export default class HeatmapLayer<
174174
static defaultProps = defaultProps;
175175

176176
state!: AggregationLayer<DataT>['state'] & {
177-
colorDomain?: number[];
177+
colorDomain?: Readonly<[number, number]>;
178178
isWeightMapDirty?: boolean;
179179
weightsTexture?: Texture;
180180
maxWeightsTexture?: Texture;
@@ -594,7 +594,10 @@ export default class HeatmapLayer<
594594
const metersPerPixel =
595595
(viewport.distanceScales.metersPerUnit[2] * (commonBounds[2] - commonBounds[0])) /
596596
textureSize;
597-
this.state.colorDomain = colorDomain.map(x => x * metersPerPixel * weightsScale);
597+
this.state.colorDomain = [
598+
colorDomain[0] * metersPerPixel * weightsScale,
599+
colorDomain[1] * metersPerPixel * weightsScale
600+
];
598601
} else {
599602
this.state.colorDomain = colorDomain || DEFAULT_COLOR_DOMAIN;
600603
}

modules/aggregation-layers/src/heatmap-layer/triangle-layer-uniforms.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ uniform triangleUniforms {
1616

1717
export type TriangleProps = {
1818
aggregationMode: number;
19-
colorDomain: [number, number];
19+
colorDomain: Readonly<[number, number]>;
2020
intensity: number;
2121
threshold: number;
2222
colorTexture: Texture;

modules/aggregation-layers/src/heatmap-layer/triangle-layer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {TriangleProps, triangleUniforms} from './triangle-layer-uniforms';
1111

1212
type _TriangleLayerProps = {
1313
data: {attributes: {positions: Buffer; texCoords: Buffer}};
14-
colorDomain: [number, number];
14+
colorDomain: Readonly<[number, number]>;
1515
aggregationMode: number;
1616
threshold: number;
1717
intensity: number;

modules/aggregation-layers/src/hexagon-layer/hexagon-cell-layer.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ import type {ScaleType} from '../common/types';
1212

1313
/** Proprties added by HexagonCellLayer. */
1414
export type _HexagonCellLayerProps = {
15-
hexOriginCommon: [number, number];
16-
colorDomain: [number, number];
17-
colorCutoff: [number, number] | null;
15+
hexOriginCommon: Readonly<[number, number]>;
16+
colorDomain: Readonly<[number, number]>;
17+
colorCutoff: Readonly<[number, number]> | null;
1818
colorRange: Color[];
1919
colorScaleType: ScaleType;
20-
elevationDomain: [number, number];
21-
elevationCutoff: [number, number] | null;
22-
elevationRange: [number, number];
20+
elevationDomain: Readonly<[number, number]>;
21+
elevationCutoff: Readonly<[number, number]> | null;
22+
elevationRange: Readonly<[number, number]>;
2323
};
2424

2525
export default class HexagonCellLayer<ExtraPropsT extends {} = {}> extends ColumnLayer<

modules/aggregation-layers/src/hexagon-layer/hexagon-layer-uniforms.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ uniform hexagonUniforms {
1515
`;
1616

1717
export type HexagonProps = {
18-
colorDomain: [number, number, number, number];
18+
colorDomain: Readonly<[number, number, number, number]>;
1919
colorRange: Texture;
20-
elevationDomain: [number, number, number, number];
21-
elevationRange: [number, number];
22-
originCommon: [number, number];
20+
elevationDomain: Readonly<[number, number, number, number]>;
21+
elevationRange: Readonly<[number, number]>;
22+
originCommon: Readonly<[number, number]>;
2323
};
2424

2525
export const hexagonUniforms = {

modules/aggregation-layers/src/hexagon-layer/hexagon-layer.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ type _HexagonLayerProps<DataT> = {
9292
* Color scale domain, default is set to the extent of aggregated weights in each cell.
9393
* @default [min(colorWeight), max(colorWeight)]
9494
*/
95-
colorDomain?: [number, number] | null;
95+
colorDomain?: Readonly<[number, number]> | null;
9696

9797
/**
9898
* Default: [colorbrewer](http://colorbrewer2.org/#type=sequential&scheme=YlOrRd&n=6) `6-class YlOrRd`
@@ -109,13 +109,13 @@ type _HexagonLayerProps<DataT> = {
109109
* Elevation scale input domain, default is set to between 0 and the max of aggregated weights in each cell.
110110
* @default [0, max(elevationWeight)]
111111
*/
112-
elevationDomain?: [number, number] | null;
112+
elevationDomain?: Readonly<[number, number]> | null;
113113

114114
/**
115115
* Elevation scale output range.
116116
* @default [0, 1000]
117117
*/
118-
elevationRange?: [number, number];
118+
elevationRange?: Readonly<[number, number]>;
119119

120120
/**
121121
* Cell elevation multiplier.

0 commit comments

Comments
 (0)