@graphique/geom-area
Version:
For area charts, stacked area charts, or streamgraphs
42 lines (34 loc) • 981 B
text/typescript
import { GeomAes, Position } from '../types'
interface SpecificationErrorProps<Datum> {
geomAes?: GeomAes<Datum>
shouldStack?: boolean
position?: Position
}
const GEOM = 'GeomArea'
const useHandleSpecificationErrors = <Datum>({
geomAes,
shouldStack,
position,
}: SpecificationErrorProps<Datum>) => {
if (shouldStack && !geomAes?.y) {
throw new Error(
`${GEOM}: aes.y is required when using position="${position}"`,
)
}
if (geomAes?.y1 && !geomAes?.y0) {
throw new Error(
`${GEOM}: aes.y1 can only be specified when combined with aes.y0`,
)
}
if (geomAes?.y0 && !geomAes.y1 && !geomAes.y) {
throw new Error(
`${GEOM}: aes.y0 needs to be specified with aes.y1 or aes.y`,
)
}
if (!geomAes?.y && !(geomAes?.y0 && geomAes?.y1)) {
throw new Error(
`${GEOM}: need to specify at least aes.y, or some combination of (aes.y, aes.y0) | (aes.y0, aes.y1)`,
)
}
}
export { useHandleSpecificationErrors }