"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.TableBase = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _designSystem = require("@wix/design-system");
var _mobxReactLite = require("mobx-react-lite");
var _CollectionTable = require("../CollectionTable");
var _useTableSyncProps = require("./useTableSyncProps");
var _providers = require("../../providers");
var _getToolbarCollectionFeaturesInitializers = require("../../state/getToolbarCollectionFeaturesInitializers");
var _useTableBaseRow = require("./useTableBaseRow");
var _jsxFileName = "/home/builduser/work/843658b9f44192f0/packages/cairo/dist/cjs/components/Table/TableBase.tsx";
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 _TableBase(props) {
  const {
    state,
    sections,
    useNewInfiniteScrollLoader,
    multiLevelSorting
  } = props;
  const internalScroll = state.toolbar.container.isPanelLayout ? true : props.internalScroll;
  const {
    table
  } = state;
  const {
    collection
  } = table;
  const {
    fetchedLastPage,
    query: {
      limit
    }
  } = collection;
  const {
    scrollElement
  } = (0, _useTableSyncProps.useTableSyncProps)(props);
  const TableBaseRow = (0, _useTableBaseRow.useTableBaseRow)(state);
  (0, _react.useEffect)(() => {
    return state.init({
      featuresInitializers: [...(0, _getToolbarCollectionFeaturesInitializers.getToolbarCollectionFeaturesInitializers)(props)],
      hasMultiLevelSorting: multiLevelSorting !== undefined
    });
  }, []);
  const infiniteScrollProps = useNewInfiniteScrollLoader || internalScroll ? {} : {
    infiniteScroll: true,
    loadMore: collection.fetchNextPageIfNeeded,
    hasMore: !fetchedLastPage,
    itemsPerPage: limit,
    loader: /*#__PURE__*/_react.default.createElement(_designSystem.Box, {
      backgroundColor: "D80",
      align: "center",
      padding: "large",
      __self: this,
      __source: {
        fileName: _jsxFileName,
        lineNumber: 58,
        columnNumber: 13
      }
    }, /*#__PURE__*/_react.default.createElement(_designSystem.Loader, {
      dataHook: "infinite-scroll-loader",
      __self: this,
      __source: {
        fileName: _jsxFileName,
        lineNumber: 59,
        columnNumber: 15
      }
    }))
  };
  const commonTableProps = {
    ...props,
    ...infiniteScrollProps,
    scrollElement,
    useNewInfiniteScrollLoader,
    initialLoad: false,
    state
  };
  return /*#__PURE__*/_react.default.createElement(_providers.TableProvider, {
    value: state,
    __self: this,
    __source: {
      fileName: _jsxFileName,
      lineNumber: 74,
      columnNumber: 5
    }
  }, sections ? /*#__PURE__*/_react.default.createElement(sections.TableSections, (0, _extends2.default)({}, commonTableProps, {
    table: state,
    renderSection: sections.renderSection,
    __self: this,
    __source: {
      fileName: _jsxFileName,
      lineNumber: 76,
      columnNumber: 9
    }
  })) : /*#__PURE__*/_react.default.createElement(_CollectionTable.CollectionTable, (0, _extends2.default)({}, commonTableProps, {
    TrElementType: TableBaseRow,
    __self: this,
    __source: {
      fileName: _jsxFileName,
      lineNumber: 82,
      columnNumber: 9
    }
  })));
}
const TableBase = exports.TableBase = (0, _mobxReactLite.observer)(_TableBase);
//# sourceMappingURL=TableBase.js.map