/**
 * `<Drawer.Backdrop>` — overlay displayed beneath the drawer popup.
 */

import { dynamic } from "@solidjs/web";
import { createMemo, omit, Show } from "solid-js";
import { useDialogRootContext } from "../../dialog/dialog-root-context.jsx";
import { composeRefs, userRef } from "../../internals/compose-refs.jsx";
import { mergeRootProps } from "../../internals/merge-root-props.jsx";
import { resolveClassStyle } from "../../internals/resolve-class-style.jsx";
import { DrawerPopupCssVars } from "../popup/drawer-popup-css-vars.jsx";
import { DrawerBackdropCssVars } from "./drawer-backdrop-css-vars.jsx";
/**
 * An overlay displayed beneath the drawer popup.
 */
export function DrawerBackdrop(props) {
  const root = useDialogRootContext();
  const state = createMemo(() => ({
    open: root.open(),
    transitionStatus: root.transitionStatus()
  }));
  const setBackdropRef = el => {
    root.backdropRef.current = el;
  };
  const enabled = () => Boolean(props.forceRender) || !root.nested();
  const internal = {
    role: "presentation",
    get hidden() {
      return !root.mounted();
    },
    get style() {
      return {
        "pointer-events": !root.open() ? "none" : undefined,
        "user-select": "none",
        "-webkit-user-select": "none",
        [DrawerBackdropCssVars.swipeProgress]: "0",
        [DrawerPopupCssVars.swipeStrength]: "1"
      };
    },
    get "data-open"() {
      return state().open ? "" : undefined;
    },
    get "data-closed"() {
      return state().open ? undefined : "";
    },
    get "data-starting-style"() {
      return state().transitionStatus === "starting" ? "" : undefined;
    },
    get "data-ending-style"() {
      return state().transitionStatus === "ending" ? "" : undefined;
    }
  };
  const userClassStyle = resolveClassStyle(props, () => state());
  const userProps = omit(props, "as", "class", "style", "attrs", "forceRender");
  let merged = mergeRootProps(internal, userClassStyle);
  merged = mergeRootProps(merged, userProps);
  const Tag = dynamic(() => props.as ?? "div");
  return <Show when={enabled()}>
			<Tag {...merged} ref={composeRefs(setBackdropRef, userRef(props))} />
		</Show>;
}
//# sourceMappingURL=drawer-backdrop.jsx.map
