/**
 * `<Menu.CheckboxItemIndicator>` — visual indicator shown inside a checked
 * `<Menu.CheckboxItem>`. Mirrors React.
 */

import { dynamic } from "@solidjs/web";
import { createMemo, omit, Show } from "solid-js";
import { composeRefs, userRef } from "../../internals/compose-refs.jsx";
import { mergeRootProps } from "../../internals/merge-root-props.jsx";
import { useOpenChangeComplete } from "../../internals/popups/use-open-change-complete.jsx";
import { resolveClassStyle } from "../../internals/resolve-class-style.jsx";
import { useTransitionStatus } from "../../internals/use-transition-status/use-transition-status.jsx";
import { useMenuCheckboxItemContext } from "../checkbox-item/menu-checkbox-item-context.jsx";
export function MenuCheckboxItemIndicator(props) {
  const item = useMenuCheckboxItemContext();
  const indicatorRef = {
    current: null
  };
  const setRef = el => {
    indicatorRef.current = el;
  };
  const {
    mounted,
    transitionStatus,
    setMounted
  } = useTransitionStatus(item.checked);
  useOpenChangeComplete({
    open: item.checked,
    ref: indicatorRef,
    onComplete: () => {
      if (!item.checked()) setMounted(false);
    }
  });
  const keepMounted = () => props.keepMounted ?? false;
  const shouldRender = () => keepMounted() || mounted();
  const state = createMemo(() => ({
    checked: item.checked(),
    disabled: item.disabled(),
    highlighted: item.highlighted(),
    transitionStatus: transitionStatus()
  }));
  const internal = {
    "aria-hidden": true,
    get "data-highlighted"() {
      return state().highlighted ? "" : undefined;
    },
    get "data-disabled"() {
      return state().disabled ? "" : undefined;
    },
    get "data-checked"() {
      return state().checked ? "" : undefined;
    },
    get "data-unchecked"() {
      return state().checked ? 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", "keepMounted");
  let merged = mergeRootProps(internal, userClassStyle);
  merged = mergeRootProps(merged, userProps);
  const Tag = dynamic(() => props.as ?? "span");
  return <Show when={shouldRender()}>
			<Tag {...merged} ref={composeRefs(setRef, userRef(props))} />
		</Show>;
}
//# sourceMappingURL=menu-checkbox-item-indicator.jsx.map
