@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
49 lines (44 loc) • 1.52 kB
JavaScript
import { usePresence } from './X22PRPOR.js';
import { composeRefs } from './ROP6QZQ7.js';
import { createSplitProps } from './ZMHI4GDJ.js';
import { ark } from './EPLBB4QN.js';
import { createContext } from './THN5C4U6.js';
import { createComponent, mergeProps as mergeProps$1 } from 'solid-js/web';
import { mergeProps } from '@zag-js/solid';
import { Show } from 'solid-js';
// src/components/presence/split-presence-props.ts
var splitPresenceProps = (props) => createSplitProps()(props, [
"immediate",
"lazyMount",
"onExitComplete",
"present",
"skipAnimationOnMount",
"unmountOnExit"
]);
// src/components/presence/presence.tsx
var Presence = (props) => {
const [presenceProps, localProps] = splitPresenceProps(props);
const api = usePresence(presenceProps);
const mergedProps = mergeProps(() => api().presenceProps, localProps);
return createComponent(Show, {
get when() {
return !api().unmounted;
},
get children() {
return createComponent(ark.div, mergeProps$1(mergedProps, {
ref(r$) {
var _ref$ = composeRefs(api().ref, props.ref);
typeof _ref$ === "function" && _ref$(r$);
},
"data-scope": "presence",
"data-part": "root"
}));
}
});
};
// src/components/presence/use-presence-context.ts
var [PresenceProvider, usePresenceContext] = createContext({
hookName: "usePresenceContext",
providerName: "<PresenceProvider />"
});
export { Presence, PresenceProvider, splitPresenceProps, usePresenceContext };