import { dynamic } from "@solidjs/web";
import { omit, untrack } 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 { useSelectItemContext } from "../item/select-item-context.jsx";
import { useSelectRootContext } from "../select-root-context.jsx";

// biome-ignore lint/complexity/noBannedTypes: public empty-state for consumer type references.

const EMPTY_STATE = {};

/**
 * `<Select.ItemText>` — a `<div>` that carries the selectable text label
 * inside a `<Select.Item>`.
 */
export function SelectItemText(props) {
  const item = useSelectItemContext();
  const root = useSelectRootContext();
  const setRef = node => untrack(() => {
    item.textRef.current = node;
    if (!node || !item.hasRegistered()) return;
    const selectedTextEl = root.selectedItemTextRef.current;
    const hasNoSelectedItemText = selectedTextEl === null || !selectedTextEl.isConnected;
    if (item.selectedByFocus() || hasNoSelectedItemText && item.indexRef.current === 0) {
      root.selectedItemTextRef.current = node;
    }
  });
  const userClassStyle = resolveClassStyle(props, () => EMPTY_STATE);
  const userProps = omit(props, "as", "class", "style", "attrs");
  const merged = mergeRootProps(userClassStyle, userProps);
  const Tag = dynamic(() => props.as ?? "div");
  return <Tag {...merged} ref={composeRefs(setRef, userRef(props))} />;
}
//# sourceMappingURL=select-item-text.jsx.map
