@szhsin/react-accordion
Version:
The complete accordion solution for React.
21 lines (20 loc) • 853 B
JavaScript
import { AccordionContext } from "../utils/constants.mjs";
import { useContext } from "react";
//#region src/hooks/useAccordionContext.ts
const getItemState = (providerValue, key, itemInitialEntered) => {
const { stateMap, mountOnEnter, initialEntered } = providerValue;
const _initialEntered = itemInitialEntered ?? initialEntered;
return stateMap.get(key) || {
status: _initialEntered ? "entered" : mountOnEnter ? "unmounted" : "exited",
isMounted: !mountOnEnter,
isEnter: _initialEntered,
isResolved: true
};
};
const useAccordionContext = () => {
const context = useContext(AccordionContext);
if (process.env.NODE_ENV !== "production" && !context.stateMap) throw new Error("[React-Accordion] Cannot find a <AccordionProvider/> above this AccordionItem.");
return context;
};
//#endregion
export { getItemState, useAccordionContext };