{"version":3,"file":"ItemButton.cjs","sources":["../../../src/components/Combobox/ItemButton.tsx"],"sourcesContent":["import { type ReactNode, type RefObject, memo, useCallback, useMemo } from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Localizer } from '../../intl'\nimport { FaCirclePlusIcon } from '../Icon'\nimport { Text } from '../Text'\n\nimport type { ComboboxOption } from './types'\n\ntype Props<T> = {\n  option: ComboboxOption<T>\n  onAdd?: (option: ComboboxOption<T>) => void\n  onSelect: (option: ComboboxOption<T>) => void\n  onMouseOver: (option: ComboboxOption<T>) => void\n  activeRef: RefObject<HTMLButtonElement> | undefined\n}\n\nconst classNameGenerator = tv({\n  base: [\n    'shr-block shr-min-w-full shr-cursor-pointer shr-border-none shr-px-1 shr-py-0.5 shr-text-left shr-text-base shr-leading-tight',\n    'aria-selected:shr-text-white',\n    'disabled:shr-cursor-not-allowed disabled:shr-text-disabled',\n    'data-[active=true]:shr-bg-white-darken data-[active=true]:aria-selected:shr-bg-main-darken',\n    'data-[active=false]:shr-bg-white data-[active=false]:aria-selected:shr-bg-main',\n  ],\n  variants: {\n    new: {\n      true: 'smarthr-ui-Combobox-addButton shr-flex shr-items-center',\n      false: 'smarthr-ui-Combobox-selectButton',\n    },\n  },\n})\n\nconst ItemButton = <T,>({ option, onAdd, onSelect, onMouseOver, activeRef }: Props<T>) => {\n  const handleMouseOver = useCallback(() => {\n    onMouseOver(option)\n  }, [onMouseOver, option])\n\n  const commonProps = {\n    option,\n    onMouseOver: handleMouseOver,\n    activeRef,\n  }\n\n  return option.isNew ? (\n    <AddButton {...commonProps} onAdd={onAdd} />\n  ) : (\n    <SelectButton {...commonProps} onSelect={onSelect} />\n  )\n}\nconst typedMemo: <T>(c: T) => T = memo\nconst Memoized = typedMemo(ItemButton)\nexport { Memoized as ItemButton }\n\ntype ButtonType<T> = Pick<Props<T>, 'option' | 'activeRef'> & {\n  onMouseOver: () => void\n}\n\nconst AddButton = <T,>({\n  activeRef,\n  option,\n  onAdd,\n  onMouseOver,\n}: ButtonType<T> & Pick<Props<T>, 'onAdd'>) => {\n  const className = useMemo(\n    () =>\n      classNameGenerator({\n        new: true,\n      }),\n    [],\n  )\n\n  const onClick = useMemo(\n    () =>\n      onAdd\n        ? () => {\n            onAdd(option)\n          }\n        : undefined,\n    [option, onAdd],\n  )\n\n  return (\n    <button\n      ref={activeRef}\n      type=\"button\"\n      role=\"option\"\n      aria-selected={false}\n      id={option.id}\n      data-active={!!activeRef}\n      onClick={onClick}\n      // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n      onMouseOver={onMouseOver}\n      className={className}\n    >\n      <MemoizedNewIconWithText label={option.item.label} />\n    </button>\n  )\n}\n\nconst MemoizedNewIconWithText = memo<{ label: ReactNode }>(({ label }) => (\n  <Text color=\"TEXT_LINK\" icon={<FaCirclePlusIcon color=\"TEXT_LINK\" />}>\n    <Localizer\n      id=\"smarthr-ui/Combobox/addItemButtonLabel\"\n      defaultText=\"「{name}」を追加\"\n      values={{ name: label }}\n    />\n  </Text>\n))\n\nconst SelectButton = <T,>({\n  activeRef,\n  option,\n  onSelect,\n  onMouseOver,\n}: ButtonType<T> & Pick<Props<T>, 'onSelect'>) => {\n  const className = useMemo(\n    () =>\n      classNameGenerator({\n        new: false,\n      }),\n    [],\n  )\n\n  const handleSelect = useCallback(() => {\n    onSelect(option)\n  }, [onSelect, option])\n\n  return (\n    <button\n      ref={activeRef}\n      type=\"button\"\n      role=\"option\"\n      id={option.id}\n      disabled={option.item.disabled}\n      aria-selected={option.selected}\n      data-active={!!activeRef}\n      onClick={handleSelect}\n      // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n      onMouseOver={onMouseOver}\n      className={className}\n    >\n      {option.item.label}\n    </button>\n  )\n}\n"],"names":["tv","useCallback","_jsx","memo","useMemo","Text","FaCirclePlusIcon","Localizer"],"mappings":"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"}