{"version":3,"file":"index.cjs","sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import {\n  CSSProperties,\n  FC,\n  HTMLAttributes,\n  MouseEvent,\n  ReactNode,\n  forwardRef,\n  useCallback,\n  useEffect,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState,\n  type RefObject,\n} from 'react';\n\nimport { CheckedState } from '@radix-ui/react-checkbox';\n\nimport { Icon } from '@/components/Icon';\nimport { IconButton } from '@/components/IconButton';\nimport { Text } from '@/components/Text';\nimport { HorizontalDirection } from '@/types';\nimport { EllipsisContent } from '@/components/EllipsisContent';\nimport { Checkbox, CheckboxProps } from '@/components/Checkbox';\nimport { MiddleTruncator } from '@/components/MiddleTruncator';\nimport { cn, cva } from '@/lib/cva';\nimport styles from './Table.module.css';\n\ntype SortDir = 'asc' | 'desc';\ntype SortFn = (sortDir: SortDir, header: TableColumnConfigProps, index: number) => void;\ntype TableSize = 'sm' | 'md';\n\n// wrap: text breaks into multiple lines\n// truncated: text cuts at end with an ellipsis (...)\n// truncate-middle: text cuts in middle, shows start and end\ntype OverflowMode = 'truncated' | 'truncate-middle' | 'wrap';\n\nconst MIN_COLUMN_WIDTH = 120;\n\nexport interface TableColumnConfigProps extends HTMLAttributes<HTMLTableCellElement> {\n  /** Rendered inside a `<button>` when the column is sortable or has `onClick`, so it must not contain interactive content. */\n  label: ReactNode;\n  isSortable?: boolean;\n  sortDir?: SortDir;\n  sortPosition?: HorizontalDirection;\n  width?: string;\n  overflowMode?: OverflowMode;\n  resizable?: boolean;\n}\n\n// TODO: Delete `TableHeaderType` (deprecation warn at v0.0.251-test.67)\n/** @deprecated The TableHeaderType field have been deprecated to favour TableColumnConfigProps */\nexport type TableHeaderType = TableColumnConfigProps;\n\nconst headerVariants = cva(styles.table__header, {\n  variants: {\n    size: {\n      sm: styles.table__header_size_sm,\n      md: styles.table__header_size_md,\n    },\n    resizable: {\n      true: styles.table__header_resizable,\n      false: '',\n    },\n  },\n  defaultVariants: {\n    resizable: false,\n  },\n});\n\nconst sortIconVariants = cva(styles['table__sort-icon'], {\n  variants: {\n    dir: {\n      asc: styles['table__sort-icon_dir_asc'],\n      desc: styles['table__sort-icon_dir_desc'],\n    },\n  },\n});\n\ntype OnKeyboardResizerDirection = 'left' | 'right';\n\ninterface TableHeaderProps extends Omit<TableColumnConfigProps, 'width'> {\n  onSort?: () => void;\n  size: TableSize;\n  showResizer?: boolean;\n  onResizeStart?: (e: MouseEvent) => void;\n  onKeyboardResize?: (\n    e: React.KeyboardEvent,\n    direction: OnKeyboardResizerDirection\n  ) => void;\n  columnWidth?: number;\n  nextColumnWidth?: number;\n}\n\nconst TableHeader = ({\n  label,\n  sortDir,\n  sortPosition = 'end',\n  isSortable,\n  onSort,\n  onClick,\n  size,\n  resizable,\n  showResizer,\n  onResizeStart,\n  onKeyboardResize,\n  columnWidth,\n  nextColumnWidth,\n  overflowMode,\n  className,\n  'aria-label': ariaLabel,\n  'aria-labelledby': ariaLabelledBy,\n  ...props\n}: TableHeaderProps) => {\n  if (overflowMode === 'wrap' && resizable) {\n    console.warn(\n      '\"Wrap\" overflow mode doesn\\'t work well with resizable table columns. Consider using truncation instead, please!'\n    );\n  }\n\n  const isSorted = typeof sortDir === 'string';\n  const isInteractive = Boolean(\n    typeof onClick === 'function' || (isSortable && typeof onSort === 'function')\n  );\n  const resizerRef = useRef<HTMLDivElement>(null);\n\n  const onHeaderClick = (\n    e: MouseEvent<HTMLButtonElement & HTMLTableCellElement>\n  ): void => {\n    if (typeof onClick === 'function') {\n      onClick(e);\n    }\n    if (typeof onSort === 'function') {\n      onSort();\n    }\n  };\n\n  const onResizerKeyDown = (e: React.KeyboardEvent) => {\n    if (!onKeyboardResize) {\n      return;\n    }\n\n    if (['ArrowLeft', 'ArrowRight'].includes(e.key)) {\n      e.preventDefault();\n    }\n\n    switch (e.key) {\n      case 'ArrowLeft':\n        onKeyboardResize(e, 'left');\n        break;\n      case 'ArrowRight':\n        onKeyboardResize(e, 'right');\n        break;\n      case 'Escape':\n        resizerRef.current?.blur();\n        break;\n    }\n  };\n\n  const ariaSort =\n    isSorted && isSortable ? (sortDir === 'asc' ? 'ascending' : 'descending') : undefined;\n  const isMeasured = columnWidth !== undefined;\n  const maxColumnWidth =\n    isMeasured && nextColumnWidth !== undefined\n      ? Math.round(columnWidth + nextColumnWidth - MIN_COLUMN_WIDTH)\n      : undefined;\n  const headerContentClassName = cn(\n    styles['table__header-content'],\n    isInteractive && styles['table__header-content_interactive']\n  );\n  const headerContent = (\n    <>\n      {isSorted && isSortable && sortPosition == 'start' && (\n        <Icon\n          name=\"arrow-down\"\n          size=\"sm\"\n          aria-hidden=\"true\"\n          className={cn(sortIconVariants({ dir: sortDir }))}\n        />\n      )}\n      {label}\n      {isSorted && isSortable && sortPosition == 'end' && (\n        <Icon\n          name=\"arrow-down\"\n          size=\"sm\"\n          aria-hidden=\"true\"\n          className={cn(sortIconVariants({ dir: sortDir }))}\n        />\n      )}\n    </>\n  );\n\n  return (\n    <th\n      aria-sort={ariaSort}\n      aria-label={ariaLabel}\n      aria-labelledby={ariaLabelledBy}\n      {...props}\n      className={cn(headerVariants({ size, resizable }), className)}\n    >\n      {isInteractive ? (\n        <button\n          type=\"button\"\n          onClick={onHeaderClick}\n          aria-label={ariaLabel}\n          aria-labelledby={ariaLabelledBy}\n          className={headerContentClassName}\n        >\n          {headerContent}\n        </button>\n      ) : (\n        <div className={headerContentClassName}>{headerContent}</div>\n      )}\n      {showResizer && (\n        // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- a focusable separator is a widget (WAI-ARIA 1.2 window splitter); jsx-a11y models it as static\n        <div\n          ref={resizerRef}\n          onMouseDown={onResizeStart}\n          role=\"separator\"\n          aria-orientation=\"vertical\"\n          aria-label={`Resize ${typeof label === 'string' ? label : 'column'}`}\n          aria-valuenow={isMeasured ? Math.round(columnWidth) : undefined}\n          aria-valuemin={MIN_COLUMN_WIDTH}\n          aria-valuemax={maxColumnWidth}\n          aria-valuetext={isMeasured ? `${Math.round(columnWidth)} pixels` : undefined}\n          // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- focusable separator, see above\n          tabIndex={isMeasured ? 0 : undefined}\n          onKeyDown={onResizerKeyDown}\n          className={cn(styles.table__resizer)}\n        />\n      )}\n    </th>\n  );\n};\ninterface TheadProps {\n  headers: TableColumnConfigProps[];\n  isSelectable?: boolean;\n  onSelectAll?: (selectedValues: SelectReturnValue[]) => void;\n  actionsList: string[];\n  onSort?: SortFn;\n  size: TableSize;\n  rows: TableRowType[];\n  selectedIds: (number | string)[];\n  resizableColumns?: boolean;\n  onResizeStart?: (columnIndex: number) => (e: MouseEvent) => void;\n  onKeyboardResize?: (\n    columnIndex: number\n  ) => (e: React.KeyboardEvent, direction: OnKeyboardResizerDirection) => void;\n  theadRef?: RefObject<HTMLTableSectionElement>;\n  columnWidths?: Map<string, number> | null;\n}\n\nconst Thead = ({\n  headers,\n  isSelectable,\n  onSelectAll,\n  actionsList,\n  onSort: onSortProp,\n  size,\n  rows,\n  selectedIds,\n  resizableColumns,\n  onResizeStart,\n  theadRef,\n  onKeyboardResize,\n  columnWidths,\n}: TheadProps) => {\n  const onSort =\n    typeof onSortProp === 'function'\n      ? (header: TableColumnConfigProps, headerIndex: number) => () => {\n          if (header.isSortable) {\n            onSortProp(header.sortDir === 'asc' ? 'desc' : 'asc', header, headerIndex);\n          }\n        }\n      : undefined;\n  return (\n    <thead\n      ref={theadRef}\n      className={cn(styles.table__thead)}\n    >\n      <tr>\n        {isSelectable && (\n          <th\n            aria-label=\"Select column\"\n            className={cn(headerVariants({ size }))}\n          >\n            <SelectAllCheckbox\n              onCheckedChange={onSelectAll}\n              rows={rows}\n              selectedIds={selectedIds}\n            />\n          </th>\n        )}\n        {headers.map((headerProps, index) => {\n          const headerLabel =\n            typeof headerProps.label === 'string'\n              ? headerProps.label\n              : `__index_${index}`;\n          const nextHeader = headers[index + 1];\n          const nextHeaderLabel =\n            typeof nextHeader?.label === 'string'\n              ? nextHeader.label\n              : `__index_${index + 1}`;\n          return (\n            <TableHeader\n              key={`table-header-${index}`}\n              onSort={onSort?.(headerProps, index)}\n              size={size}\n              resizable={resizableColumns}\n              showResizer={resizableColumns && index < headers.length - 1}\n              onResizeStart={onResizeStart?.(index)}\n              onKeyboardResize={onKeyboardResize?.(index)}\n              columnWidth={columnWidths?.get(headerLabel)}\n              nextColumnWidth={\n                nextHeader ? columnWidths?.get(nextHeaderLabel) : undefined\n              }\n              {...headerProps}\n            />\n          );\n        })}\n        {actionsList.length > 0 && (\n          <th\n            aria-label=\"Actions\"\n            className={cn(headerVariants({ size }))}\n          />\n        )}\n      </tr>\n    </thead>\n  );\n};\n\ninterface ColgroupProps {\n  headers: TableColumnConfigProps[];\n  isSelectable?: boolean;\n  actionsList: string[];\n  resizableColumns?: boolean;\n  columnWidths?: Map<string, number> | null;\n}\n\nconst Colgroup = ({\n  headers,\n  isSelectable,\n  actionsList,\n  resizableColumns,\n  columnWidths,\n}: ColgroupProps) => (\n  <colgroup className={cn(styles.table__colgroup)}>\n    {isSelectable && <col width={48} />}\n    {headers.map((headerProps, index) => {\n      const headerLabel =\n        typeof headerProps.label === 'string' ? headerProps.label : `__index_${index}`;\n      const widthFromMap = columnWidths?.get(headerLabel);\n      return (\n        <col\n          key={`header-col-${index}`}\n          width={\n            resizableColumns && widthFromMap && index < headers.length - 1\n              ? `${widthFromMap}px`\n              : headerProps.width\n          }\n        />\n      );\n    })}\n    {actionsList.length > 0 && <col width={(actionsList.length + 1) * 32 + 10} />}\n  </colgroup>\n);\n\nconst rowVariants = cva(styles.table__row, {\n  variants: {\n    isSelectable: {\n      true: styles.table__row_selectable,\n      false: '',\n    },\n    isActive: {\n      true: styles.table__row_active,\n      false: '',\n    },\n    isDisabled: {\n      true: styles.table__row_disabled,\n      false: '',\n    },\n    showActions: {\n      true: styles['table__row_show-actions'],\n      false: '',\n    },\n  },\n  defaultVariants: {\n    isSelectable: false,\n    isActive: false,\n    isDisabled: false,\n    showActions: false,\n  },\n});\n\nconst cellVariants = cva(styles.table__data, {\n  variants: {\n    size: {\n      sm: styles.table__data_size_sm,\n      md: styles.table__data_size_md,\n    },\n  },\n});\n\nconst selectDataVariants = cva(styles['table__select-data'], {\n  variants: {\n    size: {\n      sm: styles['table__select-data_size_sm'],\n      md: styles['table__select-data_size_md'],\n    },\n  },\n});\n\nconst actionsCellVariants = cva(styles['table__actions-cell'], {\n  variants: {\n    size: {\n      sm: styles['table__actions-cell_size_sm'],\n      md: styles['table__actions-cell_size_md'],\n    },\n  },\n});\n\ninterface TableCellType extends HTMLAttributes<HTMLTableCellElement> {\n  label: ReactNode;\n  overflowMode?: OverflowMode;\n}\nexport interface TableRowType extends Omit<\n  HTMLAttributes<HTMLTableRowElement>,\n  'onSelect' | 'id'\n> {\n  id: string | number;\n  items: TableCellType[];\n  isDisabled?: boolean;\n  isDeleted?: boolean;\n  isActive?: boolean;\n  /** only works with <Table isSelectable={true} /> */\n  isIndeterminate?: boolean;\n}\n\nexport type MobileLayoutProp = 'list' | 'scroll';\n\ninterface CommonTableProps extends Omit<\n  HTMLAttributes<HTMLTableElement>,\n  'children' | 'onSelect'\n> {\n  headers: TableColumnConfigProps[];\n  rows: TableRowType[];\n  onDelete?: (item: TableRowType, index: number) => void;\n  onEdit?: (item: TableRowType, index: number) => void;\n  onSort?: SortFn;\n  loading?: boolean;\n  noDataMessage?: ReactNode;\n  size?: TableSize;\n  showHeader?: boolean;\n  rowHeight?: string;\n  resizableColumns?: boolean;\n  mobileLayout?: MobileLayoutProp;\n}\n\ntype SelectReturnValue = {\n  index: number;\n  item: TableRowType;\n};\n\ninterface SelectionType {\n  isSelectable?: boolean;\n  selectedIds?: (number | string)[];\n  onSelect?: (selectedValues: SelectReturnValue[]) => void;\n}\n\ninterface NoSelectionType {\n  isSelectable?: never;\n  selectedIds?: never;\n  onSelect?: never;\n}\n\nexport type TableProps = CommonTableProps & (SelectionType | NoSelectionType);\n\ninterface TableBodyRowProps extends Omit<TableRowType, 'id'> {\n  headers: TableColumnConfigProps[];\n  onSelect: (checked: boolean) => void;\n  isSelectable?: boolean;\n  isSelected: boolean;\n  onDelete?: () => void;\n  onEdit?: () => void;\n  actionsList: string[];\n  size: TableSize;\n  rowHeight?: string;\n}\n\nconst TableBodyRow = ({\n  headers,\n  items,\n  onSelect,\n  isSelectable,\n  isSelected,\n  isIndeterminate,\n  onDelete,\n  onEdit,\n  isDeleted,\n  isActive,\n  isDisabled,\n  size,\n  actionsList,\n  rowHeight,\n  className,\n  style,\n  ...rowProps\n}: TableBodyRowProps) => {\n  const isDeletable = typeof onDelete === 'function';\n  const isEditable = typeof onEdit === 'function';\n  const rowStyle = useMemo(\n    () =>\n      ({\n        ...(rowHeight ? { '--table-row-height': rowHeight } : {}),\n        ...style,\n      }) as CSSProperties,\n    [rowHeight, style]\n  );\n  return (\n    <tr\n      style={rowStyle}\n      {...rowProps}\n      className={cn(\n        rowVariants({\n          isSelectable,\n          isActive,\n          isDisabled: isDeleted || isDisabled,\n          showActions: isDeletable || isEditable,\n        }),\n        className\n      )}\n    >\n      {isSelectable && (\n        <td className={cn(selectDataVariants({ size }))}>\n          <Checkbox\n            checked={isIndeterminate ? 'indeterminate' : isSelected}\n            onCheckedChange={onSelect}\n            disabled={isDisabled || isDeleted}\n          />\n        </td>\n      )}\n      {items.map(\n        ({ label, overflowMode, className: cellClassName, ...cellProps }, cellIndex) => (\n          <td\n            key={`table-cell-${cellIndex}`}\n            {...cellProps}\n            className={cn(cellVariants({ size }), cellClassName)}\n          >\n            {headers[cellIndex] && (\n              <div className={cn(styles['table__mobile-header'])}>\n                {headers[cellIndex].label}\n              </div>\n            )}\n            <Cell\n              label={label}\n              overflowMode={overflowMode ?? headers[cellIndex]?.overflowMode}\n            />\n          </td>\n        )\n      )}\n      {actionsList.length > 0 && (\n        <td className={cn(actionsCellVariants({ size }))}>\n          <div className={cn(styles.table__actions)}>\n            {actionsList.includes('editAction') && (\n              <IconButton\n                type=\"ghost\"\n                htmlType=\"button\"\n                disabled={isDisabled || isDeleted || !isEditable}\n                icon=\"pencil\"\n                onClick={onEdit}\n                data-testid=\"table-row-edit\"\n                className={cn(styles['table__edit-button'])}\n              />\n            )}\n            {actionsList.includes('deleteAction') && (\n              <IconButton\n                disabled={isDisabled || !isDeletable}\n                type=\"ghost\"\n                htmlType=\"button\"\n                icon=\"cross\"\n                onClick={onDelete}\n                data-testid=\"table-row-delete\"\n                className={cn(\n                  styles['table__close-button'],\n                  isDeleted && styles['table__close-button_deleted']\n                )}\n              />\n            )}\n          </div>\n        </td>\n      )}\n    </tr>\n  );\n};\n\nconst LoadingData = () => {\n  return (\n    <>\n      <Icon\n        name=\"loading-animated\"\n        size=\"sm\"\n      />\n      <Text size=\"sm\">Loading data</Text>\n    </>\n  );\n};\ninterface CustomTableRowProps {\n  loading?: boolean;\n  noDataMessage?: ReactNode;\n  colSpan: number;\n  size: TableSize;\n}\nconst CustomTableRow = ({\n  loading,\n  noDataMessage,\n  colSpan,\n  size,\n}: CustomTableRowProps) => {\n  return (\n    <tr className={cn(rowVariants({}))}>\n      <td\n        colSpan={colSpan}\n        className={cn(cellVariants({ size }), styles['table__spanned-data'])}\n      >\n        <div className={cn(styles['table__custom-message'])}>\n          {loading ? <LoadingData /> : (noDataMessage ?? 'No Data available')}\n        </div>\n      </td>\n    </tr>\n  );\n};\ninterface ResizeState {\n  isResizing: boolean;\n  columnLabel: string | null;\n  nextColumnLabel: string | null;\n  startX: number;\n  startWidth: number;\n  nextStartWidth: number;\n}\n\nconst Table = forwardRef<HTMLTableElement, TableProps>(\n  (\n    {\n      headers,\n      rows,\n      isSelectable,\n      selectedIds = [],\n      onSelect,\n      onDelete,\n      onEdit,\n      onSort,\n      loading,\n      noDataMessage,\n      size = 'sm',\n      showHeader = true,\n      rowHeight,\n      resizableColumns,\n      mobileLayout = 'list',\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const isDeletable = typeof onDelete === 'function';\n    const isEditable = typeof onEdit === 'function';\n\n    const [columnWidths, setColumnWidths] = useState<Map<string, number> | null>(null);\n    const theadRef = useRef<HTMLTableSectionElement>(null);\n\n    useLayoutEffect(() => {\n      if (!resizableColumns || columnWidths !== null || !theadRef.current) {\n        return;\n      }\n\n      const headerCells = theadRef.current.querySelectorAll('th');\n      const widths = new Map<string, number>();\n\n      // Skip select column (index 0 if isSelectable) and actions column (last if present)\n      const startIndex = isSelectable ? 1 : 0;\n      const endIndex = headerCells.length - (isDeletable || isEditable ? 1 : 0);\n\n      let headerIndex = 0;\n      for (let i = startIndex; i < endIndex; i++) {\n        const header = headers[headerIndex];\n        if (header) {\n          const key =\n            typeof header.label === 'string' ? header.label : `__index_${headerIndex}`;\n          widths.set(key, headerCells[i].getBoundingClientRect().width);\n        }\n        headerIndex++;\n      }\n\n      if (widths.size === headers.length) {\n        setColumnWidths(widths);\n      }\n    }, [resizableColumns, columnWidths, isSelectable, isDeletable, isEditable]);\n\n    const headerKey = useMemo(\n      () =>\n        headers\n          .map((h, i) => (typeof h.label === 'string' ? h.label : `__index_${i}`))\n          .join(','),\n      [headers]\n    );\n    useEffect(() => {\n      setColumnWidths(null);\n    }, [headerKey]);\n\n    const resizeStateRef = useRef<ResizeState>({\n      isResizing: false,\n      columnLabel: null,\n      nextColumnLabel: null,\n      startX: 0,\n      startWidth: 0,\n      nextStartWidth: 0,\n    });\n\n    const onMouseMove = useCallback((e: globalThis.MouseEvent) => {\n      if (!resizeStateRef.current.isResizing) {\n        return;\n      }\n\n      const { columnLabel, nextColumnLabel, startX, startWidth, nextStartWidth } =\n        resizeStateRef.current;\n\n      if (!columnLabel || !nextColumnLabel) {\n        return;\n      }\n\n      const diff = e.clientX - startX;\n      const newWidth = startWidth + diff;\n      const newNextWidth = nextStartWidth - diff;\n\n      if (Number.isNaN(newWidth) || Number.isNaN(newNextWidth)) {\n        console.warn('Unexpected computed values for resize width', {\n          newWidth,\n          newNextWidth,\n        });\n        return;\n      }\n\n      if (newWidth >= MIN_COLUMN_WIDTH && newNextWidth >= MIN_COLUMN_WIDTH) {\n        setColumnWidths(prev => {\n          if (!prev) {\n            return prev;\n          }\n          const updated = new Map(prev);\n          updated.set(columnLabel, newWidth);\n          updated.set(nextColumnLabel, newNextWidth);\n          return updated;\n        });\n      }\n    }, []);\n\n    const onMouseUp = useCallback(() => {\n      resizeStateRef.current.isResizing = false;\n    }, []);\n\n    useEffect(() => {\n      if (!resizableColumns) {\n        return;\n      }\n\n      document.addEventListener('mousemove', onMouseMove);\n      document.addEventListener('mouseup', onMouseUp);\n\n      return () => {\n        document.removeEventListener('mousemove', onMouseMove);\n        document.removeEventListener('mouseup', onMouseUp);\n      };\n    }, [resizableColumns, onMouseMove, onMouseUp]);\n\n    const handleResizeStart = useCallback(\n      (columnIndex: number) => (e: MouseEvent) => {\n        e.preventDefault();\n\n        if (!columnWidths) {\n          return;\n        }\n\n        const currentHeader = headers[columnIndex];\n        const nextHeader = headers[columnIndex + 1];\n\n        if (!currentHeader || !nextHeader) {\n          return;\n        }\n\n        const currentLabel =\n          typeof currentHeader.label === 'string'\n            ? currentHeader.label\n            : `__index_${columnIndex}`;\n        const nextLabel =\n          typeof nextHeader.label === 'string'\n            ? nextHeader.label\n            : `__index_${columnIndex + 1}`;\n\n        const startWidth = columnWidths.get(currentLabel);\n        const nextStartWidth = columnWidths.get(nextLabel);\n\n        if (startWidth === undefined || nextStartWidth === undefined) {\n          return;\n        }\n\n        resizeStateRef.current = {\n          isResizing: true,\n          columnLabel: currentLabel,\n          nextColumnLabel: nextLabel,\n          startX: e.clientX,\n          startWidth,\n          nextStartWidth,\n        };\n      },\n      [headers, columnWidths]\n    );\n\n    const onRowSelect =\n      (id: number | string) =>\n      (checked: boolean): void => {\n        if (typeof onSelect == 'function') {\n          const selectedItems = rows.flatMap((row, index) => {\n            if (\n              (id === row.id && checked) ||\n              (selectedIds.includes(row.id) && id !== row.id)\n            ) {\n              return {\n                item: row,\n                index,\n              };\n            }\n\n            return [];\n          });\n          onSelect(selectedItems);\n        }\n      };\n    const hasRows = rows.length > 0;\n    const actionsList: string[] = [];\n    if (isDeletable) {\n      actionsList.push('deleteAction');\n    }\n    if (isEditable) {\n      actionsList.push('editAction');\n    }\n\n    const onKeyboardResize = useCallback(\n      (columnIndex: number) =>\n        (_e: React.KeyboardEvent, direction: OnKeyboardResizerDirection) => {\n          if (!columnWidths) {\n            return;\n          }\n\n          const currentHeader = headers[columnIndex];\n          const nextHeader = headers[columnIndex + 1];\n\n          if (!currentHeader || !nextHeader) {\n            return;\n          }\n\n          const currentLabel =\n            typeof currentHeader.label === 'string'\n              ? currentHeader.label\n              : `__index_${columnIndex}`;\n          const nextLabel =\n            typeof nextHeader.label === 'string'\n              ? nextHeader.label\n              : `__index_${columnIndex + 1}`;\n\n          const increment = 2;\n          const multiplier = direction === 'right' ? 1 : -1;\n          const diff = increment * multiplier;\n\n          const currentWidth = columnWidths.get(currentLabel);\n          const nextWidth = columnWidths.get(nextLabel);\n\n          if (currentWidth === undefined || nextWidth === undefined) {\n            return;\n          }\n\n          const newWidth = currentWidth + diff;\n          const newNextWidth = nextWidth - diff;\n          const shouldUpdateColumnWidth =\n            newWidth >= MIN_COLUMN_WIDTH && newNextWidth >= MIN_COLUMN_WIDTH;\n\n          if (!shouldUpdateColumnWidth) {\n            return;\n          }\n\n          setColumnWidths(prev => {\n            if (!prev) {\n              return prev;\n            }\n            const updated = new Map(prev);\n            updated.set(currentLabel, newWidth);\n            updated.set(nextLabel, newNextWidth);\n            return updated;\n          });\n        },\n      [columnWidths, headers]\n    );\n\n    return (\n      <div\n        data-mobile-layout={mobileLayout}\n        className={cn(styles.table)}\n      >\n        {hasRows && showHeader && (\n          <div className={cn(styles['table__mobile-actions'])}>\n            {isSelectable && (\n              <SelectAllCheckbox\n                label=\"Select All\"\n                onCheckedChange={onSelect}\n                rows={rows}\n                selectedIds={selectedIds}\n              />\n            )}\n          </div>\n        )}\n        <div className={cn(styles.table__wrapper)}>\n          <table\n            ref={ref}\n            {...props}\n            className={cn(styles['table__table'], className)}\n          >\n            <Colgroup\n              headers={headers}\n              isSelectable={isSelectable}\n              actionsList={actionsList}\n              resizableColumns={resizableColumns}\n              columnWidths={resizableColumns ? columnWidths : undefined}\n            />\n            {showHeader && (\n              <Thead\n                headers={headers}\n                isSelectable={isSelectable}\n                onSelectAll={onSelect}\n                actionsList={actionsList}\n                onSort={onSort}\n                size={size}\n                rows={rows}\n                selectedIds={selectedIds}\n                resizableColumns={resizableColumns}\n                onResizeStart={resizableColumns ? handleResizeStart : undefined}\n                theadRef={theadRef}\n                onKeyboardResize={resizableColumns ? onKeyboardResize : undefined}\n                columnWidths={resizableColumns ? columnWidths : undefined}\n              />\n            )}\n            <tbody className={cn(styles.table__tbody)}>\n              {(loading || !hasRows) && (\n                <CustomTableRow\n                  colSpan={\n                    headers.length +\n                    (isEditable || isDeletable ? 1 : 0) +\n                    (isSelectable ? 1 : 0)\n                  }\n                  loading={loading}\n                  noDataMessage={noDataMessage}\n                  size={size}\n                />\n              )}\n              {rows.map(({ id, ...rowProps }, rowIndex) => (\n                <TableBodyRow\n                  key={`table-body-row-${rowIndex}`}\n                  headers={headers}\n                  isSelectable={isSelectable}\n                  isSelected={selectedIds?.includes(id)}\n                  onSelect={onRowSelect(id)}\n                  actionsList={actionsList}\n                  onDelete={\n                    isDeletable\n                      ? () =>\n                          onDelete(\n                            { id, ...rowProps, isDeleted: !rowProps.isDeleted },\n                            rowIndex\n                          )\n                      : undefined\n                  }\n                  onEdit={\n                    isEditable ? () => onEdit({ id, ...rowProps }, rowIndex) : undefined\n                  }\n                  size={size}\n                  rowHeight={rowHeight}\n                  {...rowProps}\n                />\n              ))}\n            </tbody>\n          </table>\n        </div>\n      </div>\n    );\n  }\n);\n\ninterface SelectAllCheckboxProps extends Omit<CheckboxProps, 'onCheckedChange'> {\n  onCheckedChange?: (selectedValues: SelectReturnValue[]) => void;\n  selectedIds: (number | string)[];\n  rows: TableRowType[];\n}\n\nconst SelectAllCheckbox: FC<SelectAllCheckboxProps> = ({\n  rows,\n  selectedIds,\n  onCheckedChange,\n  ...checkboxProps\n}) => {\n  const selectedIdSet = useMemo(() => new Set(selectedIds), [selectedIds]);\n\n  const { checked, disabled } = useMemo(() => {\n    let areAllChecked = true;\n    let maybeIndeterminate: CheckedState = false;\n    let disabled = true;\n\n    for (const row of rows) {\n      if (row.isDisabled || row.isDeleted) {\n        continue;\n      } else {\n        disabled = false;\n      }\n\n      if (selectedIdSet.has(row.id)) {\n        maybeIndeterminate = 'indeterminate';\n      } else {\n        areAllChecked = false;\n      }\n    }\n\n    return {\n      checked: disabled ? false : areAllChecked || maybeIndeterminate,\n      disabled,\n    };\n  }, [rows, selectedIdSet]);\n\n  const handleCheckedChange = (checked: boolean) => {\n    if (typeof onCheckedChange !== 'function') {\n      return;\n    }\n\n    // disabled items should not change their selected state because of user interaction\n\n    const newSelectedRows = rows.reduce((acc: SelectReturnValue[], row, index) => {\n      const isDisabled = row.isDisabled || row.isDeleted;\n\n      const shouldBeSelected = checked\n        ? !isDisabled || selectedIdSet.has(row.id)\n        : isDisabled && selectedIdSet.has(row.id);\n\n      if (shouldBeSelected) {\n        acc.push({\n          item: row,\n          index,\n        });\n      }\n\n      return acc;\n    }, []);\n\n    onCheckedChange(newSelectedRows);\n  };\n\n  return (\n    <Checkbox\n      checked={checked}\n      disabled={disabled}\n      onCheckedChange={handleCheckedChange}\n      {...checkboxProps}\n    />\n  );\n};\n\nconst Cell = ({\n  label,\n  overflowMode = 'truncated',\n}: {\n  label: ReactNode;\n  overflowMode?: OverflowMode;\n}) => {\n  const isText = typeof label === 'string';\n\n  if (!isText) {\n    return <>{label}</>;\n  }\n\n  if (overflowMode === 'truncate-middle') {\n    return <MiddleTruncator text={label} />;\n  }\n\n  if (overflowMode === 'wrap') {\n    return <span className={cn(styles['table__text-wrapped'])}>{label}</span>;\n  }\n\n  return <EllipsisContent component=\"div\">{label}</EllipsisContent>;\n};\n\nexport { Table };\n"],"names":["cva","styles","useRef","cn","jsxs","Fragment","jsx","Icon","useMemo","Checkbox","IconButton","Text","forwardRef","useState","useLayoutEffect","useEffect","useCallback","disabled","checked","MiddleTruncator","EllipsisContent"],"mappings":"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"}