{"version":3,"file":"StyledCell.cjs","sources":["../../../../src/components/Grid/StyledCell.tsx"],"sourcesContent":["import { ComponentProps, CSSProperties, ElementType, ReactNode } from 'react';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './StyledCell.module.css';\nimport { SelectionType } from './types';\n\ninterface StyledCellOwnProps {\n  $isFocused: boolean;\n  $selectionType: SelectionType;\n  $isSelectedTop: boolean;\n  $isSelectedLeft: boolean;\n  $isLastRow: boolean;\n  $isLastColumn: boolean;\n  $height: number;\n  $type?: 'body' | 'header';\n  $showBorder: boolean;\n  $rowAutoHeight?: boolean;\n}\n\nconst cellVariants = cva(styles.cell, {\n  variants: {\n    type: {\n      body: styles.cell_type_body,\n      header: styles.cell_type_header,\n    },\n    selection: {\n      default: null,\n      selectDirect: styles['cell_selection_direct'],\n      selectIndirect: styles['cell_selection_indirect'],\n    },\n    noBorder: { true: styles['cell_no-border'] },\n    focused: { true: styles.cell_focused },\n    lastRow: { true: styles['cell_last-row'] },\n    lastColumn: { true: styles['cell_last-column'] },\n    rowAutoHeight: { true: styles['cell_row-auto-height'] },\n    overlay: { true: styles.cell__overlay },\n    overlayTop: { true: styles['cell__overlay_selected_top'] },\n    overlayLeft: { true: styles['cell__overlay_selected_left'] },\n    overlayBottom: { true: styles['cell__overlay_selected_bottom'] },\n    overlayRight: { true: styles['cell__overlay_selected_right'] },\n    overlayAutoHeight: { true: styles['cell__overlay_row-auto-height'] },\n  },\n});\n\ntype StyledCellProps<T extends ElementType> = StyledCellOwnProps & {\n  as?: T;\n  children?: ReactNode;\n} & Omit<ComponentProps<T>, keyof StyledCellOwnProps | 'as' | 'children'>;\n\nexport const StyledCell = <T extends ElementType = 'div'>({\n  as,\n  $isFocused,\n  $selectionType,\n  $isSelectedTop,\n  $isSelectedLeft,\n  $isLastRow,\n  $isLastColumn,\n  $height,\n  $type = 'body',\n  $showBorder,\n  $rowAutoHeight,\n  className,\n  style,\n  children,\n  ...props\n}: StyledCellProps<T>) => {\n  const Component = (as ?? 'div') as ElementType;\n  // A single overlay `::before` is drawn whenever any selection/focus edge or\n  // auto-height needs to paint on top of the cell (see Grid.module.css).\n  const hasOverlay =\n    $isSelectedTop ||\n    $isSelectedLeft ||\n    ($selectionType === 'selectDirect' && ($isLastRow || $isLastColumn)) ||\n    !!$rowAutoHeight;\n  const mergedStyle = {\n    height: $rowAutoHeight ? '100%' : `${$height}px`,\n    ...style,\n  } as CSSProperties;\n  return (\n    <Component\n      className={cn(\n        cellVariants({\n          type: $type,\n          selection: $selectionType,\n          noBorder: $type === 'header' && !$showBorder,\n          focused: $isFocused,\n          lastRow: $isLastRow,\n          lastColumn: $isLastColumn,\n          rowAutoHeight: !!$rowAutoHeight,\n          overlay: hasOverlay,\n          overlayTop: $isSelectedTop,\n          overlayLeft: $isSelectedLeft,\n          overlayBottom: $selectionType === 'selectDirect' && $isLastRow,\n          overlayRight: $selectionType === 'selectDirect' && $isLastColumn,\n          overlayAutoHeight: !!$rowAutoHeight,\n        }),\n        className\n      )}\n      style={mergedStyle}\n      {...props}\n    >\n      {children}\n    </Component>\n  );\n};\n"],"names":["cva","styles","jsx","cn"],"mappings":"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"}