{"version":3,"file":"ScrollButton.mjs","names":[],"sources":["../../src/Legend/ScrollButton.tsx"],"sourcesContent":["import { Icon } from '@lobehub/ui';\nimport { Button } from '@lobehub/ui/base-ui';\nimport { LucideIcon } from 'lucide-react';\nimport { memo, useEffect, useRef, useState } from 'react';\n\nexport interface ScrollButtonProps {\n  disabled?: boolean;\n  icon: LucideIcon;\n  onClick?: () => void;\n}\n\nconst ScrollButton = memo<ScrollButtonProps>(({ icon, onClick, disabled }) => {\n  const [isPressed, setIsPressed] = useState(false);\n  const intervalRef = useRef<any | null>(null);\n\n  useEffect(() => {\n    if (isPressed) {\n      intervalRef.current = setInterval(() => {\n        onClick?.();\n      }, 300);\n    } else {\n      clearInterval(intervalRef.current as any);\n    }\n    return () => clearInterval(intervalRef.current as any);\n  }, [isPressed, onClick]);\n\n  useEffect(() => {\n    if (disabled) {\n      clearInterval(intervalRef.current as any);\n      setIsPressed(false);\n    }\n  }, [disabled]);\n\n  return (\n    <Button\n      disabled={disabled}\n      icon={<Icon className={'w-full'} icon={icon} />}\n      onClick={(e) => {\n        e.stopPropagation();\n        onClick?.();\n      }}\n      onMouseDown={(e) => {\n        e.stopPropagation();\n        setIsPressed(true);\n      }}\n      onMouseUp={(e) => {\n        e.stopPropagation();\n        setIsPressed(false);\n      }}\n      size={'small'}\n      style={{\n        height: 24,\n        width: 24,\n      }}\n    />\n  );\n});\n\nexport default ScrollButton;\n"],"mappings":";;;;;AAWA,MAAM,eAAe,MAAyB,EAAE,MAAM,SAAS,eAAe;CAC5E,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAChD,MAAM,cAAc,OAAmB,IAAI;CAE3C,gBAAgB;EACd,IAAI,WACF,YAAY,UAAU,kBAAkB;GACtC,UAAU;EACZ,GAAG,GAAG;OAEN,cAAc,YAAY,OAAc;EAE1C,aAAa,cAAc,YAAY,OAAc;CACvD,GAAG,CAAC,WAAW,OAAO,CAAC;CAEvB,gBAAgB;EACd,IAAI,UAAU;GACZ,cAAc,YAAY,OAAc;GACxC,aAAa,KAAK;EACpB;CACF,GAAG,CAAC,QAAQ,CAAC;CAEb,OACE,oBAAC,QAAD;EACY;EACV,MAAM,oBAAC,MAAD;GAAM,WAAW;GAAgB;EAAO,CAAA;EAC9C,UAAU,MAAM;GACd,EAAE,gBAAgB;GAClB,UAAU;EACZ;EACA,cAAc,MAAM;GAClB,EAAE,gBAAgB;GAClB,aAAa,IAAI;EACnB;EACA,YAAY,MAAM;GAChB,EAAE,gBAAgB;GAClB,aAAa,KAAK;EACpB;EACA,MAAM;EACN,OAAO;GACL,QAAQ;GACR,OAAO;EACT;CACD,CAAA;AAEL,CAAC"}