svelte-motion
Version:
Svelte animation library based on the React library framer-motion.
42 lines (38 loc) • 1.48 kB
JavaScript
/**
based on framer-motion@4.0.3,
Copyright (c) 2018 Framer B.V.
*/
import { transformAxes } from '../../../render/html/utils/transform.js';
function resetRotate(child) {
// If there's no detected rotation values, we can early return without a forced render.
var hasRotate = false;
// Keep a record of all the values we've reset
var resetValues = {};
// Check the rotate value of all axes and reset to 0
for (var i = 0; i < transformAxes.length; i++) {
var axis = transformAxes[i];
var key = "rotate" + axis;
// If this rotation doesn't exist as a motion value, then we don't
// need to reset it
if (!child.hasValue(key) || child.getStaticValue(key) === 0)
continue;
hasRotate = true;
// Record the rotation and then temporarily set it to 0
resetValues[key] = child.getStaticValue(key);
child.setStaticValue(key, 0);
}
// If there's no rotation values, we don't need to do any more.
if (!hasRotate)
return;
// Force a render of this element to apply the transform with all rotations
// set to 0.
child.syncRender();
// Put back all the values we reset
for (var key in resetValues) {
child.setStaticValue(key, resetValues[key]);
}
// Schedule a render for the next frame. This ensures we won't visually
// see the element with the reset rotate value applied.
child.scheduleRender();
}
export { resetRotate };