@mui/x-charts
Version:
The community edition of MUI X Charts components.
115 lines • 4.09 kB
text/typescript
import { type ChartPluginSignature } from "../../models/index.mjs";
import { type UseChartSeriesSignature } from "../../corePlugins/useChartSeries/index.mjs";
import { type SeriesId, type SeriesItemIdentifierWithType } from "../../../../models/index.mjs";
import { type ChartSeriesType } from "../../../../models/seriesType/config.mjs";
export type VisibilityIdentifier<SeriesType extends ChartSeriesType = ChartSeriesType> = Partial<SeriesItemIdentifierWithType<SeriesType>> & (SeriesItemIdentifierWithType<SeriesType> extends {
subType?: infer U;
} ? {
subType: U;
seriesId: SeriesId;
} : {
seriesId: SeriesId;
});
export type VisibilityIdentifierWithType<SeriesType extends ChartSeriesType = ChartSeriesType> = SeriesType extends any ? VisibilityIdentifier<SeriesType> & {
type: SeriesType;
} : never;
export type VisibilityMap = Map<string, VisibilityIdentifierWithType>;
export type IsItemVisibleFunction = {
/**
* Function to check if an item is visible based on its identifier.
*
* @param {VisibilityIdentifierWithType} identifier The identifier of the item to check.
* @returns {boolean} Whether the item is visible.
*/
(identifier: VisibilityIdentifierWithType): boolean;
};
export interface UseChartVisibilityManagerInstance<SeriesType extends ChartSeriesType> {
/**
* Hide an item by its identifier.
*
* @param {VisibilityIdentifier} identifier The identifier of the item to hide.
*/
hideItem(identifier: VisibilityIdentifier<SeriesType>): void;
/**
* Show an item by its identifier.
*
* @param {VisibilityIdentifier} identifier The identifier of the item to show.
*/
showItem(identifier: VisibilityIdentifier<SeriesType>): void;
/**
* Toggle the visibility of an item by its identifier.
*
* @param {VisibilityIdentifier} identifier The identifier of the item to toggle.
*/
toggleItemVisibility(identifier: VisibilityIdentifier<SeriesType> | VisibilityIdentifierWithType<SeriesType>): void;
}
export interface UseChartVisibilityManagerParameters<SeriesType extends ChartSeriesType> {
/**
* Callback fired when any hidden identifiers change.
* @param {VisibilityIdentifierWithType[]} hiddenItems The new list of hidden identifiers.
*/
onHiddenItemsChange?: (hiddenItems: VisibilityIdentifierWithType<SeriesType>[]) => void;
/**
* List of hidden series and/or items.
*
* Different chart types use different keys.
*
* @example
* ```ts
* [
* {
* type: 'pie',
* seriesId: 'series-1',
* dataIndex: 3,
* },
* {
* type: 'line',
* seriesId: 'series-2',
* }
* ]
* ```
*/
hiddenItems?: (VisibilityIdentifier<SeriesType> | VisibilityIdentifierWithType<SeriesType>)[];
/**
* List of initially hidden series and/or items.
* Used for uncontrolled state.
*
* Different chart types use different keys.
*
* @example
* ```ts
* [
* {
* type: 'pie',
* seriesId: 'series-1',
* dataIndex: 3,
* },
* {
* type: 'line',
* seriesId: 'series-2',
* }
* ]
* ```
*/
initialHiddenItems?: (VisibilityIdentifier<SeriesType> | VisibilityIdentifierWithType<SeriesType>)[];
}
export type UseChartVisibilityManagerDefaultizedParameters<SeriesType extends ChartSeriesType> = UseChartVisibilityManagerParameters<SeriesType>;
export interface UseChartVisibilityManagerState {
visibilityManager: {
/**
* Map of hidden identifiers by their serialized form.
*/
visibilityMap: VisibilityMap;
/**
* Internal information to know if the user controls the state or not.
*/
isControlled: boolean;
};
}
export type UseChartVisibilityManagerSignature<SeriesType extends ChartSeriesType = ChartSeriesType> = ChartPluginSignature<{
instance: UseChartVisibilityManagerInstance<SeriesType>;
state: UseChartVisibilityManagerState;
params: UseChartVisibilityManagerParameters<SeriesType>;
defaultizedParams: UseChartVisibilityManagerDefaultizedParameters<SeriesType>;
dependencies: [UseChartSeriesSignature];
}>;