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