import { dynamic } from "@solidjs/web";
import { createMemo, omit } from "solid-js";
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 { useTooltipPositionerContext } from "../tooltip-positioner-context.jsx";
import { useTooltipRootContext } from "../tooltip-root-context.jsx";
/**
 * A container for the tooltip contents. Renders a `<div>` element. Mirrors
 * Base UI React's `<Tooltip.Popup>`.
 *
 * Solid 2.0-native rewire (§1 wave 2): replaces `renderElement` with
 * `dynamic(() => props.as ?? "div")` and composes
 * `floatingProps` + state-attr getters via `mergeRootProps`.
 */
export function TooltipPopup(props) {
  const rootContext = useTooltipRootContext();
  const positionerContext = useTooltipPositionerContext();
  const floatingProps = rootContext.interactions.getFloatingProps();
  const state = createMemo(() => ({
    open: rootContext.open(),
    side: positionerContext.side(),
    align: positionerContext.align(),
    instant: rootContext.instantType(),
    transitionStatus: rootContext.transitionStatus()
  }));
  const popupRef = el => {
    rootContext.setPopupElement(el);
  };
  const stateAttrs = {
    get "data-open"() {
      return state().open ? "" : undefined;
    },
    get "data-closed"() {
      return state().open ? undefined : "";
    },
    get "data-side"() {
      return state().side;
    },
    get "data-align"() {
      return state().align;
    },
    get "data-instant"() {
      const v = state().instant;
      return v ? v : 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");
  let merged = mergeRootProps(floatingProps ?? {}, stateAttrs);
  merged = mergeRootProps(merged, userClassStyle);
  merged = mergeRootProps(merged, userProps);
  const Tag = dynamic(() => props.as ?? "div");
  return <Tag {...merged} ref={composeRefs(popupRef, userRef(props))} />;
}
//# sourceMappingURL=tooltip-popup.jsx.map
