{"version":3,"file":"ActionIcon.mjs","names":[],"sources":["../../../src/base-ui/ActionIcon/ActionIcon.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport type { MouseEvent, Ref } from 'react';\nimport { memo, useMemo } from 'react';\n\nimport type { ButtonProps } from '@/base-ui/Button';\nimport Button from '@/base-ui/Button';\nimport Tooltip from '@/base-ui/Tooltip';\nimport Icon from '@/Icon';\n\nimport { variants } from './style';\nimport { type ActionIconProps } from './type';\nimport { calcSize } from './utils';\n\nconst resolveButtonType = (variant: ActionIconProps['variant']) => {\n  if (variant === 'filled') return 'fill' as const;\n  if (variant === 'outlined') return 'default' as const;\n  return 'text' as const;\n};\n\nconst resolveButtonSize = (size: ActionIconProps['size']) => {\n  if (size === 'small') return 'small' as const;\n  if (size === 'large') return 'large' as const;\n  return 'middle' as const;\n};\n\nconst ActionIcon = memo<ActionIconProps>(\n  ({\n    active,\n    className,\n    classNames,\n    color,\n    danger,\n    disabled,\n    fill,\n    fillOpacity,\n    fillRule,\n    focusable,\n    glass,\n    icon,\n    loading,\n    onClick,\n    ref,\n    shadow,\n    size = 'middle',\n    spin: iconSpinning,\n    style,\n    styles,\n    title,\n    tooltipProps,\n    variant = 'borderless',\n    ...rest\n  }) => {\n    const { blockSize, borderRadius } = useMemo(() => calcSize(size), [size]);\n    const popupTriggerAria = rest as {\n      'aria-expanded'?: unknown;\n      'aria-haspopup'?: unknown;\n      'aria-label'?: string;\n    };\n    const isPopupTrigger =\n      popupTriggerAria['aria-haspopup'] !== undefined ||\n      popupTriggerAria['aria-expanded'] !== undefined;\n    const popupTriggerLabel =\n      popupTriggerAria['aria-label'] ??\n      (isPopupTrigger && typeof title === 'string' ? title : undefined);\n\n    const handleClick: ButtonProps['onClick'] = (event) => {\n      onClick?.(event as unknown as MouseEvent<HTMLDivElement>);\n    };\n\n    const iconNode = icon ? (\n      <Icon\n        className={classNames?.icon}\n        color={color}\n        fill={fill}\n        fillOpacity={fillOpacity}\n        fillRule={fillRule}\n        focusable={focusable}\n        icon={icon}\n        size={size}\n        spin={iconSpinning}\n        style={{ pointerEvents: 'none', ...styles?.icon }}\n      />\n    ) : undefined;\n\n    const node = (\n      <Button\n        {...(rest as unknown as ButtonProps)}\n        aria-label={popupTriggerLabel}\n        className={cx(variants({ active, danger, glass, shadow }), classNames?.root, className)}\n        danger={danger}\n        disabled={disabled}\n        htmlType=\"button\"\n        icon={iconNode}\n        loading={loading}\n        ref={ref as unknown as Ref<HTMLButtonElement>}\n        size={resolveButtonSize(size)}\n        tabIndex={disabled ? -1 : 0}\n        type={resolveButtonType(variant)}\n        style={{\n          borderRadius,\n          height: blockSize,\n          width: blockSize,\n          ...styles?.root,\n          ...style,\n        }}\n        onClick={handleClick}\n      />\n    );\n\n    if (!title) return node;\n\n    return (\n      <Tooltip\n        title={title}\n        {...tooltipProps}\n        styles={{\n          ...tooltipProps?.styles,\n          container: { pointerEvents: 'none', ...tooltipProps?.styles?.container },\n        }}\n      >\n        {node}\n      </Tooltip>\n    );\n  },\n);\n\nActionIcon.displayName = 'BaseActionIcon';\n\nexport default ActionIcon;\n"],"mappings":";;;;;;;;;;AAeA,MAAM,qBAAqB,YAAwC;CACjE,IAAI,YAAY,UAAU,OAAO;CACjC,IAAI,YAAY,YAAY,OAAO;CACnC,OAAO;AACT;AAEA,MAAM,qBAAqB,SAAkC;CAC3D,IAAI,SAAS,SAAS,OAAO;CAC7B,IAAI,SAAS,SAAS,OAAO;CAC7B,OAAO;AACT;AAEA,MAAM,aAAa,MAChB,EACC,QACA,WACA,YACA,OACA,QACA,UACA,MACA,aACA,UACA,WACA,OACA,MACA,SACA,SACA,KACA,QACA,OAAO,UACP,MAAM,cACN,OACA,QACA,OACA,cACA,UAAU,cACV,GAAG,WACC;CACJ,MAAM,EAAE,WAAW,iBAAiB,cAAc,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC;CACxE,MAAM,mBAAmB;CAKzB,MAAM,iBACJ,iBAAiB,qBAAqB,KAAA,KACtC,iBAAiB,qBAAqB,KAAA;CACxC,MAAM,oBACJ,iBAAiB,kBAChB,kBAAkB,OAAO,UAAU,WAAW,QAAQ,KAAA;CAEzD,MAAM,eAAuC,UAAU;EACrD,UAAU,KAA8C;CAC1D;CAEA,MAAM,WAAW,OACf,oBAAC,MAAD;EACE,WAAW,YAAY;EAChB;EACD;EACO;EACH;EACC;EACL;EACA;EACN,MAAM;EACN,OAAO;GAAE,eAAe;GAAQ,GAAG,QAAQ;EAAK;CACjD,CAAA,IACC,KAAA;CAEJ,MAAM,OACJ,oBAAC,QAAD;EACE,GAAK;EACL,cAAY;EACZ,WAAW,GAAG,SAAS;GAAE;GAAQ;GAAQ;GAAO;EAAO,CAAC,GAAG,YAAY,MAAM,SAAS;EAC9E;EACE;EACV,UAAS;EACT,MAAM;EACG;EACJ;EACL,MAAM,kBAAkB,IAAI;EAC5B,UAAU,WAAW,KAAK;EAC1B,MAAM,kBAAkB,OAAO;EAC/B,OAAO;GACL;GACA,QAAQ;GACR,OAAO;GACP,GAAG,QAAQ;GACX,GAAG;EACL;EACA,SAAS;CACV,CAAA;CAGH,IAAI,CAAC,OAAO,OAAO;CAEnB,OACE,oBAAC,SAAD;EACS;EACP,GAAI;EACJ,QAAQ;GACN,GAAG,cAAc;GACjB,WAAW;IAAE,eAAe;IAAQ,GAAG,cAAc,QAAQ;GAAU;EACzE;EAEC,UAAA;CACM,CAAA;AAEb,CACF;AAEA,WAAW,cAAc"}