function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
import { useMemo } from "react";
import useRowSelection from "./useRowSelection";
import useRowActions from "./useRowActions";
export default (function (dataColumns, _ref) {
  var rowActions = _ref.rowActions,
    enableSelection = _ref.enableSelection,
    singleRowSelection = _ref.singleRowSelection,
    enableResizing = _ref.enableResizing,
    enableSorting = _ref.enableSorting,
    testPrefix = _ref.testPrefix,
    tableMeta = _ref.tableMeta;
  var rowActionsColumn = useRowActions(rowActions, {
    testPrefix: testPrefix,
    tableMeta: tableMeta
  });
  var selectionColumn = useRowSelection(enableSelection, {
    testPrefix: testPrefix,
    tableMeta: tableMeta,
    singleRowSelection: singleRowSelection
  });
  return useMemo(function () {
    if (!dataColumns || dataColumns.length < 1) return [];
    var isGrouped = false;
    dataColumns = dataColumns.map(function (col, index) {
      if (Array.isArray(col.columns)) {
        isGrouped = true;
        return _objectSpread(_objectSpread({
          id: index
        }, col), {}, {
          columns: col.columns.map(function (subCol, index) {
            if (!subCol.id) throw new Error("Please provide id at " + index);
            return _objectSpread(_objectSpread(_objectSpread({
              enableColumnFilter: false,
              enableGlobalFilter: true,
              enableSorting: enableSorting,
              enableMultiSort: enableSorting
            }, enableResizing ? {
              size: 120,
              maxSize: 5000,
              minSize: 60
            } : {}), {}, {
              enableHiding: true,
              enableResizing: enableResizing,
              footer: function footer(props) {
                return props.column.id;
              },
              tableMeta: tableMeta
            }, subCol), {}, {
              accessorKey: subCol.accessorKey || subCol.id
            });
          })
        });
      }
      if (!col.id) throw new Error("Please provide id at " + index);
      return _objectSpread(_objectSpread(_objectSpread({
        enableColumnFilter: false,
        enableGlobalFilter: true,
        enableSorting: enableSorting,
        enableMultiSort: enableSorting
      }, enableResizing ? {
        size: 120,
        maxSize: 5000,
        minSize: 60
      } : {}), {}, {
        enableHiding: true,
        enableResizing: enableResizing,
        footer: function footer(props) {
          return props.column.id;
        },
        tableMeta: tableMeta
      }, col), {}, {
        accessorKey: col.accessorKey || col.id
      });
    });
    if (selectionColumn) dataColumns.unshift(isGrouped ? {
      id: "selectionColumn",
      columns: selectionColumn
    } : selectionColumn);
    if (rowActionsColumn) dataColumns.push(isGrouped ? {
      id: "rowActionsColumn",
      columns: rowActionsColumn
    } : rowActionsColumn);
    return dataColumns;
  }, [dataColumns, rowActionsColumn, selectionColumn]);
});