Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | 4x 4x 4x 4x | import React, { createContext, useContext, ReactNode } from "react";
// 1. Define the types for our context
interface ChartContextProps {
disabledItems: string[];
highlightItems: string[];
colorsMapping: { [key: string]: string };
colorsBasedMapping: { [key: string]: string };
categoryMetadata: { [key: string]: { color?: string; label?: string } };
hiddenItems: string[];
visibleItems: string[];
availableItems: string[];
}
// 2. Provide default values for the context
const defaultChartContext: ChartContextProps = {
disabledItems: [],
highlightItems: [],
colorsMapping: {},
colorsBasedMapping: {},
categoryMetadata: {},
hiddenItems: [],
visibleItems: [],
availableItems: [],
};
const MichiVzContext = createContext<ChartContextProps>(defaultChartContext);
// 3. Define the ChartProvider
interface MichiVzProps {
children: ReactNode;
disabledItems?: string[];
highlightItems?: string[];
colorsMapping?: { [key: string]: string };
colorsBasedMapping?: { [key: string]: string };
categoryMetadata?: { [key: string]: { color: string; label: string } };
hiddenItems?: string[];
visibleItems?: string[];
availableItems?: string[];
}
export const MichiVzProvider: React.FC<MichiVzProps> = ({
children,
disabledItems = [],
highlightItems = [],
colorsMapping = {},
colorsBasedMapping = {},
categoryMetadata = {},
hiddenItems = [],
visibleItems = [],
availableItems = visibleItems,
}) => {
const contextValue = {
disabledItems,
highlightItems,
colorsMapping,
colorsBasedMapping,
categoryMetadata,
hiddenItems,
visibleItems,
availableItems,
};
return <MichiVzContext.Provider value={contextValue}>{children}</MichiVzContext.Provider>;
};
// 4. Create a custom hook for easier access
export const useChartContext = (): ChartContextProps => {
return useContext(MichiVzContext);
};
|