/
types.ts
192 lines (168 loc) · 5.23 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
import { FunctionComponent, MouseEvent } from 'react'
import { Area } from 'd3-shape'
import {
PropertyAccessor,
Box,
Theme,
Dimensions,
ModernMotionProps,
CssMixBlendMode,
SvgDefsAndFill,
} from '@nivo/core'
import { InheritedColorConfig, OrdinalColorScaleConfig } from '@nivo/colors'
import { AxisProps } from '@nivo/axes'
import { ScalePoint } from '@nivo/scales'
export interface AreaBumpDatum {
x: number | string
y: number
}
export interface DefaultAreaBumpDatum {
x: string
y: number
}
export type AreaBumpSerieExtraProps = Record<string, unknown>
export type AreaBumpSerie<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = ExtraProps & {
id: string
data: Datum[]
}
export interface AreaBumpPoint<Datum extends AreaBumpDatum> {
x: number
y: number
height: number
data: Datum
}
export interface AreaBumpAreaPoint {
x: number
y0: number
y1: number
}
export type AreaBumpAreaGenerator = Area<AreaBumpAreaPoint>
export interface AreaBumpComputedSerie<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> {
id: string
data: AreaBumpSerie<Datum, ExtraProps>
points: AreaBumpPoint<Datum>[]
areaPoints: AreaBumpAreaPoint[]
color: string
fill?: string
fillOpacity: number
borderWidth: number
borderColor: string
borderOpacity: number
}
export type AreaBumpAlign = 'start' | 'middle' | 'end'
export type AreaBumpDataProps<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = {
data: AreaBumpSerie<Datum, ExtraProps>[]
}
export type AreaBumpInterpolation = 'smooth' | 'linear'
export type AreaBumpLabel<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = PropertyAccessor<AreaBumpSerie<Datum, ExtraProps>, string> | false
export interface AreaBumpLabelData<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> {
id: string
serie: AreaBumpComputedSerie<Datum, ExtraProps>
label: string
x: number
y: number
color: string
opacity: number
textAnchor: 'start' | 'end'
}
export type AreaBumpMouseHandler<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = (serie: AreaBumpComputedSerie<Datum, ExtraProps>, event: MouseEvent<SVGPathElement>) => void
export type AreaBumpLayerId = 'grid' | 'axes' | 'labels' | 'areas'
export interface AreaBumpCustomLayerProps<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> {
innerWidth: number
innerHeight: number
outerWidth: number
outerHeight: number
series: AreaBumpComputedSerie<Datum, ExtraProps>[]
xScale: ScalePoint<Datum['x']>
areaGenerator: AreaBumpAreaGenerator
}
export type AreaBumpCustomLayer<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = FunctionComponent<AreaBumpCustomLayerProps<Datum, ExtraProps>>
export type AreaBumpLayer<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = AreaBumpLayerId | AreaBumpCustomLayer<Datum, ExtraProps>
export type AreaBumpAreaTooltip<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = FunctionComponent<{
serie: AreaBumpComputedSerie<Datum, ExtraProps>
}>
export type AreaBumpCommonProps<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = {
margin: Box
align: AreaBumpAlign
interpolation: AreaBumpInterpolation
spacing: number
xPadding: number
theme: Theme
colors: OrdinalColorScaleConfig<AreaBumpSerie<Datum, ExtraProps>>
blendMode: CssMixBlendMode
fillOpacity: number
activeFillOpacity: number
inactiveFillOpacity: number
borderWidth: number
activeBorderWidth: number
inactiveBorderWidth: number
borderColor: InheritedColorConfig<
Omit<
AreaBumpComputedSerie<Datum, ExtraProps>,
'fillOpacity' | 'borderWidth' | 'borderColor' | 'borderOpacity'
>
>
borderOpacity: number
activeBorderOpacity: number
inactiveBorderOpacity: number
startLabel: AreaBumpLabel<Datum, ExtraProps>
startLabelPadding: number
startLabelTextColor: InheritedColorConfig<AreaBumpComputedSerie<Datum, ExtraProps>>
endLabel: AreaBumpLabel<Datum, ExtraProps>
endLabelPadding: number
endLabelTextColor: InheritedColorConfig<AreaBumpComputedSerie<Datum, ExtraProps>>
enableGridX: boolean
axisBottom: AxisProps | null
axisTop: AxisProps | null
isInteractive: boolean
defaultActiveSerieIds: string[]
onMouseEnter: AreaBumpMouseHandler<Datum, ExtraProps>
onMouseMove: AreaBumpMouseHandler<Datum, ExtraProps>
onMouseLeave: AreaBumpMouseHandler<Datum, ExtraProps>
onClick: AreaBumpMouseHandler<Datum, ExtraProps>
tooltip: AreaBumpAreaTooltip<Datum, ExtraProps>
role: string
layers: AreaBumpLayer<Datum, ExtraProps>[]
renderWrapper: boolean
}
export type AreaBumpSvgProps<
Datum extends AreaBumpDatum,
ExtraProps extends AreaBumpSerieExtraProps
> = Partial<AreaBumpCommonProps<Datum, ExtraProps>> &
AreaBumpDataProps<Datum, ExtraProps> &
SvgDefsAndFill<AreaBumpComputedSerie<Datum, ExtraProps>> &
Dimensions &
ModernMotionProps