import {
  usePresence
} from "./OEGORBLT.jsx";
import {
  composeRefs
} from "./PT2CJE3O.jsx";
import {
  parts,
  swapAnatomy
} from "./XVU3GCCX.jsx";
import {
  runIfFn
} from "./KGOB2IMX.jsx";
import {
  ark
} from "./UFYZ7HLU.jsx";
import {
  createContext
} from "./UZJJWJQM.jsx";
import {
  __export
} from "./7IUG3E2V.jsx";

// src/components/swap/swap.ts
var swap_exports = {};
__export(swap_exports, {
  Indicator: () => SwapIndicator,
  Root: () => SwapRoot,
  RootProvider: () => SwapRootProvider,
  swapAnatomy: () => swapAnatomy
});

// src/components/swap/swap-indicator.tsx
import { mergeProps } from "@zag-js/solid";
import { Show, splitProps } from "solid-js";

// src/components/swap/use-swap-context.ts
var [SwapProvider, useSwapContext] = createContext({
  hookName: "useSwapContext",
  providerName: "<SwapProvider />"
});

// src/components/swap/swap-indicator.tsx
var SwapIndicator = (props) => {
  const [localProps, restProps] = splitProps(props, ["type", "ref"]);
  const swap = useSwapContext();
  const presence = () => {
    const p = localProps.type === "on" ? swap().onPresence : swap().offPresence;
    return p();
  };
  const mergedProps = mergeProps(() => swap().getIndicatorProps({ type: localProps.type }), restProps);
  return <Show when={!presence().unmounted}>
      <ark.span {...mergedProps} ref={composeRefs(presence().ref, localProps.ref)} />
    </Show>;
};

// src/components/swap/swap-root.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
import { splitProps as splitProps2 } from "solid-js";

// src/components/swap/use-swap.ts
import { mergeProps as mergeProps2 } from "@zag-js/solid";
import { createMemo } from "solid-js";
var useSwap = (props = {}) => {
  const resolved = createMemo(() => runIfFn(props));
  const onPresence = usePresence(
    mergeProps2(() => ({
      present: resolved().swap ?? false,
      lazyMount: resolved().lazyMount,
      unmountOnExit: resolved().unmountOnExit,
      skipAnimationOnMount: true
    }))
  );
  const offPresence = usePresence(
    mergeProps2(() => ({
      present: !(resolved().swap ?? false),
      lazyMount: resolved().lazyMount,
      unmountOnExit: resolved().unmountOnExit,
      skipAnimationOnMount: true
    }))
  );
  return createMemo(() => {
    const swap = resolved().swap ?? false;
    return {
      swap,
      onPresence,
      offPresence,
      getRootProps() {
        return {
          ...parts.root.attrs,
          "data-swap": swap ? "on" : "off",
          style: { display: "inline-grid" }
        };
      },
      getIndicatorProps({ type }) {
        const presence = type === "on" ? onPresence() : offPresence();
        return {
          ...parts.indicator.attrs,
          ...presence.presenceProps,
          "data-type": type,
          style: { "grid-area": "1 / 1", display: "inline-flex" }
        };
      }
    };
  });
};

// src/components/swap/swap-root.tsx
var SwapRoot = (props) => {
  const [swapProps, localProps] = splitProps2(props, ["swap", "lazyMount", "unmountOnExit"]);
  const swap = useSwap(() => swapProps);
  const mergedProps = mergeProps3(() => swap().getRootProps(), localProps);
  return <SwapProvider value={swap}>
      <ark.span {...mergedProps} />
    </SwapProvider>;
};

// src/components/swap/swap-root-provider.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
import { splitProps as splitProps3 } from "solid-js";
var SwapRootProvider = (props) => {
  const [providerProps, localProps] = splitProps3(props, ["value"]);
  const mergedProps = mergeProps4(() => providerProps.value().getRootProps(), localProps);
  return <SwapProvider value={providerProps.value}>
      <ark.span {...mergedProps} />
    </SwapProvider>;
};

export {
  useSwapContext,
  SwapIndicator,
  useSwap,
  SwapRoot,
  SwapRootProvider,
  swap_exports
};
