import * as React from 'react';
import Text from '../../text/Text';
import Transition from '../Transition';
const slideFadeInEffect = {
initial: {
opacity: 0,
transform: {
translateY: '-s',
},
},
animate: {
opacity: 1,
duration: 'gentle2',
easing: 'entry',
},
} as const;
const slideFadeOutEffect = {
animate: {
opacity: 0,
transform: {
translateY: 's',
},
duration: 'gentle2',
easing: 'exit',
},
} as const;
const cycle = [slideFadeInEffect, slideFadeOutEffect];
const increment = (n: number) => n + 1;
export const InTextCounter = () => {
const [count, setCount] = React.useState(0);
const [index, setIndex] = React.useState(0);
const currentEffect = cycle[index % cycle.length];
// @ts-ignore TS7006
const handleTransitionEnd = effect => {
setIndex(increment);
// increase count value when the counter is hidden
if (effect === slideFadeOutEffect) {
setCount(increment);
}
};
const counter = (
{count}
);
const users = count === 1 ? 'user' : 'users';
return (
Counters! {counter} {users} love them.
);
};
InTextCounter.parameters = {
layout: 'centered',
};