function useXScale()

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])
}