27 lines
1.0 KiB
JavaScript
27 lines
1.0 KiB
JavaScript
|
function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {
|
||
|
/**
|
||
|
* If the variant definition is a function, resolve.
|
||
|
*/
|
||
|
if (typeof definition === "function") {
|
||
|
definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);
|
||
|
}
|
||
|
/**
|
||
|
* If the variant definition is a variant label, or
|
||
|
* the function returned a variant label, resolve.
|
||
|
*/
|
||
|
if (typeof definition === "string") {
|
||
|
definition = props.variants && props.variants[definition];
|
||
|
}
|
||
|
/**
|
||
|
* At this point we've resolved both functions and variant labels,
|
||
|
* but the resolved variant label might itself have been a function.
|
||
|
* If so, resolve. This can only have returned a valid target object.
|
||
|
*/
|
||
|
if (typeof definition === "function") {
|
||
|
definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);
|
||
|
}
|
||
|
return definition;
|
||
|
}
|
||
|
|
||
|
export { resolveVariantFromProps };
|