{"version":3,"file":"ActionIcon.mjs","names":[],"sources":["../../src/ActionIcon/ActionIcon.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { Loader2 } from 'lucide-react';\nimport { memo, type MouseEventHandler, useCallback, useMemo } from 'react';\n\nimport { Center } from '@/Flex';\nimport Icon from '@/Icon';\nimport Tooltip from '@/Tooltip';\n\nimport { calcSize } from './components/utils';\nimport { variants } from './style';\nimport { type ActionIconProps } from './type';\n\nconst ActionIcon = memo<ActionIconProps>(\n  ({\n    color,\n    fill,\n    className,\n    active,\n    icon,\n    size = 'middle',\n    variant = 'borderless',\n    style,\n    glass,\n    title,\n    onClick,\n    loading,\n    fillOpacity,\n    fillRule,\n    focusable,\n    shadow,\n    disabled,\n    spin: iconSpinning,\n    tooltipProps,\n    danger,\n    ref,\n    ...rest\n  }) => {\n    const { blockSize, borderRadius } = useMemo(() => calcSize(size), [size]);\n\n    const handleClick = useCallback<MouseEventHandler<HTMLDivElement>>(\n      (event) => {\n        if (loading || disabled) return;\n        onClick?.(event);\n      },\n      [loading, disabled, onClick],\n    );\n\n    const node = (\n      <Center\n        horizontal\n        className={cx(variants({ active, danger, disabled, glass, shadow, variant }), className)}\n        flex={'none'}\n        ref={ref}\n        role=\"button\"\n        style={{ borderRadius, height: blockSize, width: blockSize, ...style }}\n        tabIndex={disabled ? -1 : 0}\n        onClick={handleClick}\n        {...rest}\n      >\n        {icon && (\n          <Icon\n            color={color}\n            fill={fill}\n            fillOpacity={fillOpacity}\n            fillRule={fillRule}\n            focusable={focusable}\n            icon={loading ? Loader2 : icon}\n            size={size}\n            spin={loading ? true : iconSpinning}\n            style={{\n              pointerEvents: 'none',\n            }}\n          />\n        )}\n      </Center>\n    );\n\n    if (!title) return node;\n\n    return (\n      <Tooltip\n        title={title}\n        {...tooltipProps}\n        styles={\n          typeof tooltipProps?.styles === 'function'\n            ? tooltipProps.styles\n            : {\n                ...tooltipProps?.styles,\n                container: { pointerEvents: 'none', ...tooltipProps?.styles?.container },\n              }\n        }\n      >\n        {node}\n      </Tooltip>\n    );\n  },\n);\n\nActionIcon.displayName = 'ActionIcon';\n\nexport default ActionIcon;\n"],"mappings":";;;;;;;;;;;AAcA,MAAM,aAAa,MAChB,EACC,OACA,MACA,WACA,QACA,MACA,OAAO,UACP,UAAU,cACV,OACA,OACA,OACA,SACA,SACA,aACA,UACA,WACA,QACA,UACA,MAAM,cACN,cACA,QACA,KACA,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,iBAAiB,cAAc,SAAS,KAAK,EAAE,CAAC,KAAK,CAAC;CAEzE,MAAM,cAAc,aACjB,UAAU;AACT,MAAI,WAAW,SAAU;AACzB,YAAU,MAAM;IAElB;EAAC;EAAS;EAAU;EAAQ,CAC7B;CAED,MAAM,OACJ,oBAAC,QAAD;EACE,YAAA;EACA,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAQ;GAAU;GAAO;GAAQ;GAAS,CAAC,EAAE,UAAU;EACxF,MAAM;EACD;EACL,MAAK;EACL,OAAO;GAAE;GAAc,QAAQ;GAAW,OAAO;GAAW,GAAG;GAAO;EACtE,UAAU,WAAW,KAAK;EAC1B,SAAS;EACT,GAAI;YAEH,QACC,oBAAC,MAAD;GACS;GACD;GACO;GACH;GACC;GACX,MAAM,UAAU,UAAU;GACpB;GACN,MAAM,UAAU,OAAO;GACvB,OAAO,EACL,eAAe,QAChB;GACD,CAAA;EAEG,CAAA;AAGX,KAAI,CAAC,MAAO,QAAO;AAEnB,QACE,oBAAC,SAAD;EACS;EACP,GAAI;EACJ,QACE,OAAO,cAAc,WAAW,aAC5B,aAAa,SACb;GACE,GAAG,cAAc;GACjB,WAAW;IAAE,eAAe;IAAQ,GAAG,cAAc,QAAQ;IAAW;GACzE;YAGN;EACO,CAAA;EAGf;AAED,WAAW,cAAc"}