import { TableColumnResizing } from '@devexpress/dx-react-grid-material-ui'
import Utils from '../Utils/Utils.coffee'

export default withResizing = (WrappedComponent) =>
  observer class WithResizing extends Component
    @propTypes:
      columns: PropTypes.array.isRequired
      onChangeColumnWidths: PropTypes.func

    @defaultProps:
      onChangeColumnWidths: =>

    onChangeColumnWidths: (columnWidths) =>
      @props.onChangeColumnWidths columnWidths

    render: =>
      columnWidths = @props.columns.map (column) =>
        columnName: column.name
        width: column.width or 150

      if Utils.isMobile()
        <WrappedComponent {...@props} />

      else
        <WrappedComponent
          {...@props}
          tableColumnResizingComponent={
            <TableColumnResizing
              defaultColumnWidths={columnWidths}
              onColumnWidthsChange={@onChangeColumnWidths}
            />
          }
        />
