import { children, mergeProps, splitProps } from "solid-js";
import classNames from "./classnames";
import { ENTERED, ENTERING, EXITING, } from "solid-react-transition";
import transitionEndListener from "./transitionEndListener";
import TransitionWrapper from "./TransitionWrapper";
import { useBootstrapPrefix } from "./ThemeProvider";
import { resolveClasses } from "solid-bootstrap-core";
const defaultProps = {
    in: false,
    mountOnEnter: false,
    unmountOnExit: false,
    appear: false,
};
const transitionStyles = {
    [ENTERING]: "show",
    [ENTERED]: "show",
};
const OffcanvasToggling = (p) => {
    const [local, props] = splitProps(mergeProps(defaultProps, p), [
        "bsPrefix",
        "className",
        "children",
    ]);
    const bsPrefix = useBootstrapPrefix(local.bsPrefix, "offcanvas");
    let child = children(() => local.children);
    let prevClasses;
    return (<TransitionWrapper addEndListener={transitionEndListener} {...props}>
      {((status, innerProps) => {
            const el = child();
            innerProps.ref(el);
            const newClasses = classNames(local.className, (status === ENTERING || status === EXITING) && `${bsPrefix}-toggling`, 
            // @ts-ignore
            transitionStyles[status]);
            resolveClasses(el, prevClasses, newClasses);
            prevClasses = newClasses;
            return el;
        })}
    </TransitionWrapper>);
};
export default OffcanvasToggling;
