{"version":3,"file":"TableScrollContext.cjs","sources":["../../../src/components/Table/TableScrollContext.tsx"],"sourcesContent":["'use client'\n\nimport {\n  type ComponentPropsWithRef,\n  type ForwardedRef,\n  type PropsWithChildren,\n  forwardRef,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { defaultHtmlFontSize } from '../../themes'\nimport { Scroller } from '../Scroller'\n\ntype Props = PropsWithChildren &\n  Omit<ComponentPropsWithRef<'div'>, keyof PropsWithChildren> & {\n    fixedHead?: boolean\n  }\n\nconst classNameGenerator = tv({\n  slots: {\n    // fixedHead のとき、スクロールインスタンスがTableからWrapperに変わるため、Wrapperに対して高さとoverflowを指定する\n    wrapper: 'shr-h-[inherit] shr-max-h-[inherit] shr-scroll-pb-0.5',\n  },\n})\n\nexport const TableScrollContext = forwardRef<HTMLDivElement, Props>(\n  ({ className, children, fixedHead, ...rest }, forwardedRef: ForwardedRef<HTMLDivElement>) => {\n    const innerRef = useRef<HTMLDivElement | null>(null)\n    const classNames = useMemo(() => {\n      const { wrapper } = classNameGenerator()\n\n      return {\n        wrapper: wrapper(),\n      }\n    }, [])\n\n    const setRefs = (node: HTMLDivElement) => {\n      innerRef.current = node\n      if (forwardedRef) {\n        if (typeof forwardedRef === 'function') {\n          forwardedRef(node)\n        } else {\n          forwardedRef.current = node\n        }\n      }\n    }\n\n    // fixedHead 時に thead の高さ分だけ scroll-padding-top を正しい高さをに設定できるように、Tableのtheadがある場合のみで計算する\n    useLayoutEffect(() => {\n      if (!innerRef.current || !fixedHead) return\n      const thead = innerRef.current.querySelector('thead')\n      if (thead) {\n        const { height } = thead.getBoundingClientRect()\n        innerRef.current.style.scrollPaddingTop = `${height + defaultHtmlFontSize}px`\n      }\n    }, [fixedHead])\n\n    return (\n      <Scroller {...rest} ref={setRefs} direction=\"horizontal\" className={classNames.wrapper}>\n        {children}\n      </Scroller>\n    )\n  },\n)\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAqBA;AACE;;AAEE;AACD;AACF;;AAIG;AACA;AACE;;;;;AAOF;AACE;;AAEE;;;;AAGE;;;AAGN;;;AAIE;;;;;AAIE;;AAEJ;;AAOF;;"}