-
![](https://wiki.supercombo.gg/images/2/2a/SSBM_Marth_Portrait.png)
@ Marth
2024-08-09 18:04:10
```js
import React, { useRef, useEffect, useState, useMemo } from 'react';
import { OverlayPanel } from 'primereact/overlaypanel';
import ZapForm from './ZapForm';
import { ProgressSpinner } from 'primereact/progressspinner';
const ZapDisplay = ({ zapAmount, event, zapsLoading }) => {
const op = useRef(null);
const [extraLoading, setExtraLoading] = useState(false);
useMemo(() => {
let timeout;
if (!zapsLoading && zapAmount === 0) {
setExtraLoading(true);
timeout = setTimeout(() => setExtraLoading(false), 5000);
}
return () => clearTimeout(timeout);
}, [zapsLoading, zapAmount]);
return (
<>
<span className="text-xs cursor-pointer flex items-center relative hover:opacity-80" onClick={(e) => op.current.toggle(e)}>
<i className="pi pi-bolt text-yellow-300"></i>
<span className="relative flex items-center min-w-[20px] min-h-[20px]">
{zapsLoading || zapAmount === null || extraLoading ? (
<ProgressSpinner className="absolute top-0 left-0 w-[20px] h-[20px]" strokeWidth="8" animationDuration=".5s" />
) : (
zapAmount
)}
</span>
</span>
<OverlayPanel className='w-[40%] h-[40%]' ref={op}>
<ZapForm event={event} />
</OverlayPanel>
</>
)
}
export default ZapDisplay;
```