{"version":3,"file":"Th.cjs","sources":["../../../src/components/Table/Th.tsx"],"sourcesContent":["import {\n  type AriaAttributes,\n  type ComponentPropsWithoutRef,\n  type PropsWithChildren,\n  memo,\n  useMemo,\n} from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { ThSortButton } from './ThSortButton'\nimport { reelShadowClassNameGenerator } from './reelShadowStyle'\n\nimport type { CellContentWidth } from './type'\n\nexport type AbstractProps = PropsWithChildren<\n  {\n    /** 並び替え状態 */\n    sort?: ComponentPropsWithoutRef<typeof ThSortButton>['sort']\n    /** 並び替えをクリックした時に発火するコールバック関数 */\n    onSort?: () => void\n    /** 横スクロール時、カラムを左右いずれかに固定 */\n    fixed?: 'left' | 'right'\n    /** 文言を変更するための関数 */\n    decorators?: ComponentPropsWithoutRef<typeof ThSortButton>['decorators']\n    contentWidth?: CellContentWidth\n  } & VariantProps<typeof classNameGenerator>\n>\ntype Props = AbstractProps & Omit<ComponentPropsWithoutRef<'th'>, keyof AbstractProps | 'onClick'>\n\nconst classNameGenerator = tv({\n  base: [\n    'smarthr-ui-Th',\n    'shr-whitespace-nowrap shr-border-0 shr-px-1 shr-py-0.75 shr-text-left shr-align-middle shr-text-sm shr-font-bold shr-leading-tight shr-text-black',\n    'aria-[sort]:shr-cursor-pointer',\n    'hover:aria-[sort]:shr-bg-head-darken',\n    '[&:has(:focus-visible)]:aria-[sort]:shr-focus-indicator',\n    '[&[aria-sort=none]_.smarthr-ui-Icon]:forced-colors:shr-fill-[GrayText]',\n    '[&[aria-sort=ascending]_.smarthr-ui-Icon:first-of-type]:forced-colors:shr-fill-[CanvasText] [&[aria-sort=ascending]_.smarthr-ui-Icon:last-of-type]:forced-colors:shr-fill-[GrayText]',\n    '[&[aria-sort=descending]_.smarthr-ui-Icon:first-of-type]:forced-colors:shr-fill-[GrayText] [&[aria-sort=descending]_.smarthr-ui-Icon:last-of-type]:forced-colors:shr-fill-[CanvasText]',\n  ],\n  variants: {\n    align: {\n      left: '',\n      right: 'shr-text-right',\n    },\n    vAlign: {\n      middle: '',\n      baseline: 'shr-align-baseline',\n      bottom: 'shr-align-bottom',\n    },\n  },\n  defaultVariants: {\n    align: 'left',\n    vAlign: 'middle',\n  },\n})\n\nconst convertContentWidth = (contentWidth?: CellContentWidth) => {\n  if (typeof contentWidth === 'number') {\n    // Th は fontSize.S のため、rem で指定する\n    return `${contentWidth}rem`\n  }\n\n  return contentWidth\n}\n\nexport const Th = memo<Props>(\n  ({\n    children,\n    sort,\n    onSort,\n    decorators,\n    align,\n    vAlign,\n    fixed,\n    contentWidth,\n    className,\n    style,\n    ...rest\n  }) => {\n    const actualClassName = useMemo(() => {\n      const base = classNameGenerator({ className, align, vAlign })\n\n      if (!fixed) {\n        return base\n      }\n\n      const shadow = reelShadowClassNameGenerator({ showShadow: false, direction: fixed })\n\n      return `${base} ${shadow}`\n    }, [align, className, fixed, vAlign])\n    const actualStyle = useMemo(\n      () => ({\n        ...style,\n        width: convertContentWidth(contentWidth),\n      }),\n      [style, contentWidth],\n    )\n\n    const ariaSort = useMemo<AriaAttributes['aria-sort'] | undefined>(\n      () => (sort ? (sort === 'none' ? 'none' : `${sort}ending`) : undefined),\n      [sort],\n    )\n\n    return (\n      <th\n        {...rest}\n        aria-sort={ariaSort}\n        data-fixed={fixed}\n        className={actualClassName}\n        style={actualStyle}\n      >\n        {sort ? (\n          <ThSortButton align={align} onSort={onSort} sort={sort} decorators={decorators}>\n            {children}\n          </ThSortButton>\n        ) : (\n          children\n        )}\n      </th>\n    )\n  },\n)\n"],"names":["tv","memo","useMemo","reelShadowClassNameGenerator","_jsx","ThSortButton"],"mappings":";;;;;;;;AA6BA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,IAAI,EAAE;QACJ,eAAe;QACf,mJAAmJ;QACnJ,gCAAgC;QAChC,sCAAsC;QACtC,yDAAyD;QACzD,wEAAwE;QACxE,sLAAsL;QACtL,wLAAwL;AACzL,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,QAAQ,EAAE,oBAAoB;AAC9B,YAAA,MAAM,EAAE,kBAAkB;AAC3B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,QAAQ;AACjB,KAAA;AACF,CAAA,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,YAA+B,KAAI;AAC9D,IAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;;QAEpC,OAAO,CAAA,EAAG,YAAY,CAAA,GAAA,CAAK;IAC7B;AAEA,IAAA,OAAO,YAAY;AACrB,CAAC;AAEM,MAAM,EAAE,GAAGC,UAAI,CACpB,CAAC,EACC,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,UAAU,EACV,KAAK,EACL,MAAM,EACN,KAAK,EACL,YAAY,EACZ,SAAS,EACT,KAAK,EACL,GAAG,IAAI,EACR,KAAI;AACH,IAAA,MAAM,eAAe,GAAGC,aAAO,CAAC,MAAK;AACnC,QAAA,MAAM,IAAI,GAAG,kBAAkB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAE7D,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,MAAM,GAAGC,6DAA4B,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAEpF,QAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,EAAE;IAC5B,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrC,IAAA,MAAM,WAAW,GAAGD,aAAO,CACzB,OAAO;AACL,QAAA,GAAG,KAAK;AACR,QAAA,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC;AACzC,KAAA,CAAC,EACF,CAAC,KAAK,EAAE,YAAY,CAAC,CACtB;AAED,IAAA,MAAM,QAAQ,GAAGA,aAAO,CACtB,OAAO,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,CAAA,EAAG,IAAI,QAAQ,IAAI,SAAS,CAAC,EACvE,CAAC,IAAI,CAAC,CACP;IAED,QACEE,0BACM,IAAI,EAAA,WAAA,EACG,QAAQ,EAAA,YAAA,EACP,KAAK,EACjB,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE,WAAW,EAAA,QAAA,EAEjB,IAAI,IACHA,cAAA,CAACC,0CAAY,EAAA,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,YAC3E,QAAQ,EAAA,CACI,KAEf,QAAQ,CACT,EAAA,CACE;AAET,CAAC;;;;"}