UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

137 lines (127 loc) 3.83 kB
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 };