import { memo, useState } from '../../lib/teact/teact'; import type { OwnProps as AnimatedStickerProps } from './AnimatedSticker'; import buildClassName from '../../util/buildClassName'; import useFlag from '../../hooks/useFlag'; import useLastCallback from '../../hooks/useLastCallback'; import useMediaTransitionDeprecated from '../../hooks/useMediaTransitionDeprecated'; import AnimatedSticker from './AnimatedSticker'; const DEFAULT_SIZE = 150; export type OwnProps = Partial & { noTransition?: boolean; nonInteractive?: boolean }; function AnimatedIcon(props: OwnProps) { const { size = DEFAULT_SIZE, play = true, noLoop = true, className, noTransition, nonInteractive, onLoad, onClick, ...otherProps } = props; const [isAnimationLoaded, markAnimationLoaded] = useFlag(false); const transitionClassNames = useMediaTransitionDeprecated(noTransition || isAnimationLoaded); const handleLoad = useLastCallback(() => { markAnimationLoaded(); onLoad?.(); }); const [playKey, setPlayKey] = useState(String(Math.random())); const handleClick = useLastCallback(() => { if (play === true) { setPlayKey(String(Math.random())); } onClick?.(); }); return ( ); } export default memo(AnimatedIcon);