@dvcol/neo-svelte
Version:
Neomorphic ui library for svelte 5
34 lines (33 loc) • 1.22 kB
JavaScript
import { emptyAnimation, emptyTransition, } from '@dvcol/svelte-utils/transition';
export const emptyUse = () => ({});
export const isTransitionWithProps = (transition) => 'use' in transition && transition.use !== undefined;
const toFunction = (transition) => {
if (!transition)
return;
if (isTransitionWithProps(transition))
return transition.use;
return transition;
};
export const toAnimation = (transition, fallback = emptyAnimation) => toFunction(transition) ?? fallback;
export const toTransition = (transition, fallback = emptyTransition) => toFunction(transition) ?? fallback;
export const toTransitionProps = (transition, fallback) => {
if (!transition)
return fallback;
if (isTransitionWithProps(transition))
return transition.props;
return fallback;
};
export const isActionWithProps = (action) => 'use' in action && action.use !== undefined;
export const toAction = (action) => {
if (!action)
return emptyUse;
if (isActionWithProps(action))
return action.use;
return action;
};
export const toActionProps = (action) => {
if (!action)
return;
if (isActionWithProps(action))
return action.props;
};