{"version":3,"file":"useRipple.mjs","sources":["../../../packages/button/useRipple.tsx"],"sourcesContent":["import { MouseEvent, ReactNode, useCallback, useState } from 'react'\nimport { ButtonProps } from './types.js'\nimport { ButtonRippleStyle } from './ButtonStyles.js'\n\ntype UseRipple = (props: Pick<ButtonProps, 'onClick'>) => {\n  ripple: ReactNode\n  handleClick: (event: MouseEvent<HTMLButtonElement>) => void\n}\n\nexport const useRipple: UseRipple = ({ onClick }) => {\n  const [ripple, setRipple] = useState<ReactNode | null>(null)\n\n  const handleClick = useCallback(\n    (event: MouseEvent<HTMLButtonElement>) => {\n      const button = event.currentTarget\n      const rect = button.getBoundingClientRect()\n      const diameter = Math.max(button.clientWidth, button.clientHeight)\n      const radius = diameter / 2\n      const isMouseClick = event.clientX > 0 && event.clientY > 0\n\n      const x = isMouseClick\n        ? event.clientX - rect.left\n        : button.clientWidth / 2\n\n      const y = isMouseClick\n        ? event.clientY - rect.top\n        : button.clientHeight / 2\n\n      const style = {\n        width: diameter,\n        height: diameter,\n        left: x - radius,\n        top: y - radius,\n      }\n\n      setRipple(<ButtonRippleStyle style={style} key={event.timeStamp} />)\n      onClick?.(event)\n    },\n    [onClick],\n  )\n\n  return {\n    ripple,\n    handleClick,\n  }\n}\n"],"names":["useRipple","_ref","onClick","ripple","setRipple","useState","handleClick","useCallback","event","button","currentTarget","rect","getBoundingClientRect","diameter","Math","max","clientWidth","clientHeight","radius","isMouseClick","clientX","clientY","x","left","y","top","style","width","height","_jsx","ButtonRippleStyle","timeStamp"],"mappings":";;;;AASaA,MAAAA,SAAoB,GAAGC,IAAA,IAAiB;EAAA,IAAhB;AAAEC,IAAAA,OAAAA;AAAQ,GAAC,GAAAD,IAAA,CAAA;EAC9C,MAAM,CAACE,MAAM,EAAEC,SAAS,CAAC,GAAGC,QAAQ,CAAmB,IAAI,CAAC,CAAA;AAE5D,EAAA,MAAMC,WAAW,GAAGC,WAAW,CAC5BC,KAAoC,IAAK;AACxC,IAAA,MAAMC,MAAM,GAAGD,KAAK,CAACE,aAAa,CAAA;AAClC,IAAA,MAAMC,IAAI,GAAGF,MAAM,CAACG,qBAAqB,EAAE,CAAA;AAC3C,IAAA,MAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAACN,MAAM,CAACO,WAAW,EAAEP,MAAM,CAACQ,YAAY,CAAC,CAAA;AAClE,IAAA,MAAMC,MAAM,GAAGL,QAAQ,GAAG,CAAC,CAAA;AAC3B,IAAA,MAAMM,YAAY,GAAGX,KAAK,CAACY,OAAO,GAAG,CAAC,IAAIZ,KAAK,CAACa,OAAO,GAAG,CAAC,CAAA;AAE3D,IAAA,MAAMC,CAAC,GAAGH,YAAY,GAClBX,KAAK,CAACY,OAAO,GAAGT,IAAI,CAACY,IAAI,GACzBd,MAAM,CAACO,WAAW,GAAG,CAAC,CAAA;AAE1B,IAAA,MAAMQ,CAAC,GAAGL,YAAY,GAClBX,KAAK,CAACa,OAAO,GAAGV,IAAI,CAACc,GAAG,GACxBhB,MAAM,CAACQ,YAAY,GAAG,CAAC,CAAA;AAE3B,IAAA,MAAMS,KAAK,GAAG;AACZC,MAAAA,KAAK,EAAEd,QAAQ;AACfe,MAAAA,MAAM,EAAEf,QAAQ;MAChBU,IAAI,EAAED,CAAC,GAAGJ,MAAM;MAChBO,GAAG,EAAED,CAAC,GAAGN,MAAAA;KACV,CAAA;IAEDd,SAAS,cAACyB,GAAA,CAACC,iBAAiB,EAAA;AAACJ,MAAAA,KAAK,EAAEA,KAAAA;AAAM,KAAA,EAAMlB,KAAK,CAACuB,SAAY,CAAC,CAAC,CAAA;IACpE7B,OAAO,GAAGM,KAAK,CAAC,CAAA;AAClB,GAAC,EACD,CAACN,OAAO,CACV,CAAC,CAAA;EAED,OAAO;IACLC,MAAM;AACNG,IAAAA,WAAAA;GACD,CAAA;AACH;;;;"}