| 1 | import { createSelector } from 'reselect';
|
|---|
| 2 | import sortBy from 'es-toolkit/compat/sortBy';
|
|---|
| 3 | import { useAppSelector } from '../hooks';
|
|---|
| 4 | import { calculateCartesianTooltipPos, calculatePolarTooltipPos } from '../../util/ChartUtils';
|
|---|
| 5 | import { selectChartDataWithIndexes } from './dataSelectors';
|
|---|
| 6 | import { selectTooltipAxisDomain, selectTooltipAxisTicks, selectTooltipDisplayedData } from './tooltipSelectors';
|
|---|
| 7 | import { selectTooltipAxisDataKey } from './axisSelectors';
|
|---|
| 8 | import { selectChartName } from './rootPropsSelectors';
|
|---|
| 9 | import { selectChartLayout } from '../../context/chartLayoutContext';
|
|---|
| 10 | import { selectChartOffsetInternal } from './selectChartOffsetInternal';
|
|---|
| 11 | import { selectChartHeight, selectChartWidth } from './containerSelectors';
|
|---|
| 12 | import { combineActiveLabel } from './combiners/combineActiveLabel';
|
|---|
| 13 | import { combineTooltipInteractionState } from './combiners/combineTooltipInteractionState';
|
|---|
| 14 | import { combineActiveTooltipIndex } from './combiners/combineActiveTooltipIndex';
|
|---|
| 15 | import { combineCoordinateForDefaultIndex } from './combiners/combineCoordinateForDefaultIndex';
|
|---|
| 16 | import { combineTooltipPayloadConfigurations } from './combiners/combineTooltipPayloadConfigurations';
|
|---|
| 17 | import { selectTooltipPayloadSearcher } from './selectTooltipPayloadSearcher';
|
|---|
| 18 | import { selectTooltipState } from './selectTooltipState';
|
|---|
| 19 | import { combineTooltipPayload } from './combiners/combineTooltipPayload';
|
|---|
| 20 | import { calculateActiveTickIndex, getActiveCartesianCoordinate, getActivePolarCoordinate, isInCartesianRange } from '../../util/getActiveCoordinate';
|
|---|
| 21 | import { inRangeOfSector } from '../../util/PolarUtils';
|
|---|
| 22 | export var useChartName = () => {
|
|---|
| 23 | return useAppSelector(selectChartName);
|
|---|
| 24 | };
|
|---|
| 25 | var pickTooltipEventType = (_state, tooltipEventType) => tooltipEventType;
|
|---|
| 26 | var pickTrigger = (_state, _tooltipEventType, trigger) => trigger;
|
|---|
| 27 | var pickDefaultIndex = (_state, _tooltipEventType, _trigger, defaultIndex) => defaultIndex;
|
|---|
| 28 | export var selectOrderedTooltipTicks = createSelector(selectTooltipAxisTicks, ticks => sortBy(ticks, o => o.coordinate));
|
|---|
| 29 | export var selectTooltipInteractionState = createSelector([selectTooltipState, pickTooltipEventType, pickTrigger, pickDefaultIndex], combineTooltipInteractionState);
|
|---|
| 30 | export var selectActiveIndex = createSelector([selectTooltipInteractionState, selectTooltipDisplayedData, selectTooltipAxisDataKey, selectTooltipAxisDomain], combineActiveTooltipIndex);
|
|---|
| 31 | export var selectTooltipDataKey = (state, tooltipEventType, trigger) => {
|
|---|
| 32 | if (tooltipEventType == null) {
|
|---|
| 33 | return undefined;
|
|---|
| 34 | }
|
|---|
| 35 | var tooltipState = selectTooltipState(state);
|
|---|
| 36 | if (tooltipEventType === 'axis') {
|
|---|
| 37 | if (trigger === 'hover') {
|
|---|
| 38 | return tooltipState.axisInteraction.hover.dataKey;
|
|---|
| 39 | }
|
|---|
| 40 | return tooltipState.axisInteraction.click.dataKey;
|
|---|
| 41 | }
|
|---|
| 42 | if (trigger === 'hover') {
|
|---|
| 43 | return tooltipState.itemInteraction.hover.dataKey;
|
|---|
| 44 | }
|
|---|
| 45 | return tooltipState.itemInteraction.click.dataKey;
|
|---|
| 46 | };
|
|---|
| 47 | export var selectTooltipPayloadConfigurations = createSelector([selectTooltipState, pickTooltipEventType, pickTrigger, pickDefaultIndex], combineTooltipPayloadConfigurations);
|
|---|
| 48 | export var selectCoordinateForDefaultIndex = createSelector([selectChartWidth, selectChartHeight, selectChartLayout, selectChartOffsetInternal, selectTooltipAxisTicks, pickDefaultIndex, selectTooltipPayloadConfigurations], combineCoordinateForDefaultIndex);
|
|---|
| 49 | export var selectActiveCoordinate = createSelector([selectTooltipInteractionState, selectCoordinateForDefaultIndex], (tooltipInteractionState, defaultIndexCoordinate) => {
|
|---|
| 50 | var _tooltipInteractionSt;
|
|---|
| 51 | return (_tooltipInteractionSt = tooltipInteractionState.coordinate) !== null && _tooltipInteractionSt !== void 0 ? _tooltipInteractionSt : defaultIndexCoordinate;
|
|---|
| 52 | });
|
|---|
| 53 | export var selectActiveLabel = createSelector([selectTooltipAxisTicks, selectActiveIndex], combineActiveLabel);
|
|---|
| 54 | export var selectTooltipPayload = createSelector([selectTooltipPayloadConfigurations, selectActiveIndex, selectChartDataWithIndexes, selectTooltipAxisDataKey, selectActiveLabel, selectTooltipPayloadSearcher, pickTooltipEventType], combineTooltipPayload);
|
|---|
| 55 | export var selectIsTooltipActive = createSelector([selectTooltipInteractionState, selectActiveIndex], (tooltipInteractionState, activeIndex) => {
|
|---|
| 56 | return {
|
|---|
| 57 | isActive: tooltipInteractionState.active && activeIndex != null,
|
|---|
| 58 | activeIndex
|
|---|
| 59 | };
|
|---|
| 60 | });
|
|---|
| 61 | var combineActiveCartesianProps = (chartEvent, layout, tooltipAxisType, tooltipAxisRange, tooltipTicks, orderedTooltipTicks, offset) => {
|
|---|
| 62 | if (!chartEvent || !tooltipAxisType || !tooltipAxisRange || !tooltipTicks) {
|
|---|
| 63 | return undefined;
|
|---|
| 64 | }
|
|---|
| 65 | if (!isInCartesianRange(chartEvent, offset)) {
|
|---|
| 66 | return undefined;
|
|---|
| 67 | }
|
|---|
| 68 | var pos = calculateCartesianTooltipPos(chartEvent, layout);
|
|---|
| 69 | var activeIndex = calculateActiveTickIndex(pos, orderedTooltipTicks, tooltipTicks, tooltipAxisType, tooltipAxisRange);
|
|---|
| 70 | var activeCoordinate = getActiveCartesianCoordinate(layout, tooltipTicks, activeIndex, chartEvent);
|
|---|
| 71 | return {
|
|---|
| 72 | activeIndex: String(activeIndex),
|
|---|
| 73 | activeCoordinate
|
|---|
| 74 | };
|
|---|
| 75 | };
|
|---|
| 76 | var combineActivePolarProps = (chartEvent, layout, polarViewBox, tooltipAxisType, tooltipAxisRange, tooltipTicks, orderedTooltipTicks) => {
|
|---|
| 77 | if (!chartEvent || !tooltipAxisType || !tooltipAxisRange || !tooltipTicks || !polarViewBox) {
|
|---|
| 78 | return undefined;
|
|---|
| 79 | }
|
|---|
| 80 | var rangeObj = inRangeOfSector(chartEvent, polarViewBox);
|
|---|
| 81 | if (!rangeObj) {
|
|---|
| 82 | return undefined;
|
|---|
| 83 | }
|
|---|
| 84 | var pos = calculatePolarTooltipPos(rangeObj, layout);
|
|---|
| 85 | var activeIndex = calculateActiveTickIndex(pos, orderedTooltipTicks, tooltipTicks, tooltipAxisType, tooltipAxisRange);
|
|---|
| 86 | var activeCoordinate = getActivePolarCoordinate(layout, tooltipTicks, activeIndex, rangeObj);
|
|---|
| 87 | return {
|
|---|
| 88 | activeIndex: String(activeIndex),
|
|---|
| 89 | activeCoordinate
|
|---|
| 90 | };
|
|---|
| 91 | };
|
|---|
| 92 | export var combineActiveProps = (chartEvent, layout, polarViewBox, tooltipAxisType, tooltipAxisRange, tooltipTicks, orderedTooltipTicks, offset) => {
|
|---|
| 93 | if (!chartEvent || !layout || !tooltipAxisType || !tooltipAxisRange || !tooltipTicks) {
|
|---|
| 94 | return undefined;
|
|---|
| 95 | }
|
|---|
| 96 | if (layout === 'horizontal' || layout === 'vertical') {
|
|---|
| 97 | return combineActiveCartesianProps(chartEvent, layout, tooltipAxisType, tooltipAxisRange, tooltipTicks, orderedTooltipTicks, offset);
|
|---|
| 98 | }
|
|---|
| 99 | return combineActivePolarProps(chartEvent, layout, polarViewBox, tooltipAxisType, tooltipAxisRange, tooltipTicks, orderedTooltipTicks);
|
|---|
| 100 | }; |
|---|