@szhsin/react-accordion
Version:
The complete accordion solution for React.
27 lines (24 loc) • 866 B
JavaScript
import { useContext } from 'react';
import { AccordionContext } from '../utils/constants.mjs';
const getItemState = (providerValue, key, itemInitialEntered) => {
const {
stateMap,
mountOnEnter,
initialEntered
} = providerValue;
const _initialEntered = itemInitialEntered != null ? 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;
};
export { getItemState, useAccordionContext };