{"version":3,"file":"SpreadsheetTable.cjs","sources":["../../../src/components/SpreadsheetTable/SpreadsheetTable.tsx"],"sourcesContent":["import {\n  type ComponentPropsWithoutRef,\n  type FC,\n  type PropsWithChildren,\n  type ReactNode,\n  memo,\n  useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { SpreadsheetTableCorner } from './SpreadsheetTableCorner'\n\ntype AbstractProps = PropsWithChildren<{\n  data?: ReactNode[][]\n}>\ntype Props = AbstractProps & Omit<ComponentPropsWithoutRef<'table'>, keyof AbstractProps>\n\nconst classNameGenerator = tv({\n  base: [\n    'smarthr-ui-SpreadsheetTable shr-border-shorthand shr-border-collapse shr-bg-head',\n    // th\n    '[&_th]:shr-p-0.25 [&_th]:shr-text-sm [&_th]:shr-font-normal [&_th]:shr-text-black',\n    // th + th\n    '[&_th_+_th]:shr-border-l-shorthand [&_th_+_th]:shr-border-[theme(backgroundColor[head-darken])]',\n    // 左上の角： tr:first-child th:first-child\n    '[&_tr:first-child_th:first-child]:shr-w-[calc(1em_*_theme(lineHeight.normal))]',\n    // tr + tr th\n    '[&_tr_+_tr_th]:shr-border-t-shorthand [&_tr_+_tr_th]:shr-border-[theme(backgroundColor[head-darken])]',\n    // td\n    '[&_td]:shr-border-shorthand [&_td]:shr-bg-white [&_td]:shr-p-0.25 [&_td]:shr-text-sm',\n  ],\n})\n\nexport const SpreadsheetTable: FC<Props> = ({ data, className, children, ...rest }) => {\n  const actualClassName = useMemo(() => classNameGenerator({ className }), [className])\n\n  return (\n    <table {...rest} className={actualClassName}>\n      {data && (\n        <>\n          <MemoizedThead cols={data[0].length} />\n          <tbody>\n            {data.map((row, i) => (\n              <tr key={i}>\n                <th>{i + 1}</th>\n                {row.map((cell, j) => (\n                  <td key={`${i}-${j}`}>{cell}</td>\n                ))}\n              </tr>\n            ))}\n          </tbody>\n        </>\n      )}\n      {children}\n    </table>\n  )\n}\n\nconst MemoizedThead = memo<{ cols: number }>(({ cols }) => {\n  const columns: ReactNode[] = []\n\n  for (let i = 0; i < cols; i++) {\n    columns.push(\n      <th key={i}>\n        {\n          // アルファベットを A から自動挿入\n          String.fromCharCode(65 + i)\n        }\n      </th>,\n    )\n  }\n\n  return (\n    <thead>\n      <tr>\n        <SpreadsheetTableCorner />\n        {columns}\n      </tr>\n    </thead>\n  )\n})\n"],"names":["tv","useMemo","_jsxs","_Fragment","_jsx","memo","SpreadsheetTableCorner"],"mappings":";;;;;;;AAiBA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,IAAI,EAAE;QACJ,kFAAkF;;QAElF,mFAAmF;;QAEnF,iGAAiG;;QAEjG,gFAAgF;;QAEhF,uGAAuG;;QAEvG,sFAAsF;AACvF,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,gBAAgB,GAAc,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,KAAI;AACpF,IAAA,MAAM,eAAe,GAAGC,aAAO,CAAC,MAAM,kBAAkB,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAErF,IAAA,QACEC,eAAA,CAAA,OAAA,EAAA,EAAA,GAAW,IAAI,EAAE,SAAS,EAAE,eAAe,EAAA,QAAA,EAAA,CACxC,IAAI,KACHA,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEC,cAAA,CAAC,aAAa,EAAA,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAA,CAAI,EACvCA,cAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EACG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,MACfF,eAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,CACEE,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAK,CAAC,GAAG,CAAC,EAAA,CAAM,EACf,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MACfA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAuB,IAAI,EAAA,EAAlB,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAE,CAAa,CAClC,CAAC,KAJK,CAAC,CAKL,CACN,CAAC,GACI,CAAA,EAAA,CACP,CACJ,EACA,QAAQ,CAAA,EAAA,CACH;AAEZ;AAEA,MAAM,aAAa,GAAGC,UAAI,CAAmB,CAAC,EAAE,IAAI,EAAE,KAAI;IACxD,MAAM,OAAO,GAAgB,EAAE;AAE/B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;QAC7B,OAAO,CAAC,IAAI,CACVD,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA;;YAGI,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,EAAA,EAHtB,CAAC,CAKL,CACN;IACH;IAEA,QACEA,cAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EACEF,eAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,CACEE,cAAA,CAACE,yEAAsB,EAAA,EAAA,CAAG,EACzB,OAAO,CAAA,EAAA,CACL,EAAA,CACC;AAEZ,CAAC,CAAC;;;;"}