Files
aso/frontend/client-portal/src/components/animate/variants/zoom.ts
Linksehat Staging Server ce024c2bcd merge
2023-05-08 08:50:15 +07:00

126 lines
3.2 KiB
TypeScript
Executable File

// @types
import { VariantsType } from '../type';
//
import { varTranEnter, varTranExit } from './transition';
// ----------------------------------------------------------------------
export const varZoom = (props?: VariantsType) => {
const distance = props?.distance || 720;
const durationIn = props?.durationIn;
const durationOut = props?.durationOut;
const easeIn = props?.easeIn;
const easeOut = props?.easeOut;
return {
// IN
in: {
initial: { scale: 0, opacity: 0 },
animate: { scale: 1, opacity: 1, transition: varTranEnter({ durationIn, easeIn }) },
exit: { scale: 0, opacity: 0, transition: varTranExit({ durationOut, easeOut }) },
},
inUp: {
initial: { scale: 0, opacity: 0, translateY: distance },
animate: {
scale: 1,
opacity: 1,
translateY: 0,
transition: varTranEnter({ durationIn, easeIn }),
},
exit: {
scale: 0,
opacity: 0,
translateY: distance,
transition: varTranExit({ durationOut, easeOut }),
},
},
inDown: {
initial: { scale: 0, opacity: 0, translateY: -distance },
animate: {
scale: 1,
opacity: 1,
translateY: 0,
transition: varTranEnter({ durationIn, easeIn }),
},
exit: {
scale: 0,
opacity: 0,
translateY: -distance,
transition: varTranExit({ durationOut, easeOut }),
},
},
inLeft: {
initial: { scale: 0, opacity: 0, translateX: -distance },
animate: {
scale: 1,
opacity: 1,
translateX: 0,
transition: varTranEnter({ durationIn, easeIn }),
},
exit: {
scale: 0,
opacity: 0,
translateX: -distance,
transition: varTranExit({ durationOut, easeOut }),
},
},
inRight: {
initial: { scale: 0, opacity: 0, translateX: distance },
animate: {
scale: 1,
opacity: 1,
translateX: 0,
transition: varTranEnter({ durationIn, easeIn }),
},
exit: {
scale: 0,
opacity: 0,
translateX: distance,
transition: varTranExit({ durationOut, easeOut }),
},
},
// OUT
out: {
initial: { scale: 1, opacity: 1 },
animate: { scale: 0, opacity: 0, transition: varTranEnter({ durationIn, easeIn }) },
},
outUp: {
initial: { scale: 1, opacity: 1 },
animate: {
scale: 0,
opacity: 0,
translateY: -distance,
transition: varTranEnter({ durationIn, easeIn }),
},
},
outDown: {
initial: { scale: 1, opacity: 1 },
animate: {
scale: 0,
opacity: 0,
translateY: distance,
transition: varTranEnter({ durationIn, easeIn }),
},
},
outLeft: {
initial: { scale: 1, opacity: 1 },
animate: {
scale: 0,
opacity: 0,
translateX: -distance,
transition: varTranEnter({ durationIn, easeIn }),
},
},
outRight: {
initial: { scale: 1, opacity: 1 },
animate: {
scale: 0,
opacity: 0,
translateX: distance,
transition: varTranEnter({ durationIn, easeIn }),
},
},
};
};