{"version":3,"file":"useButtonWrapper.cjs","sources":["../../../src/components/Button/useButtonWrapper.tsx"],"sourcesContent":["import {\n  type AnchorHTMLAttributes,\n  type ButtonHTMLAttributes,\n  type ElementType,\n  type ForwardedRef,\n  type PropsWithChildren,\n  type ReactNode,\n  useEffect,\n  useMemo,\n  useRef,\n  useState,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Loader } from '../Loader'\n\nimport type { Variant } from './types'\n\n// HINT: prefix, suffixが存在せず、かつicon,svg,imgのいずれかが単一でbodyに含まれるButtonのselector\n// HINT: smarthr-ui-Icon-extendedはアイコン+α(例えば複数のアイコンをまとめて一つにしているなど)を表すclass\nconst ICON_BUTTON_SELECTOR = ['.smarthr-ui-Icon', '.smarthr-ui-Icon-extended', 'svg', 'img'].reduce(\n  (prev, selector, index) =>\n    `${prev}${index !== 0 ? ',' : ''}.smarthr-ui-Button-body:only-child>${selector}:only-child`,\n  '',\n)\n\ntype AbstractProps = PropsWithChildren<{\n  size: 'M' | 'S'\n  wide: boolean\n  variant: Variant\n  $loading?: boolean\n  className: string\n  elementAs?: ElementType\n  prefix?: ReactNode\n  suffix?: ReactNode\n}>\n\ntype AbstractButtonProps = AbstractProps & {\n  isAnchor?: never\n  buttonRef?: ForwardedRef<HTMLButtonElement>\n}\ntype ButtonProps = AbstractButtonProps &\n  Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof AbstractButtonProps>\n\ntype AbstractAnchorProps = AbstractProps & {\n  isAnchor: true\n  anchorRef?: ForwardedRef<HTMLAnchorElement>\n}\ntype AnchorProps = AbstractAnchorProps &\n  Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof AbstractAnchorProps>\n\nexport type Props = ButtonProps | AnchorProps\n\n// HINT: useButtonWrapperの引数を調整する場合、以下も調整する\ntype FilteredProps =\n  | 'size'\n  | 'wide'\n  | 'variant'\n  | 'className'\n  | 'prefix'\n  | 'suffix'\n  | 'children'\n  | 'isAnchor'\nexport type FilteredButtonProps = Omit<ButtonProps, FilteredProps>\nexport type FilteredAnchorProps = Omit<AnchorProps, FilteredProps>\n\nexport const useButtonWrapper = ({\n  size,\n  wide = false,\n  variant,\n  $loading,\n  className,\n  prefix,\n  suffix,\n  children,\n  isAnchor,\n  ...rest\n}: Props) => {\n  const innerRef = useRef<HTMLElement>(null)\n  // HINT: squareは\n  //  null: Buttonのレンダリング前\n  //  boolean: レンダリング後\n  const [square, setSquare] = useState<null | boolean>(null)\n\n  const classNames = useMemo(() => {\n    const { button, anchor, loader } = wrapperClassNameGenerator({\n      variant,\n      size,\n      square: !!square,\n      loading: !!$loading,\n      wide,\n    })\n\n    const wrapper = isAnchor ? anchor : button\n\n    return {\n      wrapper: wrapper({ className }),\n      loader: loader(),\n    }\n  }, [$loading, size, square, variant, wide, className, isAnchor])\n\n  const innerClassName = useMemo(() => innerClassNameGenerator({ size }), [size])\n\n  let actualPrefix = prefix\n  let actualSuffix = suffix\n  let actualChildren = children\n\n  if ($loading) {\n    actualPrefix = undefined\n    const loader = <Loader size=\"S\" className={classNames.loader} role=\"presentation\" />\n\n    // HINT: squareは null | boolean のため、switchで判定する\n    // nullの場合にactualSuffixにloaderを突っ込んでしまうとsquareの計算が狂ってしまう\n    switch (square) {\n      case true:\n        actualChildren = loader\n        break\n      case false:\n        actualSuffix = loader\n        break\n    }\n  }\n\n  useEffect(() => {\n    if (innerRef.current) {\n      // HINT: prefix, suffixが存在せず、かつicon,svg,imgのいずれかが単一でbodyに含まれるButtonの場合true\n      setSquare(!!innerRef.current.querySelector(ICON_BUTTON_SELECTOR))\n    }\n  }, [children])\n\n  return {\n    filteredProps: { ...rest, $loading } as FilteredAnchorProps | FilteredButtonProps,\n    classNames,\n    children: (\n      <>\n        {actualPrefix}\n        <span ref={innerRef} className={innerClassName}>\n          {actualChildren}\n        </span>\n        {actualSuffix}\n      </>\n    ),\n  }\n}\n\nconst wrapperClassNameGenerator = tv({\n  slots: {\n    button: [\n      'aria-disabled:shr-cursor-not-allowed',\n      /* alpha color を使用しているので、背景色と干渉させない */\n      'aria-disabled:shr-bg-clip-padding',\n      /* disabled ではなく aria-disabled で文字色が変わらないため、強制カラーモード時の色を指定 */\n      'aria-disabled:forced-colors:shr-border-[GrayText] aria-disabled:forced-colors:shr-text-[GrayText]',\n      '[&_.smarthr-ui-Icon]:forced-colors:aria-disabled:shr-fill-[GrayText]',\n    ],\n    anchor: [\n      'shr-no-underline',\n      '[&:not([href])]:shr-cursor-not-allowed',\n      /* alpha color を使用しているので、背景色と干渉させない */\n      '[&:not([href])]:shr-bg-clip-padding',\n      '[&_.smarthr-ui-Icon]:forced-colors:shr-fill-[LinkText]',\n      '[&:not([href])_.smarthr-ui-Icon]:forced-colors:shr-fill-[CanvasText]',\n    ],\n    loader: [\n      'shr-align-bottom',\n      '[&_.smarthr-ui-Loader-spinner]:shr-h-em [&_.smarthr-ui-Loader-spinner]:shr-w-em',\n    ],\n  },\n  variants: {\n    variant: {\n      primary: {},\n      secondary: {},\n      danger: {},\n      skeleton: {},\n      text: {},\n      tertiary: {},\n    },\n    size: {\n      M: {},\n      S: {},\n    },\n    square: {\n      true: {},\n    },\n    loading: {\n      true: {},\n    },\n    wide: {\n      true: {},\n    },\n  },\n  compoundSlots: [\n    {\n      slots: ['button', 'anchor'],\n      className: [\n        'shr-box-border',\n        'shr-cursor-pointer',\n        'shr-inline-flex',\n        'shr-justify-center',\n        'shr-items-center',\n        'shr-gap-0.5',\n        'shr-text-center',\n        'shr-whitespace-nowrap',\n        'shr-rounded-m',\n        /* ボタンの高さを合わせるために指定 */\n        'shr-border-shorthand',\n        'shr-font-inherit',\n        'shr-font-bold',\n        'shr-leading-none',\n        'focus-visible:shr-focus-indicator',\n        'contrast-more:shr-border-high-contrast',\n        /* baseline より下の leading などの余白を埋める */\n        '[&_.smarthr-ui-Icon]:shr-block',\n        /** selector list は使えない\n         * via https://github.com/tailwindlabs/tailwindcss/issues/10576#issuecomment-1440703413\n         */\n        '[&_svg]:shr-block',\n      ],\n    },\n    {\n      slots: ['button', 'anchor'],\n      size: 'S',\n      className: [\n        'shr-p-0.5',\n        'shr-text-sm',\n        /* ボタンラベルの line-height を 0 にしたため、高さを担保する */\n        'shr-min-h-[calc(theme(fontSize.sm)+theme(spacing.1)+theme(borderWidth.2))]',\n      ],\n    },\n    {\n      slots: ['button', 'anchor'],\n      size: 'M',\n      className: ['shr-text-base'],\n    },\n    {\n      slots: ['button', 'anchor'],\n      size: 'M',\n      square: false,\n      className: 'shr-px-1 shr-py-0.75',\n    },\n    {\n      slots: ['button', 'anchor'],\n      size: 'M',\n      square: true,\n      className: 'shr-p-0.75',\n    },\n    {\n      slots: ['button', 'anchor'],\n      loading: true,\n      className: 'shr-flex-row-reverse',\n    },\n    {\n      slots: ['button', 'anchor'],\n      wide: true,\n      className: 'shr-w-full',\n    },\n    {\n      slots: ['button', 'anchor'],\n      variant: 'primary',\n      className: [\n        'shr-border-main',\n        'shr-bg-main',\n        'shr-text-white',\n        'focus-visible:shr-border-main-darken',\n        'focus-visible:shr-bg-main-darken',\n        'hover:shr-border-main-darken',\n        'hover:shr-bg-main-darken',\n      ],\n    },\n    {\n      slots: ['button'],\n      variant: 'primary',\n      className: [\n        'aria-disabled:shr-border-main/50',\n        'aria-disabled:shr-bg-main/50',\n        'aria-disabled:shr-text-white/50',\n      ],\n    },\n    {\n      slots: ['anchor'],\n      variant: 'primary',\n      className: [\n        '[&:not([href])]:shr-border-main/50',\n        '[&:not([href])]:shr-bg-main/50',\n        '[&:not([href])]:shr-text-white/50',\n      ],\n    },\n    {\n      slots: ['button', 'anchor'],\n      variant: 'secondary',\n      className: [\n        'shr-border-default',\n        'shr-bg-white',\n        'shr-text-black',\n        'focus-visible:shr-border-darken',\n        'focus-visible:shr-bg-white-darken',\n        'focus-visible:contrast-more:shr-border-high-contrast',\n        'hover:shr-border-darken',\n        'hover:shr-bg-white-darken',\n        'hover:contrast-more:shr-border-high-contrast',\n      ],\n    },\n    {\n      slots: ['button'],\n      variant: 'secondary',\n      className: [\n        'aria-disabled:shr-border-disabled',\n        'aria-disabled:shr-bg-white-darken',\n        'aria-disabled:shr-text-disabled',\n      ],\n    },\n    {\n      slots: ['anchor'],\n      variant: 'secondary',\n      className: [\n        '[&:not([href])]:shr-border-disabled',\n        '[&:not([href])]:shr-bg-white-darken',\n        '[&:not([href])]:shr-text-disabled',\n      ],\n    },\n    {\n      slots: ['button'],\n      variant: 'tertiary',\n      className: [\n        'shr-border-transparent',\n        'shr-bg-transparent',\n        'shr-text-link',\n        'shr-font-normal',\n        'focus-visible:shr-bg-white-darken',\n        'hover:shr-bg-white-darken',\n        'aria-disabled:shr-bg-transparent',\n        'aria-disabled:shr-text-link/50',\n      ],\n    },\n    {\n      slots: ['button', 'anchor'],\n      variant: 'danger',\n      className: [\n        'shr-border-danger',\n        'shr-bg-danger',\n        'shr-text-white',\n        'focus-visible:shr-border-danger-darken',\n        'focus-visible:shr-bg-danger-darken',\n        'hover:shr-border-danger-darken',\n        'hover:shr-bg-danger-darken',\n      ],\n    },\n    {\n      slots: ['button'],\n      variant: 'danger',\n      className: [\n        'aria-disabled:shr-border-danger/50',\n        'aria-disabled:shr-bg-danger/50',\n        'aria-disabled:shr-text-white/50',\n      ],\n    },\n    {\n      slots: ['anchor'],\n      variant: 'danger',\n      className: [\n        '[&:not([href])]:shr-border-danger/50',\n        '[&:not([href])]:shr-bg-danger/50',\n        '[&:not([href])]:shr-text-white/50',\n      ],\n    },\n    {\n      slots: ['button', 'anchor'],\n      variant: 'skeleton',\n      className: [\n        'shr-border-white',\n        'shr-bg-transparent',\n        'shr-text-white',\n        'focus-visible:shr-border-white-darken',\n        'focus-visible:shr-bg-overlay',\n        'focus-visible:shr-text-white-darken',\n        'hover:shr-border-white-darken',\n        'hover:shr-bg-overlay',\n        'hover:shr-text-white-darken',\n      ],\n    },\n    {\n      slots: ['button'],\n      variant: 'skeleton',\n      className: [\n        'aria-disabled:shr-border-white/50',\n        'aria-disabled:shr-bg-transparent',\n        'aria-disabled:shr-text-white/50',\n      ],\n    },\n    {\n      slots: ['anchor'],\n      variant: 'skeleton',\n      className: [\n        '[&:not([href])]:shr-border-white/50',\n        '[&:not([href])]:shr-bg-transparent',\n        '[&:not([href])]:shr-text-white/50',\n      ],\n    },\n    {\n      slots: ['button', 'anchor'],\n      variant: 'text',\n      className: [\n        'shr-border-transparent',\n        'shr-bg-transparent',\n        'shr-text-black',\n        'focus-visible:shr-bg-white-darken',\n        'hover:shr-bg-white-darken',\n      ],\n    },\n    {\n      slots: ['button'],\n      variant: 'text',\n      className: [\n        'aria-disabled:shr-border-transparent',\n        'aria-disabled:shr-bg-transparent',\n        'aria-disabled:shr-text-disabled',\n      ],\n    },\n    {\n      slots: ['anchor'],\n      variant: 'text',\n      className: [\n        '[&:not([href])]:shr-border-transparent',\n        '[&:not([href])]:shr-bg-transparent',\n        '[&:not([href])]:shr-text-disabled',\n      ],\n    },\n    {\n      slots: ['loader'],\n      variant: ['primary', 'danger', 'skeleton'],\n      className: [\n        '[&_.smarthr-ui-Loader-line]:shr-border-white/50',\n        '[&_.smarthr-ui-Loader-line]:forced-colors:shr-border-[ButtonBorder]',\n      ],\n    },\n    {\n      slots: ['loader'],\n      variant: ['secondary', 'text'],\n      className: '[&_.smarthr-ui-Loader-line]:shr-border-disabled',\n    },\n    {\n      slots: ['loader'],\n      variant: 'tertiary',\n      className: '[&_.smarthr-ui-Loader-line]:shr-border-link/50',\n    },\n  ],\n})\n\nconst innerClassNameGenerator = tv({\n  base: [\n    'smarthr-ui-Button-body',\n    /* LineClamp を併用する場合に、幅を計算してもらうために指定 */\n    'shr-min-w-0',\n  ],\n  variants: {\n    size: {\n      M: '',\n      S: [\n        /* SVG とテキストコンテンツの縦位置を揃えるために指定 */\n        'shr-leading-[0]',\n      ],\n    },\n  },\n})\n"],"names":["useRef","useState","useMemo","_jsx","Loader","useEffect","_jsxs","_Fragment","tv"],"mappings":"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"}