UNPKG

@ark-ui/vue

Version:

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

49 lines (48 loc) 1.41 kB
const require_swap_anatomy = require("./swap.anatomy.cjs"); const require_use_presence = require("../presence/use-presence.cjs"); let vue = require("vue"); //#region src/components/swap/use-swap.ts var useSwap = (props) => { const localProps = (0, vue.computed)(() => (0, vue.toValue)(props)); const swap = (0, vue.computed)(() => localProps.value.swap ?? false); const presenceProps = (0, vue.computed)(() => ({ present: swap.value, lazyMount: localProps.value.lazyMount, unmountOnExit: localProps.value.unmountOnExit, skipAnimationOnMount: true })); const offPresenceProps = (0, vue.computed)(() => ({ ...presenceProps.value, present: !swap.value })); const onPresence = require_use_presence.usePresence(presenceProps); const offPresence = require_use_presence.usePresence(offPresenceProps); return { get swap() { return swap.value; }, onPresence, offPresence, getRootProps() { return { ...require_swap_anatomy.parts.root.attrs, "data-swap": swap.value ? "on" : "off", style: { display: "inline-grid" } }; }, getIndicatorProps({ type }) { const presence = type === "on" ? onPresence : offPresence; return { ...require_swap_anatomy.parts.indicator.attrs, ...presence.value.presenceProps, "data-type": type, style: { "grid-area": "1 / 1", display: "inline-flex" } }; } }; }; //#endregion exports.useSwap = useSwap;