import {
  splitRenderStrategyProps
} from "./VNMGX67M.jsx";
import {
  runIfFn
} from "./KGOB2IMX.jsx";

// src/components/presence/use-presence.ts
import * as presence from "@zag-js/presence";
import { normalizeProps, useMachine } from "@zag-js/solid";
import { createEffect, createMemo, createSignal } from "solid-js";
var usePresence = (props) => {
  const [renderStrategyProps, localProps] = splitRenderStrategyProps(runIfFn(props));
  const [wasEverPresent, setWasEverPresent] = createSignal(false);
  const service = useMachine(presence.machine, props);
  const api = createMemo(() => presence.connect(service, normalizeProps));
  createEffect(() => {
    const present = api().present;
    if (present) setWasEverPresent(true);
  });
  const setNode = (node) => {
    if (!node) return;
    service.send({ type: "NODE.SET", node });
  };
  return createMemo(() => ({
    unmounted: !api().present && !wasEverPresent() && renderStrategyProps.lazyMount || renderStrategyProps.unmountOnExit && !api().present && wasEverPresent(),
    present: api().present,
    ref: setNode,
    presenceProps: {
      hidden: !api().present,
      "data-state": api().skip && localProps.skipAnimationOnMount ? void 0 : localProps.present ? "open" : "closed"
    }
  }));
};

export {
  usePresence
};
