"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = withExpandableContent;
var _react = _interopRequireWildcard(require("react"));
var _tableRowWithExpandableContent = _interopRequireDefault(require("./table-row-with-expandable-content"));
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function withExpandableContent(BaseTable) {
  function WithExpandableContent({
    onTableRowSelected = () => {},
    selectedTableRowId,
    tabs,
    forceTabsControl = false,
    rowTestId = 'expandable-row',
    disableScrollOnOpen = false,
    isActiveRowCollapsible = true,
    activeTabId,
    onTabSelect,
    ...props
  }) {
    const [selectedId, setSelectedId] = (0, _react.useState)(selectedTableRowId);
    (0, _react.useEffect)(() => {
      setSelectedId(selectedTableRowId);
    }, [selectedTableRowId]);
    const handleRowClick = (id, activeTabIndex) => {
      const isOpened = id !== selectedId;

      // if we should not close already opened section
      if (!isOpened && !isActiveRowCollapsible) {
        return;
      }
      setSelectedId(isOpened ? id : null);
      onTableRowSelected(isOpened ? id : null, activeTabIndex);
    };
    return /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseTable, {
      ...props,
      TrComponent: _tableRowWithExpandableContent.default,
      trProps: {
        handleRowClick,
        selectedId,
        tabs,
        forceTabsControl,
        disableScrollOnOpen,
        testId: rowTestId,
        activeTabId,
        onTabSelect
      }
    });
  }
  return WithExpandableContent;
}