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 { useComboboxRootContext } from "../root/combobox-root-context.jsx";
/**
 * A wrapper for the input and its associated controls. Renders a
 * `<div role="group">`.
 */
export function ComboboxInputGroup(props) {
  const root = useComboboxRootContext();
  const listEmpty = createMemo(() => root.flatFilteredItems().length === 0);
  const placeholder = createMemo(() => {
    if (root.selectionMode() === "none") return false;
    const sv = root.selectedValue();
    if (sv == null) return true;
    if (Array.isArray(sv)) return sv.length === 0;
    return false;
  });
  const popupSide = createMemo(() => {
    if (!root.mounted() || root.positionerElement() == null) return null;
    return root.popupSide();
  });
  const state = createMemo(() => ({
    open: root.open(),
    disabled: root.disabled(),
    readOnly: root.readOnly(),
    popupSide: popupSide(),
    listEmpty: listEmpty(),
    placeholder: placeholder()
  }));
  const internal = {
    role: "group",
    // triggerStateAttributesMapping projection.
    get "data-popup-open"() {
      return state().open ? "" : undefined;
    },
    get "data-pressed"() {
      return state().open ? "" : undefined;
    },
    get "data-disabled"() {
      return state().disabled ? "" : undefined;
    },
    get "data-readonly"() {
      return state().readOnly ? "" : undefined;
    },
    get "data-list-empty"() {
      return state().listEmpty ? "" : undefined;
    },
    get "data-placeholder"() {
      return state().placeholder ? "" : undefined;
    },
    get "data-popup-side"() {
      return state().popupSide ?? undefined;
    }
  };
  const userClassStyle = resolveClassStyle(props, () => state());
  const userProps = omit(props, "as", "class", "style", "attrs");
  let merged = mergeRootProps(internal, userClassStyle);
  merged = mergeRootProps(merged, userProps);
  const Tag = dynamic(() => props.as ?? "div");
  return <Tag {...merged} ref={composeRefs(userRef(props))} />;
}
//# sourceMappingURL=combobox-input-group.jsx.map
