11import {
2+ Accessor ,
3+ AccessorContext ,
4+ AccessorFunction ,
25 Color ,
36 CompositeLayer ,
47 CompositeLayerProps ,
@@ -9,23 +12,23 @@ import {ScaleLinear, scaleLinear} from 'd3-scale';
912
1013import AxesLayer from './axes-layer' ;
1114import SurfaceLayer from './surface-layer' ;
12- import { $TODO } from './types' ;
15+ import { Range , TickFormat , Vec3 } from './types' ;
1316
14- const DEFAULT_GET_SCALE = { type : 'function' , value : ( ) => scaleLinear ( ) } ;
15- const DEFAULT_TICK_FORMAT = { type : 'function' , value : x => x . toFixed ( 2 ) } ;
17+ const DEFAULT_GET_SCALE = { type : 'function' , value : ( ) => scaleLinear ( ) } as const ;
18+ const DEFAULT_TICK_FORMAT = { type : 'function' , value : ( x : number ) => x . toFixed ( 2 ) } as const ;
1619const DEFAULT_TICK_COUNT = 6 ;
17- const DEFAULT_COLOR = [ 0 , 0 , 0 , 255 ] ;
20+ const DEFAULT_COLOR : Color = [ 0 , 0 , 0 , 255 ] ;
1821
1922/** All props supported by PlotLayer. */
20- export type PlotLayerProps < DataT = unknown > = _PlotLayerProps < DataT > & CompositeLayerProps ;
23+ export type PlotLayerProps < DataT extends Vec3 = Vec3 > = _PlotLayerProps < DataT > & CompositeLayerProps ;
2124
22- type _PlotLayerProps < DataT > = {
25+ type _PlotLayerProps < DataT extends Vec3 = Vec3 > = {
2326 // SurfaceLayer props
24- getPosition : $TODO ;
25- getColor : $TODO ;
26- getXScale : $TODO ;
27- getYScale : $TODO ;
28- getZScale : $TODO ;
27+ getPosition : AccessorFunction < DataT , Vec3 > ;
28+ getColor : AccessorFunction < DataT , Color > ;
29+ getXScale : AccessorFunction < Range , ScaleLinear < number , number > > ;
30+ getYScale : AccessorFunction < Range , ScaleLinear < number , number > > ;
31+ getZScale : AccessorFunction < Range , ScaleLinear < number , number > > ;
2932 uCount : number ;
3033 vCount : number ;
3134 lightStrength : number ;
@@ -39,9 +42,9 @@ type _PlotLayerProps<DataT> = {
3942 xTicks : number ;
4043 yTicks : number ;
4144 zTicks : number ;
42- xTickFormat : $TODO ;
43- yTickFormat : $TODO ;
44- zTickFormat : $TODO ;
45+ xTickFormat : TickFormat < DataT > ;
46+ yTickFormat : TickFormat < DataT > ;
47+ zTickFormat : TickFormat < DataT > ;
4548 axesPadding : 0 ;
4649 axesColor : Color ;
4750 xTitle : string ;
@@ -51,8 +54,8 @@ type _PlotLayerProps<DataT> = {
5154
5255const defaultProps : DefaultProps < PlotLayerProps > = {
5356 // SurfaceLayer props
54- getPosition : { type : 'accessor' , value : ( u , v ) => [ 0 , 0 , 0 ] } ,
55- getColor : { type : 'accessor' , value : ( x , y , z ) => DEFAULT_COLOR } ,
57+ getPosition : { type : 'accessor' , value : ( [ u , v ] ) => [ 0 , 0 , 0 ] } ,
58+ getColor : { type : 'accessor' , value : ( [ x , y , z ] ) => DEFAULT_COLOR } ,
5659 getXScale : DEFAULT_GET_SCALE ,
5760 getYScale : DEFAULT_GET_SCALE ,
5861 getZScale : DEFAULT_GET_SCALE ,
@@ -66,9 +69,9 @@ const defaultProps: DefaultProps<PlotLayerProps> = {
6669 xTicks : DEFAULT_TICK_COUNT ,
6770 yTicks : DEFAULT_TICK_COUNT ,
6871 zTicks : DEFAULT_TICK_COUNT ,
69- xTickFormat : DEFAULT_TICK_FORMAT ,
70- yTickFormat : DEFAULT_TICK_FORMAT ,
71- zTickFormat : DEFAULT_TICK_FORMAT ,
72+ xTickFormat : DEFAULT_TICK_FORMAT as unknown as TickFormat < unknown > ,
73+ yTickFormat : DEFAULT_TICK_FORMAT as unknown as TickFormat < unknown > ,
74+ zTickFormat : DEFAULT_TICK_FORMAT as unknown as TickFormat < unknown > ,
7275 xTitle : 'x' ,
7376 yTitle : 'y' ,
7477 zTitle : 'z' ,
@@ -109,7 +112,7 @@ const defaultProps: DefaultProps<PlotLayerProps> = {
109112 * @param {Number } [props.fontSize] - size of the labels
110113 * @param {Array } [props.axesColor] - color of the gridlines, in [r,g,b,a]
111114 */
112- export default class PlotLayer < DataT = any , ExtraPropsT extends { } = { } > extends CompositeLayer <
115+ export default class PlotLayer < DataT extends Vec3 = Vec3 , ExtraPropsT extends { } = { } > extends CompositeLayer <
113116 ExtraPropsT & Required < _PlotLayerProps < DataT > >
114117> {
115118 static layerName = 'PlotLayer' ;
@@ -137,7 +140,7 @@ export default class PlotLayer<DataT = any, ExtraPropsT extends {} = {}> extends
137140 for ( let uIndex = 0 ; uIndex < uCount ; uIndex ++ ) {
138141 const u = uIndex / ( uCount - 1 ) ;
139142 const v = vIndex / ( vCount - 1 ) ;
140- const [ x , y , z ] = getPosition ( u , v ) ;
143+ const [ x , y , z ] = getPosition ( [ u , v , 0 ] as DataT , { } as AccessorContext < DataT > ) ;
141144
142145 if ( isFinite ( x ) ) {
143146 xMin = Math . min ( xMin , x ) ;
@@ -154,9 +157,9 @@ export default class PlotLayer<DataT = any, ExtraPropsT extends {} = {}> extends
154157 }
155158 }
156159
157- const xScale = getXScale ( { min : xMin , max : xMax } ) ;
158- const yScale = getYScale ( { min : yMin , max : yMax } ) ;
159- const zScale = getZScale ( { min : zMin , max : zMax } ) ;
160+ const xScale = getXScale ( { min : xMin , max : xMax } , { } as AccessorContext < Range > ) ;
161+ const yScale = getYScale ( { min : yMin , max : yMax } , { } as AccessorContext < Range > ) ;
162+ const zScale = getZScale ( { min : zMin , max : zMax } , { } as AccessorContext < Range > ) ;
160163
161164 this . setState ( { xScale, yScale, zScale} ) ;
162165 }
@@ -188,8 +191,8 @@ export default class PlotLayer<DataT = any, ExtraPropsT extends {} = {}> extends
188191 return [
189192 new SurfaceLayer (
190193 {
191- getPosition,
192- getColor,
194+ getPosition : getPosition as AccessorFunction < Vec3 , Vec3 > ,
195+ getColor : getColor as Accessor < Vec3 , Color > ,
193196 uCount,
194197 vCount,
195198 xScale,
0 commit comments