import { dynamic } from "@solidjs/web";
import { omit } from "solid-js";
import { mergeRootProps } from "../../internals/merge-root-props.jsx";
import { resolveClassStyle } from "../../internals/resolve-class-style.jsx";
import { useProgressRootContext } from "../progress-root-context.jsx";
/**
 * Contains the progress bar indicator. Renders a `<div>` (or `as` override).
 *
 * §1 wave 2: replaces `renderElement` with `dynamic(() => props.as ?? "div")`.
 * The progress status (`indeterminate` | `progressing` | `complete`) projects
 * to `data-indeterminate` / `data-progressing` / `data-complete` via inline
 * reactive getters on the internal slot bag.
 */
export function ProgressTrack(props) {
  const context = useProgressRootContext();

  // Resolve `class`/`style` here so function values (stateful styling) are
  // invoked with the progress state — otherwise a `class={(state) => …}` is
  // spread to the DOM raw and never applied (no class attribute at all).
  const userClassStyle = resolveClassStyle(props, () => ({
    status: context.status()
  }));
  const userProps = omit(props, "as", "class", "style", "attrs");
  const internalSlot = {
    get "data-indeterminate"() {
      return context.status() === "indeterminate" ? "" : undefined;
    },
    get "data-progressing"() {
      return context.status() === "progressing" ? "" : undefined;
    },
    get "data-complete"() {
      return context.status() === "complete" ? "" : undefined;
    }
  };
  let merged = mergeRootProps(internalSlot, userClassStyle);
  merged = mergeRootProps(merged, userProps);
  const Tag = dynamic(() => props.as ?? "div");
  return <Tag {...merged} />;
}
//# sourceMappingURL=progress-track.jsx.map
