in packages/react-heat-streams/src/components/HeatStreamsChart.tsx [205:230]
function useXScale(
showCategories: boolean,
width: number,
textPercent: number,
zoomLevel: number,
xDomain: XDomain,
): XScale {
const getXScale = useCallback(
(domain: XDomain): any => {
const rangeStart = showCategories ? width * textPercent : 0
const range = [rangeStart, width * zoomLevel]
const isNumberDomain = typeof domain[0] === 'number'
if (isNumberDomain) {
return scaleLinear()
.domain(domain)
.range(range)
} else {
return scaleTime()
.domain(domain)
.range(range)
}
},
[showCategories, textPercent, width, zoomLevel],
)
return useMemo(() => getXScale(xDomain), [getXScale, xDomain])
}