{"version":3,"file":"ToggleEmojiButtonGroup.mjs","sources":["../../../../src/components/AlphaToggleEmojiButtonGroup/ToggleEmojiButtonGroup.tsx"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { Children, forwardRef, useState } from 'react'\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group'\nimport classNames from 'classnames'\n\nimport useMergeRefs from '~/src/hooks/useMergeRefs'\nimport { cssDimension } from '~/src/utils/style'\n\nimport {\n  EMOJI_BUTTON_GROUP_GAP,\n  EMOJI_BUTTON_SIZE,\n  useToggleEmojiButtonSize,\n} from '~/src/components/AlphaToggleEmojiButtonGroup/useToggleEmojiButtonSize'\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Emoji } from '~/src/components/Emoji'\n\nimport {\n  type ToggleEmojiButtonGroupProps,\n  type ToggleEmojiButtonSourceProps,\n} from './ToggleEmojiButtonGroup.types'\n\nimport styles from './ToggleEmojiButtonGroup.module.scss'\n\nconst EMOJI_SIZE = 30\n\n/**\n * Toggle Button that contains `Emoji` component with size fixed to 30.\n * It should be used with `ToggleEmojiButtonGroup` component.\n * @example\n * ```tsx\n * <ToggleEmojiButtonSource\n *   content={\n *     <Emoji\n *       imageUrl=\"https://cf.exp.channel.io/asset/emoji/images/80/a.png\"\n *       name=\"A\"\n *    />\n *   }\n * />\n * ```\n */\nexport const ToggleEmojiButtonSource = forwardRef<\n  HTMLButtonElement,\n  ToggleEmojiButtonSourceProps\n>(function ToggleEmojiButtonSource(\n  { name, variant, className, selected, size = 'm', value, onResize, ...rest },\n  forwardedRef\n) {\n  return (\n    <ToggleGroup.Item\n      value={value}\n      asChild\n    >\n      <BaseButton\n        ref={forwardedRef}\n        className={classNames(\n          styles.ToggleEmojiButtonSource,\n          styles[`size-${size}`],\n          styles[`variant-${variant}`],\n          className\n        )}\n        {...rest}\n      >\n        <div className={classNames(styles.ButtonContent)}>\n          <Emoji\n            name={name}\n            size={`${EMOJI_SIZE}`}\n          />\n        </div>\n      </BaseButton>\n    </ToggleGroup.Item>\n  )\n})\n\n/**\n * Component for grouping `ToggleEmojiButtonSource`.\n * @example\n * ```tsx\n * <ToggleEmojiButtonGroup\n *   fillDirection=\"horizontal\"\n * >\n *   <ToggleEmojiButtonSource content={<Emoji />} />\n *   <ToggleEmojiButtonSource content={<Emoji />} />\n * </ToggleEmojiButtonGroup>\n * ```\n */\nexport const ToggleEmojiButtonGroup = forwardRef<\n  HTMLDivElement,\n  ToggleEmojiButtonGroupProps\n>(function ToggleEmojiButtonGroup(\n  {\n    fillDirection,\n    value,\n    className,\n    defaultValue,\n    children,\n    style,\n    dir = 'ltr',\n    onValueChange,\n    ...rest\n  },\n  forwardedRef\n) {\n  const [container, setContainer] = useState<null | HTMLDivElement>(null)\n  const mergedRefs = useMergeRefs(setContainer, forwardedRef)\n  const shouldResizeButton = fillDirection === 'all'\n  const resizedButtonSize = useToggleEmojiButtonSize({\n    container,\n    enabled: shouldResizeButton,\n    buttonCount: Children.count(children),\n  })\n\n  return (\n    <ToggleGroup.Root\n      type=\"single\"\n      defaultValue={defaultValue}\n      onValueChange={onValueChange}\n      value={value}\n      ref={mergedRefs}\n      style={\n        {\n          '--b-toggle-emoji-button-emoji-size': cssDimension(EMOJI_SIZE),\n          '--b-toggle-emoji-button-size': cssDimension(\n            shouldResizeButton ? resizedButtonSize : EMOJI_BUTTON_SIZE\n          ),\n          '--b-toggle-emoji-button-group-gap': cssDimension(\n            EMOJI_BUTTON_GROUP_GAP\n          ),\n          ...style,\n        } as CSSProperties\n      }\n      className={classNames(\n        styles.ToggleEmojiButtonGroup,\n        fillDirection && styles[`fillDirection-${fillDirection}`],\n        className\n      )}\n      {...rest}\n    >\n      {children}\n    </ToggleGroup.Root>\n  )\n})\n"],"names":["EMOJI_SIZE","ToggleEmojiButtonSource","forwardRef","name","variant","className","selected","size","value","onResize","rest","forwardedRef","_jsx","ToggleGroup","asChild","children","BaseButton","ref","classNames","styles","ButtonContent","Emoji","ToggleEmojiButtonGroup","fillDirection","defaultValue","style","dir","onValueChange","container","setContainer","useState","mergedRefs","useMergeRefs","shouldResizeButton","resizedButtonSize","useToggleEmojiButtonSize","enabled","buttonCount","Children","count","type","cssDimension","EMOJI_BUTTON_SIZE","EMOJI_BUTTON_GROUP_GAP"],"mappings":"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"}