UNPKG

bento-charts

Version:
38 lines (30 loc) 1.1 kB
import { useMemo } from 'react'; import { RADIAN } from '../constants/chartConstants'; import type { CategoricalChartDataWithTransforms } from '../types/chartTypes'; export const polarToCartesian = (cx: number, cy: number, radius: number, angle: number) => { return { x: cx + Math.cos(-RADIAN * angle) * radius, y: cy + Math.sin(-RADIAN * angle) * radius, }; }; export const useTransformedChartData = ( { data: originalData, preFilter, dataMap, postFilter, removeEmpty: origRemoveEmpty, }: CategoricalChartDataWithTransforms, defaultRemoveEmpty = true, sortY = false ) => useMemo(() => { const removeEmpty = origRemoveEmpty ?? defaultRemoveEmpty; let data = [...originalData]; if (preFilter) data = data.filter(preFilter); if (dataMap) data = data.map(dataMap); if (postFilter) data = data.filter(postFilter); if (removeEmpty) data = data.filter((e) => e.y !== 0); if (sortY) data.sort((a, b) => a.y - b.y); return data; }, [dataMap, defaultRemoveEmpty, originalData, origRemoveEmpty, preFilter, postFilter, sortY]);