All files / components MichiVzProvider.tsx

57.14% Statements 4/7
0% Branches 0/8
0% Functions 0/2
57.14% Lines 4/7

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